docs(release): work the v1.2.0 manual pass, and record what it found - #20
Draft
plearaj wants to merge 1 commit into
Draft
docs(release): work the v1.2.0 manual pass, and record what it found#20plearaj wants to merge 1 commit into
plearaj wants to merge 1 commit into
Conversation
The changelog was missing the spread-call fix: user-facing, because a call composed with `[...first(), ...second()]` was absent from every generated call graph and reached the report as an `unreached` finding. The release check covers steps 1-3, 5 and 6 of `scripts/prepublish-check.js` against pages built from this branch's scaffolds. Step 4 needs a real host and is recorded as outstanding rather than glossed. Step 6 ran all five tracers over third-party code: the CPython standard library, PrimeVue, the TypeScript compiler, vendored serde_json, five Java libraries and `/usr/include`. It found id collisions on ordinary code in four of the six corpora -- 158 in the standard library alone -- from three separate mechanisms. Recorded in the check with the measurements; not fixed here, because one of the three mechanisms cannot be fixed without changing a rule stated verbatim in four host templates. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01D377rQ9d7U39y7AQ2zNgAg
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.
Both manifests already declare
1.2.0and the changelog already leads with it, while the last published release isv1.1.0— so this is release prep for the version that section describes, not a version bump.Two commits' worth of documentation, and one finding that is not documentation.
The changelog was missing a user-facing fix
e2094da(a spread call is still a call) shipped without an entry. It belongs in1.2.0's Fixed section: calls composed with[...first(), ...second()]were absent from every generated call graph, and a call missing from the graph reaches the quality report as anunreachedfinding — which reads as delete this.Nothing else since
v1.1.0is unrecorded. All 22 commits were checked against the changelog's six subsections.Release readiness, audited
scripts/reaches neither package.CHANGELOG.mdis in npmfilesand the sdist include list.The manual pass —
RELEASE-CHECK-2026-08-28.mdSteps 1–3, 5 and 6 of
scripts/prepublish-check.js, against pages built from this branch's scaffolds and this repository's own map. Every number in the document was read out of the live page in headless Chromium, not out of the source that produced it.Two things this release changed were confirmed in the rendered page rather than in the template:
Ran and found nothing: unreached, single-responsibility, …— on a report where every SOLID and DEPTH detector is clean, that is the difference between "checked, nothing found" and a silence that reads as "never checked".<marker>elements and 0url(#references in its whole serialized DOM, which is what keeps a generated page out of corporate mail quarantine.Step 5 was made stronger than the v1.1.0 pass: rather than reading the
--accentvariable back, the same page was built from the stock theme and from a user theme and the painted colour compared —.coverage-banner h2goesrgb(145,132,217)→rgb(255,45,149)in dark andrgb(93,82,148)→rgb(0,139,69)in light.Step 4 was not performed and is recorded as outstanding. It needs a real host — Claude Code, Copilot, Codex or Antigravity — to watch discover the skill; this environment has none. It is still owed before publishing.
Step 6 ran the tracers over 45,000 real functions
trace_python.pytrace_typescript.mjstrace_typescript.mjstrace_rust.pytrace_java.pytrace_c_family.py/usr/include423 components against PrimeVue's 416
.vuefiles is thecomponentsFoundsanity check the checklist asks for.Both zeroes were checked rather than accepted. Java found 0 across the three pure libraries; the only two
static void mainmatches in them are inside Javadoc, which the tracer masks. Adding JUnit's console launcher and picocli took it to exactly 2 —ConsoleLauncher.java:32andAutoComplete.java:72, the only two real ones in the corpus, out of five files matching the text. The C family's 0 in a header tree is correct; the oneint main(in/usr/includeis inside a#define.What the pass found: id collisions on ordinary code
scripts/build-map.pyasserts ids are unique across the merged catalog. It fired./usr/includeNot a minified-code curiosity — three mechanisms, each of them ordinary:
derive_idfolds two names onto one id, andassign_idscounts names. The_l<line>suffix is applied when a file defines the same name twice, but the id is a slug that lowercases and replaces everything outside[a-z0-9_]. So Python's__add__andadd, Java'sBuilderconstructor andbuilder()factory, C++'s__waiterand~__waiter— every class with a destructor — and_M_xversus_M_Xare all distinct names deriving one id, counted as unique, given no suffix./usr/include's 106._l<line>cannot separate them and no record carries a column.distutils/_msvccompiler.pyversusdistutils/msvccompiler.py: the leading_becomes a separator and collapses into the one before it.The consequence is not cosmetic.
/code-flow.qualitycomputesunreachedby subtracting reached ids from catalogued ids, so two functions under one id means reaching either reports both reached — a genuinely unreachable function goes silently missing from the findings, which is the failure modedetectorsSkippedand the "ran and found nothing" line exist to prevent.Not fixed in this PR. Mechanisms 1 and 2 are contained. Mechanism 3 is not: it cannot be fixed by a rule that decides collisions "from the file's own contents", which is how the id rule is stated verbatim in all four host templates — so fixing it means changing that documented contract and giving up the property that moving an unrelated file never renames anything. That is a decision about what
v1.2.0is, not a defect to quietly patch during release prep. The defect predates this release; it has been there since the tracers landed.🤖 Generated with Claude Code
https://claude.ai/code/session_01D377rQ9d7U39y7AQ2zNgAg
Generated by Claude Code