- 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#
Local/owned files, approved provider integrations, or both?
Recommendation#
Local/owned files only for the first release (matches YSD-0017/YSD-1030): resumable upload of creator-owned or rights-cleared local media, plus metadata-only records for everything else. Provider deep-link registration (link-only playback, YSD-4009/YSD-5004) enters in a later phase after the rights resolver is production-hardened.
Options considered#
- Providers first — rejected: provider authorization is region-specific, revocable, and legally heavier than local files; it would block the walking skeleton on external agreements.
- Both at once — rejected: doubles the rights-policy and security surface before either is proven.
Consequences#
- Region-specific legal constraints for providers are documented when that phase opens; the fallback when provider authorization is unavailable is an honest metadata-only source record (YSD-5007).
Machine-enforced outcome#
Source-class feature flags (YSD-1014) ship with only local-file classes enabled; provider classes exist as fail-closed unsupported responses.
Conformance ruling — has the phase opened? (2026-08-14)#
A conformance question was raised against this decision on 2026-08-09: provider
deep-link registration was a live, ungated route, acquisitionCapabilities
reported the method supported with no condition on it, and nothing in the system
distinguished "the later phase has opened" from "it has not". The link-only
property this decision attached to providers was enforced — no representation
the workspace generates is derived from a provider link — so what shipped was a
correctly-constrained provider integration in a release whose approved source
posture had none.
@GreyChimp ruled on 2026-08-14 that the phase has NOT opened. This decision therefore stands unamended, and the product was brought to it rather than the other way round:
PHASE_GATED_SOURCE_CLASSES(policies/feature-flags.ts) makesprovider-deep-linkdefault-DENY on an axis whose other eleven keys default enabled — "known to the product" and "shipping in this release" were the same answer here, and are now two.registerProviderSourceandresolveProviderPlaybackrefuse through that gate before touching the store, so a closed phase cannot be probed for which work ids exist.acquisitionCapabilitiesreportssource.provider-deep-linkas unavailable with the same reason, so what a client is told and what the write path does cannot disagree.- A deployment opens the phase with
STUDY_FLAGS_ENABLE=source-class:provider-deep-link, which the service logs in its startup config summary. That is the recorded act the question asked for.
The reason only the owner could settle it: the two readings called for opposite acts — amend the decision to say providers had arrived, or gate the route until they have — and a machine can see the divergence without being able to say which side of it the programme is on.