spec(9.4): permit 401 for profile_unreachable on a privileged request - #21
Conversation
ff8c2c4 to
6f3f339
Compare
|
Rebased onto current master. §9.4 was rebuilt into three disjoint error families in the meantime and the four-column protocol-error table this originally edited is now a six-column matrix, so the change is re-authored rather than replayed — same substance, new shape. Context for the second half of the rationale, which has since been verified rather than asserted: |
6f3f339 to
d681094
Compare
|
Rebased onto current The branch had diverged from
Context for reviewers: this closes one of the four symptoms on wix-private/universal-scheduling-protocol-spec#261. |
Rebuilt onto current master. The branch had diverged at the root, so this is the same change reapplied as a single commit on top of master rather than a merge of unrelated histories. schemas / refs / vectors / coherence all pass, and match the baseline on master.
d681094 to
9bbaea3
Compare
§9.4 mandated
424 Failed Dependency. That is right where fetching a profile is an ordinaryserver-side dependency — registry registration, say — and wrong for the §10.1.6 case, which is the
one most implementations will hit first.
Under §10.1.6 a fetchable profile is part of the agent header being an identity. A profile that
cannot be retrieved therefore leaves the request unauthenticated, not merely blocked on a
dependency. 401 is the more accurate answer and the more actionable one: what needs fixing is the
caller's own published document, and every client already has a 401 path.
Mandating 424 alone also had a practical cost worth naming. It is unreachable from a gRPC-based
stack, where HTTP statuses are derived from gRPC's closed set of status codes and nothing maps to
Failed Dependency. An implementation there has to either repoint a status mapping shared with every
other service on the platform, or pick some third status — and picking arbitrarily is precisely the
interoperability failure this table exists to prevent. A spec that cannot be conformed to gets
approximated instead.
So 424 stays, and 401 is permitted for the privileged-request case. This narrows the mapping rather
than replacing it.
Found while implementing §10.1.6: the status mapping was the one entry in the table that could not be
satisfied, and the fallback we had shipped was 401 anyway.
Checker:
refsok.schemas/vectorsneedjsonschemalocally;authorityreports the same pre-existing failures as clean master (no built site).🤖 Generated with Claude Code