Repository navigation
Token-lanes carrier: role-matched blocks name only the lanes each agent's allowlist grants - #447
Conversation
…st grants The SubagentStart hook sent one 4,094-byte block naming 17 MCP tool ids to every non-blind child, so 7 of the 8 shipped non-blind roles were told to load tools their `tools:` allowlist does not grant. The hook now maps the exact agent_type to a checksum-pinned sibling block: - stack-researcher, stack-verifier, evidence-reviewer and security-reviewer (shared), isolated-builder and source-scout get role blocks built from the default block's lines, with variants for ungranted ids; - semantic-evidence-reviewer joins the blind roles at 0 bytes; - every other type keeps token-lanes-block.md unchanged. No agent body or grant changes (five bodies stay sealed for #381). A new grant-agreement test fails first on 7 of 10 allowlisted agents with the old hook. Handbook, carrier and role-dispatch decisions, bootstrap and the workflow contract state the per-role mapping; bootstrap now counts eleven agent files. The harness-defaults anti-pattern log records the mistake. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
|
Handoff for the Gate A / A3 owner (token-stack-e2e-proof isn't reachable as a live session right now):
🤖 Generated with Claude Code |
Nine wording repairs from the #447 review; no hook, block, SHA256SUMS or test change: - bootstrap and the Supersedes paragraph exclude the silent semantic-evidence-reviewer from "receives the block"; - the anti-pattern row and the role-dispatch addendum scope the mismatch to the non-blind allowlisted roles (7 of 10; 5 to 17 ids by role); - the researcher mismatch row names both skills, the workflow README cite moves to L494, and the handbook lists which tools the grant-agreement test checks (a prohibited tool such as WebFetch is not); - Overturn states what the grant-agreement test does not catch (new grants, disallowedTools), and Limitations records that the name map also matches a same-named agent in any other project. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…hange Hot-file commit per docs/lanes.md: main's manifests/evidence.json at ed3cd96 with this branch's 16 changed or added files re-registered through host_receipts.register_file, including the five docs the #447 repair round edited; the component matrix and new-host grand list --write runs changed nothing. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
769c71d to
e5bb686
Compare
|
Review round 1 (Claude evidence reviewer, Claude security reviewer, GPT-6 gpt-6-astra at effort max, runner exit 0):
Recorded follow-ups, not in this PR (both predate it):
🤖 Generated with Claude Code |
|
Merged and reinstalled (coordinator token-save-practice-e2e-status):
🤖 Generated with Claude Code |
…er (#447), CT-7 cache reason scoped MI-7 now gives each SubagentStart carrier block measured at f508ffb, notes that native acceptance covers Agent-tool children only, re-measures MEMORY.md, drops the unsourced imported-files clause and re-measures after AN-15 (review findings F1, F5). CT-7 keeps the natural-break endorsement and ties the cache-lifetime point only to compacting before stepping away (F8). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
… complete inventory, audit run conditions The record notes the rebase onto f508ffb, hands AN-15 off to the token-lanes owner with its two carrier lines, and adds a carrier status line (review finding F1). The 2026-09-24 tests and adoption rules still apply except M7's automatic lowering and M9's reset wait, and M1 and M6 quote their standing rules (F2, F3). A10 is handed off, terminal_bell is host scope and AN-03 names the practice page (F4). The -p JSON rows say the array shape comes from the binary read and the fixture (F6). The PreCompact audit carries its scratch-state conditions in the record and the cleanup addendum (F7). M47 adds only the missing mode flag (F9). The CLAUDE.md timing note names the omitClaudeMd roles instead of every non-blind child. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…er (#447), CT-7 cache reason scoped MI-7 now gives each SubagentStart carrier block measured at f508ffb, notes that native acceptance covers Agent-tool children only, re-measures MEMORY.md, drops the unsourced imported-files clause and re-measures after AN-15 (review findings F1, F5). CT-7 keeps the natural-break endorsement and ties the cache-lifetime point only to compacting before stepping away (F8). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
… complete inventory, audit run conditions The record notes the rebase onto f508ffb, hands AN-15 off to the token-lanes owner with its two carrier lines, and adds a carrier status line (review finding F1). The 2026-09-24 tests and adoption rules still apply except M7's automatic lowering and M9's reset wait, and M1 and M6 quote their standing rules (F2, F3). A10 is handed off, terminal_bell is host scope and AN-03 names the practice page (F4). The -p JSON rows say the array shape comes from the binary read and the fixture (F6). The PreCompact audit carries its scratch-state conditions in the record and the cleanup addendum (F7). M47 adds only the missing mode flag (F9). The CLAUDE.md timing note names the omitClaudeMd roles instead of every non-blind child. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…ead-back, weekly reference freshness lane (#453) * Profile: session context commands, effort pins, fast mode and bypass condition Adds the 2026-09-27 review's operator guidance to the Claude native profile: compaction at a natural break with a focus (prompt-caching, context-window docs), rewind/name/summarize/btw commands with checkpoint limits (checkpointing, sessions, interactive-mode docs; CHANGELOG 2.1.32 and 2.1.141 at anthropics/claude-code@7779afb), what the xhigh pins decide for Opus 5.5 (prompting and effort platform docs, model-config and settings-reference), fast mode as a per-session choice (fast-mode docs, fastModePerSessionOptIn), the documented bypass-mode condition this host runs outside (permission-modes and devcontainer docs), plan-mode non-enforcement under bypass, print-mode trust and settings-validation behaviour and --bare (installed claude --help, 2.1.283), and the corrected child-model parenthetical (claude-harness-settings item 1). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Harness rules record: dated supersessions, CT-7 timing, ORCH-03 hazard, cacheTtl erratum, PERM-03 correction - DS-3 and DISP-01: superseded model/effort text marked in place (max-effort default 2026-09-23; claude-harness-settings item 1), original rule quoted, following the WH-3 precedent. - CT-7: timing half primary-endorsed (prompt-caching docs) and adopted as operator guidance; the constraint-loss claim keeps its test. - ORCH-03: any CLAUDE_CODE_EFFORT_LEVEL value overrides child and stage effort; points to the complete never-set rule. - Key-name gap and utr-cache-ttl: experimental.cacheTtl erratum (anthropics/claude-code@7779afb CHANGELOG 2.1.248; sub-agents, prompt-caching and workflows docs). - PERM-03: dated correction of the stall rationale (headless and permission-modes docs); the rule stands. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * CLAUDE.md: Compact Instructions section, with a dated addendum to the cleanup record The project CLAUDE.md gains the documented "Compact Instructions" section (code.claude.com/docs/en/how-claude-code-works; memory: project-root CLAUDE.md is re-read after /compact; the 2.1.283 summarizer prompt carries the heading). The 2026-09-26 cleanup record's scope sentence is amended by a dated addendum that records the precondition audit of both installed PreCompact hooks (each prints {} and exits 0), the scope of the "only web-documented way" claim (in-product /hooks text documents PreCompact stdout) and the timing caveat for running sessions and #381 E2E runs. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Harness rules record: MI-7 note on the documented 200-line target, with measured sizes The memory and features-overview docs state a 200-line target per CLAUDE.md as guidance; the MI-7 rejection covers enforcing a line budget as a rule. Lines and bytes of every always-loaded file and the SubagentStart carrier are recorded after the Compact Instructions section landed (wc -l -c; host copies named by their generic location only). Budgets count bytes or tokens per A13 of the 2026-09-24 sweep. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Token docs: gateway tool-search caveat, main-conversation cache counters, proxy-arm control - foundation-stack: behind a non-first-party ANTHROPIC_BASE_URL, MCP tool search is off and tools load into the prefix; cache invalidation scoped per the prompt-caching table (connect, deliberate disable or deny invalidate; an unexpected disconnect keeps it since 2.1.281, anthropics/claude-code@7779afb CHANGELOG.md:207); ENABLE_TOOL_SEARCH and CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS per the mcp and env-vars docs. - token-practice: counters row for the /usage "Prompt cache (main)" line and the status-line prompt_cache object (costs, statusline docs; 2.1.251+, likely cause 2.1.260+; main conversation only), with child alternatives (child-usage.mjs, OTel claude_code.token.usage by query_source). - token-practice: proxy-arm control for measured comparisons (Headroom v0.27.0 study scope from the 2026-09-26 landscape sweep; hold tool search and TTL variables fixed; report cache creation and reads per arm). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Workflows README: advisor usage note with a count-only receipt, test-integrity brief clause, background-wait ceiling, SOTA references - Usage accounting: advisor calls are usage.iterations[] advisor_message entries outside top-level usage (platform advisor-tool docs, usage and billing), subagents inherit the configured advisor (advisor docs), and child-usage.mjs reads only top-level counters; complete usage from /usage; hold the advisor state equal across arms (CLAUDE_CODE_DISABLE_ADVISOR_TOOL). - New receipt evidence/receipts/claude-advisor-usage-scan-20260928.json: count-only scan of this host's transcripts (local observation), with its script, hash, synthetic-fixture control and scan time. - Brief contract: writers must not delete, skip, weaken, rewrite or special-case a test to pass it; report a wrong test with its failing output (platform prompting best practices, "Avoid focusing on passing tests"). - Adopt step 3: CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS for claude -p runs (env-vars docs; Claude Code 2.1.182 or later). - SOTA references section pointing to the 2026-09-27 review record. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Community sweep 2026-09-27: wave decision record, practice-page review section, dated pointers docs/decisions/2026-09-28-community-sweep.md merges both syntheses of the Opus 5.5 Claude Code practice review: applied items, amendments to M1-M3, M6-M9 and M14, keep-but-compare M15-M52, rejections R41-R79, consensus maps, closures, the 22 community pins with full SHAs, primary sources, not-covered lists, deferred, handed-off and host-scope items, and overturn conditions. docs/community-native-practice.md gains the 2026-09-27 review table, a dated checkpoint-limits correction to the Recovery row and a dated claude-hud note. The 2026-09-24 sweep and the max-effort record gain dated pointers. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * CLAUDE.md: Compact Instructions wording checked with the writing-for-agents skill The section now asks for each modified file's branch or worktree rather than the file list, which the 2.1.283 built-in summarizer prompt already requests ("examined, modified, or created"), and names each open claim's provenance. The cleanup addendum records the check, and MI-7 carries the new CLAUDE.md size. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Harness rules record: MI-7 carrier sizes after the role-matched carrier (#447), CT-7 cache reason scoped MI-7 now gives each SubagentStart carrier block measured at f508ffb, notes that native acceptance covers Agent-tool children only, re-measures MEMORY.md, drops the unsourced imported-files clause and re-measures after AN-15 (review findings F1, F5). CT-7 keeps the natural-break endorsement and ties the cache-lifetime point only to compacting before stepping away (F8). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Profile: fast-mode, dev-container and plan-mode wording scoped to the packet; compaction reasons separated; child-model roles Fast mode bills usage credits on subscriptions rather than drawing only on them; the dev-container sentence becomes a pointer; plan mode's unenforced block covers an attempted edit (review finding F5). The cache-lifetime reason now attaches only to compacting before stepping away, with the Opus 5.5 blog cited (F8). The child-model parenthetical names Opus for every shipped role but source-scout and dates only the isolated-builder and stack-verifier move (F10). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Token docs: gateway caveat and main-conversation cache row trimmed to their packet items The gateway caveat drops the proxy-forwarding cause, the request-failure claim and the stays-off claim, and names tool_reference through the proxy-arm control. The cache-counter row drops the field list, the query_source values and the OTEL_LOG_TOOL_DETAILS clause (review finding F5). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Workflows README: the test-integrity clause names the writer and drops the unverified quote The brief-contract clause now says what the writer must not do and what the writer reports, and links the prompting best-practices section without a quote the item packet does not carry (review findings F10, F5). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Community sweep record: carrier after #447, standing M1 and M6 rules, complete inventory, audit run conditions The record notes the rebase onto f508ffb, hands AN-15 off to the token-lanes owner with its two carrier lines, and adds a carrier status line (review finding F1). The 2026-09-24 tests and adoption rules still apply except M7's automatic lowering and M9's reset wait, and M1 and M6 quote their standing rules (F2, F3). A10 is handed off, terminal_bell is host scope and AN-03 names the practice page (F4). The -p JSON rows say the array shape comes from the binary read and the fixture (F6). The PreCompact audit carries its scratch-state conditions in the record and the cleanup addendum (F7). M47 adds only the missing mode flag (F9). The CLAUDE.md timing note names the omitClaudeMd roles instead of every non-blind child. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Harness rules record: MI-7 says where the carrier block goes The carrier sentence names the child's start context as the place the role-matched block is added (review finding F1 wording). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Community sweep record: the gateway overturn no longer presumes ENABLE_TOOL_SEARCH behaviour The overturn condition names a gateway shown to forward tool_reference blocks, matching the trimmed gateway caveat and the proxy-arm control (review finding F5). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Practice references catalog: pin the 2026-09-27 community sweep's 25 references catalogs/foundation/practice-references.json lists the 22 community repositories the sweep surveyed and the three upstream Anthropic repositories its syntheses cited as primary sources (anthropics/claude-code CHANGELOG.md, anthropics/claude-code-action v1.0.235, anthropics/claude-agent-sdk-python), each with its full-SHA pin, the pin's UTC committer date, stars at check (discovery metadata only), the dimensions it informed and the wave's decision record path. Sources: pins from the sweep's reference list, each resolved with `gh api repos/{repository}/commits/{pin}` on 2026-09-28 (all 25 resolve); used_for texts verbatim from the two syntheses' reference lists; dimension topics verbatim from their consensus maps; claude-code-action tags v1.0.235 and v1.0.233 read from its tag list. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Practice references freshness: report-only checker, offline tests and weekly workflow tools/sota-convergence/practice_references.py reports, per catalog repository through gh: archived; default-branch commits since the pin and the head SHA (GitHub REST compare, github/rest-api-description@c6721f32 commit-comparison schema); stale per the OpenSSF Scorecard Maintained check, archived or no default-branch commit in the last 90 days (ossf/scorecard@8788fc28 checks/evaluation/maintained.go:31,88-89, probes/hasRecentCommits/impl.go:52-57); renamed (repos/get 301) or missing. It imports fetch_repository, gh_api and is_expected_missing from github_freshness.py and unique_json from scripts/catalog_decisions.py. Exit 0 for any well-formed catalog; 2 only for a malformed catalog or an invalid argument, and then no report is written. .github/workflows/practice-references-freshness.yml runs it weekly (Thursday 06:41 UTC, off the hour and away from the Monday lanes' shared GITHUB_TOKEN budget) and on dispatch, with catalog-freshness.yml's conventions and exact action pins; it writes the Markdown table to the job summary and uploads the JSON report. The job fails only when the checker's offline tests fail or the catalog is malformed. tests/test_practice_references.py covers the fresh, drifted, stale-by-90-days, archived, renamed, missing, unresolved-pin and malformed-catalog cases offline, including observe() against a fake gh. tests/test_workflow_security_coverage.py lists the new workflow. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Practice references catalog: the claude-code harness use and the rejected security-review pin anthropics/claude-code gains the main synthesis's use of the same pin, verbatim from the sweep's references_main: "version facts 2.1.32 to 2.1.283 (prompt-audit, Opus 5.5 default, effort defaults, cacheTtl, summarize)" (ref https://github.com/anthropics/claude-code/blob/7779afb12e36/CHANGELOG.md). The earlier extraction matched only the owner/name@sha form and skipped this blob URL. anthropics/claude-code-security-review@0c6a49f joins as a primary reference: the supplement synthesis cites it by pin, used for "Rejected: README.md:45 warns it is not hardened against prompt injection.", and its rejection rests partly on staleness ("Stale: the last commit is 2026-02-11"), so the weekly lane now watches it. Read 2026-09-28 with gh: committer date 2026-02-11T18:01:23Z (pin_date 2026-02-11), stargazers_count 6276, the default-branch head equals the pin, and README.md:45 at the pin says the action "is not hardened against prompt injection attacks and should only be used to review trusted PRs". The scope sentence now says four Anthropic repositories and names the one pinned source left out on purpose: git/git at v2.43.0 is a git source tag, not a Claude Code practice reference. The committed-catalog test asserts 26/22/4 and both claude-code dimensions. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Practice references checker: gh status from gh's error line, records must exist, decision note Classification. is_expected_missing() tested "404", "not found" and "429" anywhere in the error text, and gh_api() returns a timeout as str(subprocess.TimeoutExpired), which quotes the command's path with both compared SHAs. A 60 s compare timeout whose SHA contained "404" was reported pin_unresolved, a "No commit found for SHA: ... (HTTP 422)" whose SHA contained "429" was reported fetch_error, and a repository timeout whose slug contained "404" was reported missing. gh_http_status() now reads the status only from gh's own error line, "gh: <message> (HTTP <status>)" or "gh: HTTP <status>" (cli/cli@0cf1092, tag v2.101.0, pkg/cmd/api/api.go:684-685 and :553-557). missing is a 404 on repos/{slug}; pin_unresolved is a 404 or 422 on the comparison (github/rest-api-description@c6721f32 api.github.com.json:55474-55483 document 404 and 422 beside 500 and 503). Everything else, timeouts included, is fetch_error. The regression tests failed against the previous code and pass now. Their gh strings are the ones gh 2.101.0 returned on 2026-09-28: "gh: Not Found (HTTP 404)" for a missing repository and for an unknown SHA on either side of a comparison, and "gh: No commit found for SHA: <sha> (HTTP 422)" for commits/<unknown sha>. Records. record_issues() requires each entry's record to be an existing file confined to the repository root: scripts/catalog_decisions.py's safe_file() (no symlink, no escape), the rule scripts/landscape.py's single_lane_decision_path_issue() applies to a single-lane record. main() applies it under --root, which defaults to the checkout. A missing record is a malformed catalog: exit 2 and no report. validate_catalog() stays pure, and the committed-catalog unit test stays format-only, because the wave's record, docs/decisions/2026-09-28-community-sweep.md, lands with the practice unit. Decision note. The module docstring now records the 2026-09-28 choice, the alternatives compared and the overturn condition. The alternatives are running the OpenSSF Scorecard Maintained check itself (ossf/scorecard@8788fc28 README.md:525-528, :387, :181-184; docs/checks.md:404-408), adding the repositories to the Monday catalog-freshness lane (fetch_repository() compares no pin) and having no scheduled check. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Practice references: index entries, wave-record note and the committed-records test The practice record and the reference catalog land together, so the committed catalog's records now exist and are asserted (load_catalog with root). The github-automation and foundation catalog indexes name the new weekly report-only lane. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Community sweep record: host items applied with read-back, jCodeMunch drift, handoffs; RTK five exclusions The approved host-scope items (AN-17, AN-18 and AN-19 host halves, AN-26, A09) and the install-audit gaps are recorded as applied, each with its read-back. The jCodeMunch user-scope drift against the 2026-09-25 addendum is recorded with its two options, owner decision pending. The SOTA-sources line is folded into #444, AN-13 stays open, and AN-15 lands as its own change. token-practice.md now counts the recipe's five exclude_commands entries. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Practice references checker: validate fields with fullmatch A repository, pin or record ending in a newline passed validation, because Python's "$" also matches just before a trailing newline (Codex review). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Community sweep record: host items cite a value-free read-back receipt; consistency fixes The host-scope items were stated as applied and read back without retained evidence (Codex review). A value-free read-back receipt now records them on this host: the deny set and two bypass-mode claude -p probes (git clean -fn denied; a force-with-lease dry run allowed), the ConfigChange log, the status-line export with a negative control on claude-hud 0.8.0's diff step, the bell, Headroom's no-egress env, agent-browser and QMD. Its live -p runs also returned the array shape. M31 no longer lists open-code-review, which M42 excludes, and the notifications row records A09 as applied. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Host read-back receipt: resulting state only, value-free booleans, AN-26 and verbose checked The Codex re-check found the host claims still wider than the receipt: the ConfigChange behaviour and the install actions were stated but not observed, AN-26 and verbose were unchecked, and refreshInterval was kept as a raw value. The receipt is re-recorded with booleans for refreshInterval, verbose and the two user CLAUDE.md phrases, object-only log-line parsing and Headroom's scope, and the record now separates the operator's account from what is read back. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Evidence manifest: re-register this change's files and add its two receipts Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> --------- Co-authored-by: Scout <scout@local> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
…l line (AN-15, after #447) (#456) * Token-lanes carrier: evidence line replaces the verification-skill instruction Default block line 13 now asks for evidence (the command and what it returned, or the file:line read) and keeps the search-first sentence: 4,094 -> 4,088 bytes against the unchanged 4,100-byte bound (AN-15). The builder block drops its verification sentence (2,883 -> 2,747 bytes): isolated-builder.md:7-9 preloads the skill and :12 names it. Sources: code.claude.com/docs/en/best-practices.md L52 (show evidence); platform.claude.com prompting-claude-opus-5.md L61, L81 (remove explicit verification instructions), prompting-claude-opus-5-5.md L9 (carried forward), claude-prompting-best-practices.md L780 (Opus 5 exception). Handbook mirror: carrier line, its sources paragraph naming only search-first, and the builder table row and variant. Tests: the default key phrase becomes "Show evidence before a success claim", the builder drops the skill phrase, and no block may name the withdrawn skill. SHA256SUMS refreshed for both blocks. No installer run. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Decision records: verification-line addendum and skills-trial carrier conditions Token-lanes decision, addendum 2026-09-28: why the default carrier line now asks only for evidence (Opus 5 guide L61, L81; Opus 5.5 guide L9; prompting best practices L780; Claude Code best practices L52), why the builder line is removed on its own merits (isolated-builder.md L5, L7-9, L12; sub-agents reference L600), sizes, the failing-first control, the non-Opus boundary, alternatives, #381 freeze and overturn. Skills-trial record, addendum 2026-09-28: condition log C0-C3 (#378, 2026-10-25 review rule for verification-before-completion: a with/without comparison on frozen builder tasks through an upstream harness named with its pin (tokens, elapsed time, review-found defects). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Decision records: date the builder preload boundary; drop an unretained count Skills-trial condition log: isolated-builder's verification-before-completion preload and the body line that names it came from #376 (623d34f, 2026-09-27T03:38:47Z per TZ=UTC git log -S on adoption/agents/claude/isolated-builder.md), a boundary inside C0, not a constant across every condition. The one recorded install time is attributed as measured-gaps.md reports it (the coordinator's local measurement), without naming a host. Token-lanes addendum: the community alternative keeps superpowers as the verifiable example and drops a survey count that is not retained in the repository. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Token-lanes carrier: tag the evidence sentence's upstream item; narrow the no-verification claim Repair round for the verification-line change (review findings R-F2, R-F7). - token-lanes-block.md line 13 moves "(code.claude.com best practices)" to follow "the command and what it returned", the item Claude Code best practices L52 names (https://code.claude.com/docs/en/best-practices.md, re-read 2026-09-28). The file:line alternative is local policy, not in L52. Zero-byte reorder: the block stays 4,088 bytes and line 13 295. - SHA256SUMS lists the new block hash; `sha256sum -c SHA256SUMS` passes. - Handbook: the mirrored line follows, and the sources paragraph records the file:line alternative as local policy. It now says the carrier gives no instruction to verify finished work and names no verification skill, since the codebase-memory line still checks caller lists (handbook L264). - Test comment: WITHDRAWN_PHRASES is a literal skill-name check, not a check for every verification wording. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Decision records: keep the manifest prune rule, name confounds and overturn variables Repair round for the verification-line addendum and the skills-trial carrier-condition addendum (findings V-F1, R-F1, R-F3, R-F4, R-F5, R-F6, R-F7, GAP-3, GAP-6, GAP-7). Skills-trial addendum: - The review no longer "replaces" the count-based prune rule. It adds a with/without comparison that varies the builder's preload for the skill's Claude listing; trial.prune_rule (adoption/skills/manifest.json L30) and tools/skill-usage/skill_usage.py L516-538 still apply, and Codex enablement stays under that rule. A disagreement is written into the manifest update the trial window end already requires. - Other sources and role changes: the landscape-sweep templates name both skills from 1b0e459 (templates.json common; build_args.py L59 TEMPLATE_SKILLS), for the Claude workers and the GPT-6 lane; the C0 baseline counts (child-lane baseline README L128-130) match that list without proving cause; #398 (5483412) and #402 (d022295) change the sweep workers' type and model and the builder's model inside C1. - Boundaries: the installer writes no install record (shutil.copy2 at install_claude_profile.py L113, L143 keeps the source mtime), and #381 step 2 freezes hashes, not install times. Verification-line addendum: - The builder runs model: opus, which is Opus 5.5 on this host since September 22 (grand-catalog-handbook.md L242-244), so the Opus 5 advice reaches it through the 5.5 guide's L9; before #402 it ran sonnet. - #381 records hashes, not an install time; a Supersedes note corrects the qmd addendum's L389 wording the same way. - Overturn names what each comparison varies: default-block line 13, a non-Opus child set, the builder line with the preload held on, or a prompting-guide reversal. - Line 13's quote, the local file:line policy, the re-read of every documentation quote at its cited line (2026-09-28 08:55Z), the installed SKILL.md hash check and the control's own returned lines. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Token-lanes record: the no-command-output case needs neither Bash nor ctx_execute security-reviewer has no Bash but runs commands through Context Mode's ctx_execute (Codex review), so the rationale is qualified to children with no command runner. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Evidence manifest: re-register this change's files Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> --------- Co-authored-by: Scout <scout@local> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
Scope
tools:allowlist grants. Until now every allowlisted role was told to use codebase-memory, Headroom and (except stack-researcher) QMD, which none of them are granted. No agent file or grant changes.ed3cd96c(origin/main)lane:foundation(adoption hooks, installer, tests, foundation docs;manifests/evidence.jsonis only re-registered under the hot-file protocol)adoption/hooks/claude/(carrier, five role blocks, SHA256SUMS),tools/adoption/install_claude_profile.py, two test modules,docs/token-session-handbook.md, two dated decision addenda,docs/harness-defaults.md(anti-pattern row),adoption/bootstrap.md,examples/claude-native/workflows/README.md,manifests/evidence.json(last commit)SOTA sources
tools:allowlist restricts a subagent's tools, and a SubagentStart hook's additional context only adds text; it grants no tool.docs/decisions/2026-09-27-token-lanes-subagent-start.md, dated addendum.Evidence-class table
test_injected_text_names_only_tools_each_shipped_allowlist_grantsfails on the old hooktests/test_install_claude_profile.py,sha256sum -con adoption/hooks/claude (9 OK)Local commands run
Decision record
docs/decisions/2026-09-27-token-lanes-subagent-start.md, dated addendum: mismatch table, byte table, why no grant, rejected alternatives, limitations, overturn. Alsodocs/decisions/2026-09-26-stack-agents-role-dispatch.md(addendum), and the anti-pattern row "Sending one carrier text to agents with different tool grants" indocs/harness-defaults.md.Residuals
release_duereports it.81e28a7c2f5429301d3306dc5ee0ecf809c67ccded62a43a98281baa8f92fedd🤖 Generated with Claude Code