Skip to content

Give health and capacity facts one home - #695

Merged
SaladDay merged 2 commits into
mainfrom
give-health-and-capacity-facts-one-home
Oct 14, 2026
Merged

SaladDay merged 2 commits into
mainfrom
give-health-and-capacity-facts-one-home

Conversation

@SaladDay

@SaladDay SaladDay commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

What

Each health and capacity fact now has one home in Web:

  • Nodes owns the node list, each node's capacity and limits, host CPU, memory and free disk with 1 h / 6 h / 24 h charts (moved from the Sandbox metrics node dialog), Add node and Edit node (moved from Settings → Sandbox and scheduling). The node page's Capacity adds Cleanup pending; Retained / limit gets a one-line help tip that says what Core enforces: "The most sandboxes this node holds at once: starting, running and suspended."
  • Overview keeps its compact capacity summary. Core, E2B and node rows are plain buttons that open Core metrics, Sandbox metrics and the node's page on Nodes. The anchored popovers, ConsolePopover, ui/popover and their CSS are deleted.
  • Sandbox metrics keeps hosted Runtime time series and activity. The node table, the node dialog and the lifecycle KPI strip are gone; node names in the Runtime table and dialog open that node's page on Nodes. The runtime meta now reads "8 of 12 active · 4 suspended · …", the table's word, instead of a bare total.
  • Settings → Sandbox and scheduling keeps setup, resources, rollout, reset and Automatic suspension (idle seconds and read-only snapshot retention). The Sandbox nodes table and the node route parameter are removed, and the page reads only the deployment, not the node and allocation inventory (useSandboxDeploymentState). The header links to Nodes, and the first save continues to Nodes → Add node.
  • Core metrics now leads with the operator's questions: slots, queued, queue wait p95, interrupted Turns, database latency p95, CPU and memory. Go heap, goroutines, the DB pool and process CPU/RSS charts sit in a collapsed Diagnostics section. The Nodes and daemons KPIs are dropped; connected daemons stay in the Execution meta.
  • Cleanup: CSS rules no component uses are deleted (.numeric-warning, .metrics-node-status, .settings-table-action, .runtime-embed, .sandbox-actions, .sandbox-empty, .sandbox-network-settings, .sandbox-rollout-*), runtimeSnapshotWhere is folded into runtimeSnapshot, and the rounded.popover token is gone.
  • Docs: apps/web/PRODUCT.md records the split. DESIGN.md, docs/getting-started/nodes.md, docs/configuration.md, docs/getting-started/install.md, docs/web/index.md, docs/web/console-api-usage.md and contracts/agents-api/sandbox-deployment.md were updated, with zh mirrors and refreshed source_hash.

Why

UX polish lane C covers the daily check ("is it healthy, is capacity OK") and adding or resizing a node:

  • The node table appeared on four pages and the five suspension cards on two.
  • "6 hosted Runtimes" was shown while all six were not running.
  • Core metrics led with Go internals.

No Core field, route or setting is added. RouteParams.node and the Settings node editor had no other caller, so they are deleted.

Verification

Rebased onto main 5dbf400 (#697, #699), keeping #697's setting names and wording and #699's Needs attention section and session naming.

  • pnpm --filter @oac/web typecheck
  • vitest run on sandbox, metrics, overview, settings, system, sessions, lib and i18n: 275 passed.
  • Playwright against the fixture: overview-readiness, monitoring, diagnostics, nodes, sandbox-lifecycle, unified-settings, sandbox-reset, sandbox-generation, sandbox-rollout-details, system, access, wording and public-url. 82 passed. sandbox-lifecycle asserts Settings → Sandbox reads no /core/v1/sandbox/nodes (fails with the old loading); monitoring opens a node from the Runtime table. The sandbox-generation draft test no longer exercises a Settings node-inventory retry, since Settings no longer reads it.
  • make check-docs, make check-names, pnpm --dir website check-translations and pnpm --dir website build (dead-link check).
  • Screenshots (zh and en, 1440 and 390) of Overview, Nodes, a node page, Sandbox metrics, Core metrics and Settings → Sandbox and scheduling.

Skipped

  • Full make check and the other Playwright specs (focused checks only).
  • No Go change, so no go test or go vet.
  • Phone-width table and tab fixes come in a separate PR.

@SaladDay
SaladDay force-pushed the give-health-and-capacity-facts-one-home branch from 7bd01f3 to 1fb44f6 Compare October 14, 2026 06:21
Nodes owns the node list, per-node capacity, host figures, Add node and Edit node. Overview rows open their pages instead of popovers. Sandbox metrics keeps the hosted Runtime series and counts running against total. Settings → Sandbox and scheduling keeps setup, rollout, reset and the idle policy. Core metrics leads with whether Core can run Turns and folds process internals into Diagnostics.
@SaladDay
SaladDay force-pushed the give-health-and-capacity-facts-one-home branch from 1fb44f6 to 98c9c86 Compare October 14, 2026 07:25
@SaladDay
SaladDay merged commit 2a7e88f into main Oct 14, 2026
17 checks passed
@SaladDay
SaladDay deleted the give-health-and-capacity-facts-one-home branch October 14, 2026 07:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant