Phase 9 Parity Report¶
Status¶
Report status:
- final parity report completed on 2026-03-07
Authority decision:
- keep Python authoritative permanently for the frozen Phase 1 scope
Comparison scope:
- frozen Phase 1 semantic reference only
Explicitly excluded from this report unless the baseline is widened later:
WorkflowReviewRequested- workflow inbox and notification behavior
- service auth and rate limiting
- LiveView operator UX
- self-hosted packaging and release procedures
Reference Inputs¶
tests/golden/reference_fixture_bundle.jsondocs/reference/SEMANTIC_PARITY_POLICY.mddocs/reference/PARITY_HARNESS_PLAN.mddocs/reference/EVENT_ENVELOPE_CONTRACT.mddocs/reference/APPEND_SEMANTICS.mddocs/reference/PROJECTION_AND_REPLAY_SEMANTICS.mddocs/reference/PRECEDENT_AND_GRAPH_QUERY_SEMANTICS.mddocs/reference/QUERY_AND_ORDERING_INVARIANTS.mddocs/reference/DIGEST_INVARIANTS.md
Comparison Areas¶
This report classifies parity across these areas:
- write acceptance and rejection behavior
- idempotency reuse behavior
- trace sequencing and trace-finished locking
- projection snapshots
- component digests and full projection digest
- trace, graph, precedent, and health query behavior
- replay and rebuild outputs
- downstream Python compatibility implications
Scenario Matrix¶
| Area | Evidence source | Status | Notes |
|---|---|---|---|
| Write path parity | beam/apps/dg_store/test/decision_graph/store/parity_test.exs |
fixed | Frozen bundle scenarios plus idempotency, sequence, and TraceFinished lock checks show no observed semantic drift |
| Projection parity | beam/apps/dg_projector/test/decision_graph/projector/parity_test.exs |
fixed | Trace summary, context graph, precedent index, and digests match the frozen fixture bundle across all bundled scenarios |
| Replay and rebuild | beam/apps/dg_projector/test/decision_graph/projector/integration_test.exs |
fixed | Catch-up, rebuild, durable cursor resume, replay status persistence, and failure visibility behave consistently with the frozen replay expectations |
| Query ordering and freshness | beam/apps/dg_projector/test/decision_graph/projector/query_parity_test.exs |
fixed | Trace summary, connected-subgraph traversal, edge pagination, precedent lookup, and stale-read rejection match the frozen query semantics across all bundled scenarios |
| Python compatibility story | docs/reference/PYTHON_SDK_SERVICE_COMPATIBILITY.md plus Phase 9 decision docs |
intentionally accepted | The project keeps Python as the permanent semantic oracle and local embedded surface, so no authority-handoff bridge is required for Phase 9 completion |
Scenario coverage in the current evidence set:
dealdeskrelease_rejectedrenewalsupportsync_failure
Diff Register¶
This register tracks every meaningful Python-versus-Elixir delta or authority-handoff blocker currently known.
| Area | Scenario or operation | Diff summary | Classification | Action |
|---|---|---|---|---|
| Frozen core semantics | bundled writes, projections, queries, and replays | no observed semantic drift in the current BEAM evidence for the frozen Phase 1 scope | fixed | keep the targeted parity suites green and extend them if the frozen reference changes |
| Graph query scope | trace-centered get_context_subgraph() versus full projection snapshot |
the query returns the connected breadth-first subgraph, not every row present in projection tables; this matches the frozen graph-query contract and is now encoded in the BEAM query parity suite | fixed | keep query expectations connected-subgraph scoped instead of comparing them to raw table dumps |
| BEAM-only workflow semantics | WorkflowReviewRequested and workflow runtime behavior |
these behaviors do not exist in the frozen Python baseline and therefore do not participate in the authority comparison | intentionally accepted | keep them explicitly out of the authority comparison unless the reference baseline is widened |
| Python consumer transition | embedded Python API, CLI, and SQLite-backed offline mode | the project intentionally keeps this Python-owned compatibility surface instead of forcing a BEAM authority handoff | intentionally accepted | preserve the explicit local Python mode and treat any future service client as additive |
Classification values:
- fixed
- intentionally accepted
- blocking
Performance And Operability Notes¶
Parity work surfaced a few important operational and product observations:
- the BEAM platform now shows strong frozen-core parity without needing a risky semantic big-bang rewrite
- the biggest remaining handoff risk is downstream compatibility and governance, not observed correctness drift
- trace-centered graph queries should be evaluated as connected subgraph reads, not as projection-table dumps
- the existing Phase 4, Phase 5, and Phase 8 benchmark baselines remain relevant to the authority decision, but they do not on their own justify moving semantic authority
No current evidence suggests that the frozen core must stay Python-owned because of correctness failures on the BEAM side. The reason to keep Python authoritative is now a completed product decision: the local and reference Python surface remains valuable enough that a semantic handoff would add cost without enough return.
Recommendation¶
Final recommendation:
- keep Python authoritative
Why:
- the frozen Phase 1 write, projection, query, and replay surfaces currently show no observed semantic drift in the checked BEAM evidence
- the remaining differences are either intentionally out of scope or intentionally retained as part of the Python local and reference story
- the BEAM platform already gets the runtime value it needs without replacing the semantic oracle
This means the current Phase 9 answer is:
- BEAM parity is strong enough to support the production platform
- Python remains the permanent semantic oracle for the frozen reference scope
- future authority handoff work is unnecessary unless the product constraints materially change