Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

HermitCrab analysis: measure required-slot look-ahead on the #546 shared walk

Aperta
#566 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@johnml1135 ci sta già lavorando.

Dal 28/10/2026.

  • #577 di @johnml1135 — aperta

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
20/100
Tipo di issue
Funzionalità
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
csharp

Direzione di ricerca

Start with #561 and PR #546, then inspect AnalysisAffixTemplatesRule.Walk and .Apply and the census harness modes. Add the four measurement arms described in the issue, including the stress fixture and six-template variant, and report deterministic slot events plus the residual. Confirm the conformance verdicts remain identical to PR #480; work is blocked on #561 and PR #546.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

enhancement Hermit Crab

PR #546 shares trailing slot batches across templates but only in untraced sequential walks, and it is unknown how much of its saving survives once required-slot look-ahead (#561) removes templates early. The trigger is any grammar with several templates sharing trailing slots and required markers (Mbugwe, Sena, Aweti). The cost of not measuring is landing two changes that overlap, or leaving shared-slot work uncounted.

Depends on #561 (required-slot look-ahead) and on PR #546. Nothing here can start until #561 reports a sound shadow result and #546 is merged or its branch is usable as a base.

Problem (census, steps)

Census: 92.8-96.9% of template-slot events on Aweti, Mbugwe and Sena are in rules shared by two or more templates. #546 removes the trailing-aligned part (C# batch counts: Mbugwe sample -19.3%, Sena sample -31.4%, from #546's own measurement). #546 is inert under tracing (AnalysisAffixTemplatesRule.Apply falls back to base.Apply when IsTracing), so it does nothing for Try-a-Word-style traced parses and the traced census does not see it.

Proposed change

Not a new prune: a measurement, plus a small hook if it pays. On the #546 walk (AnalysisAffixTemplatesRule.Walk), apply the look-ahead of #561 per trie node: skip a child when no template still admitted under it passes the look-ahead for its remaining required slots. Report the shared-slot work that #546 plus #561 leave (the residual).

Soundness

As #561, per template. The trie only reorders shared work; the remaining-slot set of a template at a trie node is its slots from that depth down to 0.

Memory bound

As #561 (grammar-sized, under 100 KB). Any further sharing of non-trailing slots needs a key on the shape, which is a memo and is closed by ledger row 29 and the owner rule, so the residual is reported as a ceiling only and not proposed.

Measurement plan

Needs one harness mode that sets IsTracing false only for the frame of AnalysisAffixTemplatesRule.Apply (the trick the census uses for merging), so the trie walk runs while slot-rule events are still counted. Four arms in census and censusmerge modes, same binary set: master; master + #561; master + #546; master + #546 + #561. Same grammars and sampling as #561, plus its stress fixture and a variant where 6 templates share their trailing 3 slots. Report slot events per arm and the residual after #546 + #561.

Kill criterion

If #561 saves under 3% of slot events on the #546 walk for every grammar where it saved over 5% on master, the two overlap and only one should land; report which. Expected value is uncertain until #561 reports.

Related

  • #561, PR #546 (hard dependencies), PR #534 (trace nodes; relevant only because #546 is untraced-only).
  • PR #490: research record. PR #480: conformance suite; verdicts must be identical.
  • Units: deterministic steps, never ms. Owner constraint: no memo or cache.

🤖 Generated with Claude Code

Lingua principale
C#
Stelle
29
Fork
16
Merge medio
6g 13h
PR unite (30g)
12

Preparare l'ambiente

  • Nessun Dockerfile né file Docker Compose
  • Ha un modello di pull request
  • Nessuna guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di sillsdev/machine

Tutte le issue di sillsdev/machine

Issue simili

Altre issue su C#

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.