Skip to main content

aidpf-error-triage

Read and explain AIDPF error codes, tracebacks, diagnostics, run IDs, datasets, layers, and variation failures, then route to the owning recovery Skill or command. Use whenever a bundle workflow fails or the user pastes failure evidence.

الانتقال إلى التثبيت

معلومات المصدر

المستودع
oracle-samples/oracle-aidp-samples
آخر نشاط في المصدر
٧ أغسطس ٢٠٢٦ في ١١:٣٢
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٤٦
التفرعات
٣٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
2 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
aidpf-error-triage
description
Read and explain AIDPF error codes, tracebacks, diagnostics, run IDs, datasets, layers, and variation failures, then route to the owning recovery Skill or command. Use whenever a bundle workflow fails or the user pastes failure evidence.
# aidpf-error-triage - route failures to the right recovery path ## Bundled CLI Resolve `<plugin-root>` as the directory two levels above this `SKILL.md`. On macOS/Linux, invoke `"<plugin-root>/bin/aidp-fusion-autopilot"`; on Windows, invoke `"<plugin-root>\\bin\\aidp-fusion-autopilot.cmd"`. Command examples below use `aidp-fusion-autopilot` as shorthand only—do not assume the plugin's `bin/` directory is on `PATH`. This skill is the read-only front door for failures. It turns pasted errors, diagnostic artifacts, and failed-run summaries into a safe next step. It does not fix anything itself. It identifies the failure class, names the evidence, and routes to the skill or CLI command that owns the recovery. ## When to use - User pastes output containing `AIDPF-*`. - User gives `.aidp/diagnostics/<run_id>/...` or a run id. - User says `validate`, `bootstrap`, `seed`, `incremental`, `dashboard`, OAC, dataset setup, or workbook authoring failed. - User asks "what should I do with this error?" - Autopilot hits an error and needs to route without guessing. ## When NOT to use - Clean first-run setup with no failure -> `$aidp-fusion-autopilot`. - Known single action with no error, such as "run seed" -> use that skill. - Authoring new marts -> `$mart-author`. - Creating workbooks from a verified dataset -> `$workbook-authoring`. - Full error-code reference browsing -> read `docs/aidpf-error-codes.md`. ## Inputs to collect Collect what is available, but do not block on everything: - exact pasted error output, - command that failed, - active phase: validate, bootstrap, seed, incremental, dashboard, OAC dataset, workbook, - run id, - dataset/node id, - layer, - diagnostic artifact path or `.aidp/diagnostics/<run_id>/` directory, - whether this is dev/sandbox or production. Never ask the user to paste passwords, OAuth tokens, private keys, full OCIDs, or full OAC connection payloads. ## Workflow ### 1. Extract the failure signal Search the pasted text and any artifact paths for codes: ```text AIDPF-\d{4} ``` If the user gives a diagnostics directory, list the files: ```bash find .aidp/diagnostics/<run_id> -maxdepth 1 -type f -print ``` If the user gives a diagnostic JSON file, read it and extract: - `errorCode`, - `runId`, - `tenant`, - `datasetId` or `node`, - `layer`, - variation point name, - missing columns, - observed/live schema fields, - companion logs such as `cluster_stdout.log`. If multiple codes appear, triage in this order: 1. Fatal active code tied to the command's exit. 2. Diagnostic artifact code. 3. Runtime drift/gate code. 4. Pack validation aggregate such as `AIDPF-1036`, then its nested per-error code. 5. Historical or test-only code only if no active code exists. If there is no `AIDPF-*` code, classify by symptom: - OAC MCP server missing, disconnected, unauthenticated, or no tools -> run project-scoped `dashboard mcp-setup` plus resume checkpoint. - `CredentialResolutionError` or missing Fusion password -> fix AIDP credential store / `aidp.config.yaml` secret names. - `ResumeRunNotFoundError`, `ResumeRunNotResumableError`, or `ResumeBundleMismatchError` -> resume-specific guidance. - Unknown traceback -> ask for the command and nearest error lines; do not guess a destructive fix. ### 2. Route by code family Use this table for the first response. Keep it short, then include evidence and the next command/skill. | Code family | Meaning | Route | |---|---|---| | `AIDPF-1020` | Bootstrap operator identity missing. | Re-run `$aidp-fusion-bootstrap` with `--operator` or set `AIDP_OPERATOR` / `USER`. | | `AIDPF-1030`, `1031`, `1033` | Missing content-pack profile or contentPack block. | Fix `bundle.yaml`; run `$aidp-fusion-bootstrap`. | | `AIDPF-1034`, `1042`, `1043`, `1045`, `2081` | Invalid dataset/layer/scope or bundle node id. | Fix scope, use `content-pack info`, or `use-pack`; do not seed guessed nodes. | | `AIDPF-1036`, `2000` to `2004`, `2030`, `2040`, `2041` | Pack or overlay validation failure. | Fix YAML/SQL/schema issue; if from a new mart overlay, return to `$mart-author`. | | `AIDPF-2010`, `2011` | Bootstrap variation point unresolved. | `$medallion-author` with the diagnostic artifact, then bootstrap refresh. | | `AIDPF-2012` | Bronze fingerprint drift from pinned profile. | `$fusion-drift-doctor` or `$aidp-fusion-bootstrap --refresh` after confirming drift is intended. | | `AIDPF-2013` | Pre-extraction structural COA gate — `profile.chartOfAccounts` is MISSING/EMPTY/structurally INVALID while an in-scope node consumes a COA source (hard-block; NOT `allowUnprovableCOA`-eligible). | Configure a complete `profile.chartOfAccounts` (flat `balancing`/`costCenter`/`naturalAccountSegment`, or a nested `default`, optional numeric `byChart`) then re-run `$aidp-fusion-bootstrap`. Multi-chart tenants need `byChart` — route to `$medallion-author` if candidates are missing. | | `AIDPF-2016`, `2017`, `2018` | COA plausibility — two roles share one physical column (2016); the `naturalAccountSegment` binding contradicts observed account types (2017); multiple active charts with only a singleton mapping and no `byChart` / acceptance (2018). | **First route: the metadata remediation loop** — `bootstrap --refresh --resolve-coa-from-metadata` (derives `byChart` from Fusion KFF segment qualifiers, Tier-B-verifies each arm against landed `gl_coa`, persists ONLY verified arms), read the ledger, then `run --resume <run_id>` (no `--mode`) when the phase exits 0. Read-only against Fusion, additive to the profile — routing it is never destructive. Falls back to `$medallion-author` (operator-authored arms) when the phase stops with 2021/2023, or for 2016 (a duplicated-role mapping is a config error metadata cannot fix). | | `AIDPF-2021` | COA metadata resolution could not run — segment-qualifier source unreachable, credentials missing, principal lacks `FUN_GET_ENTERPRISE_STRUCTURES_REST_SERVICE_PRIV` (401/403), or the budget expired. Only raised when resolution was explicitly requested. | Grant the privilege / fix `FUSION_BICC_USER`+`FUSION_BICC_PASSWORD`, or pin the resource via `coa metadata-probe` + `fusion.coaMetadata`. Fall back to operator-authored `byChart` via `$medallion-author`. | | `AIDPF-2022` | **Warn-only.** A metadata-derived arm was REJECTED and NOT persisted (failed Tier-B 2017, duplicated a role column 2016, or named an invalid/out-of-domain segment 2019/2042/5001). | Read `AIDPF-2022__coa-metadata.json`; author that chart's arm manually via `$medallion-author`. A rejected arm is proof the derivation is wrong for that chart — never a transient to retry. An AIDPF-2022 detail for an INACTIVE chart coexists with a phase exit 0 and does not block a resume. | | `AIDPF-2023` | After metadata resolution, one or more ACTIVE in-scope charts still have no `byChart` arm (and no accepted shared layout). Verified arms WERE persisted (monotonic); the phase exits non-zero because the remediation objective was not met. | Resolve the listed charts (privilege for the metadata source, or `$medallion-author` arms), or `--accept-singleton-coa` only when a shared layout is genuinely true. The post-extraction AIDPF-2018 gate stays the enforcer for the next seed. | | `AIDPF-2074` | COA correctness PROBE could not EXECUTE (e.g. constrained Spark session) — correctness UNPROVEN; blocks by default. | Fix the session so probes run, or set `contentPack.allowUnprovableCOA: true` to proceed with a logged WARN (correctness then rests on the per-node backstop). A real COA VIOLATION still hard-blocks regardless. | | `AIDPF-2042`, `2043`, `2044`, `2046`, `2072`, `4070`, `4071` | Source, PVO, or runtime schema drift/gate. | `$fusion-drift-doctor`; it may route to bootstrap refresh, `$medallion-author`, or investigate. A `4071`/`2042` caused by an *added* required column → `$medallion-author` (fix the add / extend the source); a normally-required column *legitimately absent* on this tenant → `$medallion-author` to relax it via `relaxRequiredColumns`. | | `AIDPF-2062`, `2063` | Bronze `requiredColumns` overlay guard — same-id file dropped a required column (2062), or `relaxRequiredColumns` named a non-base column (2063). | `$medallion-author`; remove via a `relaxRequiredColumns` block override (with a `reason`), and only relax a column the base actually requires. | | `AIDPF-2084` | Declared-inputs gate — a silver/gold SQL reads an upstream column not declared in `requiredColumns` (or a `SELECT *` / `<alias>.*` from an upstream). | `$mart-author` (or `$medallion-author` for an overlay node): declare the column in `requiredColumns[<source>]` (and add it to the upstream `outputSchema` if absent), or replace the wildcard with an explicit alias-qualified projection. | | `AIDPF-2085` | Declared-inputs **warn-only** — a bare unqualified column matches an upstream `outputSchema`. | Not blocking. Qualify the column with its table alias so AIDPF-2084 can verify it. | | `AIDPF-2047`, `2048`, `2049` | Cluster bootstrap dispatch/probe failure. | `$aidp-fusion-bootstrap`; inspect diagnostic JSON and `cluster_stdout.log` if present. | | `AIDPF-2071` | Bronze readiness failed for silver/gold. | Seed/repair required bronze through `$aidp-fusion-seed`; do not run mart-only refresh until bronze exists. | | `AIDPF-2092` | Bronze cursor and target/state mismatch. | Repair state/target alignment; usually inspect status before incremental. | | `AIDPF-2093` | Connector value/type mismatch — the `aidataplatform` connector produced values that do not match its OWN declared column type for a PVO (e.g. Long under decimal(38,0)); every encode-forcing op fails while pruned counts pass. | **First route:** `bronze diagnose-encode --dataset <id>` (read-only bisection; names the column + probes its runtime type), then add the printed `schemaPatches` entry on the bundle dataset and re-run. **Never route to excluding the dataset first** — the patch keeps full-width ingestion. If diagnose reports "no uniform runtime type", the column cannot be patched: file the connector defect. | | `AIDPF-2094` | schemaPatches cast-integrity violation — casting a patched column back to its declared type changed data (null introduced / round-trip mismatch); the node failed BEFORE the write, nothing landed. | The configured patch type is wrong for this column's values: re-run `bronze diagnose-encode --dataset <id>` and set the patch to the probed runtime type. A "no uniform type" result means the vendor connector fix is the only cure — do not force a patch. | | `AIDPF-4022` | Durable pre-execution run manifest failed to commit (fresh run), or a resume found the manifest row malformed / unknown-version / missing a required field. | Nothing was extracted on a commit failure — re-run `--mode seed` via `$aidp-fusion-seed`. A malformed manifest is non-resumable; start a fresh seed (do not `--resume`). | | `AIDPF-4023` | Run reconciliation — the AIDP job/notebook reported SUCCESS but the run **aborted** or its completion is **unproven** (failed/aborted step, reserved gate step, or an expected node with no terminal state row). The job status is not the run's verdict. | Read the printed `RUN VERDICT` block and its named `AIDPF-*` codes; remediate those, then `run --resume <run_id>` (no `--mode` — the resume adopts the run's recorded mode). Never report a seed complete on job status alone. | | `AIDPF-4040` | Plan-hash drift on resume/incremental. | `$fusion-drift-doctor`; if intentional, scoped re-seed changed node or documented repin in dev only. | | `AIDPF-4060`, `4061` | State commit or watermark regression. | Stop; inspect state-table write/order issue before retrying. | | `AIDPF-5001`, `5002`, `5010`, `5011`, `5013`, `5014` | SQL renderer or builtin dispatch issue. | Fix SQL/template/profile value; route to `$mart-author` if a new overlay caused it. | | `AIDPF-5003` | Variation point unresolved during rendering. | `$aidp-fusion-bootstrap`; if candidate missing, `$medallion-author`. | | `AIDPF-7001` to `7005`, `8002` | Dashboard validation/security issue. | Fix dashboard descriptor or workbook requirements; remove high-PII exposure. | | `AIDPF-8010`, `8011` | Quality test failed or unsupported. | Inspect failed quality rule; fix data/node logic or accept deferred rule intentionally. | | `AIDPF-9999` | Test-only invalid code. | Treat as malformed diagnostics outside tests. | **No AIDPF code — classify by the DEEPEST cause, never by absence.** A missing `AIDPF-*` code alone proves nothing: it could be transient infrastructure OR an uncoded plugin/config bug (`AttributeError`, `ValueError`, an import failure in a cell). First extract the deepest cause — the executed notebook's cell traceback / the `Caused by:` chain — then branch: - **POSITIVE transient signature present** (any of: `HikariPool … Connection is not available`, `MetaException`, connection/read **timeout** wording, `Connection refused/reset`, executor-lost / node-decommission messages, laptop-side `poll_warn err=ReadTimeout|ConnectionError`) → transient infrastructure: 1. **Change NOTHING** — never edit the bundle/profile/patches over a transient. 2. Mid-run node failure (verdict `ABORTED`, other nodes green) → `run --resume <run_id>` (no `--mode`) — re-runs only the failed nodes. 3. Pre-run/cell failure (`DISPATCH_RUN_FAILED`, exit 2) → retry the SAME command once. 4. Repeats after two attempts → cluster/metastore health problem; escalate to the AIDP console, do not keep retrying. - **No transient signature** (e.g. a Python `AttributeError`/`TypeError`/ `ValueError`, a `ModuleNotFoundError`, an assertion) → **unclassified failure**: do NOT retry and do NOT call it cluster health. Fetch and report the full cell exception (executed notebook / job run output), then triage the actual cause — an uncoded plugin exception is a bug report, not weather. (Live precedent for the transient branch: an `ap_payments` saveAsTable metastore timeout — that node's first failure in five runs — healed by one resume; an early `o272.sql` HikariPool timeout healed by re-running the same resume. Both carried the HikariPool/MetaException signature in the deepest cause.) For codes not listed here, consult `docs/aidpf-error-codes.md` and state that the route is based on the reference table. ### 3. Read diagnostics when available When the route names a downstream skill, pass concrete artifacts: ```text run id: diagnostic file: dataset/node: layer: variation point: missing columns: next skill: ``` Examples: - `AIDPF-2010__invoice_currency_code.json` -> `$medallion-author`. - `AIDPF-2072.json` or `AIDPF-4071__<node>.json` -> `$fusion-drift-doctor`. - `AIDPF-2048.json` plus `cluster_stdout.log` -> `$aidp-fusion-bootstrap`. Do not synthesize missing diagnostic context. If an expected artifact is absent, say what file is needed or ask for the command output. ### 4. Produce the triage response Use this format: ```text code: AIDPF-2072 phase: incremental meaning: live Fusion PVO schema drifted from the pinned profile evidence: .aidp/diagnostics/<run_id>/AIDPF-2072.json route: $fusion-drift-doctor next: diagnose live PVO drift; likely bootstrap --refresh or $medallion-author do not: bypass drift gates or run destructive seed ``` For OAC MCP disconnect with no AIDPF code: ```text code: none phase: OAC MCP meaning: MCP connection is unavailable; this is not proof that datasets are absent route: from the customer project directory run: env -u OAC_URL -u OAC_MCP_USER -u OAC_MCP_PASSWORD -u OAC_ADMIN_USER -u OAC_ADMIN_PASSWORD \ aidp-fusion-autopilot dashboard mcp-setup --connector-js <path> then write .aidp/autopilot/resume.md and reconnect Codex next: resume from .aidp/autopilot/resume.md and re-probe OAC ``` ### 5. Guardrails - Stay read-only. Do not edit files, run bootstrap, seed, incremental, or workbook save from this skill. - Never recommend destructive seed as the first recovery unless the owner skill has proven it is the right fix and the user confirms. - Never recommend `--force-fingerprint-skip` outside dev/break-glass. - Never hand-write `profiles/` or `evidence/`. - Never route `AIDPF-2010` / `AIDPF-2011` to `$mart-author`; use `$medallion-author`. - Never treat disconnected OAC MCP as an empty OAC catalog. - **Never treat an AIDP job status of SUCCESS as a successful run.** The verdict is the `RUN VERDICT` block (`run_reconcile` codes / the `__run_outcome__` state row); a SUCCESS job with an `ABORTED`/`UNPROVEN` verdict is a FAILED run (AIDPF-4023). - **Never recommend `--accept-singleton-coa` when AIDPF-2017 evidence is present** — the contradiction already disproves a shared layout; routing it would persist a mapping the data has falsified. - Metadata resolution (`--resolve-coa-from-metadata`) is read-only against Fusion and additive to the profile — proposing it is not a destructive
عرض على GitHub
ملف SKILL.md هذا كبير جدا، لذلك يعرض SkillsMP القسم الاول فقط هنا. عرض على GitHub