Skip to content

Haiku cards: read every file in full; a brief caps the search space, never the reading depth - #108

Merged
AdaWorldAPI merged 4 commits into
masterfrom
ccr-9f3b8075-74u47l-haiku-read-in-full
Oct 17, 2026
Merged

AdaWorldAPI merged 4 commits into
masterfrom
ccr-9f3b8075-74u47l-haiku-read-in-full

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

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:

  • A new "Read in full" section:
    • every file a card reports on is read with the Read tool, to its last line;
    • a grep or glob hit only says where to read;
    • a brief that asks for part of a file is overridden, and the override is noted;
    • each file is reported as read: <path> (<n> lines, full);
    • a file that was only scanned goes under unread, and the status becomes PARTIAL.
  • Per-card additions:
    • harvest-scout marks each hit match or substring;
    • census-counter cross-checks each command count by reading the files;
    • quote-harvester reads the whole file;
    • spec-editor re-reads the file after editing;
    • guarded-executor reads complete command outputs, never just their tail.

Generated by Claude Code

…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
@coderabbitai

coderabbitai Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 2ccb18f0-2920-4cce-b9a4-3df82749b237
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

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
@AdaWorldAPI
AdaWorldAPI marked this pull request as ready for review October 17, 2026 11:14
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-17T11:16:04.184960Z bcbdb23 Draft marked ready
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@AdaWorldAPI
AdaWorldAPI merged commit 7cbc969 into master Oct 17, 2026
3 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment on lines +31 to +33
- 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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Comment on lines +47 to +50
- 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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants