Skip to content

Should the differential compare initials(), which moved in #408 with every role field identical? #484

Description

@derek73

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:

Activity

  1. added this to the v2.3 milestone on Sep 1, 2026
  2. self-assigned this
    on Sep 1, 2026
  3. derek73 commented on Sep 2, 2026

    @derek73
    OwnerAuthor

    Closed by #494. Answers to the three questions in the issue:

    1. Does the pseudo-field join _RULE_FIELDS? Yes, as _initials, and it stands alone: it enters a name's diff only when the seven roles and _ambiguities agree on every compared surface (a role move drags its initials with it, so that movement is the role diff's consequence, not render drift). A rule listing _initials therefore lists nothing else; validate_rules refuses the mix. Strict subset semantics were measured and rejected: 53 / 43 / 36 existing rules at 1.4.0 / 2.0.0 / 2.1.0 would have needed _initials for no added discrimination. Full record in docs/design/decisions.md, "differential-ledger, the initials view".

    2. Do the initials() ignores the folded-word ordering that the family field applies (der, y van gives y. d. v. vs the facade's y. v. d.) #408-era movements need classification at 1.4.0 / 2.0.0? No. At 1.4.0 they ARE parity, and the one corpus name initials() ignores the folded-word ordering that the family field applies (der, y van gives y. d. v. vs the facade's y. v. d.) #408 moves at the default order, der, y van, diffs on roles under fix(#379) at all three baselines, so the pseudo-field never enters for it. What the column did surface and classify: the R2 all-particle readmission (27 names, three ledgers), Mc Donald and Ste Marie read the particle as the given name #360's los (1), the facade initialing each word of a joined run since 2.0.0 (98 names at 1.4.0, recorded late in the 2.3.0 log), and HumanName('Scott E. Werner').initials() drops the middle initial — the facade reads E as the conjunction #462 (14 names, fixed in the same PR).

    3. Is initials() a template for other derived views, family_base say? Not added. A second view is two rows per surface (worker template and tree side) plus its own roles-identical guard, and nothing needs it today; the entry above records the decision rather than the issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions