Gap
The current model is replay-on-demand: nearest checkpoint → restore → re-run to sequence N. Every question costs a replay pass. Retroactive watchpoints (#12) are a scan, not an index: one pass per address, per query.
rr has this same shape. Pernosco's contribution was the layer above it — ingest the recording once, build a queryable database of the whole execution, then answer questions in milliseconds instead of minutes. That layer has been proprietary for six years and there is no open-source equivalent. README §2 names Layer 5 "Query & introspection engine" but its contents (unwinding, variable eval, watchpoints) are point-in-time introspection, not a database.
This issue is the schema + ingestion half. Query surface is a separate issue; the write/value index is a separate issue.
Scope
- Define the trace DB schema: events (syscalls, sched, signals, sync ops) keyed by global sequence number; checkpoints; threads/tasks; loaded modules + address ranges.
- Ingestion pipeline: recording log → indexed store. Offline, one pass, incremental-resumable.
- Storage backend decision (embedded, no server; local-first). Recording sizes are large — evaluate columnar/append-only formats before reaching for a general KV.
- Sequence number is the universal primary key: everything else joins on it. Keep this invariant hard.
- Ingest cost must be bounded relative to record time; state the budget and measure it.
Non-goals
- Not the query language (separate issue).
- Not memory-write provenance (separate issue).
- Not distributed / multi-process recordings.
Done when
A recording produced by mirrorscope record can be ingested into a trace DB, and a raw lookup by sequence number returns the event, thread, and stack in O(log n) without invoking the replay engine.
Ref: README §2 (Layer 5), §7. Gap: "no open-source omniscient debugger exists."
Gap
The current model is replay-on-demand: nearest checkpoint → restore → re-run to sequence N. Every question costs a replay pass. Retroactive watchpoints (#12) are a scan, not an index: one pass per address, per query.
rrhas this same shape. Pernosco's contribution was the layer above it — ingest the recording once, build a queryable database of the whole execution, then answer questions in milliseconds instead of minutes. That layer has been proprietary for six years and there is no open-source equivalent. README §2 names Layer 5 "Query & introspection engine" but its contents (unwinding, variable eval, watchpoints) are point-in-time introspection, not a database.This issue is the schema + ingestion half. Query surface is a separate issue; the write/value index is a separate issue.
Scope
Non-goals
Done when
A recording produced by
mirrorscope recordcan be ingested into a trace DB, and a raw lookup by sequence number returns the event, thread, and stack in O(log n) without invoking the replay engine.Ref: README §2 (Layer 5), §7. Gap: "no open-source omniscient debugger exists."