Repository navigation
docs(skills): spec-property-retirement's retiredAfter item names the stamp under a prerelease label — the newest published stable release (#23057) - #23162
Conversation
…newest stable release at landing, never a prerelease label The checklist item told a new retirement to stamp packages/spec/package.json's current version label. Under a prerelease label (x.y.z-next.N) that value fails tsc's x.y.z template type and the census. The item now restates the landed retiredAfter TSDoc in packages/spec/src/conversions/types.ts: the newest stable release at the moment the retirement lands, never the prerelease label and never its x.y.z, with that TSDoc named as the authority. Rewritten on the item's own lines; line count unchanged (337). Claude-Session: https://claude.ai/code/session_012dGTuJen61ECNHXYXKChoC Co-authored-by: Claude <noreply@anthropic.com>
Contract reviewServed-tier: Inputs read: card #23057 (body; comments 6126795562 triage, 6138010848 unlock, 6138255257 claim, 6138492837 dev report), PR #23162 (body, file list, ① Derived judgments
② Semver level
③ Boundary flags
Implemented-by: VERDICT: PASS Generated by Claude Code |
Fixes #23057
Clause-②: no
The
spec-property-retirementplaybook'sretiredFromLoadPath/retiredAfterchecklist item told the author of a new retirement to stamp "packages/spec/package.json的当前版本标签" (the package's current version label). Under a Changesets prerelease label (18.0.0-next.N) that value fails tsc's${number}.${number}.${number}template type and the census'striple(). This PR brings that one sentence into line with the rule the spec half already landed: theretiredAfterTSDoc inpackages/spec/src/conversions/types.ts(719183f50, PR #23130). It adds no rule of its own and names that TSDoc as the authority.Tier S (
.claude/**): this PR stays draft. It lands only by the owning seat on a contract-tier review of record. The authoring seat does not flip it to ready, queue it, or arm auto-merge.The change
One file,
.claude/skills/spec-property-retirement/SKILL.md. Lines 205 and 206 are rewritten in place. Line 204 and lines 207 to 337 are byte-identical.Before (base
02bec6ca8):After (
9b14911b4c):Acceptance notes
The landed TSDoc text and the new sentence, side by side. The TSDoc is quoted verbatim from
packages/spec/src/conversions/types.tsat02bec6ca8:retiredAfterTSDoc (719183f50)x.y.z-PRERELEASE, Changesets pre mode), it is the newest published stable release, which sits belowx.y.z— never the label (not a stablex.y.z) and neverx.y.z, the first stable release that carries the entry retired (17.7.0under18.0.0-next.N, say)."x.y.z-next.N时永不填它或x.y.z(when the label isx.y.z-next.N, never that label and neverx.y.z)x.y.z), it is the label itself") gets no clause of its own. Under a stable label, the newest stable release at landing is the label, so the general rule already gives that value. The TSDoc's paragraph on already-published entries (the census-refresh re-stamp) is not restated either. The item is about new retirements, and the old sentence never carried that paragraph. TheTSDoc 为准pointer covers both.check-skill-line-ratchet). 337 lines before and after (ceiling 337, headroom 0). The widest table row is 324 bytes before and after (pin 326). The rewritten lines are 118 and 117 bytes; before, they were 119 and 73. The new text fits on the sentence's own two lines, using the slack on line 206, which carried the tail of the same sentence's parenthetical. No line of other content was joined, moved or re-wrapped to make room. The pointer is the unqualifiedTSDoc 为准rather than a longer form such as以其 TSDoc 为准because the longer form makes line 206 121 bytes.origin/main02bec6ca8.packages/spec/package.jsonreads17.7.0(a stable label)..changeset/pre.jsonismode: pre,tag: next, so the next Version Packages pass writes18.0.0-next.N, and the old sentence would then hand an author a value that tsc and the census refuse.719183f50is an ancestor oforigin/main(git merge-base --is-ancestorexit 0).max-table-row-bytespin has 2 bytes of headroom (widest row 324, pin 326) and suggests lowering it. That is true on the base too and is unrelated to this diff. Lowering it means editingscripts/pm/check-skill-line-ratchet.mjs, which is outside this card's file surface.Gates
The gate list comes from
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackwith no paths (change set read from git against merge base02bec6ca8). It names 18 commands, the same 18 as the dispatch. Each command ran alone in the foreground at HEAD9b14911b4c, and its exit code was read before any pipe.node scripts/check-ci-filter-parity.mjsconsoleentr(ies) are literal paths …node scripts/check-closing-keyword-parity.mjsnode scripts/check-closing-keyword-parity.mjs --self-testnode scripts/check-comment-mask-corpus.mjsnode scripts/pm/check-harness-current.mjs --self-testpnpm --filter @objectstack/lint run check:doc-formula-expressionspnpm check:agent-test-spellingpnpm check:cross-package-test-inputspnpm check:doc-authoringpnpm check:driver-memory-censuspnpm check:gitlink-declaredpnpm check:nul-bytespnpm check:pm-governed-mergespnpm check:pm-skill-ratchetpnpm check:refd-timer-probepnpm check:required-contextspnpm check:skill-frame-syncpnpm check:watch-hint-literalcheck:doc-formula-expressionsexited 3 (PREREQUISITE NOT MET:@objectstack/formulaand@objectstack/lintnot built), so nothing was measured. I built both under the shared verify lock (pnpm exec turbo run build --filter=@objectstack/formula --filter=@objectstack/lint --concurrency=2,VERDICT command-exit 0) and re-ran the gate: exit 0, the row above.node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --ran ran.listgives "18 derived famil(ies) accounted for — 18 run, 0 NOT-MEASURED".node scripts/pm/check-skill-line-ratchet.mjs, exits 0. Its 120-byte line rule prints only on failure, and nothing printed for this file..claude/**, which publishes nothing. The PR carriesskip-changeset.维护者速读(草稿)
spec-property-retirement技能里retiredAfter那一条清单项。原文让新退役填packages/spec/package.json的当前版本标签;现改为填「落地时最新的 stable 发布」,并写明预发布标签(x.y.z-next.N)下永不填标签本身或x.y.z,以retiredAfter的 TSDoc 为准。只改两行,文件行数不变(337)。.changeset/pre.json,tagnext),下一次 Version Packages 会把版本标签写成18.0.0-next.N;照旧句填写,tsc与 census 都会拒。规则本身已由 spec 侧(PR test(spec): under a prerelease package label the retired-after census refuses the release triple, and the retiredAfter TSDoc names the newest published stable release #23130)写进 TSDoc,本 PR 只让技能文本跟上,不另立规则。.claude/**),由domain:skills席位凭达档复核记录落地;对措辞有异议请在本 PR 留言。Generated by Claude Code