{"asOf":"2026-10-03","doesNotChangeDepotPicks":true,"doesNotChangePriceSort":true,"doesNotChangeFreeIndex":true,"note":"Classification and failure modes are mechanisms. Case studies are included only when the source URL was fetched on 2026-10-03. A capability ceiling is not a company incident. Vendor figures are labeled as that vendor's report.","id":"data-etl","name":"Data and ETL agent","definition":"Moves or reshapes records between files, tables, and documents, and reports rows that did not match the schema.","needs":{"jtbdIds":["lakehouse-llm","sql-warehouse-agent-context","spreadsheet-sql-agents","document-parse","knowledge-graph-extract","ml-dataset-versioning","layout-aware-ocr"],"freeKinds":["free_ocr","free_data"],"capabilityTags":["sql"],"plain":["A schema for the destination","A row-level error report"]},"failureModeIds":["schema-drift","partial-tool-success","silent-truncation","stale-retrieval","hallucinated-tool-args","collateral-side-effects"],"exampleTasks":["Load a table and list rows that failed the schema","Parse a document and mark pages the OCR step did not return"],"failures":[{"id":"schema-drift","name":"Schema drift","whatGoesWrong":"A tool, table, or file changed shape, and the agent still sends the old arguments or reads the old columns.","howToDetect":"Validate every tool call and every loaded table against the current schema. Quarantine mismatches instead of coercing them.","classIds":["coding","data-etl","local-offline","support"],"sourceUrls":[]},{"id":"partial-tool-success","name":"Partial tool success","whatGoesWrong":"A tool completes only part of a batch and the agent treats the whole batch as done.","howToDetect":"Require a per-item status and a failure count. Success for the task requires the failed count to be zero or explicitly handed to a retry queue.","classIds":["coding","data-etl","browser","computer-use","voice","orchestrator","scheduled-ops"],"sourceUrls":[]},{"id":"silent-truncation","name":"Silent truncation","whatGoesWrong":"Tool output or a document is cut off without a marker, and the agent answers as if it saw the whole thing.","howToDetect":"Tools must return whether the payload was truncated and how long the original was. Fail the task if the answer depends on the missing span.","classIds":["rag","coding","data-etl","voice","local-offline","research"],"sourceUrls":["https://arxiv.org/abs/2310.08560"]},{"id":"stale-retrieval","name":"Stale retrieval","whatGoesWrong":"The answer is grounded in a passage, index, or policy page that is older than the source the operator now treats as canonical.","howToDetect":"Store the source URL and the time it was fetched. If a newer canonical page exists, or two stored sources disagree, do not answer from the older one.","classIds":["rag","research","support","data-etl","personal-assistant","sales-outreach","local-offline"],"sourceUrls":["https://decisions.civilresolutionbc.ca/crt/crtd/en/525448/1/document.do"]},{"id":"hallucinated-tool-args","name":"Hallucinated tool arguments","whatGoesWrong":"The agent calls a tool with an id, path, or field that does not exist.","howToDetect":"Reject a call that fails the current schema or names an unknown id, and do that before the tool runs a side effect.","classIds":["coding","data-etl","browser","orchestrator"],"sourceUrls":["https://arxiv.org/abs/2308.03688"]},{"id":"collateral-side-effects","name":"Collateral side effects","whatGoesWrong":"The stated task ends in the desired state, and something outside the allowlist also changes: an unrelated file, row, or app.","howToDetect":"Snapshot the workspace or app state, then diff it against an allowlist. A passing check plus an unexpected diff is a failure.","classIds":["coding","computer-use","data-etl","browser"],"sourceUrls":["https://arxiv.org/abs/2407.18901"]}],"caseStudies":[{"id":"dbt-cloud-databricks-adapter-arg-2025","title":"dbt Cloud scheduled jobs failed on an unexpected Databricks adapter argument","year":2025,"studyKind":"production_incident","classIds":["data-etl"],"failureModeIds":["schema-drift"],"lesson":"dbt Cloud's status page for EMEA Cell 1 Azure says scheduled jobs for Azure Databricks customers failed with an AdapterGetRelationParams error that named an unexpected argument, needs_information. The page marks the incident identified on Tue, Sep 16, 2025, 05:03 PM, a temporary fix deployed by 05:19 PM the same day, and resolved on Fri, Sep 19, 2025, 04:28 PM. It calls the impact a partial outage of Scheduled Jobs and does not say which component added the argument or name a timezone. A pipeline run that errors on an unexpected argument has not finished the load. Do not mark the job successful because a later update says resolved.","sourceUrl":"https://status.getdbt.com/emea-cell-1-azure/incidents/01K59QNKF7W44ER40KRH1RQJFZ","asOf":"2026-10-03","notes":"Fetched the vendor status page on 2026-10-03. The page does not describe an agent. It does not state a root cause beyond the error string."}]}