fix(user/v1): cross-provider link semantics + fault status (user-service #25 R2) #7
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/provisioning-cross-provider-and-fault-status"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Two comment-only contract fixes surfaced by user-service PR #25 R2 (impl corrected there):
buf clean; comment-only, no wire change.
R1 MINOR closure (reviewer-requested — documented per the reviewer's own "call that out in the PR description" guidance): the
INTERNAL→UNAVAILABLEchange has no current consumer to break. social-login-service is not yet a caller ofUserProvisioningService— this contract is unreleased with zero shipped consumers; the caller is PR-2 (not started). There is no existingStatusCode.INTERNAL-specific branch in social-login to silently break. The contract already mandates the caller fail the OAuth login closed on the fault and never fall back to a locally-minted UUID (lines 60-63) — it does not instruct branching on a specific status code. PR-2's new caller will fail closed on any non-OK status (UNAVAILABLE included), not a code-specific branch, so the concern is moot by construction. Recorded for PR-2 in Memora #3701.hib-pr-reviewer review — PR #7 (affinity-intelligence-rework/im2be-protobuf)
Round 1 — head
4fec8ebcd4af, basemain, triggeropenedTL;DR: CONDITIONAL_APPROVE — 1 minor finding kept this round.
Summary
Arbiter reconciled 1 (A) + 0 (B) → 1 findings.
CI status (head
4fec8ebcd4af)Overall: ✗ failure
3 checks: 3 pending
Findings (1)
[MINOR] INTERNAL → UNAVAILABLE fault status is a cross-service coordination dependency not addressed in this PR
user/v1/user_provisioning.proto:60
Changing the documented fault code from
INTERNALtoUNAVAILABLEis semantically correct per gRPC status code semantics (UNAVAILABLE= transient / retryable;INTERNAL= unexpected non-transient). The natural gRPC → HTTP mapping also becomes consistent:UNAVAILABLE→ HTTP 503 without custom overrides.However, if the social-login-service caller has explicit
StatusCode.INTERNALhandling on its fail-closed 503 path (e.g. awhen (status.code == StatusCode.INTERNAL)branch), this proto-side specification change must be paired with a corresponding update in social-login before the user-service implementation changes are deployed, or the social-login fail-closed behavior silently breaks (it would no longer catch the transient fault and might fall through to a 500 or, worse, attempt a fallback).Confirm that the coordinated social-login change is tracked in user-service PR #25 R2 or a follow-on. If social-login uses a blanket non-OK handler rather than code-specific branches, this concern is moot — call that out in the PR description to close the question.
Verdict
CONDITIONAL_APPROVE
hib-pr-reviewer • round 1 • 1 finding (1m) • 2026-06-02T09:58:36.294Z → 2026-06-02T09:59:59.255Z • posted-as: pr-reviewer-bot • model: auto • [bookkeeping fallback]