diff --git a/docs/CURRENT_STATUS.md b/docs/CURRENT_STATUS.md index a72522a1..8a474f30 100644 --- a/docs/CURRENT_STATUS.md +++ b/docs/CURRENT_STATUS.md @@ -29,23 +29,27 @@ optional skill bands, combinations and public expansion starts remain open. Rules implementation continues; comprehensive assurance and administration remain deferred until all rules are implemented. -**Semuta / battle-plan promise — 11 October.** An unsubmitted battle-plan -Truthtrance answer now offers the consumed card too; the battle promise and its -legality enforcement are unchanged, and submitted/revealed plans stay automatic. -Types/lint pass and 126 affected cases pass after adding the regression and a -corrected readiness step in its fixture. No saved store or deployed game was -targeted. See [the source/runtime boundary](SEMUTA_SOURCE_UPDATE_20260907.md). +**Semuta / ordinary battle Truthtrance — 11 October.** Ordinary definite +Truthtrance answers now offer the consumed card during battle, including a bound +unsubmitted-plan promise, a question about a submitted/revealed plan and a fact +question. Submitted/revealed plans bind no new promise; they do not skip Semuta. +An isolated engine smoke covers all four paths with claim, all-seat pass and four +legal AI profiles (24 scenarios), preserving history and plans, rejecting retired +events and enforcing the unsubmitted-plan promise. Types/lint and 126 affected +cases passed at implementation. No saved store or deployed game was targeted. +See [the source/runtime boundary](SEMUTA_SOURCE_UPDATE_20260907.md). **Semuta / Truthtrance shipment promise — 11 October.** A classic payer's ordinary Truthtrance shipment answer in the Richese Semuta profile now offers the consumed card; the binding promise and its enforcement are unchanged. The structured shipment-question scope gained that profile for a non-Richese active payer, and the availability boundary is now server-projected (`truthShipmentSupported`) so the -human Truthtrance panel and validation share it. Native No-Field shipments and -other module combinations stay automatic. Types/lint pass and 125 affected cases -pass. Eight isolated runtime scenarios cover both answers across four legal AI -profiles; a real 390px control check confirms the shipment question is selectable -for a classic payer and refused for a Richese target, with no horizontal overflow. +human Truthtrance panel and validation share it. Native Richese/No-Field shipment +questions and other module combinations remain outside this admitted question +scope. Types/lint pass and 125 affected cases pass. Eight isolated runtime +scenarios cover both answers across four legal AI profiles; a real 390px control +check confirms the shipment question is selectable for the active classic payer +and refused for a non-active Richese target, with no horizontal overflow. No saved store or deployed game was targeted. See [the source/runtime boundary](SEMUTA_SOURCE_UPDATE_20260907.md). @@ -61,9 +65,10 @@ deleted. Types/lint pass and 41 cases pass. answer now offers its consumed card even when another question remains reserved. Only the `remaining === null` software restriction changed: claim or all-seat decline leaves public history and the consumed card's custody settled, then -restores the same remaining queue at `ask` once. Promise-bound shipment and -battle-plan answers, shrine source and every other Truthtrance path stay -automatic. Types/lint pass; the affected 97-case union passes. Seven isolated +restores the same remaining queue at `ask` once. At that checkpoint, promise-bound +shipment and battle answers still continued automatically; the later checkpoints +above admit those paths. Shrine-source answers remain automatic. Types/lint +pass; the affected 97-case union passes. Seven isolated runtime scenarios cover claim/pass, four legal AI profiles and a rejected retired-event replay. The permanent regression fails before and passes after. No saved store or deployed game was targeted. See diff --git a/docs/IMPLEMENTATION_STATUS.md b/docs/IMPLEMENTATION_STATUS.md index 6d7ce4f1..26cfc2c0 100644 --- a/docs/IMPLEMENTATION_STATUS.md +++ b/docs/IMPLEMENTATION_STATUS.md @@ -6,9 +6,10 @@ The Truthtrance receipt already carried a battle promise and the integrity validator already enforced it. The Semuta admission excluded every promise kind other than none, and a separate guard refused any reaction while a battle existed. Admitting `kind === 'battle'` and exempting `truthtranceDiscard` from the -battle-presence guard lets an unsubmitted battle-plan answer offer its consumed -card without touching the promise or its enforcement. Submitted and revealed plans -bind no new promise and remain automatic. +battle-presence guard lets an ordinary definite battle answer offer its consumed +card without touching the promise or its enforcement. Submitted/revealed-plan +questions bind no new promise but still offer Semuta, as do ordinary fact answers +during battle; the original checkpoint's automatic-continuation claim was wrong. The regression fails before (no offer) and passes after, covering claim and decline, the surviving promise, an illegal-dial rejection, the legal dial, public @@ -17,6 +18,12 @@ union passes. The fixture needed both combatants marked ready in the shared pre-leader phase before a plan can be committed; that is existing battle preparation, not a change to it. +An isolated runtime smoke subsequently exercises unsubmitted, submitted, revealed +and battle-fact answers with claim, all-seat pass and four legal AI profiles +(24 scenarios). Battle plans and history remain unchanged; retired events reject. +The unsubmitted promise rejects dial0 and accepts dial2; the submitted and fact +paths accept the next legal plan without changing the answered plan. + This is local changed-path proof, not complete Semuta or deployed acceptance. Contracts: [source boundary](SEMUTA_SOURCE_UPDATE_20260907.md), [discard continuations](SEMUTA_DISCARD_CONTINUATIONS.md). diff --git a/docs/SEMUTA_DISCARD_CONTINUATIONS.md b/docs/SEMUTA_DISCARD_CONTINUATIONS.md index 6a6f09a5..235f578e 100644 --- a/docs/SEMUTA_DISCARD_CONTINUATIONS.md +++ b/docs/SEMUTA_DISCARD_CONTINUATIONS.md @@ -14,20 +14,18 @@ gifts and competing parents retain the original direct transfer behavior without this Semuta reaction. The table below remains the broader producer/continuation inventory, not a claim of complete coverage. -A clean definite Truthtrance answer now offers its consumed card even when another -question remains reserved, and also when the answer bound a shipment promise in -the supported Richese Semuta profile or an unsubmitted battle-plan promise. Claim -or all-seat decline leaves public history, the consumed card's custody and any -bound promise settled, then restores the same remaining queue at `ask` once. -Shrine-source, submitted/revealed battle-plan and unsupported native No-Field -shipment answers retain their automatic continuation. +A clean ordinary definite Truthtrance answer now offers its consumed card even +when another question remains reserved, when the answer bound a supported +shipment or unsubmitted battle-plan promise, or when it concerns a submitted/ +revealed battle plan or a fact during battle. Claim or all-seat decline leaves +public history, plans, the consumed card's custody and any bound promise settled, +then restores the same remaining queue at `ask` once. Submitted/revealed plans +bind no new promise; their answers do not skip the offer. -The same preview also pauses a final definite Truthtrance after its -public answer, history and physical card disposal are committed. An -ordinary held Truthtrance with no new promise or competing parent -qualifies; a claim may move that consumed card, never re-answer the -question or rewrite its history. Other Truthtrance continuations remain -automatic. +Shrine-source answers and competing-parent continuations remain automatic. +Native Richese/No-Field shipment questions and unsupported module combinations +remain outside the admitted shipment-question scope. A claim may move the +consumed card, never re-answer the question or rewrite its history. Clean Once Around Sapho stages `saphoAuctionDiscard` after the open lot's finite bidder reorder, hand-slot release and public card disposal, diff --git a/docs/SEMUTA_SOURCE_UPDATE_20260907.md b/docs/SEMUTA_SOURCE_UPDATE_20260907.md index 9c1e052f..874b4647 100644 --- a/docs/SEMUTA_SOURCE_UPDATE_20260907.md +++ b/docs/SEMUTA_SOURCE_UPDATE_20260907.md @@ -245,16 +245,21 @@ separate [reaction privacy audit](SEMUTA_PRIVACY_REVIEW.md) explains why auto-closing only when nobody secretly holds the card would leak possession. The main game and public expansion gates remain closed. -**11 October 2026 — battle-plan promise answer.** An unsubmitted battle-plan -Truthtrance answer now offers the consumed card too. Only the promise-kind -admission and the battle-presence exemption changed; the battle promise and its -legality enforcement are untouched, and a submitted or revealed plan still binds -no new promise and stays automatic. Claim or all-seat decline leaves the plan -binding enforceable. +**11 October 2026 — ordinary battle answer.** Ordinary definite Truthtrance +answers now offer the consumed card during battle. This includes unsubmitted +battle-plan promises, questions about submitted/revealed plans and fact questions. +Only the promise-kind admission and battle-presence exemption changed; promise +legality enforcement is untouched. A submitted or revealed plan binds no new +promise, but its consumed Truthtrance still receives the offer. Claim or all-seat +decline preserves the same plans, history and any binding promise. -The permanent regression fails before and passes after; the affected union passes -126 cases and typecheck/lint pass. This is local changed-path evidence, not -complete Semuta or deployed acceptance. +The permanent promise regression fails before and passes after; the affected +union passes 126 cases and typecheck/lint pass. An isolated engine smoke covers +all four question/plan states with claim, all-seat pass and four legal AI profiles +(24 scenarios). It observes unchanged battle/history, retired-event rejection, +illegal-dial rejection and legal commitment after a bound promise, and subsequent +plan submission after the submitted-plan and fact answers. This is local +changed-path evidence, not complete Semuta or deployed acceptance. **11 October 2026 — shipment-promise answer.** A classic payer's ordinary Truthtrance shipment answer in the Richese Semuta profile now offers the consumed @@ -263,20 +268,24 @@ all-seat decline leaves the same obligation enforceable. To admit it, the structured shipment-question scope gained the Richese Semuta profile for a non-Richese active payer; the availability boundary is now server-projected (`truthShipmentSupported`) so human controls and validation share it. Native -No-Field shipments and other module combinations stay automatic. +Richese/No-Field shipment questions and other module combinations remain outside +this admitted question scope. The permanent regressions fail before and pass after. The affected union passes 125 cases and typecheck/lint pass. Eight isolated CLI scenarios cover both answers across four legal AI profiles, plus a real 390px control check that the shipment -question is selectable for a classic payer and refused for a Richese target. This -is local changed-path evidence, not complete Semuta or deployed acceptance. +question is selectable for the active classic payer and refused for a non-active +Richese target. That control check does not independently prove an active Richese +boundary. This is local changed-path evidence, not complete Semuta or deployed +acceptance. **11 October 2026 — queued Truthtrance answer.** An ordinary definite answer now offers its consumed card while another question remains reserved. Only the -`remaining === null` software restriction changed; promise-bound shipment and -battle-plan answers, shrine source and every other Truthtrance path stay -automatic. Claim or all-seat decline restores the same remaining queue at `ask` -once with history, card custody and priority intact. +`remaining === null` software restriction changed. Promise-bound shipment and +battle answers still continued automatically at that checkpoint; the later +checkpoints above admit them. Shrine-source answers remain automatic. Claim or +all-seat decline restores the same remaining queue at `ask` once with history, +card custody and priority intact. The permanent regression fails before and passes after. The affected union passes 97 cases and typecheck/lint pass. Seven isolated CLI scenarios cover diff --git a/game/reference.ts b/game/reference.ts index 1dace050..f37a6999 100644 --- a/game/reference.ts +++ b/game/reference.ts @@ -1169,7 +1169,7 @@ export const RULE_TOPICS: RuleTopic[] = [ : definition.card.effect === 'portableSnooper' ? 'Choose Portable Snooper as your ordinary poison defense, or use the late-defense panel after reveal before your own traitor decision. It uses ordinary winner retention and cannot stop Poison Tooth.' : definition.card.effect === 'semutaDrug' - ? 'In the explicit Richese development preview, every seat sees a neutral response to supported clean discards. A CHOAM & Richese game may include the Ix deck: Thumper pauses before worm/spice draw; Amal pauses after halving spice before opening resumes. Other public sources include ordinary cards, paid Box, Ornithopter, Distrans, final Truthtrance including a queued ordinary answer, a supported shipment promise or an unsubmitted battle-plan promise, four clean Sapho scopes, pre-leader Residual Poison, printed Karama canceling clean CHOAM Charity, Inflation or Bene Gesserit Charity, a clean printed Karama normal-auction purchase or winning-bid payment before lot settlement, a completed CHOAM card sale after its bank income, clean Kulon Worthless disposal before its movement bonus, proactive La La La disposal before blocking free revival, proactive Baliset before restricting movement, proactive ordinary Trip to Gamont before returning a force, accepted Jubba Cloak before storm protection, and three battle batches. A private normal-auction or Black Market Ixian ally replacement also pauses before drawing, without showing its face until a holder commits; original payment and seller income settle once. Cache purchases cannot use native Ixian allied replacement. Ordinary definite Truthtrance answers pause even when another question stays reserved or the answer bound a supported shipment or unsubmitted battle-plan promise. Under the user-selected exchange ruling, Commit may replace Semuta even at your faction hand limit: acquisition and Semuta disposal settle atomically, without increasing your completed hand. Reserved incoming cards still need room. For multiple eligible cards, inspect and select exactly one after commitment. Saved effects resume once. Other private discards, Karama uses, reactive Worthless uses except printed Jubba, elite or concealed Trip returns, inspected/partly ready battles, nested responses, pending rewards and public starts remain unfinished.' + ? 'In the explicit Richese development preview, every seat sees a neutral response to supported clean discards. A CHOAM & Richese game may include the Ix deck: Thumper pauses before worm/spice draw; Amal pauses after halving spice before opening resumes. Other public sources include ordinary cards, paid Box, Ornithopter, Distrans, definite ordinary Truthtrance answers including queued questions, supported shipment promises and battle answers before or after plan submission/reveal, four clean Sapho scopes, pre-leader Residual Poison, printed Karama canceling clean CHOAM Charity, Inflation or Bene Gesserit Charity, a clean printed Karama normal-auction purchase or winning-bid payment before lot settlement, a completed CHOAM card sale after its bank income, clean Kulon Worthless disposal before its movement bonus, proactive La La La disposal before blocking free revival, proactive Baliset before restricting movement, proactive ordinary Trip to Gamont before returning a force, accepted Jubba Cloak before storm protection, and three battle batches. A private normal-auction or Black Market Ixian ally replacement also pauses before drawing, without showing its face until a holder commits; original payment and seller income settle once. Cache purchases cannot use native Ixian allied replacement. Ordinary definite Truthtrance answers pause even when another question stays reserved or the answer bound a supported shipment or unsubmitted battle-plan promise. Submitted/revealed plans bind no new promise, but their answers still offer Semuta without changing the plan. Under the user-selected exchange ruling, Commit may replace Semuta even at your faction hand limit: acquisition and Semuta disposal settle atomically, without increasing your completed hand. Reserved incoming cards still need room. For multiple eligible cards, inspect and select exactly one after commitment. Saved effects resume once. Other private discards, Karama uses, reactive Worthless uses except printed Jubba, elite or concealed Trip returns, inspected/partly ready Residual Poison battles, nested responses, pending rewards and public starts remain unfinished.' : 'Reference component only: this Richese card’s game actions are not enabled.', ], ...(definition.card.effect === 'semutaDrug' @@ -1197,7 +1197,7 @@ export const RULE_TOPICS: RuleTopic[] = [ area: 'Documentation' as const, status: 'Partial' as const, detail: - 'The guide distinguishes clean public ordinary-card, paid Box, Ornithopter, Distrans, Truthtrance (including a queued ordinary answer, a supported shipment promise or an unsubmitted battle-plan promise), four Sapho scopes, pre-leader Residual Poison, printed Karama cancellation of CHOAM Charity, Inflation or Bene Gesserit Charity or clean normal-auction purchase or winning-bid payment, completed CHOAM card sales, clean Kulon/proactive La La La/Baliset/ordinary Trip to Gamont Worthless and accepted printed Jubba Cloak, Ix-deck Thumper/Amal and three battle batches from a private normal-auction or Black Market Ixian ally replacement, the cache replacement prohibition, privacy-neutral acknowledgements, the user-approved atomic full-hand exchange and remaining discard sources.', + 'The guide distinguishes clean public ordinary-card, paid Box, Ornithopter, Distrans, definite ordinary Truthtrance answers (including queued questions, supported shipment promises and battle answers before or after plan submission/reveal), four Sapho scopes, pre-leader Residual Poison, printed Karama cancellation of CHOAM Charity, Inflation or Bene Gesserit Charity or clean normal-auction purchase or winning-bid payment, completed CHOAM card sales, clean Kulon/proactive La La La/Baliset/ordinary Trip to Gamont Worthless and accepted printed Jubba Cloak, Ix-deck Thumper/Amal and three battle batches from a private normal-auction or Black Market Ixian ally replacement, the cache replacement prohibition, privacy-neutral acknowledgements, the user-approved atomic full-hand exchange and remaining discard sources.', }, { area: 'Verification' as const,