Skip to content

Decide what replay identity means under a temporal corpus - #47

Merged
brandonifco merged 2 commits into
mainfrom
identity/replay-identity-semantics
Sep 15, 2026
Merged

brandonifco merged 2 commits into
mainfrom
identity/replay-identity-semantics

Conversation

@brandonifco

Copy link
Copy Markdown
Owner

Item 4 of the 0.4.0 plan. Decision record: docs/decisions/0019-replay-identity-is-necessary-not-sufficient.md. Evidence: the Part 107 probe's FINDINGS.md (#43).

Decisions

  1. Is source-baseline order precedence-bearing? No. The kernel reads nothing from position. In Part 107, precedence depends on the question and lives in engine code under RulesetVersion. Equality stays sequential, but only because the kernel can't see whether an engine reads order: a false "incompatible" is cheaper than a false "compatible". I'll revisit if a real consumer hits a spurious reorder break.
  2. Is ReplayCompatibilityIdentity named too broadly? Yes. It is necessary, not sufficient: it excludes initial state, decisions, and engine assumptions about corpora (the probe trusts a 2026 snapshot back to 2021). The docs now say so. The rename waits for the pre-1.0 surface review, so consumers and rules-factory's generated code break once, not twice.
  3. Does HashDerivation need a canonical identifier convention? Yes, for form. Lowercase ASCII alphanumerics joined by single - or ., enforced in the constructor. eCFR-versioner-XML and a trailing space were both accepted before, and both compared unequal over identical bytes. The vocabulary stays the adapter's.
  4. One corpus id still holds one moment. Editions get distinct ids.

Behaviour change: only (3). It is source-compatible, and every derivation known consumers use already conforms.

Calibration (identity primitive changed): packed this branch and built and tested real engines against it:

consumer commit tests
faa-part-107 3f11dde 156 pass
hoyle-backgammon 5ef2097 552 pass
srd-52-combat 894897f 250 pass

As a control, a variant rejecting derivations ending in xml failed faa-part-107. The runs used SDK 10.0.111 because 10.0.112 isn't installed on this machine. The calibration script comes in the item 7 PR.

🤖 Generated with Claude Code

brandonifco and others added 2 commits September 15, 2026 13:36
ADR 0019 answers the three identity questions the Part 107 probe raised:

- Baseline order carries no precedence. Equality stays sequential because the
  kernel cannot see whether an engine reads order.
- ReplayCompatibilityIdentity is named too broadly: it is necessary, not
  sufficient. Documented now; the rename waits for the pre-1.0 surface review.
- HashDerivation gets a canonical form (lowercase ASCII alphanumerics joined by
  single '-' or '.'), enforced at construction. Its vocabulary stays the
  adapter's. Every derivation used by known consumers already conforms.

Calibrated against faa-part-107, hoyle-backgammon and srd-52-combat (958 tests
passing); a deliberately breaking variant failed faa-part-107.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@brandonifco
brandonifco merged commit c6c8454 into main Sep 15, 2026
1 check passed
@brandonifco
brandonifco deleted the identity/replay-identity-semantics branch September 15, 2026 17:40
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