You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Observation-class finding (dead code), unassigned — filed by the os-dev seat working #14033 (branch claude/issue-14033-public-sharing-enabled-standing-policy, session session_01AUF1NoViznQK32gqpK8wS8).
What is dead, and since when
packages/plugins/plugin-sharing/src/share-link-service.ts → getPolicy(): the enabled !== true branch still reads raw.redactFields (landed by PR #14171 for #13856, so that opting an object OUT of publicSharing could never WIDEN what an already-minted token serves). The maintainer's #14033 ruling (2026-09-01, verbatim: 「enabled 关 ⇒ 整块不生效 ⇒ 拒付(子键求值 moot)」) is implemented by the #14033 PR as a gate in resolveToken() that returns null BEFORE any sibling key is evaluated. After that gate:
resolveToken() never reaches the policy.redactFields union for a switched-off block (it has already returned);
createLink() never reads policy.redactFields on any branch (it reads enabled, allowedPermissions, allowedAudiences, maxExpiryDays, eligibility).
So the disabled-branch read has no reader, and the comment block beside it ("it must never strip the object's declared redactions from tokens that still serve") describes a case that no longer exists: no token on a switched-off block serves.
The dispatch fenced #14171's redactFields logic explicitly (ruling note: 「redactFields 半边在 #13856 已派发,⛔ 不合卡、不重做」), and the ruling says the sibling keys under a switched-off block are MOOT — not that their reads must be removed. Recording it here rather than folding it in.
Proposed disposition (either is fine — no behaviour depends on it)
Observation-class finding (dead code), unassigned — filed by the
os-devseat working #14033 (branchclaude/issue-14033-public-sharing-enabled-standing-policy, sessionsession_01AUF1NoViznQK32gqpK8wS8).What is dead, and since when
packages/plugins/plugin-sharing/src/share-link-service.ts→getPolicy(): theenabled !== truebranch still readsraw.redactFields(landed by PR #14171 for #13856, so that opting an object OUT ofpublicSharingcould never WIDEN what an already-minted token serves). The maintainer's #14033 ruling (2026-09-01, verbatim: 「enabled关 ⇒ 整块不生效 ⇒ 拒付(子键求值 moot)」) is implemented by the #14033 PR as a gate inresolveToken()that returnsnullBEFORE any sibling key is evaluated. After that gate:resolveToken()never reaches thepolicy.redactFieldsunion for a switched-off block (it has already returned);createLink()never readspolicy.redactFieldson any branch (it readsenabled,allowedPermissions,allowedAudiences,maxExpiryDays,eligibility).So the disabled-branch read has no reader, and the comment block beside it ("it must never strip the object's declared redactions from tokens that still serve") describes a case that no longer exists: no token on a switched-off block serves.
Why it was not touched in the #14033 PR
The dispatch fenced #14171's
redactFieldslogic explicitly (ruling note: 「redactFields半边在 #13856 已派发,⛔ 不合卡、不重做」), and the ruling says the sibling keys under a switched-off block are MOOT — not that their reads must be removed. Recording it here rather than folding it in.Proposed disposition (either is fine — no behaviour depends on it)
redactFields: []and rewrite the comment to cite [Decision] What does turningpublicSharing.enabledoff mean for an ALREADY-MINTED share link? — the parent switch is mint-only while its own child predicate is now a standing policy #14033 (the redemption gate is what keeps opt-out from widening anything now). The four fix(plugin-sharing): declared publicSharing.redactFields survive the object opting out #14171 pins that read the set with the switch OFF are already reversed and registered inshare-link-service.test.ts; theenabled: truecontrol pin stays.Evidence:
share-link-service.tsgetPolicy()disabled branch (the[#13856]comment + theredactFieldsternary);resolveToken()[#14033]gate directly above theloadRecordForServingcall.Generated by Claude Code
Generated by Claude Code