Repository navigation
test(console): pin the kept form's refocus, the refusal's description and the note's resize reset - #2952
Conversation
… and the note's resize reset Three create.mjs mutants survived the Namespace recheck files (finding 2039): - a return to a kept form that no longer registers its refocus recheck: after a hidden tab is shown again, the poll never restarts. The kept-form case now hides the tab, lets ticks pass, shows it again and expects a read. - Create Agent losing aria-describedby for a refusing Namespace: the failed, deleting, missing and adopted-provisioning cases now read it on the Embedded draft plan too, where nothing else waits. - the resize listener that clears the reserved note height: the in-place note case now resizes to 390 px and expects the min-height gone. The fourth survivor, the submit handler's Namespace guard, is equivalent while the button is disabled (no click, no implicit submission), so it is left as is.
|
🦞👀 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. |
Review nit: the listener was added by an unawaited evaluate racing the viewport change, so a resize that fired first would stall the case.
|
Codex review: needs maintainer review before merge. What this changesThis PR extends browser tests for retained-form refocus, accessible Namespace refusal descriptions, and note-height reset after resizing. Example: Return to the retained Create Agent form, hide the tab for three 10-second ticks, then show it after the Namespace becomes ready.
Review scores
ProductKind: Test only · Worth it: Yes · Fix scope: Complete Merge readiness✅ Ready for maintainer review Keep open: this PR adds focused coverage for three distinct regressions in existing console behavior. No actionable defect was found, and the reviewed head passes Console Browser and CI Required. Priority: P3 Before mergeNone. FindingsNone. Agent review detailsHow this fits togetherThe console's Create Agent form reads Namespace status and uses it to update creation availability, accessible explanations, and the status note without discarding the draft. flowchart LR
A[Create Agent form] --> B[Namespace recheck]
B --> C[Namespace API]
C --> D[Creation gate and status note]
D --> A
E[Browser regression tests] --> A
Technical reviewBest possible solution: Retain these focused extensions to the existing browser scenarios. Do we have a high-confidence way to reproduce the issue? This test-only PR reports coverage gaps rather than a live bug; source inspection confirms the protected behavior exists, and the body records targeted mutation failures. Is this the best way to solve the issue? Extending existing browser cases is proportional: each addition protects a distinct failure without introducing new fixtures, hooks, or production behavior. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against fcc969fd9a55. Provenance checked
TestingProof path: in-process harness. SecurityNone. EvidenceWhat I checked:
Likely related people:
Review metrics
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 19, 2026, 1:45 PM ET / 17:45 UTC. |
Problem
Bughunt finding 2039: a mutation run on
apps/controller/src/console/agents/create.mjs(after #2944) left four mutants alive inconsole-namespace-recheckandconsole-namespace-not-ready:context.onResumeno longer callsonRefocus(recheckNamespace). On a kept form whose pending tick ran while it was away, a hidden tab then never restarts the 10 s poll when it is shown again. The hidden-tab case and the kept-form case were only pinned separately.aria-describedby(the status line) for a missing, failed, deleting or adopted-provisioning Namespace. No case read it on a draft plan, whereprovisioningWaitsForNamespace()no longer covers it.min-heightis removed.On main, mutant 1 is not a live bug:
onResumedoes re-register the recheck. It was just unpinned.Change
Test-only, in
tests/browser/console-namespace-recheck.test.mjs:aria-describedby="create-agent-capability-status"on the Embedded draft plan.min-heightis set. It then adds its ownresizelistener (the product listener, added earlier, runs first), resizes to 390 px, waits for the event, and expects themin-heightgone.Mutant 4 is left alive on purpose: it is equivalent. The button is disabled in every state the guard covers, so neither a click nor implicit submission (Enter) reaches the handler.
Verification
console-namespace-recheck.test.mjs: 14/14; 20/20 pinned to 2 CPUs (taskset -c 2,3).console-namespace-not-ready.test.mjs: 11/11, untouched.Mutants against the changed file:
waitForResponsetimeout)prettier --checkandeslint --max-warnings 0on the touched file: clean.No open PR touches this test file, so it adds no new conflicts. No product code changes, so no UI media.
Internal review: approve. Its nits are applied: the resize listener is registered before the viewport changes, and this table is corrected.
Risks
Low; test-only. The kept-form case now takes about 30 more simulated seconds on the page clock, but no wall-clock time.