Skip to content

Gap ledger: native idle compaction, enableArtifact false as a host choice, PR descriptions read back after publishing - #1169

Merged
seathatflowsinourveins merged 2 commits into
mainfrom
claude/cc-native-practice-close-tokeff-new-20261015
Oct 15, 2026
Merged

seathatflowsinourveins merged 2 commits into
mainfrom
claude/cc-native-practice-close-tokeff-new-20261015

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

Scope

  • What this PR changes, in one or two sentences: This PR closes three ADOPT rows of the Claude Code practice gap ledger:

    • C3-0006: native idle compaction in the context-compaction slot;
    • A3-0031: enableArtifact false recorded as a host choice in settings-permissions;
    • B2-0004: PR descriptions are published from a file and read back, in pr-review-pre-cue, with the repository's one PR-writing workflow step changed to match.

    The command center dispatched the ledger on 2026-10-15. Each row was confirmed by a second-family re-check, or (A3-0031) by the command center's adjudication.

  • Base commit: 9cf122558 (rebased; registry and manifest label only). The first commit's fail-first ran at the pre-rebase base 420452059, and the fold's at 9cf122558 (see Local commands run).

  • Lane: lane:foundation

  • Owned paths touched:

    • the practice skill's slots.json, token-efficiency.md, native-clients.md and git-github-automation.md, plus the slot manifest (sha256_when_labeled only);
    • catalogs/foundation/upstream-surface-dispositions.json: the idleCompaction reason is rewritten, and a new enableArtifact row is added;
    • .github/workflows/catalog-freshness.yml: a workflow change (see below);
    • docs/github-automation.md: one dated sentence;
    • tests/test_native_practice_ledger_rows_tokeff_new.py (new) and tests/test_catalog_freshness_propose.py;
    • manifests/evidence.json.

Rows:

  • C3-0006: the context-compaction notes name native idle compaction (2.1.299) as how compaction happens before an idle gap, and keep it on.
    • idleCompaction stays unset, following the command center's ruling of 2026-10-14; false is for a single session only.
    • The idleCompaction disposition's stale "rollout" reason is rewritten from the 2.1.300 docs. The row is default-on: the host leaves the native default alone (docs/decisions/2026-10-06-harness-context-budget-refresh.md:25), and the dispositions rules (:13-14) call that default-on (the command center's FULL read at bf06685, P2-2).
    • Rows are added for three neighbouring keys (the same read, P3):
      • claude:setting:disableArtifact, not-applicable: a deprecated alias of enableArtifact;
      • claude:env:DISABLE_AUTO_COMPACT, default-on: unset, so automatic and idle compaction stay on;
      • claude:env:CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS, default-on: unset, at its 200000-token default.
  • A3-0031: a disposition row claude:setting:enableArtifact: enabled, value false, carrier the host's user settings.
    • The host value comes from an exact-key read on 2026-10-15.
    • No template change and no host write: re-applying the template keeps host-only keys (tools/adoption/apply_claude_settings.py:323-329).
  • B2-0004:

Workflow change, called out: .github/workflows/catalog-freshness.yml, propose step.

  • The change is a read-back of the description it just published. It uses the same gh and token, with no new permission or action.
  • A failed read-back stops the step with its own message (the command center's FULL read at bf06685, P2-1). Before the fold it already exited 1 there, but silently.
  • The tests' synthetic gh can keep or drop the description, fail the read-back with no output, or return a different description. Each failure case exits 1 without reporting the PR, on the create and update paths.
  • zizmor 1.30.1 offline: no findings (3 suppressed, as before).
  • tests.test_workflow_hardening: OK.
  • The read-back has not run in CI yet; the first live check is the next propose run that opens a PR.

SOTA sources

Evidence-class table

Claim Evidence class Command / receipt
Row text, the dispositions and the read-back step synthetic the new module and tests/test_catalog_freshness_propose.py (a stub gh keeps or drops the description)
#727's stored description equals the step's output for lane:shared (1,199 bytes) local_integration a live read-only observation, 2026-10-15
Idle compaction, enableArtifact, gh behaviour source_review the sources above

Local commands run

$ python3 -m unittest tests.test_native_practice_ledger_rows_tokeff_new tests.test_catalog_freshness_propose   # base 420452059
FAILED: e.g. AssertionError: 'idle compaction' not found; ValueError: 'pr view automation/catalog-freshness --json body --jq .body' is not in list
$ python3 -m unittest tests.test_native_practice_ledger_rows_tokeff_new tests.test_catalog_freshness_propose tests.test_native_practice_snapshot_provenance tests.test_workflow_hardening
Ran 224 tests; OK (skipped=1)
$ python3 -m unittest <the two new read-back tests> tests.test_native_practice_ledger_rows_tokeff_new   # fold, on exports of 9cf122558 and bf06685a
9cf122558: both read-back cases report the PR (0 != 1); bf06685a: 'could not be read back' not found in ''; the idleCompaction pin fails (declined) and the new rows' test errors (no rows)
$ python3 -m unittest tests.test_catalog_freshness_propose tests.test_workflow_hardening tests.test_native_practice_ledger_rows_tokeff_new   # b550860e
Ran 91 tests, OK; Ran 118 tests, OK (skipped=1); Ran 7 tests, OK
$ zizmor --offline .github/workflows/catalog-freshness.yml
No findings to report. (3 suppressed)
$ python3 scripts/validate.py
rc 0

Follow-ups

  • The disposition readers' modules also ran in this environment: 25 tests.test_claude_usage_metrics errors are a missing prometheus_client module (environment only).
  • enableArtifact is recorded for NativeStack2604 only; the other host was not read.
  • Practice rows: --max-findings, marketplace autoUpdate and trust, the workflow model override, the effortLevel origin #1147 also appends to the pr-review-pre-cue notes. Whichever lands second keeps both sentences.
  • From the command center's delta read at b550860 (PASS, 2026-10-15; /var/tmp/cc-cc-work/pr1169-micro/MICRO-delta-b550860e.md), three P3s ruled follow-ups, not a fold:
    • The ruled :line pins at catalogs/foundation/upstream-surface-dispositions.json:3740 and :3752 are not done and give no reason. The env-vars digest named here is 54351937, while the live page is 26d89d47.
    • The Local commands section names the wrong failing line at bf06685.
    • The row at catalogs/foundation/upstream-surface-dispositions.json:3726 is not-applicable where declined fits.
  • From the GPT full read at b550860 (ACK, 2026-10-15; coordination/cc-reads-20261005/full1-pr1169/GPT-VERDICT-b550860e2.md), three P3s, follow-ups:
    • This body carried the digest prefix of an unpublished review record beside its path; removed in this body edit, keeping the path and date.
    • evidence/artifacts/claude-native-practice-20261009/verification.json:5925 and :6001 cite catalogs/foundation/upstream-surface-dispositions.json lines 1619-1628 for forceLoginMethod; the row inserted at :1498 moves that key to 1631-1640.
    • test_the_pages_render_the_rows (tests/test_native_practice_ledger_rows_tokeff_new.py:96) passes on the base: it should require each closure marker (C3-0006, A3-0031, B2-0004) on its page before checking agreement with the row.

Checklist

  • GitHub Actions: no action added or re-pinned.
  • Workflows: one step of catalog-freshness.yml changed, with no new permission; zizmor and tests.test_workflow_hardening pass.
  • No secrets are printed, logged or committed.
  • No new paid hosting, subscription or billing surface.
  • Peer-owned untracked files and worktrees were preserved.

🤖 Generated with Claude Code

… read PR descriptions back

From the practice gap ledger of 2026-10-15 (rows C3-0006, A3-0031 and B2-0004,
each ruled ADOPT and confirmed by the co-op's Codex re-check or by the command
center's adjudication):

- context-compaction (C3-0006): compacting before an idle gap is native since
  2.1.299. Idle compaction compacts an interactive terminal conversation on the
  one-hour cache TTL with 200,000 or more tokens about 54 minutes after its last
  request, before the cache expires (CHANGELOG.md:97-98 at
  anthropics/claude-code@94506ff;
  settings-reference.md:2964-2983 at 2.1.300). The notes name it and keep it
  on, and the slot's mapping of the compact-before-an-idle-gap practice names
  it. The idleCompaction disposition stays declined (no override); its stale
  rollout reason now cites the 2.1.300 docs and the command center's ruling of
  2026-10-14 (leave it unset; false only for one session).
- settings-permissions (A3-0031, ledger slot new): enableArtifact false, read
  from NativeStack2604's user settings by an exact-key grep, is recorded as a
  host choice in a new claude:setting:enableArtifact disposition row (enabled,
  scope NativeStack2604, carrier host user settings). The template is
  unchanged: re-applying it keeps keys it does not mention
  (tools/adoption/apply_claude_settings.py:323-329).
- pr-review-pre-cue (B2-0004, ledger slot new): a PR description goes out from
  a temporary file with --body-file and is read back with gh pr view --json
  body before the PR is reported or cued. Measured 2026-10-11 on #991: updates
  over 262,144 UTF-8 bytes got HTTP 200 and GitHub kept the old description.
  The catalog-freshness propose step already wrote its description to a
  runner temp file and passed --body-file; it now reads the published
  description back and stops before reporting the PR when the two differ.
  #727's stored description is byte-identical to what the step writes for its
  lane (read 2026-10-15), and gh passes the file's bytes unchanged
  (cli/cli v2.102.0 create.go:336-341, edit.go:176-181).

Tests: tests/test_native_practice_ledger_rows_tokeff_new.py, 6 tests, 5 failed
on the base (the page render pin passed); in
tests/test_catalog_freshness_propose.py two tests drive the step's shell with a
synthetic gh that keeps or drops the description, and both failed on the base
in all 5 subtests. Native-practice modules: 106 OK (3 skipped). The 55
modules that read the changed files: 2,665 tests, 2,606 passed, 30 skipped;
the 29 others (25 tests.test_claude_usage_metrics errors, prometheus_client not
installed on this host; 4 tests.test_upstream_surface_watch CachedArtifactTests
failures, this host's cached upstream artifacts) fail the same way on the base.
validate rc 0.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@seathatflowsinourveins seathatflowsinourveins added the lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers label Oct 15, 2026
…paction default-on, three neighbour rows

The command center's FULL read of #1169 at bf06685 passed with no P1. It ruled ONE fold, to be re-read as a delta.

- P2-1: tests/test_catalog_freshness_propose.py:1057's synthetic gh can now fail the read-back with no output, or return
  a different description. Two tests assert that the step exits 1 without reporting the PR, on the create and update
  paths. The propose step in .github/workflows/catalog-freshness.yml now stops on a failed read-back with its own
  message; before this commit it already exited 1 there, but silently.
- P2-2: catalogs/foundation/upstream-surface-dispositions.json:3714 moves claude:setting:idleCompaction from declined to
  default-on. The host leaves the native default alone (docs/decisions/2026-10-06-harness-context-budget-refresh.md:25),
  and the dispositions rules (:13-14) call that default-on. The pin at
  tests/test_native_practice_ledger_rows_tokeff_new.py:53 follows.
- P3: new rows for three keys:
  - claude:setting:disableArtifact, not-applicable (a deprecated alias of enableArtifact; settings-reference.md:5354-5360);
  - claude:env:DISABLE_AUTO_COMPACT, default-on (env-vars.md:450);
  - claude:env:CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS, default-on (env-vars.md:323).

Fail-first, with this commit's tests on git archive exports:
- At base 9cf1225, both read-back cases report the PR (exit 0).
- At bf06685, the failed read-back exits without its message.
- The new disposition test fails at bf06685 (declined), and the new rows' test errors there (no rows).
After: the two modules, tests.test_catalog_freshness_propose (91 tests) and tests.test_workflow_hardening (118) pass.
zizmor --offline reports no findings (3 suppressed), and validate rc is 0.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@seathatflowsinourveins
seathatflowsinourveins merged commit b4d6058 into main Oct 15, 2026
38 checks passed
@seathatflowsinourveins
seathatflowsinourveins deleted the claude/cc-native-practice-close-tokeff-new-20261015 branch October 15, 2026 23:20
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