Show revealed battle components in one shared table area

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
This commit is contained in:
Quintine committed 2026-09-21 13:16:39 +10:00
1 parent de26aaf029
commit e7e16024b7
14 files changed
+368 -86

No files matched your search

+6
View File
@@ -1,5 +1,11 @@
# 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](REVEALED_BATTLE_COMPONENTS.md).
**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
+35 -23
View File
@@ -6,34 +6,46 @@ gated.** Prototypes do not open completion or publication gates.
## Current checkpoint and work
Latest delivered checkpoint: `c2f24fc`, [public faction sheets](FACTION_SHEETS.md).
Types, lint, **5,000 offline tests** and production build passed. Public table
inspection, all twelve gallery entries, Basic/Advanced preview, keyboard and
mobile layouts, internal help and refresh passed bounded browser checks. All
1,539 opening rooms, 3,259 human seats and auxiliary rows stayed unchanged.
Screenshot capture timed out; full visual acceptance remains open. The healthy
server was reused. Prior checkpoints include `e3cfd82` for hand browsing,
`14a7800` for draw counts and `537da4a` for force inspection.
Latest delivered checkpoint: `de26aaf`, [Ecaz Loyalty](ECAZ_LOYALTY.md).
Types, lint, **5,012 offline tests**, production build and **49 HTTP tests** passed.
Six genuine faction-game samples completed with no rejected actions. A fresh
Advanced Ecaz/Harkonnen browser setup preserved the public set-aside card through
Traitor/force choices and refresh. All 1,539 opening rooms, 3,259 human seats and
auxiliary rows stayed unchanged; isolated QA/HTTP fixtures brought the baseline
to 1,579 rooms and 3,347 human seats. Screenshot capture timed out. The healthy
server was reused. Earlier checkpoints include `c2f24fc` for public faction sheets
and `e3cfd82` for private-hand browsing.
Current work: [Ecaz Loyalty](ECAZ_LOYALTY.md) selects one native Traitor Card
before genuine Advanced dealing, keeps it publicly set aside through setup and
Nexus replacement draws, and adds enlarged inspection and internal guidance.
Focused custody, public-view, all-profile legal setup and JSON checks accompany
independent review, browser checks, final check/build/HTTP and saved preservation.
Legacy dealt games remain unchanged; combined Skills/assassination rosters and
complete faction acceptance remain gated.
Current work: [revealed battle components](REVEALED_BATTLE_COMPONENTS.md) adds
public dials, leader portraits and readable used-card faces in one shared area,
with direct inspectors and navigation to pending decisions. Sealed plans and
private hands stay separate. Focused checks, independent review, browser QA and
final check/build/saved-preservation evidence accompany this presentation work.
The separate Bureaucrat/Emperor gift question is pending.
The `8f7a62c` policy checkpoint removed usage checks/cutoffs and deferred AI
refinement until feature completion, followed by three adjacent 75% targets.
A bounded remaining-effect audit found that the reviewed faction/Nexus candidates
cross recorded pending rulings, with the independent Loyalty setup omission now
being connected. Continue independent features rather than
inventing answers. The [platform audit](AUTOPILOT.md#platform-audit-20-september-2026)
found no supported Sites scheduler or Durable Object provisioning contract.
Durable unattended bot resumption remains blocked on that capability; current
request/reconnect continuation does not establish it. Continue independent
player-facing features and integration while preserving pending rules questions.
The next concrete gameplay milestone is **Basic Moritani plus Leader Skills**
with base opponents and no other optional modules. A bounded current-code review
found no new Moritani-specific ruling, but widening setup alone is insufficient:
coordinate Banker, Diplomat, Sandmaster, Smuggler, Bureaucrat, Planetologist and
battle/victory public-profile guards, keep the full fourteen-card deck, and test
Terror leader death, skill return and revival through real continuations. Do not
hide unsupported cards after a random deal or claim complete combination support.
This provides a concrete dependency-ordered integration target for the next pass.
The reviewed remaining native Ecaz/Moritani effects, Duke revival and Richese
empty-cache auction arithmetic still cross recorded source questions; Loyalty is
now connected. For later Tleilaxu/Skills integration, create replacement offers
at successful native revival commitment: the current automatic response loop can
revive after the outer custody observer. This is a confirmed dependency in the
currently gated roster, not a demonstrated supported-profile defect; no synthetic
profile was enabled or labeled verified in this pass.
The [platform audit](AUTOPILOT.md#platform-audit-20-september-2026) found no supported
Sites scheduler or Durable Object provisioning contract. Durable unattended bot
resumption remains blocked on that capability; request/reconnect continuation
does not establish it. Preserve pending rules questions and mode gates.
The connected [Harass & Withdraw prototype](HARASS_WITHDRAW_RUNTIME.md) supports either
battle-card slot, private category inspections, exact undialed normal/elite
+10
View File
@@ -1,5 +1,15 @@
# Dune implementation status
## 21 September 2026 — public battle component display
Revealed plans now share one table area with exact dials, played leader portraits
and readable card faces. Direct inspection and navigation preserve pending
decisions; both players retain access when a post-reveal choice belongs to one
seat. Sealed plans and unused hands stay out of this display.
[Battle components](REVEALED_BATTLE_COMPONENTS.md) records scope and evidence;
focused tests and independent review accompany private check/build, browser,
preservation and Git results. No game rule, saved field or AI strategy changed.
## 21 September 2026 — Advanced Ecaz Loyalty
Genuine Advanced Ecaz setup now randomly sets one native Traitor Card aside face
+64
View File
@@ -0,0 +1,64 @@
# Revealed battle components
Connected presentation prototype, 21 September 2026. Existing server plan
revelation and battle rules remain authoritative. No rule, action, AI strategy,
saved field, endpoint or mode/publication gate changes.
## Shared table presentation
Once both plans are public, a single shared area displays the physical attacker
and defender in that order, regardless of which player sealed first. Each plan
has its exact force dial, the played leader portrait and printed strength, and
readable weapon and original-defense faces with their existing guidance. A Cheap
Hero appears as a card in the leader slot. Empty slots say None; a late defense
has a separate Added after reveal label. Printed category remains distinct from
its chosen battle slot, including a Worthless card in the weapon slot.
One-click inspectors enlarge the actual visible cards and leaders. Leader IDs
now reach the portrait/inspector rather than dropping the bundled identity art.
Kwisatz Haderach inspection remains public inclusion only. Banker commitment,
CHOAM support, native Homeworld bonus, Diplomat copy/decline, Poison Tooth and
Stone Burner details keep their existing separate descriptions. The dial and
printed leader strength are not presented as a calculated winning score.
`GameTable` mounts this display once after the main grid. It stays available to
all viewers while another player owns a post-reveal decision, unlike the earlier
copies nested under specific decision branches. Compare revealed battle plans
and Return to battle decisions link to focusable sections. No inspector or
navigation link submits a game action. This keeps the larger faces separate from
the pending controls while preserving their connection.
The layout fits two plan panels when space permits and stacks on smaller screens.
Cards wrap within each plan; readable rules use 16px text and inspection controls
retain 44px minimum height. No new animation, timing delay or confirmation is
introduced. Full visual/component and screen-reader acceptance remains open.
## Privacy and continuation
The renderer returns nothing unless `battle.revealed` is true. It never consumes
Atreides private full-plan insight or any player's hand. Each visible face is
selected by an exact used ID from the already projected `battle.cards`; native
leader identity comes from the authorized leader catalog. The small pieces
component receives only those selected public identities and the dial.
The original defense remains separate from a late defense or a Diplomat copy.
Refresh reconstructs the same display from the saved public plans. Reordering
the presentation does not reorder saved plans, reveal Traitors, change payments,
execute a card or submit a battle decision.
## Verification
Five focused cases cover real sealed/revealed transitions, explicit plan order,
used versus unplayed card privacy, immutable JSON rendering, fractional dials,
Cheap Hero, Worthless, empty/late slots and both viewers during a real Diplomat
choice. Existing Kwisatz, Banker and Diplomat regressions exercise retained
special-effect metadata. These are bounded rendering checks, not full rules-mode
certification or proof that every battle combination works.
Private browser evidence uses a new Emperor/Harkonnen QA lobby with genuine
Basic setup, followed by an explicitly staged battle position conserving card
and force inventory. Choosing the battle, the opponent's saved plan and the
human's sealing action use normal engine actions; the intervening game was not
played. Browser inspection, final check/build results, original saved-game
preservation and Git delivery are recorded under `20260921-revealed-plans` outside
the checkout. The commit message records actual outcomes and limitations.