Description
Claude Code sub-agents live in the same file, marked by isSidechain and agentId, which is the opposite of how Codex does it. Without explicit handling their turns merge into the parent and both are wrong.
Acceptance Criteria
- #1 isSidechain turns are attributed to their agentId and are not merged into the parent turn
- #2 Sub-agent spawn and completion produce items, and depth is derived where the transcript supports it
- #3 Agent names and paths stay record fields and never become metric dimensions
- #4 attributionAgent, attributionSkill, attributionPlugin, attributionMcpServer and attributionMcpTool are populated
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 4: write table-driven synthetic-fixture tests first, implement the Claude decoder across all documented record types, then run focused decoder tests; root integrates and runs the final gate.
Final Summary
Claude sidechain attribution, spawn/completion topology, depth, and attribution fields are implemented without metric cardinality leaks; tests passed.