Skip to content

Gate A U2 and U3: Claude and Codex kernel measures for the #381 token E2E (call states, M15, ledgers, D7, joins) - #528

Merged
seathatflowsinourveins merged 77 commits into
mainfrom
claude/pra-u23-measures-2d-20260930
Sep 30, 2026
Merged

seathatflowsinourveins merged 77 commits into
mainfrom
claude/pra-u23-measures-2d-20260930

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Sep 30, 2026 •

Copy link
Copy Markdown
Owner

Scope

  • What this PR changes, in one or two sentences: adds the Claude-side kernel measures of the PR-H: E2E preregistration for the token-save-practice stack (frozen tasks, metrics, gate, procedure) #381 token E2E (U2: injected context from every hook event, loaded-not-called per server, context bytes with JSON and tabular detection, incomplete returns, M14 call states with a private per-child call ledger behind --call-ledger, M15 per-server infrastructure-error rates, heredoc-aware shell parts (B8), per-actor usage with advisor iterations (B9), and the rtk-claude part classification) and the Codex-side measures (U3: injected versus inherited marker, grouping by custom-agent role, spawn fork_turns / role / route joins, nested code-mode attribution, the rtkAgent replay with D7, and the Codex half of the call ledger). The two units rewrote rtkParts in the same file, so the merge is resolved once here (one rtkParts with both units' behavior) and verified as one tree; the Codex ledger tests, which need U2's callLedger, now run instead of skipping.
  • Base commit: f77612b6 (main after bc's PyJWT relock; the branch's last merge commit brings it in)
  • Lane: lane:foundation (Gate A units U2 and U3; owner native-agent-stack-2d)
  • Owned paths touched: examples/claude-native/workflows/{child-usage.mjs,test-child-usage.mjs,README.md,SHA256SUMS}, tools/skill-usage/{skill_usage.py,README.md}, tests/{test_token_measurement.py,test_skill_usage.py} (and additive lines in tests/test_child_usage_suite.py where a unit needed them), evidence/artifacts/pra-u2-differential-20260929/ and evidence/artifacts/pra-u3-differential-20260929/ (new), manifests/evidence.json (hot file, last commit)

SOTA sources

  • openai/codex rust-v0.157.1 (36650394): codex-rs/protocol/src/{items.rs:372-381 (WebSearchItem has no status), models.rs:1182-1203, 1060-1165, 1938-1949, 2173-2182, protocol.rs:772-779, 1403-1415, 1570, 4393-4402}, codex-rs/rollout/src/policy.rs:56, 94-145 (what a rollout persists in legacy and paginated history), codex-rs/core/src/tools/handlers/multi_agents_v2/spawn.rs:233, 253-263, codex-rs/core/tests/suite/code_mode.rs:721-760, 3436-3752 (nested returns go to the code-mode JavaScript), codex-rs/core/src/tools/context.rs.
  • rtk-ai/rtk v0.50.0: src/hooks/decision.rs:61-97, 196-204 and src/hooks/permissions.rs:56-67, 141-175 (rtk hook check --agent claude|codex: the claude checker merges project and home Bash rules, the codex one has no RTK-side rules; the rewrite decision is the same).
  • mksglu/context-mode v1.0.169 src/server.ts:825-836, 891-897 (trackResponse prepends the outdated-version notice to every response, successes included) and its tool error shapes.
  • Claude Code 2.1.284 and 2.1.285 (hook attachment types read from the binary, docs for hooks and usage monitoring), the Anthropic Messages API usage and advisor iterations documents (retained copies in the U2 evidence sources.json), POSIX.1-2024 XCU 2.7.4 (here-documents) and 2.9.x, bash(1) 5.2 and dash behavior observed on this host.
  • Every retained copy and line anchor with its retrieval date: evidence/artifacts/pra-u2-differential-20260929/sources.json and evidence/artifacts/pra-u3-differential-20260929/README.md.

Evidence-class table

