fix: batching-stack review round — re-resolve rewired, guards symmetric, hardening pinned#512
Merged
Conversation
This was referenced Jul 22, 2026
Merged
leeovery
force-pushed
the
feat/engine-commit-plan
branch
from
July 23, 2026 11:04
48888b0 to
0291b9b
Compare
leeovery
force-pushed
the
feat/batch-review-fixes
branch
from
July 23, 2026 11:05
e78fb09 to
465e63d
Compare
leeovery
force-pushed
the
feat/engine-commit-plan
branch
from
July 23, 2026 12:29
0291b9b to
6858ac8
Compare
leeovery
force-pushed
the
feat/batch-review-fixes
branch
from
July 23, 2026 12:29
465e63d to
bcfa71a
Compare
leeovery
force-pushed
the
feat/engine-commit-plan
branch
from
July 23, 2026 12:30
6858ac8 to
c1131d4
Compare
leeovery
force-pushed
the
feat/batch-review-fixes
branch
from
July 23, 2026 12:30
bcfa71a to
91c594a
Compare
leeovery
force-pushed
the
feat/engine-commit-plan
branch
from
July 23, 2026 12:31
c1131d4 to
e45dac4
Compare
leeovery
force-pushed
the
feat/batch-review-fixes
branch
from
July 23, 2026 12:31
91c594a to
2a4b3ef
Compare
leeovery
force-pushed
the
feat/engine-commit-plan
branch
from
July 23, 2026 12:32
e45dac4 to
2e680d8
Compare
leeovery
force-pushed
the
feat/batch-review-fixes
branch
from
July 23, 2026 12:32
2a4b3ef to
8e552b1
Compare
leeovery
force-pushed
the
feat/engine-commit-plan
branch
from
July 23, 2026 12:32
2e680d8 to
9da8502
Compare
leeovery
force-pushed
the
feat/batch-review-fixes
branch
from
July 23, 2026 12:32
8e552b1 to
4fc6f7b
Compare
…ning pinned
Six-slice review (harvest, spec-entry, task-map, engine code, tests,
conventions), findings adversarially verified. Fixes:
- MAJOR resolve-dependencies: the stale-reference re-resolve bullet was
orphaned by the working-list swap — its corrected internal_id never
persisted. Now feeds the working list like its siblings.
- MAJOR write-tasks: the batched set's prelude never derived
storage_paths; now names the authoring.md section and the []
convention like initialize-plan.
- Empty-batch guards made symmetric: brief-synthesis cleanup and
summary-backfill skip the apply when nothing collected (an empty
payload is a loud error by design); Write-tool instructions moved
before their fences; display-groupings unify gets its own
unify-ops.json (no stale reconcile-ops reuse) and an explicit write
instruction.
- process-review-findings: the file-level raw-git commit rule (missed
by both earlier sweeps) swaps to commit --plan; stale per-ID wording
updated.
- Restart cleanups: {storage_paths} expansion guidance ([".tick/"] →
.tick/; [] → nothing extra).
- confirm-and-persist: stale "no separate name field" note corrected.
- commands.md: authoring-log (D7) markers stripped from product prose.
- Engine: dangling --plan is a usage error; present-but-malformed
storage_paths gets its own message (never the pre-upgrade hint);
add-batch refuses non-string names.
- Tests: validateStoragePaths via set AND apply (was untested on both
write paths), same-item set-then-delete order, --plan misuse matrix,
multi-path staging, repair-hint text pin, non-string batch name.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The restart-cleanup expansion example named a specific format's storage path (with literal escape artifacts) in two SKILL backbones — against the never-list rule. Generic wording instead. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Review catch (Lee): the declarations were ad-hoc one-liners with no defined shape. Now every format carries the same structure — the shared definition (what the field is, where it flows: recorded verbatim as storage_paths at plan init, staged by commit --plan and the restart cleanups), a fenced json array whose value flows verbatim into the manifest, and one format-specific sentence. The create-output-format contract specifies the structure for future formats; the scaffolding template carries it; both consumers point at the fenced value with "copy exactly". Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… never named outside its directory Lee: first-use approval / auto mode covers the CLI; the permission pre-grant named a format outside its own directory, against the never-list rule. Eleven SKILL frontmatters cleaned; only the word "backticks" and "ticket" remain as innocent matches. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
leeovery
force-pushed
the
feat/batch-review-fixes
branch
from
July 23, 2026 12:33
4fc6f7b to
3793e7a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The end-of-stack review round as its own PR (design log: #504; base: #510) — six slices (harvest, spec-entry, task-map + commit-plan, engine code, test adequacy, conventions), every finding adversarially verified before fixing.
Majors
internal_idhad no persistence path and silently never landed. Now feeds the working list like its sibling cases.storage_pathswithout deriving it anywhere (the siblinginitialize-planhad the derivation) — a guaranteed loud failure at the next--plancommit. Prelude now names the authoring.md section and the[]convention.Minors
applywhen nothing collected (an empty payload is a loud error by design); Write-tool instructions moved before their fences.unify-ops.json— no stale reuse of analysis-flow'sreconcile-ops.json— plus an explicit write instruction.process-review-findings's file-level raw-git commit rule (missed by both earlier sweeps) swaps tocommit --plan; stale per-ID wording updated.{storage_paths}expansion guidance ([".tick/"]→.tick/;[]→ nothing extra).(D7)markers stripped from commands.md product prose.--planis a usage error; present-but-malformedstorage_pathsgets its own message (never the misleading pre-upgrade hint);add-batchrefuses non-string names.Tests
validateStoragePathswas untested on both write paths (deletable with everything green) — now pinned viasetand viaapply; plus same-item set-then-delete op ordering, the--planmisuse matrix, multi-path staging, the repair-hint text, and non-string batch names. Gates: 1568/1568 node · shell suites · lint 27/27 · typecheck.🤖 Generated with Claude Code
Stack