Skip to content

HermitCrab analysis: ordered and anchored required-slot look-ahead (v2) #567

Open

Description

@johnml1135

Required-slot look-ahead (#561) tests presence only, so it is weak for one-segment affixes (Mbugwe -a, tense a-3; Sena R[a]), where the single segment is present somewhere in almost any word. The trigger is a template whose required slots carry one-segment markers. The cost is that part of the 63.8% (Mbugwe) and 22.1% (Sena) no-lookup ceiling stays unreached.

Depends on #561. Build only if the #561 shadow phase shows that v1 leaves more than 10 points of the no-lookup ceiling unreached on Mbugwe or Sena. If #561 is closed by its kill criterion, close this too.

Problem (census, steps)

Ceiling (no-lookup template partials): Mbugwe 63.8%, Sena 22.1%, Aweti 11.7%. #561's estimates (Mbugwe 15-35%, Sena 3-10%, est.) are well under the ceiling; this issue targets the difference. The figure that decides it is the #561 shadow measurement, which does not exist yet. Expected value is unknown.

Proposed change

Strengthen the presence test: (1) required literals of different slots must occur in slot order in the shape; (2) a slot whose allomorphs are all pure prefixes (or all suffixes) must find its literal at a position that the remaining outer slots of the same side could expose. Needs an extra "order-preserving" flag per rule, defined as contiguous-removing (the same definition as in #562).

Soundness

Holds when every rule between the slots is order-preserving: unapplication then only removes material and keeps the order and adjacency of remaining nodes, so an order or edge condition that fails now fails after any later unapplication. Rules not flagged order-preserving skip the stronger test and fall back to #561's presence test. To be re-argued in the XML doc and checked in shadow (zero violations).

Memory bound

One extra bool per rule and per-slot edge sets: grammar-sized, bytes to KB. No cache.

Measurement plan

Shadow first with the #561 harness (fired, violated, completed-under-fired), arms v1 and v2, same grammars and sampling. Stress fixture: the #561 fixture with one-segment markers. Report events saved beyond v1, per grammar, and unification counts beside them.

Kill criterion

Any shadow violation: stop. Close if v2 adds under 3 points of analysis events over v1 on Mbugwe and Sena, or if its check work exceeds 3x the extra events saved.

Related

🤖 Generated with Claude Code

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    • Status
      🆕 New

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions