Prototype native Diplomat base-defense copying

Allow one committed Worthless to copy an opposing base Shield or Snooper when no actual defense is played, including protection of the selected native trained leader. Expose an optional named public choice after both plans reveal, before traitor calls, and show the activated protection in revealed plans. Discard the chosen physical Worthless once after battle, including winner and traitor-preempted outcomes. Original physical card identities and plans stay intact. Timing and explicit-discard precedence are documented implementation inferences; lower retreat, modified defenses, combined modes and public starts remain guarded.

Reuse legal Worthless planning candidates and add a public-information decision path for all four AI profiles. Bind new battle choices to revealed plans, public skill stance, canonical card custody and an independent event, validate saved continuations before reads/actions, omit internal proof fields from views, and retain unmarked legacy-battle behavior. Independent rules/privacy/persistence review found no blocker.

Validation: focused Diplomat rules/UI/bot/JSON/SQLite checks plus 80 related legacy checks passed; typecheck, lint, 4537 offline tests, production build and 43 HTTP tests passed. Concurrent copy versus decline, stale/corrupt decisions, self-protection and mandatory traitor-winner discard are covered. Browser genuine assignment and a conserved staged battle exercised human plan submission, refresh of the pending choice, actual Snooper copying with Baliset, Hasimir survival, exactly one Baliset discard, ordinary Crysknife retention and final refresh with private cards and four board forces, fifteen reserves, one Tank and eight spice. Basic/Advanced four-profile samples completed in 210/223 actions with six/seven JSON restores and no rejected candidates; neither encountered an eligible copy, so targeted checks establish the effect.

The server was healthy after the power outage. All 563 opening rooms and original seat/recovery records were preserved (597 after QA/HTTP); SQLite integrity and foreign keys passed. No restart, reset or automation was needed.

Verified source tree: 868bb7484cef244e6ab20f8d08d62e118629e257870cf91a436bf42651b968f5
This commit is contained in:
Quintine committed 2026-09-13 22:05:03 +10:00
1 parent 788453e07e
commit f067950f5e
21 files changed
+1463 -25

No files matched your search

+27
View File
@@ -1,5 +1,32 @@
# Dune implementation status
## 13 September 2026 — Diplomat base-defense copying prototype
[Diplomat](DIPLOMAT_DEFENSE.md) now optionally counts one committed Worthless as
an opposing base Shield or Snooper, including to save its native trained leader.
The owner chooses after public plan reveal and before traitor decisions. Exact
physical plans and cards stay in place; the selected Worthless is discarded after
battle even on a win. This timing and explicit-discard precedence over ordinary
traitor retention are recorded implementation inferences, not additional printed
rulings. Lower retreat and modified/combined defenses remain unfinished.
Player controls, all four legal AI paths, public projection and saved decisions
are connected. Independent review and focused SQLite restart, concurrent copy or
decline, corruption rejection, self-protection and traitor-preempted discard
checks cover this boundary. Two genuine four-profile samples completed without
rejected candidates: Basic used 210 actions and six JSON restores; Advanced used
223 actions and seven restores. Neither encountered an eligible Diplomat offer;
targeted battle checks establish the effect. A fresh browser scenario restored
the pending copy, saved native Hasimir from poison, discarded Baliset exactly
once, kept Crysknife and restored the private hand/traitor plus four board forces,
fifteen reserves, one Tank and eight spice. Required broad results are recorded
in the checkpoint commit and private report.
After the new outage report the server responded normally, database integrity and
foreign keys passed, and all 563 opening rooms plus their original seat/recovery
records matched the backup. No restart, reset or automation was required. Public
mode and publication gates stay closed.
## 13 September 2026 — Smuggler with owned Richese No-Field
The [officially permitted combination](SMUGGLER_NO_FIELD.md) now ships one