HermitCrab: complete cross-engine correctness controls for final-template pruning
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 29
- Forks
- 17
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 8
Description
Final-template pruning must skip only analysis paths that cannot lead to a valid parse. This issue tracks the controls needed to demonstrate that guarantee across Machine and PanGloss.
Who is affected: users with final/non-final templates, partial words or rules, and maintainers reviewing #491 or porting its optimization.
This is a coverage gap, not a newly established Machine regression. The ten-word final-template-partial-discriminators fixture is now on Machine's conformance branch, but its passing results do not demonstrate that analysis pruning executes.
Done when: exact positive/negative identities and multiplicities survive optimized/unoptimized runs; discriminators reach the pruning branch; and claimed fixes fail when removed. Cover actual invocation role for rules shared between a stratum and a template, partial roots, lower-stratum continuations, and memoization on/off. Keep safe defaults separate from forced experimental overrides.
Published controls and remaining evidence
Commit a20bce12, through #480, adds conformance/edge-cases/final-template-partial-discriminators. Its rationale is in conformance/docs/final-template-partial-discriminators.md.
The recorded check passes all ten rows with memoization on/off. Mutating the partial-rule flag, partial-word producer, and non-final-template flag produces the predicted 2/10, 1/10, and 2/10 disagreements.
These establish synthesis/grammar sensitivity, not prune hits or fix-removed engine evidence. A zero prune count is not optimization coverage. Finite agreement does not prove universal soundness or completeness.
Related: #491 and #456. No parser code changed in this fixture update. Sparse forests and memory containment are outside scope.
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 with conformance/edge-cases/final-template-partial-discriminators and conformance/docs/final-template-partial-discriminators.md, then compare the Machine and PanGloss paths related to #491 and #456. Determine how to observe pruning-branch hits and fix-removed evidence while covering invocation roles, partial roots, lower-stratum continuations, and memoization settings. Done means the stated identities and multiplicities hold with safe defaults separated from forced overrides.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- compilers, testing-qa
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100