Repository navigation
Top rule as an upstream-verification procedure, merit-only selection, and a dated anti-pattern log (user-approved global instructions) - #371
Merged
seathatflowsinourveins merged 2 commits intoSep 26, 2026
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
… fix our side, free native web lanes - Top rule as an upstream-verification procedure; check order and anti-pattern log in the harness defaults - Resolve the GPT-6 review of the upstream-verification top rule - Top rule and harness defaults: merit-only selection, fix our side (never file upstream), free native web lanes Adds the user's 2026-09-26 decisions to the upstream-verification procedure: - selection is head-to-head on measured quality, security and maintenance; license, stars, installs and incumbency are not criteria; - when an upstream tool misbehaves, study upstream read-only and fix our install or wiring; never file upstream issues or comments; - web search/fetch use free native lanes first (Claude WebSearch/WebFetch, Context Mode fetch, Codex live search); a paid keyed API is not used for new work (replaces the stale Tavily paragraph). Three dated anti-pattern rows: license gating, disabling skills instead of routing them (off blocks agent skills preload; probed), and paid web APIs where free native lanes work. The portable template stays within the tested 925-word ceiling (924). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…; Tavily only as a fallback
- harness-defaults anti-pattern row: `user-invocable-only` blocks an agent's
`skills:` preload, like `off`. The row now keeps preloaded skills `name-only`
and reserves `user-invocable-only` for skills that no agent preloads. It
links the probe record.
- skills decision record: a dated addendum with the sub-agents docs quote
("preloading draws from the same set of skills Claude can invoke") and the
returned lines of two headless `claude -p --agents` probes on 2.1.283.
- recipes/tavily.md: new work uses the free native web lanes first. `tvly`
runs only when the user asks for Tavily or a free lane cannot return the
page.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
seathatflowsinourveins
force-pushed
the
claude/top-rule-upstream-verification-20260926
branch
from
September 26, 2026 22:45
b0a6928 to
870bd32
Compare
seathatflowsinourveins
deleted the
claude/top-rule-upstream-verification-20260926
branch
September 26, 2026 23:02
This was referenced Sep 27, 2026
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
examples/claude-native/CLAUDE.md) now state the top rule as a five-step upstream-verification procedure at about the same length (881 → 896 words), anddocs/harness-defaults.mdgains its long form, "Upstream verification and compounding learning", with a dated, sourced anti-pattern log;AGENTS.mdpoints to it in one sentence, and two test classes pin all of it.dde28cc2; head commit:3b8ae91d35e375daa07825c875793bdb8c58fd9c(4c6f9171plus the review resolution under Review)lane:shared(AGENTS.mdandmanifests/evidence.jsonare shared hot files in docs/lanes.md); needs the trading lane's acknowledgement before merge.examples/claude-native/CLAUDE.md,docs/harness-defaults.md,AGENTS.md(one new paragraph after the top rule, well away from the pending WP5 edit near line 34),recipes/claude-native-profile.md(release note),tests/test_install_claude_profile.py,tests/test_adoption_docs_consistency.py,manifests/evidence.json(five re-registered hashes). Not touched: the verdict-wave frozen files,adoption/templates/codex.config.template.toml, and Codex user-scope instructions (the Codex text is staged separately for u4).Authority and user decisions
examples/claude-native/CLAUDE.mdis installed as every host's~/.claude/CLAUDE.md, so this PR changes the user's global instruction text. The user approved the rewrite on 2026-09-26, in the workstation coordinator session:The follow-up commit adds four later decisions from the same day:
Lane consolidation: on 2026-09-26 the user shut down the other lane sessions and assigned this work to the workstation coordinator ("no other peers live, i shut them with the token save repos install into our native workflow and github workflow , harness update and sota foundation of our session as main task"); this quote stands in for the trading lane's ack.
SOTA sources
CHANGELOG.md(main; top entry 2.1.283, the installed client), read 2026-09-26 withgh api repos/anthropics/claude-code/contents/CHANGELOG.md -H "Accept: application/vnd.github.raw":/advisor(/advisor,/advisor <model>,/advisor off) for the desktop app, Remote Control, and other headless (-p/Agent SDK) sessions".--advisor fablelaunches ...".paths:frontmatter accepts a YAML list; 2.1.69:InstructionsLoadedhook and conditional rules in-p.omitClaudeMdto agent frontmatter ... letting custom and plugin subagents run without user, project and local CLAUDE.md files".~/.claude/CLAUDE.mdare "Personal preferences for all projects"; rules withoutpaths"are loaded at launch with the same priority as.claude/CLAUDE.md"; user-level~/.claude/rules/; "if two rules contradict each other, Claude may pick one arbitrarily"); CLI reference (--advisor <model>"Takes precedence over theadvisorModelsetting"); subagents (omitClaudeMd).docs/agents_md.md; globalAGENTS.override.md, elseAGENTS.md; project files root to cwd). Source at tagrust-v0.157.1(commitac0e23e5232692b95268583c8278c50b8c436d2b):codex-rs/core/src/agents_md.rs(reads each file as raw text; the file contains no@character) andcodex-rs/exec/src/lib.rsread_prompt_from_stdin(lines 2232-2248).v0.50.0src/hooks/init.rs:RTK_MD_REF = "@RTK.md"andcodex_rtk_md_ref(the@<CODEX_HOME>/RTK.mdline), for the@-reference log row.v1.0.169(tag commit442f1eb6c7cdad3f0cb2411d00756f9e5cf2b587)src/server.tslines 1165-1200 (the Pin vendor skills for CC lane messaging, evals and logs #852 project-boundary guard forctx_execute_fileand itspermissions.allowRead(...)escape hatch), and issues #852 (closed 2026-06-22) and #1075 (open), for the Context Mode row.pgrep(1): "The running pgrep, pkill, or pidwait process will never report itself as a match."AGENTS.mdtop rule (Top rule: research first, never self-write without a SOTA source; required sota-sources check #294);.github/pull_request_template.md### SOTA sourcesand the requiredsota-sourcesjob in.github/workflows/validate.yml(context listed in.github/main-ruleset.json);docs/decisions/2026-09-26-harness-rules-cleanup.md(Harness rules cleanup: one statement per rule, token practice as the base layer (research-verified) #327: one statement per rule, and its token-counting method);tools/token-report/token_manifest.pycount_files(gpt-tokenizer 3.4.0,o200k_base) for the counts below.Evidence-class table
docs/harness-defaults.md, and the pointer inAGENTS.md; CI fails if a key phrase, the word ceiling, a log column or the pointer regresses, if the top rule names a file of this repository, or if the log's delimiter row has the wrong number of cellstests.test_install_claude_profile.PortableTopRuleTests,tests.test_adoption_docs_consistency.UpstreamVerificationSectionTests: 4 failures before the text changes, all pass after; the two review checks failed first as well (see Review)wc -w, +1.7%), 1,172 → 1,203o200k_basetokens (894 words and 1,208 tokens at4c6f9171, before the review);AGENTS.md1,423 → 1,445 words, 2,259 → 2,303 tokenswc -w;count_filesongit show origin/main:<path>copies and the changed files (artifact counts, not Claude's tokenizer or billed usage)claude --helpat 2.1.283 names no advisor (0 matching lines of 120)claude --help, searched case-insensitively foradvis; reproducible, not retained as a receipt/advisor,--advisor <model>andadvisorModelAGENTS.mdline@<CODEX_HOME>/RTK.mdto the model literallyenv -C / codex debug prompt-input probe < /dev/null: the AGENTS.md block holds only that line; reproducible, not retained as a receipt@import handlingcodex-rs/core/src/agents_md.rsatrust-v0.157.1AGENTS.md)adoption/agents/claude/blind-{adjudicator,judge,lane-reviewer}.mdall setomitClaudeMd: true; subagents docs: it drops user, project and local CLAUDE.md files### SOTA sourcesin the PR template;sota-sourcesjob and ruleset contextCoverage of the template text that was replaced or tightened (one statement per rule, as in #327):
docs/harness-defaults.md("Decide from the task and evidence")AGENTS.mdFollow-ups outside this PR (each is recorded, none is fixed here):
tools/sota-convergence/landscape-sweep/codex_job.pystill passes--search, and.claude/settings.jsondoes not setCLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION; the log states both "at this base".--codexmode writes an@<CODEX_HOME>/RTK.mdreference that Codex does not expand. Per the user's rule, no upstream report is filed. The fix is ours: inline the Codex text, staged for the Codex worker-lane PR.rtk init --helpat 0.50.0 describes--codexas using a PreToolUse hook, whileevidence/artifacts/token-e2e-codex-20260926/receipt.jsonsays Codex has no RTK hook; this needs a source check before it becomes a log row.4c6f9171; its four findings are resolved in3b8ae91d(see Review), which has had no second cross-family pass.What this proves: the rule text is in the startup chain (the user-level
~/.claude/CLAUDE.mdof a host that merges the example;AGENTS.mdfor Claude, through@AGENTS.md, and for Codex sessions in this repository), and CI pins it. What it does not prove: behaviour. No model run was made; nothing here shows that sessions or workers follow the check order or that the log prevents a repeat. Hosts that merged an earlier copy of the example do not change until they replace it (the recipe says so), and Codex user-scope sessions do not receive the rule until the staged block is installed and read back.Local commands run
pythonis a venv with the CI test dependencies; the unittest summaries were read from stderr with the command's own exit code.Decision record
No separate record; the alternatives and overturn condition are here.
.claude/rules/(user-level~/.claude/rules/): supported since 2.0.64 and documented, but not used. Rules withoutpathsload at launch with the same priority as CLAUDE.md, so they cost the same always-loaded context;omitClaudeMdis documented for CLAUDE.md files only, so a rules file could reach the blind verdict lanes; and the profile installer has no rules step. Path-scoped rules load only when matching files are read, which does not fit a rule about every claim.Host evidence
Not applicable: no files under
evidence/hosts/.Checklist
permissions: contents: read(or a narrower, explicitly justified addition). (none changed)Follow-up commit b0a6928 (coordinator)
PortableTopRuleTestspins.docs/harness-defaults.md:ctx_fetch_and_index, Codex-c web_search="live", and keyless tools once a measured bake-off adopts them.skillOverrides: "off"blocks an agent'sskills:preload, per a headless--agentsprobe on 2.1.283); and a paid keyed web API used where free native lanes work.validate.py,evidence_manifest.py --check,build_ecosystem.py --check,component_matrix.py --checkandnew_host_grand_list.py --checkall exit 0. The touched modules (test_install_claude_profile,test_adoption_docs_consistency,test_ecosystem_manifest) ran 128 tests OK (1 skipped). Gitleaks: no leaks.Review
Cross-family review of
4c6f9171: GPT-6 throughcodex exec(read-only,-c web_search="live"), exit 0, no usage-limit hits, about 220 s, 160,020 tokens by Codex's own report, 2 live searches. It reported four defects. Each was checked at source, all four hold, and3b8ae91dresolves them.3b8ae91dexamples/claude-native/CLAUDE.md:9: the portable instructions send corrections todocs/harness-defaults.md, a file other projects lack~/.claude/CLAUDE.md, which the Claude Code memory docs describe as "Personal preferences for all projects"; step 5 named this repository's file bareAGENTS.mdalready declares its log, and the harness defaults' correction rule now says each project declares its own.PortableTopRuleTestsrejects a top rule that names a file present in this repository: 2 failures against the4c6f9171template, pass after. The Codex block staged for the Codex-config owner names no path and needed no changedocs/harness-defaults.md:91: the unpublished-commit row names a check that proves only local presencescripts/host_receipts.py validaterunsgit cat-file -e <rev>^{commit}in the checkout, andtests/test_host_receipts.pyfeeds it a fabricated SHA. Reproduced: that exact command returned 0 for this branch's unpushed head4c6f9171(emptygit ls-remote, no remote branch contains it, not an ancestor oforigin/main) in a worktree sharing the main object storevalidate.ymlruns the same command on a full-history checkout from GitHub and a never-pushed commit fails; a local worktree accepts a local-only commit; whether the commit is onmainstays manual. Not taken: a remote-reachability check in the validator. The validator runs offline with no notion of a remote, a localorigin/maincan be stale, and CI already fails a never-pushed commit, so it would be a new feature with its own design rather than this repair. No test was added, because the check's behaviour is unchangeddocs/harness-defaults.md:94: the web-search row drops its source's limitationsevidence/artifacts/landscape-sweep-20260926/README.mdsays W1 to W3 ran "against a local stand-in provider", that OpenAI parity "rests on source reading ... not on a live measurement", and that the live observation "is not retained"tests/test_adoption_docs_consistency.py:735: a delimiter row one cell short passes the log check0 != 1on the old checker. The checker now requires exactly five delimiter cells; 3 tests OKAs the PR's own correction rule requires, the log gains a dated row for the lesson ("Summarizing evidence more strongly than its source"), and that rule now says to name a check as enforcement only after seeing it fail on that mistake or a reproduction of it. The template is 896 words, 2 more than at
4c6f9171, because a one-word path became "any anti-pattern log the project declares".Review coverage: the reviewer's two live searches covered Codex guidance discovery and the GFM table rule. It did not visibly re-verify the other upstream claims under SOTA sources: the Claude Code CHANGELOG
/advisorentries,read_prompt_from_stdinatrust-v0.157.1, rtkv0.50.0src/hooks/init.rs, context-mode #852 and #1075, procps-ngpgrep(1), and theCLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSIONdefault. Its silence on them is not confirmation, and3b8ae91dhas had no second cross-family pass.Commands run for the resolution (
pythonis the same venv with the CI test dependencies; each summary read from stderr with the command's own exit code):Replay and second review round (coordinator, 2026-09-26)
4a32e646as one commit,28ef5496, under the hot-file protocol: main'smanifests/evidence.json, with the six changed files re-registered.git diff b0a6928a 28ef5496over those six files is empty.validate.pyFAILS=0, verdict gate: no verdict rows changed, 596 tests OK.b0a6928a(codex exec, gpt-6-astra, max effort, read-only, live search, rc=0). It found two medium defects, and both hold at source:870bd32edocs/harness-defaults.md:98:user-invocable-onlydoes not keep an agent'sskills:preloaddisable-model-invocation: true, since preloading draws from the same set of skills Claude can invoke". A headlessclaude -p --agentsprobe on 2.1.283 then returnedNONEfor auser-invocable-onlyskill and# Test-Driven Developmentfor aname-onlyonename-onlyand reservesuser-invocable-onlyfor skills no agent preloads. A dated addendum indocs/decisions/2026-09-25-skills-trial-and-usage.mdretains both probes' returned lines. No agent preloads the host's threeuser-invocable-onlyskills, so the host needs no changerecipes/tavily.md:5and:45still send ordinary work to Tavilytvlyruns only when the user asks for Tavily or a free lane cannot return the pagevalidate.pypass; the manifest changes carry only the doc hashes.validate.pyFAILS=0. The docs, profile, skills, kernel-keyring and render-config modules ran 245 tests OK.870bd32ehas had no third cross-family pass (the bounded loop allows one review and one repair per round).AGENTS.md, the find-command wording) becomes its own PR with theAGENTS.mdtrading-section move.🤖 Generated with Claude Code