Split from #14582 (item 3) by the triage seat: that card's other surface is content/docs/** (domain:devx) and this one is packages/spec/** (domain:spec), so they are separated to keep each lane's single ownership. #14582's own filer flagged packages/spec/** as a stop condition for the #14033 claim, which is why neither was fixed in PR #14580.
Not blocked. PR #14580 has landed — share-link-service.ts carries the #14033 gate on origin/mainc616c2c. The behaviour is in; only the prose describing it lags.
Two stale TSDoc sites
1. packages/spec/src/data/object.zod.ts:2237
/** Master switch. When false (default), no share links can be issued for this object. */
True but no longer complete: after #14033 the switch is a standing policy held at every redemption, so with it false no link resolves either — including links minted while it was on, and links minted through the system / permissive bypass. "Can be issued" describes only the mint half.
2. packages/spec/src/contracts/share-link-service.ts
IShareLinkService.resolveToken's docs enumerate the causes of the undifferentiated null — unknown, revoked, expired, audience, password, record gone (#5190), ineligible (#13608, named at :41 and :236) — and do not name the switched-off block (#14033), which is now one of them. An implementer reading the list to enumerate refusal causes gets an incomplete set.
Scope
⛔ TSDoc only. No schema change, no shape change, no behaviour change.
⛔ Do not change the .describe() string on publicSharing.enabled. #14582's filer measured the consequence and it is the reason this is prose-only: .describe() feeds content/docs/references/**, so changing it requires gen:schema && gen:docs and moves generated files. The TSDoc comment above it carries the correction instead.
⛔ Not Clause ②: nothing about the accept/reject set moves and no public surface widens.
Re-check
git show origin/main:packages/spec/src/data/object.zod.ts | sed -n '2237p'
git grep -n "13608\|14033" origin/main -- packages/spec/src/contracts/share-link-service.ts
Refs: #14582 (parent, item 3 — items 2 remains there) · #14033 (the ruling) · PR #14580 (the implementation, landed) · #13608 (the sibling eligibility predicate whose prose is the model to follow)
Generated by Claude Code
Split from #14582 (item 3) by the triage seat: that card's other surface is
content/docs/**(domain:devx) and this one ispackages/spec/**(domain:spec), so they are separated to keep each lane's single ownership. #14582's own filer flaggedpackages/spec/**as a stop condition for the #14033 claim, which is why neither was fixed in PR #14580.Not blocked. PR #14580 has landed —
share-link-service.tscarries the#14033gate onorigin/mainc616c2c. The behaviour is in; only the prose describing it lags.Two stale TSDoc sites
1.
packages/spec/src/data/object.zod.ts:2237/** Master switch. When false (default), no share links can be issued for this object. */True but no longer complete: after #14033 the switch is a standing policy held at every redemption, so with it false no link resolves either — including links minted while it was on, and links minted through the system /
permissivebypass. "Can be issued" describes only the mint half.2.
packages/spec/src/contracts/share-link-service.tsIShareLinkService.resolveToken's docs enumerate the causes of the undifferentiatednull— unknown, revoked, expired, audience, password, record gone (#5190), ineligible (#13608, named at:41and:236) — and do not name the switched-off block (#14033), which is now one of them. An implementer reading the list to enumerate refusal causes gets an incomplete set.Scope
⛔ TSDoc only. No schema change, no shape change, no behaviour change.
⛔ Do not change the
.describe()string onpublicSharing.enabled. #14582's filer measured the consequence and it is the reason this is prose-only:.describe()feedscontent/docs/references/**, so changing it requiresgen:schema && gen:docsand moves generated files. The TSDoc comment above it carries the correction instead.⛔ Not Clause ②: nothing about the accept/reject set moves and no public surface widens.
Re-check
Refs: #14582 (parent, item 3 — items 2 remains there) · #14033 (the ruling) · PR #14580 (the implementation, landed) · #13608 (the sibling eligibility predicate whose prose is the model to follow)
Generated by Claude Code