Skip to content

Compaction-window A/B/C preregistration draft (not frozen, not run) - #416

Closed
seathatflowsinourveins wants to merge 6 commits into
mainfrom
claude/compaction-window-ab-prereg-20260927
Closed

seathatflowsinourveins wants to merge 6 commits into
mainfrom
claude/compaction-window-ab-prereg-20260927

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Sep 27, 2026 •

Copy link
Copy Markdown
Collaborator

DRAFT preregistration, not frozen and not run: a matched A/B/C comparison of Claude Code's auto-compact window for Ultracode workflow children. The user decided on 2026-09-27 to test before changing anything, then adopt the window with the best quality per token. The run is intended for right after the Claude weekly-limit reset (2026-09-30 21:00 America/New_York).

Why

Motivation measured from native transcripts on 2026-09-27 (blueprints/compaction-window-ab/motivation-20260927.md):

  • 52 workflow children used 398,038,533 cache-read tokens over 4,781 requests.
  • The largest child reached 936,520 tokens of context.
  • Opus 4.7+ and Sonnet 5 on the Anthropic API run a native 1M window and auto-compact only at about 967K by default.

Design

  • Arms and expected automatic triggers. CLAUDE_CODE_AUTO_COMPACT_WINDOW unset (A, about 967K), 400000 (B, about 367K) and 200000 (C, about 167K).
    • Installed 2.1.283 shows a constant 33k "Autocompact buffer" in /context at 1m, 400k, 200k and 100k, so each trigger is the window − 33,000. 1,000,000 − 33,000 matches the docs' "about 967K".
    • Everything else is shared: client, models and efforts per role, agents, carrier and MCP set.
  • Host condition (amended 2026-09-27).
    • The incumbent is A, the native default. The user settings no longer set the key: a value-only read at about 23:28Z returned absent, and the file's mtime is 23:21:57Z.
    • The earlier 400000 condition (18:59Z to about 23:22Z) is kept as superseded history.
    • Every arm launches with --setting-sources project and one identical sealed --settings packet.
    • Arm A keeps env -u CLAUDE_CODE_AUTO_COMPACT_WINDOW, because sessions started before the revert still carry 400000 in their environment. The coordinator's own shell did.
    • A read-back gate per arm checks the effective value before any attempt counts. It also requires CLAUDE_AUTOCOMPACT_PCT_OVERRIDE, CLAUDE_CODE_MAX_OUTPUT_TOKENS and CLAUDE_CODE_DISABLE_1M_CONTEXT to be absent.
  • Treatment-validity bands (partition).
    • C [150,300, 330,300), B [330,300, 870,300) and A [870,300, 1,000,000].
    • Each lower edge is 0.9 × that arm's trigger, and each upper edge is the next arm's lower edge.
    • Peer-relayed native events at 400000 (n=31: min 366,209, median 368,563, max 432,724) all fall in B. Before the switch, every event fired at 966,908–971,662, in A.
    • A symmetric ±10% band would have excluded the real +17.9% overshoot.
    • Four events at 618,371–922,073 are classified as settings-save transitions. The env-vars docs say a running session applies saved settings env changes.
  • Tasks: four frozen real-task bundles (builder, web research, verification, long review), each with deterministic checks, run 3 times per arm in counterbalanced order: 36 attempts. All 12 A focal children must exceed 400,000 prompt tokens, or the pilot stops incomplete.
  • Decision rule (descriptive pilot):
    • A candidate must not lose any check that A passes, in any repetition, and its pass counts must not fall below A's.
    • Its all-attempt weighted child cost per success must be at most 0.90 × A's, pooled and per task.
    • Among eligible candidates, the unique lowest pooled cost is nominated; there is no B/C priority.
    • An exact tie nominates nothing and leaves incumbent A unchanged.
    • A nomination only informs a separately preregistered confirmatory cohort. Setting B or C on the host needs that cohort's result.
  • SIZE-07 (descriptive only): each arm's check outcomes beside each focal child's peak utilization of the 1M window. This is not powered for SIZE-07's overturn condition and does not enter selection.
  • Budget and stops: a 1,000,000,000 native-token ceiling over all owned requests, with a request-ledger observer. The reserve, lag and drain bounds are still unqualified, so launch is prohibited until they are.

