Decide what replay identity means under a temporal corpus - #47
Merged
Merged
Conversation
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>
This was referenced Sep 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
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.ReplayCompatibilityIdentitynamed 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.HashDerivationneed a canonical identifier convention? Yes, for form. Lowercase ASCII alphanumerics joined by single-or., enforced in the constructor.eCFR-versioner-XMLand a trailing space were both accepted before, and both compared unequal over identical bytes. The vocabulary stays the adapter's.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:
As a control, a variant rejecting derivations ending in
xmlfailed 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