Status: v1 surface accepted and active.
The git-warp time travel debugger is intentionally a thin CLI-first inspection surface over substrate facts. It is not a human-facing TUI, and it is not a second product layered awkwardly inside git-warp.
TTD in git-warp exists to answer substrate questions such as:
- what coordinate am I observing?
- what conflicts competed and why did one write win?
- which patches contributed to a given entity?
- what did the reducer do with each operation at a given Lamport ceiling?
TTD does not own:
- domain meaning above the substrate
- workflow/governance semantics
- compare/collapse interpretation
- human-facing debugger panels or time-travel applications
Those live in higher layers such as XYPH.
flowchart TB
subgraph user["User Layer"]
human["Human in XYPH TUI / AION panel"]
agent["LLM via CLI / MCP"]
end
subgraph xyph["XYPH Layer"]
xyphui["XYPH TUI and apps"]
xyphdomain["Observer / worldline / governance ontology"]
end
subgraph cli["git-warp CLI"]
seek["seek"]
debug["debug coordinate / timeline / conflicts / provenance / receipts"]
ws["working-set (separate durable family)"]
raw["patch show / history / query"]
end
subgraph core["git-warp Core"]
analyzers["Conflict + provenance analyzers"]
materialize["Materialize / receipts / seek"]
substrate["Patch history / frontier / CRDT reducer"]
end
human --> xyphui
agent --> debug
xyphui --> xyphdomain
xyphdomain --> debug
debug --> analyzers
xyphdomain --> ws
ws --> materialize
seek --> materialize
raw --> substrate
analyzers --> substrate
materialize --> substrate
TTD in git-warp is a family, not a single command:
git warp seekControls the active historical coordinate for exploratory reads.git warp debug coordinateShows the resolved observation coordinate, frontier digest, visible patch counts, and tick-local receipt summary.git warp debug timelineShows a cross-writer causal patch timeline, optionally scoped to an entity, writer, or Lamport window.git warp debug conflictsShows deterministic conflict traces and structured loser/winner evidence.git warp debug provenanceShows causal patch provenance for a specific entity ID.git warp debug receiptsShows tick receipts and per-operation reducer outcomes.git warp patch showDecodes the raw patch behind a receipt or conflict anchor.git warp historyShows writer-local patch timelines.
Together these form the substrate-level time travel debugger.
Separate but adjacent:
git warp working-setManages durable pinned coordinates and materializes them later. This is intentionally outside the read-only TTD family because it creates and deletes descriptor refs.git warp working-set braidPins read-only braid support overlays onto a target working set without changing the TTD read-only contract.git warp working-set compareCompares durable coordinates and visible patch universes. It stays outsidedebugbecause it is a coordinate-comparison surface, not a single-coordinate debugger topic.
TTD follows the same ports-and-adapters rules as the rest of git-warp:
- Domain/core Owns analyzers, receipts, materialization, conflict classification, and provenance facts.
- CLI adapters Parse flags, resolve coordinates, call domain methods, and return structured payloads.
- Presenters Render text / JSON / NDJSON views over the payloads.
The CLI must stay thin:
- no business/domain semantics beyond substrate truth
- no alternative storage layer
- no special debugger-only mutation path
- no embedded TUI or browser application
TTD is also deliberately separate from working-set management:
- debug commands inspect substrate facts
- working-set commands pin durable coordinates and compare them
- higher layers may combine both, but git-warp keeps the boundary explicit
- higher-layer library code that needs the same visible truth can combine
materializeWorkingSet()withprojectStateV5()orcreateStateReaderV5()without turning git-warp into an application query framework - coordinate comparison helpers such as
compareWorkingSet(),compareCoordinates(), andcompareVisibleStateV5()stay substrate-factual and do not collapse into application-level decision semantics
The debug family is intended to remain read-only.
In practice:
debug conflictsuses the conflict analyzer, which performs zero durable writes.debug coordinateuses explicit materialization without the CLI attaching checkpoint policies or persistent seek caches.debug provenanceanddebug timelineinspect either the live provenance view or the visible working-set patch universe without mutating graph state.debug receiptsuses explicit materialization over the live frontier or a pinned working set without mutating seek state or graph state.- debug topics may consult the active seek cursor, but they do not mutate it.
When a selected working set carries braided read-only overlays, those debug topics inspect the resulting braid-visible patch universe automatically because they still materialize and analyze through the working-set substrate surface.
If a future debugger feature requires durable writes, it should not be added casually. The read-only contract is part of the debugger’s architecture, not just a convenience.
This is why working-set is a separate top-level family instead of a debug subcommand.
The debugger operates over:
- the current frontier
- plus an optional Lamport ceiling
- plus the optional active seek cursor when no explicit ceiling is given
- plus, on supported topics, an explicit working-set patch universe selected by
--working-set <id>
This keeps TTD aligned with the current git-warp substrate model:
seekcontrols observation position- debug topics inspect facts at that position
debug coordinateremains live-frontier/cursor scoped for nowdebug timeline,debug conflicts,debug provenance, anddebug receiptscan inspect a pinned working set, including any pinned braid support overlays, without teaching the reducer about worldlinesworking-set comparehandles deterministic coordinate/working-set divergence reads outside the debugger familyworking-set braidchanges descriptor visibility, not debugger semantics- explicit working-set descriptors pin positions without mutating the debugger family
- higher layers may later project richer worldline semantics on top
git-warp is the substrate and its thin operator/LLM CLI.
Human-facing debugger or time-travel applications belong above it. That keeps:
- git-warp versioning simple
- the core package free of UI framework drift
- substrate facts reusable by higher-level systems
In practice this means:
- git-warp ships the CLI and machine-readable data
- XYPH owns the human-facing AION / Time Travel panel
Likely future TTD-adjacent extensions:
- additional debug topics once their substrate facts are stable
- entity-local slice inspection at historical coordinates once substrate support exists
- richer provenance drilldown over conflict anchors
- richer braid-oriented debugger affordances and examples now that co-present overlay composition exists in the substrate
- higher-level debugger panels in XYPH, not in git-warp