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
What changed: this epic no longer invents its own discovery/registry/contribution mechanism, and the beta.6 framing and the S1–S13 screen list are retired. What survives verbatim: the ownership thesis and the three acceptance lines below — RFC 0005 §11 adopts them as normative acceptance criteria, not prose.
Ownership thesis — unchanged, and now normative in RFC 0005 §11.2
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).
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.
The Plan-Gate was cleared by written owner waiver (drift D-18). The formal evaluator returned FAIL_PLAN twice and no evaluator PASS exists — do not cite one.
Epic: NetScript DevTools — the Aspire/Scalar satellite that drives the framework
Ownership thesis — unchanged, and now normative in RFC 0005 §11.2
Aspire owns: resources, console/structured logs, raw traces, metrics, health, process lifecycle.
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).Product surfaces retained as RFC 0005 consumers
Acceptance lines (MANDATORY, gate every slice)
Acceptance
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 — typed links in [devtools W1b] add typed deep-link resolution #1472 and generated host/CLI wiring in [devtools W3a] generate the DevTools host and CLI command group #1477, 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): the DevTools data plane 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 evidence from completed #507 is ratified in RFC 0005. UI quality remains #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.Architecture — now owned by RFC 0005
{ family: 'devtools', major: 1 }on a family-neutral envelope inpackages/devtools-core(owner fork F-1: self-contained, built first)panel,link,diagnostic(the last a reuse of the shippedplugin doctorseam). Each names a real first-party consumer<base>/is a ranked problem feed answering "what is broken?", with a full state matrix (10 surfaces × 9 arms)packages/devtools-core+ A6 CLI emission + A5 thin plugin; host app is generated userlandSub-issues
Filed 2026-08-11 from the ratified one-shot manifest. Ordered by RFC §14's dependency DAG.
devtools-corecontracts/v1 +arch:checkroots.passthrough()precondition (F-3)devtoolscommand grouppanelkind (folded into RFC 0005 §6/§7)linkkind wiringcreateSSEStreampromotionRelationship to existing boards
packages/devtools-core([devtools W1a] add contracts/v1, deterministic ordering, and architecture roots #1471).CR-DDX-HOSTAGNOSTIC(raised on this epic 2026-07-06 from Epic: NetScript Process Manager — bare-metal supervisor + admin console (pup/pm2 done right) #510, never resolved) is accepted — see the resolution comment below.Notes (non-gating)
0.0.15per the owner-ratified 2026-07-19 train; this epic stays onBacklog / Triage..llm/runs/plan-devtools-contribution--seed/.FAIL_PLANtwice and no evaluatorPASSexists — do not cite one.