Repository navigation
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
Conversation
…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]>
…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]>
5 tasks done
This branch has not been deployed
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
practice_client_behind: a Claude Code release newer than the skill'sclient_versionwas observed.practice_refs_ahead: a screened practice reference changed its practice files since its pin.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 atec15c903751cf2f6ed906a6ad10df8c61f04f1c7.lane:foundationscripts/currency_due.py,tools/sota-convergence/practice_references.py,catalogs/foundation/practice-references.json;adoption/templates/systemd/stack-currency.service,adoption/lifecycle.md;manifests/evidence.json.SOTA sources
fileslist (at most 300 files) comes with the same call the tool already makes. Measured:?per_page=1still returns all 14 changed files of the guide's comparison.59dc4f047f850a21dabbdde7685be07c2e3ca5bdin the catalog; head294e0268f15642a7c8ca2ea75bc52999c167f1d2.versions.claude_code.watched, from the npm dist-tags) and this skill'sslots.json.TimeoutStartSec.Evidence-class table
local_integrationpractice_references.pyrun live, 2026-10-15T01:46Zscreen_pathsisolates the guide's practice change:screen_paths_changedis 5 (README.md and four best-practice files) of 134 commitslocal_integrationsyntheticPracticeClientTests(5),PracticeRefsTests(4),ScreenPathTests(5), the observe test--network, and its timeout covers every check's boundsyntheticUnitTemplateTestsLocal commands run
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
stack-currency.servicefrom 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.CachedArtifactTestscounts to the baseline. The suite above runs with no host cache.294e0268follow 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.practice_references.py:353-355): a practice file renamed out of the screened paths matched nothing, which cleared the noticeobserve()keeps each rename'sprevious_filename(github/docs@be38ec5d,src/rest/data/fpt-2022-11-28/commits.json:5517) incompare.renamed_from._screened()counts an entry once when either name matches, and names itold -> new.ObserveTests.test_a_practice_file_renamed_out_of_the_screened_paths_still_countsgoes throughobserve()andclassify(). It failed withAssertionError: 1 != 2.currency_due.py:409): one screened reference with an unknown change discarded another reference's known change, so no due-file was writtenunknownand the gap is listed. With no known change, the result is unchanged.PracticeRefsTests.test_a_known_change_survives_another_reference_that_is_unknownruns throughmain()and writes the due-file. It failed withKeyError: 'practice_refs_ahead'.929bc3c3python3 -m unittest tests.test_practice_references tests.test_currency_due tests.test_currency_due_notice: 168 tests OK.scripts/validate.py: rc 0.Checklist
🤖 Generated with Claude Code