Present public plans in physical attacker/defender order with exact force dials, played leader portraits and printed strength, readable used-card faces and direct inspectors. Keep Cheap Heroes, printed Worthless category, empty slots and late rescue defense distinct. Preserve Banker, native bonus, KH, Stone Burner, Poison Tooth and Diplomat details rather than treating printed values as scores. Mount one shared display after the main grid so every viewer retains access while another seat owns a post-reveal choice. Keyboard links focus the display and pending controls. Render nothing before public revelation, select exact used identities from the authorized projection, and consume no private insight or hands. No game rule, saved field, endpoint, AI strategy or release gate changes. Five new cases cover genuine sealed/revealed actions, stable order, used-card privacy, JSON immutability, fractional dials, hero/Worthless/late/empty slots and both seats during a real Diplomat decision. All28 related focused cases passed before final rule-link adapter changes; types, lint, all 5017 offline tests and production build pass on the final stable source. First broad run caught plain rules-page anchors; next/link and test aliases correct this. Independent privacy/layout review and final follow-up found no material issues. No API/auth/persistence changes; HTTP tests and full game samples not repeated. Browser QA creates a fresh human Emperor/Easy Harkonnen lobby with genuine setup, then explicitly stages a conserved battle. Normal engine actions choose battle and seal the opponent plan; human browser action seals dial2, Captain Aramsham, Slip Tip and Shield. Public display absent beforehand and shows correct both plans afterward. Leader/opponent-card inspection, Escape/focus return, internal help, keyboard section links and refresh preserve the pending decision. At390x844, client/scrollWidth375, stacked panels299px, rules16px and controls44px; normal viewport restores1265px and two560.5px plans without horizontal overflow. Screenshot capture timed out; full visual/screen-reader acceptance remains open. All 1579 opening games, 3347 saved seats and auxiliary rows remain identical. One isolated QA game adds one seat and one entry receipt. Its room remains unchanged after human seal through inspection/help/refresh, and its saved seat remains unchanged. SQLite integrity and foreign keys pass. No server restart, migration, reset, recurring automation or calibration. Record Basic Moritani plus the full Leader Skills deck as the next concrete integration target, requiring coordinated profile guards and real Terror/death/ revival continuations. Existing rulings and mode gates stay explicit; the later Tleilaxu revival-offer ordering issue remains a gated integration dependency. Private evidence: 20260921-revealed-plans. Verified source tree: 8d5496cdea0076aa1cdab4590e95fcaa677c9d2d8513190c2ce9ac6c90bb9196
83 KiB
Component inventory and verification ledger
Revealed battle components, 21 September 2026: public plans now display physical dials, leader portraits/printed strength and readable used-card faces, with direct inspectors and separate late-defense slots. One shared table area remains visible across decision ownership; sealed and unplayed identities remain private. See scope and evidence.
Ecaz Loyalty, 21 September 2026: one existing native Traitor Card now has a separate face-up public location in new Advanced Ecaz setup. Its canonical identity and portrait use the enlarged Traitor inspector; it is excluded from all subsequent draw inventories without changing the corresponding leader disc. Old dealt games remain unchanged. See source and evidence.
Faction sheets, 21 September 2026: every table player has an enlarged public faction guide, with Basic/Advanced preview and an internal twelve-faction gallery. Shared text and bundled Homeworld artwork preserve public identity; no private player data enters inspection. Richese guidance and stale Ecaz/CHOAM summaries are updated from existing contracts. Full printed text and combined rules remain unfinished. See faction sheets.
Hand browsing, 21 September 2026: owned cards now have name search, printed category filters and display sorting, with physical IDs, complete existing card controls and inspectors retained. Empty results have a clear reset, and current cards update the visible results. This is a connected browsing prototype, not full card-effect or visual certification. See scope and evidence.
Draw-pile counts, 21 September 2026: the table now displays authoritative Treachery and Spice draw counts above the board, separate from auctions, hands, caches and discards. Existing Nexus counts and authorized card inspectors remain in place. No private card faces or order are exposed. This closes the ordinary draw-count gap; broader card handling and visual acceptance remain open. See scope and evidence.
Force counter inspection, 21 September 2026: each public player summary now opens enlarged faction diagrams and a physical location inventory. All twelve sets have reference faces; special counters, advisor stances, native Homeworld reserve breakdowns and foreign deployments retain distinct accounting. Concealed No-Fields show only a separate marker. This is a connected inspection prototype; manufactured-face fidelity and full visual/combined-rule acceptance remain open. See scope and evidence.
Kwisatz Haderach inspection, 21 September 2026: original companion artwork, readable enlargement, private loss tracking and availability guidance now connect to Atreides controls, authorized plan inspection and the internal reference. Public plan inclusion never exposes the loss count, current death state or territory usage. This closes the historical missing inspection/portrait gap; exact manufactured component layout and combined-rule certification remain open. See scope and evidence.
Storm Card inspection, 21 September 2026: six numeric reference faces, authorized private Fremen forecasts and structured public reveal receipts now share an enlarged inspector. The actual card value survives separately from Weather Control or Testing Station movement changes. Existing text-only logs remain readable; no private draw is inferred from public movement. This updates the historical Storm Card enlargement gap, not complete manufactured-face or artwork certification. See scope and evidence.
Leader Skills update, 13 September 2026: all fourteen unique physical cards now have sourced names and complete paraphrased normal/battle text, shared inspectors, private two-card offers and one-card assignment custody. Five role bonuses, public skilled capture, death return and own revival are connected; Planetologist now also has movement and base green-Special battle controls; Suk Graduate redirects actual ordinary/elite casualties through readable rescue choices without creating counters. Battle effects now connect Rihani inspection/exchange, Mentat/Bureaucrat scoring and Sandmaster victory spice. Smuggler shipping now connects its normal reserve bonus without adding any physical component. Spice Banker battle spending uses a separate sealed spice amount and the same original skill inspector. Other unfinished bands and Diplomat remain missing. This supersedes the historical missing-inventory rows below only for Leader Skills. See source inventory, capture interpretation and prototype evidence.
Guild Nexus Secret Ally update, 10 September 2026: the existing card now supplies an explicit paid shipment choice, including physical cross/return selection and typed reserve or world-to-world sources. The holder keeps its own faction identity, forces and ordinary movement. No component is duplicated; existing full-card inspection remains shared. NEXUS_GUILD_SECRET_ALLY_RUNTIME.md records the supported routes and verification. Homeworld-return interpretation, concealed transport, Betrayal and complete module acceptance remain unfinished.
Guild Nexus Cunning update, 10 September 2026: the existing native card now offers an immediate second paid shipment after the original combined turn. No new forces, markers or cards are created; the normal physical reserve, cross/return and Homeworld controls retain their source counts and price. A separate skip choice and unused Hajr control preserve actual movement history. NEXUS_GUILD_CUNNING_RUNTIME.md records runtime, interruption and recovery evidence. Guild Secret Ally, Betrayal, physical Ornithopter combinations and full module acceptance remain unfinished.
Richese Nexus Secret Ally update, 10 September 2026: the existing held card now has a shipment choice that moves up to five actual counters at the one-counter price. It creates no No-Field marker, changes no component identity and retains typed Homeworld reserves and native Ixian direct HMS entry. Controls distinguish physical forces from charged forces, with the original card inspector unchanged. NEXUS_RICHESE_RUNTIME.md records scope, recovery and verification; native two-marker Cunning, Betrayal and complete module acceptance remain unfinished.
Moritani Nexus Cunning update, 10 September 2026: existing supply tokens now have an explicit Cunning choice for placement on the ordinary Arrakis map, including existing stacks. The physical token inspector and hidden public map marker remain shared; no extra token or artwork is created. Separate current and historical placement evidence supports later entry, revelation and discard recovery without exposing faces. NEXUS_MORITANI_RUNTIME.md records 27 new regressions and desktop/phone verification. Enhanced relocation, mobile-stronghold placement, Grumman combinations and complete faction/module acceptance remain unresolved.
CHOAM Nexus Cunning update, 10 September 2026: the existing physical Nexus can fund one of five supported Worthless effects with an actual held Treachery Card of any category. Shared controls show the cost card separately from the selected effect and retain its full inspector; the engine preserves its canonical identity through allowance, cancellation and legitimate payment loss. No duplicate Worthless piece or artwork is created. The printed family has six effects: Kull Wahad remains unavailable. NEXUS_CHOAM_RUNTIME.md records thirty new regressions, browser inspection and private recovery; complete CHOAM and module acceptance remain gated.
Emperor Nexus Cunning update, 10 September 2026: five existing ordinary counters can temporarily count as Sardaukar for one Advanced battle after the native Karama response allows the declared enhancement. No starred piece is created or transferred; casualties remain ordinary counters. Shared strength/support limits drive the editor and bots, and public notices distinguish pending versus active roles. This uses existing Nexus and force components without new artwork. Five-counter eligibility, existing commitments and all other Emperor mode gates remain explicit. NEXUS_SARDAUKAR_RUNTIME.md records 35 new cases, browser inspection, private recovery and the full-project checks; complete module acceptance remains pending.
Bene Gesserit Nexus Cunning update, 10 September 2026: existing physical advisors now have an owned whole-territory conversion checklist with counts, select-all control and explicit blocked reasons. One played Nexus card opens one Karama response for the entire public selection; no additional card, token or artwork is created. Legal selected groups become fighters in place without consuming shipment, movement or spice. Fresh accompanied advisors and storm cases remain explicitly pending rulings. Borrowed Voice, Betrayal and incomplete mode starts remain gated. NEXUS_ADVISOR_RUNTIME.md records the bounded runtime and verification status; final acceptance is pending.
Nexus update, 10 September 2026: all twelve physical Nexus identities and all thirty-six effect panels are verified against the original printed components. The separate inventory preserves one card per faction, independent of the selected roster; held cards remain private. The internal rules gallery and owner panel provide complete original-language effect text, existing bundled faction artwork and enlarged inspection. Common draws, replacement, preselected own-faction redraw, alliance forfeiture and saved phase progress are integrated. Atreides Cunning and Secret Ally have inspected battle controls and private history. Harkonnen Cunning and Secret Ally now draw from the physical Traitor Deck before an exact private return; Tleilaxu receives Face Dancers while previously revealed dancers stay protected. The owner selects actual leader identities with enlarged inspection, and observers receive only pending metadata. Native Tleilaxu Cunning now replaces all revealed Face Dancers atomically, drawing before returning the old identities and preserving unrevealed custody and ordinary cycling. Ixian Cunning gives Suboids strength one without support spice for the rest of the turn, while Cyborgs retain their own rules. Both use existing physical components and private offers; Ixian activation becomes public. This adds no duplicate physical deck or new artwork. Tleilaxu Secret Ally, Betrayal, remaining effects and complete module games remain unfinished and gated. See NEXUS_HARKONNEN_RUNTIME.md, NEXUS_ATREIDES_RUNTIME.md, NEXUS_CARD_RULES.md and NEXUS_CARD_RUNTIME.md for prior verification and limits. NEXUS_CUNNING_RUNTIME.md records the new native Cunning behavior; its final checkpoint acceptance remains pending.
Homeworld update, 9 September 2026: all 13 cards and 26 physical faces are verified, including native population/battle values and occupied income symbols. The internal gallery supplies both faces, complete original gameplay prose, enlarged inspection and thirteen original bundled illustrations. Separate typed custody and population helpers are tested; actual Homeworld gameplay, occupation and effect integration remain unfinished and gated. See HOMEWORLD_IMPLEMENTATION.md and HOMEWORLD_COMPONENT_AUDIT.md. Earlier missing-Homeworld statements below are historical.
Auditor update, 7 September 2026: the separate strength-2 Advanced CHOAM disc and matching traitor are now represented, with one original portrait alongside Duke Prad Vidal in the special registry. Ordinary leader inventory remains 60. Root inspected Auditor at normal and enlarged sizes on desktop and phone; its inspector supplies complete original gameplay prose. Private audited-card faces, payment controls, setup identity, capture/foreign-ghola exclusions and first native revival have focused tests. Repeat/sixth-disc revival cycles and full module combinations remain unresolved. See CHOAM_AUDITOR.md; earlier missing-Auditor artwork/runtime statements below are historical.
Stronghold update, 7 September 2026: all six original CHOAM & Richese Stronghold identities (one each), complete original effect prose, local battle behavior, public custody, six original illustrations and normal/enlarged card inspectors are now integrated. Root visually checked every desktop face and every enlarged desktop/390×844 phone face. See STRONGHOLD_CARDS.md for primary provenance and remaining combination boundaries. Earlier missing-Stronghold statements below are historical and superseded by this checkpoint. These cards remain separate from Treachery hands and decks; public Advanced starts remain gated.
Audit date: 2026-09-06. Scope: classic GF9 2019 Dune, its advanced game, and the Ixians & Tleilaxu, CHOAM & Richese, and Ecaz & Moritani expansions. This is a development ledger, not a statement of complete rules compliance or a player-facing rulebook.
The code currently constructs 33 base treachery cards (25 distinct names), 14 Ix treachery cards, and 47 distinct combined physical identities. It constructs 21 base spice cards, or 22 with Sandtrout. game/catalog.ts lists all 12 factions and three expansions; that catalog is not an inventory or an implementation guarantee. Advanced and expansion starts remain gated in the implementation ledger.
Latest ordinary leader checkpoint: all twelve native rosters now contain five leaders each, for 60 ordinary discs. The ten CHOAM/Richese names and strengths were verified visually from the publisher-authored rulebook's page 3 and added after independent review; see CHOAM_RICHESE_LEADERS.md. Auditor is a separate advanced strength-2 disc, not part of this sixty. The chronological fifty-leader and missing-roster statements below describe earlier checkpoints and are superseded by this finding. Current original portrait coverage is 60 of 60 ordinary discs, covering all twelve factions. Duke Prad Vidal has a separate special-disc portrait and identity registry. Full-resolution, actual 192px inspector and 80px circular browser review pass, with exact-identity and image-failure fallbacks retained. Auditor and the Kwisatz Haderach remain separate unfinished artwork.
This audit changes documentation only. Card presentation work is proceeding separately: the UI observations below describe the inspected baseline, before that work is integrated and validated. Do not silently promote these entries when a new component file appears.
Stone Burner, complete ordinary portraits and recovery checkpoint (2026-09-06)
-
Canonical Stone Burner now uses the weapon slot without changing its saved
kind: specialidentity. It has a named Voice role, Prescience/Truth-compatible original commitments, a private precommit availability check, and an event-bound owner choice after both plans reveal. Kill mode kills both participating leader discs; ignore mode preserves other weapon attacks. Both replace ordinary strength with undialed physical-token comparison, with the aggressor winning ties. Neither adds the Kwisatz Haderach bonus or kills that companion. Normal support, bounty, traitor/explosion precedence, casualty choices and winner/loser/Moritani retention remain shared with the existing battle flow. -
1,385/1,385 registered rules/client/component tests and 113/113 persisted/API tests pass, together with TypeScript, lint and the production build. New coverage is eight pure Stone cases, seven root engine cases, nine independent reviews, five AI cases, three persisted recovery cases and four special-art cases. Logs:
/tmp/dune-stone-final-full.log(34.28 seconds),/tmp/dune-stone-final-multiplayer.log(16.22 seconds), and/tmp/dune-stone-final-{type,lint,build}.log. All original card identities and the full expansion start gates remain intact. -
Ecaz and Moritani each gained five original portraits, completing 60/60 ordinary leaders across all twelve factions. The separate Duke Prad Vidal portrait brings special-disc coverage to one without adding him to an ordinary roster or traitor inventory. All prior assets and provenance records were preserved. Full-resolution inspection, asset tests and actual192px/80px browser review passed. Duke's actual component additionally passed custody-label, inspector, identity-fallback and real404-fallback checks in an isolated byte-identical harness. Its temporary server was stopped. See ECAZ_PORTRAITS.md, MORITANI_PORTRAITS.md and DUKE_VIDAL_PORTRAIT.md. Auditor, Kwisatz Haderach and other nonordinary component artwork remain separate unfinished work.
-
Semuta Drug, Mirror Weapon and Juice of Sapho remain inactive. Source audits now identify Semuta's fresh-discard continuation requirements and Sapho's scoped ordering requirements; these are not runtime completion claims. Other unfinished faction/module systems, mobile acceptance, difficulty-strength calibration and complete Advanced/expansion games still prevent goal completion. No start gate was removed.
The complete integrated validation checkpoint is recorded in IMPLEMENTATION_STATUS.md.
Portable Snooper runtime and Richese portrait checkpoint (2026-09-06)
- Portable Snooper now supports its ordinary poison-defense slot and optional play after both plans reveal, for all twelve holders in Basic and Advanced development fixtures. Exact canonical role predicates preserve saved
kind: specialidentities without admitting unrelated cards. Normal plan searches, Voice, Prescience, structured Truthtrance names, player selectors and AI use that same role. It stops ordinary poison and weapon Chemistry, but not Tooth, Artillery, Lasgun or the projectile half of Poison Blade. - Late play uses the spare battle-card slot and preserves the complete original plan. A lone Worthless in either slot is allowed; a real defense, weapon-plus-Worthless or two occupied slots blocks it. Voice compulsion must be met originally when possible, and forbidden poison defense remains forbidden late. The existing own traitor-declaration opportunity is the explicit application deadline, independent of hand contents; no extra holder-only public window or acknowledgement was added.
Battle.lateDefenserecords the public played card separately, with exact battle-event and physical-custody validation. The card stays reserved in its owner's hand through remaining decisions and appears in the public component inspector only after play. The effective defense feeds combat, while the original plan remains the source for inspected and structured promised slots. Winner, loser and Moritani retention cleanup all account for that one physical card. Current decisions, Truthtrance and responses retain priority; duplicate and stale requests cannot replay protection or cleanup.- Source review corrected an earlier retention assumption: the official November 2020 FAQ permits winning battle-card retention even without a keep footer, while explicitly naming Tooth/Artillery exceptions. Portable therefore uses ordinary winner retention. Mirror's ordinary retention follows the same source; inheritance of a copied Tooth/Artillery discard exception remains a separately pending user ruling. PORTABLE_SNOOPER_ENGINE_AUDIT.md and MIRROR_WEAPON_ENGINE_AUDIT.md record provenance and boundaries. Mirror itself remains inactive.
- 1,352/1,352 rules/client/component tests and 110/110 persisted/API tests pass, plus TypeScript, lint and production build. This adds five pure, five root engine, seven independent review and six all-profile AI cases, plus three persisted recovery cases. The recovery race forces both first-commit orderings between late defense and own traitor declaration. Logs:
/tmp/dune-portable-final-full.log(35.29 seconds),/tmp/dune-portable-final-multiplayer.log(17.89 seconds),/tmp/dune-portable-final-type.log,/tmp/dune-portable-final-lint.log,/tmp/dune-portable-final-build.log. - Browser QA verified the ordinary defense selector, sealed an empty original defense, played Portable against revealed Chaumas, and inspected the separate public late card. A fresh invitation preserved the exact pending v46 state and event before resolution. Feyd-Rautha survived, Harkonnen won 8–6, and the normal keep/discard choice retained Portable. Final v51 has three forces at Pasty Mesa, eight spice, Maula Pistol plus exactly one Portable, no Portable in discard, no battle or decision, and a living Feyd-Rautha used in that territory. The enlarged guide was visually inspected. Snapshots:
/tmp/dune-portable-browser-pending-v46.jsonand/tmp/dune-portable-browser-complete-v51.json. All other 1,174 saved room hashes still match the last maintenance backup. This is a focused battle/reconnect check, not complete expansion-game acceptance. - Final integrated review fixed a late-defense AI omission for Cheap Hero accompanied by the Kwisatz Haderach. All four profiles now preserve the +2 when protection changes defeat into victory; an ordinary zero-strength hero still does not consume the card. The real Advanced Atreides regression follows actual power preparation, legal spice support and both traitor decisions. Portable’s enlarged inspector now opens its specific timing/interaction guide, and its summary explicitly offers both normal and late use. The final 18 guide/reference tests also pass.
- Five original Richese portraits bring ordinary coverage to 50/60, completing both factions in each of the first two expansions as well as the six base factions. All forty-five prior files and manifest entries are unchanged. Full-resolution inspection, four existing asset tests and actual 192px inspector / 80px circular browser review pass. The exact temporary review server was stopped. See RICHESE_PORTRAITS.md. Ten Ecaz/Moritani ordinary portraits and separate special-disc artwork remain unfinished.
- Four Richese effects remain inactive: Semuta Drug, Stone Burner, Mirror Weapon and Juice of Sapho. Complete faction/module interactions, mobile acceptance and full Advanced/expansion games remain unfinished. No start gate was removed. The live development server remains the verified session started during the preceding maintenance; the removed automation stays removed and the full goal stays active.
Residual Poison runtime and CHOAM portrait checkpoint (2026-09-06)
- Canonical Residual Poison now has engine, private controls and all four AI policies. Before either combatant commits a leader, it uniformly selects one living, currently controlled opposing leader available in the battle territory, sends that physical disc to the Tanks and discards once. Same-territory reuse remains eligible; dead or elsewhere-used leaders, Cheap Heroes and the Kwisatz Haderach are excluded. There is no payment, bounty, force loss or automatic battle victory.
- A hand-independent shared preparation step gives both combatants an actual opportunity before leader commitment in Richese tables. Both choose readiness; no nonholder is silently passed. This is a disclosed application timing procedure, not a claimed publisher ordering rule. Active interactions retain priority. Exact saved battle events bind both actions and retries. No additional confirmation is added to the random death.
- Foreign ghola revival custody and Duke Vidal's physical disc/death history are preserved. Involuntary death reconciles impossible battle promises and reopens an impossible non-leader Prescience answer without redrawing the victim. All candidate death transitions and prospective hand commitments are validated before randomness. The still-secret Harkonnen captive disclosure ruling remains unresolved: Advanced Harkonnen tables guard the card based on their public configuration, never based on hidden captivity. See RICHESE_RESIDUAL_POISON_ENGINE_AUDIT.md.
- The full registered suites pass 1,329/1,329 rules/client/component tests and 107/107 persisted/API tests, with TypeScript, lint and production build passing. New focused coverage comprises seven pure, six root engine, seven independent review and four AI cases, plus three SQLite/CAS recovery cases. Logs:
/tmp/dune-residual-final-full.log(34.00 seconds),/tmp/dune-residual-final-multiplayer.log(16.26 seconds),/tmp/dune-residual-final-type.log,/tmp/dune-residual-final-lint.log,/tmp/dune-residual-final-build.log. Existing No-Field tests now perform the genuine readiness actions; independent-battle privacy comparisons normalize only the new random public event IDs. - The manual maintenance restart preserved all 1,175 saved room versions and exact state hashes, including a real browser-created open preparation step in synthetic QA room QPNV5XJJ v29. Backup:
/tmp/dune-maintenance-20260906T1117/database.sqlite. The known human room remained idle and unchanged. A fresh invitation restored the exact event and opponent readiness. Browser play then killed Flinto Kinnis once, left spice and forces unchanged, removed the card from hand and placed exactly one in discard. Ready resumed normal planning; the AI sealed a valid plan. Refresh retained v34, the same event, one death and one discard. All other 1,174 saved room hashes remained unchanged. No automation was recreated. Snapshots:/tmp/dune-residual-browser-complete-v31.jsonand/tmp/dune-residual-browser-planning-v34.json. - Five original CHOAM portraits bring ordinary coverage to 45/60, completing the six base factions plus Ixians, Tleilaxu and CHOAM. All forty earlier files and manifest entries remain unchanged. Full-resolution inspection, four existing asset tests, and actual 192px inspector / 80px circular browser review pass. The temporary contact-sheet server was stopped. See CHOAM_PORTRAITS.md. Fifteen ordinary portraits and separate special-disc artwork remain unfinished.
- Five Richese effects remain inactive: Semuta Drug, Stone Burner, Mirror Weapon, Portable Snooper and Juice of Sapho. Other incomplete faction/module systems and unresolved interactions remain tracked. No full Advanced or expansion game was certified and no start gate was removed. The full goal remains active.
Latest runtime and artwork checkpoint: Ornithopter (2026-09-06)
This checkpoint supersedes the historical missing-Ornithopter and lower portrait counts below. The earlier matrices remain chronological evidence, not current claims that newly implemented components are absent. Original artwork and bounded runtime tests do not certify every printed face or complete expansion rules.
- Canonical Ornithopter now has both movement options in the engine, controls and all four AI profiles: one group up to three territories, or two different groups at normal range. The card is publicly played and held outside the hand in exact event-bound custody while its effect is active, then discarded once. The component does not grant a reserve shipment.
- The second group uses a persisted record of original unmoved ordinary/elite forces, checked against current physical custody. Forces that arrived in the first group cannot increase the remaining quota. Exact No-Field marker identity and its eligible revelation are reconciled with the same record. Controls display active progress and disable reuse of an already-moved group; stale event, physical card custody, parent reactions and recovery are covered by targeted tests.
- Prior-movement/Hajr composition, the fixed-three-territory Kulon interaction, six remaining Richese effects and wider combined timing remain unfinished. Full Advanced and expansion starts stay gated. The ten Richese card identities and their original-language inspector text remain distinct from verified full runtime compliance.
- New focused Ornithopter evidence comprises eight pure, eight root engine, six independent review and six AI cases, plus four persisted/CAS cases. The complete registered suite passes 1,305/1,305 rules/client/component tests and 104/104 persisted/API tests:
/tmp/dune-ornithopter-final-full.log(36.51 seconds) and/tmp/dune-ornithopter-final-multiplayer.log(17.40 seconds). Final TypeScript, lint and production build pass in/tmp/dune-ornithopter-ui-final-type.log,/tmp/dune-ornithopter-ui-final-lint.logand/tmp/dune-ornithopter-final-build.log. - Root browser QA moved two forces from Red Chasm sector 7 to Pasty Mesa sector 5 (v23→24), verified moved-group reuse was disabled, and opened a fresh invitation that restored the exact v24 event and three-force remaining quota. The second move produced v25 with five forces at
pasty_mesa:5, two completed moves, unchanged eight spice and fifteen reserves, Maula Pistol as the only held card, exactly one Ornithopter in discard and no pending played card. Saved evidence:/tmp/dune-ornithopter-browser-complete-v25.json. All other 1,114 room hashes remained unchanged against the maintenance backup. - Five original Tleilaxu portraits bring ordinary coverage to 40/60. Every new file is a distinct local 1254px opaque RGB PNG mapped to an exact canonical name/ID. All thirty-five prior files and manifest entries remain unchanged. Full-resolution inspection, four existing asset tests, and actual 192px inspector/80px circular browser inspection pass. See TLEILAXU_PORTRAITS.md for names, prompt set, sources and hashes. The temporary review server was stopped; twenty ordinary portraits and separate special-disc artwork remain unfinished.
Nullentropy Box runtime and artwork checkpoint (2026-09-06)
This checkpoint supersedes the historical missing-Box and thirty-portrait descriptions below. Earlier inventory matrices and verification entries remain chronological evidence, not current claims that those newly implemented components are absent.
- The canonical Box has a paid private-search engine path, owner controls and all four AI policies. Two own uncommitted spice go to the bank before the player receives eligible discard faces. Selection retrieves one physical non-Box card, shuffles the remaining pile, then discards the used Box on top. A sole eligible result completes automatically; there is no extra acknowledgement, purchase income, bonus draw or generic Karama window.
- Exact event/discard-signature checks preserve custody across reload. The held Box and actual discard pile stay reserved while the private choice is open. Saved response, decision, pending Karama and phase opening resume after completion. The central search lock prevents early card effects and automatic deck recycling; authentication, recovery and owner autopilot takeback remain available. Only the paid owner receives the temporary search list, which disappears after settlement. The ordinary public view still has no discard browser.
- Full-hand use, empty/only-Box searches and the existing provisional Guild shipping-card refund conflict remain guarded pending their respective interpretation/implementation resolution. Semuta reaction timing and other unfinished Richese effects are not certified. Sources and exact limits are in NULLENTROPY_BOX_ENGINE_AUDIT.md and RICHESE_ACQUISITION_RULES.md.
- Focused runtime verification passes 17 new unit/AI cases (six root engine, six independent review, five AI) and four persisted/CAS cases, in addition to seven previously registered pure Box cases. The new review verifies privacy, payment, corrupted custody, parent preservation, singleton completion and restart/replay. The combined 1,275/1,275 rules/client/component tests and 100/100 persisted/API tests pass, recorded in
/tmp/dune-box-final-full.log(31.97 seconds) and/tmp/dune-box-final-multiplayer.log. Current aggregate TypeScript, lint and production build pass. The final 22 targeted reference/presentation/art tests also pass after two new reference cases and the expanded Ixian roster assertion. - Five original Ixian portraits bring exact ID/name portrait coverage to 35/60 ordinary leaders. Full-resolution source inspection and four existing asset tests pass; all thirty earlier portrait assets/manifest entries remain unchanged. IXIAN_PORTRAITS.md records names, prompts, hashes and limitations. Actual 192px inspector and 80px circular browser checks now pass in the root-reviewed contact sheet. Paid Box browser QA also passed: the search survived a controlled server restart with all 1,115 room state hashes unchanged, then selecting Maula Pistol advanced v21→22 with the same eight spice, one top-discard Box and the exact earlier Richese gift restored. The other 1,114 rooms remained unchanged after that deliberate QA selection. No automation was recreated. Original art is not printed-art certification, and complete expansion starts remain gated.
Evidence and status meanings
- Counted: a factory or data structure was inspected and its quantity was executed locally. This does not verify every printed name, rule, or face.
- Partial: executable behavior, an explanation, or a control exists; some rules, interactions, or presentation acceptance checks remain open.
- Missing: no inventory/implementation for that component family was found in the inspected source.
- Unverified: the audit has not established the claim against primary evidence or a relevant runtime check. This is different from proving an implementation absent.
- Abstracted: the digital game represents a physical component using state/controls rather than a card entity. Its behavior and information visibility still require verification.
The source hierarchy is printed GF9 components and official clarifications, followed by designer material. A mirrored publisher-authored PDF is identified as a mirror. Community inventories can help locate omissions but do not establish printed text or authorize tournament amendments. Earlier evidence and timing disputes remain in CARD_INVENTORY.md and IMPLEMENTATION_STATUS.md.
| Evidence | What was checked | Access and limitation |
|---|---|---|
| GF9 base rulebook, printed pp. 4–5 | Component families and quantities | Existing publisher-PDF mirror and layout extraction inspected at /tmp/dune-rules/base.pdf and base.txt; mirror provenance is recorded in the implementation ledger. This pass did not inspect all card faces. |
| GF9 Ix rulebook, printed p. 4 | Expansion component families and quantities | Existing publisher-authored mirror extraction inspected at /tmp/dune-rules/ix-official-mirror.txt. The fourteen names remain corroborated by the earlier inventory audit, not newly verified card-face by card-face here. |
| GF9 CHOAM rulebook, printed pp. 4–5 | Component counts, replacements, and separate Richese cache | Official indexed text retrieved on this audit date; direct PDF open returned HTTP 403. No complete card-face review is claimed. |
| GF9 Ecaz rulebook, printed pp. 3–4 | Component counts and Duke Vidal's lack of a traitor card | Official URL returned HTTP 403; publisher-authored mirror was retrieved and its extracted text inspected. Printing corrections still need reconciliation against current official errata. |
| Future Pastimes expansion overview | Designer corroboration of expansion families and the three Ecaz treachery names | Retrieved directly. Overview text is not a substitute for a card-face inventory. |
Physical target versus digital representation
The quantities below describe separate component families. Do not sum replacement cards or faction caches into the common starting treachery deck.
| Set | Official component target | Current representation and gap |
|---|---|---|
| Base | 33 treachery; 21 spice; 30 traitor; 16 prediction (six factions, ten turns); six alliance; six storm cards | Treachery/spice factories counted. Traitors derive from 30 base leaders. Prediction is faction/turn state; alliances are relationship state; advanced storm cards are numeric state. No independently audited face catalog for these abstracted families. Base p. 5 |
| Base support | Six faction sets, each with five leaders and 20 forces; six quick-reference cards; Kwisatz Haderach card/counters; board, wheels, markers, spice and special-force tokens | 30 named base leaders counted; force/state and guidance implementations exist. Physical aids are adapted to interface controls. This is not a token-by-token or board-geometry certification. Base pp. 4–5 |
| Ix | 14 treachery; one Sandtrout; 11 traitors; prediction additions; two faction sets; hidden mobile stronghold; three tech tokens | Treachery and Sandtrout counted. Ten expansion leaders plus one shared Cheap Hero/Heroine traitor identity exist. Face Dancers draw from the traitor pool, not an additional printed deck. Prediction additions lack a separate physical inventory. Faction/module behavior remains partial. Ix p. 4 |
| CHOAM | 11 traitors; two prediction; 14 leader skills; six stronghold; revised Tooth/Artillery and two revised Karamas; separate ten-card Richese cache | Later leader/traitor inventory, skills, stronghold cards and Richese cache are missing. Existing Tooth/Artillery logic incorporates revised behavior but has no edition/replacement provenance field. CHOAM pp. 4–5 |
| CHOAM support | Two faction sets, three No-Field tokens, one Inflation token | CHOAM economy/Inflation and four Worthless abilities are partial; printed leaders/Auditor and Richese mechanics remain unfinished. CHOAM p. 4 |
| Ecaz | Ten traitors; two prediction; 12 Nexus; 13 Homeworld cards/tokens; three treachery; seven discovery spice cards; eight discovery tokens | No corresponding deck factories or module inventory found. Existing ordinary Nexus alliance decisions are not the Nexus-card variant. Ecaz p. 4 mirror |
| Ecaz support | Two faction sets, Duke Vidal, 11 ambassadors, six terror tokens, Atomics Aftermath | Missing implementation inventory. Duke Vidal must not receive a generated traitor card. The rulebook's alliance-card quantity needs physical/errata reconciliation; do not use it to certify a combined boxed-card total. Ecaz pp. 3–4 mirror |
CHOAM's revised Tooth and Artillery replace the Ix copies when those are used, or can be added without Ix. Its two revised Karamas replace the base copies. The Richese cache starts separately from the common deck and hand. These distinctions need explicit edition and setup modeling before any combined-deck total is certified. CHOAM pp. 4–5
Counted treachery identities
All entries in this table come from game/cards.ts; quantities and identities are implementation facts. Printed text and named-face fidelity are not certified by the count.
| Set | Cards and multiplicities | IDs | Internal rules trace |
|---|---|---|---|
| Base projectile | Crysknife, Maula Pistol, Slip Tip, Stunner; one each | treachery-0–treachery-3 |
battle-cards; BATTLE_CARD_HELP.projectile |
| Base poison | Chaumas, Chaumurky, Gom Jabbar, Ellaca Drug; one each | treachery-4–treachery-7 |
battle-cards; BATTLE_CARD_HELP.poison |
| Base Lasgun | One | treachery-8 |
battle-cards; explosion resolution |
| Base Shield | Four physical copies | treachery-9–treachery-12 |
battle-cards |
| Base Snooper | Four physical copies | treachery-13–treachery-16 |
battle-cards |
| Base Worthless | Baliset, Jubba Cloak, Kulon, La La La, Trip to Gamont; one each | treachery-17–treachery-21 |
battle-cards; CHOAM Worthless topics/helpers |
| Base heroes | Cheap Hero, Cheap Heroine; one each | treachery-22, treachery-23 |
battle-cards; cheap-hero-traitor |
| Base special | Family Atomics, Weather Control, Hajr, Tleilaxu Ghola, Harvester; one each | treachery-24–treachery-28 in that order |
card-atomics, card-weather, card-hajr, card-ghola, card-harvester |
| Base Karama | Two | treachery-29, treachery-30 |
card-karama; ordinary/special faction Karama topics |
| Base Truthtrance | Two | treachery-31, treachery-32 |
card-truthtrance; battle-promise preparation |
| Ix battle | Poison Tooth, Artillery Strike, Poison Blade, Shield Snooper, Weirding Way, Chemistry; one each | ix-poison-tooth, ix-artillery, ix-poison-blade, ix-shield-snooper, ix-weirding-way, ix-chemistry |
ixBattleCards(); card-poison-tooth, card-artillery, battle-cards |
| Ix special | Thumper, Amal; one each | ix-thumper, ix-amal |
ixSpecialCards(); card-thumper, card-amal |
| Ix ordinary | Hunter Seeker, Basilia Weapon, Shield, Snooper, Harvester, Kull Wahad; one each | ix-hunter-seeker, ix-basilia-weapon, ix-shield, ix-snooper, ix-harvester, ix-kull-wahad |
ixStandardCards(); shared base kind/effect rules |
treachery-7 is the corrected base Ellaca Drug identity. Legacy instances named Basilia Weapon are normalized without changing their rule type; expansion Basilia Weapon retains its distinct identity. treacheryDeck(['ix', 'ix']) still contains 47 cards. Requests for choam, ecaz, or an unknown expansion explicitly throw.
The later missing inventory must include the ten Richese cache faces and the three Ecaz additions: Reinforcements, Harass & Withdraw, Recruits. Those Ecaz names are corroborated by the designer overview; no individual rules text was verified in this pass. The Richese face names and all skill/stronghold/Nexus/Homeworld/discovery face names remain an explicit acquisition task, not a guessed list.
Coverage matrix
Normal UI means an inspected hand/control/reference path, not a screenshot acceptance check. Enlarged UI means a readable, keyboard-accessible full-card inspection path. All enlarged entries remain unverified in this baseline. Test filenames identify evidence scope; existence or passing tests do not prove correspondence to every printed rule.
| Component family | Inventory | Gameplay text | Engine | Normal UI | Enlarged UI | AI | Tests/evidence |
|---|---|---|---|---|---|---|---|
| Base ordinary weapons, defenses, heroes, Worthless | Counted, 24 physical cards | Partial shared type help; no per-face provenance | Partial; battle/traitor logic exists | Partial hand and sealed-plan controls | Unverified | Partial battle selection | combat, engine, cheap-hero-traitor, bots |
| Base named special cards | Counted, nine physical cards | Named internal topics; mostly marked Partial | Partial timing/cancellation and interaction audit | Partial action controls | Unverified | Partial action policies | engine, truthtrance, battle-promises, Karama suites |
| Ix ordinary six | Counted | Shared descriptions; CHOAM Kull Wahad exception missing | Partial; shared handlers | Partial generic hand/control path | Unverified | Partial shared selection and Harvester support | ix-deck |
| Ix six battle cards | Counted | Partial shared/individual topics | Partial alternate-role, reveal and traitor interactions | Partial battle and Tooth choices | Unverified | Partial plans/activation | ix-battle-cards, tooth-artillery, ix-deck |
| Ix Amal/Thumper | Counted, two | Partial named timing topics | Partial phase-opening windows | Partial play/pass controls | Unverified | All four levels have focused support | amal, thumper |
| Base spice + Sandtrout | Counted, 21 + one | Phase/Sandtrout topics; sectors and faces unverified | Partial blow/worm/resumption logic | Abstracted public blow/private preview | Unverified | Partial foresight/response use | engine, advanced-phases, sandtrout, thumper |
| Base/Ix traitors and Face Dancer reuse | Counted, 30 + ten leader identities + one hero identity in full available pool | Partial setup/traitor/Tleilaxu topics | Partial; filtered to participating factions | Partial private choice/reveal controls | Unverified | Partial selection/calls/replacement | cheap-hero-traitor, tleilaxu, foreign-gholas |
| Prediction, alliance, storm, KH and quick-reference aids | Abstracted; no complete physical face catalog | Partial phase/faction topics | Partial rules-backed state | Partial controls/guidance | Unverified | Partial | advanced-phases, kwisatz, reference, bots |
| Ix tech tokens/mobile stronghold | Module identities present | Partial dedicated topics | Partial; two-player tech allocation and wider interactions open | Partial map/status/controls | Unverified | All four levels have focused support | tech-tokens, mobile-stronghold |
| CHOAM revised Tooth/Artillery/Karama | No replacement inventory/provenance model | Revised effects partly described; exact faces unverified | Existing shared behavior, broader audits open | Shared base/Ix paths only | Unverified | Shared behavior only | Relevant Ix/Karama tests; no replacement-setup certification |
| CHOAM use of existing Worthless cards | Reuses base/Ix pieces; no new six-card deck | Four abilities documented; Jubba Cloak/Kull Wahad open | Partial Baliset/Kulon/La La La/Trip | Partial CHOAM controls | Unverified | Four implemented abilities have policies | choam-worthless, choam-gamont, choam-baliset |
| Richese cache, leader skills, stronghold cards | Missing: ten, 14, six respectively | Module placeholder; complete face text missing | Missing | Missing | Missing | Missing | No family implementation suite found |
| CHOAM/Richese printed leaders/traitors | Missing named leader lists; 11 traitor target unresolved individually | Faction reference partial | CHOAM commerce exists; Auditor/printed roster open | Partial faction controls, no verified card roster | Unverified | CHOAM commerce policies only | CHOAM suites do not certify the roster |
| Ecaz three treachery cards | Missing | Names sourced, full text missing | Missing | Missing | Missing | Missing | None found |
| Ecaz Nexus/Homeworld/discovery families | Missing | ecaz-modules placeholder |
Missing | Missing | Missing | Missing | None found |
| Ecaz/Moritani leaders/traitors/ambassadors/terror | Missing inventory | Catalog/faction placeholders | Missing | Missing | Missing | Missing | None found |
Engine and AI claims above are bounded by source inspection and the existing implementation ledger. This documentation pass reran only the inventory/reference files listed below; it did not rerun every suite in the matrix or perform browser QA.
Verification performed
Executed the card/catalog/reference exports with node --import tsx --input-type=module -e ..., inspecting baseDeck, ixDeck, treacheryDeck, spiceDeck, leaders, traitorDeck, FACTIONS, EXPANSIONS, and RULE_TOPICS. Results:
- Base 33 cards / 25 distinct names; Ix 14; combined 47 / 47 unique IDs.
- Spice 21 without Sandtrout / 22 with it.
- Twelve faction catalog entries and three expansion catalog entries.
- Five leaders each for the six base factions, Ixians, and Tleilaxu; zero each for CHOAM, Richese, Ecaz, and Moritani. Full available base/Ix traitor pool: 41 identities when the hero identity is enabled; an actual game filters by its participating roster.
- Twelve
Cardsreference topics: ten marked Partial, two marked Implemented (card-weather,card-hajr). These editorial labels are not primary-source verification flags.
Validation command: node --import tsx --test tests/ix-deck.test.ts tests/reference.test.ts — exited 0; both test files passed. The Ix file covers quantities, independent factories, rejected later expansion IDs, ordinary rules, Harvester conservation/AI, legacy names, and Hard/Brutal base-faction games injected with the Ix deck. Those injected games do not establish legal full expansion starts or all expansion faction interactions. The reference tests check topic/link structure and no external navigation on selected player-facing pages; they do not compare text against printed cards.
No source files, runtime data, generated art, or deployment configuration were changed by this audit.
Remaining acceptance work for full card-text verification
- Acquire legible primary faces for every family, recording edition/printing, source URL or file, page/image, face side, printed name, physical quantity, and replacement relationship. Resolve official corrections before writing the canonical inventory. Retain the alliance-count and revision uncertainties explicitly.
- Give each card definition separate physical identity, rule identity, source edition, and text-verification status.
Cardcurrently contains only ID/name/kind/effect; it cannot distinguish an audited face from a shared rule approximation. - Trace each face to original internal gameplay prose: timing, cost, target, mandatory/optional effect, retention/discard, cancellation, secrecy, and exceptions. Do not treat generic type text or a module placeholder as full card text. Prioritize revised Tooth/Artillery/Karama, multiple Harvesters, Sandtrout timing, simultaneous phase openings, Truthtrance commitments, and remaining CHOAM Worthless effects.
- Add complete later-expansion inventories, including separate Richese cache behavior, then verify setup/replacement counts and card custody through draws, auctions, trades, discards, recycling, and reconnects. Preserve the lack of a Duke Vidal traitor.
- After the separate card UI work is integrated, verify every available card at normal and enlarged sizes, including long text, responsive scrolling, keyboard focus/close behavior, labels, and hidden-information boundaries. Update this matrix with concrete screenshot/journey evidence, not merely component existence.
- Verify legal human and Easy/Medium/Hard/Brutal AI use of each effect, cancellation and stale-state handling, conservation, and interaction scenarios. Record scenario IDs and results per card family. Keep full advanced/expansion starts gated until complete-game acceptance criteria in the implementation ledger are met.
Authorized inspection integration update
The normal/enlarged UI baseline above is historical. Current integration adds read-only enlargement for own hand cards and leaders, retained/setup traitors, private Face Dancers, authorized Ixian setup/auction/offered/purchased cards, Atreides auction faces/full-plan insight, revealed battle components and winner card choices. Exact viewer-projected identities supply every inspector; no raw deck, discard pile, or opponent hand is passed. Face Dancer and traitor guides have separate timing/protection explanations. Desktop/mobile browser evidence exists for selected leader/traitor/card representatives; every printed component and gated expansion path still requires its own acceptance review.
Six player-circle markers now correspond to the printed map and persistent lobby choices. This verifies that aid's location/order semantics, not the whole terrain graph or complete physical component inventory. Original geometric medallions and interface card motifs remain distinct from finished portraits or verified printed faces.
GF9 CHOAM/Richese p.4's general clarification makes the treachery discard pile private and restricts searches to enabling effects. Consequently the required discard-inspection work must be tied to those exact effects (including the still-missing Nullentropy Box); it is not authorization for an always-public discard gallery. Source: https://www.gf9games.com/dune/wp-content/uploads/2021/11/CHOAM-Rulebook-low-res.pdf .
Spice inspection and Ecaz source update
Public spice-discard top faces and separately authorized private Atreides foresight now use components/spice-card-inspector.tsx. Only the selected projected card reaches the component; it receives no deck, full pile or opponent data. Ordinary faces display their base spice amount and sector; worm/Thumper/suppression and Sandtrout distinctions come only from the supplied card. Text is original gameplay guidance and is labelled accordingly, not certified full printed face text. Desktop Cielago North and390×844 Rock Outcroppings inspection/Close focus passed; private, worm/Sandtrout and advanced double-pile browser checks remain outstanding.
ECAZ_TREACHERY_RULES.md records primary evidence for one each of Recruits, Reinforcements and Harass & Withdraw, including unobstructed manufactured-card close-ups. This improves the historical missing-source rows above. It does not establish runtime implementation, certified battle interactions, all later-expansion components or an enabled card variant.
The three Ecaz faces now have isolated canonical definitions and full original-language inspector paragraphs in game/ecaz-cards.ts. Exact authorized physical identities select the guide; source/unresolved metadata is not rendered. Eight tests verify inventory composition, guide completeness, no implicit activation and unchanged base/Ix presentation. This updates the earlier missing-factory baseline, while runtime activation and combined battle effects remain unfinished. No live browser inspection of these gated cards is claimed.
Moritani leader inventory update
The primary Ecaz/Moritani rulebook's printed page3 supplies legible Moritani leader discs. game/cards.ts now includes Lupino Ord5, Grieu Kronos4, Hiih Resser4, Trin Kronos2 and Vando Terboli1, each with its own stable native leader/traitor identity. Duke Prad Vidal6 is a distinct special component and is not added to this roster or the traitor deck. This updates the historical missing-Moritani row above; CHOAM, Richese and Ecaz native rosters remain incomplete. See MORITANI_TERROR_RULES.md for provenance.
Three focused tests verify exact names/strengths, unique stable identities, independent instances, participating-faction traitor filtering, no Duke traitor and all40 prior base/Ix leader definitions unchanged. The shared inspector can render the authorized native discs through the existing roster path; a live gated-Moritani browser journey remains unperformed. Faction setup, Terror and complete-game acceptance are still required before enabling starts.
The same page3 illustration also verifies Ecaz's five ordinary leaders: Sanya Ecaz4, Whitmore Bludd4, Ilesa Ecaz3, Rivvy Dinari3 and Bindikk Narvi2. They now have stable ecaz-0 through ecaz-4 instances and four exact-inventory/fresh-custody/traitor/regression tests. Both coordinating and component agents inspected the source image. Duke Prad Vidal remains a separate sixth disc with no traitor, awaiting its control/revival lifecycle. There are now50 ordinary leader definitions across the six base factions, Ixians, Tleilaxu, Moritani and Ecaz; CHOAM and Richese remain the two missing ordinary rosters. Full expansion starts remain gated.
Moritani Terror custody and inspection checkpoint
Six distinct one-copy Terror definitions now exist in game/moritani-terror.ts, with original full mechanics prose tied to the audited publisher rules, explicit unresolved-interaction metadata and opaque shuffled physical IDs. components/moritani-terror.tsx supplies six original vector illustrations, private/public face inspection and responsive controls. components/game-table.tsx renders hidden placed-token markers without identity-bearing artwork or labels. This is not certification of original printed punchboard artwork.
Setup, one-per-Mentat placement/relocation, privacy and placement Karama have engine/UI/AI support and17new tests. Revelation effects, continuing Aftermath, Extortion recovery and advanced powers are not implemented, and faction starts remain gated. Public redeployment IDs will need rotation after any revealed token returns to hidden supply.
Terror reveal and hidden-return custody update
Robbery and Sabotage definitions now report partial runtime effects. Their owner decision controls resolve supported isolated arrivals, and their removed faces are publicly inspectable after revelation. A pure return transition rotates and shuffles every available supply identifier to prevent remembered revealed IDs or array positions from exposing a later hidden deployment. The private supply epoch stays out of all projections. That helper is tested but is not yet connected to Extortion settlement or Enemy of My Enemy. Assassination, Atomics, Extortion and Sneak Attack remain unimplemented effects.
Four partial Terror effects: current implementation checkpoint
This later 2026-09-06 checkpoint supersedes the preceding statements that Assassination and Sneak Attack have no runtime effects. Four of the six physical tokens now have partial, deliberately bounded engine, private control and AI paths. Complete Moritani starts remain gated. The source definitions remain the original mechanics prose traced in MORITANI_TERROR_RULES.md to printed Ecaz/Moritani pp. 5–6, 14 and 16; implementation boundaries below must not be mistaken for printed restrictions.
| Physical token | Inventory and gameplay text | Engine scope | Normal/enlarged presentation | AI | Relevant test file | Remaining gaps |
|---|---|---|---|---|---|---|
| Robbery | One opaque physical token; original source-traced definition | Choose half the entrant's available spice rounded up, or top card; full hands draw before a private chosen discard; empty deck finishes without inventing a card | Owner reveal/choice/discard controls; own card names only; revealed face publicly inspectable | Chooses card or spice using its own private view | tests/moritani-entry.test.ts |
Combined arrival reactions and broader timing audit; no full-game acceptance |
| Sabotage | One token; random discard and optional gift described separately | Random entrant discard, with generic public log; optional own-card gift or decline; exceptional recipient overflow rejected | Owner gift selector; no victim card name in opponent controls; spent face publicly inspectable | Declines the optional gift | tests/moritani-entry.test.ts |
Exceptional gift overflow and combined reactions remain unsupported |
| Assassination | One token; source rule distinguishes it from advanced Assassinate Leaders | Reveal automatically selects one living verified ordinary native leader, updates death history and awards strength in spice; Zoal is 3 | Owner sees eligibility/reason before revealing; no victim picker; spent face uses shared inspector | Uses owner-projected reveal eligibility | tests/moritani-force-leader.test.ts |
Missing/altered native pools, empty living pool, captured/foreign/special custody blocked; advanced Harkonnen tables uniformly blocked to avoid revealing capture state |
| Sneak Attack | One token; reserve entry, storm/occupancy limits and printed Aftermath exception described | Up to min(5, own reserves), using the recorded entry sector; free, without ordinary shipment/movement usage; zero resolves even when positive entry is blocked | Private maximum/reason at offer and resolution; labeled count selector and explicit Send no forces; shared face inspector | Uses projected maximum when allowed, otherwise zero | tests/moritani-force-leader.test.ts |
Positive entry blocked for unresolved BG arrival reactions and phase-5 Heighliners interactions; exact sector choice and other combined-entry classifications remain limited |
The common entry record binds the original entrant, territory, sector, cause, turn, phase and continuation. Current isolated paths cover ordinary movement, shipment, Guild cross-transport, accompanying advisors and worm rides; existing Moritani or allied entry does not offer Terror. When the same arrival would already need another response/decision, the engine rejects the complete attempted entry atomically instead of silently selecting a priority. No-Field placement/reveal distinctions remain source guidance until that separate subsystem exists. Worm continuation and temporary Truthtrance overlays have dedicated coverage in tests/moritani-entry-overlays.test.ts; they do not establish universal reaction ordering.
The current component was compared with the landed terrorEntry projection and table branch order. Only Moritani receives kind, reveal eligibility/reason and Sneak Attack options. Other players receive public arrival/stage data and the wait state. Private hand controls read only the viewer's projected hand; hidden placed faces use a generic illustration even if a broader token object were accidentally supplied. Truthtrance and power-response controls precede Terror in the table; the component's busy/response handling prevents competing submissions. The inspector is read-only, and its support notice names Atomics, Extortion and Enemy of My Enemy as unfinished. Before Sneak Attack revelation, the owner can see whether positive entry is blocked and can retain the hidden token instead of spending it for zero forces.
Still missing: Atomics destruction/Aftermath persistence and alliance-dependent hand penalties; Extortion deferred collection, storm-order payment and recovery scheduling; Enemy of My Enemy offer/accept/refuse; Duke Vidal custody/revival; advanced Assassinate Leaders; complete multi-effect timing and all-faction acceptance. The fresh-ID return helper is not evidence that Extortion or alliance recovery has been integrated. Original vector art is an interface adaptation, not certified reproduction of printed punchboard artwork.
This checkpoint records source/component review and the locations of authored tests. The coordinating task owns aggregate test execution and browser acceptance; it does not claim a fresh browser test of every new effect. Formatting check: node_modules/.bin/oxfmt --check docs/COMPONENT_INVENTORY.md game/reference.ts components/moritani-terror.tsx.
Enemy of My Enemy control checkpoint
The existing hidden Terror component now supports a draft alliance branch: owner offer, generic Karama response, entrant accept/refuse without inspecting the hidden face, and hidden token return on acceptance. Refusal reveals through the token’s implemented effect; Atomics/Extortion and unsupported pools prevent offer before announcement. Available supply identities rotate after return; unrelated placed/revealed identities remain unchanged. No new printed component or physical inventory count is inferred. Fifteen focused alliance tests plus the873-unit/45-persisted suites pass. Exact Karama-before-reply timing awaits interpretation confirmation; full expansion starts stay gated.
Duke Prad Vidal shared disc
Added one separate strength6 Ecaz-identity component (duke-vidal), based on the independently inspected E3 p3 illustration. It has no Traitor Card; the ordinary roster inventory remains50 across ten implemented rosters. Its original purple/gold crown medallion is new artwork, not a claim of printed-art reproduction or a completed character portrait. Public compact/expanded inspectors display controller, set-aside/Tanks state and crisp core rule text, including the separate revival price5 and unfinished integration limits. Moritani acquisition and one-battle tenure are integrated. Ecaz Ambassador/revival and capture/loan edges remain incomplete; see DUKE_VIDAL_RULES.md.
Moritani allied retention controls
The ordinary alliance ability now reuses exact physical played-card identities, current CardRules and CardInspector faces. It creates no extra cards or inventory copies. The defeated ally's single-choice panel excludes mandatory discards and unplayed hand cards; the response inspector exposes only the declared, previously revealed card. Desktop Crysknife inspection and final Crysknife/Snooper custody were checked in S85SLVRR. Complete printed component text/artwork audit and full Moritani acceptance remain unfinished.
Original leader portrait pilot (2026-09-06)
Six of50 cataloged ordinary leader identities now have original1254px square painted portraits: atreides-0, harkonnen-0, emperor-0, fremen-0, guild-0, beneGesserit-2. Exact prompts and Stilgar's blue-within-blue eye correction are recorded in public/art/leaders/generation.json. These are original character interpretations, not copied printed or film art. The selected Stilgar asset is v2; the other selected files are v1.
The ID/name registry supplies roster and enlarged native/traitor/Face Dancer inspectors only after the existing view has disclosed the identity. Missing/mismatched identities and asset failures retain vector fallback. Printed names and current strength remain crisp live text. Desktop browser inspection checked Staban's compact/enlarged portrait and Thufir's enlarged portrait with canonical strength5. This does not certify all50 portraits, the missing CHOAM/Richese inventories, mobile layout, or the full component set.
Extortion's isolated accounting model now has9 tests, but no token reveal, Mentat scheduling, engine or player-control integration. Its component remains unsupported at runtime pending the placement/recovery timing interpretation.
Atreides portrait roster completed (2026-09-06)
Four new originals extend the pilot: atreides-1 Lady Jessica, atreides-2 Gurney Halleck, atreides-3 Duncan Idaho and atreides-4 Dr. Yueh, all v1 PNGs. The registry now has ten exact ID/name matches; all five ordinary Atreides leaders have portraits. This is ten of the existing fifty-leader catalog, not ten of the complete twelve-faction inventory. Source asset inspection and1254px dimension checks passed, and the desktop browser showed the complete roster with current live strengths and Lady Jessica's enlarged portrait. Exact prompts remain in the bundled generation manifest.
Harkonnen portrait roster and Ambassador components (2026-09-06)
Four original v1 portraits add harkonnen-1 Beast Rabban, harkonnen-2 Piter de Vries, harkonnen-3 Captain Iakin Nefud and harkonnen-4 Umman Kudu. The exact ID/name registry now selects fourteen original portraits across the existing fifty-leader catalog, including complete ordinary Atreides and Harkonnen rosters. Source images were visually inspected; all are 1254px RGB PNGs with generation prompts recorded locally. The four new Harkonnen faces have not yet received an integrated browser inspection. Missing CHOAM/Richese roster verification and the remaining portrait inventory are still required.
Eleven distinct Ecaz Ambassador effects now have original vector token faces and authorized compact/enlarged inspectors with full original-language effect descriptions. The pure inventory models Ecaz plus an original random group of five, destruction return, triggered custody, permanent BG removal and group recycling. End-of-Revival placement is integrated; entry effects and storm/explosion hooks remain unfinished. Desktop inspection verified the Emperor token's enlarged guide and the placement supply/board exclusions. Public unplaced supply and the composed end-phase order are documented interpretation boundaries in ECAZ_AMBASSADORS_RULES.md.
Emperor portrait roster completed (2026-09-06)
Four source-inspected original v1 portraits add emperor-1 Captain Aramsham, emperor-2 Caid, emperor-3 Burseg and emperor-4 Bashar. All are1254px opaque RGB PNGs; exact prompts are in the generation manifest. The registry now has eighteen exact ID/name matches and full ordinary Atreides, Harkonnen and Emperor portrait rosters. Harkonnen's complete live-strength row and enlarged Piter were inspected in the browser. Emperor's new faces still require integrated browser inspection; this is eighteen of the existing fifty-leader catalog, not a completed twelve-faction inventory.
Fremen portrait roster completed (2026-09-06)
Four original portraits add fremen-1 Chani (6), fremen-2 Otheym (5), fremen-3 Shadout Mapes (3) and fremen-4 Jamis (2), matching the current canonical roster identities and strengths. The selected v2 assets use the existing Stilgar v2 painting only as a style reference. Each initial source and final correction was visually inspected; one eyes-only correction per portrait replaced pale sclera with the Fremen blue-within-blue appearance. All four selected files are 1254px opaque RGB PNGs, with exact initial/correction prompts and original source paths recorded in public/art/leaders/generation.json. Names and strengths remain separate live interface text.
The exact ID/name registry now covers twenty-two of the existing fifty ordinary leader identities, completing the Atreides, Harkonnen, Emperor and Fremen portrait rosters. Missing or undisclosed identities retain the existing fallback; this asset work changes no gameplay or faction availability. Integrated browser inspection now confirms all four in the complete Fremen row (7/6/5/3/2) and each new portrait enlarged, with crisp identity and strength text. The remaining twenty-eight catalog portraits and unverified CHOAM/Richese component inventories remain separate outstanding work.
Guild portrait roster completed (2026-09-06, 08:07 UTC)
Four original portraits add guild-1 Master Bewt3, guild-2 Esmar Tuek3, guild-3 Soo-Soo Sook2 and guild-4 Guild Representative1. All are1254px opaqueRGB PNGs with exact generation prompts and source paths in public/art/leaders/generation.json. Registry coverage is now26 of60 ordinary identities, with all five native Guild leaders illustrated. Thirty-four ordinary portraits remain. Existing22asset hashes were unchanged in agent verification.
Root browser review in isolated table QPNV5XJJ confirmed the full Guild row5/3/3/2/1 and each of the four new enlarged components. Faces remain distinct, portraits are framed consistently, and names/strengths are crisp interface text. These are desktop checks; mobile review and the other unfinished component families remain outstanding.
Bene Gesserit portrait checkpoint (2026-09-06)
Four original portraits complete Alia, Wanna Marcus, Reverend Mother Ramallo and Margot Lady Fenring alongside the existing Princess Irulan. All six base-faction rosters now have portraits, totaling30/60 ordinary identities. Thirty ordinary expansion portraits and separate special-disc artwork remain. The new1254px opaqueRGB files, exact prompts/corrections and hashes are in BENE_GESSERIT_PORTRAITS.md and the generation manifest. Root inspected all four final images; the agent inspected full,192px and80px circular views. The four existing asset tests are now registered and verify all six base rosters, identity privacy, physical files and manifest consistency. The final combined1258-case suite passes; this artwork checkpoint does not certify unfinished expansion mechanics.
The Sandmaster ground-movement follow-up adds explicit routes, optional collection, human/AI controls and saved cancellation. Special relocation and combined modules remain unfinished.