Open gates (recorded in the preregistration; each blocks launch until resolved)

  • Native per-arm read-back of the window, and its inheritance by workflow children, are unrun. No automatic compaction at the new B or C triggers has been observed in an arm.
  • Collector coverage of every required log attribute; retry and error accounting (terminal chains only for now); and the 1-hour cache-write TTL split, without which weighted cost cannot be evaluated.
  • The budget, cancellation and drain bounds. The wall cap needs at least 271800 + 36*D + H seconds, and D and H are not yet qualified.
  • The executable Inspect adapters, offline-suite readiness and the task bundles.
  • Final host fingerprints and the sealed oracle adapter are pre-launch evidence.

SOTA sources

This round: host-condition amendment and its review (head 452f7b14, base 37739d32)

  • Amendment (Claude Opus 5.5 builder). Incumbent A; window-minus-buffer triggers; partition bands; incumbent-A tie and no-selection rules; the SIZE-07 descriptive outcome; the three launch-gate variables. The coordinator ruled on the four pre-switch events.
  • Cross-family review (GPT-6, gpt-6-astra, effort max, read-only). DEFECTS: 1 major, 3 minor. All four were fixed in one repair round:
    1. A stale "unattributed" residual contradicted the ruling. It is now marked superseded, with the original text kept.
    2. "Every C child would have invalidated" overclaimed. The text now says the old band excluded C's nominal trigger.
    3. The tests missed obsolete bands in operative wording. A scan of current Markdown, current JSON and every treatment_proof value now catches them; the history records it excludes are named.
    4. A pre-existing flaw: the selection test only compared stored labels. It now computes each worked example's nomination with fractions.Fraction.
  • Checks:
    • python3 -m unittest tests.test_compaction_window_ab_preregistration: 23 tests OK.
    • Fail-first: 10 failures of 21 for the amendment, then 2 of 23 for the repair (findings 1 and 2). The tests for findings 3 and 4 are shown by mutation.
    • Mutation pass: 34 of 34 caught, and the unmutated control passes.
    • The registry tests (57) are OK after the rebase. Registry test test_blind_checkout flagged four prose values under the disposition label key; they now use the fixed label, with the prose under repair, as earlier rounds did.
    • scripts/validate.py passed after re-registering the six files per docs/lanes.md.
    • The push went through Pre-push registry gate: run the three registry tests on every pushed commit #438's pre-push gate (OK).
  • External digest record (Sealing asks for it):
    • PREREGISTRATION.md sha256 c76270ec0804a6e971d6b77cd3a104b584d234607ad848f0a428cf4b4b631970
    • preregistration.json c2525d8277a5c00b2dcf63d6929b9c1fe22db247db84914a7ba2f4dbdf132e23
    • tests/test_compaction_window_ab_preregistration.py b0546ccb18a59ff8c2062a435760898475ef47e9e55e0b812e1f5612bdce4d28
  • Residuals:
    • The 33k figure is a /context display observation, and the buffer can move with the client version.
    • F4 is relayed, not replayed, and each transition event's timing was not re-checked.
    • The band scan misses bounds written in words or as decimals.
    • Two relayed texts still quote "ran the default window" as input.

Earlier rounds

  • The first draft was written by GPT-6 (gpt-6-astra, effort max) through the Codex stack-worker lane.
  • One independent Claude review found 9 findings (1 blocker, 4 majors, 4 minors). One GPT-6 repair round fixed all 9. Each disposition is in build-evidence.json and PREREGISTRATION.md.
  • The freeze gets its own review.

🤖 Generated with Claude Code

@seathatflowsinourveins seathatflowsinourveins added the lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers label Sep 27, 2026
@seathatflowsinourveins
seathatflowsinourveins force-pushed the claude/compaction-window-ab-prereg-20260927 branch 2 times, most recently from f7cc409 to b6f36d8 Compare September 27, 2026 20:43
seathatflowsinourveins pushed a commit that referenced this pull request Sep 27, 2026
…alues

Found and fixed through the upstream gh-fix-ci skill (openai/skills@49f948fa)
on the GPT-6 lane, then reviewed by the coordinator:
- tests/test_workflow_security_coverage.py lists
  runtime-worker-skills-freshness.yml; the workflow itself already passes the
  hardening, pinning, permissions and zizmor checks.
