Context
While supporting the v13.1 release-cut lane (#14475), I reran:
node buildScripts/release/analyzeClosedSinceRelease.mjs 2026-06-12 --format markdown
The data boundary was correct for v13.1 because the command passed an explicit cutoff. I verified the cutoff commit with:
git show -s --format=%H%n%ci%n%s 92eb323fb4
Result: 92eb323fb4ea3b44f77f9f757dedf24d9d140874, 2026-06-12 08:07:35 +0200, Release v13.0.0.
The script output/help still carries stale release-boundary wording from the prior release era: the JSDoc says it defaults to v12.1, and the markdown output labels the explicit cutoff as v12.1.0 release boundary. That made the #14475 freshness packet require an extra caveat to avoid contaminating release notes with a wrong boundary label.
The Problem
analyzeClosedSinceRelease.mjs is a release-cut evidence tool. Its counts are only useful if readers can trust both the data and the boundary prose. Today the data can be correct while the generated label is stale, so every v13.1 release-cut run needs a manual explanation: "the explicit cutoff is v13.0.0 even though the tool says v12.1.0." That is a small but recurring review/publish hazard.
The Architectural Reality
- Owning file:
buildScripts/release/analyzeClosedSinceRelease.mjs.
- Consumer: release-note authors/reviewers and the human publish handoff for #14475.
- The script currently accepts only a cutoff date, not a release-name argument, so it cannot truthfully infer a version label from
2026-06-12 without either a small mapping or neutral wording.
- The safe shape is to avoid hardcoded stale version prose in generated output. A neutral "explicit cutoff" label is sufficient; an optional release-label argument can be a later enhancement if needed.
The Fix
Update analyzeClosedSinceRelease.mjs so generated markdown/help text does not hardcode the stale v12.1 boundary when callers provide an explicit cutoff. Prefer the smallest durable shape:
- Keep the default cutoff documentation accurate for the script's current default, or remove the release-name claim from the default wording.
- In generated markdown, describe the boundary as the explicit cutoff date unless the script has a verified release label.
- Add a focused unit or snapshot-style check if this script already has local test coverage; otherwise a
node --check plus a sample command output check is acceptable for this small build-script text fix.
Contract Ledger Matrix
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback |
Docs |
Evidence |
analyzeClosedSinceRelease.mjs markdown output |
#14475 release-cut usage + explicit cutoff argument |
Generated boundary text is neutral or verified, never stale-hardcoded to v12.1 for a v13.0 cutoff |
If no release label is known, output only the cutoff date |
Script help/JSDoc |
Sample command shows no stale release-name label |
| Script help/JSDoc |
Current CLI usage in the file |
Default and example prose do not imply v12.1 when the release lane is v13.1 |
Use neutral wording |
File JSDoc |
node buildScripts/release/analyzeClosedSinceRelease.mjs --help checked |
Decision Record impact
none — build/release helper text correction, no ADR authority touched.
Acceptance Criteria
Out of Scope
- Running the v13.1 publish flow.
- Changing release counts or archive semantics.
- Building a full release-version inference system unless a minimal explicit-label argument is clearly cheaper than neutral wording.
Avoided Traps
- Do not update the numbers to match a snapshot. The bug is the boundary label, not the data.
- Do not infer version labels from dates unless the source of truth is explicit; a neutral cutoff label is better than a plausible wrong release name.
Related
Related: #14475, #14483, #14489, #14530.
Origin Session ID: 7186fa08-ba22-48eb-bc1e-84325fa26e40
Handoff Retrieval Hints: analyzeClosedSinceRelease v12.1 boundary label v13.0 cutoff, Release v13.0.0 92eb323fb4, #14475 freshness packet.
Live latest-open sweep: checked latest 20 open issues at 2026-07-03T02:00:48Z; no equivalent found. A2A in-flight sweep: checked latest 30 all-status messages at 2026-07-03T02:00Z; no overlapping claim found. Local exact sweep searched resources/content/issues and resources/content/discussions for analyzeClosedSinceRelease, v12.1.0, Release v13.0.0, release appendix, and cutoff; found related release-window context but no equivalent fix ticket. KB ticket sweep returned no relevant release-analyzer ticket.
Context
While supporting the v13.1 release-cut lane (#14475), I reran:
The data boundary was correct for v13.1 because the command passed an explicit cutoff. I verified the cutoff commit with:
Result:
92eb323fb4ea3b44f77f9f757dedf24d9d140874,2026-06-12 08:07:35 +0200,Release v13.0.0.The script output/help still carries stale release-boundary wording from the prior release era: the JSDoc says it defaults to
v12.1, and the markdown output labels the explicit cutoff asv12.1.0 release boundary. That made the #14475 freshness packet require an extra caveat to avoid contaminating release notes with a wrong boundary label.The Problem
analyzeClosedSinceRelease.mjsis a release-cut evidence tool. Its counts are only useful if readers can trust both the data and the boundary prose. Today the data can be correct while the generated label is stale, so every v13.1 release-cut run needs a manual explanation: "the explicit cutoff is v13.0.0 even though the tool says v12.1.0." That is a small but recurring review/publish hazard.The Architectural Reality
buildScripts/release/analyzeClosedSinceRelease.mjs.2026-06-12without either a small mapping or neutral wording.The Fix
Update
analyzeClosedSinceRelease.mjsso generated markdown/help text does not hardcode the stale v12.1 boundary when callers provide an explicit cutoff. Prefer the smallest durable shape:node --checkplus a sample command output check is acceptable for this small build-script text fix.Contract Ledger Matrix
analyzeClosedSinceRelease.mjsmarkdown outputnode buildScripts/release/analyzeClosedSinceRelease.mjs --helpcheckedDecision Record impact
none — build/release helper text correction, no ADR authority touched.
Acceptance Criteria
node buildScripts/release/analyzeClosedSinceRelease.mjs 2026-06-12 --format markdownno longer labels the boundary asv12.1.0.--help/ top-of-file usage prose no longer hardcodes stale v12.1 language in a way that misleads v13.1 release-cut work.Out of Scope
Avoided Traps
Related
Related: #14475, #14483, #14489, #14530.
Origin Session ID: 7186fa08-ba22-48eb-bc1e-84325fa26e40
Handoff Retrieval Hints:
analyzeClosedSinceRelease v12.1 boundary label v13.0 cutoff,Release v13.0.0 92eb323fb4,#14475 freshness packet.Live latest-open sweep: checked latest 20 open issues at 2026-07-03T02:00:48Z; no equivalent found. A2A in-flight sweep: checked latest 30 all-status messages at 2026-07-03T02:00Z; no overlapping claim found. Local exact sweep searched
resources/content/issuesandresources/content/discussionsforanalyzeClosedSinceRelease,v12.1.0,Release v13.0.0,release appendix, andcutoff; found related release-window context but no equivalent fix ticket. KB ticket sweep returned no relevant release-analyzer ticket.