Claim Evidence class Command / receipt
The merged tree passes both units' suites: the kernel, child-usage, skill-usage, command-position oracle, preregistration, freeze-snapshot, landscape-sweep and saturation-ledger modules local_integration python3 -B -m unittest tests.test_token_measurement tests.test_child_usage_suite tests.test_skill_usage tests.test_command_position_oracle tests.test_token_e2e_preregistration tests.test_freeze_snapshot tests.test_landscape_sweep_harness tests.test_saturation_ledger → Ran 705 tests in 423 s, OK (skipped=4): the four skips are environment ones (CONTEXT_MODE_SECURITY_JS unset, no bash 3.2 binary, shellcheck not installed, jsonschema not installed); the rtk-gated and parser-gated tests ran
The CodexCallLedger tests, seven of them against the real callLedger (five were skipped in U3 alone), run and pass local_integration python3 -B -m unittest tests.test_skill_usage.CodexCallLedger → Ran 16 tests, OK (0 skipped)
The node suites pass local_integration node test-child-usage.mjs 216/216, test-contract-mutations.mjs 74/74, test-envelope.mjs 254/254, test-usage-receipts.mjs 18/18, test-codex-envelope.mjs 0 FAIL; node check-syntax.mjs … and node --check child-usage.mjs exit 0
The merged kernel gives the U2-only kernel's Claude output on real data: no path differs, none is added or removed local_integration (private host transcripts reduced to counts) lanes sweep of the frozen window 2026-09-26T00:00Z to 18:37Z: 635,560 paths, 635,560 equal, 0 changed, 0 added, 0 removed, 0 unexpected; the same with --rtk-check over 2026-09-26T00:00Z to 05:00Z: 182,796 paths, all equal; run mode over 20 real Workflow runs: 226,429 paths, all equal, exit codes equal (measured again on the repaired head 7f9263e1) (evidence/artifacts/pra-u2-differential-20260929/differential.mjs with an empty allow-list)
U2's own differentials at its final kernel (frozen W_AA copy, 232 workflow runs, 12 --rtk-check chunks): 0 unexpected paths, invariants hold, the call ledger is byte-identical to a run without it local_integration U2 evidence README and evidence/artifacts/pra-u2-differential-20260929/ (recorded before this merge, at kernel c1d9ad16)
U3's host differential: every difference between its base and head reports fits the design; the Claude output is byte-identical at the default agent local_integration evidence/artifacts/pra-u3-differential-20260929/README.md, claude-byte-identity.py
The merged tool's Codex lane report over the host store (window 2026-01-01 to 2026-09-29, --rtk-check) against U3's alone: 0 leaves removed, 122,680 added (U2's call_states, m15, eligible_call_states and carrier fields on Codex actors), 441 changed values, all under rtk_parts (status, unknown_calls, ineligible_parts, proxy_parts, d7), which is B8's call-level unknown rule (U2) reaching the Codex replay local_integration (private host rollouts reduced to leaf-path counts) skill_usage.py --lanes --codex-root <store> --since 2026-01-01T00:00:00Z --until 2026-09-29T00:00:00Z --now 2026-09-29T00:00:00Z --json --rtk-check at both trees, compared by leaf path
Independent reviews: U2 one high (M15 scored calls that did not run as succeeded) and five low, the high fixed and the independent re-verify passed 14 of 14; U3 one medium (the Codex ledger was undisclosed as missing) and five low, the ledger delivered and the re-verify passed 15 with 2 unverified (the ledger fixtures, which this merge now runs, and the outer-JS rule, accepted below) source_review the Gate A workflow records of both units
Independent review of the merge itself (Opus evidence-reviewer, read-only, integration only) source_review 3 medium and 2 low findings, all repaired in this PR (below)
GPT-6 cross-family review NOT run (native and pooled GPT-6 capacity exhausted); recorded as a missing round -

Local commands run

$ python3 -B -m unittest <the eight modules above>
Ran 705 tests in 423.125s

OK (skipped=4)
$ python3 -B -m unittest tests.test_skill_usage.CodexCallLedger
Ran 15 tests / OK
$ python3 scripts/validate.py
{"status": "passed", ...}
$ git diff --check e45328d3..HEAD
(no output, exit 0)

Review and process record: the pre-repair independent command re-run agent of both units finished without calling StructuredOutput and counted as failed; each unit's repair stage re-ran its acceptance list and an independent re-verify agent followed. Two U2 commits (1a189bdb, 01af2f62 before rebasing) hold a kernel that does not parse, fixed by the next commits; the PR is squash-merged. Unit commits carry an Opus 5.5 trailer because a builder of that model wrote them.

Integration decisions made here (each with a test that failed first or a differential): (1) one rtkParts with U2's structure and U3's agent parameter and D7 counters, D7's per-call counters held until the call is known readable so an unknown call adds nothing to any part counter, as B8 requires for the other counters; D7's status follows the merged rtk_parts.status; (2) a completed web.search item now carries native_status: completed (U3 open question 1, option (a): its item_completed event is its completion; all 3,650 such rows, 7.4 percent of the host ledger, read as cancelled_or_unfinished before), with a real-kernel test that failed first; (3) the outer-JS rule of tools/skill-usage/README.md ("The outer exec code") is accepted by the PR-A owner, which releases U3's commits 7 and 8: a count of outer HTTP mentions, no reading of the isolate where the client's isolation is known.

Merge review and repair (one review, one repair round; failing-first tests are the commit 05100fe2, the repair 7f9263e1, six mutants of the new guards all caught): (1) the Codex bridge had added unresolved commands to unknown_calls after the kernel finished, forced status incomplete and left unknown_call_share stale, so one unknown call read differently depending on which layer counted it; the kernel now takes measureTranscript option unresolvedBash (non-negative integer, never beyond the Bash calls not already unknown) and counts inside rtkParts, so B8's 5 percent rule, the share and the D7 status come from one place; (2) D7's status had been silently relaxed to B8: decided to keep the harder reading (any unknown call or unreviewed log or find part leaves d7 incomplete, rtk_parts.status keeps B8's tolerance; both READMEs say so and that an amendment may relax it); (3) the aggregate d7 status is the strict vote, independent of how calls are split across actors (a test splits 110 calls over one and two rollouts); (4) a failed hosted web_search_call no longer reads completed; (5) stale README statements on the ledger and native_status. Residuals (bounded review loop: one review, one repair round): (1) the shell splitter still reads $[1<<2] as a here-document operator (shellParts('echo $[1<<2]\nls -la') returns one part; 0 of 37,951 Bash calls in the frozen W_AA files hold the form; fixing it changes the rtk-check differential); (2) six M15 error classes stay unassigned until Amendment 4 (grading reads rate_upper_bound and over_threshold meanwhile, which fixes the high finding), and every_error_classified counting of invalid and indexed exits is an Amendment 4 decision; (3) the plain ( ) subshell here-document case, the 5m/1h split edge for a message straddling since, and stale item-6 docs in scripts/saturation_ledger.py and tools/sota-convergence/landscape-sweep/usage_record.py (outside these paths); (4) the V1 SubAgentActivity shape is pinned by a fixture, unverified against a real V1 rollout, and a legacy-history rollout's McpToolCallEnd, WebSearchEnd and non-completed SubAgentActivity events are not read (this host holds no legacy rollout); (5) fork_turns is Option<String> with deny_unknown_fields upstream, so a literal integer fails the spawn (note for the #381 protocol owner; the join reads it as last-N only); (6) two store lines did not parse in U2's host runs (2 of 5,283 files, cause not examined); (7) CI skips the rtk and parser replay tests (they ran here with rtk 0.50.0 and the tree-sitter install).

Decision record

No new decision record: the choices are recorded in the workflows README ("U2 measurement fields"), tools/skill-usage/README.md and the two evidence directories' READMEs and sources.json.

Host evidence

Not applicable (no files under evidence/hosts/).

Checklist

  • New/changed GitHub Actions are pinned to a full commit SHA with a version comment (no workflow changes in this PR).
  • New/changed workflows declare top-level permissions: contents: read (no workflow changes).
  • No secrets are printed, logged or committed; the reports and the ledger hold no ids or paths (the ledger is a private create-only file outside every work tree, and a test refuses a path inside the checkout).
  • No new paid hosting, subscription or billing surface was introduced.
  • Peer-owned untracked files and worktrees were preserved.

🤖 Generated with Claude Code

Scout and others added 30 commits September 29, 2026 23:14
Failing-first fixtures for PR-A items 1, 5 and 4 (U2 design sections 1-3,
with the review-u2 findings that cite them), in the shapes a count-only
scan of this host's 2.1.283/2.1.284 transcripts found.

Item 1: inserted stays the row count M12 reads (E2E README M12 row);
new inserted_blocks, blocks_by_event, claimed_by_event, plain-stdout
claims only on UserPromptSubmit, UserPromptExpansion, SessionStart and
PostModelSwitch (code.claude.com/docs/en/hooks, "Exit code 0", fetched
2026-09-29), other hook_* rows, the sibling-row and sibling-child
negatives, the M12 positive-control key, and a fold that keeps an
over-long <Event>:mcp__<server>__<tool> hook name at server level.
Item 5: loaded references per server and actors per server (RUNBOOK
'Loaded, never called'). Item 4: JSON and uniform-tabular counts per
carrier after the ctx_execute(_file) code echo (mksglu/context-mode
v1.0.169 src/server.ts:1511-1527) and the Read cat -n numbers, unknown
counted, never 0 (TOON v4.1.1 packages/toon/README.md:199), and the
section-1 per-actor figures the scope extract lists.

At fe9f511: by_hook has (other) for the long MCP name, the new keys
are absent (inserted_blocks, loaded, large_json, shell_web: None), the
node check fails 1 of 176; every control passes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Implements PR-A items 1, 5 and 4 (U2 design sections 1-3) with the
review-u2 findings that cite them; makes 06826ff3's tests pass.

Item 1: hook_context adds inserted_blocks, blocks_by_event,
claimed_by_event, claimed_plain_stdout (only UserPromptSubmit,
UserPromptExpansion, SessionStart and PostModelSwitch, and only stdout
that does not both start with { and end with }: code.claude.com/docs/
en/hooks "Exit code 0"), other_hook_rows and hook_names_folded; an
over-long <Event>:mcp__<server>__<tool> name keeps a validated
<Event>:mcp__<server> key instead of '(other)'. inserted, claimed,
with_marker and by_event keep their #432 meaning. The aggregate adds
actors_with_insertion.

Item 5: measurement.loaded (references per server, called or not);
the aggregate adds loaded, loaded_actors and loaded_not_called_actors.

Item 4: every sizes object counts large_json, large_uniform_keys,
large_uniform_flat and large_shape_unknown. The payload is read after
the carrier's wrapper: the ctx_execute(_file) code echo, rebuilt by the
exported ctxEcho (mksglu/context-mode v1.0.169, 442f1eb6,
src/server.ts:1511-1527), and the Read cat -n line numbers, both with
linear scans; what cannot be read is unknown. uniform_flat follows TOON
v4.1.1 packages/toon/README.md:199. The aggregate adds the section-1
per-actor figures: shell_web_large_results_per_actor,
actors_with_mcp_call, actors_with_non_ctx_mcp_call (per-actor
mcp_attempted) and actors_with_ctx_results.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Failing-first fixtures for binding decision B9 (per-child usage reads
usage.iterations[]: advisor_iterations apart, totals including them,
usage.complete false when iterations cannot be read) and U2 correction
1 (cache_creation_5m/1h, speed, service_tier, inference_geo per message
and per advisor iteration, null when absent, never 0).

Shapes follow a count-only scan of this host's transcripts and the beta
Messages API reference (platform.claude.com/docs/en/api/beta/messages/
create, BetaIterationsUsage), the advisor tool doc ("Usage and
billing") and the refusals-and-fallback doc ("Billing and rate limits"),
fetched 2026-09-29. Cases: tiers both nonzero, combined counter only
(split null), fast speed, us geo, an advisor iteration with its own
model and split, a multi-iteration row whose top-level cache_creation
object is the first iteration's split (3,706 of 3,706 such rows here),
streamed rows, adjacent windows, an empty list, and the reasons usage
is incomplete: top level unequal to the message entries, fallback,
compaction, a non-object or non-numeric entry, a successful advisor
result without its entry, an advisor call without a result, an advisor
entry without a model. Run-mode control: the run stays complete, exit 0.

At 0eb8771c: the new fields are absent, every unreadable case reads
complete true, the aggregate reads (True, 503) for (False, 503); node
177/179 with the control passing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Implements binding decision B9 and U2 correction 1 in transcriptUsage
(measurement.usage: sweep actors[] and run-mode children[] and
superseded_attempts[] lanes.measurement); makes 2bf419de's tests pass.

usage.iterations[] (beta Messages API BetaIterationsUsage; advisor tool
doc "Usage and billing"; refusals-and-fallback "Billing and rate
limits"; fetched 2026-09-29): message entries are the executor's and
sum to the top-level counters; advisor_message entries are listed in
advisor_iterations (message_ordinal, own model, counters, 5m/1h split,
tier fields null) and counted in the window of the first row carrying
them; advisor_totals and totals_including_advisor sit beside the
unchanged executor totals. Each message adds cache_creation_5m/1h and
speed, service_tier, inference_geo (null when absent). The split is the
message entries' own splits added up, because on multi-iteration rows
the top-level cache_creation object holds the first iteration's split
(3,706 of 3,706 rows on this host); the top-level object only when a
row carries no entries.

usage.complete is false, with iteration_issues naming the reason, for
an unread entry (fallback_message, compaction, other types, non-object
or non-numeric), top-level counters unequal to the message entries, a
successful advisor result without its entry, an advisor call without a
result, or an advisor entry without a model. The aggregate sums them.
Run-mode exit codes are unchanged. On this host's 4,667 transcripts
with messages: 143 become incomplete (105 advisor results without
usage, 48 calls without a result, 1 fallback, 1 inconsistent); 2,070
advisor iterations; message splits equal the combined counter on
201,150 of 201,151 known.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Comment-only: a quote check against the fetched bytes (sources.json in
evidence/artifacts/pra-u2-differential-20260929) found two kernel
comments whose quotation marks enclosed text with the source's markup
removed. The hooks reference sentence now keeps its backticks, the E2E
README M12 row is paraphrased without quotation marks, and the Read
count names the text results it counts (133 more hold a non-text
block). No code changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
evidence/artifacts/pra-u2-differential-20260929 (new): the count-only
scans that verified B9's usage.iterations structure, the hook row shapes
of item 1 and the large-result shapes of item 4 on this host's
transcripts (producers and their outputs verbatim: key names, enum
values and counts only, no ids, paths or text), the two checks that run
the committed kernel's transcriptUsage over the same store, sources.json
(every fetched upstream document: URL, fetch time, sha256, the exact
sentence each rule rests on, verified against the fetched bytes), and
expected-changes.json, the allow-list the later differential stage
consumes (review-u2 medium finding): the paths this stage adds, and the
two pre-existing paths it changes on purpose, by_hook['(other)'] (the
MCP hook-name fold) and usage.complete (B9: 143 of 4,667 transcripts
with messages here). Registration in manifests/evidence.json follows in
the unit's last commit (docs/lanes.md hot-file protocol).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Read cat -n strip of item 4 had no named source (final advisor
review). code.claude.com/docs/en/tools-reference ("Read tool
behavior", fetched 2026-09-29, sha256 cc0eda98) states that Read
"returns the contents with line numbers"; the exact form (spaces,
digits and a tab before every line) stays marked as observed client
behavior, 11,467 of 11,467 text Read results over 5,120 B on this host.
sources.json gains the entry; the kernel comment cites it and notes
that a PARTIAL view notice, which carries no number, reads as unknown.
Comment and evidence only; no code changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Must-stay control, added after the implementation and not failing-first:
a lanes sweep over a child transcript whose message carries an advisor
call reads the advisor iteration (actor advisor_iterations 1, aggregate
advisor_iteration_count 1) and prints neither the message id nor the
advisor server-tool call id nor the directory (the unit rule: never
emit call ids in a published field). Mutation check: a scratch kernel
that adds the message's advisor call ids to each advisor record prints
the call id once in the same sweep; this kernel prints it 0 times.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
U2 item 7, the explicit callState extension the review's dependency
finding asks for (review-u2 medium: U1's rule lacks templates the M14
fixtures need, and exports no per-call not_executed flag).

What U1 already covers, from a count-only scan of this host's
transcripts (scans/call-states.py, 5,153 files): every observed row
that did not run carries a toolDenialKind, a <tool_use_error> content
or the user-rejection content. The user template is fully read. The
config text "Permission to use ... has been denied." (8 rows) and the
cancelled text "Not run: the response that made this tool call ..."
(1 row) are read only through their denial kind; the interrupt marker
"[Request interrupted by user for tool use]" is a user text block after
a user-rejection result (37 of 37), never a result.

The fixtures without a denial kind fail at ebcca292: cli_lanes qmd
not_executed 0 != 1 for the config text (content, and toolUseResult
only), the Not run text, the marker as a result (the design's
constant), the rejection only in the toolUseResult and "Permission
for" only in the content; and cu.callState is not a function. Cases
labelled (control) read not-executed at the base already.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
U2 item 7, the callState extension (review-u2 medium, U1 dependency).
callState and a notExecuted accessor are exported; every template is
read at the start of the result content and of the toolUseResult
string (after "Error: "); the config text "Permission to use <tool>
... has been denied", the client's "Not run: the response that made
this tool call" and the design's constant "[Request interrupted by
user for tool use]" join the list.

A call that did not run gets its cause in the vocabulary of the OTel
tool_decision event (code.claude.com/docs/en/monitoring-usage, "Tool
decision event" and "Tool result event"): a template's cause unless it
is 'other', then the toolDenialKind, then the template's 'other', then
a native declined state. Hook denials carry permission-rule (809 of
809 here), so the text decides first; the built-in safety check's
"Permission for this command was denied" carries permission-rule too
(11 of 11), an automatic decision the doc's "config" source names.

scans/not-executed-delta.mjs compares U1's rule, copied verbatim from
ebcca292, with the new one over this host's 228,531 calls: 1,228 did
not run under both and 0 differ. cli_lanes.failed keeps U1's meaning
(is_error; not_executed a subset): tests/test_skill_usage.py:970-974,
outside this unit's paths, pins it for the Codex declined fixtures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
U2 design sections 4-5 (PR-A item 7 and protocol M15) with the review's
corrections, as failing-first fixtures.

M14 (E2E README M14 row; preregistration thresholds.M14 states): 20
calls project callState onto the sealed names. A call with a transcript
result is executed, rejected (by source, OTel tool_decision vocabulary,
code.claude.com/docs/en/monitoring-usage), invalid or
cancelled_with_result, never "no result"; cancelled_or_unfinished is
only the calls with no result; decided is null; mcp_states and
calls_without_result keep their published meaning (review mediums).

Ledger (AA:319): callLedger and --call-ledger in both modes, create-only
with mode 0600, refused inside any git work tree, on an existing file or
a missing directory; stdout stays free of call, session and agent ids,
and run-mode stdout of call and session ids (review lows).

M15 (E2E README M15 row; preregistration thresholds.M15): classes in
context-mode v1.0.169's exact shapes, echo-free templates tested before
the echo (review high), the version notice stripped, the client's MCP
texts, the Codex approval denial (rust-v0.157.1 mcp_tool_call.rs:1612),
and rates under binding decision B2.

At 486da6ac all 8 fail: call_states None, m15 None, aggregates
undefined, cu.callLedger is not a function, and --call-ledger an
unknown option (exit 2), including the refusal test's accepted control.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PR-A item 7 (U2 design 4.2-4.4, 4.7 with the review's corrections):
measureTranscript adds call_states, aggregateMeasurements sums it, and
m14State(call, result) is exported. One callState per call feeds both
call_states and cli_lanes, so there is one classifier.

Names follow the E2E README M14 row and preregistration.json
thresholds.M14.criteria.states. A call with a transcript result is
executed (succeeded, failed, interrupted), rejected (by source: config,
hook, user, other, declined, the OTel tool_decision vocabulary of
code.claude.com/docs/en/monitoring-usage), invalid or
cancelled_with_result, never "no result" (review medium);
cancelled_or_unfinished is only the calls with no result; decided is
null. mcp_states keeps the #432 rule and calls_without_result its
published meaning (review medium): test_skill_usage.py:828-829 and
:936-939 pin both, and deriving mcp_states from callState would move a
declined call without a result from unfinished to failed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Protocol M15 (E2E README M15 row; preregistration.json thresholds.M15):
measureTranscript adds m15.by_server, aggregateMeasurements sums it and
computes the rates again, and mcpErrorClass is exported.

Order (review-u2 high finding): the anchored templates context-mode
v1.0.169 returns before any code echo (boundary server.ts:1196-1201,
returned at :2118-2119; the deny firewall; Runtime/Batch/Index/Search
errors; storage and usage errors; batch timeout; fetch failures; search
throttling) are tested on the raw text; the echo is required and
stripped only for ctx_execute(_file) outputs after execution (timeouts,
exit-classify.ts exits, module errors, indexed exits under both labels:
review lows). The outdated-version notice (server.ts:892-896) is
stripped first. The client's MCP texts are read on every server: not
connected, the documented idle timeout (code.claude.com/docs/en/mcp),
and the MCP SDK 1.30.1 "Connection closed" and -32602 validation error;
the Codex approval denial is rust-v0.157.1 mcp_tool_call.rs:1612.

Rates follow binding decisions B1-B2: rate counts the six classes,
every new class (a new class is our misuse until reproduced) and every
unknown class or outcome; rate_lower_bound counts unknowns as
successes; threshold_sensitive flags bounds on both sides of 0.01;
every_error_classified replaces the design's status (B1: no new
status); rate_upper_bound keeps the design's ceiling, descriptive.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PR-A item 7's ledger (AA:319, the per-child list of tool_use_ids with
each call's state; U2 design 4.5 with the review's corrections).

callLedger(transcript, {window}) returns one record per attempted call:
session_id, owner, tool_use_id, tool, server, M14 state and cause,
native_status, background, sandbox, code_mode and the M15 class, keyed
by (session_id, tool_use_id) as the E2E README M14 row requires. owner
is the row's agentId, 'main' with a sessionId alone, and null when the
row has neither (a Codex bridge row: U3's correction 1 supplies
conversation.id and the owner kind through the bridge).

--call-ledger PATH works in both modes: the sweep adds the published
actor ordinal, run mode the journal label and whether the attempt was
superseded. The path is checked before any work: an existing directory
outside every git work tree (skill_usage.py write_out's precedent,
widened), and a new file, created with 'wx' and mode 0600 (review low:
an existing file's mode is never taken for 0600). Refusals and failed
writes exit 2 with no report. Stdout is unchanged by the flag.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Evidence for U2 stage 2 (count-only scans of this host's Claude Code
transcripts; no id, path, command or result text in any output).

- scans/call-states.py now also counts the client's MCP texts (16 not
  connected, 4 idle timeouts, 1 Connection closed, 1 -32602 error), the
  built-in "Permission for" and "Not run" templates, and where the
  interrupt marker sits (37 of 37 user text blocks after a
  user-rejection result).
- scans/kernel-m14-m15.mjs runs the kernel over every transcript:
  0 call_states invariant violations over 4,349 actors, and
  calls_without_result equal to cancelled_or_unfinished for each. The
  context-mode server's 34,427 calls classify completely (0 unmatched,
  0 echo_mismatch), rate 0.0028 and ceiling 0.0044. Servers outside the
  stack's vocabulary fold into (other), as U1's closed vocabulary does.
- sources.json pins the documents and code the M14 and M15 rules rest
  on, each quote checked verbatim against the fetched bytes: the
  monitoring, MCP and env-vars docs; context-mode v1.0.169 server.ts
  lines, exit-classify.ts and session/db.ts (byte-identical to the
  installed copy); codex rust-v0.157.1 mcp_tool_call.rs; and the MCP
  SDK 1.30.1 files, equal to the registry tarball (its sha512 is the
  npm integrity).
- expected-changes.json lists stage 2's added paths and the one
  pre-existing path that can change (cli_lanes not_executed; 0 calls
  here), with what stays unchanged by design and why.

The kernel and test comments now cite the retained scan's counts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every kernel share is rounded to four places, so a server just over
the M15 threshold (preregistration.json thresholds.M15, at most 0.01)
can print as 0.01: 202 of 20,100 calls is 1.005%. The B2 flag
threshold_sensitive must therefore compare counts, not rounded rates.

At 7810ed70 the first case fails: 190 infrastructure errors and 12
unknowns of 20,100 calls give (rate, rate_lower_bound,
threshold_sensitive) = (0.01, 0.0095, False) where True is right. The
two controls (exactly 1%, and both bounds over) pass at the base.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
threshold_sensitive (binding decision B2) now tests errors * 100 >
attempted for each bound: preregistration.json thresholds.M15 allows
at most one infrastructure-class error in 100 calls, and a share is
rounded to four places, so 202 of 20,100 calls (1.005%) printed as
0.01 and read as within the threshold. rate, rate_lower_bound and
rate_upper_bound stay rounded like every kernel share; a grader
compares the published counts (infrastructure_errors,
new_class_errors, unknowns, attempted), never the rounded rate.

scans/kernel-m14-m15.json (run with the kernel before this change)
keeps its values: recomputed from its counts, every server's flag is
the same.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What: fixtures for PR-A item 6 (empty and wait-notice returns,
background tasks without a terminal notification at the final message,
final_return per actor and in aggregates, run-level exit 1), the rtk-claude
M1 numerator (rtk_parts.eligible_call_states and
observed_covered_succeeded_calls), and binding decision B8 (heredoc and
arithmetic calls parsed, unknown calls counted once and left out of the
eligible-part denominators, unknown_call_share and the 5% status rule).

Why: U2 design sections 6 and 7 and binding decisions B5 and B8. The
background-task sources (Bash backgroundTaskId, Monitor and Workflow taskId,
async Agent agentId), the terminal <status> set and TaskStop come from
count-only scans of this host's transcripts; code.claude.com/docs/en/
tools-reference ("Background commands") says a foreground subagent's
background command stops at its final response. rtk-ai/rtk v0.50.0
(tag 1d87b8e7) src/discover/registry.rs rewrite_command_precompiled
returns None for any heredoc or $(( command.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What: PR-A item 6. returnQuality reads a child's journal result (a
string, the E2E { answer, evidence } schema by its answer, or any other
value by its leaves); an empty or wait-notice return is an issue, so the
child and its run are incomplete and the CLI exits 1. finalReturn gives
every measurement a final_return (the final assistant row's kind, whether
its text is empty or a wait notice, and the background tasks still
running at that row); a child that left one running is incomplete too.
Aggregates count actors by final_return status and final kind.

Why: #381 AA-PLAN item 6 and U2 design section 6, with three evidenced
departures. waitNotice is the design's rule as a linear word scanner (no
backtracking pattern; CodeQL js/redos has flagged this kernel), plus the
typographic apostrophe. A value with no string at all is not a wait
notice (the design's leaf rule made { ok: true } one). Background tasks
come from Bash backgroundTaskId, Monitor and Workflow taskId and async
Agent agentId, and end only at a <status> of completed, failed, killed
or stopped or at a TaskStop that names them: count-only scans of this
host found Monitor events without a status and no notification after a
TaskStop of a Bash, Monitor or Workflow task (88 of 88). The client
stops a foreground subagent's background command at its final response
(code.claude.com/docs/en/tools-reference, "Background commands").
final_return is not_applicable without provider message ids (the Codex
bridge's rows) and unobserved past the window end (the review's finding
on the sweep).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What: binding decision B8 and the rtk-claude M1 fields. shellParts reads
the command unit by unit with U1's frame machine (step(): quotes,
escapes, comments, $(( )) and (( )), "$( )" and backquote frames, and
the redirection forms of & and |), treats here-document bodies as data
(any delimiter word, heredocWord), and returns null only for text it
cannot read. rtk_parts counts an unclassifiable call once in
unknown_calls and adds none of its parts to the eligible, ineligible,
observed or replayed counters; explicit-rtk, log/find and proxy counters
read the command's own parts, so M-R3/M6c's zero counter keeps a
violation in a call M-R1 cannot classify. New fields: unknown_call_share,
eligible_call_states (M14 states of calls with an eligible part) and
observed_covered_succeeded_calls (the per-child-task M1 numerator,
B5). status is incomplete only when unknown calls exceed 5% of calls,
on the counts, and an aggregate applies that rule to its sums.

Why: B5, B8, U2 design 7.3. bash(1) Here Documents and DEFINITIONS;
POSIX.1-2024 XCU 2.7.4. rtk-ai/rtk v0.50.0 (tag 1d87b8e7)
src/discover/registry.rs rewrite_command_precompiled returns None for
any heredoc or $(( command, so the eligible parts of such calls, unknown
before, now count as observed uncovered.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What: shellParts reads the bodies a newline begins only for the
here-documents whose operators sit at that newline's frame depth or
deeper, so a newline inside "$( )" no longer begins an outer body, and a
here-document a substitution leaves open is read after the enclosing
line. At most 64 here-documents wait at once (a command with more is
unknown), which keeps the scan linear. Two fixtures pin the two cases,
and two timing shapes join the linear-time checks.

Why: run on 2026-09-29 under GNU bash 5.2.21 and dash, the outer body of
"cat <<'EOF' && x=$(echo a<newline>echo b)" is the line after the
substitution (the previous rule returned null, an unknown call), and
"x=$(cat <<EOF)" takes its body from the lines after its line (bash
warns "command substitution: 1 unterminated here-document"). bash(1)
Here Documents; POSIX.1-2024 XCU 2.7.4.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What: the workflows README gains a "U2 measurement fields" section
(hook_context rows, blocks and claims; loaded references and actors;
large-result shapes and the section-1 figures; the usage tier split and
advisor iterations; the M14 call_states table; the private --call-ledger
contract; the M15 class table and its bounds; item 6's return_quality and
final_return), the B8 part rule and the rtk-claude M1 fields in the
--rtk-check paragraph, the new exit-1 conditions, the ledger in the sweep
example and the unobserved final return of an actor past the window end.
The skill-usage README says which U2 fields Codex actors carry and which
parts belong to the Codex adapter. The sweep's limits string gains the
same U2 limits.

Why: U2 design section 11 and review-u2 (the run-mode stdout contract,
final_return not applicable on Codex actors, the Codex ledger owner);
every rule cites its source beside it in child-usage.mjs and in
evidence/artifacts/pra-u2-differential-20260929/sources.json.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What: the checksums of child-usage.mjs and test-child-usage.mjs, the two
files U2 changed in this directory; the other twelve are unchanged.

Why: U2 design section 10, step 6 (sha256sum -- *.mjs *.js *.json >
SHA256SUMS, then sha256sum --check --strict SHA256SUMS, which exits 0);
the byte-identity check in this README reads the file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What: differential.mjs (both kernels as their own CLIs, every differing
leaf path classified against expected-changes.json, which gains stage 3
and machine-readable paths), combine-chunks.mjs, the sweep differentials
over W_AA without and with --rtk-check and the run-mode differential over
232 runs (0 unexpected paths in each), shell-parts-property.mjs (2,000
generated commands bash accepts, all split as built), parts-compare.mjs
(the two splitters over W_AA's 30,673 Bash calls with bash -n on every
disagreement), waa-invariants.py (the design's real-window invariants)
and the count-only item 6 scans (background-task sources, notification
statuses, TaskStop, final rows). The README gives the figures.

Why: U2 design 10 steps 3 to 5 and review-u2's differential finding;
binding decisions B7 (W_AA), B8 and B5. Counts only: no ids, paths,
host names or command text; the sweep ran on a frozen copy of the
window's transcripts, deleted after the run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What: the comment above finalReturn quoted the "Background commands"
rule for monitors too; it now quotes the Monitor tool section's own
sentence (the monitors of a stopped subagent "stop with it") and says
what both mean for a return: it did not wait for the task's outcome. The
workflows SHA256SUMS is regenerated after this final kernel edit
(sha256sum --check --strict exits 0). A comment only: no output changes.

Why: code.claude.com/docs/en/tools-reference, "Monitor tool" (the
fetched copy's sha256 is the one in sources.json); a citation must say
what its source says.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What: sources.json gains the four documents stage 3's rules cite: the
tools reference's "Background commands" and "Monitor tool" sections (the
same fetched bytes as its Read entry), rtk-ai/rtk v0.50.0
src/discover/registry.rs (tag commit 1d87b8e7: has_heredoc and
rewrite_command_precompiled), POSIX.1-2024 XCU 2.7.4 and the installed
GNU bash 5.2.21 manual's Here Documents, each with sha256 and the
sentences a rule rests on. waa-invariants.py folds server names outside
the stack vocabulary into (other), as scans/kernel-m14-m15.mjs does, and
waa-invariants.json is regenerated from a fresh sweep of the same window
(every other figure unchanged; the copy of the window's transcripts was
deleted after the run).

Why: the evidence README says sources.json holds every source a U2 rule
cites, and published evidence names only the stack's servers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What: the new hashes of the six listed files U2 changed (child-usage.mjs,
test-child-usage.mjs, the workflows SHA256SUMS and README,
tests/test_token_measurement.py, tools/skill-usage/README.md) and the 44
files of evidence/artifacts/pra-u2-differential-20260929, added with
scripts/host_receipts.py register_file. component_matrix.py --write and
new_host_grand_list.py --write change nothing else.

Why: the hot-file protocol (docs/lanes.md): every shared hot-file edit in
the branch's last commit; python3 scripts/validate.py exits 0
(hashed_files 8220, status passed). At merge, take main's manifest and
re-register these files as the protocol says.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What: the review's high finding as tests. A server whose every call
fails with the client's "No such tool available" <tool_use_error> (an
invalid call) must read over the 0.01 threshold; each class outside the
named groups (policy_deny, remote_fetch, search_throttle, rejected,
invalid, cancelled_with_result, and a class no list names) alone at 2 of
100 calls is over; the invoked command's own exit stays excluded; the
rounding cases gain the ceiling, its count verdict over_threshold and
unassigned_errors, the residual of the ceiling after the named groups.

Why: the U2 design 5.3 grades on rate_upper_bound until a dated
amendment assigns the other classes, and the Gate A binding decisions
apply the harder-to-pass reading; the frozen M15 row
(evidence/artifacts/token-adoption-e2e-20260926/README.md, M15;
preregistration.json thresholds.M15) excludes only the invoked
command's non-zero exit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What: the per-class ceiling checks (policy_deny, remote_fetch,
search_throttle, rejected, invalid, cancelled_with_result, a class no
list names, and the excluded invoked_command_exit) move out of the
reviewer-input test into their own test, so they run, and fail, on the
kernel before the fix instead of sitting behind the first assertion.

Why: a test that never failed proves nothing; the U2 design 5.3 grades
on rate_upper_bound until a dated amendment assigns these classes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What: finishM15Row publishes unassigned_errors (the residual of the
ceiling after the infrastructure, new and unknown groups) and
over_threshold (the ceiling's count against 0.01: errors * 100 >
attempted), and threshold_sensitive now compares the two published
bounds, rate_lower_bound and rate_upper_bound. rate and
rate_lower_bound keep their meaning as descriptive figures.

Why: the review's high finding. A server whose every call fails with
the client's "No such tool available" <tool_use_error> read rate 0,
rate_lower_bound 0 and threshold_sensitive false. The U2 design 5.3
grades on rate_upper_bound until a dated amendment assigns the other
classes, the Gate A binding decisions apply the harder-to-pass reading,
and the frozen M15 row (token-adoption-e2e-20260926 README.md M15)
excludes only the invoked command's non-zero exit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Scout and others added 19 commits September 29, 2026 23:16
PR-A U3 design commit 10, second part: the differential scripts and a
sanitized counts-only README, in a commit before the hot-file commit
(docs/lanes.md). Nothing here names an id, a path, a host or command
text; the reports and summaries stay private outside every checkout.

- run-differential.py: runs skill_usage.py --lanes per revision (git
  archive) over this host's Codex store with a pinned --until, now with
  --rtk-check and a --totals mode, and prints only aggregate deltas.
- census.py: recounts the code-mode forms behind commits 7 and 8 with
  the checkout's own scanners (271 items the turn rule nests, 352 wait
  calls, 1,532 outer HTTP mentions, 38 extra notify outputs).
- claude-byte-identity.py: --lanes-sweep --rtk-check over a synthetic
  Claude root, hermetic and host configurations; identical digests at
  e97080fa and 14e3c376 with the replay measured.
- README.md: runs R0-R6 (1,620 rollouts, 1,436 sessions each), the
  deltas of design commits 4 to 9 (commit 9: 51 parts move from unknown
  to ineligible under --agent codex, d7 added; R6r repeated R6p with 0
  deltas), the upstream files read with their sha256, and the residuals.

Sources: openai/codex rust-v0.157.1 (36650394) and rust-v0.155.1
(be2951ea) code-mode-protocol and code-mode-runtime files; rtk-ai/rtk
v0.50.0 (1d87b8e7) src/hooks/decision.rs, permissions.rs,
hook_check.rs; the pra-u1-differential-20260929 layout.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PR-A U3 last commit, the shared hot file only (docs/lanes.md hot-file
protocol; the U3 review's high finding). Re-registers every registered
file the branch changed: the workflows README.md, SHA256SUMS and
child-usage.mjs, tests/test_skill_usage.py, tests/test_token_measurement.py,
tools/skill-usage/README.md and skill_usage.py. Adds the four new files
under evidence/artifacts/pra-u3-differential-20260929. register_file
keeps files[] sorted.

component_matrix.py --write and new_host_grand_list.py --write ran and
changed nothing. python3 scripts/validate.py exits 0 (8,180 hashed
files) and scripts/evidence_manifest.py --check passes. The branch is
not rebased on main: the integrating session takes main's copy and
re-registers these files, as the protocol says.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Binding correction 1 of the U3 build (gap G1 of the U11 design) asks for
skill_usage.py --lanes --call-ledger PATH: private codex-call-ledger/1
records {thread_id, call_id, owner_kind, tool, server, state, cause,
native_status, sandbox, code_mode, history_mode} through PR-A U2's
kernel callLedger (claude/pra-u2-kernel-measures-2d-20260929 at
b2dd1eb7, child-usage.mjs:2793-2820). The repair round's medium finding:
it was neither delivered nor recorded as missing.

Eight tests need no U2 kernel: the Codex mapping and id rules against a
stand-in for the callLedger contract, the create-only 0600 file and an
ID-free report, no ledger and no kernel probe by default, and refusals
before the scan (no --lanes, a git work tree, an existing path, --out
inside the checkout, a kernel without callLedger). Five run the
correction's fixtures through the real callLedger (a code-mode exec
with a nested exec_command, a direct exec_command, a legacy header and
an unknown state, a sub-agent child, and one row per attempted call);
they skip where the kernel exports no callLedger, as here.

Before the fix: 8 tests error (TypeError: no call_ledger argument,
AttributeError: no kernel_exports, SystemExit 2 on --call-ledger) and
5 skip.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Binding correction 1 of the U3 build (gap G1 of the U11 design):
skill_usage.py --lanes --call-ledger PATH writes codex-call-ledger/1
JSONL, one record per call the kernel measured, from PR-A U2's kernel
callLedger (claude/pra-u2-kernel-measures-2d-20260929 at b2dd1eb7,
child-usage.mjs:2793-2820) over the same rows and window as the
measurement. Each record carries schema, thread_id, call_id,
owner_kind, the kernel's tool, server, state, cause, native_status,
sandbox and code_mode, history_mode, and actor_ordinal (U2's sweep
precedent, :3209-3210). A call id is the adapter's key: the
response_item call_id, or the item_completed item.id, so a nested
exec_command in code mode is its own call. A made-up missing-N key or
a non-string id is null.

The file follows frozen_checks.private_create on main (a02ff13,
tools/token-e2e/frozen_checks.py:1309-1369) and U2's ledgerTarget: it
is created once (O_EXCL, O_NOFOLLOW) with mode 0600, never inside a
git work tree and never over an existing path. Every refusal comes
before the scan: the path, --out inside the checkout, and a kernel
that exports no callLedger (as on this branch until U2 merges). The
file is written before the report. Without the flag nothing is probed
or written. codex_session_kind and out_refused factor out existing
code unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The U3 review found the _posix_script ruling contradicted by source:
the docstring says "--" leaves no script, but the scan returns "--"
itself as the script. bash(1) OPTIONS: "A -- signals the end of
options ... An argument of - is equivalent to --", with -c reading
the first non-option argument; POSIX.1-2024 XCU sh treats a single
"-" as the first operand and ignores it. Run on this host (GNU bash
5.2.21 and dash), `bash -c -- 'echo x'`, `bash -lc -- ...` and
`dash -c - ...` each run the word after the marker.

Before the fix: resolve_command gives ('--', None) and ('-', None) for
the two scripts and ('--', None) for `bash -c --`, and M4 reads
(shell_fetch, status) (0, 'not_applicable') instead of (2, 'measured').

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
_posix_script stopped at "--" or "-" and returned the marker itself as
the script, so the kernel read "--" and missed a fetch or lane in the
real script. Now either marker ends the options and the next word is
the first non-option argument, which -c runs: bash(1) OPTIONS ("A --
signals the end of options ... An argument of - is equivalent to
--"), POSIX.1-2024 XCU sh (a single "-" is the first operand and is
ignored), and GNU bash 5.2.21 and dash on this host. `bash -c --` with
no word after it still has no script and is joined as one command.
The README's argv rule says so. zsh and ksh are not installed here,
so for them the rule rests on the documented Bourne convention only.

After the fix the new test and the 13 other normalization tests pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The U3 review found two rulings contradicted by source. Text only; no
behavior changes.

- Legacy persistence (openai/codex rust-v0.157.1 rollout/src/policy.rs):
  a legacy rollout keeps no CommandExecution, McpToolCall or web.search
  item_completed (:94-112) and no ExecCommandEnd (:145). It does keep
  McpToolCallEnd and WebSearchEnd events (:123-135) and non-completed
  SubAgentActivity events (:136-139), which this adapter does not read.
  "persists no nested tool item" becomes "persists no nested item that
  this adapter reads", and parent_without_started_item names the
  unread events. This rewording covers the CODE_MODE_FETCH_TOOLS
  comment, the limits text, the spawn_state docstring, the README and
  three test docstrings. Reading those events would change behavior,
  so it stays a residual.
- measure_codex_records said a window holding only copied records is
  "not measured at all". scan_lanes_file counts the child's own first
  session_meta (read before the start ordinal is known), so a window
  holding it and copied records is measured and counts nothing. A new
  characterization test pins this (in_window, hook counts) over three
  windows of the A1 fixture.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The repair round's medium finding: no committed file said that binding
correction 1 was undelivered. The README now has a section on the
private call ledger. It covers the command, each codex-call-ledger/1
field, and the call-id rules (response_item call_id or item_completed
item.id; a paginated direct exec_command is one call). It gives the
M14 state vocabulary, which is U2's, and the file rule
(frozen_checks.private_create on main a02ff13; U2's ledgerTarget).
It also states the dependency: until PR-A U2's kernel with callLedger
(b2dd1eb7) is merged, --call-ledger exits 2 and writes nothing, and
five real-kernel tests skip. The report's limits text, the privacy
boundary paragraph and the module docstring name the flag. Text only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
--out writes the report with Path.write_text over whatever is at its
path, so a --call-ledger to the same path would have the ledger
written over after it was created, against the create-only rule
(frozen_checks.private_create on main a02ff13; U2's ledgerTarget).
Found while reviewing the ledger's refusals in this repair round.

Before the fix the scan runs (the stubbed scan_codex_lanes raises
AssertionError: scanned) instead of a refusal before it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The report's write_out writes over its path, so the ledger's
create-only rule (frozen_checks.private_create on main a02ff13; U2's
ledgerTarget, child-usage.mjs:2821-2844 at b2dd1eb7) needs --out and
--call-ledger to name two files. The refusal joins the others before
the scan and exits 2 with nothing written. The ledger test class now
passes 9 tests here, and the 5 real-kernel ones skip.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The README's list of refusals before the scan now includes a --out
that names the ledger's own file (commit 8c49aec8), so the documented
rules match the code. Text only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Dependency paragraph said all 13 ledger tests passed. The class has
14 since fd5268a9: 13 failed first at 00c458ba, and all 14 pass at
45a5c0c1 on the scratch tree with U2's kernel at b2dd1eb7. Text only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Counts-only evidence for the repair round (binding correction 1), in
evidence/artifacts/pra-u3-differential-20260929. Class
local_integration: this host's Codex store and synthetic tests. It is
not a model run, and the kernel is U2's b2dd1eb7 for the rehearsal.

- rehearse-with-u2-kernel.sh builds a scratch tree of this branch with
  U2's kernel. The ledger tests fail first there (13 of 13, 00c458ba)
  and pass 13 of 13 at 977e56c4 and 14 of 14 at 45a5c0c1.
- ledger-host-check.py checks the host ledger (49,175 rows, 1,390
  threads) against its own report. Rows equal call_states.attempted
  per actor and state. Sandbox rows equal sandbox_operations
  (30,891). No key repeats or is null, and no id is in the report.
- R7r (5e4943e5, --rtk-check) against R6p gives DELTAS 0, with the
  totals equal in all 37 fields.
- probe-end-of-options.py finds 0 of 7,651 argv commands read
  differently.
- Also: claude-byte-identity 802c35d7 against 5e4943e5 is IDENTICAL,
  and the empty command reads as 0 unknown calls in kernel replay.

Reported, not changed: 3,650 nested web.search items (no status
field, items.rs:372-381, no result) read as cancelled_or_unfinished
in U2's projection. That is for the U2 and U3 owners to decide.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The branch's last commit, holding the shared hot file only (docs/lanes.md
hot-file protocol). It re-registers the files this round changed:
tools/skill-usage/skill_usage.py and README.md, tests/test_skill_usage.py
and the U3 evidence README. It adds the three new evidence scripts
(ledger-host-check.py, rehearse-with-u2-kernel.sh,
probe-end-of-options.py). register_file keeps files[] sorted.

component_matrix.py --write and new_host_grand_list.py --write ran
and changed nothing. python3 scripts/validate.py exits 0 (8,183
hashed files), and scripts/evidence_manifest.py --check passes.
802c35d7 also edits this file; it is not squashed, per the resume
rule. The branch is not rebased on main: the integrating session
takes main's copy and re-registers these files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both units rewrote rtkParts in child-usage.mjs and appended to the same
tests and README. The merged rtkParts keeps U2's structure (RTK_COUNTERS,
finishRtk with the B8 5 percent rule, m14State per eligible call, results)
and U3's agent parameter and D7 counters; D7's per-call counters are held
until the call is known readable so an unknown call adds nothing to any
part counter (B8). measureTranscript passes results and rtkAgent; the
aggregate keeps both. The five conflicting files are resolved as unions;
SHA256SUMS and the manifest are regenerated by the hot-file protocol.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
A web.search Extension item has no status field (WebSearchItem is
{id, query, action, results}, openai/codex rust-v0.157.1 items.rs:372-381)
and the adapter emits no result for it, so its item_completed event is its
completion. The adapter now supplies native_status completed for it, and
the kernel's callLedger reads the call succeeded instead of
cancelled_or_unfinished (U3 open question 1: all 3,650 such rows, 7.4
percent of the host ledger, read that way before).

Failing first: test_a_nested_web_search_item_reads_completed_because_its_
event_is_its_completion observed ('ws_priv_w1', 'WebFetch',
'cancelled_or_unfinished', None, True) and the same for WebSearch,
expected ('succeeded', 'completed').

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@seathatflowsinourveins seathatflowsinourveins added the lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers label Sep 30, 2026
Scout and others added 2 commits September 30, 2026 00:35
Five tests, each failing on its own expected value at the merged tree
(kernel and bridge unchanged), recorded here:

- test_unresolved_bash_calls_are_unknown_calls_under_b8_and_d7_stays_strict:
  {calls 21, unknown_calls 0, unknown_call_share 0, status measured}
  != {calls 21, unknown_calls 1, unknown_call_share 0.0476, status measured}
- test_an_unresolved_command_counts_by_b8_and_refreshes_the_share:
  status incomplete and unknown_call_share 0 != measured and 0.0476
  (one pwsh call among 20 readable ones, 4.76 percent, under B8's 5)
- test_the_same_unknown_count_reads_alike_from_an_unresolved_and_an_
  unreadable_command: the unresolved view (incomplete, share 0, d7
  incomplete) != the unreadable view (measured, 0.0476, d7 measured)
- test_group_d7_is_strict_whatever_the_split_across_actors: d7.status
  measured != incomplete for 1 unknown call among 110 split over two actors
- test_a_failed_hosted_web_search_call_reads_failed_not_completed:
  ('ws_priv_f1', 'WebSearch', 'succeeded', 'completed') != (..., 'failed',
  'failed')

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ed search status

Finding 1: the Codex bridge added unresolved commands (pwsh, powershell, cmd
or an unnamed shell) to unknown_calls after the kernel had finished, forced
rtk_parts.status incomplete and left unknown_call_share stale. The kernel now
takes measureTranscript option unresolvedBash (a non-negative integer,
refused otherwise, never beyond the Bash calls not already unknown) and counts
each as an unknown call inside rtkParts, so B8's 5 percent rule, the share and
the D7 status come from one place; the bridge passes the number and the
override is gone. One unknown call among 21 now reads measured with share
0.0476, whether the bridge or the kernel could not read it.

Findings 2 and 3: D7 keeps the harder reading on purpose (any unknown call or
unreviewed log or find part leaves d7 incomplete) while rtk_parts.status keeps
B8's tolerance; the aggregate d7 status is the strict vote (measured only when
every actor's is), independent of how calls are split across actors. The
comment and both READMEs say so and that an amendment may relax it.

Finding 4: a web.search item with no status read completed even when the
model's own web_search_call response item with the same id said failed; that
status now decides. Finding 5: the ledger dependency paragraph and the
native_status note in tools/skill-usage/README.md describe the merged tree.

Six mutants of the new guards are all caught (scratchpad mutation run):
unresolved calls not added, D7 inheriting B8, the clamp removed, the bridge
not passing unresolvedBash, a failed hosted search reading completed, and the
aggregate d7 status by B8 on sums. SHA256SUMS regenerated; the manifest is
re-registered from main's copy (docs/lanes.md hot-file protocol).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@seathatflowsinourveins

Copy link
Copy Markdown
Owner Author

Codex report on the repaired head 7f9263e1, merged tool against U3 alone (skill_usage.py --lanes --codex-root <store> --since 2026-01-01T00:00:00Z --until 2026-09-29T00:00:00Z --now 2026-09-29T00:00:00Z --json --rtk-check at both trees; 1,436 actors paired by position, same count and order; leaf-path counts only, no ids or text):

  • Actors whose rtk_parts fields differ: status 102, unknown_calls 102, ineligible_parts 90, proxy_parts 14, explicit_rtk_on_excluded_or_sensitive 1, d7.wrapped_exceptions 1. No other rtk_parts field differs for any actor.
  • unknown_calls moved down for all 102 of them (by 1 to 32 calls): B8's call-level, heredoc-aware splitting (U2) reads calls that U3 alone counted as unknown. None moved up.
  • rtk_parts.status flipped incomplete to measured for all 102, and every actor's merged status equals B8 applied to its own counts (0 inconsistent); unknown_call_share is fresh for every actor (0 stale).
  • d7.status flipped incomplete to measured for 99 actors, and every merged d7.status equals the strict rule (measured only with 0 unknown calls and 0 unreviewed log or find parts): 0 inconsistent.
  • Groups after the merge: workers 3,782 Bash calls, 0 unknown, status measured, d7 incomplete (unreviewed log or find parts); negative_controls 3,150 calls, 0 unknown, measured, d7 incomplete.
  • 0 leaves removed against U3 alone; the leaves added are U2's fields on Codex actors (call_states, m15, eligible_call_states and carrier fields).
  • Repaired-tree checks: 705 tests OK (4 environment skips), node suites 216/74/254/18 and 0 FAIL, Claude sweep 635,560 of 635,560 paths equal, run mode 226,429 of 226,429 paths equal over 20 real Workflow runs.

@seathatflowsinourveins
seathatflowsinourveins merged commit 6bbef3c into main Sep 30, 2026
27 of 30 checks passed
@seathatflowsinourveins
seathatflowsinourveins deleted the claude/pra-u23-measures-2d-20260930 branch September 30, 2026 05:14
@seathatflowsinourveins

Copy link
Copy Markdown
Owner Author

Foundation defaults handoff for native-agent-stack-2d / PR #528, following docs/lanes.md and the 2026-09-29 spend-attribution decision.

The user approved routine Codex gpt-6.1-sol / ultra coordination and gpt-6.1-sol / max primary workers, with Astra/max for consequential architecture, conflicting primary evidence, complex cross-system changes, or failure after one bounded Sol repair. Explicit model choices and the selected Astra researcher/verifier role definitions remain authoritative. Claude remains Opus judgment / native max session effort / Ultracode, saved xhigh fallback, no global effort override, and Fable advisor by default with native consent.

Sources: installed Codex 0.159.2; tagged child defaults and role precedence; Ultra versus Max native dispatch; Claude 2.1.285 and its 2.1.284 Ultracode/effort separation. Native Opus 5.5/max analytical peer review returned conditional approval with observable escalation and bounded decision records; this does not qualify tool integration or establish model superiority.

Please retain ownership of Gate A role caps, selective omitClaudeMd and carrier narrowing. In particular, assess the unconditional Serena carrier loads and the six uncapped roles using the frozen experiment protocol; no new limits were inferred or written by this defaults change. Generic routing changes are new inputs for future trials, not a retroactive modification of dated Astra role qualification. PR #381 is closed preregistration, so this packet is attached to the active owner work here.

PR #528 already contains separate executor, advisor and combined accounting with incomplete-iteration checks. Please carry the accepted implementation into canonical agent-lab first, run its supported .claude/workflows/test-child-usage.mjs, and vendor byte-identically with refreshed hashes. Current upstream lead: agent-lab eced71c572671fc3e381381c068d05b2a7a5bb22; its advisor handling is not equivalent to the completeness checks proposed here. I will consume the owner-managed result rather than create competing edits to these files. No request to expand this foundation work into trading or optional services.

seathatflowsinourveins added a commit that referenced this pull request Oct 9, 2026
Apply the complete CC read of b478dde
in ONE fix commit, with no rebase. Preserve authority, grants, requests,
conditions and withdrawal rights as paraphrase; never quote the owner.

P1 dispositions under docs/decisions/:
- 2026-10-03-retire-pr-515-catalog-index.md:33-34,62-68,80-86,287-292:
  restore the owner's retirement rule and explicit overturn gate, repair
  sentences, and restore all three full-pinned program-5 link definitions.
- 2026-10-03-retire-gpt6-lane-compression-ab.md:44,412,461-463:
  restore relayed conditional approval, not-applied status and Gate A's
  owner/six-hour condition; restore decision-a L276-295 and settings L64-85.

P2 authority and gate dispositions under docs/decisions/:
- 2026-10-01-new-wsl-definitive-defaults.md:11-14,446-454;
  2026-10-02-new-wsl-layer-consensus.md:27-34,183-186,481-483:
  restore owner delegation and both frozen authorization.reading clauses,
  owner-mandated exceptions and pins, without changing sealed consensus.
- 2026-10-02-omniroute-mac-rebuild.md:5-7,66,69;
  2026-10-03-omniroute-3851-pin.md:15-17;
  2026-10-03-retire-gateway-ab-r02.md:3:
  restore deciding session and owner's dated selection/custody authority.
- 2026-10-03-retire-pr508-token-stack-winner.md:3,7-8,24,32,76-95,
  115-125,146-155,194,251: restore four historical owner answers,
  coordinator interpretation, reinstatement/deletion gates and citations.
- 2026-10-03-new-wsl-local-models.md:79-82:
  restore scoped HF-key grant, separate from current interface source reads.
- 2026-10-04-claude-template-holds-out-token-lane-carriers.md:3-5,66-68;
  2026-10-04-coordinator-dispatch-and-spend.md:5-7,99;
  2026-10-04-new-wsl-changelog-parity.md:3-6,53;
  2026-10-04-new-wsl-clean-default-holdouts.md:3-4,18-25,60;
  2026-10-04-new-wsl-jcodemunch-user-scope.md:3-9,76-77;
  2026-10-04-new-wsl-token-layer-default.md:3-15,35:
  restore authority, two-decision overturn, standing rules and directive field.
- 2026-10-04-codex-rtk-hook-qualified.md:3-9,32,45,49,81,101,122-126:
  restore trust authority, relay/measurement caveats and withdrawal rights.
- 2026-10-05-official-upstream-never-rebuild.md:3-25,85-103:
  restore the adopted instruction strings and identify historical carriers,
  keeping coordinator interpretations separate from the owner's decisions.
- 2026-10-05-omniroute-gateway-composition.md:12,65-72:
  distinguish historical undeployed option B from the recorded C reading;
  preserve the owner's withdrawal right and running composition.
- 2026-10-05-harness-context-budget.md:87-101,213-215,279-292,327-334,
  361,459,471-480,620-636,658,734,752: restore priorities, delegation,
  timestamp provenance, bookkeeping authority, open gates and listing links.
- 2026-10-05-main-checkout-backup-disposition.md:11,15,141,144,387:
  restore publication authority and distinguish 189 historical reported
  matches from zero locally reverified; unavailable ae68811 stays qualified.

P3 and cross-artifact dispositions:
- docs/harness-defaults.md:64,70,124-126,202,205:
  restore the unconditional rule, original round-3 anchor, listing and #528.
- docs/secret-storage.md:1733-1740:
  restore the privacy decision/link and qualify full-pinned OTel interface.
- docs/decisions/2026-10-05-dagu-mise-pin-move.md:151:
  architecture consumer resolves to restored retire-pr508:120.
- Restore all removed historical Markdown URLs in owned records and
  repair broken prose without physical line-count drift. Untouched config,
  settings, handbook, manifest-stack and client-config tests again cite
  the restored decision meaning; no runtime directive or carrier changes.
- docs/decisions/2026-10-08-source-based-records-g6c-b.md:3-14,22-32,65-73
  distinguishes local authority from current interface review. The changed
  definitive-defaults regression now requires both canonical authorization
  clauses and owner delegation while still excluding verbatim owner speech.

Primary citations are verified or removed; newly added version-tag links
use full upstream SHAs and doc URLs carry fetched UTC. The GraphQL reopen
page's exact fragment is verified. No upstream tool is rebuilt or forked.
Native register_file refreshes only 21 existing hash/byte rows; membership,
other keys, frozen consensus and four sealed records remain unchanged.

FULL validation, assemble --check, render --check and the touched test module
returned 0; client-config, handbook and gateway-composition regressions also
returned 0. Exact capped commands, UTC, head and outputs accompany the push
receipt. No provider/GPU/broker acceptance or landing is claimed.

Generated by OpenAI Codex; reasoning effort max.
seathatflowsinourveins added a commit that referenced this pull request Oct 9, 2026
Apply the complete CC read of b478dde
in ONE fix commit, with no rebase. Preserve authority, grants, requests,
conditions and withdrawal rights as paraphrase; never quote the owner.

P1 dispositions under docs/decisions/:
- 2026-10-03-retire-pr-515-catalog-index.md:33-34,62-68,80-86,287-292:
  restore the owner's retirement rule and explicit overturn gate, repair
  sentences, and restore all three full-pinned program-5 link definitions.
- 2026-10-03-retire-gpt6-lane-compression-ab.md:44,412,461-463:
  restore relayed conditional approval, not-applied status and Gate A's
  owner/six-hour condition; restore decision-a L276-295 and settings L64-85.

P2 authority and gate dispositions under docs/decisions/:
- 2026-10-01-new-wsl-definitive-defaults.md:11-14,446-454;
  2026-10-02-new-wsl-layer-consensus.md:27-34,183-186,481-483:
  restore owner delegation and both frozen authorization.reading clauses,
  owner-mandated exceptions and pins, without changing sealed consensus.
- 2026-10-02-omniroute-mac-rebuild.md:5-7,66,69;
  2026-10-03-omniroute-3851-pin.md:15-17;
  2026-10-03-retire-gateway-ab-r02.md:3:
  restore deciding session and owner's dated selection/custody authority.
- 2026-10-03-retire-pr508-token-stack-winner.md:3,7-8,24,32,76-95,
  115-125,146-155,194,251: restore four historical owner answers,
  coordinator interpretation, reinstatement/deletion gates and citations.
- 2026-10-03-new-wsl-local-models.md:79-82:
  restore scoped HF-key grant, separate from current interface source reads.
- 2026-10-04-claude-template-holds-out-token-lane-carriers.md:3-5,66-68;
  2026-10-04-coordinator-dispatch-and-spend.md:5-7,99;
  2026-10-04-new-wsl-changelog-parity.md:3-6,53;
  2026-10-04-new-wsl-clean-default-holdouts.md:3-4,18-25,60;
  2026-10-04-new-wsl-jcodemunch-user-scope.md:3-9,76-77;
  2026-10-04-new-wsl-token-layer-default.md:3-15,35:
  restore authority, two-decision overturn, standing rules and directive field.
- 2026-10-04-codex-rtk-hook-qualified.md:3-9,32,45,49,81,101,122-126:
  restore trust authority, relay/measurement caveats and withdrawal rights.
- 2026-10-05-official-upstream-never-rebuild.md:3-25,85-103:
  restore the adopted instruction strings and identify historical carriers,
  keeping coordinator interpretations separate from the owner's decisions.
- 2026-10-05-omniroute-gateway-composition.md:12,65-72:
  distinguish historical undeployed option B from the recorded C reading;
  preserve the owner's withdrawal right and running composition.
- 2026-10-05-harness-context-budget.md:87-101,213-215,279-292,327-334,
  361,459,471-480,620-636,658,734,752: restore priorities, delegation,
  timestamp provenance, bookkeeping authority, open gates and listing links.
- 2026-10-05-main-checkout-backup-disposition.md:11,15,141,144,387:
  restore publication authority and distinguish 189 historical reported
  matches from zero locally reverified; unavailable ae68811 stays qualified.

P3 and cross-artifact dispositions:
- docs/harness-defaults.md:64,70,124-126,202,205:
  restore the unconditional rule, original round-3 anchor, listing and #528.
- docs/secret-storage.md:1733-1740:
  restore the privacy decision/link and qualify full-pinned OTel interface.
- docs/decisions/2026-10-05-dagu-mise-pin-move.md:151:
  architecture consumer resolves to restored retire-pr508:120.
- Restore all removed historical Markdown URLs in owned records and
  repair broken prose without physical line-count drift. Untouched config,
  settings, handbook, manifest-stack and client-config tests again cite
  the restored decision meaning; no runtime directive or carrier changes.
- docs/decisions/2026-10-08-source-based-records-g6c-b.md:3-14,22-32,65-73
  distinguishes local authority from current interface review. The changed
  definitive-defaults regression now requires both canonical authorization
  clauses and owner delegation while still excluding verbatim owner speech.

Primary citations are verified or removed; newly added version-tag links
use full upstream SHAs and doc URLs carry fetched UTC. The GraphQL reopen
page's exact fragment is verified. No upstream tool is rebuilt or forked.
Native register_file refreshes only 21 existing hash/byte rows; membership,
other keys, frozen consensus and four sealed records remain unchanged.

FULL validation, assemble --check, render --check and the touched test module
returned 0; client-config, handbook and gateway-composition regressions also
returned 0. Exact capped commands, UTC, head and outputs accompany the push
receipt. No provider/GPU/broker acceptance or landing is claimed.

Generated by OpenAI Codex; reasoning effort max.
seathatflowsinourveins added a commit that referenced this pull request Oct 9, 2026
…ozen replay (#886)

* docs: ground G6c history spans in pinned upstream practice

* docs: source harness context practices

* docs: ground G6c-B records in upstream sources and preserve replay

* docs: retain unresolved archive locators as custody data

* docs: resolve G6c-B quoted condition and legacy anchor

* Restore #886 decision authority, gates and historical source anchors

Apply the complete CC read of b478dde
in ONE fix commit, with no rebase. Preserve authority, grants, requests,
conditions and withdrawal rights as paraphrase; never quote the owner.

P1 dispositions under docs/decisions/:
- 2026-10-03-retire-pr-515-catalog-index.md:33-34,62-68,80-86,287-292:
  restore the owner's retirement rule and explicit overturn gate, repair
  sentences, and restore all three full-pinned program-5 link definitions.
- 2026-10-03-retire-gpt6-lane-compression-ab.md:44,412,461-463:
  restore relayed conditional approval, not-applied status and Gate A's
  owner/six-hour condition; restore decision-a L276-295 and settings L64-85.

P2 authority and gate dispositions under docs/decisions/:
- 2026-10-01-new-wsl-definitive-defaults.md:11-14,446-454;
  2026-10-02-new-wsl-layer-consensus.md:27-34,183-186,481-483:
  restore owner delegation and both frozen authorization.reading clauses,
  owner-mandated exceptions and pins, without changing sealed consensus.
- 2026-10-02-omniroute-mac-rebuild.md:5-7,66,69;
  2026-10-03-omniroute-3851-pin.md:15-17;
  2026-10-03-retire-gateway-ab-r02.md:3:
  restore deciding session and owner's dated selection/custody authority.
- 2026-10-03-retire-pr508-token-stack-winner.md:3,7-8,24,32,76-95,
  115-125,146-155,194,251: restore four historical owner answers,
  coordinator interpretation, reinstatement/deletion gates and citations.
- 2026-10-03-new-wsl-local-models.md:79-82:
  restore scoped HF-key grant, separate from current interface source reads.
- 2026-10-04-claude-template-holds-out-token-lane-carriers.md:3-5,66-68;
  2026-10-04-coordinator-dispatch-and-spend.md:5-7,99;
  2026-10-04-new-wsl-changelog-parity.md:3-6,53;
  2026-10-04-new-wsl-clean-default-holdouts.md:3-4,18-25,60;
  2026-10-04-new-wsl-jcodemunch-user-scope.md:3-9,76-77;
  2026-10-04-new-wsl-token-layer-default.md:3-15,35:
  restore authority, two-decision overturn, standing rules and directive field.
- 2026-10-04-codex-rtk-hook-qualified.md:3-9,32,45,49,81,101,122-126:
  restore trust authority, relay/measurement caveats and withdrawal rights.
- 2026-10-05-official-upstream-never-rebuild.md:3-25,85-103:
  restore the adopted instruction strings and identify historical carriers,
  keeping coordinator interpretations separate from the owner's decisions.
- 2026-10-05-omniroute-gateway-composition.md:12,65-72:
  distinguish historical undeployed option B from the recorded C reading;
  preserve the owner's withdrawal right and running composition.
- 2026-10-05-harness-context-budget.md:87-101,213-215,279-292,327-334,
  361,459,471-480,620-636,658,734,752: restore priorities, delegation,
  timestamp provenance, bookkeeping authority, open gates and listing links.
- 2026-10-05-main-checkout-backup-disposition.md:11,15,141,144,387:
  restore publication authority and distinguish 189 historical reported
  matches from zero locally reverified; unavailable ae68811 stays qualified.

P3 and cross-artifact dispositions:
- docs/harness-defaults.md:64,70,124-126,202,205:
  restore the unconditional rule, original round-3 anchor, listing and #528.
- docs/secret-storage.md:1733-1740:
  restore the privacy decision/link and qualify full-pinned OTel interface.
- docs/decisions/2026-10-05-dagu-mise-pin-move.md:151:
  architecture consumer resolves to restored retire-pr508:120.
- Restore all removed historical Markdown URLs in owned records and
  repair broken prose without physical line-count drift. Untouched config,
  settings, handbook, manifest-stack and client-config tests again cite
  the restored decision meaning; no runtime directive or carrier changes.
- docs/decisions/2026-10-08-source-based-records-g6c-b.md:3-14,22-32,65-73
  distinguishes local authority from current interface review. The changed
  definitive-defaults regression now requires both canonical authorization
  clauses and owner delegation while still excluding verbatim owner speech.

Primary citations are verified or removed; newly added version-tag links
use full upstream SHAs and doc URLs carry fetched UTC. The GraphQL reopen
page's exact fragment is verified. No upstream tool is rebuilt or forked.
Native register_file refreshes only 21 existing hash/byte rows; membership,
other keys, frozen consensus and four sealed records remain unchanged.

FULL validation, assemble --check, render --check and the touched test module
returned 0; client-config, handbook and gateway-composition regressions also
returned 0. Exact capped commands, UTC, head and outputs accompany the push
receipt. No provider/GPU/broker acceptance or landing is claimed.

Generated by OpenAI Codex; reasoning effort max.

---------

Co-authored-by: seathatflowsinourveins <234074349+seathatflowsinourveins@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant