Commit Graph
52 Commits
Author SHA1 Message Date
Quintine 88c0ab1547 Enable Advanced Ixian auction knowledge questions
Verify and publish checkpoint container / container (push) Canceled after 0s
2026-10-29 04:26:29 +11:00
Quintine 89589878fc Support board-wide Truthtrance force questions
Verify and publish checkpoint container / container (push) Canceled after 0s
2026-10-29 03:41:29 +11:00
Quintine 813a2bacbe Correct expansion preview guidance 2026-10-27 20:48:50 +11:00
Quintine b4a556d5d3 Connect fresh Basic Semuta and Ambassador discards
Initialize the existing neutral Semuta protocol during genuine fresh public bare Basic Richese setup with selected native families. Retain original roster/deck/freshness checks, separate optional/Advanced profiles and unchanged existing saves.

Retain the original Ambassador arrival cause and admit clean ordinary shipment/movement CHOAM and Ixian private discard batches, including native BG copies. Keep CHOAM credit committed once; pause before exactly one Ix replacement. Existing owner-only commitment/selection, physical Semuta/full-hand exchange and original entrant continuation remain.

Verify original public setup, actual one-spice Semuta auction, ordinary purchase, paid placement, paid shipment and actual movement. Exercise claim/pass controls, busy protection and all four existing legal profiles without strategic tuning. Repair nearby stale tests to acknowledge actual battle outcomes and retain the existing independent-card/Discovery combination. Full modes, wider nested/optional interactions, comprehensive assurance and deployed acceptance remain open. No saved-room/reset/restart/deployment operation.
2026-10-24 14:08:45 +11:00
Quintine d6d71c7c02 Compose native World cards with original phase modules 2026-10-17 10:58:43 +11:00
Quintine cda9338f13 Compose selected native World independent cards 2026-10-17 10:31:05 +11:00
Quintine f5b7ebc8da Compose classic World cards with phase modules 2026-10-16 16:19:35 +11:00
Quintine ccdcfe2c4d Compose native Stone and Mirror with phase modules 2026-10-16 15:36:20 +11:00
Quintine 4a67e8c7be Compose independent cards with original phase modules 2026-10-16 15:07:44 +11:00
Quintine 4313983a5c Connect clean native family Reinforcements battles 2026-10-16 14:22:50 +11:00
Quintine c64c08af89 Seal exact native Homeworld Reinforcements costs and plan sources 2026-10-16 13:07:49 +11:00
Quintine 05c4c8c7fb Compose Recruits with current classic Homeworld revival rates 2026-10-16 11:34:48 +11:00
Quintine 643add3f85 Route classic Homeworld Harass returns through native custody 2026-10-16 11:07:14 +11:00
Quintine a58b8bc92c Compose concealed No-Field battle cards before reserve costs 2026-10-16 08:56:01 +11:00
Quintine f50dda6078 Admit clean Ix Stone and Mirror with existing revealed priorities 2026-10-16 08:00:45 +11:00
Quintine 842fd72761 Compose native Stone and Reinforcements without a physical-token bonus 2026-10-16 07:10:18 +11:00
Quintine be0644c0e9 Compose same-plan Harass and Reinforcements with original reserve costs 2026-10-16 06:48:04 +11:00
Quintine feb2b03251 Compose Harass withdrawal with provisional Stone Burner timing 2026-10-16 06:35:04 +11:00
Quintine a4f1cfc650 Compose native Homeworld Kaitain and Tupile discards with Semuta 2026-10-12 16:40:03 +11:00
Quintine bab8f3403d Offer Semuta on printed native battle cancellation costs 2026-10-12 06:57:15 +11:00
Quintine 74768647f4 Preserve native Ixian casualties and Moritani retention across Semuta 2026-10-12 06:13:47 +11:00
Quintine a6869b0166 Connect Semuta reactions before original native Tech award 2026-10-12 05:44:56 +11:00
Quintine a1d620d7b0 feat: preserve native live-hand audits through Semuta discards 2026-10-12 05:09:54 +11:00
Quintine f09ddf1b18 feat: preserve quoted CHOAM income through Semuta battle discards 2026-10-12 04:40:04 +11:00
Quintine 0d545deb63 feat: preserve native Face Dance through Semuta battle discards 2026-10-12 04:16:12 +11:00
Quintine c468dc9e44 feat: preserve elite and No-Field Gamont selections through Semuta 2026-10-12 03:21:29 +11:00
Quintine 3171afc522 feat: connect Semuta to reactive CHOAM denial discards 2026-10-12 02:43:16 +11:00
Quintine 235f763625 feat: connect Basic native Semuta Terror discard reactions 2026-10-12 02:00:22 +11:00
Quintine da61249592 feat: resume Semuta battle discards before Harkonnen capture 2026-10-12 01:35:00 +11:00
Quintine a487f3e1b3 Correct stale Richese runtime and Semuta guidance 2026-10-11 21:33:14 +11:00
Quintine 18693b3207 Resume native Intrusion after final-flight Semuta response 2026-10-11 17:25:26 +11:00
Quintine 589e1b9df2 Integrate private Mentat questions with native Basic skill profiles 2026-10-02 19:36:07 +10:00
Quintine ebfae0f803 Offer Semuta after clean BG Charity Karama cost 2026-09-30 12:38:56 +10:00
Quintine e9f9994513 Offer Semuta after clean CHOAM Inflation Karama cost 2026-09-30 12:16:40 +10:00
Quintine d9c67ca992 Offer Semuta after clean CHOAM Charity Karama cost 2026-09-30 11:56:02 +10:00
Quintine 32d9ef4ec9 Offer Semuta after clean Residual Poison discard 2026-09-30 11:38:00 +10:00
Quintine ab5c78226a Offer Semuta after clean Sapho battle chooser discard 2026-09-30 11:19:08 +10:00
Quintine 989a986d68 Offer Semuta after clean Once Around Sapho discard 2026-09-30 11:07:09 +10:00
Quintine 9872efcc1d Offer Semuta after clean pre-plan Sapho aggressor discard 2026-09-30 10:45:56 +10:00
Quintine f0eafc175e Offer Semuta before Ix-deck Thumper Spice Blow 2026-09-30 10:04:48 +10:00
Quintine dd6d3a89ca Offer Semuta on clean mandatory battle batch 2026-09-30 09:41:55 +10:00
Quintine 593ca3beb4 Offer Semuta choice after winner battle card batch 2026-09-30 09:05:45 +10:00
Quintine 0e9945e333 Compose Semuta with completed paid Box discard 2026-09-30 01:25:22 +10:00
Quintine 9ea50a792e Prototype neutral Semuta reactions on clean ordinary discards 2026-09-30 01:07:03 +10:00
Quintine 3b118dd845 Integrate Ecaz Duke revival and bounded Mirror Weapon battles 2026-09-28 18:02:04 +10:00
Quintine e3cfd82540 Add private-hand search, category filters and display sorting
Wrap existing physical hand cards with local name search, printed-category
filters and saved/name/category display order. Preserve card IDs, actions and
inspectors, keep required decisions outside filtering, and recompute results
from current owned cards. Provide count, clear filters, keyboard scrolling,
separate empty/no-match states and internal guidance. Filters reset on leaving
the hand tab, changing seats or refreshing; saved order is never modified.
Correct the stale Harass availability note to reflect connected allocation.

