Skip to content

HermitCrab conformance: 26 fixtures flagged fieldworks_producible still use a slot-rule outputPartOfSpeech FieldWorks never writes #612

Closed as not planned

Description

@johnml1135

18 of 127 conformance fixtures and 8 of 16 stress fixtures are flagged fieldworks_producible: true but give a slot rule an outputPartOfSpeech, which FieldWorks never writes. The flag overclaims. A reader cannot yet trust it to mean that a real project can produce the grammar.

Status: open. The first retirement pass only acted on fixtures flagged false; it is on #480, and the stress half is on #578.

What we know, at e9569ec:

  • Identity outputPartOfSpeech on a slot rule: 18 conformance fixtures. Dropping it changed no parse in the fixtures already converted.
  • edge-cases/morphotactic-attribute-breadth also has a partial="true" entry with a part of speech, a partial rule in a slot, and a partial rule with outputPartOfSpeech.
  • 52 conformance fixtures have a linear stratum: 5 explicit and 47 by the DTD default of linear.
  • HCLoader builds its Morphology and Clitics strata as Unordered. Surface sets no order, so a linear Surface stratum with no rules may be legitimate.

Not known: how many of the 52 have morphological rules in a linear stratum, and whether flipping them to unordered changes any parse.

Proposed change: a one-line drop in each slot-rule fixture, one rebuild of morphotactic-attribute-breadth, and a per-stratum count for linear, then convert or delete. Expected parses come from the engine. A check that fails on these patterns when a fixture is flagged true would stop them coming back.

Related: #480 (open), #578 (open), #552 (open).

Next: count the linear strata that hold morphological rules, then convert the fixtures.


Counting method

Parsed every grammar.xml at e9569ec: a fixture counts when a rule named in a Slot morphologicalRules attribute has outputPartOfSpeech, and a linear count when any Stratum has morphologicalRuleOrder="linear" or omits the attribute. HermitCrabInput.dtd:244 sets the default. XmlLanguageWriter.cs:586 writes the attribute only for unordered. MPR feature groups were reviewed and match the groups HCLoader hardcodes, so they are not in this list.

🤖 Generated with Claude Code

Activity

  1. johnml1135 commented on Nov 2, 2026

    @johnml1135
    CollaboratorAuthor

    The grammars this issue asked to fix now live in sillsdev/fieldworks-parser-conformance, and the problem it described no longer exists there. No grammar in the suite gives a slot rule an outputPartOfSpeech, and no stratum that lists a rule or holds a template is linear.

    What remains of the idea, that the fieldworks_producible flag only rules grammars out and cannot show that FieldWorks writes them, is tracked in the suite as sillsdev/fieldworks-parser-conformance#1 (generate witnesses and certify by round trip), #2 (tie each witness to its grammar), #3 (the round-trip rule and the unmeasured assumptions) and #11 (the shape guard cannot tell a plain affix process from a lone affix form).

    The guard test itself, FieldWorksProducibleShapeTests, stays in machine and is in #615. Nothing in this issue is left open that those issues do not cover.

  2. moved this from 🆕 New to ✅ Done in Servalon Nov 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    • Status
      ✅ Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions