Repository navigation
Haiku cards: read every file in full; a brief caps the search space, never the reading depth - #108
Conversation
…e, never the reading depth Haiku tokens are cheap enough that reading is the default, not a cost to manage. Each card gains a "Read in full" section: every reported file is read to its last line, a search hit is only where to read, a brief that caps reading depth is overridden and noted, and a file only scanned is listed as unread (status PARTIAL). harvest-scout now marks each hit match or substring (clamp vs CLAM); census-counter cross-checks counts by reading; spec-editor re-reads after editing; guarded-executor reads complete outputs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Warning Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Each card gains an "Output is capped; reading is not" section. Reading stays unbounded; a response has an output cap the worker cannot see, so a long map or reply written in one call can be cut off silently. substrate-mapper writes long maps as numbered parts and re-reads the end of each part; the reply-only cards stop at a whole item, report PARTIAL and list what remains, so the orchestrator splits the brief instead of asking for shallower reading. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
128k tokens per response at the API against a 1M context; the harness may set a lower per-response cap. A 12,255-word map came through one Write intact, so the split threshold rises from ~4,000 to ~10,000 words. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
Thinking tokens count toward the 128k output limit, so a long Write after heavy thinking is the case the split rule protects. The protocol note now cites "What's new in Claude Haiku 5.5" and records the three facts that matter for subagent runs: earlier thinking blocks stay in context, the same text counts as about 30% more tokens, and long prompts use long-context pricing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: bcbdb230c7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| - For each file, state whether you read it in full: | ||
| `read: <path> (<n> lines, full)`. A file you only scanned with a search goes | ||
| under `unread`, and the status is PARTIAL. |
There was a problem hiding this comment.
Add full-read states to the exact reply schema
For any search that returns a hit, these lines require a read: record, and an incompletely read file requires both unread and PARTIAL; however, the card's mandatory “exactly this” reply schema provides neither read nor unread and permits only DONE, CAPPED, or BRIEF-INCOMPLETE. The agent therefore cannot satisfy the new full-read contract without violating its output contract, making read completeness impossible for the orchestrator to verify. The same shared boilerplate should be reconciled with each affected card's exact reply format.
Useful? React with 👍 / 👎.
| - Never write a long map in one call. Past about 10,000 words, split it into | ||
| numbered parts next to the output path (`<stem>.part01.md`, | ||
| `<stem>.part02.md`, ...), one Write per part. Each part is a run of whole | ||
| sections; never split a section. |
There was a problem hiding this comment.
Preserve the mapper's declared output-path contract
When a map exceeds the stated threshold, this directs the agent to replace the caller-supplied output file with sibling partNN files. That conflicts with the card description and brief, which promise one map at the exact named path, while the mandatory reply format still accepts only one map: path; an orchestrator following that interface can consequently try to read a file that was never created. Either keep a manifest at the requested path or update the complete caller/reply contract to represent multiple outputs.
Useful? React with 👍 / 👎.
Haiku tokens are cheap enough that reading every file in full costs effectively nothing. So reading is the default for the Haiku cards, not something a brief rations. This is the same change as in lance-graph, applied to tesseract-rs's six cards.
What changed in each card:
read: <path> (<n> lines, full);unread, and the status becomes PARTIAL.harvest-scoutmarks each hitmatchorsubstring;census-countercross-checks each command count by reading the files;quote-harvesterreads the whole file;spec-editorre-reads the file after editing;guarded-executorreads complete command outputs, never just their tail.Generated by Claude Code