You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A DX-oriented dev dashboard shipping as plugins/dashboard + packages/plugin-dashboard-core on @netscript/fresh-ui. It is a satellite of Aspire's control surface, not a rival — and it is how you drive the framework: it renders only NetScript-domain state Aspire and Scalar cannot see, mirrors the CLI's management verbs through the UI, and deep-links back out to Aspire/Scalar for everything they already own.
Rescoped 2026-07-06 (owner mandate, amended same day). The pass-1 direction duplicated Aspire/Scalar surfaces. The rescope keeps three pillars from the original seed research: Observe (only-NetScript state), Manage (Appwrite-style per-capability console mirroring the CLI), Follow (Encore-model live seam-flow, never re-rendered OTLP).
DX thesis
Answer the questions no existing tool can: "is my NetScript app wired the way I declared it, what is my runtime doing right now at the primitive level, what did this request actually cause, and let me act on it without leaving the browser."
Aspire owns: resources, console/structured logs, raw traces, metrics, health, process lifecycle.
Scalar owns: API reference, schemas, try-it, code samples.
The dashboard owns: primitive run-state (executions/attempts, saga instances incl. compensating, trigger firings, stream deliveries), the runtime override/config layer including gated write-back, plugin-registry wiring + doctor + contribution axes, contract provenance/coverage/duality, route→contract binding, codegen/scaffold state (migrations, drift), the per-capability management loop (create → configure(tabs) → monitor), and the live request journey across framework seams (S13).
Authoritative screen set (supersedes the pass-1 DDX panel list)
Non-duplication. No dashboard screen may render, as an owned surface: an OTLP trace waterfall / span-bar gantt, a structured/console log tail, a metrics chart, a resource start/stop/restart panel, or an OpenAPI operation list / try-it console. Each is Aspire's or Scalar's job and MUST be a deep-link out. Every merged panel must pass "why can't this just deep-link to Aspire/Scalar?" with a NetScript-only answer recorded in its issue — only-NetScript state, only-NetScript action (CLI-mirroring), or framework-seam semantics raw OTLP cannot express.
One generator, two callers. Every dashboard mutation invokes the same contract route / CLI scaffolder the terminal does and renders its CLI-equivalent line (netscript … CodeBlock). No dashboard-only write paths, no forked codegen.
Flow ≠ waterfall. S13 renders a primitive-grouped causal chain with payloads at seams, assembled from NetScript's own seam events; the moment raw timing/span detail is needed it out-links to Aspire /traces/detail/{id}. No span bars, no time-proportional gantt, no log tails in S13 — ever.
Dashboard → Aspire: correlation-only TelemetryQueryPort ([dashboard DDX-3] TelemetryQueryPort + aspire-otlp-http adapter #413) resolves a traceId, then out-links to {aspireBase}/traces/detail/{id}, /structuredlogs?resource=, /consolelogs/resource/, /metrics/resource/. Never re-renders OTLP. The S13 flow plane does not widen this port.
Summary
A DX-oriented dev dashboard shipping as
plugins/dashboard+packages/plugin-dashboard-coreon@netscript/fresh-ui. It is a satellite of Aspire's control surface, not a rival — and it is how you drive the framework: it renders only NetScript-domain state Aspire and Scalar cannot see, mirrors the CLI's management verbs through the UI, and deep-links back out to Aspire/Scalar for everything they already own.Rescoped 2026-07-06 (owner mandate, amended same day). The pass-1 direction duplicated Aspire/Scalar surfaces. The rescope keeps three pillars from the original seed research: Observe (only-NetScript state), Manage (Appwrite-style per-capability console mirroring the CLI), Follow (Encore-model live seam-flow, never re-rendered OTLP).
DX thesis
Answer the questions no existing tool can: "is my NetScript app wired the way I declared it, what is my runtime doing right now at the primitive level, what did this request actually cause, and let me act on it without leaving the browser."
compensating, trigger firings, stream deliveries), the runtime override/config layer including gated write-back, plugin-registry wiring + doctor + contribution axes, contract provenance/coverage/duality, route→contract binding, codegen/scaffold state (migrations, drift), the per-capability management loop (create → configure(tabs) → monitor), and the live request journey across framework seams (S13).Authoritative screen set (supersedes the pass-1 DDX panel list)
Acceptance lines (MANDATORY, gate every slice)
netscript …CodeBlock). No dashboard-only write paths, no forked codegen./traces/detail/{id}. No span bars, no time-proportional gantt, no log tails in S13 — ever.Integration seams (four seams, one URL scheme)
WithUrl("NetScript Dashboard", /resource/{name})on every scaffolded resource + two frameworkwithCommands — generator emission on [dashboard DDX-14] CLI surface + auto-launch #424, Seam A widening (command/appkinds) on [dashboard DDX-1] @netscript/aspire command + app resource kinds #411, Seam B interim.TelemetryQueryPort([dashboard DDX-3] TelemetryQueryPort + aspire-otlp-http adapter #413) resolves atraceId, then out-links to{aspireBase}/traces/detail/{id},/structuredlogs?resource=,/consolelogs/resource/,/metrics/resource/. Never re-renders OTLP. The S13 flow plane does not widen this port./api/docs(+ operation anchor) deep-links only;externalDocsoptional polish./_netscript/*introspection ([dashboard DDX-13] Introspection endpoint (/_netscript/*) #423) over already-shipped oRPC contracts, plus/_netscript/flows(SSE): beta.6 joins the shipped per-primitive streams on the stampedtraceparent; co-req DDX-23 ([dashboard DDX-23] seam-event flow plane: unified envelope + HTTP boundary events (S13 co-req) #557) adds the unified seam-event envelope + HTTP boundary events.Killed / folded surfaces (documented so they don't creep back)
withCommandcontributions inside Aspire)./healthpanel (→ Aspire State column via a properwithHealthCheck()wiring fix)./api/docs; the S4 catalog is provenance-only).Slice map / dependencies
Plumbing: #410 (fresh-ui L3 blocks) → #412 (core scaffold, +
FlowRecord) → #414 (thin plugin) · #411 (Seam A) · #413 (+#408 telemetry T7) · #423 (introspection + flows join) · #424 (CLI/deep-links/generator) · #427 (panel seam — the Directus-validated contribution axis).Screens: #415, #416, #417, #418 (S13), #419, #420, #428–#431, DDX-20/21/22 (#551 #552 #553).
Management wave (beta.7): #432 elevated — "Add resource" scaffold-from-UI keystone; DDX-23 seam-event envelope #557; template-gallery create entries in S5/S7–S10.
Design pre-step: #507 (S1–S13 Claude Design prototype; duplication caught at design review). UI quality: #509.
Gate: #426 (E2E join + panel smoke; v2 adds the S13 flow-chain assertion, still no owned-waterfall assertion).
Co-requisites (wave:defer):
TriggerDlqPortcontract route #554,queueDeadLetterStoreCLI/API #555. Co-requisite (beta.7): runtime-config mutation use-cases #556 (S3 write-back — surface check 2026-07-06: the store is read+watch-only today).Deferred convergences: in-dashboard AI-on-codegen (with #238), in-app plugin marketplace beyond S5 marketplace-lite.
Refs #301 (road to stable). Co-lands with
epic:telemetry-revamp(#399) for T4–T7 correlation fidelity.