Six focused tests cover normalized literal search, duplicate physical IDs,
canonical expansion categories, stable immutable sorting, current holdings,
JSON restoration, full-table per-seat privacy and empty setup messaging.
Independent review found no material issue. Types, lint, all 4996 offline
tests and production build pass on stable source. No HTTP, auth, schema or
persistence implementation changed, so HTTP tests were not repeated.

Browser QA used a new two-player Basic Harkonnen/Easy Atreides game created
through genuine setup. Search/category/reset, named inspector and all three
sort orders worked. An active no-match filter updated from 0 of 2 to 0 of 4
when a real auction purchase and Harkonnen bonus arrived. Leaving the hand tab
and refreshing restored all four cards in their original saved order while
the second auction remained at a human decision. Enter in search performed
no game action. The internal guide worked by keyboard. At 390px, controls
were 44px high with 16px text and 14px labels, form width/scroll width 339px;
the focused overflowing card row responded to ArrowRight. Normal viewport
restored. Screenshot capture timed out; full visual/screen-reader acceptance
and complete expansion/card-effect combinations remain open.

All 1538 opening rooms, 3258 seats and auxiliary rows
remain unchanged. SQLite integrity and foreign keys pass. Only one isolated
QA game, its human seat and entry receipt were added; the AI remains in game state. Healthy server reused without restart,
migration, reset or automation. No AI strategy or mode/publication gate changed.

Private evidence: 20260921-hand-browsing.
Verified source tree: 39dce28efa52dd66baf019baaf8610e6795601b3b569ac4ac0b6f405bffc1d96
2026-09-21 12:00:34 +10:00
Quintine 9b67a780eb Connect early Juice of Sapho battle aggressor
During the existing public pre-plan opportunity, the holder can discard canonical unreserved Sapho to become aggressor before their readiness or any binding plan/Voice/inspection/Truthtrance commitment. Unchosen preparation prompts remain available. No new confirmation-only or holder-dependent response window is introduced. Later intervention and its allocation/privacy protocol remain unfinished.

A battle/turn/revision-bound history and independent event list preserve accepted priority while keeping attacker, defender and chooser stable. Legitimately recovered cards can change priority again at a fresh event. Reads, actions and normalization reject corrupt histories/custody. Shared tie priority respects Habbanya in either physical slot and reaches pre-commit Stone/Voice checks, public views, bot calculations and actual ordinary/Stone resolution. The final quote previously assumed original attacker priority and now consumes the validated aggressor. Harkonnen capture still follows actual winner/loser.

Owner controls, public aggressor/tie text, automatic notices and internal guidance are connected. Focused tests exercise actual tied results in Basic/Advanced, both Habbanya sides, mixed-force Stone finishability before opposing commitments, a real allied Prescience boundary, stale/late/cross-owner rejection, private rival noninterference, receipt corruption, saved recovered-card revision, actual policies at all four AI levels and authenticated SQLite races/seat restoration. Independent review found no material defect. A prior scheduling test now explicitly readies its human holder to save the card instead of allowing the new legal AI play.

Types, lint and 4866 offline tests, production build and 43 HTTP/session tests pass on the unchanged source fingerprint below. Two genuine CHOAM/Richese samples completed with 1279 accepted actions, 34 periodic JSON restores and no rejected candidates. One movement Sapho play occurred; neither sample used aggressor. Targeted tests and browser evidence, not those samples, establish the new effect. Full expansion and module acceptance remain incomplete.

In a new isolated browser room, genuine Advanced faction setup was followed by conserved battle staging. The human Guild used the actual aggressor button, restored the spent card and priority after refresh, readied, selected Master Bewt with zero dial/support, and declined a Traitor call. The staged Emperor opponent used real engine ready/plan/vote actions with Caid and zero dial/support. Guild won the 3-3 tie, retained four forces and 30 spice, and Emperor lost four forces. Final refresh and private JSON views restored the same outcome; the original seat row is unchanged. Screenshot capture timed out, so visual screenshot acceptance is not claimed.

All 1072 original games and original seat/recovery/entry/handover records are unchanged; 1106 rooms remain including isolated QA and HTTP fixtures. SQLite quick-check and foreign keys pass. The healthy server was reused without reset/restart or automation.

The Mirror audit now records why every genuine CHOAM/Richese setup includes unresolved copy candidates: an ordinary-copy-only gate would need hidden eligibility or altered inventory. Mirror stays gated pending the existing disposal ruling and copied-choice work. No mode/publication gate is opened.

Verified source tree: 2fb3160efd713a3f7068aedb474868ba6863bccc420848a56e69e1df1d84441b
2026-09-20 11:45:47 +10:00
Quintine cb691e1b14 Connect Sapho first and last battle-choice order
Juice of Sapho can change the remaining Battle-phase chooser order at clean boundaries. A chooser may occupy the physical defender slot and select the actual other combatant. Physical storm order, attackers, defenders and tie advantage remain intact. Full-roster phase priority survives aftermath, newly eligible Face Dancers and saved continuation. Controls and all four AI profiles consume the same projected choices.

