Skip to content

Ground the Claude Code native practice in primary sources and one cross-client mapping - #958

Merged
seathatflowsinourveins merged 5 commits into
mainfrom
claude/cc-native-practice-followup-20261009
Oct 10, 2026
Merged

seathatflowsinourveins merged 5 commits into
mainfrom
claude/cc-native-practice-followup-20261009

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Oct 10, 2026 •

Copy link
Copy Markdown
Owner

Scope

  • What this PR changes, in one or two sentences: it grounds the merged Claude Code native practice record (Claude Code native practice, 2026-10: one evidenced default per role slot #923) in primary sources and adds the cross-client page. A reading of 31 primary sources (22 Anthropic engineering and Claude posts on code and workflow quality, 9 cross-client sources) attaches re-checkable sources (URL, fetch time, sha256 of the bytes read) to 24 of the 33 role slots; reference/cross-client.md maps procedure, native execution per client and the review gate for Claude Code and Codex; the four accepted default extensions, three held contradictions and the model and effort routing are recorded; the settings template's cleanupPeriodDays moves from 3650 to 180 to match the host value; the agentsview retention probe, the old-archive coverage check and the M1 sandbox measurements are added as evidence; two documentation fixes.
  • Base commit: a30c2188e4423f05a7448e5f7a3bcfd858e0f5b8 (main with Claude Code native practice, 2026-10: one evidenced default per role slot #923 merged). The branch was rebased once onto it from its first base (cbc9ea58, an earlier Claude Code native practice, 2026-10: one evidenced default per role slot #923 head); the one commit replayed with a conflict only in manifests/evidence.json, resolved by taking main's side and re-registering this commit's paths through host_receipts.register_file. Before the first push the commit was amended once, unpublished: it reworded one doc line, moved one cited line number and added the doc-correction tests described below. A second commit adds the counts test and corrects one phrase of the addendum (below); a third extends the test to every other figure the addendum publishes from the reading and the probes (the 22/9 source split, readability, run id and settings, spend, the 54% and 16% of the code-review post, the 2,501 sessions and 1,784,512,512 deleted bytes, the 24 credential stores); a fourth (8ca5d825a9ff58a084ec1d4266b69dba128deb79) answers the co-op's Astra read at 7d634e5a (CHANGES_REQUESTED, two P2s): the reading now records the models and efforts the run's children were measured at and the test compares the addendum with them, and the slot manifest and the reading's locators are labeled as the baseline snapshot at a30c2188e with a provenance test; a fifth (7b21614594f255396cbafab203d864f5cf699e2b) answers the command center's read at 8ca5d825 (CHANGES_REQUESTED, one P2): the published spend, $63.87, counted the executors only, and the run's advisor calls bill at the advisor's rates outside their usage, so the reading now records the advisor's tokens and calls, the cited rate table and the repriced total ($91.51), and the test recomputes the spend from them. Main has since moved to f6ae0de74 (Hold and flag stale extended-hours exits before native submission #940, which also touches manifests/evidence.json), so the landing rebase re-registers this PR's paths.
  • Lane: lane:foundation
  • Owned paths touched: .claude/skills/claude-native-practice/ (reference pages, new reference/cross-client.md, reference/slots.json; no change to the skill's trigger description), adoption/templates/claude.settings.template.json (one value), docs/decisions/2026-10-09-claude-code-native-practice.md (addendum), docs/native-dashboards.md (one bullet), examples/claude-native/workflows/README.md (adopt step), catalogs/foundation/upstream-surface-dispositions.json (one row's cited line, 1083 to 1089, because the README edit moved it), tests/test_native_practice_doc_corrections.py, tests/test_primary_source_reading_counts.py and tests/test_native_practice_snapshot_provenance.py (new), evidence/artifacts/claude-native-practice-20261009/ (three new files), manifests/evidence.json (7 files added, 18 changed; no other key).

Two documentation claims were wrong and are corrected from their sources, each with a test that fails on the old text. docs/native-dashboards.md said the agentsview unit serves the default ~/.agentsview; its launcher sets AGENTSVIEW_DATA_DIR to the new-wsl-native-stack/agentsview directory, and the bullet now cites the launcher and the upstream line that makes the variable override the default. The workflows README's Adopt step named an agents/ directory that is not beside it and did not name the installer's --only workflows and --remove-workflows. Dated decision records (2026-09-28, 2026-09-30) cite lines of that README as of their dates and are not rewritten; only the machine-checked citation moved.

A third claim was imprecise in the addendum itself: it said "9 match no slot" for the practices the defaults do not cover, but the nine mapped to no slot are a different set (5 extend, 4 not covered). The addendum now says 9 are not covered by any default, and that 186 map to one of 24 role slots and 9 to none; tests/test_primary_source_reading_counts.py builds that sentence from the artifact and asserts it.

Follows #923. Nothing here installs or changes a host: the settings template is a file in this repository, and applying it to a host is the command center's act.

SOTA sources

Evidence-class table

Claim Evidence class Command / receipt
31 of 31 sources readable; 248 practices extracted, 195 kept and 53 refuted by an Opus max refuter that refutes by default; of the kept, 56 agree with a default, 127 extend one, 3 contradict one, 9 not covered by any default; 19 rest on a measurement the source reports source_review primary-source-reading.json (run wf_bee0b670-035, 62 of 62 agents, 0 errors; $91.51 at API list price: $63.87 for the Opus 5.5 executors and $27.64 for the answered Fable 5.1 advisor calls)
186 kept practices map to 24 of the 33 slots (primary_sources_total, equal to the reading's by_slot_kept without its none bucket of 9); each slot lists up to six of them in primary_sources (96 entries), each with URL, fetch time and sha256 of the bytes read, and all 96 agree with primary-source-reading.json; the addendum's counts (195 kept of 248; 56 agree, 127 extend, 3 contradict, 9 not covered by any default; 186 in 24 slots and 9 in none; 19 measured; 124 both clients) recompute from the artifact source_review reference/slots.json, primary-source-reading.json; recomputed on every run by tests/test_primary_source_reading_counts.py (9 tests; of 11 mutations tried, each fails the matching check: a changed addendum figure, a by_slot_kept count off by one, a differing sha256, the old wording, the source split, the spend, the deleted bytes, the credential-store count, the 54% figure, an unreadable source and a differing deleted-bytes entry)
The addendum's reader (Opus 5.5 at xhigh) and refuter (Opus 5.5 at max) are the settings the run's 62 children were measured at: 31 Read children at xhigh and 31 Refute children at max, all claude-opus-5-5, recorded in the reading's usage.by_phase with the tool's commit, sha256, command and exit code (exit 1 under --require-effort max lists exactly the 31 readers, which run at xhigh by design); the 180 in the retention paragraph is the settings template's value local_integration (child-usage.mjs over the retained transcripts; I recomputed the 31/31 split from the record) tests/test_primary_source_reading_counts.py (the reader/refuter test and its mutation test; the 180 test); record child-usage-wf_bee0b670-035.json sha256 7b81e56efef8ca52ae778330f6882747f6f14fff5717cb3729b37d3258386d87, retained in the lane's research record and not committed
claude-native-slot-manifest.json is the baseline snapshot the reading compared against: built 2026-10-09T15:00:51Z from reference/slots.json as merged in #923 (a30c2188e, sha256 a7d87f9a…), before this PR extended that file; it now carries a snapshot block (kind, revision, baseline hash, the current decision source with its hash and the differing fields), and the reading's local_references binds its page:line locators to the same revision with the recorded model output untouched source_review for the label and the measured locators (84 locators read the same at the readers' checkout and at a30c2188e; the 6 that quote a phrase match 6 of 6 there and 2 of 6 at the 7d634e5a head), local_integration for the checks tests/test_native_practice_snapshot_provenance.py (label, listed differences, no other exported field differs while the file has the labeled bytes; where history holds the revision, the baseline rows and the six quoted locators)
Mutations of the two promises, in real detached worktrees: at 7d634e5a 15 of 15 are not caught (reader or refuter at low, another model, the 180 in the addendum or the template, the manifest hash and a route, two locators, a removed slots.json extension); at the fourth commit 26 of 28 are caught. The two not caught are the 13:50:06Z deletion time (its receipt has no time field to recount it from) and a locator written before its quote (the quoted-phrase check covers 6 of the 86 locators; the other 78 rest on the label and the authoring-time measurement) local_integration the tables pr958/fork958-mut-before.txt and fork958-mut-after.txt in the lane's research record
The run's spend is $91.51, not $63.87: the executors' tokens at the pricing page's Opus 5.5 rates cost $63.87, and the 29 answered calls of the claude-fable-5-1 advisor the children called (1,499,557 input and 252,949 output tokens, 28 children; 63 calls made, 34 refused as too_many_requests with no usage) cost $27.64 at its rates, billed outside the executors' usage source_review for the billing rule and the rates (the two pages, read 2026-10-10), local_integration for the recount recounted by me from the retained child-usage record (each child's advisor_iterations and advisor_totals; sha256 7b81e56e…) and from the 63 raw transcripts (the advisor server_tool_use blocks and their results); recorded in primary-source-reading.json (usage.advisor_by_model, advisor_calls, pricing, priced_usd_*) and worded in the addendum; the command center's read of 8ca5d825 found it
The spend recomputes from the recorded tokens and the recorded rates, the recorded rates equal an independent literal of the pricing table, and the addendum and the run description state the total, its two shares and the advisor's calls; the previous figure and every one of 12 mutations (the total set back to $63.87 or to the executors' spend, the advisor's tokens removed or increased, a lower advisor rate, a changed executor rate, an extra answered call, a changed child count, the advisor missing from the run description or the addendum, a cache split that no longer adds up) fail local_integration tests/test_primary_source_reading_counts.py (the four new tests; the four error against the previous head's artifacts); mutation table pr958/mut958c.txt in the lane's research record
agentsview 0.44.0 keeps a session, its messages and its export row after the transcript is deleted, through incremental and full resyncs local_integration probes-20261009.json (isolated scratch instance)
All 2,501 sessions of the pre-move agentsview archive were present in the live one; the superseded set (1,784,512,512 bytes) was deleted local_integration probes-20261009.json (read-only coverage check before the deletion)
M1 sandbox facts on this host (what the sandbox runs, blocks and refuses; credential stores need Read(...) denies and secret variables need sandbox.credentials.envVars) local_integration probes-20261009.json; measured on the installed client, kept as measurements, no profile is shipped
The model and effort keys named in the addendum exist in 2.1.295 and the template already carries the routing values source_review settings-reference.md lines cited in the addendum; adoption/templates/claude.settings.template.json
The new evidence artifacts pass the repository's scan and the manifest local_integration validate.py --scan-file per file, evidence_manifest.py --check (below)
In agentsview v0.44.0 AGENTSVIEW_DATA_DIR overrides the default data directory; the host launcher sets it to ${XDG_DATA_HOME:-~/.local/share}/new-wsl-native-stack/agentsview and the unit's ExecStart runs that launcher source_review upstream config.go:2051-2053 at the tagged commit; the unit and launcher files read on the host 2026-10-10 (a host file the repository cannot read, so the probe artifact is the retained reading)
The README's Adopt step names flags the installer accepts and a first-step directory that resolves; the dashboards bullet cites the pinned upstream line and agrees with the probe artifact local_integration tests/test_native_practice_doc_corrections.py: 5 tests pass at this head; on origin/main plus the new test and the probe artifact 4 of 5 fail

No setting, hook, permission, catalog or installed component changes on any host in this PR.

Local commands run

Head 7b21614594f255396cbafab203d864f5cf699e2b (five commits; the gates ran on the working tree that became the fifth) on a30c2188e (CPython 3.13.16 locally; CI runs 3.12), TMPDIR outside /tmp and outside home:
$ python3 -E -s -B scripts/validate.py
{"components": 70, "hashed_files": 11338, "profiles": 4, "receipts": 239, "status": "passed"}   (rc 0)
$ python3 -E -s -B scripts/evidence_manifest.py --check
{"files": 11338, "status": "passed"}   (rc 0)
$ python3 -E -s -B scripts/component_matrix.py --write && python3 -E -s -B scripts/new_host_grand_list.py --write
rc 0; git status afterwards shows no change to a generated report
$ python3 -E -s -B scripts/validate_convergence.py --all-recorded
rc 0
$ python3 -E -s -B scripts/validate.py --scan-file <each of the three artifacts under evidence/artifacts/claude-native-practice-20261009/>
rc 0 for each
$ python3 -E -s -B -m unittest <the #923 module list> tests.test_apply_claude_settings tests.test_context_mode_practice_docs tests.test_currency_due_notice tests.test_install_claude_profile tests.test_observability_tool_names tests.test_new_wsl_client_config tests.test_observability_writer_identity tests.test_token_lanes_session_start tests.test_render_config tests.test_secret_path_guard tests.test_upstream_surface_watch tests.test_windows_terminal_defaults tests.test_native_practice_doc_corrections tests.test_primary_source_reading_counts tests.test_native_practice_snapshot_provenance <all 27 tests/test_local_pages_*.py>
Ran 1646 tests in 299.003s; OK (skipped=17)
$ git diff origin/main --unified=0 | grep '^+'   # added lines, scanned for the host's private names
hits 0

The first targeted run of the same command at the rebased head (before the README citation and the doc corrections; the first commit's head was 73206a2, CI green at 36 checks) ended FAILED (failures=1) in tests.test_upstream_surface_watch.DispositionCitationTests.test_every_cited_line_names_the_key for claude:env:CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS (README line 1083 had moved); the disposition row now cites 1089. The full suite is not run locally: CI's eight shards run it.

The co-op's Astra read of 7d634e5a found that the counts test did not compare the addendum's reader and refuter settings with the recorded run, and that the slot-manifest export was the #923 baseline while its provenance was implicit; the fourth commit records the settings from the run's own usage output and labels the baseline, with the mutation tables above. The local full-suite shards in a CI-like environment are noisy on this host (four of eight red at the CI-green #925 head on tests no change touches), so the list above is the targeted run; CI's eight shards are the full-suite measurement.

Decision record

docs/decisions/2026-10-09-claude-code-native-practice.md, section "Addendum (2026-10-09): primary sources, one practice for both clients, and measured probes": the reading and its counts, the cross-client resolution and its measured basis (Anthropic's code-review post, the multiagent-systems post), the four default extensions, the three contradictions held as candidates with the measurement that settles each (the M7 A/B, api-actions' scope, the planning-persistence paired run), the routing and retention values, and the sandbox measurements.

Open follow-ups, owner cc-native-practice:

  1. One PR after this lands adds the skill to adoption/skills/manifest.json (ref = this PR's landed commit, tree_sha and skill_md_sha256 from its bytes) and raises trial.on_description_char_cap from 10,500 to 11,000, which the command center applies with tools/adoption/install_skills.py (command center ruling 2026-10-10). The listed descriptions already total 10,374 characters and this skill's is 349, so a listed row needs the higher cap (about 90 tokens per session); the description must stay listed, because organic activation depends on it (5 of 6 fresh sessions). The cap comes back down when the skills-slot verdicts of wave 20261010 take demoted alternatives off the listing.
  2. Addenda with the paired-run results (orchestration, planning persistence, review gate), each decided by the preregistered rule.
  3. Fresh-session proofs in us-equities-trading and a Codex lane showing the skill firing and reference/slots.md being read.

Host evidence

Not applicable: no file under evidence/hosts/ changes.

Checklist

  • New/changed GitHub Actions are pinned to a full commit SHA with a version comment (no floating tags). (none changed)
  • New/changed workflows declare top-level permissions: {} and grant each job only what it needs (contents: read, or an explicitly justified addition). (none changed)
  • No secrets are printed, logged or committed; no new required secret was added without a documented owner.
  • No new paid hosting, subscription or billing surface was introduced.
  • Peer-owned untracked files and worktrees were preserved (not deleted, moved or overwritten).

🤖 Generated with Claude Code

A 31-source reading (Anthropic engineering and Claude blog posts on code and
workflow quality, the Agent Skills specification, the Codex docs and
OpenAI's harness-engineering post), each practice read by an Opus reader and
refuted by default by an Opus max refuter, adds re-checkable primary sources
to 24 slots (fetch time and sha256 of the bytes read). The command center's
rulings land with it: one practice for Claude Code and Codex with native
execution per client (reference/cross-client.md), four default extensions,
three contradictions held as candidates, the model and effort routing with
its 2.1.295 keys, and cleanupPeriodDays 180 in the template. The agentsview
retention probe, the old-archive coverage check and deletion, and the M1
sandbox measurements are recorded as evidence.

Two doc fixes: the agentsview data directory (the unit serves the directory its
launcher sets; the bullet cites the upstream v0.44.0 source line and the host
launcher path) and the workflows README's adopt step (the installer's own
flags; the first step's directory resolves from the README). Each has a test
that fails on the pre-fix text (tests/test_native_practice_doc_corrections.py).
The README edit moves the line the surface-watch disposition row for
CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS cites, so that row follows it (1083 to
1089).

Co-Authored-By: Claude Opus 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 Oct 10, 2026
The addendum and slots.json state counts from the 31-source reading (248
practices, 195 kept, 56 agree, 127 extend, 3 contradict, 9 not covered; 186
mapped to 24 slots and 9 to none; 19 measured; 124 for both clients). A
published figure should come from the published events by code that runs
every time, as the first read of #923 found for a different rate. The new
test recounts each figure from primary-source-reading.json, compares each
slot's total and listed sources with the reading, and asserts the addendum's
sentence built from the recounted values. It fails on four mutations (a
changed addendum figure, a by_slot_kept count off by one, a differing sha256,
the old wording).

The addendum said "9 match no slot" for the practices the defaults do not
cover; the nine with no slot are a different set (5 extend, 4 not covered).
The sentence now says 9 are not covered by any default, and that 186 map to a
role slot and 9 to none.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The co-op's read of #958 asks that the recount catch any published figure it
does not recount. The addendum also states: the split of the 31 sources into
22 Anthropic posts and 9 cross-client sources, that all were readable, the run
id and the reader and refuter settings, the $63.87 spend, the 54% and 16%
figures of Anthropic's code-review post, the 2,501 archive sessions and the
1,784,512,512 deleted bytes with their 2026-10-23 leftovers date, and the 24
credential stores of the sandbox measurement. Each is now recounted from the
reading or the probe artifact and asserted in the addendum's own words (nine
tests now). Eleven mutations of the record or an artifact each fail the test.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… label the baseline exports

The co-op's Astra read of this PR at 7d634e5 found two gaps (P2-1, P2-2).

P2-1: test_primary_source_reading_counts compared the reading's own prose with itself, so changing the addendum's "reader at
xhigh" or "refuter at max" to "low" left every test green (reproduced at 7d634e5: 14 of 14 mutations of the addendum,
template, manifest, reading locators and slots.json pass). The reading now records the models and efforts the run's children
were measured at (usage.by_phase: 31 Read children at xhigh, 31 Refute children at max, all claude-opus-5-5), copied from
child-usage.mjs's output for wf_bee0b670-035 with the tool's commit, sha256, command and exit code; the exit 1 under
--require-effort max lists exactly the 31 readers, which run at xhigh by design. The test derives "an Opus 5.5 reader at
xhigh" and "an Opus 5.5 refuter at max" from that record, compares the addendum and the reading's run text with it, and
carries mutations of each setting, of the model and of a second statement. The same file's retention paragraph now has a
test that the addendum's 180 is the settings template's value; the 13:50:06Z deletion time is left unchecked because the
deletion receipt has no time field to recount it from.

P2-2: the slot manifest is the W2 data file built on 2026-10-09 from reference/slots.json as merged in #923 (a30c218,
sha256 a7d87f9a...), before this PR extended it; the reading's relations are relative to those rows, and its page:line
locators were read from a checkout whose reference pages are byte-identical to that revision's. The manifest now carries a
snapshot block (kind baseline, revision, the baseline hash, the current decision source and the six fields in which it now
differs), and the reading a local_references block binding its locators to the same revision, with the recorded model
output untouched. tests/test_native_practice_snapshot_provenance.py checks the label, that each listed difference holds, that
no other exported field differs while slots.json has the labeled bytes, and, where the history holds the revision, that the
manifest rows are the baseline's and that the six locators that quote a phrase find it at their cited line at that revision
(they do for 6 of 6 there and for 2 of 6 at this PR's head). The decision record gains one paragraph saying what the exports
describe.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…he spend in the test

The command center's read of this PR at 8ca5d82 (CHANGES_REQUESTED, one P2): the addendum's
"$63.87 at API list price" is the executors' tokens only. The run's children also called the
advisor tool, a claude-fable-5-1 advisor, and advisor calls bill at the advisor model's rates
outside the top-level usage (the advisor tool's "Usage and billing": "Top-level usage fields
reflect executor tokens only. Advisor tokens are not rolled into the top-level totals because
they are billed at a different rate"). Re-derived from the retained child-usage record and the
raw transcripts, not from the read: 63 advisor calls, 29 answered (8 by readers, 21 by
refuters, in 28 children; 1,499,557 input and 252,949 output tokens, no cache tokens) and 34
refused as too_many_requests, which carry no usage. At the pricing page's rates as read
2026-10-10 (Opus 5.5 $4 input, $5 5-minute cache write, $0.20 cache hit, $20 output; Fable 5.1
$10, $12.50, $0.25, $50 per million tokens) the executors cost $63.87 and the advisor $27.64:
the spend is $91.51, and the published figure was 30% low.

The reading now carries the advisor's tokens by model and its calls by phase, the executors'
cache creation split into its 5-minute and 1-hour tokens (all 5-minute, from each message's
own split), the rate table with the two pages' sha256 and read time, and the executor, advisor
and total spend; its run description and the addendum name the advisor and its calls, and the
addendum gives the total with both shares and says the first figure counted the executors only.

tests/test_primary_source_reading_counts.py recomputes the spend from the recorded tokens and
the recorded rates, holds the recorded rates to an independent literal of the pricing table,
checks that the addendum states the total with its two shares and that the run description and
the addendum name the advisor with calls that add up (by phase, answered, refused). Run against
the previous head's artifacts the four new tests error (the advisor fields are absent); twelve
mutations of the artifact or the addendum (the total set back to $63.87 or to the executors'
spend, the advisor's tokens removed or increased, a lower advisor rate, a changed executor
rate, an extra answered call, a changed child count, the advisor missing from the run
description or the addendum, a cache split that no longer adds up) each fail the test and the
unmutated files pass.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@seathatflowsinourveins
seathatflowsinourveins marked this pull request as ready for review October 10, 2026 16:19
@seathatflowsinourveins
seathatflowsinourveins merged commit 7a6bfbc into main Oct 10, 2026
36 checks passed
@seathatflowsinourveins
seathatflowsinourveins deleted the claude/cc-native-practice-followup-20261009 branch October 10, 2026 16:32
seathatflowsinourveins added a commit that referenced this pull request Oct 10, 2026
…d raise the listing ceiling to 11,000 (#972)

The command center's ruling (option (a) of four, 2026-10-10): the repository's own
claude-native-practice skill (#923, #958) becomes a row of adoption/skills/manifest.json at #958's
landed commit, listed on for Claude Code and enabled in Codex, and the manifest's own ceiling on
the on-listed description sum moves from 10,500 to 11,000 characters. The sum goes from 10,374 to
10,723 (+349, 277 characters left), the Codex enabled and catalog sums from 10,055 to 10,404, and
the Codex catalog from 27 to 28 skills, 3,171 estimated tokens against the 6,000 setting. The row
costs about 90 tokens in every session whose listing includes it.

The row is computed from the landed commit's own bytes (tree, SKILL.md sha256 and size, description
length) and carries first_party: true, because a skill of this repository has no skills.sh page:
its audits.url says it is reviewed in the pull request that changes it. tests.test_skills_manifest
holds a first-party row to this repository as its source and to that form while every other row
keeps the skills.sh requirement.

Follows from the row: the Claude template's skillOverrides entry, the Codex template comment's count,
the runtime-worker exclusion (adoption_ref, with a reason and an overturn) and its README count, the
landscape catalog's source and its agent-docs task, and the dispositions row that cites a manifest
line. The decision record gives the listing check, the three declared test changes, the inverse and
the revisit (the ceiling comes back down when the wave's skills-slot verdicts land).

Co-authored-by: seathatflowsinourveins <234074349+seathatflowsinourveins@users.noreply.github.com>
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
seathatflowsinourveins added a commit that referenced this pull request Oct 11, 2026
…client page's Claude sources (#986)

* Correct the advisor-spend record's wording and provenance fields (the micro's four P3s)

The command center's Claude micro of #958 at 7b21614 (PASS_WITH_P3). Items a, b, c and d, each a
claim of this record that was imprecise or untested, with a test that fails before for a, b and d:

a. The run text said the 34 refused advisor calls were "all billed at the advisor's rates"; a
   refused call (error_code too_many_requests) carries no usage and costs nothing, and only the 29
   answered calls bill. The text now says so, and a test holds it (and the absence of "all billed").
b. usage.pricing.read_utc, "14:23Z", had been typed into the script that wrote the artifact. The
   field is now written by a script that re-fetched both pages at that moment and asserted their
   bytes hash to the recorded page_sha256 and advisor_page_sha256 (unchanged); read_note says so and
   that the first read, at about 14:23Z, gave the same hashes. A test holds the second-resolution
   form and the date the addendum names.
c. The 5-minute plus 1-hour cache-write check covered the executors only; it now covers the
   advisor's entries too.
d. usage.pricing.assumptions records the speed the list price assumes, recounted from the retained
   child-usage record: 677 executor messages record speed standard, 24 record none (service tier
   standard; $0.85 of the executors' spend at standard list) and the 29 advisor iterations record
   neither speed nor service tier, which the API does not report for an advisor iteration. A test
   holds the counts against the sentence and the advisor's call count.

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

* Pin the cross-client page's Claude column to documentation pages, hashes and lines

The command center's read of #958 at 8ca5d82, P3: the Claude column of reference/cross-client.md
cited no source (only the version in the header), and the mechanism rows were not tied to the
documentation or the 2.1.295 changelog.

The page now carries, under the table, one cell per need naming the Claude Code documentation page
it rests on, the page's sha256 prefix, the fetch time and the line (LF-counted in the retained
capture): sub-agents lines 11 and 492, workflows 204, hooks 2587 and 2655, cli-reference 103 and
112, plugins 9, commands 71, headless 17. The URL, hash and fetch time of each cell are locators
that claims.json already records for the 2026-10-09 reading; /review-changes is named as this
repository's own saved Workflow (examples/claude-native/workflows/review-changes.js), which no
documentation page can source. The generator asserted, before writing, that each retained copy's
sha256 equals the recorded capture and that each cited line matches the phrase it is cited for.

tests/test_native_practice_cross_client_sources.py needs only repository files (the retained
copies are not in the repository): every need of the mechanism table has a cell, every citation
is a page, hash prefix and fetch time that claims.json records exactly once, and a changed hash,
fetch time or page, a removed citation or a removed row each fail it.

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

* Validate every citation of a cross-client cell on its own (the GPT read of 428fcb1, P2)

The first version of tests/test_native_practice_cross_client_sources.py parsed a
cell with findall and asked for one recognised citation, so a corrupted citation
disappeared whenever another citation of the cell stayed valid: removing only
the hooks.md line-2587 citation, or a hash that is not hex, a fetch time without
seconds or another host, still passed. Its mutation test changed both citations
of the Completion gate cell together, which hid the single-citation case.

- Each citation is split out of its cell and must match the whole citation form;
  malformed text is a violation, not something filtered out.
- EXPECTED lists the (page, line) citations each need rests on, in order, so a
  cell that loses, gains, reorders or moves one of several is caught.
- The mutation test changes or removes each citation of each cell by itself with
  14 corruptions: 154 mutants over the 11 citations. The first version passes 75
  of them (the probe table in the research record); the fixed module passes none
  and still passes the unmodified page.
- manifests/evidence.json: the changed test is re-registered.

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

* Bound a citation's note in the cross-client guard, cite the upstream mechanism, and fix the command center's two P3s

The GPT read of #986 at cc454f7 (CHANGES_REQUESTED, one P2 and one P3):

- P2: the guard's citation pattern ended in a free note group `(.+)`, which fullmatch let swallow
  the note's closing parenthesis, trailing text and another note's opening parenthesis, so a
  citation added after `; see `, after a space or with no separator counted as part of the
  previous note and the cell still listed its expected citations. The note group is now
  `[^()\[\]\n]+`. Five more corruptions are mutated into every citation (parenthesised prose,
  the citation repeated after a space, with no separator, after `; see `, and the same on
  another host): 209 mutants in all, the 154 of before kept. The five probes of the read are a
  test of their own and the boundary of the note is asserted. On the old note group these tests
  fail (62 failing subtests); on the new one all six tests of the module pass.
- P3: the correction cites the Python mechanism at its pin in the module's docstring: CPython
  3.13.16 Lib/re/__init__.py lines 169-172 (fullmatch applies the pattern to all of the string,
  file sha256 dbe158a6...) and the re documentation of that release (fetched
  2026-10-11T03:48:42Z, sha256 19195ec7...), neither of which bounds what a greedy `.+` consumes.

The command center's read of #986 at cc454f7 (PASS_WITH_P3), held until a finding of the other
read allowed a push:

- primary-source-reading.json, run text: "the refused calls ... cost nothing" was an inference no
  page line prices; the measured part is that a refused call carries no usage (34
  too_many_requests results, no advisor iteration for any of them). It now says the refused
  calls add no advisor charge and that the executor tokens that issue a refused call stay in the
  executors' spend.
- usage.pricing: the recorded hashes are of the .md bytes that p958_p3_fix.py fetched, while
  source and advisor_billing_source name the HTML pages. The block gains hashed_urls (the .md
  URLs) and its read_note names the script and its sha256.
- tests: the run-text test pins the new wording and rejects "cost nothing"; the read-time test
  pins hashed_urls to the source URLs and the script hash in the note. Both fail on the
  artifact without the change.

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

* Record the cited lines with their hashes and report a duplicate source row in the cross-client guard

Answers the Codex review in GitHub of #986 at f085a62 (P2: the page called the line of a citation a locator of claims.json, which holds a covering range for 2 of the 11) and the co-op's GPT micro
over cc454f7..f085a62 (P2: page_rows() keyed the source rows by need, so a corrupt row placed before the valid one was replaced before any check saw it).

- cross-client-lines.json records the 10 distinct lines the Claude source table cites, each with the capture it was read from (full sha256 and fetch time, both agreeing with claims.json) and the sha256 of its
  text, read from the retained copies of the captures; the page now says exactly that, and the guard checks the page against the artifact and against claims.json.
- page_rows() keeps the source rows in page order; violations() reports a need written twice and checks every row, not only the last.
- Tests that fail on f085a62: a duplicate row before or after the valid one for a wrong host, trailing prose and an exact copy (the corrupt-first pages pass the old module), a line the artifact does not
  hold or holds with another capture or fetch time, and the line-hash definition; one test recomputes every hash from the captures where CLAUDE_DOCS_CAPTURES names them.

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

* Read the source tables the way GitHub reads them and state the line-hash and locator counts as the artifacts hold them

Answers the command center's Claude micro of #986 at be54c82 (one P2, four P3s); each was reproduced before the change.
- P2: the source table was read from the physical lines that start with "| ", so a corrupt copy of a source row written with one to three leading spaces, no space or a tab after the leading pipe, no trailing pipe, or no outer pipes (a table row
  for GitHub's renderer) was never checked: all six spellings placed before the valid row passed the 11 tests. table_rows() now reads a table as the GFM specification does (version 0.29-gfm, section 4.10: a header row and a delimiter row with the
  same number of cells start a table, the table is broken at the first blank line or the beginning of another block-level structure, every other line is a row) and as GitHub's renderer was measured to apply it (gh api markdown, mode gfm, 39 line
  shapes before and after the valid row and 12 table starts, no disagreement with the module). A line that ends the table takes the rows after it out of the table, and a line that starts with a pipe outside a table is reported. A line is cut at a
  newline or a carriage return only, a cell is trimmed of spaces and tabs only, and an extra cell the renderer drops is still read.
- P3-1: `sed -n '<line>p' <capture> | sha256sum` prints the recorded hash for a line that is followed by a newline (each recorded line is, checked where the captures exist); the module, the page and the lines artifact say so.
- P3-2: claims.json holds 257 documentation locators, 256 with a capture hash and 253 with lines; a test reads the blob the module names and compares the counts the text states.
- P3-4: the replacement of an existing key by a mapping assignment is cited from the language reference and the interpreter source (CPython v3.13.16 Objects/dictobject.c, insertdict), not only from the documentation of the operation.
The new tests fail on the old reading (36 single-edit mutants of the reading are caught; the unfixed reading misses every spelling that does not start with "| "), and a test that is enabled by GFM_RENDER_CHECK repeats the renderer measurement.

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

* Fail closed on the canonical structure of the page's two tables instead of emulating GFM

Answers the command center's Claude micro of #986 at 18227ac (two P2s, three P3s) and Codex's two P2 threads of the same head; each was reproduced before the change.
- The sixth version copied GFM's table rules and one pattern for the block structure around a table, and still disagreed with GitHub's renderer in both directions: a row led by an inline tag, an autolink, a backtick fence whose
  info string holds a backtick or `<! ` is a row for GitHub (spec 0.29-gfm 4.5, 4.6 condition 7) and was dropped without a report; a table inside a block quote (5.1), a list item (5.2), a fence, an HTML comment or a second table
  was counted as the source table, and the whole source table in a comment passed. The command center ruled option 1: no renderer emulation. read_page() requires the page's one shape (heading, blank, header, delimiter, rows,
  blank, the source paragraph as plain text, blank, header, delimiter, rows to the end of the file; a row is "| <need> | <cell> |" with single spaces and no pipe inside a cell; newline line endings only; no fence or raw HTML
  before the tables) and reports every other line of the two sections, and any delimiter- or header-shaped line anywhere else in the file. A table ends at the first line that is not a row.
- GitHub's renderer stays the oracle (GFM_RENDER_CHECK, `gh api markdown`): the canonical page renders exactly the two expected tables with 7 rows each, and the 16 dangerous regression pages (the whole table in a comment,
  six moves of the source row, quoted and list-item copies, rows that begin with an inline tag, an autolink, a backtick-fence line or `<! `) render differently; the 2 invisible ones render the same and are still rejected.
- P3-2: a lone carriage return, a row indented three spaces and a row that ends in an escaped pipe are violations (the survivors of the earlier reading's single-edit mutants); a need written twice in the mechanism table is
  reported.
The regression pages pass the guard of 18227ac with no violation on 12 of the 16 dangerous pages; 26 single-edit mutants of the reading are caught.

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

* Close three bypasses of the canonical reading, narrow the advisor claims to the page and write the tests' invisible characters as escapes

The final fix round of #986 under the command center's convergence ruling: its Claude micro at 23fa8ef (P2-1 to P2-3, P3-3) and its adjudication of 2026-10-11T13:50Z of Codex's two P1 threads of 13:35:12Z. Each item was
reproduced on 23fa8ef before the change.
- P2-1 (a regression): a table without outer pipes inside the source paragraph passed, because the paragraph lines skipped the sweep. GFM 0.29-gfm section 4.10 calls the leading and trailing pipe only "recommended", so a header
  line, a delimiter row and a row inside the paragraph are a third table. The paragraph check now also rejects a delimiter-shaped and a header-shaped line.
- P2-2: a delimiter row spaced with a vertical tab or a form feed passed: both are whitespace to the renderer (GFM section 2.1, "line tabulation (U+000B), form feed (U+000C)") and neither is in the space and tab classes of the
  patterns. The page rejects both characters, line by line.
- P2-3: an HTML table in prose passed; raw HTML is rendered as written (GFM section 6.10). A table tag (table, thead, tbody, tfoot, tr, th, td, any case) is rejected anywhere.
- Nine pages join the regression pages (27 in all). GitHub's renderer shows 24 of them differently from the canonical page and 3 identically (gfm-render-regression-pages-v2.json; the first file is kept); the guard of 23fa8ef
  passes 8 of the new pages with no violation (fail-before-wave.txt). 32 single-edit mutants of the reading are caught, 6 of them new (mutations-wave.md).
- primary-source-reading.json:3 and :102 (Codex P1 twice): the run text said the refused advisor calls "add no advisor charge" and the speed note said the API "does not report" a speed or a service tier for an advisor iteration.
  The advisor-tool page (platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool.md, retained capture sha256 81a97b99) says that a failed advisor call returns an advisor_tool_result_error and the request does not
  fail (lines 385-410), that advisor_message iterations are billed at the advisor model's rates (lines 1256-1293) and lists type, model and the four token counts for an advisor_message iteration (lines 1273-1280), naming neither
  speed nor service_tier. The sentences say exactly that and what the page does not state; usage.advisor_page records the lines, quotes and the record's counts, and two tests read it (one gated by PLATFORM_DOCS_CAPTURES).
  Both fail on the data of 23fa8ef; 17 single-edit mutants are caught.
- Four tests carried literal no-break spaces, a zero-width space and a line separator (U+00A0 x4, U+200B x1, U+2028 x1) where they meant escapes: an escape typed into a tool call is decoded to the character itself. They are
  escapes again, and test_the_source_of_this_module_spells_its_invisible_characters_as_escapes fails on the bytes of 23fa8ef. U+2028 is a str.splitlines() boundary (Python 3.13, Built-in Types).
Follow-ups listed in the pull request body: a note can carry another host's link (FU-1), read_bytes for CRLF (P3-1), the circular oracle (P3-2), P3-4 and P3-5; research queue: run the render oracle in CI.

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

---------

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
seathatflowsinourveins added a commit that referenced this pull request Oct 12, 2026
Fix the decision record of the compounding rule text,
docs/decisions/2026-10-11-compounding-rule-text.md. The six rule
surfaces do not change.

- Approval: the owner approved section 1's proposal, the first
  sentence, at 22:01Z. The second sentence was presented as an optional
  clause and the owner's answer did not single it out; the command
  center (CC) included it under the owner's delegation, because it
  restates the owner's own no-dates direction. The owner was told at
  23:44Z, with the option to drop it. The record cites the ruling's
  addendum-01 and the SHA256 of each sentence.
- #172: restated with its recorded supersession at 22:18:17Z, under
  which guard bypasses are follow-ups (research-queue row 23). #1014
  landed as ccff876 with only the one-letter POINTER_VARIABLE suffix.
- PR triage: 3 fold receivers (#878, #927, #958) merged without their
  4 donors (#804, #915, #870, #829), citing the triage's addendum-01.
- What the second sentence leaves in force (F1 of the trading lane's
  read of us-equities-trading #87): it forbids a date as the trigger
  that starts work, and every time bound the contract states as a fact
  or protocol window stays.
- Checks: the budget test's sentence now says what the test does (the
  first GPT read of this PR):
  test_growth_in_any_loaded_file_crosses_the_fixed_budget fills the
  available headroom in each loaded file in turn, verifies that
  equality with the ceiling passes, then appends a two-byte UTF-8
  character and verifies rejection.
- manifests/evidence.json: the record re-registered with register_file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.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