- Status: approved (2026-07-18)
- Priority: P0 EXT — blocking (production rollout gated via YSD-0139)
- Decision owner: @GreyChimp
- Drafted: 2026-07-18 by Claude Code (claude-fable-5)
- Approval: approved as recommended by @GreyChimp on 2026-07-18; outcome recorded in decision-log.json; review by 2027-07-18
Question#
What rights decision tree, allowed-action vocabulary, blocked defaults, and expiry/deletion objectives govern sources?
Recommendation#
Adopt the Section 4.1 design: RightsGrant model (YSD-4001 fields), the twelve separately-controlled actions of YSD-4002 as the allowed-action vocabulary, deny-by-default for every action without a matching grant, review-required as an explicit third outcome, legal-review escalation to the decision owner with documented SLA, expiry enforcement blocking access immediately (YSD-3062), and deletion completing within a documented service objective (YSD-3063).
Options considered#
- A simpler allow/deny enum — rejected by proposal §25.2: a four-value enum is not a policy system.
- Blocking-only warnings everywhere — rejected: YSD-4038 requires advisory-only where the proposal does not authorize blocking.
Consequences#
- Section 4.1 items implement the resolver; policy-table tests (YSD-4014) encode this tree exhaustively.
- The live-media playback-grant flow is the implementation pattern to generalize (schema-inventory conflict #7).
Machine-enforced outcome (once approved)#
Rights resolver + policy tables + YSD-4015 bypass tests enforce the tree; no client/worker path may skip the central decision.