fix: block scalars in sequence items, and make /codecarto-next's flags discoverable - #216
Merged
Merged
Conversation
#211's fix landed on mapping values (`key: >-`) and not on sequence items (`- >-`), and the second is the shape an LLM reaches for when writing a list of prose entries — a `decisions:` list with one folded entry per decision. A real run hit it the same day 0.19.3 shipped. The architecture phase ran 25 turns and 73 tool uses, wrote a PASS WITH GAPS artifact, and auto-completion then died on `Invalid YAML indentation near: The architecture map treats the legacy filesystem pipeline…`. The phase stayed pending, the dashboard showed 0/7 with the artifact and token usage recorded beside it, and the auto run stopped one phase in. `- |-` was never supported either, so this is less a regression from #211 than a hole it left. The block-scalar body reader is now one shared routine called by both the mapping and sequence paths, rather than logic inlined in one of them, so the two cannot diverge again. Verified against the handoff that actually failed: 2 decisions, 4 carry_forward entries and 2 open questions now parse. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
--auto and --llm-steer are independent — one decides how many phases run, the other decides what prompt each gets — and the combination that suits most full runs, --auto --llm-steer, was not guessable. The completion list showed four bare flag names, and the command description listed the same four again. Completions now carry a sentence each; AutocompleteItem.description existed all along and every codecarto command was passing label === value and nothing else. --strict is offered only once --auto is present, rather than suggesting the one combination the parser rejects. /codecarto-init names the full-run command at the moment someone needs it. The Pi guide addendum documents all four flags with a table of the four sensible invocations, and tells the agent to volunteer that command after an init instead of waiting to be asked. It also pre-empts two things that read as failures and are not: the first phase is never steered because there is no closeout to steer from, and a stopped auto run explains itself in its summary block rather than in the phase result. Verified live: asked "I just ran /codecarto-init. What now?", the model now leads with /codecarto-next --auto --llm-steer, explains what steering buys, and volunteers that the first-phase skip message is normal. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This was referenced Sep 10, 2026
Merged
Merged
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.
Two changes from one report: an auto run that stopped after phase 1 without the user knowing why, and flags nobody could be expected to guess.
1. #211 was not actually finished
The fix shipped in 0.19.3 covered mapping values (
key: >-) and not sequence items (- >-) — and the second is the shape an LLM reaches for when it writes a list of prose entries:A real run hit it the same day 0.19.3 shipped. The architecture phase ran 25 turns and 73 tool uses, wrote a
PASS WITH GAPSartifact — validation confirmsPASS WITH GAPS, 6 rows, no gaps, no errors — and then auto-completion died on:So the phase stayed
pending, the dashboard showed 0/7 with the artifact and token usage recorded beside it, and the auto run stopped one phase in.- |-was never supported either, so this is less a regression from #211 than a hole it left.The block-scalar body reader is now one shared routine called by both the mapping and sequence paths, rather than logic inlined in one of them — that divergence is what caused this. Verified against the handoff that actually failed: 2 decisions, 4 carry-forward entries and 2 open questions now parse.
Four new tests cover sequence folding, sequence literals, chomping on sequence items, siblings surviving after a block item, and a block scalar nested in a sequence item's mapping.
2. The flags now explain themselves
--autoand--llm-steerare independent — one decides how many phases run, the other decides what prompt each gets — and the combination that suits most full runs was not guessable from a completion list of four bare flag names plus a description that listed the same four again.AutocompleteItem.descriptionexisted all along; every codecarto command was passinglabel === valueand nothing else.--strictis offered only once--autois present, instead of suggesting the one combination the parser rejects./codecarto-initnames the full-run command, at the moment someone needs it.No default changed.
--autoruns the whole pipeline unattended and spends real money; making it implicit would be a worse surprise than an undiscoverable flag.Live check
Asked "I just ran /codecarto-init. What now?" after reading the framed guide, the model now answers:
npm run buildclean, 688/688 tests pass.🤖 Generated with Claude Code