Repository navigation
fix(console): say why a read failed, name settings by path, one request id and not-ready sentence - #3733
Conversation
…request ID line, no pointers or OCC in copy
…y sentence, the request ID label and dotted setting paths
… generic text after a partial share
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: needs changes before merge. What this changesThis PR makes Console failures status-aware, standardizes request IDs and Namespace readiness guidance, and displays configuration errors as setting paths. Example: Refresh stop status receives HTTP 403.
Review scores
ProductKind: Bug fix · Worth it: Yes · Fix scope: Complete Merge readiness⛔ Needs changes before merge - 2 items remain Keep this PR open: it improves useful Console recovery guidance, but introduces one misleading workspace failure diagnosis. Priority: P2 Before merge
Findings
Provenance
Tests
Agent review detailsHow this fits togetherConsole views receive failures from the authenticated API client and turn their status, error details, and request ID into visible explanations and recovery actions. flowchart LR
U[User] --> V[Console views]
V --> C[API client]
C --> A[Controller API]
A --> C
C --> F[Failure descriptions]
F --> V
Technical reviewBest possible solution: Keep the shared status-aware descriptions and use neutral interrupted-read guidance when a workspace transport failure cannot establish whether the API received the request. Do we have a high-confidence way to reproduce the issue? Source establishes the generic failure-copy paths and the introduced interruption misclassification; existing socket tests demonstrate the relevant error shapes, but no tests were executed during this read-only review. Is this the best way to solve the issue? Extending the existing failure describer is appropriate, provided transport errors describe the observed interruption without inferring where the request stopped. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against c6e9704b00c3. Provenance checked
TestingProof path: in-process harness. SecurityNone. EvidenceAcceptance criteria:
What I checked:
Likely related people:
LabelsLabel changes:
Label justifications:
Rating scale6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior. WorkflowClawSweeper edits this one comment on every review. Comment Reviewed October 26, 2026, 3:20 AM ET / 07:20 UTC. |
Problem
Console error text still left readers guessing in several places (error-copy audit, finding 2538):
configurations, plugin policy controls, the deployment overview, the Secret deletion check, workspace files). The
plugin tab also said "This installation does not support plugin policy editing" when only the read had failed.
removing a failed credential registration added a Credential Gateway hint to every refusal; the credential-access
retry and a credential registration problem after Create Agent said "Check the entered values" where nothing was
entered.
/additions/0: ...) or bare codes; unknown runtime causes, log gap reasonsand plugin warnings showed only their code.
"tenant RoleBindings". "OCC" appeared in user copy.
docs/reference/console.mdsaid other backend error text isnot rendered, which is false.
Change
agents/list.mts:describeFailuretakes anAccessNeed; newreadFailureReason/readFailurechoose the text bystatus. A 403 names the grant and the Installation administrator, a 429 how long to wait, an outage says to ask an
operator if it continues, and a 400/409 shows the API's reason.
(Agent read / Installation administer), plugin capabilities (Agent update; the field no longer claims missing
support after a failed read), the deployment overview reread, the Secret deletion check (Secret read), and workspace
files (Agent read; 409/429 through the describer).
check names Namespace read; its removal names credential source delete and gives the Gateway hint only when the
request got no answer. The credential-access retry and the registration problem show the API's own reason.
Configuration setting additions[0], and a detail withouta message gets a sentence. Unknown runtime causes, log gaps and plugin warnings get a sentence.
requestIdText/requestIdLine/withRequestIdindom.mtsreplace the per-view renderings (onelabel, "Request ID:"). One
NAMESPACE_NOT_READY_MESSAGE, which names who finishes the setup. No "OCC" in copy(Stop notices, harness-auth hints, live-serving note, cluster RBAC refusal, debug build title).
docs/reference/console.md: says which API text the console shows and what a generic answer gets.tests/helpers/refusal-text.mjs.Verification
Audit sites checked on main: item 3, 19 sites (15 already fixed by #3688/#3690, 2 changed here, 2 left on purpose); item 7, 6 sites (3 changed here); item 8, 9 sites (all changed); item 9, 5 sites (all changed); item 10, 4 topics (3 changed, plus the doc).
37f66025e8) with the tests copied over: 21 tests in 10 browser files fail on main and pass on this branch (a remote test VM, private network namespace).tsc --buildandeslint apps/controller/src/console: clean.checks-browser,checks-browser-2on the same VM: pass (head 6807635, after merging main).Risks
setCapabilities(value, unread)argument; no request, retry or state change.credentials.mtskeeps its own request ID text (same label) to avoid a conflict with fix(console): read the default slack account's token keys and show channel refusals on credentials #3686.and the Agent reread before a credential-access retry, where the API's named denial already names Agent read.