Repository navigation
Ground the Claude Code native practice in primary sources and one cross-client mapping - #958
Merged
seathatflowsinourveins merged 5 commits intoOct 10, 2026
Conversation
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>
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
marked this pull request as ready for review
October 10, 2026 16:19
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>
5 tasks done
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>
Merged
5 of 8 tasks
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope
reference/cross-client.mdmaps 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'scleanupPeriodDaysmoves 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.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 inmanifests/evidence.json, resolved by taking main's side and re-registering this commit's paths throughhost_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 at7d634e5a(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 ata30c2188ewith a provenance test; a fifth (7b21614594f255396cbafab203d864f5cf699e2b) answers the command center's read at8ca5d825(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 tof6ae0de74(Hold and flag stale extended-hours exits before native submission #940, which also touchesmanifests/evidence.json), so the landing rebase re-registers this PR's paths.lane:foundation.claude/skills/claude-native-practice/(reference pages, newreference/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.pyandtests/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.mdsaid the agentsview unit serves the default~/.agentsview; its launcher setsAGENTSVIEW_DATA_DIRto thenew-wsl-native-stack/agentsviewdirectory, 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 anagents/directory that is not beside it and did not name the installer's--only workflowsand--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.pybuilds 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
81a97b998b6d8043032a656214e34ffb474b3f4fa37d2724155df396ffefaf5a): advisor calls are billed at the advisor model's rates, and "Top-levelusagefields reflect executor tokens only. Advisor tokens are not rolled into the top-level totals because they are billed at a different rate"; and the pricing page, https://platform.claude.com/docs/en/about-claude/pricing (page bytes sha25667904e280b595d31f373c857844ed380072ae79d280d8f385640b5992d337ca9): Opus 5.5 $4 input, $5 5-minute cache write, $8 1-hour cache write, $0.20 cache hit and $20 output; Fable 5.1 $10, $12.50, $20, $0.25 and $50 per million tokens.evidence/artifacts/claude-native-practice-20261009/primary-source-reading.json; the practices are attached per slot inreference/slots.json):3203a50099e2)701649d85428)2e111c21a5a9)f2ccc2387652)53d9c856a5c6)3fb13790e679)e71c2190f0d2)c284ecef25aa)76fb2ae32301)462a9190a99f)2b8e532e21eb)c73835c13c67)76832cd2eb01)e45c22c8d1e5)b67dd8f8b1bb)0f978585c632)919145986a04)5c8a8edbb3fb)fe37bba54ab5)149dd1e4ddd1)a9f34f8e8471)a1557d5f0dce)afbaae0868be)b00b51ea12af)35a156a20db4)51853f9d8e1c)6b337cf64b69)a53db55014dd)1ab113e9fb12)edd34c3c68a3)163ebbf5f892)settings-reference.mdandenv-vars.mdfor the model and effort keys, cited by line in the decision record's addendum) andopenai/codex@979011409de0a60b52f179721948e65531d26144(rust-v0.161.0) for the native-mechanism table inreference/cross-client.md.kenn-io/agentsview@413a87f7bfbd67b2815b1119ac51abc1efbeeaba(tag v0.44.0, resolved withgh apion 2026-10-10)internal/config/config.go:2051-2053(dataDirFromEnvreturnsAGENTSVIEW_DATA_DIRwhen set), for the data-directory correction; agentsview 0.44.0 as installed on the host, probed in an isolated scratch instance for the retention claim.tools/adoption/install_claude_profile.py:450-453,470-471(--only,--remove-workflowsand the rule that the second needs exactly the first), for the README correction.Evidence-class table
source_reviewprimary-source-reading.json(runwf_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)primary_sources_total, equal to the reading'sby_slot_keptwithout itsnonebucket of 9); each slot lists up to six of them inprimary_sources(96 entries), each with URL, fetch time and sha256 of the bytes read, and all 96 agree withprimary-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 artifactsource_reviewreference/slots.json,primary-source-reading.json; recomputed on every run bytests/test_primary_source_reading_counts.py(9 tests; of 11 mutations tried, each fails the matching check: a changed addendum figure, aby_slot_keptcount 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)claude-opus-5-5, recorded in the reading'susage.by_phasewith the tool's commit, sha256, command and exit code (exit 1 under--require-effort maxlists exactly the 31 readers, which run at xhigh by design); the 180 in the retention paragraph is the settings template's valuelocal_integration(child-usage.mjsover 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); recordchild-usage-wf_bee0b670-035.jsonsha2567b81e56efef8ca52ae778330f6882747f6f14fff5717cb3729b37d3258386d87, retained in the lane's research record and not committedclaude-native-slot-manifest.jsonis the baseline snapshot the reading compared against: built 2026-10-09T15:00:51Z fromreference/slots.jsonas merged in #923 (a30c2188e, sha256a7d87f9a…), before this PR extended that file; it now carries asnapshotblock (kind, revision, baseline hash, the current decision source with its hash and the differing fields), and the reading'slocal_referencesbinds its page:line locators to the same revision with the recorded model output untouchedsource_reviewfor the label and the measured locators (84 locators read the same at the readers' checkout and ata30c2188e; the 6 that quote a phrase match 6 of 6 there and 2 of 6 at the7d634e5ahead),local_integrationfor the checkstests/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)7d634e5a15 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 removedslots.jsonextension); 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_integrationpr958/fork958-mut-before.txtandfork958-mut-after.txtin the lane's research recordtoo_many_requestswith no usage) cost $27.64 at its rates, billed outside the executors' usagesource_reviewfor the billing rule and the rates (the two pages, read 2026-10-10),local_integrationfor the recountadvisor_iterationsandadvisor_totals; sha2567b81e56e…) and from the 63 raw transcripts (the advisorserver_tool_useblocks and their results); recorded inprimary-source-reading.json(usage.advisor_by_model,advisor_calls,pricing,priced_usd_*) and worded in the addendum; the command center's read of8ca5d825found itlocal_integrationtests/test_primary_source_reading_counts.py(the four new tests; the four error against the previous head's artifacts); mutation tablepr958/mut958c.txtin the lane's research recordlocal_integrationprobes-20261009.json(isolated scratch instance)local_integrationprobes-20261009.json(read-only coverage check before the deletion)Read(...)denies and secret variables needsandbox.credentials.envVars)local_integrationprobes-20261009.json; measured on the installed client, kept as measurements, no profile is shippedsource_reviewsettings-reference.mdlines cited in the addendum;adoption/templates/claude.settings.template.jsonlocal_integrationvalidate.py --scan-fileper file,evidence_manifest.py --check(below)AGENTSVIEW_DATA_DIRoverrides the default data directory; the host launcher sets it to${XDG_DATA_HOME:-~/.local/share}/new-wsl-native-stack/agentsviewand the unit'sExecStartruns that launchersource_reviewconfig.go:2051-2053at 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)local_integrationtests/test_native_practice_doc_corrections.py: 5 tests pass at this head; onorigin/mainplus the new test and the probe artifact 4 of 5 failNo setting, hook, permission, catalog or installed component changes on any host in this PR.
Local commands run
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)intests.test_upstream_surface_watch.DispositionCitationTests.test_every_cited_line_names_the_keyforclaude: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
7d634e5afound 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:
adoption/skills/manifest.json(ref = this PR's landed commit,tree_shaandskill_md_sha256from its bytes) and raisestrial.on_description_char_capfrom 10,500 to 11,000, which the command center applies withtools/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.reference/slots.mdbeing read.Host evidence
Not applicable: no file under
evidence/hosts/changes.Checklist
permissions: {}and grant each job only what it needs (contents: read, or an explicitly justified addition). (none changed)🤖 Generated with Claude Code