Phase 41 · planning only
Rules fidelity & full hand validation plan
Map what the Rules Engine can prove at the table versus what stays advisory or blocked until licensing — no new validation implementation in this phase.
Plan summary
Rules fidelity plan · table mechanics now, hand lines later
- 11 fidelity areas catalogued — 2 deterministic table-flow lanes, 3 scaffolds, 1 advisory BYOC lanes, 2 blocked until licensed.
- Three validation layers: Table mechanics validation; BYOC advisory validation; Licensed validation (future).
- Licensing-sensitive areas: licensed_card_validation, scoring, mahjong_declaration, byoc_hand_path.
- Phase 42 — Charleston flow scaffold: deterministic pass sequence and optional teaching mode — still no official card-line validation, still client-only.
Phase 42 — Charleston flow scaffold: deterministic pass sequence and optional teaching mode — still no official card-line validation, still client-only.
Fidelity matrix
| Area | Now | Source | Future source | Confidence |
|---|---|---|---|---|
| table_flow Table flow & turn phases | supported scaffold | engine | engine | deterministic |
| charleston Charleston passes | partial | engine | engine | future |
| draw_discard Draw & discard legality | supported scaffold | engine | engine | deterministic |
| claim_exposure Claim & exposure scaffold | supported scaffold | engine | engine | scaffold |
| joker_swap Joker swap scaffold | supported scaffold | engine | engine | scaffold |
| dead_hand Dead hand detection | not supported | not_supported | human_review | future |
| mahjong_declaration Mahjong declaration | supported scaffold | engine | licensed_future | scaffold |
| scoring Scoring & points | not supported | not_supported | licensed_future | blocked until licensed |
| byoc_hand_path BYOC hand path hints | supported scaffold | byoc_user_note | byoc_user_note | advisory |
| licensed_card_validation Licensed official line validation | blocked | not_supported | licensed_future | blocked until licensed |
| multiplayer_sync Multiplayer ledger sync | architecture only | ledger | ledger | future |
Licensing-sensitive areas
- licensed_card_validation
- scoring
- mahjong_declaration
- byoc_hand_path
- Never hardcode official NMJL hand lines, point tables, or typography in code or coaching copy.
- BYOC shorthand is advisory — source attribution must name user notes, not league authority.
- Scoring and licensed line matching stay `blocked_until_licensed` until contracts exist.
- Mahjong declarations in rehearsal are ledger events, not certified wins.
- OCR, card uploads, and LLM pattern inference are out of scope for MAHJ v1 planning.
Implementation warnings
- Label every validation output with confidence: deterministic · scaffold · advisory · blocked.
- Separate table mechanics checks from hand-line interpretation in UI and docs.
- Do not let coaching layers override blocked Rules Engine outcomes.
- Multiplayer must sync accepted ledger events only — not BYOC notebooks.