diff --git a/docs/audits/2026-09-09-historical-decision-revalidation.md b/docs/audits/2026-09-09-historical-decision-revalidation.md new file mode 100644 index 00000000..48d412dc --- /dev/null +++ b/docs/audits/2026-09-09-historical-decision-revalidation.md @@ -0,0 +1,214 @@ +# Historical decision revalidation + +Date: 2026-09-09. Product baseline: `e566e82e772e9241e8eeadcfcadfae4226bf80e3`. + +## Purpose and authority + +This report records 100 original decision clusters and 14 follow-up decisions. The fresh authority is the supplied `human-dispositions.json`, containing 114 unique choices. Inventory recommendations are not choices and old current-state labels are not proof. Each primary row records one id and its actual disposition. Original rows retain the historical subject and choice or unresolved status, evidence, current status and effect. + +The five values are already satisfied, keep now, keep later, revise and reject. They acknowledge an existing result, retain a current priority, retain a later preference, redirect a decision or decline its old mechanism. None alone approves implementation. This report changes no product code or shipped role prompt, selects no work action, marks nothing complete, certifies no independent approval, and grants no merge, deletion or publication authority. Future scope, budgets and issue titles/scopes remain human-owned. Keep-later choices create no issue automatically. Agent-images #154 is the only already authorised cross-repository issue among these follow-ups. Every other issue needs separate title and scope approval. + +## Evidence boundary + +A1 is the [full pre-reset session-tree audit](2026-09-02-full-pre-reset-session-tree-intent-audit.md). Its source prefix includes JSONL lines 1 through 62,326, ending at reset decision `095858ed` on 2026-08-30T13:34:15.841Z. The prefix is 127,492,692 bytes with SHA-256 `b1c42b8542eef31e091388bf6854f2cb1ef9174361f3b4fc79ce6897f93c4f50`. The audit covers the preceding 62,325 records. It retained 551 intent records, comprising 245 direct user texts and 306 question-tool results, classified as 297 project intent, 244 process control and 10 other repositories. These are inherited measurements, not a fresh session extraction by this author. + +The inventory merged 118 source clusters into 100 original decisions and mapped all 93 archived questions. B-05's live ASCII check and removed example were separated because their outcomes differ. Message ids in rows identify audited external evidence, not commits. No private message text, raw sessions, inventories or receipts are copied. Choices and conclusions are stated here without dependence on ignored scratch files. A1's pending or superseded assessments describe its audit date and are superseded where this report differs. + +A2 comprises the retained [workflow audit](2026-08-13-audit-when-the-loop-turned.md) and [measurement methods](2026-08-13-audit-measurement-methods.md). + +| Key | Preserved Git source | +| --- | --- | +| G1 | `git show 7dbd97f1:docs/plans/agent-scaffold.plan.toml` is the structured source of ask text and archived status for all 93 questions. | +| G2 | Supplementary question sidecars where non-empty. Of 93 sidecars, 85 are empty. Example: `git show 7dbd97f1:docs/plans/agent-scaffold.questions/Q-78.md`. Q ids are archived questions, not new tasks. | +| G3 | `git show 7dbd97f1:docs/metrics/workflow.jsonl` reads 509 historical records. Recorded arithmetic is not independent execution proof. | +| G4 | Preserve `archive/pre-minimal-reset` at `7dbd97f1dc7c2cdb7b4f008b7490de97272f9beb` and `impl/bounded-convergence-option-b-proof` at `d02fa3c8741418d813d6eb442861242b7dba58c0`. Option B stays paused and unmerged. | + +Checks confirmed cited Git object existence, all 93 G1 ask texts and statuses, and Q-78 supplementary content. Row references G1/G2 mean G1 plus supplementary G2 content where present. Q-43 is superseded. Q-44 and Q-56 remain historically open. Q-58, Q-68, Q-69 and Q-79 remain historically exploring. Decided pilots do not retrospectively answer those broader questions. + +## Current product evidence + +These source and test groups were inspected at the baseline. Test references identify coverage, not a claim that the product suite ran in this container. + +| Key | Source and test scope | +| --- | --- | +| P1 | [CLI, asset builder and writer](../../src/main.rs), [shared manifest loader](../../src/manifest.rs), [built-in manifest](../../pack/pack.toml), [minimal-scaffold tests](../../tests/default_scaffold_is_minimal.rs), [source containment tests](../../tests/pack_source_stays_inside_the_pack.rs) and [destination containment tests](../../tests/pack_dest_stays_inside_the_output_dir.rs). | +| P2 | [Principle model/rendering](../../src/pack.rs), [principle data](../../pack/principles.toml), [TUI code and unit tests](../../src/tui.rs). | +| P3 | [Work parser/status](../../src/work.rs), [next projection](../../src/next.rs), [work command tests](../../tests/work_state_commands.rs), [next tests](../../tests/next_work_source.rs). Limits: 4,096 source bytes, five total steps, 8,192 next bytes, 16,384 status/validation bytes. | +| P4 | [Canonical guidance](../../AGENTS.md), [implementer](../../.agents/prompts/implementer.md), [reviewer](../../.agents/prompts/reviewer.md), [triager](../../.agents/prompts/triager.md), [fixer](../../.agents/prompts/fixer.md), [verifier](../../.agents/prompts/verifier.md), [kickoff](../../.agents/user-prompts/kickoff.md), [standalone review](../../.agents/user-prompts/review.md). | +| P5 | [Plan parser](../../src/plan.rs), [TOML source](../../src/plan/source.rs), [render](../../src/plan/render.rs), [metrics](../../src/metrics.rs), [workflow](../../src/workflow.rs), [spec](../../src/workflow_spec.rs), legacy main/next routes, [anchoring tests](../../tests/metrics_and_ledger_anchor_to_the_plan_source.rs), [unsafe-pairing tests](../../tests/unsafe_pairings_are_refused_and_omitted.rs). | +| P6 | [Checks parser/runner/tests](../../src/checks.rs), [default checks example](../../pack/checks.toml), [live ASCII check](../../.agents/checks.toml), [staged-hook tests](../../tests/checks_staged_hook_env.rs), [missing-temp tests](../../tests/checks_missing_tmpdir.rs). | +| P7 | [Advisory audit](../../src/audit.rs), main's `run_audit` and help, [audit command tests](../../tests/audit_command.rs). | +| P8 | [Generated-guidance drift guard](../../src/agents_md_drift.rs), including its explicit coverage limitations. | +| P9 | [README](../../README.md), [Cargo metadata](../../Cargo.toml), [flake](../../flake.nix), [changelog](../../CHANGELOG.md), [formatter settings](../../.prettierrc.json), [reset](../../RESET.md), [work state](../../.agents/work.toml), [recipes](../../justfile). Tags v0.0.1 through v0.0.4 remain preserved. | + +## Reconciled direction + +### Retained product and staged cleanup + +The human approved staged breaking removal of legacy plan/sidecar/render, round-log instrumentation and parsers, ledger/resume, formal risk classes and legacy-only pack hooks. These remain shipped, including fallback without work.toml, automatic custom-plan rendering and legacy placeholder generation. This report removes none. Keep generic custom-pack assets, variables, modules, principles and ownership. Keep containment and missing-input refusals while corresponding readers remain. Trace shared callers before deletion. Absence from the default pack is not proof of unreachability, and no telemetry establishes external legacy usage. + +The future split is status for inspection, next for ready/blocked work and brief for bounded per-step, per-role context. Current next emits active units and selected prose. No brief, run or execution backend is shipped. The selected future architecture is a deterministic Mealy-machine core inside agent-flow with bounded execution subcommands and provider-neutral adapters, provisionally `agent-flow run`, not the older external-only/advisory recommendation. Compare `smol-machines/smolvm`, hardened direct Podman and hardened Agent-box on one task before implementing at most one first backend. + +Invocation, sandboxing, credentials, atomic reservations, resource limits and temporary cross-machine state belong behind a strict backend contract. Missing or unsafe backends must fail without unsandboxed fallback. State ownership, atomic reservations, stale/duplicate events, interrupted launches, cross-machine continuation, evidence retention and credential bypass still need bounded design and executable proof. The proposed enforcement boundary was not demonstrated. Do not claim tamper-proof state or implemented guarantees. Structured evidence does not prove semantic relevance. + +### Dispatch budgets and roles + +Every dispatched agent counts against one human-approved sealed total T, including approved planning, implementation, each parallel reviewer, independent triage, resumed fixes and verification. Resumption costs a dispatch. A loop also needs a sealed cycle ceiling. Preserve verification allowance before fixes. Unused budget grants no new phase authority. Scope change terminates an execution. Further work requires separate approval, retained prior findings/references and cumulative spend reporting, not reset counters. Calls do not bound all internal tokens or runtime. Budget proposals are structured human decisions, not calibrated formulae. + +Fix is a writer phase, normally resuming the implementer. Verification normally resumes an original independent reviewer. Independent read-only triage reproduces findings and adjudicates validity, scope, accepted criteria and project constraints. Routing is AUTO_FIX or HUMAN_DECISION, not severity thresholds. AUTO_FIX permits only an already-authorised bounded correction with budget and verification room. Every valid residual blocks automatic acceptance. Low residuals, ambiguity, material choices, unsafe work, scope conflicts and insufficient budget return to the human. Current prompts still use four impact labels. They are unchanged here. + +Explicitly authorised planning-review loops are allowed prospectively, not mandatory. The human approves remit, correction scope, total budget and cycle ceiling. Favourable planning review does not approve implementation. This supersedes an absolute no-planning-loop design without changing shipped instructions in this task. The selected focused loop permits independent triage after a possible verification defect, then resumed writer/reviewer phases only for AUTO_FIX within sealed limits. Other outcomes stop automation. + +### Pilot and empirical limits + +The historical review cluster became a reviewer-count by change-size pilot during revalidation. Its initial twelve-call review-only description is partly superseded. Twelve is only the maximum initial sample: three initial reviewers and up to one initial triager for each of three deliveries. It is not a second runtime budget. Each delivery needs its own human-approved complete total for every authorised phase, with a cycle ceiling if a loop is authorised. + +At the first delivery the orchestrator proposes a calendar expiry from expected cadence and the human approves or changes it. Stop at the earlier of three terminal enrolled deliveries or expiry. Preserve partial aggregate results if expiry arrives early. Failed or inconclusive cases permit no automatic expansion. No expiry date is invented here. + +Preserve the empirical purpose: describe reviewer contribution by change size, reproducible findings, disagreement, outcomes and cost. Do not claim statistical power, an optimal reviewer count, defect absence or calibrated budget constants. A2 preserves Fagan's 1976 inspection reference, Eick and colleagues on capture-recapture, and DORA/SPACE-style multidimensional evaluation. Its M6/M7 caveats matter: partitioned reviewer lenses invalidate simple capture-recapture assumptions, and local yield did not reproduce a universal diminishing-return rule. These are research leads, not automatic constants. Broader benchmarks, oracles, samples, protocols and issue scopes need separate approval. + +### History and disputed evidence + +Waivers, capped-loop closures, sidecar selectors, the reset, directory removal and deletion of 38 reflow stashes are history, not active exceptions. Preserve the delivered reset baseline and both refs. No formal salvage-test pass, new deletion or merge authority follows. + +The review-controller synthesis preceded fresh choices. Focused verification confirmed four corrections but ended FAIL because its container lacked the replay input mount. An earlier independent reviewer and host replay reproduced expected output hash `7af5a90f8e6ded5329f16920bf5420d8049a01a6176837d14b0689be6b17025d`. That is not a clean focused-verification pass. Its older single-fix, external-only, separate-budget and routing recommendations are not adopted. Round replay cannot establish full dispatch cost, escaped defects or calibration. + +The completed 2026-08-31 causation investigation remains uncorrected. Its independent critique, labelled pass with corrections, disputes grades, counts and causal ranking, and identifies ancestry-selection and model confounding. Neither original nor proposed replacement ranking is established causation here. Five historical controls were found in reset-era guidance. New controller and planning-loop choices must not be backdated into that analysis. The selected follow-on is bounded correction and preservation after revalidation, not a new experiment or a repair in this task. + +Personal Pi, shell, questionnaire, session and authentication preferences stay outside agent-flow. No-Fable is a personal preference, not a supported-provider restriction. No personal model settings or questionnaire extension tasks enter shipped guidance. + +## Original decisions + +Current status is assessed at the baseline independently of the fresh disposition. Effects record human directions, not writer-created tasks. + +| Id | Historical subject and original choice or unresolved status | Historical evidence | Current product status | Fresh disposition | Effect | +| --- | --- | --- | --- | --- | --- | +| D-001 | Ship a minimal scaffold for new and existing projects, with AGENTS.md canonical and the tool stopping at contracts and state projections. | Messages `d2f835c6`, `224aaba7`, `b7b7ca16`. G1/G2: Q-64. | Shipped minimal default and shared custom-pack loader. No agent execution. P1, P4. | already satisfied | Retain the compact scaffold and shared built-in/custom-pack implementation, as confirmed after explanation. Execution direction is separate. | +| D-002 | Allow invocation from any directory, explicit output directories, and a sane namespaced default layout. | Messages `9384d0e0`, `74ec5c0c`. | CLI accepts an output directory and defaults to the current directory. Built-in assets are namespaced. P1. | already satisfied | Retain flexible invocation and namespaced default assets. | +| D-003 | Support a built-in pack and local user packs whose scaffolded working outputs remain user-editable. | Messages `9384d0e0`, `74ec5c0c`, `e5544d70`. | Built-in and local packs use the same asset, variable, module, principle and ownership path. P1. | already satisfied | Retain local custom packs and editable outputs, confirmed after explaining their capabilities and shared loader. | +| D-004 | Accept local pack paths and defer Git-fetched templates. | Messages `71488b48`. | `--template` is a local PathBuf. No remote pack-fetch route is shipped. P1. | already satisfied | Retain local-only pack sources. Do not introduce remote fetching. | +| D-005 | Create user working files only when absent, refresh tool-owned references, and preserve recoverability for writer edits. | Messages `497b2662`, `74ec5c0c`, `4212eb21`. G1/G2: Q-3, Q-17, Q-71. | Working assets are create-if-absent unless forced. References refresh. Recovery is a writer instruction, not an execution guarantee. P1, P4. | already satisfied | Retain ownership, explicit force and recoverability rules. | +| D-006 | Write only through Save or --write, expose --dry-run, and avoid default overwrite. | Messages `74ec5c0c`, `95c3b011`, `df140898`. | Save or `--write` applies. Dry runs and non-terminal previews do not write. `--force` is a separate overwrite choice. P1, P2. | already satisfied | Retain explicit apply, preview and overwrite boundaries. | +| D-007 | Provide both command-line and terminal-interactive scaffold entry points. | Messages `497b2662`. | CLI and terminal selector remain available. Both use the same asset builder. P1, P2. | already satisfied | Retain both entry surfaces. | +| D-008 | Use ratatui, not inquire, with a two-pane principle selector. | Messages `497b2662`, `8be39291`, `48e78f0f`. | Ratatui and the available/included panes remain in the selector. P2. | already satisfied | Retain ratatui and the two-pane selector. | +| D-009 | Use h/l focus, wraparound scrolling, i/a insertion, and insert-after-cursor semantics. | Messages `c41ff605`, `9a9bb3ba`, `10b0eff9`. | Focus keys, wrapping cursors, before/after insertion and reordering have update-path unit tests. P2. | already satisfied | Retain the current navigation and insertion contract. | +| D-010 | Provide undo/redo and an Enter-driven Save confirmation modal. | Messages `7c76bc96`, `e189ecab`. | Undo/redo and Enter confirmation remain. The modal defaults to Cancel. P2. | already satisfied | Retain reversible edits and explicit Save confirmation. | +| D-011 | Represent principles with tags, rationale, default order, numbering, and deterministic rendering. | Messages `497b2662`, `0e197a56`, `7c30032f`. | Typed principles supply metadata, selection order and numbered rendering. P2. | already satisfied | Retain structured metadata and deterministic principle rendering. | +| D-012 | Use a small default set, omit KISS as a named default, retain adversarial review, and avoid a universal list. | Messages `cf1799f7`, `4bce6f43`, `3e73e30e`. | Default principles are compact. `kiss` is selectable but not a default. Independent review remains in guidance. P2, P4. | already satisfied | Retain the compact default principle set, not a universal list. | +| D-013 | Require agents to re-read relevant repository guidance, state, code, and tests rather than rely on remembered prompts. | Messages `8d1beccf`, `d51b2d80`. | Read-first guidance is shipped. Status inspects steps and next emits selected prose. No per-role brief command. P3, P4. | revise | Use `status` to inspect workflow state, `next` to select ready work, and `brief` as the primary per-step, per-role worker context with bounded standing reminders. | +| D-014 | In the old copied-plan flow, put scaffold principles first and consolidate overlaps into the project copy. | Messages `4320098e`, `41f2131d`. | The old copied-plan principle-merge flow is absent from the minimal pack. P1, P4. | reject | Leave the obsolete copied-plan principle-merging rule retired. | +| D-015 | Use Nix for the development environment but do not require it at product runtime. | Messages `cf1799f7`. | Standalone Rust binary with Nix development tooling, not a runtime Nix requirement. P9. | already satisfied | Keep Nix development-only and the normal Rust runtime/install path. | +| D-016 | Prefer Rust #[expect] to #[allow] where it expresses an expected lint, without forcing it everywhere. | Messages `54b454b2`, `0ef8e68f`. | Rust uses both expect and justified allow attributes. This is a preference, not a dedicated gate. P2, P6. | already satisfied | Keep expect-over-allow as a contextual preference, not blanket enforcement. | +| D-017 | Ship motivation, installation, usage, licensing, badges, repository description, and clear human and agent usage guidance. | Messages `41e9a373`, `4bace551`, `dc4e71bd`. | README covers motivation, install, usage, licence and human/agent boundaries. Specific stale text remains under D-081 and D-104. P9. | already satisfied | Retain the public documentation baseline and correct demonstrated stale text only within approved scope. | +| D-018 | Show workflow transitions, stop conditions, and human interruption in README diagrams. | Messages `1e418d83`, `0a2d4688`, `a32af6d4`. | README diagrams the shipped single-fix flow and stops. It does not depict the proposed controller. P4, P9. | already satisfied | Retain the current explanatory diagram. Update it only when approved behaviour changes. | +| D-019 | Make the old active specification comprehensive enough for handoff without session memory. | Messages `5440c509`, `a67e561b`, `acb11bfe`. | Compact work prose replaced comprehensive continuity state. No generated execution handoff exists. P3, P4. | revise | Generate an output-limited execution handoff from authoritative repository and runner state, with scope, Git refs, phase, remaining budget, verdicts, commands and raw evidence refs. No transcript copy or comprehensive continuity specification. | +| D-020 | Initialise an empty Git repository by default, with --vcs none as opt-out. | Messages `caab3b3f`, `6304bb1d`. | Git initialisation is the default on apply, with `--vcs none` and an existing-repository guard. P1. | already satisfied | Retain default Git initialisation with explicit opt-out and nested-repository safeguards. | +| D-021 | Keep reviewer and triager independent. Run triage only for findings. Permit one scoped fix and one focused verification. | Messages `caab3b3f`, `c07a4ffe`, `9726ce81`. G1/G2: Q-13, Q-63. | Guidance ships independent review, conditional separate triage, one fix and one verification. No reviewer-count pilot has been run here. P4. | revise | Run the three-delivery reviewer-count by change-size pilot under D-116/D-117. Twelve bounds initial review/triage sampling only. Each delivery needs an approved complete total and any loop ceiling. Stop at three terminal deliveries or approved expiry, report partial results and preserve research references. No automatic expansion. | +| D-022 | Use an orchestrator to spawn role agents, manage plan review, counts, ledgers, forks, and convergence. | Messages `4777fc97`, `1bd0b1c8`, `570bff84`. G1/G2: Q-8, Q-10, Q-12. | Old orchestration prompts are absent. CLI starts no role agent and exposes no `run` command. P1, P4. | revise | Provisionally target `agent-flow run` with a pluggable internal backend interface. Compare `smol-machines/smolvm`, hardened direct Podman, and hardened Agent-box on one task. Implement at most one first backend after the proof. This can change with better evidence. | +| D-023 | Give newcomers an obvious kickoff prompt, selected-action instruction, and clear ongoing human duty. | Messages `44d0bdf4`, `e08c8e52`, `09e0b8d3`. G1/G2: Q-9. | Kickoff names the selected action. Standalone review is the other human-invoked entry. P4. | already satisfied | Retain the narrow kickoff and standalone-review entry surface. | +| D-024 | Keep user prompts in .agents/user-prompts and role prompts in .agents/prompts. | Messages `45d66db2`, `f505a6a5`. G1/G2: Q-16. | Human and role prompts occupy separate directories and manifest entries. P1, P4. | already satisfied | Retain the human-prompt and role-prompt directory boundary. | +| D-025 | Ship pause, compaction-prep, and resume prompts. Later choose only a minimal currency signal rather than a lifecycle command/state machine. | Messages `45d66db2`, `e167f98b`, `2a39a15a`. G1/G2: Q-15, Q-19, Q-23, Q-59. | No active session lifecycle schema or pause/resume prompts. Legacy ledger resume remains separately reachable. P3, P4, P5. | revise | Explore bounded pause, resume, and context recovery while retaining deterministic Mealy-machine workflow modelling as a core product direction. Do not restore the old plan and ledger lifecycle. | +| D-026 | Keep clarifying-questions and open-questions-gate as planner-run human-decision gates with precise routing. | Messages `63e521eb`, `92ff8ee7`, `8a4562d3`. G1/G2: Q-20. | Planner gates are not shipped in the minimal pack. Direct clarification is required instead. P1, P4. | reject | Reject the old planner gate prompts for now. Revisit bounded planning separately within the Mealy-machine architecture exploration. | +| D-027 | Support question-led input, a visible decision queue, an exploring status, design-note artefacts, and optional multi-explorer synthesis. | Messages `c813ba4d`, `27b8162d`, `2c50d69f`. G1/G2: Q-8, Q-10, Q-12, Q-29. | No exploration status or durable question queue in work.toml. Question-led conversation remains possible. P3, P4. | revise | Preserve first-class question-led exploration and durable decisions. Explore compact queryable decision state without restoring the old sidecar corpus. | +| D-028 | Use one machine-readable source and human projections. After reset make .agents/work.toml the only task-state file with at most five ordered steps. | Messages `076ca2a6`, `d103c8dd`, `8c66d7de`. G1/G2: Q-11, Q-43, Q-44, Q-45, Q-46, Q-68, Q-83. | Version 1 work state enforces five total steps and one active selection while work remains. Not a parallel scheduler. P3. | revise | Keep the five-step and single-selection limits as temporary recurrence guards. Redesign bounded active, ready, and retained state for the Mealy-machine and parallel-work model. | +| D-029 | Store the whole plan skeleton in TOML, prose in sidecars, render committed Markdown, and skip Markdown validation in TOML-primary mode. | Messages `06764678`, `0bb32afb`, `918f1fec`. G1/G2: Q-45, Q-46. | Render, TOML plans, sidecars and explicit legacy validation remain shipped and documented. P5. | reject | Remove TOML plan, sidecar, render, and legacy plan-validation support through the staged breaking cleanup. | +| D-030 | Track round accounting, ledger templates, resume state, queues, and review evidence across plan, ledger, and JSONL sources. | Messages `9de4779c`, `0a3bf9b1`, `7179d1d3`. G1/G2: Q-1, Q-2, Q-3, Q-11, Q-24, Q-34, Q-46. | No active plan/log/ledger family in the default. Legacy readers and validation remain. P1, P5. | reject | Do not restore the old plan, ledger, round-log, resume-state, or decision-receipt state family. | +| D-031 | Use the product and workflow on this repository, not only in fixtures or prose. | Messages `bafab797`, `a3f5ae57`, `404964c8`. | This repository uses the compact work file and generated guidance, with CLI integration tests. P3, P4, P8. | already satisfied | Continue bounded dogfooding without treating self-use as independent review. | +| D-032 | Provide declarative, pluggable lint and format checks plus an optional hook. | Messages `0f3e46c6`, `b8a89aeb`, `3ffb7b85`. G1/G2: Q-25, Q-26. | Optional checks module and create-if-absent hook delegate remain. They are tooling, not task state. P1, P6. | already satisfied | Retain optional deterministic checks and hook support as tooling only. | +| D-033 | Do not manually hard-wrap prose. Use Prettier proseWrap=never and never report line length as a finding. | Messages `5b6bb756`, `f86b4128`. G1/G2: Q-22. | Prettier sets proseWrap to never. Current guidance limits formatting to changed files. P4, P9. | already satisfied | Retain formatter-owned, unwrapped prose. Do not treat line length as a finding. | +| D-034 | Use explicit subcommands with bounded status, next, and validate projections rather than a flag-only interface. | Messages `dd3b2160`, `d3ac2179`. G1/G2: Q-28. | Explicit subcommands are shipped. The selected brief/run split is not. P1, P3. | revise | Keep the subcommand model and apply the new `status`, `next`, `brief`, provisional `run`, and legacy-cleanup decisions. | +| D-035 | Let a human request read-only review of one tree ref or one diff against supplied criteria, without workflow state. | Messages `5b28774c`, `4fe0b9e1`, `21f2f28a`. G1/G2: Q-35. | Standalone read-only tree/diff prompt is shipped and covered by minimal-scaffold tests. P4. | already satisfied | Retain the human-invoked read-only tree/diff review prompt without workflow state. | +| D-036 | Prefer containers then worktrees, isolate every spawned agent, batch-merge outputs, and ship guidance or reminders for the policy. | Messages `ddb65744`, `72d1acd2`, `875b384d`. G1/G2: Q-18, Q-32, Q-33, Q-36, Q-41, Q-61, Q-62. | Roles are prose contracts only. Checks worktrees are not agent sandboxes. Legacy isolation reminders still exist. P4, P5, P6. | revise | Require role-specific isolation in the future backend contract. Prompts describe it but cannot enforce it. No unsandboxed fallback. | +| D-037 | Add an opt-in test-driven phase with a separate test author before implementation. | Messages `a02a7005`, `158aaa48`, `9684c5e5`. G1/G2: Q-30, Q-31. | No test-author role is shipped. Implementation includes tests and review checks their relevance. P4. | reject | Keep tests with the implementer instead of adding a separate test-author pass. Independent product review must examine the tests and detect vacuous coverage of desired and undesired behaviour. | +| D-038 | Add an optional changed-code mutation step with budget and threshold. One audit experiment killed 144 of 150 viable mutants, but no programme shipped. | Messages `290e5942`. G1/G2: Q-30, Q-31. | Test/mutation kinds and budget/threshold parse but are skipped or unused. No mutation gate. Historical 144/150 result was a two-file audit. P6, A1. | keep later | Remove dormant skipped schema during cleanup. Later approve a bounded mutation diagnostic on current high-value code and assess workflow value and budgets against tests, changed code, risk or runtime. No merge gate without new evidence. | +| D-039 | Record typed round events, reviewer model and harness, decisions, and waivers in a validated JSONL log used during dogfooding. | Messages `e2789f84`, `d513e339`, `9ebec700`. G1/G2: Q-4, Q-5, Q-6, Q-24, Q-37. | Round-log parsers and workflow joins remain only on legacy paths. Default state does not consume them. P3, P5. | reject | Remove per-round JSONL instrumentation and its core parsers through the staged breaking cleanup. Preserve historical evidence in Git and v0.0.4. | +| D-040 | Defer creating and editing custom packs through the TUI as an optional later feature. | Messages `3b0d6ef2`. | TUI selects principles, not custom-pack authoring. No current delivery owns this feature. P1, P2. | keep later | Retain TUI pack authoring for later. An issue needs separate title and scope approval. | +| D-041 | Defer event-log and Gantt-like workflow visualisation for later. | Messages `3d2a3e14`. | Static README diagram exists. No controller-state or Gantt visualisation is shipped. P1, P9. | keep later | Retain bounded workflow visualisation as a later preference. Project controller state, dependency readiness, budget use, and terminal outcomes from authoritative sources without restoring event logs. Approve any issue title and scope only after controller and pilot evidence exists. | +| D-042 | Initially keep agent-scaffold, then rename crate, binary, and repository identity to agent-flow while preserving old versions. | Messages `10584350`, `fe21968f`, `c52d7af9`. G1/G2: Q-65. | Current Cargo crate, binary and public repository reference are agent-flow. Historical names remain accurate. P9. | already satisfied | Keep agent-flow as the crate, binary, repository, and public product name. Preserve accurate agent-scaffold references in immutable historical releases. | +| D-043 | Publish early 0.0.x releases, tag them, keep a changelog, reserve agent-flow, and preserve reclaim terms for agent-scaffold. | Messages `a0ec6da4`, `f3e596de`. G1/G2: Q-65, Q-71, Q-74. | Tags v0.0.1 through v0.0.4 and changelog history remain. No release action is part of this report. P9. | already satisfied | Preserve the published 0.0.x releases, corrected tags, and changelog history. Make any future corrections forward in current documentation or a new release. | +| D-044 | Have reviewers and triagers author findings files for other agents and merge them into the main workflow record. | Messages `62f2c126`. G1/G2: Q-14. | Guidance requires direct review responses and forbids persisted findings state. Legacy naming helpers remain. P4, P5. | reject | Do not commit reviewer findings files. Pass actual findings through direct responses or short-lived external runner data. | +| D-045 | Default to report-and-continue at step boundaries, with optional human gating. | Messages `4c30d655`, `5b6bb756`. G1/G2: Q-21. | Current instructions return delivery results to the human. No automated reviewed-head continuation exists. P4. | revise | Report each reviewed head with passing CI, then continue without waiting for merge. Preserve human interrupt and merge authority. | +| D-046 | Prefer different models or harnesses to reduce shared reviewer blind spots. | Messages `3af5e4bb`. G1/G2: Q-36. | Independent roles are required. No permanent provider-diversity policy is shipped. P4. | keep later | Evaluate provider-neutral reviewer diversity before adding a permanent rule. | +| D-047 | Allow path-scoped checks so one repository can lint several languages. | Messages `3db65d22`. G1/G2: Q-26, Q-38. | Checks accept path globs and arbitrary configured commands. No single-language restriction. P6. | already satisfied | Retain path-scoped polyglot checks. | +| D-048 | Dogfood an active ASCII check on this repository after the pack invariant was established. | Messages `a4ac787a`, `8a72bcf1`. G1/G2: Q-38. | Active pack-ascii row checks tracked pack bytes only. This is not a whole-repository ASCII requirement. P6. | already satisfied | This disposition covers the active repository ASCII check only. | +| D-049 | Run lint and formatting commands against temporary Git worktrees, including staged content, never the live tree. | Messages `7b76d91f`, `7d916bfd`. G1/G2: Q-25, Q-26, Q-39. | Disposable checks worktrees are implemented, but Drop and startup cleanup still run broad `git worktree prune`. Complete-view guard is absent. P6. | revise | Retain disposable checks worktrees. Harden cleanup to delete only runner-owned entries and require complete registered-worktree visibility for repository-wide cleanup. No broad pruning from incomplete views. | +| D-050 | Use statistical methods such as agreement and repeated evaluation to calibrate workflow claims. | Messages `acc79493`. | Dated audits exist, not a repeated independently scored statistical benchmark. A1, A2. | keep later | Defer broader statistical evaluation and any issue. The pilot is descriptive feasibility evidence only. Approve repeated benchmarks, independent oracles, samples and costs separately after its report. | +| D-051 | Ground workflow-driving criteria in objective evidence instead of subjective risk labels. | Messages `43ff6f53`. | Work state carries acceptance prose and prompts demand observable test evidence. Parsing does not establish test quality. P3, P4. | already satisfied | Keep observable acceptance evidence and independent review of changed tests, including desired behaviour, important unwanted behaviour, and vacuous coverage. | +| D-052 | Record human-authorised below-streak convergence and repeatedly close capped loops through one fix, one verification, waiver, or exact merge decisions. | Messages `f7cf3430`, `12f881dd`, `d17bfa1b`. G1/G2: Q-40, Q-74, Q-80, Q-81, Q-85, Q-88, Q-89, Q-90, Q-92, Q-93. | Historical closure only. Current default has no clean-streak waiver or reset counter. Legacy arithmetic still ships. G1, G3, P4, P5. | already satisfied | Preserve old waivers and capped-loop decisions as historical closures only. Restore no clean streaks, waivers, counter resets or merge exceptions. | +| D-053 | Present viable options, trade-offs, a recommendation, and reasoning against named principles. The human owns material scope and acceptance. | Messages `f7cf3430`, `73c1d3e6`, `6bdbf854`. G1/G2: Q-12, Q-54, Q-60, Q-67. | Canonical guidance asks for options, trade-offs and a recommendation, but lacks the selected named-principles requirement. P4. | revise | Restore one canonical rule that presents viable options, trade-offs, a recommendation, and reasoning against named project principles. Do not restore receipt machinery. | +| D-054 | Require typed options, recommendation, chosen value, and validation for every decided question. | Messages `04035a56`, `d103c8dd`, `3c9a32d5`. G1/G2: Q-42, Q-43. | Per-decision active receipts are retired. Legacy receipt validation remains pending staged cleanup. P4, P5. | reject | Keep per-decision receipt files and validation machinery retired. Record all fresh dispositions once in the bounded aggregate revalidation report without claiming that a project-authored record proves independent human approval. | +| D-055 | Prefer the best long-term design over compatibility while adoption was low. The reset nevertheless retained substantial legacy command and parser surfaces. | Messages `392aa0d4`. G1/G2: Q-44. | Compatibility is still a shipped promise in CLI routes and README. Breaking removal is direction, not an accomplished deletion. P5, P9. | reject | Stage removal of legacy workflow compatibility for the next breaking release. Compatibility breakage is acceptable for a cleaner result because the project is new and makes no stability guarantee. | +| D-056 | Reject unknown keys in plan and work TOML rather than silently ignore typos. | Messages `2872ab5e`. G1/G2: Q-45. | WorkFile, WorkStep and legacy plan schemas reject unknown keys. This is not a claim that every pack schema does so. P3, P5. | already satisfied | Retain strict unknown-key rejection at the work and plan input boundaries. | +| D-057 | Remove migration subcommands after their one-time cutover use. | Messages `57bbafef`. G1/G2: Q-45. | No migration subcommand appears in the current CLI. History preserves prior cutovers. P1, G1. | already satisfied | Remove one-time migration commands after their verified cutover. Preserve reproducibility through reviewed transient tooling, ordinary commits, and bounded evidence instead of permanent obsolete CLI surface. | +| D-058 | Before work, re-ground from durable state, code, decisions, and evidence rather than transcript memory. | Messages `58b0f8df`, `4ab34640`. G1/G2: Q-53. | Read-first and ambiguity checks sit inside the worker pass, not a separate context-review phase. P4. | already satisfied | Re-read authoritative work, code, tests and decisions at task entry and resume inside the normal worker pass. Brief aids context. Conflicts or missing authority go to the human, not a separate context-review pass. | +| D-059 | Treat affected shipped docs and prompts as part of each product change, but avoid standalone plan-document churn. | Messages `ecb20fce`, `aab815f0`, `f6d25854`. G1/G2: Q-47, Q-50, Q-76, Q-77. | Affected-doc currency is a shipped working rule. It does not imply that all current text is accurate. P4, P9. | already satisfied | Keep documentation updates limited to files made stale by the accepted product change. | +| D-060 | Have harness-agnostic guidance name the actual scaffolded authoring flow instead of remaining abstract. | Messages `d8f3a0ea`. G1/G2: Q-48. | Guidance concretely names work.toml, next, kickoff and the five passes. It describes no available controller. P4. | already satisfied | Keep canonical guidance concrete about commands and files that the product ships. Update affected instructions with the implementation change. Do not describe proposed controller features as available. | +| D-061 | Audit redundancy, state each canonical rule once, and point harness-specific files to it. | Messages `ed900fa0`, `a93c4f63`. G1/G2: Q-49. | Canonical AGENTS guidance and generated reference/prompt copies remain. Drift coverage is scoped. P4, P8. | already satisfied | Define shared rules once with targeted references. Keep role specifics in role prompts and generated distribution copies as projections, not independent policy. | +| D-062 | Determine whether code earns its maintenance cost. Ship a cheap advisory static audit, gate deletion experiments, and never auto-delete. | Messages `8dd819e7`, `a57094ae`, `d3005f65`. G1/G2: Q-52. | Audit runs suppression/FFI source scanning only. Rustc dead-code and cargo-machete signals remain false. Plan-derived output naming remains. P7. | revise | Evaluate the incomplete audit feature through the granular compatibility and code cleanup. Keep, complete, or remove each part based on demonstrated incremental value. | +| D-063 | Build a data-driven Mealy-style driver that reconstructs state, emits role instructions and generated rules, and later schedules units. | Messages `ad83c7a4`, `22b750b7`, `13fdc32c`. G1/G2: Q-51, Q-60, Q-61, Q-64, Q-82. | Next is a bounded projection, not the proposed transition core. No role execution or backend contract is implemented. P1, P3, P4. | revise | Select bounded agent-flow execution subcommands and a deterministic core. Delegate invocation, sandboxing, credentials, reservations, limits and temporary cross-machine state to strict provider-neutral backends. Restore no reminder ladder, plan tree or logs. Unsafe or absent backends fail closed. | +| D-064 | Keep the tool advisory and record or validate mechanical facts only. Do not let it launch agents or make judgements. | Messages `34533aa7`. G1/G2: Q-51. | Current role delivery is advisory and external. Validation rejects malformed declared state, not unauthorised role launches. P3, P4. | revise | Permit authorised mechanical execution through the controller/backend contract, enforcing approved transitions, budgets and isolation. Consume role judgements without inventing approval, broadening scope or accepting residuals. Reject invalid transitions and insufficient budget. | +| D-065 | Attach typed decisions, findings, and commits to legacy plan steps and render why each step exists. | Messages `138a953c`, `9fd17dbc`. G1/G2: Q-53. | Current work holds prose rationale, not a typed provenance graph. Legacy plan provenance survives in compatibility code. P3, P5. | revise | Use lightweight evidence references in existing step rationale and bounded briefs when they explain scope or authority. Cite relevant approved report entries, Git references, or external execution evidence without a separate provenance table or mandatory graph. | +| D-066 | The older durable-queue goal was refined during revalidation into one versioned report, bounded current work and separately approved later issues. | Messages `9cd962c2`, `0170d37c`. | The prior final audit is versioned and revalidation is the selected work action. This report records the new retention choices. P3, A1. | keep now | Use a versioned revalidation report, bounded work state, and separately approved GitHub issues for keep-later choices. | +| D-067 | Replace ledger echo and stale single-loop selection with an 8 KiB deterministic projection of all active units and one selected action. | Messages `eb3dcf4d`, `30fe791d`, `4960a7dd`. G1/G2: Q-58, Q-82. | Next lists active units plus selected prose, not all ready/blocked work. It enforces 8,192 bytes and reads no ledger in work mode. P3. | revise | Change `next` to show ready and blocked work. Keep full per-step, per-role instructions in `brief`. | +| D-068 | Run a fixed-protocol output ablation to determine which prompt or next content improves correct next action per token. | Messages `eb3dcf4d`. G1/G2: Q-58. | Q-58 remained exploring and its reopened run did not precede reset. No bounded-brief effectiveness experiment is shipped or run here. G1, A1. | keep later | Adapt unrun Q-58 to bounded briefs with independent expected actions/constraints, token costs and explicit conclusion limits. Do not restore the old ledger experiment unchanged. Protocol, budget and issue scope need separate approval. | +| D-069 | Write potentially context-filling command output to a file and analyse it there instead of streaming it into the agent context. | Messages `eb3dcf4d`. | No execution backend captures or slices command output for roles. CLI output caps are narrower than this direction. P1, P3. | revise | Require execution backends to provide bounded access to raw command output. Use deterministic metadata and direct slices, not generated summaries. | +| D-070 | Stop stashing or reverting incidental formatter reflow and do not treat it as a review finding. | Messages `7e88f0e6`, `c8f32248`. G1/G2: Q-57. | Changed-file formatting guidance and no-wrap configuration remain. No reflow restoration is performed. P4, P9. | already satisfied | Formatter changes are acceptable to commit. Do not create churn by reverting incidental formatter output. | +| D-071 | Separate roles by authority: reviewers and verifiers edit nothing. Implementers and fixers make bounded changes. Planners historically folded decisions. | Messages `028b9d22`, `5fb626a6`, `548ed9cf`. G1/G2: Q-61, Q-62, Q-67. | Reviewer, triager and verifier contracts are read-only. Implementer/fixer contracts are writable. Backend enforcement is absent. P4. | already satisfied | Keep reviewer, triager, and verifier roles read-only. Keep implementer and fixer roles writable within bounded scope. Future backends enforce this split. | +| D-072 | Encode why work exists, use declaration order rather than a duplicate order field, and allow validated multiline prose. Reset retained four forward-looking work fields. | Messages `fa635cc0`, `0a1f0e63`, `93f8cc66`. G1/G2: Q-78, Q-81. | Declaration order and four paragraph-safe intent fields are implemented. Dependency validation is not a general parallel ready-set scheduler. P3. | revise | Preserve step intent and declaration order as a deterministic tie-break. Design a proper dependency-ready set for parallel work. | +| D-073 | Fail when requested checks cannot run, anchor paths safely, and validate bounded statuses, blockers, selection, size, and step count. | Messages `ac02c56e`, `c7f191e1`, `26038283`. G1/G2: Q-27, Q-55, Q-70. | Strict work validation checks selection, status, blockers, controls and size. Claimed review records cannot repair invalid work state. P3. | already satisfied | Keep strict structural validation and the explicit boundary that declared state does not prove execution or review. | +| D-074 | A project-authored record is not proof that independent review occurred. Use the reviewer response or platform event. | Messages `9746606c`. G1/G2: Q-42. | Guidance rejects manufactured independent-review proof. Content-addressed external verification manifests are not implemented. P4. | revise | Research externally controlled verification with short-lived content-addressed manifests. Keep manifests outside Git and active task state. Commit only a bounded aggregate report. Do not restore clean streaks or round logs. | +| D-075 | Require runnable evidence for behavioural claims and exact commands or file citations for textual claims. Triagers reproduce testable findings. | Messages `e0393e87`. G1/G2: Q-66. | Reviewers must cite reproducible evidence and triagers reproduce it. No backend evidence-capture mechanism is shipped. P4. | revise | Use the future execution backend to capture structured evidence and commands and support independent reproduction. Do not claim that structured evidence proves semantic relevance. | +| D-076 | Preserve the workflow degeneration audit and methods as durable Markdown. Reset later moved them to stable docs/audits paths. | Messages `fa60e524`, `132b7c02`, `05a6433d`. G1/G2: Q-73, Q-76, Q-85. | Three pre-existing final reports are retained under docs/audits, apart from work state. This report adds no raw corpus. A1, A2, P9. | already satisfied | Retain dated, sanitised final audit reports under docs/audits, separate from active work state. State evidence boundaries and limitations. Keep raw sessions and temporary analyses outside Git. Add or correct reports only under approved scope. | +| D-077 | Measure correct requirement delivery over time, human waits, gaming, token/model cost, prompt version, and field outcomes. Avoid Fable due to token use. | Messages `76cf71e9`, `893c2c63`, `0dd4f502`. G1/G2: Q-52, Q-58, Q-59, Q-85. | No linked outcome/token/cost benchmark is shipped. Existing byte limits cannot measure model efficiency or field defects. A1, P3. | keep later | Defer outcome/cost evaluation. Measure correctly met approved requirements, active time, waits, pauses, tokens, model cost and prompt versions. Assess tool, workflow and method separately with independent outcomes and uncertainty. Protocol/issue scope need approval. No round logs. Personal models are separate. | +| D-078 | Anchor paths, prevent pack source and destination escape, omit unsafe projections, and fail unsafe requested validation. | Messages `80479221`, `3df7d3f1`, `19851a99`. G1/G2: Q-55, Q-71, Q-75. | Custom-pack source/destination containment is present, with escape tests. Legacy input containment remains a separate live responsibility. P1, P5. | already satisfied | This disposition covers current custom-pack source and destination containment only. | +| D-079 | Correct false changelog and help claims forward while preserving what immutable releases originally said. | Messages `f6dab001`, `2df7cfbf`, `b37adce4`. G1/G2: Q-71, Q-77. | Changelog retains forward corrections and historical release descriptions. Known current help mismatch is not treated as fixed. P9. | already satisfied | Correct release documentation forward without rewriting immutable historical releases. | +| D-080 | Require explicit human authority for each push, publish, release, remote archive, or new repository action. | Messages `76704529`, `4d867cdf`, `ae640bdb`. G1/G2: Q-65. | Reset expressly withholds standing push, publish and release authority. No such operation is performed here. P9. | already satisfied | Retain explicit human authority for each remote or publication action. | +| D-081 | Ship an audit-method prompt and keep its name alongside the code-value audit command with disambiguation. | Messages `f9cd9b58`, `05a6433d`, `5672620a`. G1/G2: Q-72, Q-77. | Audit help names a missing audit prompt. Manifest ships kickoff and review only. Optional restoration is unimplemented. P1, P7. | keep later | Design a compact audit prompt under 4 KiB as an optional module. Remove the stale CLI help reference now. | +| D-082 | Backlog rather than immediately fix the fact that --json is ignored in legacy --resume mode. | Messages `c7ed14a1`. | Status resume returns before JSON serialisation, so the accepted flag is ignored in this legacy path. Still shipped. P5. | reject | Remove `status --resume` and its ignored `--json` behaviour with the staged legacy cleanup instead of repairing the obsolete mode. | +| D-083 | Replace plan-review agents with one human approval for planning prose. Retain independent review for product code, tests, packs, and shipped docs. | Messages `1b8659f7`, `4a518ba4`, `40557b0a`. G1/G2: Q-47, Q-78. | Shipped guidance prohibits planning loops and allows only one fix. Fresh permission is prospective and does not rewrite these contracts here. P4. | revise | Allow optional, explicitly authorised planning-review loops with human-approved remit, correction scope, total dispatch budget and cycle ceiling. All phases count. Unused budget grants no authority. Stop for human choices, expansion, inadequate evidence or exhausted limits. Favourable review does not approve implementation. | +| D-084 | Select frozen obligations with sealed phase campaigns and a high serious floor for a proof, then preserve that proof branch paused and unmerged. | Messages `1037f55b`, `6ddb50d9`, `66cb41fa`. G1/G2: Q-86, Q-88, Q-89, Q-90, Q-91, Q-92, Q-93. | Historical proof branch remains paused and unmerged at d02fa3c8. Preservation is not production adoption. G4. | already satisfied | Preserve Option B at d02fa3c8 as paused, unmerged history. Import no rules. Any reuse needs a separately approved purpose and examination against current requirements. | +| D-085 | Treat the Rust product as salvageable, the old workflow as failed, and perform a reversible minimal reset without push or publication authority. | Messages `61fdc851`. | Minimal scaffold, bounded work and projections are delivered. No formal verdict establishes all original salvage conditions. P1, P3, P9. | already satisfied | Retain the delivered reset baseline without a formal salvage-test verdict. Identify superseding decisions without claiming every original condition passed. | +| D-086 | Use preflight after session loss, edited session copies, selective memory promotion, nushell-aware commands, and a dedicated Claude profile. | Messages `0392d71f`, `5a9e54c5`, `f56e6da0`. | Personal Pi, shell, session, questionnaire and authentication settings are outside product scope. No questionnaire task is selected. P4. | reject | Keep personal harness, shell, session, questionnaire, and authentication preferences outside the agent-flow product. This does not reject or delete their separate machine configuration or history. | +| D-087 | Use a defined reviewer and triager severity scale and a threshold for the dismissed-finding guard. | G1/G2: Q-7. | Historical log severity guard is not default state. Current review prompts still use four impact labels. They are not the selected future routing classes. P4, P5. | reject | Leave the historical four-level severity threshold and dismissed-finding arithmetic retired. Use direct triage routing classes for controller transitions. Optional impact descriptions in human reports cannot move the machine. | +| D-088 | Target structured machine sources with human projections and prefer architecture over compatibility. The exact broad scope remained open while later choices selected a full plan skeleton. | G1/G2: Q-43, Q-44. | Q-44 stayed open despite decided pilots. Current bounded state is a narrow implementation, not the newly selected Mealy-machine architecture. G1, P3. | revise | Define a bounded Mealy-machine state architecture with human and agent projections. Do not restore the old full-plan implementation. | +| D-089 | Unresolved: whether proactive converge-now is a new record type, a broadened escalation, or a documented overload. | G1/G2: Q-56. | Q-56 was open with conflicting proactive-closure records. Legacy log code remains, but no retrospective answer is inferred. G1, G3, P5. | reject | Retire Q-56 with its ambiguity intact. Invent no retrospective answer, legacy record type or waiver rule. New controller events need separately authorised design. | +| D-090 | Make round records structured-first, project human ledger prose, and keep transient prose separate. The source and projection mechanism remained undecided. | G1/G2: Q-68. | Q-68 chose structured-first direction while mechanism stayed exploring. No active ledger remains. G1, P4. | reject | Retire the unfinished structured review-ledger redesign. Do not restore the ledger, prose resume section, clean-streak machinery, or generated round narrative. Preserve the single-source principle through bounded backend execution state and projections, distinct from final reports. | +| D-091 | Unresolved: whether the orchestrator or planner authors an exploring Open-Questions item and how isolation-policy authority applies. | G1/G2: Q-69. | Q-69 stayed exploring with withdrawn options. Planner-specific queue editing is absent from current default guidance. G1, P4. | reject | Retire Q-69 and its withdrawn old-plan authorship options unresolved. Define creation, proposal and approval permissions for new exploration records/backend roles only in separately approved design. | +| D-092 | Unapproved proposal: represent plan umbrellas and non-contiguous membership as typed data with projected group runs. Seven design defects remained. | G1/G2: Q-79. | Q-79 remained exploring with an unaccepted umbrella design. No umbrella schema in bounded work. G1, P3. | reject | Retire the unapproved old umbrella schema and rendering design. Restore no umbrella tables, positional headings or sidecars and add no grouping requirement. Future bounded-work or visualisation scope may justify grouping separately. | +| D-093 | Reset counters after a human-directed rebuild but inherit the prior risk class unless scope narrowed. | G1/G2: Q-80. | Q-80 was decided for old rebuild counters. Current work has neither classes nor resettable execution accounting. G1, P3, P5. | reject | Retire risk-class inheritance and resettable rebuild counters. Scope changes terminate execution. Redirected work needs linked separate approval citing prior findings, spend and reason. | +| D-094 | Make the declared plan increment risk class authoritative and require every round snapshot to match it. | G1/G2: Q-83. | Plan class fields exist, but legacy W3 checks round consistency, not declared-class agreement. Legacy next also derives class from rounds. P5. | reject | Remove the authoritative legacy risk-class fields and matching validation with their owning plan and workflow implementation. Keep one authoritative source for live state without preserving a field after its mechanism is removed. | +| D-095 | Let executable selectors, not copied counts, define the legacy sidecar cleanup worklist as approved edits changed membership. | G1/G2: Q-84, Q-87. | Historical Q-84/Q-87 selector decisions concern deleted sidecars. Their dated 18/17-member observations are not live worklists. G1, P9. | already satisfied | Preserve Q-84/Q-87 as historical selector-defined cleanup only. Counts are dated observations, not requirements. Deleted sidecars imply no new cleanup, worklist or general policy. | +| D-096 | Capture review-loop mechanisms immediately but defer the then-unrun study of whether structured planning caused, coincided with, or followed delivery slowdown. | G1/G2: Q-76, Q-85. | Post-reset investigation is completed but uncorrected. Its independent critique disputes grades, counts and causal ranking. No corrected final report is preserved yet. See disputed evidence above. | keep now | Select bounded correction and preservation after revalidation. Verify the critique against preserved evidence, incorporate supported corrections into one sanitised final report, keep unknowns and distinguish old controls from new controller choices. No new experiment or raw files. This does not select a work-file action. | +| D-097 | Keep AGENTS.md and prompt copies aligned with pack rendering through normalised deterministic drift checks. | Messages `b045db2d`, `80045810`, `3df7c177`. G1/G2: Q-64. | Drift tests re-render selected generated guidance and tolerate reflow. Extra committed assets and some cross-line semantics remain outside the guarantee. P8. | already satisfied | Retain scoped guidance-drift tests, reflow tolerance and explicit limitations. Maintain affected coverage with product changes. Independent review judges meaning. No separate hardening task. | +| D-098 | Delete unused plan and exploration directories after preserving designated audits in Git history. | Messages `ee8929ef`. | Historical cleanup removed active planning/exploration directories. Preserved Git sources and designated audits remain. G1, G4, P9. | already satisfied | Retain removal of obsolete planning and exploration directories as historical closure. Keep designated audits and Git history. This decision authorises no new deletion or restoration. | +| D-099 | After proving they held no unique work, drop the 38 parked formatter-reflow stashes. | Messages `d0abab30`. G1/G2: Q-57. | Historical record reports authorised deletion of 38 reflow stashes. No current product state depends on them and no deletion is repeated. Message d0abab30. | already satisfied | Record the explicitly authorised deletion of 38 formatter-reflow stashes as a one-time historical closure. It grants no current deletion authority and does not change the rule to preserve discarded work in stashes. | +| D-100 | Ship a commented ripgrep ascii-clean example in the seeded default checks pack. | Messages `a4ac787a`, `8a72bcf1`. G1/G2: Q-38. | Commented ASCII example is absent from pack/checks.toml. The active repository pack-ascii row remains separately present. P6. | keep later | Retain restoration of a small portable opt-in ASCII-check example under separately approved scope. Do not enable it by default for other projects. Keep it distinct from this repository's retained active pack-ascii check. Any issue title and scope need separate approval. | + +## Follow-up decisions + +These fourteen entries are fresh refinements from the same authoritative human record, not missing pre-reset clusters. Their ids are intentionally non-contiguous. Each scope below is the actual human choice, subject to the report-wide authority boundary. + +| Id | Subject | Fresh disposition | Approved direction and scope | +| --- | --- | --- | --- | +| D-101 | Granular legacy compatibility assessment | revise | Assess legacy plan, metrics, ledger, and resume readers granularly from evidence. Remove parts only when truly unused. Keep containment while any reader remains. | +| D-103 | Parallel implementation | keep later | Design for parallel implementation later with per-step isolation, briefs, dependency readiness, and result integration. | +| D-104 | Flake description accuracy | keep now | Align the flake description with the reviewed Cargo and GitHub product description. | +| D-105 | Existing image and smolvm proof | keep later | Approved agent-images issue https://github.com/nothingnesses/agent-images/issues/154 to test one existing image with `smol-machines/smolvm` before any image output change. | +| D-106 | Legacy-only custom-pack hooks | reject | Remove automatic legacy plan rendering and old workflow placeholders while retaining generic custom-pack assets, variables, modules, principles, and ownership. | +| D-110 | One sealed execution budget | revise | Provisionally use one sealed total agent-dispatch budget for every authorised phase in an execution, including planning when approved. A cycle ceiling is required when a loop is authorised under D-115 or D-083. Resolve parallel reservation, durable external state, cross-machine continuation, and fresh-context handoff before implementation. Dispatch limits alone do not bound time or tokens inside a worker. Enforcement remains unproven until a bounded contract and executable tests establish it. | +| D-111 | Human-approved budget proposal | revise | Before each bounded execution, the orchestrator proposes a structured budget from stated scope, risk, tests, affected behaviour, expected files, prose, and uncertainty. The human approves or changes it. Do not use an uncalibrated table or formula. | +| D-112 | Fix as a resumed writer phase | revise | Resume the implementation worker for scoped fixes when possible. Treat fixing as a restricted writer phase, not a permanently separate agent identity. If resumption is unavailable, the orchestrator can start a fresh implementation worker with the triage verdicts and fix boundary. | +| D-113 | Reviewer resumption for verification | revise | Resume one original independent reviewer for focused verification by default. Start a fresh verifier only when no reviewer can resume or the approved budget explicitly requires another perspective. | +| D-114 | Triage routing instead of severity thresholds | revise | Use direct triage routing classes instead of severity thresholds. Triage must reproduce and adjudicate each finding, verify validity and scope against accepted criteria and project constraints, and assign AUTO_FIX only to a bounded correction already authorised by those criteria. Every valid residual blocks automatic acceptance. Route ambiguity, low residuals, material choices, insufficient budget, unsafe work, and scope conflicts to the human. | +| D-115 | Cycle-capped focused review loop | revise | Use a cycle-capped focused review loop. After verification reports a possible defect, independent triage adjudicates it. Resume the implementation worker and an original reviewer only for AUTO_FIX findings while the sealed total dispatch budget and cycle ceiling permit. All other outcomes stop automation. | +| D-116 | Pilot within complete deliveries | revise | Run the three-change reviewer pilot inside normal bounded product deliveries. Approve one complete total dispatch budget and optional cycle ceiling for each delivery. Treat the twelve calls as the derived maximum for three initial reviewers and up to one initial triager per change, not as a second runtime budget. | +| D-117 | Calendar expiry for the pilot | revise | When the first pilot delivery starts, the orchestrator proposes a calendar expiry from the expected product cadence and the human approves or changes it. Stop at the earlier of three terminal enrolled deliveries or that expiry. Preserve a bounded partial aggregate report if the pilot expires early. | +| D-118 | Personal no-Fable preference | revise | Retain the personal request not to select Fable for the human's work. Keep this preference outside agent-flow product rules. It does not restrict supported providers or change the prohibition on Claude maximum effort. | + +## Verification boundary and unresolved risks + +Only this product file changes. Local checks cover primary ids, dispositions, ASCII, size, tables, local links and Git objects. They do not certify independent approval or semantic correctness. Independent product review follows. + +Shared Git metadata is read-only in the author container and its registered-worktree filesystem view is incomplete. The author therefore does not run agent-flow checks or just ci here, because current checks cleanup can prune shared metadata. The orchestrator will run just ci on the host against this result as part of the author pass. That host result is not asserted by this report. + +The 64 KiB constraint is for this draft, not a new product limit. Unresolved risks remain backend enforcement, unknown external legacy usage, uncalibrated pilot budgets/effectiveness and disputed causal evidence. A disposition label resolves none of them.