Skip to content

fix(console): drop the agents list's provisioning note once the namespace is ready - #2984

Merged
freeqaz merged 4 commits into
mainfrom
fix-2058
Oct 20, 2026
Merged

freeqaz merged 4 commits into
mainfrom
fix-2058

Conversation

@freeqaz

@freeqaz freeqaz commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

Dogfood D653 (board finding 2058, low): the Agents list for a Namespace that becomes ready keeps "Namespace status: Provisioning ... can be deployed once ready" with no recheck. On oce-dogfood-b it stayed ~70 s after the API said ready, until Refresh.

Why: the list already rebuilds when the shown Namespace's status changed (a revalidator from #1895's work), but only when something rechecks the page: a refocus, a return, or Refresh. A reader who stays on the list triggers none of them. Create Agent has its own 10 s recheck while it waits on a provisioning Namespace (#2937, findings 2012/2021-2024); the list had none.

Change

  • While the list's note waits on a provisioning Namespace, the list rereads GET /namespaces at Create Agent's existing cadence (NAMESPACE_RECHECK_MS, 10 s, now exported from agents/list.mjs and imported by create.mjs). When the shown Namespace's status changes, it updates the page in place, as Create Agent does (findings 2012, 2024): the warning becomes "Namespace status: Ready. Agents created here can be deployed now." (a polite success status), Create Agent's gate and aria-describedby follow the new status, and the empty state's sentence is rerendered. Rows, search text and focus stay.
  • One read at a time; a hidden tab keeps the timer but reads nothing; a retained list re-arms on resume; a list without the Namespace ends the wait (the page's own recheck names that); failed, deleting and ready Namespaces start no checks. A later refocus or return still rebuilds through the existing status revalidator.

Verification

Screenshots (real controller; the Namespace reads provisioning, then ready; no Refresh, no refocus)

State Before 1440 After 1440 Before 390 After 390
Provisioning (unchanged)
Ready, 10 s later

Storybook: new Pages/Agents → Namespace becomes ready story (reuses the namespaceRechecks fixture support): the provisioning note stays through one recheck, then turns into the ready note with Search Agents keeping its text and focus and Create Agent enabled. Checked by loading the built frame locally.

Risks

  • One extra GET /namespaces every 10 s per visible Agents list on a provisioning Namespace, the same cost Create Agent already pays. It stops once the Namespace leaves provisioning or the page is left or hidden.
  • The in-place update covers the note, Create Agent and the empty-state sentence; the header's Namespace selector shows no status, so nothing else on the page reads the stale status. A later refocus or return rebuilds once through the existing revalidator, as it does today.

…pace is ready

A reader who stayed on the Agents list kept seeing 'Namespace status:
Provisioning' after the Namespace turned ready, until Refresh (finding
2058, dogfood D653). Refocus, return and Refresh already recheck the page
and rebuild it when the shown Namespace's status changed; nothing did so
while the reader stayed. The list now rereads the Namespace at Create
Agent's existing 10 s cadence while its note waits on provisioning and,
once the status changes, rechecks the page the way a refocus does. A
hidden tab stops the wait; a ready Namespace needs no checks.
@freeqaz
freeqaz requested a review from a team as a code owner October 20, 2026 01:10
@clawsweeper

clawsweeper Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

ClawSweeper review complete

ClawSweeper finished reviewing this revision. The review result is being finalized.

View the workflow run.

Review follow-up for #2984: the timed page recheck rebuilt the list
and dropped the reader's focus, and stopped for good when the page
recheck could not run (an open dialog). The list now updates the note,
Create Agent and the empty-state sentence in place, as Create Agent
does (findings 2012, 2024), with the ready note at the warning's
height; a hidden tab keeps the timer but reads nothing. The test pins
search text and focus across the change and no reads while hidden.
…ready note keep its height

The previous commit dropped create.mjs's import of NAMESPACE_RECHECK_MS
by mistake (the shared constant now lives in list.mjs). The list's
ready note no longer reserves the warning's height: the list holds no
field being edited, and at phone width the reserved box read as broken.
@clawsweeper clawsweeper Bot added clawsweeper:intake:bug Preliminary submission classification; full source review pending. clawsweeper:intake:needs-environment Preliminary submission classification; full source review pending. P2 Normal priority bug or improvement with limited blast radius. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. and removed clawsweeper:intake:bug Preliminary submission classification; full source review pending. clawsweeper:intake:needs-environment Preliminary submission classification; full source review pending. labels Oct 20, 2026
@clawsweeper

clawsweeper Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge.

What this changes

This PR refreshes provisioning Namespace status on the Agents list and updates its guidance without disturbing search or focus.

Example: The team Namespace becomes ready while the reader searches for Probe.

  • Before: The list keeps its provisioning warning until Refresh, navigation, or refocus.
  • After: The next 10-second check shows Ready while preserving Probe and search focus.

Review scores

Measure Result What it means
Overall readiness 🦪 silver shellfish (2/6) The focused patch and browser regression coverage are credible, but required visual proof remains incomplete.
Proof confidence 🦪 silver shellfish (2/6) Real behavior proof is not required for maintainer- or bot-authored pull requests.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Product

Kind: Bug fix · Worth it: Yes · Fix scope: Complete
User problem: The Agents list continues telling readers their Namespace is provisioning after it becomes ready.
Reason: This maintainer-authored repair removes misleading guidance while preserving supported draft creation and server authorization.

Merge readiness

✅ Ready for maintainer review

Keep this PR open: it fixes stale Namespace guidance on current main, and the previous Storybook finding is resolved; no concrete code defect was found.

Priority: P2
Reviewed head: 5cba81839a1dd11b1d9d1f9fc69afcda03402d5d

Before merge

None.

Findings

None.

Tests

  • Missing end-to-end proof: Supply the required final-UI readiness-transition recording; the reported base-failure/head-pass browser comparison was not independently executed in this review.
Agent review details

How this fits together

The Console reads authorized Namespace summaries from OCC and uses their status to display creation guidance and gate the Create Agent control.

flowchart TB
  A[Visible Agents list] --> B[Ten second readiness check]
  B --> C[Authorized Namespace API]
  C --> D[Namespace status]
  D --> E[Update note and creation control]
Loading

Technical review

Best possible solution:

Retain the focused in-place readiness refresh and complete the required visual evidence before merging.

Do we have a high-confidence way to reproduce the issue?

Current-main source confirms that a reader remaining on the Agents list triggers no periodic Namespace refresh; no target code or tests were run during this read-only review.

Is this the best way to solve the issue?

The repair uses the existing list owner, Namespace endpoint, readiness rules, and polling cadence while preserving search and row focus.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning medium; reviewed against 14a04fbb64c0.

Provenance checked

  • Namespace warning and creation gate keeps the original intent (e9b1356: Explain readiness restrictions before a refused write while keeping supported Agent drafts available.)
  • Warning presentation keeps the original intent (ad89502: Make provisioning guidance visible as a polite warning and connect it to the creation control.)
  • Shared Namespace refresh cadence keeps the original intent (40676a7: Refresh readiness while Create Agent waits, updating controls without discarding draft input or focus.)

Testing

Proof path: shipped entry point.

Security

None.

Evidence

What I checked:

Likely related people:

  • Free Wortley: Raw commit e9b1356 adds apps/controller/src/console/agents/list.mjs:39 relative to its recorded parents. This identifies author metadata, not feature responsibility or a PR merger. (role: source-line author; confidence: high; commits: e9b1356c4f76; files: apps/controller/src/console/agents/list.mjs)

Labels

Label changes:

  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR.
  • remove status: ⏳ waiting on author: Current PR status label is status: 👀 ready for maintainer look.

Label justifications:

  • P2: Stale readiness guidance causes avoidable confusion, with Refresh already providing recovery.
  • rating: 🦪 silver shellfish: Overall readiness is 🦪 silver shellfish; proof is 🦪 silver shellfish and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR.

Rank-up moves

Optional improvements that raise the rating; they are not merge blockers.

  • Upload final-UI screenshots and a short automatic readiness-transition recording as native GitHub attachments in Verification.

Rating scale

6/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.

Workflow

ClawSweeper edits this one comment on every review. Comment @clawsweeper re-review for a fresh review only. Repair and merge execution lanes are retired.

History

Review history (1 earlier review cycle)
  • reviewed 2026-10-20T01:44:59.900Z sha ce23667 :: needs changes before merge. :: [P3] Add a Storybook scenario for the list readiness transition

Reviewed October 19, 2026, 10:05 PM ET / October 20, 2026, 02:05 UTC (Revision 2).

@freeqaz

freeqaz commented Oct 20, 2026

Copy link
Copy Markdown
Collaborator Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

🦞👀
Exact review queued.

Re-review progress:

@clawsweeper clawsweeper Bot added clawsweeper:intake:bug Preliminary submission classification; full source review pending. clawsweeper:intake:needs-environment Preliminary submission classification; full source review pending. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. clawsweeper:intake:bug Preliminary submission classification; full source review pending. clawsweeper:intake:needs-environment Preliminary submission classification; full source review pending. labels Oct 20, 2026
@freeqaz
freeqaz merged commit 7eb7f82 into main Oct 20, 2026
66 of 69 checks passed
@freeqaz
freeqaz deleted the fix-2058 branch October 20, 2026 02:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P2 Normal priority bug or improvement with limited blast radius. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant