Task · SKT-0084

Model per-node telemetry adoption in the app workload

Description

GitHub issue #172: real estates adopt telemetry unevenly; some services emit metrics and logs but no traces, some are not instrumented at all. The contributor proposed an app-wide traces: false (fork commit 85ce92943c410986b9fc1bf57311460196209ec1). Rob chose on 2026-09-27 to redesign it as a per-node signals block covering traces, logs and metrics. The fork version gated only the trace projection, so derived spanmetrics and service-graph series kept flowing for untraced services and Signals() still declared traces; both are impossible in a real stack. The same fork commits also dropped the default service.version, added service_namespace to SDK profiles and added cAdvisor enrichment labels; those are out of scope unless captured evidence supports them.

Acceptance Criteria

Definition of Done

Implementation Plan

Loop42: freeze per-node signals semantics in D1, then implement and review the public schema and emitted data contract before root landing.

Implementation Notes

loop42: implementation 0/4 consumed (L3 test-baseline seam only), review-repair 0/3, infrastructure retries 0, grants none. D1 design accepted and frozen. Existing random log ValueModels make the literal fixed-seed log hash nondeterministic on unchanged base; root decision J1 is in codex/state and L3/root-decision.md, but collaboration messaging failed before acknowledgement. No implementation candidate or push. Resume L3 after delivering J1 and reconciling its worktree and agent state.

loop43: resumed; L3 owns stable draw order and per-node signals implementation, gate and CodeRabbit.

loop44: resumed

loop44: implementation 1/4 consumed, review-repair 0/3, infrastructure retries 0, grants none. Candidate 088652c and Stage A e182fc2 passed focused tests, just check, gen-check, spdx-check, CodeRabbit complete zero findings, canonical golden parity and same-phase three-run stable inventory comparison. Independent R1 review could not be dispatched because repeated tool-selection errors invoked functions.wait with invalid cell IDs; no R1 finding exists. Candidate remains unpushed. Resume by dispatching R1 on 088652c with packet R1.md and root same-phase comparison evidence, then land only on clean verdict and exact-SHA ci.

loop44: implementation attempts 2/4 (impl-1 lane, impl-2 root route exception), review-repair 1/3, infrastructure retry 1 for CodeRabbit connection; grants none. R1 recheck clean on 96e9792. First L3 landing d04418d failed ci 36410226958 on coverage-mode default wire golden and was reverted by d748973; covering ci 36414101230 passed on 26d48ee. Root repaired test canonicalization using full-series sorting and Stage A per-platform goldens, with explicit YAML null variant; Linux Go1.27.0 coverage parity, just check, gen-check, spdx-check, docs-check and final CodeRabbit completed clean on abd3a29. Final landing 2915187 passed ci 36421108931. Three final-main and three same-phase base dump inventories have 3907 stable lines and 0 missing/added; frozen loop42 baseline differs in four time-phase and span-list rows, recorded in codex/scratch/loop44/root/final-main-inventory-comparison.txt.

Final Summary

Per-node traces, logs and metrics switches landed with schema and signal docs. Golden parity tests pin default wire output against pre-feature Stage A on Darwin and Linux; R1 review, final just check, Linux coverage parity, same-phase dump comparison and exact-SHA ci 36421108931 passed on landing 2915187.

View the source file on GitHub