Repository navigation
Add a conformance suite for HermitCrab, with its adequacy argument - #480
johnml1135 wants to merge 91 commits into
Conversation
d826869 to
8f9dcea
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## fix/signature-drops-id-under-identity-rule #480 +/- ##
==============================================================================
+ Coverage 74.62% 74.80% +0.18%
==============================================================================
Files 453 556 +103
Lines 38345 56544 +18199
Branches 5285 7722 +2437
==============================================================================
+ Hits 28614 42297 +13683
- Misses 8568 12354 +3786
- Partials 1163 1893 +730 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
d0b5448 to
9dfb2f6
Compare
de95458 to
4823a05
Compare
Introduces an engine-agnostic conformance suite for HermitCrab-formalism morphological parsers: a `conformance/` tree of language grammars and edge-case micro-grammars, each an HC-XML grammar.xml paired with a words.yaml ground truth (oracle-provenance, gloss, and per-word parse signatures). A new SIL.Machine.Morphology.HermitCrab.Conformance project and hc-conformance CLI tool run those fixtures against an engine adapter, producing coverage and rules CSVs, an interface inventory, dataflow- obligation ledgers, evidence cards, a FieldWorks-producibility table, and a JSON manifest for external consumers. PROTOCOL.md is the adapter contract a second engine (e.g. the in-progress Rust port) implements to plug into the same suite. Includes the FieldWorks-producibility classification campaign: for every HermitCrab construct the suite covers, a verdict on whether FieldWorks' own HC-XML export path can actually produce a grammar exercising it, distinguishing genuine data-model limits from mere loader gaps, with five previously-unresolved verdicts now classified and corrected write-ups for two more cases initially misread as exporter silence. Also lands one new edge-case fixture, edge-cases/chained-output-feature-override-loss, isolating an analysis- side OutputHeadFeatures retraction bug: a well-formed four-morph parse of `zudiua` that the founding C# oracle currently loses. The fixture is deliberately red against hc.dll today (expected, not a broken test) and documents the mechanism, provenance, and the HC-Rust divergence that motivated it. The suite is deliberately stopped at this point rather than finished: scope, known gaps, and next steps are documented in the suite's own tracking docs rather than left implicit. This commit squashes the full conformance-suite branch stack (integrate-conformance-framework through conformance/fieldworks- witnesses, 49 commits) into one commit on top of current master, for PR #480. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
4823a05 to
3128301
Compare
Records a break-attempt run of PR #494 (AnalysisAffixProcessRule fix) against the conformance suite: 36/36 fixtures pass (including pathological cases), and a generated-word fuzz sweep (every root x every 0..3-subset of affix rules, up to 6 nonhead roots where the grammar compounds) produced ~1,300 words across 35 grammars, parsed by both master and the PR branch with 0 divergences attributable to PR #494. The one observed diff (edge-cases/truncate-morphotactic, words `a`/`ga`) is pre-existing oracle nondeterminism in analysis multiplicity ordering, reproducible on master alone, unrelated to the syntactic FS change. This was previously recorded only at tag archive/pr494-conformance; folding it into the conformance suite's own PR (#480) so the evidence travels with the suite it was run against. Fixed two references to branches deleted since the doc was written (perf/pr494-conformance, conformance/fieldworks-witnesses) to point at their preserved archive/* tags instead; no other content changed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Added two independently justified conformance fixtures in a20bce1: final-template-partial-discriminators (10 words; #507) and template-category-sharing (6 words; #505). Fresh Release build: zero warnings/errors. Both fixtures pass with memoization on and off, zero skipped; 22 focused manifest/coverage tests pass. Four grammar counterfactuals produce the independently predicted mismatches, documented under conformance/docs. These are grammar-sensitivity controls, not proof that pruning, cache hits, or same-key feature collisions execute. No parser code changed. Generated inventory also restores previously omitted rows for the already-existing Exact-inverse fixture; its valid zudiua loss remains tracked in #504, not relabeled as correct. |
|
Added the shared-template unconstrained-suffix conformance fixture in f150e2a. The grammar has a slot-only feature-unconstrained suffix shared by mandatory TV/IV templates, an ordinary N-to-IV verbalizer, four positive rows, and six rejection controls. The companion rationale explains complete forward derivations and loader reachability (not a FieldWorks UI round trip). Fresh C# harness: all 10 rows pass in both template orders, memoization on/off (40 comparisons; no skips). Focused template/manifest tests: 22 passed, no skips. Regenerated manifest is current at 40 fixtures; coverage/rule reports updated. No Machine parser code changed. PanGloss main now contains the narrow gate-only alignment (fc357daf), with this fixture mirrored unchanged until its old Machine submodule pin is upgraded. Direct state assertions provide red/green evidence; full-parse fixture checks pass both before and after the change. Issue #505 remains open for collision/correlation and broader merge-equivalence evidence. |
Introduces an engine-agnostic conformance suite for HermitCrab-formalism morphological parsers: a `conformance/` tree of language grammars and edge-case micro-grammars, each an HC-XML grammar.xml paired with a words.yaml ground truth (oracle-provenance, gloss, and per-word parse signatures). A new SIL.Machine.Morphology.HermitCrab.Conformance project and hc-conformance CLI tool run those fixtures against an engine adapter, producing coverage and rules CSVs, an interface inventory, dataflow- obligation ledgers, evidence cards, a FieldWorks-producibility table, and a JSON manifest for external consumers. PROTOCOL.md is the adapter contract a second engine (e.g. the in-progress Rust port) implements to plug into the same suite. Includes the FieldWorks-producibility classification campaign: for every HermitCrab construct the suite covers, a verdict on whether FieldWorks' own HC-XML export path can actually produce a grammar exercising it, distinguishing genuine data-model limits from mere loader gaps, with five previously-unresolved verdicts now classified and corrected write-ups for two more cases initially misread as exporter silence. Also lands one new edge-case fixture, edge-cases/chained-output-feature-override-loss, isolating an analysis- side OutputHeadFeatures retraction bug: a well-formed four-morph parse of `zudiua` that the founding C# oracle currently loses. The fixture is deliberately red against hc.dll today (expected, not a broken test) and documents the mechanism, provenance, and the HC-Rust divergence that motivated it. The suite is deliberately stopped at this point rather than finished: scope, known gaps, and next steps are documented in the suite's own tracking docs rather than left implicit. This commit squashes the full conformance-suite branch stack (integrate-conformance-framework through conformance/fieldworks- witnesses, 49 commits) into one commit on top of current master, for PR #480. Folds in three review fixes: AdapterEngine's contract in MaterializedRunner now credits an expect_crash fixture only once the same engine also completes an ordinary fixture from the same run, so a misconfigured adapter (bad path, rejected arguments) can no longer register as reproducing the pinned crash; GuesserSignatureTests' batch-path test is renamed for the overload it actually calls; and .gitattributes freezes project.fwdata as binary so its pinned SHA-256 is reproducible across platforms and CI runners, not just this one. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
93f470c to
2933fcc
Compare
Records a break-attempt run of PR #494 (AnalysisAffixProcessRule fix) against the conformance suite: 36/36 fixtures pass (including pathological cases), and a generated-word fuzz sweep (every root x every 0..3-subset of affix rules, up to 6 nonhead roots where the grammar compounds) produced ~1,300 words across 35 grammars, parsed by both master and the PR branch with 0 divergences attributable to PR #494. The one observed diff (edge-cases/truncate-morphotactic, words `a`/`ga`) is pre-existing oracle nondeterminism in analysis multiplicity ordering, reproducible on master alone, unrelated to the syntactic FS change. This was previously recorded only at tag archive/pr494-conformance; folding it into the conformance suite's own PR (#480) so the evidence travels with the suite it was run against. Fixed two references to branches deleted since the doc was written (perf/pr494-conformance, conformance/fieldworks-witnesses) to point at their preserved archive/* tags instead; no other content changed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Introduces an engine-agnostic conformance suite for HermitCrab-formalism morphological parsers: a `conformance/` tree of language grammars and edge-case micro-grammars, each an HC-XML grammar.xml paired with a words.yaml ground truth (oracle-provenance, gloss, and per-word parse signatures). A new SIL.Machine.Morphology.HermitCrab.Conformance project and hc-conformance CLI tool run those fixtures against an engine adapter, producing coverage and rules CSVs, an interface inventory, dataflow- obligation ledgers, evidence cards, a FieldWorks-producibility table, and a JSON manifest for external consumers. PROTOCOL.md is the adapter contract a second engine (e.g. the in-progress Rust port) implements to plug into the same suite. Includes the FieldWorks-producibility classification campaign: for every HermitCrab construct the suite covers, a verdict on whether FieldWorks' own HC-XML export path can actually produce a grammar exercising it, distinguishing genuine data-model limits from mere loader gaps, with five previously-unresolved verdicts now classified and corrected write-ups for two more cases initially misread as exporter silence. Also lands one new edge-case fixture, edge-cases/chained-output-feature-override-loss, isolating an analysis- side OutputHeadFeatures retraction bug: a well-formed four-morph parse of `zudiua` that the founding C# oracle currently loses. The fixture is deliberately red against hc.dll today (expected, not a broken test) and documents the mechanism, provenance, and the HC-Rust divergence that motivated it. The suite is deliberately stopped at this point rather than finished: scope, known gaps, and next steps are documented in the suite's own tracking docs rather than left implicit. This commit squashes the full conformance-suite branch stack (integrate-conformance-framework through conformance/fieldworks- witnesses, 49 commits) into one commit on top of current master, for PR #480. Folds in three review fixes: AdapterEngine's contract in MaterializedRunner now credits an expect_crash fixture only once the same engine also completes an ordinary fixture from the same run, so a misconfigured adapter (bad path, rejected arguments) can no longer register as reproducing the pinned crash; GuesserSignatureTests' batch-path test is renamed for the overload it actually calls; and .gitattributes freezes project.fwdata as binary so its pinned SHA-256 is reproducible across platforms and CI runners, not just this one. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Records a break-attempt run of PR #494 (AnalysisAffixProcessRule fix) against the conformance suite: 36/36 fixtures pass (including pathological cases), and a generated-word fuzz sweep (every root x every 0..3-subset of affix rules, up to 6 nonhead roots where the grammar compounds) produced ~1,300 words across 35 grammars, parsed by both master and the PR branch with 0 divergences attributable to PR #494. The one observed diff (edge-cases/truncate-morphotactic, words `a`/`ga`) is pre-existing oracle nondeterminism in analysis multiplicity ordering, reproducible on master alone, unrelated to the syntactic FS change. This was previously recorded only at tag archive/pr494-conformance; folding it into the conformance suite's own PR (#480) so the evidence travels with the suite it was run against. Fixed two references to branches deleted since the doc was written (perf/pr494-conformance, conformance/fieldworks-witnesses) to point at their preserved archive/* tags instead; no other content changed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2933fcc to
f412c25
Compare
Introduces an engine-agnostic conformance suite for HermitCrab-formalism morphological parsers: a `conformance/` tree of language grammars and edge-case micro-grammars, each an HC-XML grammar.xml paired with a words.yaml ground truth (oracle-provenance, gloss, and per-word parse signatures). A new SIL.Machine.Morphology.HermitCrab.Conformance project and hc-conformance CLI tool run those fixtures against an engine adapter, producing coverage and rules CSVs, an interface inventory, dataflow- obligation ledgers, evidence cards, a FieldWorks-producibility table, and a JSON manifest for external consumers. PROTOCOL.md is the adapter contract a second engine (e.g. the in-progress Rust port) implements to plug into the same suite. Includes the FieldWorks-producibility classification campaign: for every HermitCrab construct the suite covers, a verdict on whether FieldWorks' own HC-XML export path can actually produce a grammar exercising it, distinguishing genuine data-model limits from mere loader gaps, with five previously-unresolved verdicts now classified and corrected write-ups for two more cases initially misread as exporter silence. Also lands one new edge-case fixture, edge-cases/chained-output-feature-override-loss, isolating an analysis- side OutputHeadFeatures retraction bug: a well-formed four-morph parse of `zudiua` that the founding C# oracle currently loses. The fixture is deliberately red against hc.dll today (expected, not a broken test) and documents the mechanism, provenance, and the HC-Rust divergence that motivated it. The suite is deliberately stopped at this point rather than finished: scope, known gaps, and next steps are documented in the suite's own tracking docs rather than left implicit. This commit squashes the full conformance-suite branch stack (integrate-conformance-framework through conformance/fieldworks- witnesses, 49 commits) into one commit on top of current master, for PR #480. Folds in three review fixes: AdapterEngine's contract in MaterializedRunner now credits an expect_crash fixture only once the same engine also completes an ordinary fixture from the same run, so a misconfigured adapter (bad path, rejected arguments) can no longer register as reproducing the pinned crash; GuesserSignatureTests' batch-path test is renamed for the overload it actually calls; and .gitattributes freezes project.fwdata as binary so its pinned SHA-256 is reproducible across platforms and CI runners, not just this one. Also folds in the follow-up PR commits: fuzz/break-attempt evidence; admitting PCRE.NET's source generator via a vetted content-hash allowlist; final-template and template-sharing controls; oracle-verified fixtures for per-piece environments, simultaneous mode and iterative epenthesis; reduplication x phonology cases; and a regenerated manifest, ledgers and evidence cards. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
f412c25 to
d8ff628
Compare
…d clitic-flex-layout ka and kaz depend on no stratum name, and sagdis is fed by the epenthesis rule because Morphology is a blocking stratum, so the clitic tags were wrong. Coverage, corroboration and grammar-coverage ledgers, the manifest and the corroboration pins are regenerated. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…the whole-word check A reordered class such as |b[ae]t against |b[ea]t passed the signature check and then failed the per-parse rule-trace multiset. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ne gate inventory The inventory is also regenerated, which adds the flex-null-affix-environments fixture to the Environments and PartialParse rows it was missing from. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ADME Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ames no construct HCLoader cannot emit PROTOCOL section 10 makes a fieldworks/ witness optional, so none is required for the marking. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…-template-partial-discriminators FieldWorks-producible Slot rules lose the identity outputPartOfSpeech FieldWorks never writes, the stratum-level partial rules lose theirs, and the partial entries lose their part of speech; the oracle rows are unchanged. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ng isCliticRule and the Surface-stratum rule The rules that existed only to carry isCliticRule or to sit in Surface go, with the words that used them; every remaining expected row is unchanged. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…rence rules, keeping the AND-not-OR pin Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ial-adjacency-chain, as for the other converted fixtures Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…project can produce Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…fixture corpus left after the non-FieldWorks-producible fixtures were retired. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… elements of their .ldml files, cutting the conformance directory from 41 MB to 8.6 MB while opening and projecting to the same HermitCrab input. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ixtures carry only the writing-system elements of their .ldml files, like the other six. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…re corpus that includes the three enclitic ad hoc prohibition fixtures. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… compare witness lists by value and show both sides of every changed row. The record's own equality compared WitnessingFixtures by reference, so every row reported as changed (137 of 137 in the earlier run) whatever the ledger held. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…it test of the exit-code and stderr decision, replacing the dropped end-to-end test. The end-to-end overflow needs a grammar the loader cannot produce, so only the classification the sweep relies on is tested. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… different requiredMPRFeatures, because HCLoader gives each allomorph its own inflection classes. Only derivational, unclassified and clitic rules must keep one list across their subrules; the decision record and the producibility explainer say the same. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…nine deletion-carried trace surfaces that are gone, and the floor now equals the measured count. Trace-verified surfaces graded from words.yaml, measured at three trees: f0bcf29 72, 15ff041 (after the conversions) 70, dc16ba2 (after the 27 deletions and the rebase) 61. The floor was 68, so 4 below the 72 then achieved. Lost with the clitic conversions (72 to 70): MorphologicalRule/isCliticRule/true and /false. Lost with the 27 deletions (70 to 61), by fixture: feature-gating-breadth carried OutputFootFeatures, Properties, Property and RequiredFootFeatures; fusional-realizational-morphology carried RealizationalFeatures; realizational-reduplication-no-proposal-route carried RealizationalRule; suffixing-extension-slot-ordering carried MorphologicalOutput/redupMorphType/suffix; loader-isactive-breadth carried MorphologicalRule/isActive/yes and MorphologicalSubrule/isActive/yes. MetathesisRule, Segments and StructuralDescription moved to another fixture and stayed trace-verified. The conversions and deletions account for all 11 lost surfaces, so the floor is not restored. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…and no somewhere-versus-adjacent pin in the evidential chain, no blocking-stratum pin in the clitic layout pair, and the observed zudiua result in the chained-override fixture. suffixing-evidential-adjacency-chain: hand-derivation items 10-17 and the word notes no longer say "require"; measured on the engine, switching every somewhereTo*/adjacentTo* scope to the other leaves all rows unchanged, so the file says no word separates them and names the two words that would. clitic-flex-layout-blocking-morphology and non-clitic-after-final-template-layout: the grammar comments and inspired_by no longer claim a blocking or non-blocking stratum is pinned; adding a phonological rule to the second leaves every row unchanged. chained-output-feature-override-loss: states the observation (no parse of zudiua at 52d069f, a parse at 7109531) and that #504 cites 8bad193, which does not contain 7109531. No rule and no expected row changed; the manifest is regenerated for the changed comment and note text. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…rue: the dataflow ledger's MC/DC example and the metathesis switch-inversion verdict. The producibility ledger line is regenerated from the generator; nothing else in it changed. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…tures in a scratch root, now that no checked-in proof uses the kind. Four tests cover which fixtures declare an element, an unread element (Gloss) verifying, a signature-read element (MorphemeId) not verifying, and an undeclared element not verifying. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…e-run on the current grammar and still fails 4 of 6 words. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… 48 gate arms, 6 of 24 gates with both arms, and 5 defensible obligation cells of 17 worth covering. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
…ocks each expect_fail word through blocked_by, so 20 of their 25 dead-rule allowlist rows are gone and the 5 left say why no word reaches them. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Public API, target framework, package, or
Reviewed at 6b36f45 |
Start here:
conformance/docs/what-it-is.md, then.github/workflows/conformance.yml: what the suite claims and the gate that enforces it.Status: stacked on #500 — merge in order #556 → #500 → #480 → #578.
Status: CI is red at head
262ab300. Both Build jobs failConformanceFixtureGateTests.EveryConformanceFixturePassesSelfCheckon fouredge-cases/truncate-morphotactic*fixtures (word analyses differ from expectation), and both Conformance jobs fail, with the workflow reportingconformance/coverage.csvorrules.csvstale against the fixtures. The branch is behind master. Work is held until after the Hermit Crab Optimizations release; nothing stacks on this PR.A conformance suite of synthetic HermitCrab grammars, run in-process with HermitCrab as the oracle, with CI gates for parse results, coverage claims and generated ledgers. The latest revision adds named parser-settings variants: the runner builds a fresh morpher per run, applies the variant's settings, and compares complete parse-identity multisets and statuses against that run's own expectations. Variants earn no fixture or semantic-coverage credit.
Why is it so big? The change is about 940 files. Harness code and its tests are the reviewable part; the rest is fixtures, generated ledgers and evidence cards, and docs. Generated files are rewritten by
hc-conformance --write-*and pinned by tests, so check freshness, do not read line by line. No parser engine changed.Where to look:
.github/workflows/conformance.yml: the gate (self-check, coverage report, freshness of generated CSVs).conformance/dead-rules-allowed.tsv: a rule no word exercises fails the coverage report unless listed with a reason.conformance/PROTOCOL.mdandWordsYamlLoader.cs: the adapter contract; settings are closed, so an unsupported setting fails rather than being silently ignored. Pinned byWordsYamlMorpherSettingsTests.src/SIL.Machine.Morphology.HermitCrab.Conformance/Runner.cs: self-check.global.json: new; pins SDK 10.0.100 withlatestFeatureroll-forward for the whole repository.Deliberately not here:
MaxAlternatives(PanGloss lacks HC's typed overflow behaviour) andMergeMSAs(needs the FieldWorks project loader) are unsupported variant settings.MergeAnalysesverifies output preservation only, not merge-fold counts. Suite-side work for #534 (open) waits for its merge.Verification: the earlier numbers (
local_check.sh --agent-strict, C# and PanGloss variant matrices) were taken at184bcd46, not at the current head, and are not repeated here; the red jobs above are the current evidence. Broader Rust workspace and Foma suites were not run.Next: fix the four
truncate-morphotactic*fixtures and regenerate the CSVs, then rebase; or say if the red gate should block holding this branch.Reading this a year from now -- start here
The suite is an executable adequacy argument: synthetic grammars whose expected parse-identity multisets are checked against HermitCrab (self-check) and against a second engine (PanGloss) through an adapter protocol. The decisions below explain why the gates look the way they do.
Decisions and why
GuessRoots; supported:DelReapps,MaxRoots,MakePartialsFinal,MergeAnalyses,GuessRoots. The main risk is claiming support for a setting an adapter cannot apply or treating incomplete output as an empty result, so unsupported settings, missing rows and zero-comparison variants fail, and PanGloss also rejects capped or timed-out output.IIncrementalGenerator; the compilation-graph loader admits it only by content hash, and a probe runs it and fails closed on any generated output.expect_crashfixture passes only if the same engine completes an ordinary fixture in the same run, so a broken adapter command cannot pass as a crash (conformance/PROTOCOL.md)..fwdata. Marked binary in.gitattributesbecause its pinned hash depended oncore.autocrlf. Four fixture grammars keep trailing whitespace because their hashes are pinned in the manifest. Hand-maintained fixture totals were removed from docs; the manifest is the count.Trace.FailureAllomorphdropped. An engine API change does not belong in a test-suite PR; Trace HermitCrab failure reasons and template slot outcomes #534 adds the same fact through its own trace field.ci.ymlback to master. Its added fixture run duplicatedConformanceFixtureGateTestsunderdotnet test.Surprising findings
CounterfactualGate, with a regression test). Regenerating the ledger demoted two surfaces that had only that false evidence (Glossto Unobservable,HeadFeaturesto RequiredByDtd).local_check.shran--semantic-coverage, which exits 1 by design while the catalog is incomplete, so it could never pass; it now runs the same gates asconformance.yml.chained-output-feature-override-lossclaimed to fail on master on purpose; it has passed since Change Add to PriorityUnion #494 (merged).Deferred, and what would unblock it
#540, #522 and #519 are merged and #543 is closed; their suite-side work is already in this branch or no longer stacks here. #534 is open: once it merges,
FailureRuleAttributorshould credit through its new trace field and the FieldWorks-producibility ledger needs rows for its four new failure reasons. #543 would have added fixtures for the #504 and #507 evidence gaps; they are not in this branch. Unsupported variant settings (MaxAlternatives,MergeMSAs) need PanGloss overflow behaviour and a FieldWorks project loader respectively.Evidence and oracle observations
C# HC observations for the variants were collected on 2026-10-22 with the engine unchanged; the five measured fixture/settings pairs cover deletion reapplications (
DelReapps), compounding breadth (MaxRoots), final-template partial discriminators (MakePartialsFinal), the final-template merge key (MergeAnalyses) and guess-roots (GuessRoots). Exact witness outputs and reproduction commands are inconformance/docs/parser-settings-variants.md. The variant protocol forbids capped or timed-out output from matching an expected empty result; the PanGloss tests include that negative control. The companion PanGloss adapter was tested ate2627c9onfeat/conformance-settings-variants. Counts quoted in earlier revisions of this description (tests, runs, fixtures, words) were taken at an older head and are not carried forward.🤖 Generated with Claude Code
This change is