The gate compares the seven role fields plus _ambiguities. Initials are a derived render view, so #408's reordering (M. H. A. A. → M. A. A. H. on folded-middle names) was invisible to it by construction — tests/v2/cases.py's header records that the table has no initials column and the pin lives in rules.md#R3 + test_render.py.
Both surfaces expose initials(); comparing it as a pseudo-field (the _ambiguities precedent) would catch render-layer drift on real names at the baseline boundary.
Open questions:
The gate compares the seven role fields plus
_ambiguities. Initials are a derived render view, so #408's reordering (M. H. A. A.→M. A. A. H.on folded-middle names) was invisible to it by construction —tests/v2/cases.py's header records that the table has no initials column and the pin lives in rules.md#R3 + test_render.py.Both surfaces expose
initials(); comparing it as a pseudo-field (the_ambiguitiesprecedent) would catch render-layer drift on real names at the baseline boundary.Open questions:
_RULE_FIELDSso ledger rules can classify initials-only diffs?initials()ignores the folded-word ordering that thefamilyfield applies (der, y vangivesy. d. v.vs the facade'sy. v. d.) #408-era movements need classification at the 1.4.0/2.0.0 baselines when the field lands?initials()the only derived view worth this, or a template for others (family_base?)