Epic — telemetry-revamp (enabler half of Spine-1)
Part of #301 (Road to 0.0.1-stable). Co-lands with the dev-dashboard epic. No closing keyword — this umbrella closes by hand when all children land.
Problem
Telemetry is a rich but internally-inconsistent package (forbidden core/, orphan module, no OTEL-adapter subpath), plugin instrumentation ranges A→F (workers reference; streams/ai from zero), a real W3C-parenting bug severs trigger traces, real span-links exist in exactly one place, and there is no typed query/export surface for the dashboard to consume. The dashboard (headline) cannot ship a trustworthy trace view until this enabler lands.
Outcome
A framework-wide telemetry convention (TC-1..14), a doctrine-clean ports/adapters package with ./otel + ./query subpaths, every first-party plugin at TC-conformance, real fan-in span-links, the triggers bug fixed, a real (non-mocked) grouped-trace e2e assertion suite, and a NetScript-owned @netscript/telemetry/query contract the dashboard codes against.
Non-goals
Baggage propagation (semconv Candidate only); dual-writing to an external backend (that's the app's OTLP-exporter choice); the Aspire resource-graph "what's running" surface (dev-dashboard / Aspire seam owns it).
Acceptance (epic-level)
All child issues closed; scaffold.runtime e2e green including the new BEHAVIOR_OTEL_TRACES Flow-B assertions; deno doc --lint clean on the full export set; the arch-debt Refactor entry for packages/telemetry closed with F-3/F-5/F-6 evidence; the dashboard consuming @netscript/telemetry/query.
Children
T1 convention · T2 ports/adapters restructure · T3 thin-vs-SDK adapters · T4 W3C + triggers bugfix · T5 fan-in span-links · T6 oRPC + AI port · T7 query/export surface · T8 real grouped-trace e2e (epic merge-gate). T9 (AI OTel adapter, stable) is filed once as the cross-labelled FAI-17 (== #248) under epic:ai-stack + epic:telemetry-revamp.
Critical path to beta.6
T1 → T2 → T3 → T5 → T8 (fan-in links need the SDK adapter need the restructure). T4/T6/T7 parallelize after T2. T8 is the epic merge-gate; T9 is the stable tail.
Design source: design/B-telemetry/proposal.md + epic-and-issues.md.
Owner picks baked in
- OF-5 = allow opt-in SDK — telemetry may ship an opt-in
@opentelemetry/sdk-* adapter (adapters/otel-sdk) on the messaging fan-in path; the default build stays zero-runtime-dep (adapters/otel-deno), SDK selected only via NETSCRIPT_TELEMETRY_PROVIDER.
Epic —
telemetry-revamp(enabler half of Spine-1)Part of #301 (Road to 0.0.1-stable). Co-lands with the
dev-dashboardepic. No closing keyword — this umbrella closes by hand when all children land.Problem
Telemetry is a rich but internally-inconsistent package (forbidden
core/, orphan module, no OTEL-adapter subpath), plugin instrumentation ranges A→F (workers reference; streams/ai from zero), a real W3C-parenting bug severs trigger traces, real span-links exist in exactly one place, and there is no typed query/export surface for the dashboard to consume. The dashboard (headline) cannot ship a trustworthy trace view until this enabler lands.Outcome
A framework-wide telemetry convention (TC-1..14), a doctrine-clean ports/adapters package with
./otel+./querysubpaths, every first-party plugin at TC-conformance, real fan-in span-links, the triggers bug fixed, a real (non-mocked) grouped-trace e2e assertion suite, and a NetScript-owned@netscript/telemetry/querycontract the dashboard codes against.Non-goals
Baggage propagation (semconv Candidate only); dual-writing to an external backend (that's the app's OTLP-exporter choice); the Aspire resource-graph "what's running" surface (dev-dashboard / Aspire seam owns it).
Acceptance (epic-level)
All child issues closed;
scaffold.runtimee2e green including the newBEHAVIOR_OTEL_TRACESFlow-B assertions;deno doc --lintclean on the full export set; the arch-debt Refactor entry forpackages/telemetryclosed with F-3/F-5/F-6 evidence; the dashboard consuming@netscript/telemetry/query.Children
T1 convention · T2 ports/adapters restructure · T3 thin-vs-SDK adapters · T4 W3C + triggers bugfix · T5 fan-in span-links · T6 oRPC + AI port · T7 query/export surface · T8 real grouped-trace e2e (epic merge-gate). T9 (AI OTel adapter, stable) is filed once as the cross-labelled FAI-17 (== #248) under
epic:ai-stack+epic:telemetry-revamp.Critical path to beta.6
T1 → T2 → T3 → T5 → T8 (fan-in links need the SDK adapter need the restructure). T4/T6/T7 parallelize after T2. T8 is the epic merge-gate; T9 is the stable tail.
Design source:
design/B-telemetry/proposal.md+epic-and-issues.md.Owner picks baked in
@opentelemetry/sdk-*adapter (adapters/otel-sdk) on the messaging fan-in path; the default build stays zero-runtime-dep (adapters/otel-deno), SDK selected only viaNETSCRIPT_TELEMETRY_PROVIDER.