Skip to content

Commit 193b0d5

Browse files
committed
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.
1 parent 0027fdf commit 193b0d5

2 files changed

Lines changed: 6 additions & 5 deletions

File tree

memory/PLAN.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ The May 2026 intent-spec, multi-chat, changeset-ledger, prompt/context, and agen
7676
### Parallel / Low-conflict
7777

7878
- `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).
8080
- `first-run-provider-setup` — provider/key UX and runtime seam can progress independently of semantic-stack work.
8181
- `workspace-gitignore-assist` — small workspace hygiene surface with low overlap.
8282
- `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
511511
- **Name:** Epic verification recovery — recoverable epic verify instead of terminal halt
512512
- **Linear:** FE-884
513513
- **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`.
515515
- **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`.
516516
- **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.
517517
- **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).
519520
- **Acceptance / verification:** see `memory/CARDS.md`; oracle strategy folded into SPEC §Verification Design.
520521
- **Depends on:** `cook-artifact-lifecycle` FE-883 (folded tree + harvest + idempotent `commitSliceWorktree`); FE-872 (failureKind, for B).
521522
- **Traceability:** Requirement 49; establishes I138-K, D170-K; builds on I124-K, D159-K.

0 commit comments

Comments
 (0)