You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
FE-884: reconcile SPEC/PLAN for slice B (infra/timeout classification)
Update I138-K + D170-K in place (same verify-epic seam): the fail path routes
on failureKind — infra/timeout re-verifies under a separate infraRetryCount/
maxInfraRetries budget, ETIMEDOUT classified infra under a 180s ceiling, while
test/logic still remediates. Mark Slice B done in the epic-verify-recovery
frontier; only Slice C (partial promotion) remains.
Copy file name to clipboardExpand all lines: memory/PLAN.md
+4-3Lines changed: 4 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -76,7 +76,7 @@ The May 2026 intent-spec, multi-chat, changeset-ledger, prompt/context, and agen
76
76
### Parallel / Low-conflict
77
77
78
78
-`cook-artifact-lifecycle` — **FE-883**, branch `ka/fe-883-orchestrator-improvements` (on FE-864). Wire the already-built `run-artifact.ts` git-merge composer (871ef087) into the live promotion/verify path, replacing the file-copy union; then worktree/branch GC. Slice 1a (composer correct under dep-seeding) landed; wiring + GC remain. Execution queue in `memory/CARDS.md`.
79
-
-`epic-verify-recovery` — **FE-884**, branch `ka/fe-884-epic-verify-recovery` (stacked on FE-883's `ka/fe-883-worktree-gc`). Make a failed epic verification recoverable instead of terminal: a remediation loop on the verify-epic fail-sibling (detect-and-reject + dual re-verify + diff-transfer round-trip), then epic infra/timeout classification (B) + partial promotion (C). Slice A landed (`580ed50f`); B + C remain. Per-branch queue in `memory/CARDS.md` (FE-884 on this branch).
79
+
-`epic-verify-recovery` — **FE-884**, branch `ka/fe-884-epic-verify-recovery` (stacked on FE-883's `ka/fe-883-worktree-gc`). Make a failed epic verification recoverable instead of terminal: a remediation loop on the verify-epic fail-sibling (detect-and-reject + dual re-verify + diff-transfer round-trip), epic infra/timeout classification (B), then partial promotion (C). Slices A + B landed; C remains. Per-branch queue in `memory/CARDS.md` (FE-884 on this branch).
80
80
-`first-run-provider-setup` — provider/key UX and runtime seam can progress independently of semantic-stack work.
81
81
-`workspace-gitignore-assist` — small workspace hygiene surface with low overlap.
82
82
-`productized-web-research` — waits on prompt/context scenario substrate for probe quality, but can remain separate from semantic schema work.
@@ -511,11 +511,12 @@ The May 2026 intent-spec, multi-chat, changeset-ledger, prompt/context, and agen
511
511
-**Name:** Epic verification recovery — recoverable epic verify instead of terminal halt
512
512
-**Linear:** FE-884
513
513
-**Kind:** structural (Slice A establishes I138-K, amends the verify-epic topology); hardening
514
-
-**Status:** in progress (2026-06-18) — branch `ka/fe-884-epic-verify-recovery` on FE-883's GC tip. Slice A landed (`580ed50f`); B + C remain. Queue in `memory/CARDS.md`.
514
+
-**Status:** in progress (2026-06-18) — branch `ka/fe-884-epic-verify-recovery` on FE-883's GC tip. Slices A + B landed; C remains. Queue in `memory/CARDS.md`.
515
515
-**Objective:** Close the orchestrator's verification asymmetry — the slice tier is recoverable (run-tests retry loop) but the epic tier routes `epic-verify:<epic>:fail` straight to halt, so a diagnosed cross-slice defect discards the whole run and promotes nothing. Make a failed epic recoverable: a remediation code agent on the folded `__epic__` tree, bounded by an `epic-retry-budget`, with detect-and-reject (no editing the epic test) + dual re-verify (epic test AND slice suites) integrity guards, and a diff-transfer round-trip so the fix promotes. Substrate-free — distinct from Arc-2 `interactive-recovery`/`adaptive-replan`.
516
516
-**Why now / unlocks:** Builds directly on FE-883's folded-tree composition (`materializeEpicVerifyTree`, `harvestCookRun`); without it, the worked example (run `59100820`: a one-line fixable `useViewParam` defect) halts a 60-minute run and is fixed by hand. Raises cook's unattended completion rate before the Arc-2 autonomy ladder.
517
517
-**Slice A (done, `580ed50f`):** the remediation loop + detect-reject + dual re-verify + `transferFoldedFixToSlice` round-trip. Round-trip design finding: `harvestCookRun` folds only slice worktrees, so the folded-tree fix is committed to the representative slice branch. Proven by topology goldens, run-artifact units, and a scripted-agent e2e (fixable / reject / veto / exhaustion). Real-agent dogfood of run 59100820 is outer-loop, deferred.
518
-
-**Remaining:** B — extend FE-872's `failureKind: 'infra'|'test'` to the verify-epic verdict so an infra/timeout failure (e.g. `spawnSync npx ETIMEDOUT`) retries instead of halting (independent of A). C — partial promotion: `harvestCookRun` lands passing epics + returns the failing epic's diagnosis instead of `nothing promoted` (depends on A's round-trip + FE-883 GC ref-set; not yet carded).
518
+
-**Slice B (done):** split the verify-epic fail path on `failureKind` (FE-872) — infra/timeout re-verifies under a separate `infraRetryCount`/`maxInfraRetries` budget (no agent), halting honestly on exhaustion; test/logic still remediates. Correctness fix: `spawnSync` timeout surfaces as `ETIMEDOUT`, previously misclassified `test` (would have fed the agent a non-bug) → now infra, ceiling raised 60s→180s. Distinct from FE-864's pi session deadline.
519
+
-**Remaining:** C — partial promotion: `harvestCookRun` lands passing epics + returns the failing epic's diagnosis instead of `nothing promoted` (depends on A's round-trip + FE-883 GC ref-set; not yet carded).
519
520
-**Acceptance / verification:** see `memory/CARDS.md`; oracle strategy folded into SPEC §Verification Design.
520
521
-**Depends on:**`cook-artifact-lifecycle` FE-883 (folded tree + harvest + idempotent `commitSliceWorktree`); FE-872 (failureKind, for B).
521
522
-**Traceability:** Requirement 49; establishes I138-K, D170-K; builds on I124-K, D159-K.
0 commit comments