Skip to content

[G3] Cutover: relayhistory becomes the default and only source; delete the harness readers, walkers, cursors and fs watcher; ship as a major release #562

Description

@willwashburn

Part of #553 (group 3 — depends on every burn group-2 issue (#557, #558, #559, #561) and on relayhistory #183's parity report showing 100% identity match for Claude and Codex; parallel with #560/#563).

Scope

  1. Default flip: relayhistory-source feature becomes non-optional; BackendChoice::Builtin removed; IngestRoots removed from the public API (lib.rs:132-139 re-exports) — replaced by a thin SessionStoreOptions (db path, provider roots override passthrough for tests) that maps onto ai-hist's StoreOptions. Env: RELAYBURN_SOURCE removed; AI_HIST_DB honoured; BURN_CLAUDE_PROJECTS_DIR removed (was a second root injection point — burn [G1] Remove vestigial ingest surface before the swap: opencode-stream cursor, legacy harnesses/ adapters, stale reader docs #556).
  2. Delete (with their tests): crates/relayburn-sdk/src/reader/claude.rs + claude/{incremental,parent_chain,relationships,tool_results,subagents,tests}.rs, reader/codex.rs + codex/{incremental,tests}.rs, reader/opencode.rs + opencode/tests.rs, ingest/{walk,cursors,fs_events,gap,reingest}.rs (gap logic moves to the backend per [G2] Watch mode, --hook claude, pending stamps and gap warnings over the relayhistory backend #558), ingest/backend/builtin.rs, crates/relayburn-cli/src/harnesses/, the notify/memchr deps if unused. Keep: reader/types.rs, reader/{classifier,user_turn,inference,fidelity,git,hash}.rs, reader/claude/span_tree.rs, reader/codex/span_tree.rs (they consume records, not logs — consider renaming reader/model/), everything under analyze/, ledger/, ingest/{pending_stamps,watch_loop}.rs as adapted.
  3. Fixtures: tests/fixtures/{claude,codex,opencode} stay as the input to the parity/ledger-snapshot suites (relayhistory Add --provider filter to burn compare (closes #138) #163 owns the canonical copy; add a tests/fixtures/README.md saying so and a CI check that burn's copy is byte-identical to relayhistory's tagged copy, or fetch them from the pinned relayhistory tag).
  4. Migration for users (docs/migrating-to-5.md + README.md "Quick Start"): npm i -g relayburn now depends on the relayhistory store; first run performs the [G2] Identity and fingerprint compatibility, cursor migration, and state rebuild from the relayhistory store #561 reconciliation; burn ingest = "sync relayhistory then pull"; --hook claude unchanged; burn state rebuild needs the relayhistory DB, not the logs; what happens if the relayhistory DB is missing (bootstrap it: SessionStore::open + sync with default roots — burn must not require the ai-hist CLI to be installed).
  5. Docs: README.md first paragraph and burn ingest section; AGENTS.md layout section (drop reader/), "Adding ingest support" replaced by "Session sourcing lives in relayhistory"; CHANGELOG.md [Unreleased]5.0.0 narrative: breaking (env vars, IngestRoots, IngestOptions.harness semantics), added (Cursor/Grok via [G3] Harness expansion through relayhistory: Cursor and Grok in burn (SourceKind, pricing, TOOL_ALIASES, overhead mapping, fidelity policy) and collector-backlog transfer #560), fixed (Codex turn accounting collapses many API requests into one turn #504/Attribution and grouping gaps: subagent spend, project rollups, harness split, session token column #506 via [G3] Accounting fixes unlocked by shared evidence: Codex per-request turns (#504), subagent project rollups and harness split (#506), sessions list token column #563).
  6. Versioning: workspace version = "5.0.0"; packages/* bumped by the publish workflow; relayburn-sdk crate major bump; pin ai-hist = "=x.y.z" (exact — the crate version is the contract) and add the reverse contract-drift job from relayhistory Wire provider rendering through analyze #183 to ci.yml (parity suite against the pinned published crate). Adopting a new ai-hist version is a deliberate PR that bumps the pin and re-runs parity.
  7. Verification before publish: on three real machines, burn summary --since 30d --json before and after upgrade — totals, per-model tokens and cost identical (or differences enumerated in the release notes with root cause). Include the positive control from CLAUDE.md's "verifying claims" discipline in the release checklist.

Acceptance

Out of scope

New analytics.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions