sillsdev / sillsdev/machine

HermitCrab: complete cross-engine correctness controls for final-template pruning

Open
#507 1 comment 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

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

  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 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.