- blind_checkout: the review disposition "fixed" joins the closed-vocabulary
  labels (as in #416), and the superseded rollback assertion's disposition is
  data.
- harness-defaults anti-pattern row: run acceptance with TMPDIR outside every
  repository.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Sep 27, 2026
…ef's tip

On 2026-09-27 six PRs (#416, #425-#429) failed CI's validate job on three
registry checks that run in about a second locally:
- the OSV lockfile inventory;
- the blind-checkout label classification;
- the new-workflow security coverage.

scripts/git-hooks/pre-push runs those three test methods against the tip
commit of each pushed ref, in a detached worktree of exactly that commit, and
refuses the push unless all three run and pass. Like CI, which tests one
commit per pull request, it does not test the commits between a ref's old and
new tip. A skip or an expected failure counts as a failure, so the hook
refuses while zizmor is missing and there is a commit to test.
`git push --no-verify` is the visible override. The same core.hooksPath that
enables the pre-commit gitleaks gate activates it.

Scratch and cleanup:
- The scratch base defaults to /var/tmp. The checkout is about 140 MB, and
  file-hierarchy(7) keeps /tmp, usually a tmpfs, for small files.
- The inside-a-repository guard asks git's own discovery, after dropping the
  GIT_DIR that git exports to hooks. An empty .git mount point, as a sandbox
  leaves in /tmp on the WSL host, is not a repository, so it is not refused.
- HUP, INT, QUIT, PIPE and TERM exit through the EXIT trap, as Autoconf's
  configure traps 1, 2, 13 and 15. A reader that closes early
  (`git push 2>&1 | head -n 1`) no longer leaves a worktree behind.
- The runner puts the checked-out tree first on sys.path, so PYTHONSAFEPATH
  plus a PYTHONPATH naming another checkout cannot supply the tests.
- stdin is parsed before the zizmor check, so a deletion needs no zizmor.

Sources:
- githooks(5) for git 2.43.0: pre-push, and the exported GIT_DIR.
- git's templates/hooks--pre-push.sample: the all-zero oid and the read loop.
- git-rev-parse(1) --absolute-git-dir, and git(1) GIT_DIR and
  GIT_CEILING_DIRECTORIES.
- file-hierarchy(7).
- Autoconf lib/autoconf/general.m4 at 0c777e326bd9: traps 1, 2, 13 and 15.
- python3 -P and PYTHONSAFEPATH.
- The repository's pre-commit gate and its test, as the pattern.

tests/test_pre_push_gate.py has 16 tests, run on a shared clone with
plumbing-built commits. Each run sets GIT_CEILING_DIRECTORIES above its
temporary root, and one test pushes natively from a linked worktree to a
shared bare clone. Each test checks that no worktree or scratch is left behind.
Of twenty named mutations of the hook, the tests catch sixteen; the PR lists
the four defensive lines they miss.

Docs: docs/secret-storage.md step 5c (behaviour, prerequisites, override and
cleanup), docs/harness-defaults.md (an anti-pattern row), and the builder
row's Use cell in examples/claude-native/workflows/README.md.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins added a commit that referenced this pull request Sep 27, 2026
…ef's tip (#438)

On 2026-09-27 six PRs (#416, #425-#429) failed CI's validate job on three
registry checks that run in about a second locally:
- the OSV lockfile inventory;
- the blind-checkout label classification;
- the new-workflow security coverage.

scripts/git-hooks/pre-push runs those three test methods against the tip
commit of each pushed ref, in a detached worktree of exactly that commit, and
refuses the push unless all three run and pass. Like CI, which tests one
commit per pull request, it does not test the commits between a ref's old and
new tip. A skip or an expected failure counts as a failure, so the hook
refuses while zizmor is missing and there is a commit to test.
`git push --no-verify` is the visible override. The same core.hooksPath that
enables the pre-commit gitleaks gate activates it.

Scratch and cleanup:
- The scratch base defaults to /var/tmp. The checkout is about 140 MB, and
  file-hierarchy(7) keeps /tmp, usually a tmpfs, for small files.
- The inside-a-repository guard asks git's own discovery, after dropping the
  GIT_DIR that git exports to hooks. An empty .git mount point, as a sandbox
  leaves in /tmp on the WSL host, is not a repository, so it is not refused.
- HUP, INT, QUIT, PIPE and TERM exit through the EXIT trap, as Autoconf's
  configure traps 1, 2, 13 and 15. A reader that closes early
  (`git push 2>&1 | head -n 1`) no longer leaves a worktree behind.
- The runner puts the checked-out tree first on sys.path, so PYTHONSAFEPATH
  plus a PYTHONPATH naming another checkout cannot supply the tests.
- stdin is parsed before the zizmor check, so a deletion needs no zizmor.

Sources:
- githooks(5) for git 2.43.0: pre-push, and the exported GIT_DIR.
- git's templates/hooks--pre-push.sample: the all-zero oid and the read loop.
- git-rev-parse(1) --absolute-git-dir, and git(1) GIT_DIR and
  GIT_CEILING_DIRECTORIES.
- file-hierarchy(7).
- Autoconf lib/autoconf/general.m4 at 0c777e326bd9: traps 1, 2, 13 and 15.
- python3 -P and PYTHONSAFEPATH.
- The repository's pre-commit gate and its test, as the pattern.

tests/test_pre_push_gate.py has 16 tests, run on a shared clone with
plumbing-built commits. Each run sets GIT_CEILING_DIRECTORIES above its
temporary root, and one test pushes natively from a linked worktree to a
shared bare clone. Each test checks that no worktree or scratch is left behind.
Of twenty named mutations of the hook, the tests catch sixteen; the PR lists
the four defensive lines they miss.

Docs: docs/secret-storage.md step 5c (behaviour, prerequisites, override and
cleanup), docs/harness-defaults.md (an anti-pattern row), and the builder
row's Use cell in examples/claude-native/workflows/README.md.

Co-authored-by: Scout <scout@local>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Scout and others added 6 commits September 27, 2026 20:36
Drafted by GPT-6 (gpt-6-astra, effort max) through the Codex stack-worker lane from a coordinator brief; the Codex sandbox could not write the worktree's Git metadata, so the coordinator committed the files, rephrasing one sentence that tripped the gitleaks generic-api-key rule (no allowlist). Arms: CLAUDE_CODE_AUTO_COMPACT_WINDOW unset (about 967K), 400000, 200000; motivation is the measured 2026-09-27 child-token diagnosis. Status DRAFT: open gates are recorded in the preregistration.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ot frozen, not run)

GPT-6 (astra, max) repair of the review findings: OTel/Loki request ledger with
ccusage reconciliation, a proposed token budget and owned-process cancellation,
minimum-cost selection with explicit ties, Inspect 0.3.271 contracts with 32
hashed controls, and a descriptive-pilot scope for three repetitions. Runtime
gates stay open and launch stays prohibited.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…-F9 (still draft, not frozen, not run)

GPT-6 repair builder (effort max) against the independent Claude review's nine
findings; all fixed, none declined. Records the live host setting
CLAUDE_CODE_AUTO_COMPACT_WINDOW=400000 (user settings env since
2026-09-27T18:59:00Z) as a frozen host condition with per-arm read-back gates.
Arm A isolates settings with --setting-sources project plus one sealed
--settings packet for every arm and unsets the variable in its launch
environment (flags present in native 2.1.283 help).

blind_checkout: classify the review disposition "fixed" as a closed-vocabulary
label and the inspect-skills source disposition as label text, so
tests/test_blind_checkout.py's repository classification passes.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…cumbent A and window-minus-buffer bands (still draft, not frozen, not run)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… F4 events as settings-save transitions (still draft, not frozen, not run)

The documented live application of saved settings env values (env-vars.md) explains compactions at 618371..922073 after the 400000 window was saved; A's band stays [870300, 1000000]. Per-event timing was not re-checked.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…rding test, computed selection examples, F4 record consistency) (still draft, not frozen, not run)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@seathatflowsinourveins
seathatflowsinourveins force-pushed the claude/compaction-window-ab-prereg-20260927 branch from b6f36d8 to 452f7b1 Compare September 28, 2026 00:39
seathatflowsinourveins pushed a commit that referenced this pull request Sep 28, 2026
…alues

Found and fixed through the upstream gh-fix-ci skill (openai/skills@49f948fa)
on the GPT-6 lane, then reviewed by the coordinator:
- tests/test_workflow_security_coverage.py lists
  runtime-worker-skills-freshness.yml; the workflow itself already passes the
  hardening, pinning, permissions and zizmor checks.
- blind_checkout: the review disposition "fixed" joins the closed-vocabulary
  labels (as in #416), and the superseded rollback assertion's disposition is
  data.
- harness-defaults anti-pattern row: run acceptance with TMPDIR outside every
  repository.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Sep 28, 2026
…alues

Found and fixed through the upstream gh-fix-ci skill (openai/skills@49f948fa)
on the GPT-6 lane, then reviewed by the coordinator:
- tests/test_workflow_security_coverage.py lists
  runtime-worker-skills-freshness.yml; the workflow itself already passes the
  hardening, pinning, permissions and zizmor checks.
- blind_checkout: the review disposition "fixed" joins the closed-vocabulary
  labels (as in #416), and the superseded rollback assertion's disposition is
  data.
- harness-defaults anti-pattern row: run acceptance with TMPDIR outside every
  repository.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Sep 28, 2026
…alues

Found and fixed through the upstream gh-fix-ci skill (openai/skills@49f948fa)
on the GPT-6 lane, then reviewed by the coordinator:
- tests/test_workflow_security_coverage.py lists
  runtime-worker-skills-freshness.yml; the workflow itself already passes the
  hardening, pinning, permissions and zizmor checks.
- blind_checkout: the review disposition "fixed" joins the closed-vocabulary
  labels (as in #416), and the superseded rollback assertion's disposition is
  data.
- harness-defaults anti-pattern row: run acceptance with TMPDIR outside every
  repository.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Sep 28, 2026
…alues

Found and fixed through the upstream gh-fix-ci skill (openai/skills@49f948fa)
on the GPT-6 lane, then reviewed by the coordinator:
- tests/test_workflow_security_coverage.py lists
  runtime-worker-skills-freshness.yml; the workflow itself already passes the
  hardening, pinning, permissions and zizmor checks.
- blind_checkout: the review disposition "fixed" joins the closed-vocabulary
  labels (as in #416), and the superseded rollback assertion's disposition is
  data.
- harness-defaults anti-pattern row: run acceptance with TMPDIR outside every
  repository.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Sep 28, 2026
…alues

Found and fixed through the upstream gh-fix-ci skill (openai/skills@49f948fa)
on the GPT-6 lane, then reviewed by the coordinator:
- tests/test_workflow_security_coverage.py lists
  runtime-worker-skills-freshness.yml; the workflow itself already passes the
  hardening, pinning, permissions and zizmor checks.
- blind_checkout: the review disposition "fixed" joins the closed-vocabulary
  labels (as in #416), and the superseded rollback assertion's disposition is
  data.
- harness-defaults anti-pattern row: run acceptance with TMPDIR outside every
  repository.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins added a commit that referenced this pull request Sep 28, 2026
…l manifest (#429)

* Runtime-worker skills program: project-scoped installs and a 138-skill pinned manifest

GPT-6 (astra, max) build. install_skills.py gains --project-dir and --agent
targets with the default global behaviour unchanged, project lock identity and
pinned source-tree checks, and scoped rollback. The runtime-worker manifest pins
138 skills (77 OpenHands extensions v0.25.0, all 15 superpowers lifecycle
skills, 28 existing adoption entries by reference) with a report-only freshness
checker and scheduled workflow. Not installed into any worker yet; invocation
and pruning are measured after install.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Runtime-worker skills: repair round for the independent Claude review

GPT-6 (astra, max) repair of all seven findings; the blocker (#407's scoped
global rollback) was already resolved at the rebase and is kept byte for
byte. Project rollback now removes exactly the add targets and checks the
canonical folder, project lock entry and Claude link independently,
reporting a retained copy as an error instead of widening the deletion
(skills@7407f389 src/remove.ts:209-333). A project .claude/skills/<name>
that is not a symlink to the canonical folder is local-modified unless
--force (installer.ts:254-264). Every selected source/ref is fetched before
any add; an unavailable gh is reported as unverified, not as a mismatch.
The pruning rule records Claude Code's skill-listing budget and treats
dropped descriptions as unknown. 52 tests pass; five fail-first runs are
recorded in validation.json.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* CI fix: cover the skills freshness workflow and classify the repair values

Found and fixed through the upstream gh-fix-ci skill (openai/skills@49f948fa)
on the GPT-6 lane, then reviewed by the coordinator:
- tests/test_workflow_security_coverage.py lists
  runtime-worker-skills-freshness.yml; the workflow itself already passes the
  hardening, pinning, permissions and zizmor checks.
- blind_checkout: the review disposition "fixed" joins the closed-vocabulary
  labels (as in #416), and the superseded rollback assertion's disposition is
  data.
- harness-defaults anti-pattern row: run acceptance with TMPDIR outside every
  repository.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* test_install_skills: compare resolved paths on both sides for macOS temp dirs

On macOS the temporary directory sits under /var, a symlink to /private/var,
so local.resolve() returned the /private/var form while the expected path kept
the /var form. validate-macos failed 8 subtests of the two new project-install
tests (run 36349458060). Resolve the expected path too, as
tests/adaptive_paper_hermetic.py already does with os.path.realpath.

Reproduced on Linux with TMPDIR set to a symlinked directory: 8 failures
before, OK after; the module passes 38 tests with a plain or symlinked TMPDIR.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Runtime-worker skills repair r2: exclude main's gated security-audit, take reused gates from main

Coordinator direction on the #429 blocker (option b): runtime workers must
not bypass a gate set on main.

- Contract: every skill in adoption/skills/manifest.json is either reused
  by reuse_ref (pins equal to main's, gates not restated) or listed in
  `excluded` with an adoption_ref, a reason and an overturn condition.
  security-audit (#448, 8315274: Codex off, name-only pending the M5c
  bake-off against /security-review) is excluded, and a test fails as soon
  as main's gate on it changes. A synthetic future main skill in neither
  set fails the contract (negative control).
- Gates: install_skills.py resolves each reuse_ref when it reads a
  manifest, refuses an entry whose pin drifted or that restates
  codex_enabled/claude_listing, and takes both gates from main.
  --print-codex-config on the runtime manifest now disables the 16 reused
  skills main keeps off for Codex; before, it printed none. The README
  states that claude_listing is a Claude Code skillOverrides setting that
  the OpenHands SDK does not read (OpenHands/software-agent-sdk@fcc102a6
  skill.py:1123-1130, 182-185, 278-284, 528-538; same blob at da28c773).
- --only naming a pruned project skill fails as pruned, not unknown.
- The README documents that --check-only needs the pinned skills binary,
  and gh sign-in and network in project mode.
- Counts: 138 selected skills from 12 sources (unchanged); 28 of main's 29
  adoption skills reused; 8 exclusions (7 OpenHands, 1 adoption).
- validation.json records the round (fail-first: 9 tests, failures=7,
  errors=2; after the fix: 9 OK) and refreshes every input hash; the
  anti-pattern log gains the dropped-gates row; the 8 changed files are
  re-registered in manifests/evidence.json.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Runtime-worker skills: narrow the OpenHands loader claim and the security-audit overturn (R2-6)

The README said OpenHands withholds a skill from the model only through
SKILL.md disable-model-invocation, and research.md said the SDK reads only
SKILL.md frontmatter. load_user_skills also loads OpenHands' own enabled
installed skills (skill.py:936-973 at fcc102a6). Both now say the loader
reads skill directories, SKILL.md frontmatter and its installed-skill enable
state, never Claude Code settings or a skillOverrides key. The
available_skills citation moves from lines 182-185 to 183-186.

The security-audit overturn now names a promotion as codex_enabled true or
claude_listing on; any other change to main's gate still fails the
exclusion test and needs a new review. The test message says so.

validation.json records R2-6, the corrected sources, the red excerpt in log
order, refreshed input hashes and the rerun checks; the five changed files
are re-registered in manifests/evidence.json.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Runtime-worker skills records: note the rebase onto main 8d8f79c

research.md and validation.json record the second rebase, onto 8d8f79c
(#460), the merged docs/harness-defaults.md input hash and the checks rerun
on that tree. The manifests/evidence.json re-registration that was part of
this commit was dropped when the branch was rebased onto c1581fa, and is
redone at the tip.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Runtime-worker skills repair r3: containment and pin checks before add, project scope, name-keyed reuse

Two independent reviews of 8efdc35, a GPT-6 cross-family review
(codex_call.sh, gpt-6-astra max) and a headless Claude session review,
returned changes-needed with no blocker or high finding. Each code item
failed first against the unchanged code:

- GPT6-C1: refuse a project whose .agents/skills, .claude/skills or
  skills-lock.json passes through a symlink, whose selected skill paths
  resolve outside it, or that is --home, before any skills or gh call.
- CL-D1: compare every selected pinned tree with its tree_sha in the
  preflight and refuse before any add; the native in-use guard keeps a
  rolled-back copy while a detected agent such as Codex reads it.
- CL-D3: the runtime manifest carries "scope": "project" and is refused
  without --project-dir; pruned entries are never installed in either mode.
- CL-D6: reuse_ref and adoption_ref name the adoption manifest and match
  by skill name.
- CL-D7: runtime_skill_freshness.py reads the CLI version and ref from
  the manifest's cli pin.
- GPT6-C5: offline zizmor analysis of the freshness workflow, with
  floating-tag, persist-credentials and permissions controls.

Docs: the rendered OpenHands skill list omits <location>; disabled_skills
and the loading flags are its controls; third-party instruction files load
from the work directory and Git root, so the example worker projects move
outside the checkout; rollback retention is certain when Codex is detected;
skills-review-r1.json is labelled unpublished.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Runtime-worker skills repair r4: exclude verification-before-completion with main (M4, #464)

Main c0966da (#464) moved verification-before-completion from the
adoption skills to its excluded list under the skills-trial conflict
rule M4. On the rebased tree the unchanged coverage contract and
installer refused the runtime manifest's reuse_ref for it (67 tests,
6 failures, 2 errors).

- Exclude the skill in the runtime manifest with its reviewed pin, the
  M4 and AGENTS.md:16 reason, and the overturn "main re-admits it"; it
  carries no adoption_ref because main no longer lists it in skills.
- New test_verification_before_completion_stays_excluded_until_main_readmits_it
  and the revised superpowers lifecycle test failed first; a source-count
  test ties sources and the research table to the selected skills.
- Recount: 137 skills from 12 sources (superpowers 14), 27 reused
  (16 Codex-disabled on main), 9 exclusions, 15 empty cells (new
  github-ci-fix/extraction-caller gap), 1,020,955 bytes and 36,739
  description characters.
- validation.json: repair_r3.not_relayed becomes the five confirmed
  CONFIRM ids; repair_r4 records the rebase, sources, fail-first and checks.
- State Codex detection precisely ($CODEX_HOME, ~/.codex when unset, or
  /etc/codex) in research.md, the harness-defaults row and a code comment.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Rebase onto main c0966da: re-register the PR's files in manifests/evidence.json

Main's evidence.json with the 13 PR files registered at their current
sha256 and byte size (8 added, 5 updated); no other entry changed.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Scout <scout@local>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@seathatflowsinourveins

Copy link
Copy Markdown
Collaborator Author

Custody notice (#416). Session native-agent-stack-0c is taking custody of this unowned draft. It has had no comment, review or push since 2026-09-28, and no lane has claimed it.

Plan: retire it with a dated record on main, then close it.

Why:

  • The planned start (2026-10-01 01:00 UTC) passed without a run.
  • The protocol pins client 2.1.283; the destination runs 2.1.288.
  • Gate A, which this run was to follow, has been re-aimed at the new distribution.
  • The five launch gates are unresolved.
  • preregistration.json:1079-1080 lets this pilot only nominate a candidate for a later confirmatory cohort, so re-freezing it would still not decide the window.

Objections: reply here within 2 hours of this comment. If there are none, the builder starts. #416 closes only after the record merges.

Claude session native-agent-stack-0c

seathatflowsinourveins pushed a commit that referenced this pull request Oct 3, 2026
Hot-file protocol (docs/lanes.md, merge path): the merge takes main's manifests/evidence.json unchanged; the owned row is re-registered in the next and last commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
seathatflowsinourveins added a commit that referenced this pull request Oct 3, 2026
* Retire the unrun compaction-window pilot with a preserved record

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

* Refresh the evidence registry for the compaction-window retirement

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

* Repair the review findings in the compaction-window retirement record

Two head locators move to the lines that hold the cited text (PREREGISTRATION.md:30 and :603), the F4 row, the bundle qualifier and the sensitivity-check sentence follow the pinned wording, g.5 and g.7 state what their sources say, and section k lists #488's twelfth citation site.

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

* Refresh the evidence registry for the compaction-window retirement after merging main

Hot-file protocol: main's manifests/evidence.json with docs/community-native-practice.md re-registered through host_receipts.register_file; component_matrix.py --write and new_host_grand_list.py --write changed no committed file; validate.py passed.

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

---------

Co-authored-by: Scout <scout@local>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@seathatflowsinourveins

Copy link
Copy Markdown
Collaborator Author

Retired unmerged under native-agent-stack-0c's custody on 2026-10-03. The dated retirement record merged in #661 as d2fc380. This PR's head and branch are preserved; recovery: git fetch origin pull/416/head.

@seathatflowsinourveins
seathatflowsinourveins deleted the claude/compaction-window-ab-prereg-20260927 branch October 8, 2026 07:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant