Repository navigation
Lane prompt Rule 2: status, license and popularity are not evidence of fit (D1 merit rule) - #372
Merged
seathatflowsinourveins merged 1 commit intoSep 26, 2026
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
seathatflowsinourveins
force-pushed
the
claude/lane-prompt-merit-rule-20260926
branch
from
September 26, 2026 22:54
e0ec2d2 to
a3858f2
Compare
Owner
Author
|
Amendment review and replay (coordinator, 2026-09-26):
|
…f fit (D1 merit rule) Fold the 2026-09-26 merit directives into Rule 2 of the shared lane prompt, generically and with no repository or product names: "Adoption, incumbency, installation, retained-control status, receipt count, packet position, license, stars and popularity are not evidence of fit; choose among adopted candidates on what their evidence shows was run." License, stars and popularity follow the user's later 2026-09-26 directives: license does not apply to this private experimental environment, and future sessions should judge a repository on its quality and SOTA-ness against the other candidates in its field instead of on unnecessary gates. The prompt keeps exactly five numbered rules, which lane_packets.load_rules parses into every packet's rules field. prompt_sha256 changes from 9b8a8364... to d3ef2cc0.... lane-provenance.json gains entries and changes none: two claude entries (source and vendored workflow paths; the 2026-09-24 workflow, role and transcript-audit hashes with the new prompt hash) and one codex entry (current codex_lane.py with the new prompt hash). No adjudication entry is needed: its prompt is adjudication-prompt.md, which this branch does not change. Rebased onto 59dfe49. Main's lists, #352's adjudication append included, stay an exact prefix and these three entries follow them. Main has registered lane-provenance.json in manifests/evidence.json since this branch's base, so the entry is re-registered under the hot-file protocol; the component-matrix and grand-list generators left their reports unchanged. Tests: Rule 2 must carry the sentence, including in every packet; the Rules section must number exactly 1-5, counted apart from load_rules; the full record-time Claude key, prompt included, must be registered under both workflow paths. The uniqueness test now keys each lane on LANE_PROVENANCE_KEYS: the old Claude tuple left out prompt_sha256, so a prompt-only append collided with the earlier pair (the RR11-2 widening). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins
force-pushed
the
claude/lane-prompt-merit-rule-20260926
branch
from
September 26, 2026 23:21
a3858f2 to
ec93710
Compare
seathatflowsinourveins
deleted the
claude/lane-prompt-merit-rule-20260926
branch
September 26, 2026 23:39
seathatflowsinourveins
pushed a commit
that referenced
this pull request
Sep 29, 2026
…echeck stamps, stack revision (#437 review H5a-d) (a) Summaries run to 606 characters, not 600: summarize() cuts at 600 and appends the 6-character " [...]" marker; 138 of 206 are cut and 60 exceed 600. The subset's own method field keeps the generator's wording and stays as generated. (b) The 38 exit-null records are 12 MCP requests (seven Claude Code tool calls: six socraticode, one qmd; five mcporter requests to repomix) and 26 shell plumbing, upstream CLI runs, a capture harness and local checks, not "mostly MCP calls". (c) The socraticode, qmd and ai-memory release rechecks are stamped 2026-09-27T01:11:26Z-01:24:04Z (2026-09-26 local). (d) condense.py stops at the first card whose pin differs from manifests/stack.json; the cards assume the stack manifest at 34c5634 (#372), which the rtk and toon cards cite, and 55fc8d1 (#433) has the same pins. The Reproduce section runs condense.py in a temporary root with that manifest; the documented block exited 0 with identical bytes at 2026-09-29T03:28Z (also with 55fc8d1). It also restores the pin sentence the previous commit split. Tests derive each statement from the bundle's data and fail on the previous README. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
seathatflowsinourveins
added a commit
that referenced
this pull request
Sep 29, 2026
… drift notes and a weekly native E2E (#437) * Token topic: 2026-09-27 per-tool card edition, stack-pinned join and drift note docs/token-efficiency-stack.json gains a dated edition. 17 rows carry a card condensed from the sanitized token-stack cards: upstream, native adaptation, E2E returned results, adapted performance per payload and lane, invoke rates and GPT-6 review, each labelled with its evidence class. The other 7 rows carry an explicit "no card in this edition" marker. gpt-tokenizer has a card but no stack.json component, so it is listed under edition.cards_without_row. scripts/build_ecosystem.py joins each row to manifests/stack.json for the version and repository and rejects row-level pins. When a card's recorded pin differs from the stack pin, the row shows a drift note instead of editing the card. The build validates every card block's evidence class, each comparison's counts and the card's source bytes and sha256. The edition and its artifacts link at the publication ref. evidence/artifacts/token-stack-cards-20260927 holds the sanitized cards, the invoke snapshot, the 206 cited returned-result records (command, exit, summary and the sha256 of each omitted body), the GPT-6 review index, a README with evidence classes and dates, and the generators. native-token-e2e.yml adds a weekly Monday 07:11 UTC schedule. AGENTS.md and docs/token-session-handbook.md each gain one pointer to the rows. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Token topic page: render the per-tool cards (template outside the brief's path list — coordinator to accept or reassign) The page's only inline script lives in docs/ecosystem/template.html, so the edition header, the stack-pinned drift note, the no-card marker and the six card blocks (upstream, native adaptation, E2E returned results, performance per payload and lane, invoke rates, GPT-6 review) render there. Each block states its evidence class; figures keep their lane, payload and unit and are never added across them. Only existing helpers (make/add/link with safeHref, textContent) are used; the build recomputes the CSP script hash. tests/test_ecosystem_manifest.py runs the real template through the Node page harness and asserts the rendered card text, the drift note and the no-card marker. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Hot files: evidence registration and generated reports Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Token topic cards: card link fields pass the build's public_url gate (#437 review H2) docs/ecosystem/template.html topicCard renders upstream.recommended_install.url, recommended_wiring[].url, new_since_pin[].url and limitations[].url as links, but token_topic_card returned the card unchanged, so these reached safeHref, which accepts any http/https URL. Each now passes public_url, the gate card.source and the build's other external source links use; a rejected URL fails --check with the card's source path and the field. Tests plant http://, 127.0.0.1 and javascript: URLs in each field (12 cases, all passed the unchanged build) and accept a clean HTTPS set unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Token stack cards: bundle.py keys the returned results by the supplied basename (#437 review H5e) source() records each input under clean_text(path.name), but main() read inputs["returned-results.json"], so renaming the --returned-results file raised KeyError at line 190. The subset's source block now uses the supplied basename for both the lookup and its name; with the canonical name the output is unchanged. tests/test_token_stack_cards.py runs bundle.main on a synthetic input set under both names (the renamed case raised KeyError before the fix). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Token stack cards: retained ledger readings behind the native_snapshot figures (#437 review H1) The five native_snapshot figures (rtk 42,367,855 and 26,531,271, headroom 579,411, context-mode 3,244,032 and 6,311,424) cited private assembly inputs only. tools/counter_readings.py opens the private token-report ledger read-only (sqlite3 URI mode=ro), matches each entry to its one snapshots row on tool, $HOME-relative scope, observed_at to the second and saved figure, requires the kind and session estimate the entry's basis quotes to equal the row's, and writes counter-readings.json: ledger ids 67, 68, 69, 71 and 72 with tool, scope, observed_at, success, saved, kind and, for context-mode, the session estimate (27,109,948 and 157,255). The evidence column and metrics.raw are never copied; the output passes a private-content scan before it is written. The copy re-measures nothing. The README's new section tabulates the backed figures and names the two rtk shortfall figures the card cites without a reading (39.2% over the host's lifetime, 16,493 rtk discover skips): they rest only on the private rtk.json input (sha256 in the Reproduce table) and this artifact does not verify them. The jcodemunch-mcp card has no native_snapshot entry. Tests require an identical reading for every entry, fail when one reading's saved figure, scope or time changes, allow only the sanitized fields and check the README section. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Token stack cards README: measured summary bound, exit-null counts, recheck stamps, stack revision (#437 review H5a-d) (a) Summaries run to 606 characters, not 600: summarize() cuts at 600 and appends the 6-character " [...]" marker; 138 of 206 are cut and 60 exceed 600. The subset's own method field keeps the generator's wording and stays as generated. (b) The 38 exit-null records are 12 MCP requests (seven Claude Code tool calls: six socraticode, one qmd; five mcporter requests to repomix) and 26 shell plumbing, upstream CLI runs, a capture harness and local checks, not "mostly MCP calls". (c) The socraticode, qmd and ai-memory release rechecks are stamped 2026-09-27T01:11:26Z-01:24:04Z (2026-09-26 local). (d) condense.py stops at the first card whose pin differs from manifests/stack.json; the cards assume the stack manifest at 34c5634 (#372), which the rtk and toon cards cite, and 55fc8d1 (#433) has the same pins. The Reproduce section runs condense.py in a temporary root with that manifest; the documented block exited 0 with identical bytes at 2026-09-29T03:28Z (also with 55fc8d1). It also restores the pin sentence the previous commit split. Tests derive each statement from the bundle's data and fail on the previous README. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Token session handbook: token topic rows are the adoption reference, cards are dated snapshots (#437 review H4) The line this PR added made each tool's topic row "its lane and adoption reference", but the cards are dated 2026-09-26/27 snapshots and the qmd card's lane_rule is already superseded by the SubagentStart carrier (adoption/hooks/claude/token-lanes-block.md L9 also names foundation-docs and foundation-adoption). The row is now the adoption reference, the current lane list is the carrier block, and each card block is called a dated snapshot. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Hot files: AGENTS.md token-topic pointer and evidence registration (#437 review H4) AGENTS.md: the pointer this PR added now makes a tool's topic row its adoption reference, calls its card a dated snapshot, and names the SubagentStart carrier block (adoption/hooks/claude/token-lanes-block.md) as the current lane list; one line, no other line touched. manifests/evidence.json registers the changed listed files (AGENTS.md, docs/token-session-handbook.md, scripts/build_ecosystem.py, tests/test_ecosystem_manifest.py, the card bundle README and tools/bundle.py) and the new evidence files counter-readings.json and tools/counter_readings.py. component_matrix.py --write and new_host_grand_list.py --write left their four reports unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Token stack cards: reproduction block status, truncation condition, list guard, test comment (#437 verifier findings) The round-one verifier found the README's reproduction block reported cmp's status, so it passed even when condense.py stopped: the block now runs under set -e and the README states the measured exit statuses of the block as written and with the current stack manifest. The truncation sentence names its condition (cut at the last space only when it is past character 300). token_topic_card's list guard now rejects any non-list, including a falsy one: a test covers {}, "" and null and fails against the previous guard. A test comment states where card.source.url comes from. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * AgentsView re-pin registry: count the per-tool card lines that name the pinned version #437 adds per-tool card blocks to docs/token-efficiency-stack.json. The agentsview card names 0.43.0 on 12 lines as dated card facts (the pin the card recorded), so main's RepinLocationRegistryTests, which pairs every matching line of a re-pin file with a recorded location, failed with 14 matching lines against 2 recorded locations (CI run 36526587362). The registry entry now records dated_record_lines (count 12, with its basis) and location_mismatches counts them exactly; a wrong count fails a new test. A re-pin still changes only the two install lines. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Hot files: re-register the AgentsView registry files in the evidence manifest (manifests/evidence.json only; last commit per docs/lanes.md) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> --------- Co-authored-by: Scout <scout@local> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
8 of 10 tasks
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.
Summary
This PR implements runbook decision D1, as the A2 rules-only PR. It adds one sentence to Rule 2 of the shared lane prompt
tools/sota-convergence/lane-prompt.md. The sentence is generic and names no repository or product:lane_packets.load_rulesparses them into every packet'srulesfield, so every packet built from this head carries the sentence. That includes the packets read by the Claude refuters and the blind adjudication judges.prompt_sha256changes from9b8a8364f13ff3fcb9fc690198c4ca8849c29cc12b81e8526121a46114517f54tod3ef2cc0c06d33d6a4a058f5e74a1cf5be8a3760cc2b0b5572598f0e0e4288e4.tools/sota-convergence/lane-provenance.jsononly gains entries. Every existing entry keeps its bytes, because those entries bind the earlier waves.claudeentries, one for.claude/workflows/layer-verdict-lane.jsand one for the vendoredexamples/claude-native/workflows/layer-verdict-lane.js. Each copies the 2026-09-24 pair: workflowfd77b749…, rolea87a9883…, transcript audit5ed7a1b5…andvendored_path. Only the prompt hash (the new one) andregistered_at(2026-09-26) differ.codexentry, pairing the currentcodex_lane.py(a4bd8f47…) with the new prompt hash.adjudicationentry. That entry'sprompt_sha256hashesadjudication-prompt.md(f82b527d…, registered by GPT-6 live web search, Claude WebSearch session budget, and GPT-6/Claude family names in the blind-adjudication leak checks #352), and this PR changes neither that file norcodex_lane.py.adjudicationappend included.git diff origin/mainremoves no line of the file.tests/test_lane_packets.pygainsLanePromptMeritRuleTests:1-5. This test counts the rules itself, separately fromload_rules, which only counts them.rules[1]carries the sentence.tests/test_verdict_lane_vendoring.pygainstest_the_current_claude_lane_key_is_registered_under_both_workflow_paths.scripts/landscape.pyLANE_PROVENANCE_KEYS["claude"], prompt hash included, under both workflow paths.test_registry_entries_are_well_formed_and_uniquenow keys each lane onLANE_PROVENANCE_KEYS.prompt_sha256, so this prompt-only append collided with the 2026-09-24 pair and failed the test (10 != 8).prompt_sha256.59dfe49f) registeredtools/sota-convergence/lane-provenance.jsoninmanifests/evidence.jsonafter this branch was first cut. This PR follows the hot-file protocol indocs/lanes.md:host_receipts.register_file. Only the entry'ssha256andbyteschange.scripts/validate.pyfailed on the file (SHA-256 mismatch,byte count mismatch). After it, the validator passes.scripts/component_matrix.py --writeandscripts/new_host_grand_list.py --writeran and left their reports unchanged.Scope
59dfe49f, the merge of GPT-6 live web search, Claude WebSearch session budget, and GPT-6/Claude family names in the blind-adjudication leak checks #352 andorigin/mainat the rebase.lane:shared.lane-provenance.jsonis a verdict trust path (scripts/verdict_review_gate.pyTRUST_PATHS).manifests/evidence.jsonis a shared hot file. This PR only re-registers one hash in it.tools/sota-convergence/lane-prompt.mdtools/sota-convergence/lane-provenance.jsontests/test_lane_packets.pytests/test_verdict_lane_vendoring.pymanifests/evidence.json(one re-registered entry)verdict-review-gatetreats a trust-path change without a verdict change as rules-only.Ordering (runbook A0/A2)
claude_lane.pybinds the echoed prompt to thislane-prompt.md, andcodex_lane.pyreuses a return only when its provenance matches.lane-prompt.mdorlane-provenance.jsonmerges from B1 to B10. If this PR misses B1, it waits until after B10, and the wave runs on the old prompt without the sentence. The wave's own record must then disclose that its lane prompt did not state the merit rule.59dfe49f. This branch is rebased on it, so itsadjudicationappend comes before this PR's entries.codex_lane.pyandlane-provenance.json. When it lands after this PR, its Codex append must pair itscodex_lane.pyhash with promptd3ef2cc0…, not9b8a8364…, and keep this PR's entries in place.Disclosures and residuals
layer-verdict-lane.jsdo not state it. That file is hash-bound and vendored from agent-lab.adjudication-prompt.mddoes not state it either.rulesfield.observed.starsandpushed_atvisible in newcomers' source reviews.overturn_whencitingtests/paths) is not part of this prompt revision.476d00c3and found no defects. The amended wording, the new hash, the rebase and the evidence re-registration came after that review and have had no independent review (see Review).Evidence-class table
rules[1]python -m unittest tests.test_lane_packetspython -m unittest tests.test_verdict_lane_vendoringprompt_sha256changedgit show origin/main:tools/sota-convergence/lane-provenance.jsonwith this head, list by listMutation run on the amended tree (test names shortened;
merit=test_rule_2_states_the_merit_sentence,count=test_the_rules_section_numbers_exactly_five_rules,packet=test_rules_are_the_five_lane_prompt_rules,claude_key/codex_key= the two registry-coverage tests,unique=test_registry_entries_are_well_formed_and_unique):Decision record
No dated decision record is committed. The decision is D1 in the coordinator session's verdict-wave runbook of 2026-09-26, amended the same day by the two user directives quoted above.
476d00c3wording, without license, stars and popularity. The two later directives superseded it.Local commands run
These ran on this host with a CI-equivalent virtualenv (Python 3.13.15 with jsonschema, PyYAML and numpy). The tests, the mutation run and the validators ran on the working tree that was then committed unchanged as
e0ec2d29. The gate and the full suite ran on that commit.The pre-commit gitleaks hook reported no leaks.
SOTA sources
lane-prompt.md… generically, with no names. Fold it into Rule 2 … appendclaudeandcodexentries tolane-provenance.json… keep exactly 5 numbered rules."7f138632, 2026-09-22) createdlane-prompt.md, with five rules parsed bylane_packets.load_rules.97a56e22, 2026-09-23) created the append-onlylane-provenance.json, keyed on(codex_lane_py_sha256, prompt_sha256).2013d27e, 2026-09-23) folded the blind boundary into Rule 1 as a sentence so that "lane-prompt.md keeps five rules", and appended the Codex entry for promptfa75f113….ff2ac50a, 2026-09-24) revised the prompt and appended the Codex entry and both Claude entries for prompt9b8a8364….tests/test_verdict_lane_vendoring.pyset the precedent for widening the uniqueness key.docs/lanes.md, "Hot-file protocol". Take main'smanifests/evidence.json, re-register the branch's files withhost_receipts.register_file, then run the two--writegenerators andscripts/validate.py.tools/sota-convergence/landscape-sweep/templates.json, the "Merit, not incumbency" paragraph of the 2026-09-26 sweep. That wording names products; this prompt stays generic.AGENTS.md("Stars, installs and popularity guide discovery; they are not evidence") anddocs/harness-defaults.md("Agreement, recency, stars and extra tooling are not evidence").Review
gpt-6-astra) ran throughcodex execat reasoning effortmaxin a read-only sandbox, on476d00c3. That head was based onb21a403c, and its sentence did not yet name license, stars or popularity (prompt60a4115a…).NO DEFECTS.lane_packets.load_rulesandscripts/landscape.pyLANE_PROVENANCE_KEYSwith Serenafind_symbol, and ran scoped checks through context-mode: "The focused tests, provenance hashes, sealed-wave check, publication validator, and review gate passed."dde28cc2landing on main after the branch was cut.476d00c3was rebased onto59dfe49fand amended intoe0ec2d29.git range-diff b21a403c..476d00c3 59dfe49f..e0ec2d29shows the whole change against the reviewed bytes:lane-prompt.md: the sentence's two lines, now naming license, stars and popularity.lane-provenance.json: the three appended entries'prompt_sha256, from60a4115a…tod3ef2cc0…. The appends change in no other byte. Main's entries, GPT-6 live web search, Claude WebSearch session budget, and GPT-6/Claude family names in the blind-adjudication leak checks #352's included, come before them.tests/test_lane_packets.py:MERIT_SENTENCEand its comment.manifests/evidence.json: thelane-provenance.jsonentry'ssha256andbytes.tests/test_verdict_lane_vendoring.pydoes not change.476d00c3verdict does not carry over to them.🤖 Generated with Claude Code