Independent review verified private options, public geometry, exact physical disposal, rejected-action immutability, phase expiry and boundary-bound saved chooser integrity. Actual Basic/Advanced Face Dance regressions verify later replacement priority. Authenticated SQLite tests cover duplicate concurrent card requests, private restore and battle completion. Chooser/aggressor separation and phase duration remain explicit implementation interpretations; the separate aggressor mode and unresolved timing stay gated. Reinforcements remains disabled pending the documented reserve-cost question.

Types, lint, 4792 offline tests, build and 43 HTTP tests pass with unchanged source. Six fixed genuine Basic/Advanced faction samples finish in 3672 accepted actions and 97 periodic private JSON restores. They retain 82 rejected candidates at existing guarded arrival combinations; subsequent legal candidates finish. This is bounded playability evidence, not complete compliance or AI calibration.

The browser used Sapho first from a later physical circle, chose Emperor, sealed and resolved a battle, then refreshed into its next choice. Emperor retained the tie win. All 9 accepted actions replay exactly using the recorded random battle event; physical custody, all private JSON views and the original seat row pass. A private harness initially needed random-event replay binding and SQLite-row prototype normalization; no production fix or game reset was required.

After the reported outage, the server responded and the staged QA game restored exactly. All 970 opening games and their original seat/recovery records remain preserved (1004 after checks), including all 971 rooms present immediately before checks. SQLite integrity and foreign keys pass. No restart, database reset or recurring automation was needed.

Verified source tree: b699f80600f8e297595a8e756edf367a607ddd99707474c03231e6479bd2f389
2026-09-14 05:14:57 +10:00
Quintine 04501567d0 Connect Harass & Withdraw to the battle preview
The independent Ecaz Treachery variant now supports Harass in either physical battle-card slot. A category-null Prescience answer keeps its identity private without erasing the selected card. Exact undialed normal/elite counters return before battle losses; opposing successful Traitors cancel withdrawal, ordinary leader deaths still resolve, and the card is discarded exactly once. Controls, all four AI profiles and saved continuation share the same physical quote. Existing Planetologist inspection and literal Truthtrance slot promises retain their meanings.

Unique Basic/Advanced physical allocations are supported. Ambiguous allocations, co-present Ecaz allied armies on either side, Richese card-family configurations and other optional modules remain gated before sealing from public/own context. The pending Stone Burner timing question is not assumed answered. Reveal-before-explosion order and mandatory disposal on an own-Traitor win are explicit source-timing/specificity inferences, consistent with existing Planetologist precedence. Reinforcements and full variant/public mode acceptance remain unfinished.

Independent rules/privacy/persistence review fixed asymmetric selector legality, misleading blocked-card guidance, invalid restored battle pairs, native-only inspection bypass and unsupported allied-army admission. Ixian fixtures preserve all seven physical cyborgs. The first broad run caught a semantic-status lint error in the blocked guidance; replacing the paragraph role with an output element fixed it. A subsequent broad run passed 4,775 of 4,776 tests and exposed an old UI assertion requiring category-null slots to be disabled. The updated regression verifies enabled category-null selectors exclude ordinary held cards, while exact leader/dial locks and submitted values remain bound; focused controls pass 14/14. No game source changed after the eight samples or browser replay. Types, lint, 4776 offline tests, build and 43 HTTP tests pass with unchanged source. Authenticated SQLite cases verify sealed private restoration and competing duplicate traitor actions with one physical resolution.

Eight fixed genuine six-seat games finish: basic/Easy: 1803 actions, 0 Harass plans, 0 withdrawals, 48 periodic restores; basic/Medium: 225 actions, 0 Harass plans, 0 withdrawals, 6 periodic restores; basic/Hard: 2184 actions, 1 Harass plans, 1 withdrawals, 59 periodic restores; basic/Brutal: 2073 actions, 1 Harass plans, 1 withdrawals, 56 periodic restores; advanced/Easy: 2057 actions, 1 Harass plans, 1 withdrawals, 55 periodic restores; advanced/Medium: 532 actions, 0 Harass plans, 0 withdrawals, 14 periodic restores; advanced/Hard: 538 actions, 0 Harass plans, 0 withdrawals, 14 periodic restores; advanced/Brutal: 544 actions, 0 Harass plans, 0 withdrawals, 14 periodic restores. All 218 game-source files match their source-stable runs; exact card/traitor/force custody and periodic/terminal private views are checked. Browser controls verify the full card, category None, Defense-first legality, actual sealing/reveal, four returned forces, ordinary leader death, disposal and refresh. A separate final-source replay verifies the conserved browser fixture and opposing continuation, including Face Dancer replacement. This is bounded playability evidence, not full compliance or AI calibration.

All 936 opening games and their original seat/recovery records remain unchanged (970 after checks); all 937 present immediately before checks are also preserved. Database integrity and foreign keys pass. The healthy server was reused after the power failure without restart, reset or recurring automation.

Verified source tree: be193613c455c5b76b49800fe3a7400504ea879af34c59621ade3d44f0fe019d
2026-09-14 04:41:30 +10:00
Quintine c04cb93830 Connect the Recruits independent-card revival preview
The explicit development initializer now includes the complete three-card Ecaz Treachery variant before genuine Basic/Advanced faction setup. Recruits has owned play/discard controls, full inspection, a public current-rate table, shared authoritative revival quotes, all four AI profiles and persistent exact free-use ledgers. Existing CHOAM/Tleilaxu choices settle before returning forces. Inactive games retain their prior allowance arithmetic.

Clean activation before normal returns or after exactly recorded free returns is connected. Prior-paid/unknown use, later Fremen grants, pending repricing, same-turn recovered-card replay and additional optional modules stay gated. Native unlimited faction advantages remain unlimited. The independent seven-force cap after faction cancellation is explicitly documented as an inference from independent effects, not a direct combined FAQ. Reinforcements and Harass & Withdraw remain unfinished; public starts and publication stay gated.

Independent rules/privacy/persistence review passed. Review fixed auction alias double-counting after a physical card sale, malformed canonical cards, legacy zero-ledger activation, a seat-control validation bypass and an ordinary-start bypass. Focused tests cover readiness and turn expiry as well as authenticated restart, exact free/paid accounting, stale/duplicate requests, competing writes and malformed-save rejection. Types, lint, 4743 offline tests, build and 43 HTTP tests passed with unchanged source.

Eight fixed-seed genuine six-seat samples finish: basic/Easy: 1961 accepted, 0 Recruits plays, 53 JSON restores; basic/Medium: 711 accepted, 0 Recruits plays, 19 JSON restores; basic/Hard: 239 accepted, 0 Recruits plays, 6 JSON restores; basic/Brutal: 1367 accepted, 1 Recruits plays, 36 JSON restores; advanced/Easy: 1402 accepted, 0 Recruits plays, 37 JSON restores; advanced/Medium: 530 accepted, 0 Recruits plays, 14 JSON restores; advanced/Hard: 545 accepted, 1 Recruits plays, 14 JSON restores; advanced/Brutal: 1240 accepted, 1 Recruits plays, 33 JSON restores. Reports retain rejected candidates and earlier harness attempts. All 216 game-source hashes remain identical to the samples; a later presentation-test expectation update changes no game code. Actual card use, custody and periodic/terminal private views are checked; this is bounded playability evidence, not full variant acceptance or AI calibration. A separate conserved browser Revival fixture verifies the full inspector, physical play, public rates, four free returns and active/resolved refresh.

All 902 opening games and original seat/recovery records remain unchanged (936 after checks). All 903 present immediately before broad checks are also preserved. Database integrity and foreign keys pass. The healthy server recovered after the power failure and was reused without restart, reset or recurring automation.

Verified source tree: 1f934f996268b35c8a20d0d617fa962aad878108496fa1a4a05323360757b0e3
2026-09-14 03:44:21 +10:00