6.5 KiB
6.5 KiB
102 Full Sweep Dry-Run Triage Plan
Date: 2026-04-19 Status: Draft Upstream Spec:
docs/superpowers/specs/2026-04-19-102-full-sweep-dry-run-triage-design.md
Plan Intent
Turn the 62 non-pass records from the full sweep into concrete triage buckets while staying measurement-only.
The plan must not fix generator failures. It only explains them.
Fixed Inputs
- dry-run result:
tests/fixtures/generated_scene/full_sweep_dry_run_2026-04-19.json - dry-run output root:
examples/full_sweep_dry_run_2026-04-19 - execution board:
tests/fixtures/generated_scene/scene_execution_board_2026-04-18.json - scene root:
D:/desk/智能体资料/全量业务场景/一平台场景
Fixed Outputs
- triage result:
tests/fixtures/generated_scene/full_sweep_dry_run_triage_2026-04-19.json - triage report:
docs/superpowers/reports/2026-04-19-102-full-sweep-dry-run-triage-report.md
Non-Negotiable Scope Guardrails
- do not edit analyzer implementation
- do not edit generator implementation
- do not update
scene_execution_board_2026-04-18.json - do not promote any scene
- do not add new family baselines
- do not start implementation correction during triage
- do not expand beyond the fixed
102scene set
Workstreams
WS1Timeout TriageWS2Misclassification TriageWS3No-Report Failure TriageWS4Publish Triage Result
Phase 0: Freeze Triage Boundary
Objective
Make the triage a classification exercise only.
Tasks
- read the upstream dry-run result
- verify the upstream result has
102scenes - verify non-pass buckets are:
31timeout records5misclassified records25no-report records1bootstrap-target record
- freeze the triage order:
- timeout first
- misclassification second
- no-report third
Deliverables
- frozen triage input statement
- frozen non-pass bucket counts
- frozen triage order
Acceptance Criteria
- triage input count is stable
- no code is changed
- no board status is updated
Phase 1: Timeout Triage
Objective
Split the 31 timeout records into second-level reasons.
Tasks
- select records where
dryRunStatus = source-unreadable - verify reason is
generator timeout after 30s - collect source directory metadata:
- source directory exists
- file count
- total source bytes
- largest file path
- largest file bytes
- collect dry-run artifact metadata:
- generated skill directory exists
- references directory exists
- generation report exists
- preserve board context:
- current group
- current status
- current source asset
- real sample record id
- optionally run one diagnostic longer-timeout attempt for classification only
- assign one timeout label:
timeout-known-family-sampletimeout-unvalidated-sourcetimeout-large-sourcetimeout-command-hangtimeout-generator-slow-but-progressingtimeout-undetermined
Deliverables
timeoutTriage[]records in the triage JSON- timeout label summary
- timeout size/source metadata summary
Acceptance Criteria
- all
31timeout records have a second-level label - no timeout is treated as unsupported family by default
- no long-timeout rerun result promotes a scene
Phase 2: Misclassification Triage
Objective
Explain the 5 board-vs-archetype conflicts.
Tasks
- select records where
dryRunStatus = misclassified - preserve:
- board expected group
- expected archetype
- inferred archetype
- current source asset
- real sample layer status
- inspect existing dry-run report path when present
- collect route-conflict evidence:
- whether host bridge evidence dominates
- whether G3 or G1-E evidence is still present
- whether current board expectation came from baseline or expansion
- assign one routing triage label:
route-overprefer-host-bridgeboard-expectation-stalemixed-workflow-host-bridge-validscene-family-split-neededmisclassification-undetermined
Deliverables
misclassificationTriage[]records in the triage JSON- routing conflict summary
- high-priority routing risk list
Acceptance Criteria
- all
5misclassified records have a routing label - no routing code is changed
- the report identifies whether implementation correction is justified later
Phase 3: No-Report Failure Triage
Objective
Split the 25 generic no-report failures into concrete failure stages.
Tasks
- select records where:
dryRunStatus = fail-closed-knownreason = generator failed without generation report
- collect command artifacts:
- exit code
- stdout tail
- stderr tail
- inspect output artifacts:
- skill directory exists
- references directory exists
- any report file exists
- infer one failure stage:
source-scananalyzerir-assemblyreadiness-before-reportcompiler-package-writepanic-or-process-errorunknown-no-report
- keep
bootstrap_targetfailure separate
Deliverables
noReportFailureTriage[]records in the triage JSONbootstrapTargetFailures[]records in the triage JSON- failure-stage summary
Acceptance Criteria
- all
25no-report failures have an inferred failure stage - the
bootstrap_targetcase is not hidden in the no-report bucket - every non-pass record remains explainable without implementation changes
Phase 4: Publish Triage Result
Objective
Publish a bounded triage result and stop.
Tasks
- write
full_sweep_dry_run_triage_2026-04-19.json - write
2026-04-19-102-full-sweep-dry-run-triage-report.md - include:
- timeout triage summary
- misclassification triage summary
- no-report triage summary
- recommended next blocker
- explicitly state that the triage does not promote scenes or start fixes
Deliverables
- triage JSON
- triage report
Acceptance Criteria
- all
62non-pass records are covered - every non-pass record has a second-level explanation
- the report identifies the next blocker without implementing it
- no generator/analyzer file is modified
scene_execution_board_2026-04-18.jsonis not modified
Completion Criteria
This plan is complete when:
31timeout records have timeout labels5misclassified records have routing labels25no-report failures have failure stages1bootstrap-target failure is separately tracked- the triage JSON and report are published
- execution stops without implementation work