Skip to content

Scope the seed-to-bytes promise to the installed parser versions - #67

Merged
NSchatz merged 1 commit into
mainfrom
changeset-determinism-scope
Sep 25, 2026
Merged

NSchatz merged 1 commit into
mainfrom
changeset-determinism-scope

Conversation

@NSchatz

@NSchatz NSchatz commented Sep 25, 2026

Copy link
Copy Markdown
Contributor

Wording only: the 0.1.0 changeset and three documentation pages scope the seed-to-bytes promise to the installed parser versions. No code, test or gate changes.

Why

The changeset merged in #66 (and docs-content/limitations.md, guides-overview.md, troubleshooting.md before it) told a reader that pinning the synth version alongside the seed keeps a golden fixture matching. Measured on main in a scratch worktree, with only the vendored @cosyte/ccda 0.0.1 swapped for 0.0.15 from npm:

  • determinism:digest FAILS against the committed baseline for ccda/seed-1001, ccda/seed-4242, ccda/seed-60501 and ccda/seed-813377;
  • test/ccda/round-trip.test.ts (3 golden fixtures) and test/ccda/quirk.test.ts (3 quirk fixtures) stop regenerating byte-identically;
  • HL7 v2, FHIR, X12, NCPDP and ASTM stay byte-identical with their newest npm parsers (hl7 0.0.10, fhir 0.0.10, x12 0.0.18, ncpdp 0.0.13, astm 0.0.22, deid 0.0.9).

Each format's bytes come from that parser's own builder, so a consumer who upgrades a parser can see different bytes with synth unchanged. The text now says to pin the parsers too.

Checks

check:no-internal-refs, check:no-emdash, phi-scan (all-mode), test/docs-content.test.ts (41 runnable blocks), and the shared release-notes renderer on the edited changeset (headline unchanged, no violations): all pass.

https://claude.ai/code/session_01U24bnHKNxQWMxmfN7ny7w9

The 0.1.0 changeset and three documentation pages promised that a golden
fixture pinned to a synth version keeps matching. Measured on this tree:
with the vendored @cosyte/ccda 0.0.1 swapped for the 0.0.15 on npm, the
same C-CDA seeds serialize to different bytes (the determinism digest
fails for ccda seeds 1001, 4242, 60501 and 813377, and the three C-CDA
golden fixtures and three C-CDA quirk fixtures stop matching), while the
HL7 v2, FHIR, X12, NCPDP and ASTM pairs stay byte-identical. Each format's
bytes come from that parser's own builder, so pinning synth alone does
not pin them.

The changeset and the limitations, overview and troubleshooting pages
now tell a reader to pin the parsers they generate with alongside synth
and the seed. Wording only: no code, test or gate changes.

Claude-Session: https://claude.ai/code/session_01U24bnHKNxQWMxmfN7ny7w9
@NSchatz
NSchatz enabled auto-merge (squash) September 25, 2026 21:02
@NSchatz
NSchatz merged commit a76a965 into main Sep 25, 2026
29 of 30 checks passed
@NSchatz
NSchatz deleted the changeset-determinism-scope branch September 25, 2026 21:10
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