HermitCrab: investigate unstable zero-width morpheme identities across fresh processes
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 29
- Forks
- 17
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 8
Description
Identical inputs have been reported to produce different morpheme identities across fresh C# processes. Until the cause is isolated, those outputs cannot reliably establish parser parity.
Who is affected: HermitCrab consumers of morpheme identities and PanGloss maintainers recording fixtures or comparing against Machine. This is not a demonstrated Rust bug.
Keep this investigation separate from #500's dropped-identity fix. The reported association with tied-node ordering is a hypothesis, not an established root cause; choosing a random seed is not a correctness fix.
Done when: pinned before/after runs reproduce the instability, a small deterministic test isolates the mechanism, and independently justified identity multisets remain correct across every exercised ordering. Add a conformance fixture without freezing an arbitrary incorrect output.
Reproduction and evidence limits
PR #500 uses root sag, A2B (N→V, adds u), B2A (V→N, adds i), and THIRD (N→V, copies input without adding segments).
Expected sagui analyses retain A2B and B2A, with and without THIRD. The reported incorrect signature drops B2A from the THIRD analysis.
The PR reports three outputs over 20 unseeded runs and 12/12 identical correct outputs after fixing the BidirList seed. These observations motivate investigation; this issue's filing did not independently repeat them.
Record exact signatures and revisions, including #500 before/after. Test annotation/tie ordering directly rather than treating repeatability under one seed as proof. PanGloss is affected through its oracle dependency even if it does not use BidirList.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by recording pinned before/after runs for PR #500, including exact signatures and revisions. Then test annotation and tied-node ordering directly, using BidirList only as an observation rather than assuming it is causal. Done means a deterministic test isolates the mechanism, identity multisets remain correct across exercised orderings, and a conformance fixture avoids freezing an unjustified output.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- backend, testing-qa
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100