Description
One record per content kind, gated by logs.record_types. Identifiers ride as OTLP log attributes, which land as structured metadata rather than indexed labels, so an id or a command line costs nothing there.
Listing only the bodiless kinds gives an event timeline with no content, which is the right first deployment.
Acceptance Criteria
- #1 Every record type in docs/signals.md is emitted and gated by logs.record_types; empty means all
- #2 DestRecord fields are log attributes and DestContent is the body
- #3 Input-side records take the input timestamp and model-side records take the output timestamp; ties sort by ordinal
- #4 A bodiless configuration is proven by a test to emit no prompt, message or tool output
- #5 Sink rejections are counted and do not stall the pipeline
Definition of Done
- #1 just check passes: fmt-check, lint, build, test-short, probe-ci, dashboard-check and docs-links all clean
Implementation Plan
Wave 1 lane 9: implement documented gated OTLP log records from the frozen model and prove bodiless configuration emits no content; root integrates and runs the final gate.
Final Summary
The gated OTLP log sink preserves record/content destinations and stable chronology with isolated rejections; Loki live-read proved codingagent.tool_call.