Skip to content

test(cli): embedded/remote parity matrix (RFC-009 Phase 1)#208

Open
aaltshuler wants to merge 1 commit into
mainfrom
test/parity-matrix
Open

test(cli): embedded/remote parity matrix (RFC-009 Phase 1)#208
aaltshuler wants to merge 1 commit into
mainfrom
test/parity-matrix

Conversation

@aaltshuler

Copy link
Copy Markdown
Collaborator

The referee, landed before anything moves — per RFC-009's ordering (and the storage-collapse playbook).

What it does

parity_matrix.rs: every forked verb (query, schema show/plan-adjacent reads, snapshot, branch list/create/delete/merge, commit list, mutate, load) runs once embedded and once against a spawned server on a twin copy of the same fixture — same actor on both arms (--as vs bearer-resolved, equal by construction), same Cedar bundle on both arms (the harness's key insight: a tokens-only server is default-deny by design, so unmatched policy measures configuration, not the fork). Declared-volatile fields scrub to placeholders; the rest is byte-exact, plus exit-code equality for shared failures.

Results

  • 11 rows green, divergence ledger EMPTY — embedded and remote agree on every verb today. The KNOWN_DIVERGENCES ledger + a guard test make any future divergence a pinned, deliberate decision.
  • One cross-path asymmetry surfaced and filed as Inline query with declared-but-unbound param matches all rows; stored-query invoke errors #207 (inline unbound-param matches-all vs invoke's hard error) — pinned by the matrix as agreeing behavior, not repaired here.
  • Documented exclusions (graphs list, load-rides-/ingest, storage-plane verbs) map forward to RFC-009 Phases 4–5; the parity_load row is where Phase 5's /load flip becomes visible.

RFC-009 Phase 1 ticked with the outcome recorded; testing.md row added. Full workspace gate green (58 suites — the matrix is the 58th).

🤖 Generated with Claude Code

The referee before any unification moves: every forked verb runs once
against the local graph and once against a spawned server on a twin copy
of the same fixture, with the SAME actor (--as locally; bearer-resolved
remotely) and the SAME Cedar bundle on both arms — like-for-like
enforcement is part of the harness (a tokens-only server is default-deny
by design; comparing that against a bare local arm measures
configuration, not the fork). Declared-volatile fields (ids, wall-clock,
transport locations) scrub to placeholders; everything else must match
exactly, and exit codes must match for shared failures.

Headline result: 11 rows green with an EMPTY divergence ledger — the
arms agree on every verb today. The ledger (KNOWN_DIVERGENCES) exists so
any future divergence is pinned or filed, never silently repaired;
repairs are Phase 3's job, gated by this referee staying green.

One engine observation surfaced and filed (#207): inline execution with
a declared-but-unbound param matches ALL rows on both arms, while the
stored-query invoke path hard-errors — a cross-path asymmetry the matrix
pins as agreeing behavior pending a deliberate fix. Documented
exclusions (graphs list, ingest/load-over-/ingest, storage-plane verbs)
map to RFC-009 Phases 4-5.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@aaltshuler aaltshuler requested a review from ragnorc as a code owner June 12, 2026 14:50

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

aaltshuler has reached the 50-review limit for trial accounts. To continue receiving code reviews, upgrade your plan.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant