fix(ai): keep provider diagnostics behind the customer boundary - #596
fix(ai): keep provider diagnostics behind the customer boundary#596seonghobae wants to merge 2 commits into
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughAI 분석 실패 응답이 예외 메시지를 노출하지 않도록 변경되었습니다. API는 고정된 한국어 메시지, 오류 코드, 재시도 정보와 ChangesAI 브리핑 오류 응답 경계
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to The PR replaces raw provider and orchestration diagnostics with a stable customer-facing AI briefing error and retry/admin guidance. No actionable merge-blocking risk remains beyond normal checks and review. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Buyer impact
ScopeWeave no longer exposes raw contextual-orchestrator/provider diagnostics when an AI briefing fails. Customers receive a stable, non-cacheable error contract that explains the next action without leaking internal service names, provider routing details, configuration names, status text, or token-like diagnostics.
Exact current identity
develop@2c328875e00e86537df3e965170be80532571cad;50f0c2d18e4361e5f11507ca194c94fc7caabbdc;fix/ai-brief-error-envelope;Any contributor-head or protected-base movement invalidates revision-sensitive evidence until freshly revalidated.
TDD and production repair
The regression in
tests/api/orchestrator-attribution.test.mjssimulates an upstream 503 containing private provider/routing diagnostics and requires the public API to suppress them. Protecteddeveloppreviously returnedAI 분석 실패: ${e.message}.The production catch boundary for
POST /api/projects/:id/ai/briefnow returns HTTP 502 with:{ "error": "AI 분석을 지금 완료할 수 없습니다.", "code": "ai_brief_unavailable", "action": "잠시 후 다시 시도하세요. 계속 실패하면 워크스페이스 관리자에게 문의하세요.", "retryable": true }and
Cache-Control: no-store. The repair preserves the existing authenticated tenant boundary, server-derived cost attribution, contextual-orchestrator transport behavior, timeout/response bounds, and 502 compatibility.The regression also proves the serialized customer response excludes
contextual-orchestrator,ORCHESTRATOR_, provider routing identifiers, token-like diagnostics, and upstream HTTP-status details.Current evidence
For exact contributor head
50f0c2d18e4361e5f11507ca194c94fc7caabbdc, all six currently associated repository workflow runs are terminal GitHub-success:32679358648;32679358496;32679358501;32679358631;32679358555; and32679358833.CodeRabbit's current walkthrough reports no actionable comments and Devin's current review reports no issues. Those model/comment results are supplementary and are not treated as qualifying independent approval.
The green workflow labels are product-behavior evidence, not integration authority where the owning workflow still materializes a synthetic pull-request merge instead of the immutable contributor SHA. ScopeWeave #523 owns repository-native exact-head Server Tests/coverage checkout integrity;
ContextualWisdomLab/.github#1222owns organization-reusable SAST/Security exact-head checkout integrity. Predecessor, synthetic-only, status-only, author-only, model-only, pending, skipped, neutral, absent, or stale evidence is non-authorizing.Merge gate
Do not merge or enable auto-merge until this unchanged exact head remains reconciled to freshly resolved protected
develop, the applicable exact-head evidence controls are protected-shipped and regenerated, every required CI/browser/owned statement-branch-function-line coverage/docstring/CodeQL/SAST/security/dependency/supply-chain/package/provenance gate is substantively terminal-passing for the exact contributor revision, valid unresolved findings are zero, and a qualifying independent current-head/last-push approval genuinely exists under live branch protection/rulesets.