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
Tracking issue linking atm-core's next observability phase to the sc-observability work it depends on. Rand, 2026-09-26: full visibility on all task activity (every assignment, start, reminder, reset, escalation, close, prompt handoff) plus other daemon metrics, using the full OTel implementation (Tokio), not the lightweight Python-oriented one.
What atm-core has today (develop)
Cargo.toml: sc-observability, sc-observability-log, sc-observability-types pinned =1.4.1. Logging only; no sc-observe, no sc-observability-otlp, no spans or metrics.
crates/atm-observability/src/lib.rs: RetainedLogger adapter over Logger::builder_typed/try_log_typed/flush_typed.
crates/atm-observability/src/tracing_bridge.rs: hand-rolled 700-line tracing-subscriber layer (TracingBridgeLayer), installed by crates/atm-daemon-bootstrap/src/daemon_observability.rs::install_tracing_bridge and registered by diagnostic_timeline.rs for its counters. Exists because 1.4.1 has no tracing/log bridge.
Task activity is already typed but never reaches ObservabilityPort: TaskEventKind, TaskTransition, PromptHandoff in crates/atm-storage/src/task_state.rs; writers in atm-storage-rusqlite/src/task_store.rs, atm-http-runtime/src/herdr_queue_wake_escalation.rs, atm-http-runtime/src/prompt_handoff_record.rs.
Neutral signal model (SpanKind, MetricValue::{Sum,Histogram}, ExporterBackend::OpenTelemetrySdk, TelemetryHealth)
sprint d-5, d-12
planned
Full OTel backend on Tokio: official opentelemetry SDK, gRPC/HTTP-protobuf, shutdown_async_typed
sprints d-6, d-7
planned
Public consumer surface, 2.0 release, migration guide
sprint d-18 (d-9 conformance after)
planned
Today's sc-observability-otlp 1.4.1 buffers all three signals into no-op exporters with crate-private exporter traits, so nothing can be exported before d-18. The legacy HTTP/JSON path (d-8) is the lightweight implementation and is not atm-core's target. Note: the legacy OTLP source Phase D restores came from atm-core (docs/plans/phase-d/legacy-otlp-provenance.json → randlee/agent-team-mail 7b39f4e7f).
atm-core work that does not wait for Phase D
Define the task-activity Observable payload and the ATM-owned mapping spec (sc-observability docs/atm-adapter-mapping-spec.md §4.2, §4.3, §9 leave span rules to ATM): which task events open/annotate/close a span, counters per TaskEventKind, latency histograms assign→start and start→close, prompt-handoff attempts.
Route the ledger writers above through ObservabilityPort so the events exist as observations before an exporter does.
Prepare the 1.4.1 → 2.0 adapter migration (error enums, attach_logger replacing TracingBridgeLayer while keeping the retained field allowlist and the diagnostic-timeline counters).
Process
Rand's sequence: import the sc-obs skill/agent system into atm-core in one PR, then write this phase's plan as beads with the atm-beads skill. This issue is the anchor the plan links to.
Tracking issue linking atm-core's next observability phase to the sc-observability work it depends on. Rand, 2026-09-26: full visibility on all task activity (every assignment, start, reminder, reset, escalation, close, prompt handoff) plus other daemon metrics, using the full OTel implementation (Tokio), not the lightweight Python-oriented one.
What atm-core has today (
develop)Cargo.toml:sc-observability,sc-observability-log,sc-observability-typespinned=1.4.1. Logging only; nosc-observe, nosc-observability-otlp, no spans or metrics.crates/atm-observability/src/lib.rs:RetainedLoggeradapter overLogger::builder_typed/try_log_typed/flush_typed.crates/atm-observability/src/tracing_bridge.rs: hand-rolled 700-line tracing-subscriber layer (TracingBridgeLayer), installed bycrates/atm-daemon-bootstrap/src/daemon_observability.rs::install_tracing_bridgeand registered bydiagnostic_timeline.rsfor its counters. Exists because 1.4.1 has no tracing/log bridge.ObservabilityPort:TaskEventKind,TaskTransition,PromptHandoffincrates/atm-storage/src/task_state.rs; writers inatm-storage-rusqlite/src/task_store.rs,atm-http-runtime/src/herdr_queue_wake_escalation.rs,atm-http-runtime/src/prompt_handoff_record.rs.reminders_resetledger event), atm task history: the past N tasks of a team, including completed ones #1599 (atm task history).sc-observability prerequisites (all in Phase D, ships as 2.0; plan on PR randlee/sc-observability#223, beads import randlee/sc-observability#221)
Loggersoinfo!/warn!/#[instrument]share the daemon's retained logger (replaces the hand-rolled bridge)attach_logger(Arc<Logger>, AttachmentOptions)LogSinkErrorregister_typed_sinkTryLogFailure/LogFailure/*_typedmatches inatm-observabilityandcrates/atm/src/main.rs)SpanKind,MetricValue::{Sum,Histogram},ExporterBackend::OpenTelemetrySdk,TelemetryHealth)shutdown_async_typedToday's
sc-observability-otlp1.4.1 buffers all three signals into no-op exporters with crate-private exporter traits, so nothing can be exported before d-18. The legacy HTTP/JSON path (d-8) is the lightweight implementation and is not atm-core's target. Note: the legacy OTLP source Phase D restores came from atm-core (docs/plans/phase-d/legacy-otlp-provenance.json→ randlee/agent-team-mail 7b39f4e7f).atm-core work that does not wait for Phase D
Observablepayload and the ATM-owned mapping spec (sc-observabilitydocs/atm-adapter-mapping-spec.md§4.2, §4.3, §9 leave span rules to ATM): which task events open/annotate/close a span, counters perTaskEventKind, latency histograms assign→start and start→close, prompt-handoff attempts.ObservabilityPortso the events exist as observations before an exporter does.attach_loggerreplacingTracingBridgeLayerwhile keeping the retained field allowlist and the diagnostic-timeline counters).Process
Rand's sequence: import the sc-obs skill/agent system into atm-core in one PR, then write this phase's plan as beads with the
atm-beadsskill. This issue is the anchor the plan links to.