sillsdev / sillsdev/machine

HermitCrab: establish discriminating conformance coverage for analysis-state and template/slot merges

Open
#505 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C#
Stars
29
Forks
17
Avg merge
3d 2h
Merged PRs (30d)
8

Description

Combining parser states must neither lose valid analyses nor create impossible combinations. This issue tracks the missing evidence for deciding when those states can safely share results.

Who is affected: Machine and PanGloss maintainers changing analysis-state merging, and users whose grammars have competing templates or feature constraints.

This is a research/coverage issue, not a claim that Machine still has the bug fixed by #493. PanGloss's narrow gate-only alignment is now implemented; broader merge and feature-correlation questions remain open.

Done when: a minimal, independently justified grammar reaches a same-key collision, distinguishes downstream continuations, and fails when the claimed fix is removed. Check stratum, template-battery, and slot merging separately, including reversed order and memoization on/off. Preserve full identities, multiplicities, and feature correlations—not just counts.


Implemented slice, evidence, and unresolved scope

#493 removed template-required-feature accumulation. PanGloss's alignment now uses those features only as an admission gate; widening and merge keys are unchanged. Two direct state assertions fail before the fix and pass afterward.

Machine fixture shared-template-unconstrained-suffix at f150e2a0 passes 40 C# comparisons: ten rows, both template orders, memoization on/off, no skips. Full-parse checks also pass PanGloss before the fix: preservation evidence, not a parse-level regression witness.

The template-category-sharing controls establish exclusivity and homophonous-root identity, not same-key collisions. Existing widening tests also pass with widening disabled.

Reconcile the remaining evidence with #494/Exact. Removing unnecessary Rust widening remains a possible outcome; adding it to Machine is not presumed correct. Sparse forests and memory work are outside scope.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the Machine fixture shared-template-unconstrained-suffix at commit f150e2a0 and the two direct state assertions described in the issue. Exercise stratum, template-battery, and slot merging with both template orders and memoization on and off; done means a minimal grammar distinguishes downstream continuations while preserving identities, multiplicities, and feature correlations.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
compilers, testing-qa
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.