Skip to content

Currency notice: count a practice skill behind the client and a screened practice reference that changed - #1136

Open
seathatflowsinourveins wants to merge 3 commits into
mainfrom
claude/cc-native-practice-currency-practice-counts-20261015
Open

seathatflowsinourveins wants to merge 3 commits into
mainfrom
claude/cc-native-practice-currency-practice-counts-20261015

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

Scope

  • What this PR changes: the daily currency notice gains two event triggers for the Claude Code practice skill, and the daily run makes its read-only network checks. This carries out the command center's B3 ruling (W2 and W4), 2026-10-15.
    • practice_client_behind: a Claude Code release newer than the skill's client_version was observed.
    • practice_refs_ahead: a screened practice reference changed its practice files since its pin.
  • Base commit: 929bc3c3f3b6d1f890279ff14d3f500e2d4db592, the merge base of this branch. Corrected in fix round 2 after the GPT read flagged it. The clean merge was checked against main at ec15c903751cf2f6ed906a6ad10df8c61f04f1c7.
  • Lane: lane:foundation
  • Owned paths touched:
    • scripts/currency_due.py, tools/sota-convergence/practice_references.py, catalogs/foundation/practice-references.json;
    • adoption/templates/systemd/stack-currency.service, adoption/lifecycle.md;
    • the release-tracking and practice-references rows (slots.json, ci-supply-chain.md, instructions-skills.md) and the snapshot label;
    • the three test modules and manifests/evidence.json.

SOTA sources

Evidence-class table

Claim Evidence class Command / receipt
Pin drift is noise as a trigger: 23 of 26 references are drifted local_integration practice_references.py run live, 2026-10-15T01:46Z
screen_paths isolates the guide's practice change: screen_paths_changed is 5 (README.md and four best-practice files) of 134 commits local_integration the patched tool run live
The counts, their gaps and the notice text synthetic PracticeClientTests (5), PracticeRefsTests (4), ScreenPathTests (5), the observe test
The unit passes --network, and its timeout covers every check's bound synthetic UnitTemplateTests

Local commands run

$ python3 -m unittest tests.test_currency_due tests.test_practice_references tests.test_model_currency_propose   # with main's script, tool, template and catalog
Ran 165 tests, FAILED (failures=3, errors=180)   # the harness's default practice-references stub needs the new check
$ UPSTREAM_SURFACE_TEST_CACHE=/nonexistent python3 -m unittest tests.<module>   # at ecfe6dec, one process per module, idle-class
rc 0 for all 12: currency_due (104), currency_due_notice (22), model_currency_propose (23), practice_references (38), upstream_surface_watch (116), native_practice_retired_routes (45), native_practice_snapshot_provenance (9), primary_source_reading_counts (22), evidence_manifest (5), validate (86), local_pages_policy_grants (25), push gate (127)
$ python3 scripts/validate.py
rc 0

Decision record

No new decision file. The ruling is the command center's on the lane's B3 record (2026-10-15). The rows now say what triggers what, and the practice record's addendum (in #1129) covers the related sandbox rulings.

Notes for the reads

  • After landing: the command center re-renders the installed stack-currency.service from the live clone, so the host unit gets --network. The host's mise-shims PATH drop-in stays as a host note. The template's PATH changes only on a second host's evidence.
  • Follow-up, approved and separate: re-baselining the surface watch to 2.1.300 and tying four CachedArtifactTests counts to the baseline. The suite above runs with no host cache.
  • Where the triggers lead: the guide's first screen (the 61-claim table) and the re-pin to 294e0268 follow as their own PRs.

Fix round 2 (6563b78)

From GPT full1 at 6162aa0 (full1-pr1136/GPT-VERDICT-6162aa045.md) and the local review at 6162aa0 (review_output.json). The command center released this commit at 2026-10-15T11:11Z.

Finding Fix Fail-first test (failed at 6162aa0, passes at 6563b78)
GPT blocker 1, also the local P2 (practice_references.py:353-355): a practice file renamed out of the screened paths matched nothing, which cleared the notice observe() keeps each rename's previous_filename (github/docs@be38ec5d, src/rest/data/fpt-2022-11-28/commits.json:5517) in compare.renamed_from. _screened() counts an entry once when either name matches, and names it old -> new. ObserveTests.test_a_practice_file_renamed_out_of_the_screened_paths_still_counts goes through observe() and classify(). It failed with AssertionError: 1 != 2.
GPT blocker 2 (currency_due.py:409): one screened reference with an unknown change discarded another reference's known change, so no due-file was written The known count and its details stay; coverage stays unknown and the gap is listed. With no known change, the result is unchanged. PracticeRefsTests.test_a_known_change_survives_another_reference_that_is_unknown runs through main() and writes the due-file. It failed with KeyError: 'practice_refs_ahead'.
GPT blocker 3: wrong base commit in the body The base line above now gives 929bc3c3 body

python3 -m unittest tests.test_practice_references tests.test_currency_due tests.test_currency_due_notice: 168 tests OK. scripts/validate.py: rc 0.

Checklist

  • No GitHub Actions changed.
  • No workflows changed.
  • No secrets printed, logged or committed.
  • No paid hosting, subscription or billing surface.
  • Peer-owned files and worktrees preserved.

🤖 Generated with Claude Code

…ned practice reference that changed

The command center ruled on B3 (2026-10-15): the daily currency run
triggers the lane's maintenance by events, not dates.

- practice_client_behind (W2): offline, from the fresh surface-watch
  report. It is 1 when versions.claude_code.watched is newer than the
  practice skill's client_version (release numbers compared as numbers)
  and starts the skill's step 2. A stale report or a missing skill gives
  no count; an unreadable version is "unknown".
- practice_refs_ahead (W2, under --network): practice-references.json
  takes an optional per-reference screen_paths. practice_references.py
  reads the changed file names from the compare call it already makes and
  reports screen_paths_changed (0 for an identical pin; None when not
  observed, or when the API's 300-file list holds no match).
  currency_due counts the references with a nonzero value. Pin drift
  alone does not count: measured live, 23 of 26 references drift, and the
  best-practice guide's 134 commits since its pin changed practice text in
  5 files. A failed check or an unknown change is the gap "practice
  reference check incomplete". Only shanraisshan/claude-code-best-practice
  carries screen_paths for now (README.md, best-practice/*).
- stack-currency.service: ExecStart passes --network (the CC's ruling,
  in the template so host and template stay identical), and
  TimeoutStartSec rises to 2400, covering every check's bound. The
  flag-echo test runs with the skill check stubbed.
- W4: the release-tracking and practice-references rows record the
  triggers, the function-check rule for headless roles, and the
  mise-shims PATH host note. The snapshot label follows.

Tests: test_currency_due, test_currency_due_notice,
test_model_currency_propose and test_practice_references: 187 OK. With
main's script, tool, template and catalog: 3 failures and 180 errors (the
harness's default practice-references stub needs the new check). The
live tool reports the guide at screen_paths_changed 5, matching the
compare read.

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
…t as gaps, never "nothing due"

The local review of ecfe6de (review_output.json 3002c574) found two P2s:

- tools/sota-convergence/practice_references.py: a fetch failure (timeout,
  rate limit) returned before the screen_paths step, so a screened
  reference had no screen_paths_changed field, currency_due's
  practice_refs_findings() dropped it and reported the coverage "checked"
  with a zero count, which could delete an existing notice unobserved.
  classify() now sets screen_paths_changed to None (unknown) for a screened
  reference it could not fetch, so the coverage is "unknown", a gap.
- scripts/currency_due.py: a practice_client "unknown" (an unreadable
  slots.json, or a surface report with no valid watched version) was not a
  gap, so with every count at zero the run printed "nothing due" and
  deleted the previous due-file. It is now the gap "practice skill check
  incomplete" in both the run's gap list and gaps_of(), so incomplete()
  holds.

Fail-first: test_a_failed_fetch_of_a_screened_reference_is_unknown_never_dropped
and test_an_unknown_practice_client_is_a_gap_never_nothing_due failed on
ecfe6de ('screen_paths_changed' not found; gap list []); the practice and
currency modules run 166 tests OK; validate rc 0.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
…ange beside an unknown reference

Fix round for #1136 at 6162aa0:
- GPT blocker 1 and local review P2 (practice_references.py:353-355): observe() kept only the new name, so a
  practice file moved out of the screened paths matched nothing and cleared the notice. The observation keeps
  each rename's previous_filename (github/docs@be38ec5d src/rest/data/fpt-2022-11-28/commits.json:5517) in
  compare.renamed_from, and _screened() counts an entry once when either name matches.
- GPT blocker 2 (currency_due.py:409): one screened reference with an unknown change discarded another's known
  change, so no due-file was written. The known count and details are kept, and coverage stays "unknown".

Fail-before (base code, new tests): test_a_practice_file_renamed_out_of_the_screened_paths_still_counts,
AssertionError: 1 != 2; test_a_known_change_survives_another_reference_that_is_unknown, KeyError:
'practice_refs_ahead'. After: tests.test_practice_references, tests.test_currency_due and
tests.test_currency_due_notice 168 tests OK; validate rc 0.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

This branch has not been deployed

No deployments
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