Add an interactive Basic-game introduction
New players can open Learn to play from the lobby or rules reference. Five lessons explain public/private information and turn phases, then offer three independent exercises for ordinary shipment budgets, a sealed battle plan and spice collection, followed by joining and recovering a real table. Shipping, combat and collection use existing production quotes rather than a separate simplified calculator. The fixed opposing plan is a teaching example, not an AI match. Reuse the battle wheel and card inspectors, provide keyboard inputs, move focus to the current lesson heading and stack the layout on phones. Versioned browser-local choices preserve lesson position, shipment, defense/dial and reveal state. Whitelisted validation rejects corrupt saves and impossible committed shipments. SSR uses a stable hydration placeholder before reading browser storage; direct user handlers save choices and retain usable in-memory state on storage failure. No room, seat credential or multiplayer API is used. Six new tests cover prices and affordability, every offered battle dial/defense, protected ties, weapon death, actual losses/bounty, collection limits and city capacity, saved-choice validation and internal rule links. Types, lint, 4872 offline tests and production build pass on the unchanged source fingerprint below. The first required check stopped on React setState-in-effect and semantic-status lint findings; these were fixed before the successful complete run. Independent review found no material defect in the examples or final hydration/save implementation. Browser controls verified an unaffordable shipment, legal six-force shipment, card inspection, protected 8-8 aggressor victory, Snooper/projectile death and bounty, sealed refresh, city collection, lobby return/re-entry and newly changed choices after the hydration correction. At 390px the battle controls and lobby Learn link stayed within page bounds; the viewport override was reset. Screenshot capture timed out, so visual screenshot acceptance is still open. Storage-denial browser testing and the broader faction, movement, bidding, alliance, Advanced and expansion curriculum remain unfinished. All 1106 current rooms, 2314 seats and all original recovery/entry/handover rows exactly match the fresh outage backup. SQLite integrity and foreign-key checks pass. The healthy server was reused; no restart, database migration/reset or maintenance automation was needed. HTTP integration and full-game samples were not rerun for this isolated teaching surface; server game behavior did not change. A bounded independent primary-source review supports Smuggler's reveal-bound deferred survival receipt but found no exact ruling for modified leader strength. Record the one new user question and preserve the unanswered gate; lower collection remains missing. This does not enable any rules mode, expansion or publication gate. Verified source tree: 99718ab49c4fec14820cbaf35f2e0f815e6424e910ee67c4daa1941afdeca2f0
This commit is contained in:
1 parent
9b67a780eb
commit
9be7dfb9fb
14 files changed
+472
-6
No files matched your search
+18
-6
@@ -6,13 +6,20 @@ gated.** Prototypes do not open completion or publication gates.
|
||||
|
||||
## Current checkpoint and work
|
||||
|
||||
Latest delivered checkpoint: `bfa24b0`, [optional table sounds](TABLE_SOUNDS.md).
|
||||
Types, lint, **4,856 offline tests** and production build passed. Browser controls
|
||||
verified mute, keyboard volume, refresh and cross-tab preferences; physical audio
|
||||
and screenshot acceptance remain open. All 1,072 games and original seat/recovery
|
||||
records were preserved, and the server remained healthy after the outage.
|
||||
Latest delivered checkpoint: `9b67a78`, [early Sapho aggressor](SAPHO_AGGRESSOR.md).
|
||||
Types, lint, **4,866 offline tests**, production build and **43 HTTP tests** passed.
|
||||
Two genuine CHOAM/Richese samples completed; focused and browser evidence exercised
|
||||
the new priority effect. After the next outage all 1,106 rooms were present, the
|
||||
original baseline rows and latest QA save were unchanged, and a private seat
|
||||
restored after browser refresh. The healthy server was reused without a reset.
|
||||
Earlier evidence remains in the [implementation history](IMPLEMENTATION_STATUS.md).
|
||||
|
||||
Current work: the [interactive introduction](INTERACTIVE_INTRODUCTION.md) adds
|
||||
five lessons with shared-rule shipping, sealed battle and collection exercises,
|
||||
card inspection and browser-local continuation. Broader faction/expansion
|
||||
teaching remains unfinished. Final verification and delivery belong to the
|
||||
source-bound report and Git message.
|
||||
|
||||
The connected [Harass & Withdraw prototype](HARASS_WITHDRAW_RUNTIME.md) supports either
|
||||
battle-card slot, private category inspections, exact undialed normal/elite
|
||||
returns, opponent-Traitor cancellation, mandatory disposal, controls and all
|
||||
@@ -23,7 +30,7 @@ card-specific discard precedence are explicitly labeled inferences. The Stone
|
||||
Burner timing question is pending; no user answer is assumed. Reinforcements
|
||||
remains unfinished. This does not open variant, mode or publication gates.
|
||||
|
||||
Current checkpoint: [early Sapho aggressor](SAPHO_AGGRESSOR.md) connects the
|
||||
The preceding [early Sapho aggressor](SAPHO_AGGRESSOR.md) connects the
|
||||
printed battle-priority effect during the existing shared pre-plan opportunity.
|
||||
Physical attacker/defender/chooser stay stable; Habbanya takes precedence in either
|
||||
slot. Shared priority feeds Stone admission, ordinary/Stone resolution, public
|
||||
@@ -38,6 +45,11 @@ cannot safely depend on hidden custody or alter the printed deck. Mirror remains
|
||||
gated pending the existing disposal ruling and copied-choice work. Continue with
|
||||
independent missing faction/card functions, then integrated play and refinement.
|
||||
|
||||
The Smuggler follow-up review supports a saved reveal-time receipt with settlement
|
||||
only on leader survival, but located no official ruling on modified leader
|
||||
strength. The user has been asked about Kwisatz/trainer/Stunner composition; no
|
||||
answer is assumed. See the [source follow-up](LEADER_SKILLS_RULES.md#20-september-smuggler-follow-up).
|
||||
|
||||
## Authoritative navigation
|
||||
|
||||
- [Rules checklist](../game/reference.ts), topic `implementation-checklist` and
|
||||
|
||||
@@ -1,5 +1,20 @@
|
||||
# Dune implementation status
|
||||
|
||||
## 20 September 2026 — Interactive introduction prototype
|
||||
|
||||
[Five guided lessons](INTERACTIVE_INTRODUCTION.md) connect shipping budgets,
|
||||
sealed battle plans and spice collection to shared production rule quotes, with
|
||||
keyboard controls, card inspection and browser-local saved progress. The fixed
|
||||
opponent is a teaching example, not an AI match. The wider faction, movement,
|
||||
bidding, Advanced and expansion curriculum remains unfinished. Focused checks
|
||||
cover combat outcomes and saved-choice validation; final browser/check/build,
|
||||
preservation and Git evidence belong to the private source-bound report and
|
||||
commit message. No mode or publication gate is opened.
|
||||
|
||||
Independent Smuggler review supports the deferred survival receipt but found no
|
||||
official modifier-strength ruling. That single new question remains explicit in
|
||||
the decision register; no pending answer was inferred to enable collection.
|
||||
|
||||
## 20 September 2026 — Sapho early battle aggressor
|
||||
|
||||
[Early aggressor](SAPHO_AGGRESSOR.md) connects the held physical card, existing
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
# Interactive introduction
|
||||
|
||||
20 September 2026. **Prototyped; partial teaching coverage.** `/learn` is linked
|
||||
from the lobby and rules reference. It adds the previously missing guided
|
||||
introduction alongside the reference's existing standalone practice wheel.
|
||||
|
||||
Five navigable lessons cover public/private table information and the phase
|
||||
sequence, shipment budgets, sealed battle plans, spice collection and joining or
|
||||
recovering a saved table. Three independent Basic practice positions let a player
|
||||
change inputs, commit, inspect results and retry. These positions are deliberately
|
||||
separate examples rather than a complete game or an authoritative live room.
|
||||
|
||||
The examples call `reserveShipmentCost`, `quoteBattleResolution` and
|
||||
`quoteSpiceCollection`. Battle uses six ordinary forces, real Atreides/Guild
|
||||
leaders and canonical base-deck cards. The fixed opponent's dial, leader and
|
||||
projectile weapon appear only after the player's seal action. The resulting
|
||||
weapon survival, scores, ordinary aggressor tie, force losses and bounty come
|
||||
from the production combat quote. There are no Traitor calls or faction powers
|
||||
in this teaching position. It is not an AI policy or hidden-information test of
|
||||
the four live difficulty levels.
|
||||
|
||||
The existing wheel, keyboard controls and card inspectors remain available.
|
||||
Lesson changes focus the heading; responsive columns stack on small screens.
|
||||
Browser storage contains only a versioned, validated set of lesson choices under
|
||||
`dune-introduction-v1`. It includes the sealed/revealed state. Unknown versions,
|
||||
out-of-range values and impossible saved shipments fall back to the first lesson.
|
||||
Unknown fields are dropped. Storage failure leaves the exercise usable in memory
|
||||
and displays that refresh may reset it. Separate tabs may save different progress;
|
||||
the last write is restored on the next visit. No multiplayer API or seat token is
|
||||
used, and no server restart or database migration is required.
|
||||
|
||||
`tests/introduction.test.ts` checks unaffordable shipping, protected ties, wrong
|
||||
defense and leader death, every offered dial/defense pair, collection capacity,
|
||||
save round trips and malformed state. Browser interaction checks confirmed the
|
||||
unaffordable-shipment explanation, a legal shipment, card inspection, a protected
|
||||
8–8 tie, the wrong defense causing leader death, saved reveal after refresh,
|
||||
city collection and lobby return/re-entry. At a 390px viewport the battle controls
|
||||
and new lobby link stayed within the page bounds. Screenshot capture timed out,
|
||||
so visual screenshot acceptance remains open; DOM bounds are narrower evidence.
|
||||
Final source-bound reports and Git delivery record required check/build results.
|
||||
|
||||
This does not replace a full interactive curriculum. Movement paths, bidding,
|
||||
Traitor calls, alliances, faction lessons, Advanced support and expansion lessons
|
||||
remain future work. No rules mode, expansion or publication gate is opened.
|
||||
@@ -184,6 +184,29 @@ designer expressly presents the latter as useful to Fremen, but does not
|
||||
publish a general stacking order for every expansion movement modifier
|
||||
([designer example, 19:13](https://www.youtube.com/watch?v=XT_azRVLq_0&t=1153s)).
|
||||
|
||||
## 20 September Smuggler follow-up
|
||||
|
||||
A bounded renewed check of the GF9 CHOAM & Richese rules/Q&A, the
|
||||
[core FAQ](https://www.gf9games.com/dune/wp-content/uploads/2020/11/Dune-FAQ-Nov-2020.pdf),
|
||||
Future Pastimes expansion page and Jack Reda walkthrough found no ruling defining
|
||||
Smuggler's leader strength with Kwisatz, another face-up trainer or Stunner. The
|
||||
walkthrough at 12:19–12:46 repeats reveal timing and survival with an unmodified
|
||||
strength-five example. It does not settle those modifiers. A user question now
|
||||
asks whether to keep those combinations gated, use printed/copied disc value,
|
||||
or include leader bonuses with a stunned leader counted as zero. No answer is
|
||||
assumed; this is not a publisher ruling.
|
||||
|
||||
The prior pending-receipt contract remains viable: bind the original battle,
|
||||
controller, leader and spice pile at reveal, then transfer only after survival is
|
||||
known. The printed card has no victory requirement; the designer's winning
|
||||
example does not add one. A captive's lower effect belongs to its controller.
|
||||
Resolving this reveal-time collection logically before Sandmaster's after-win
|
||||
addition is an explicit timing inference. A drained pile leaves no existing spice
|
||||
for Sandmaster to augment. Multiple-pile allocation remains unresolved. Pending
|
||||
spice is not spendable personal custody; this provisional timing must remain
|
||||
explicit when the collection function is connected. Runtime collection is still
|
||||
missing; the independent introduction proceeded while the modifier answer waits.
|
||||
|
||||
## Implementation readiness contract
|
||||
|
||||
A bounded prototype can now use the exact fourteen-card inventory, modified
|
||||
|
||||
@@ -57,6 +57,7 @@ These are unresolved in the cited records. Do not infer an answer from elapsed t
|
||||
| Mirror Weapon | Whether copied Tooth/Artillery mandatory-discard rules attach to the physical Mirror remains unanswered. Every genuine Richese setup includes those cards and Stone Burner; an ordinary-copy-only admission gate cannot depend on concealed custody or alter the printed deck. | [Engine audit](MIRROR_WEAPON_ENGINE_AUDIT.md) |
|
||||
| Semuta Drug | Full-hand take-before-discard and the privacy-neutral immediate reaction protocol remain unresolved. Typed discard continuations already exist; they are not activation. | [Source update](SEMUTA_SOURCE_UPDATE_20260907.md), [privacy review](SEMUTA_PRIVACY_REVIEW.md) |
|
||||
| Leader Skills edge cases | Capture/replacement eligibility, Banker escrow custody (user question sent), Smuggler survival settlement, Mentat empty-hand fallback (private historical observations persist after death), Diplomat lower retreat ordering, modified-defense inheritance and remaining simultaneous optional timing need resolution before those cases are enabled. These are recorded source gaps, not answered user rulings. | [Material boundaries](LEADER_SKILLS_RULES.md#material-boundaries-not-settled-by-the-sources), [Diplomat boundary](DIPLOMAT_DEFENSE.md#evidence-and-remaining-scope) |
|
||||
| Smuggler collection strength | A fresh primary-source check found no modifier ruling. The user was asked whether to keep affected combinations gated, use printed/copied disc value, or include leader bonuses with Stunner zero. No answer is assumed. The reveal-bound deferred receipt is supported as an explicit timing inference; lower collection remains unimplemented. | [Smuggler follow-up](LEADER_SKILLS_RULES.md#20-september-smuggler-follow-up) |
|
||||
| Suk Graduate / Atreides | Whether rescued dialed casualties count toward the seven-loss Kwisatz Haderach threshold remains unresolved. The user question has been sent; Advanced Atreides rescue stays guarded. | [Source and runtime boundary](SUK_GRADUATE_RULES.md) |
|
||||
| Ordinary Guild cancellation | Unaffordable repricing, replacement/retry/decline, consumed opportunity, contributor adjustment and ordering with special shipment-stop. The affordability question was already sent. | [Material timing](GUILD_RATE_KARAMA_RULES.md#material-unresolved-timing) |
|
||||
| Base special Karama | Unfunded auction recovery, stopped-shipment settlement and Atreides full-plan commitment order remain provisional. Native full-plan/Voice/Prescience/Truthtrance/Ghola interactions now have genuine-setup focused evidence, but the source audit does not settle the special offer/deadline or target-first interpretation. | [Explicit base interpretations](BASE_ADVANCED_READINESS_20260907.md#explicit-unresolved-base-interpretations), [full-plan interaction audit](ATREIDES_FULL_PLAN_TIMING.md) |
|
||||
|
||||
Reference in new issue
Block a user