Repository navigation
Spec: Session traces, OTLP JSON Lines in place of Session logs - #1111
Merged
Merged
Conversation
Build the Console span tree and span details
This was referenced Oct 22, 2026
Replace raw Session logs with Session traces
Share dispatch-stage ancestry between the Console and OTLP export, and let dispatched Runs claim their Sessions before ancestor inventory. Retain end-to-end coverage for every span parent, migrate timing reproductions to Session traces, and correct Command-log terminology and the cutover ADR.
JacobStephens2
marked this pull request as ready for review
October 23, 2026 07:19
Keep the Session-trace cutover and converter retirement while preserving main's decoded tail budget, Codex diff recovery and Security review fallback. Adapt incoming regressions and regenerate the manual for the merged behavior.
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #700
Closes #854
All Spec #700 Tickets are integrated. Sessions from Claude, Codex, agy, Grok, Muse and OpenCode now record correlated OTLP log records and spans in place of raw Session logs.
show, Silent, heartbeat and inventory use the log-records file. The Waterfall grows a foldable span tree, slowest-call ranking, zoom and summary Peek, paired withshow --spans/--span --jsonand a 390 px phone layout.apply_patchdiffs come from Codex's own retained session files and are marked as such. Missing diffs and shell edits retain the existing fallback.Review fixes in
bb63be8make export and Console ancestry agree, keep dispatched Sessions with their actual Run, migrate the retained timing checks, and correct the remaining terminology/ADR drift.Evidence
Seams under test:
The built CLI against fake Harnesses: Session-trace files, Model evidence, ancestry and export.
Console HTTP routes and their paired CLI views: exact span times, stage ancestry and retained records.
Console browser interactions: live refresh, tree folding, summary Peek, keyboard navigation and phone layout.
Generated public documentation and Session prompts.
Before: both independent Spec reproductions failed: exported child Runs bypassed their dispatch stage, and Pickup inventory attached a dispatched Spec's Session to the Pickup. The end-to-end export comparison failed on each defect before its fix.
After: both exact reproductions pass.
cargo test --test export_tracepasses (3 tests, 1 fixture entry ignored), comparing every span's parent across CLI/Console and exported OTLP.Before:
python3 console/reproductions/waterfall-fractional.pyandpython3 console/reproductions/waterfall-stage.pyfailed with empty tool lists.After: both pass with actual Session traces; fractional timing is 150.25 ms and the tool nests under its implement stage.
waterfall-trace-axis.pyalso passes.npm test --prefix console: 59 passed after the fixes, including live tree/Peek/zoom, keyboard and phone checks.cargo fmt --checkandgit diff --check: passed./usr/bin/time -p scripts/affected-tests main: passed; all 37 site tests and the full Rust suite passed. Wall time 1199.92 s (19m 59.92s), including Rust compilation. Nextest was unavailable, so the selector usedcargo test.Unaddressed findings
Standards
src/logs/trace.rs:101owns dispatch-stage selection, both callers use it (src/logs/spans.rs:300,src/logs/export.rs:180), andsrc/logs/export.rs:174uses shared Session-stem normalization. The remaining traversals produce distinct presentation and OTLP projections; a generic visitor adds an interface without removing another domain decision. All three concrete Standards findings were fixed. No Spec or Day shift decision is deferred.Spec
None. Both findings were reproduced and fixed.
Security
None. Guidance-mode review of the
f2eb1fa...HEADdiff found no introduced finding: the new/spansroute inherits the Console sign-in guard middleware, span rendering usestextContentwith server-side</>/&escaping of the embedded JSON, the OTLP endpoint keeps its pre-existing Security-run exclusion, export writes fixed filenames with no-clobber tempfiles, and the Codex session-file lookup matches existing filenames only. No proof-of-concept failed, so no fix and no new regression test.Security review outcome
No unaddressed introduced findings.
Review coverage
Standards and Spec each read all 127 original changed paths, the additional ADR amendment, and relevant supporting files. Each reviewer inspected generated changed hunks and removed contents directly. Unread changed files: none under either axis. Generated-output exclusions: none. Final reports and each axis's combined files-read manifest are saved locally in
.thirdshift-review-D4gS6S/standards.mdandspec.md.Merge Danger
Door: one-way
The final cutover assumes #994's conversion completed on both hosts. An older binary that reads only raw Session logs cannot read newly recorded Sessions. This PR does not delete the hosts' originals; that human conversion step is already complete.
Blast Radius: observability
All six Harnesses' Session recording, the Console, CLI log inspection and trace export.
Built with codex · gpt-6.1-sol · xhigh
Tickets
showread Session traces #987 done