v4.3.0: structured files[] schema in plan/ship task metadata - #64
Merged
Merged
Conversation
`metadata.files` moves from `["path:line"]` strings to typed
`{path, symbol, line, op}` entries with op ∈ {add, modify, replace,
delete}. Plan-time LSP already resolved the symbol — we just stopped
throwing the name away before TaskCreate. Subagents in /code:ship
skip rediscovery grep on cold start; deletion of superseded code is
now an explicit op:delete entry instead of prose buried in rationale.
Plan validates each path against `git ls-files` (modify/replace/delete)
or FILE-REFERENCE.md modules (add) before dispatch. Ship renders entries
as `- <op> <path>[:<line>] → <symbol>` in the dispatch prompt.
Net: ~280 extra tokens/plan, 15-45k saved per /code:ship dispatch.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 tasks
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.
Summary
metadata.filesmoves from["path:line"]strings to{path, symbol, line, op}entries (op ∈ add | modify | replace | delete)./code:planintoTaskCreate; subagents in/code:shipskip rediscovery on cold start.git ls-files(modify/replace/delete) orFILE-REFERENCE.mdmodules (add); deletion of superseded code is now an explicitop:deleteentry rather than prose underrationale.Why
The "LSP for symbols" rule already resolved each acceptance criterion to a qualified Rust symbol — we just dropped the name before
TaskCreate. Implementer subagents then re-grepped for what the orchestrator already knew. On an 8-task ship run, ~15-45k tokens of pure rediscovery. Cost of the change: ~280 extra tokens per plan. The contract issymbol(drift-tolerant);lineis a hint.Files
code-et-implementer/commands/plan.md— LSP persistence + path validation + newfiles[]schema with per-field tablecode-et-implementer/commands/ship.md— dispatch prompt renders each entry as- <op> <path>[:<line>] → <symbol>code-et-implementer/CLAUDE.md— task metadata convention example updatedcode-et-implementer/.claude-plugin/plugin.json— 4.2.3 → 4.3.0CHANGELOG.md— 4.3.0 entryTest plan
/code:planon a small feature; confirm tasks land with structuredfiles[]entries and the task-created hook still passes/code:shipagainst the resulting tasks; verify subagent prompts contain the- <op> <path> → <symbol>renderingmodifyentry against a path not ingit ls-files🤖 Generated with Claude Code