Allow Distrans before the first ordinary auction bid

This commit is contained in:
Quintine committed 2026-10-26 08:40:44 +11:00
1 parent 34dccdfd99
commit 2ea3c58f68
19 files changed
+906 -42

No files matched your search

+35 -7
View File
@@ -16,6 +16,41 @@ open mode gates.
## Current checkpoint and work
**Distrans before the first bid/pass — 26 October. Prototyped / Partial.**
An untouched ordinary lot now allows the private card transfer before its first
bid or pass, with the same dealt pool/index/opener/order/active seat. The span is
explicitly provisional; active bids, unpaid special auctions and self-transfer
keep their restrictions. Current capacity controls new bids after a gift: a full
active seat sees Raise disabled, can Pass, and all four minimal profiles do so.
Existing card action/projection and the paid-sale allowance remain.
Two disjoint native/control lanes and root integration pass **10 files,68/68**,
types/lint/build and **eight native engine/GameTable SSR/actual leaf-callback
paths** on unchanged source. Original public R/G/A/E sources buy Distrans for1
and give the original Guild Shield. Native purchases earn full-donor and final-
slot recipient positions; real Pass and payment finish the same lot. A genuinely
full recipient rejects at turn2. All45 original Treachery remain. Source actions
are Basic33/42/44/87 and Advanced38/47/49/96 for ordinary/donor-full/final-slot/
already-full paths. Fourteen native cases and seven controlled rendering cases
cover the new span; existing quote/bot/auction regressions remain green.
Types/lint/build/test proof: private `20261026-distrans-prebid-proof-v2/`;
runtime companion and composed same-source evidence:
`/home/quintine/.local/share/dune/checkpoints/20261026-distrans-prebid-runtime-proof-v3/`;
journeys/HTML: adjacent `20261026-distrans-prebid-runtime/`.
The private runtime selector was repaired for the button's actual arrow SVG;
application source stayed unchanged. No saved-room/D1/server, reset/restart,
deployment or recovery operation occurs. SSR/callbacks do not prove DOM/hydration,
browser/mobile/deployed acceptance. Complete rules/combinations and final
assurance remain open. [Source and policy](RICHESE_DISTRANS_ENGINE_AUDIT.md#untouched-ordinary-lot--26-october-2026).
Next concrete Basic function gap: Truthtrance's structured-question engine
accepts two through eight facts, but the authoring panel only exposes two.
Connect add/remove fact controls to the existing AND/OR action with actual
aggregate-answer/resumption evidence. See `components/truthtrance.tsx`,
`game/truthtrance.ts`, `tests/fixture-truth-movement-early.ts` and
[the source contract](TRUTHTRANCE_CARD_COUNT.md).
**Shared Ecaz Ambassador Duke — 26 October. Prototyped / Partial.**
The triggered token can now grant its living Duke to Ecaz's current reciprocal
ally. Per-recipient controls and all four minimal profiles use the server's
@@ -42,13 +77,6 @@ Actual hook-free callbacks and SSR are not DOM/hydration or browser/mobile/
deployed acceptance. Complete rules/combinations, mode gates and final assurance
remain open. [Source and selected tenure](ECAZ_DUKE_ACQUISITION.md#existing-ally-direct-acquisition--26-october-2026).
Next concrete Basic function gap: Distrans rejects even an untouched ordinary
auction lot before the first bid/pass. Scope that pre-bid transfer under the
14 October recommended-policy authority, retaining the actual card, lot/order,
hand-limit eligibility and active-bid restrictions. See
[the timing audit](RICHESE_DISTRANS_ENGINE_AUDIT.md), `distransBlock` and
`tests/distrans-engine.test.ts`; broader special-auction timing remains separate.
**Caladan reinforcement before Face Dance — 26 October. Prototyped / Partial.**
The original winning army may now take its optional reinforcement before native
replacement. The later reveal uses the live10/11 Arrakis or3/4 Homeworld force
+32
View File
@@ -1,5 +1,37 @@
# Dune implementation status
## 26 October 2026 — Distrans before the first ordinary bid/pass
**Prototyped / Partial.** Select a provisional first-bid/pass span under the
14 October authority. A real untouched ordinary lot now admits the existing
private transfer with its dealt pool, index, opener, order and active seat intact.
First bid/pass, unpaid special-auction and self-transfer restrictions remain;
completed paid-sale use keeps its existing allowance. Current hand capacity is
shared by engine/table/minimal bots, so a now-full active bidder cannot raise
but may Pass, then the original cycle skips ineligible hands. No new saved
field or response is introduced. Persistent controls explain the interpretation.
Frozen **10-file68/68**, types/lint/build and **eight native engine/GameTable
SSR/actual hook-free transfer-callback paths** pass. Public R/G/A/E starts buy
the actual cache Distrans for1 and give the original Guild Shield. Real ordinary
purchases earn both capacity cases and the full-recipient next-turn refusal.
Source actions are Basic33/42/44/87 and Advanced38/47/49/96 for ordinary/full-
donor/final-slot/already-full paths. Actual Pass, payment and native retirement
finish the same lot; all45 original cards remain. Fourteen native cases, seven
controlled rendering cases and the related existing quote/bot/auction tests
cover the slice. Feedback corrected the controls' test expansion identifier,
the optional own-hand count fallback and a private SSR selector's SVG assumption.
Test/types/lint/build: private `20261026-distrans-prebid-proof-v2/`;
runtime/composed same-source proof:
`/home/quintine/.local/share/dune/checkpoints/20261026-distrans-prebid-runtime-proof-v3/`;
journeys/HTML: adjacent `20261026-distrans-prebid-runtime/`.
Only the private selector changed before the runtime companion; source stayed
unchanged. No saved-room/D1/server, reset/restart, deployment or recovery
operation. Browser/mobile/deployed acceptance, broader auction timing, complete
rules/combinations and final assurance remain open.
[Source and selected policy](RICHESE_DISTRANS_ENGINE_AUDIT.md#untouched-ordinary-lot--26-october-2026).
## 26 October 2026 — Existing-ally Ecaz Ambassador Duke acquisition
**Prototyped / Partial.** Connect the printed benefit-sharing branch to the
+1 -1
View File
@@ -97,7 +97,7 @@ The updated physical Karama explicitly includes alliance abilities among cancell
**Directly supported by the face.** Its owner gives another player one Treachery Card from the owner's hand, provided the other player's hand is not full. Any other faction can receive it, without requiring an alliance. The effect has no printed spice fee. Distrans is discarded after use; the gifted card transfers without being discarded. The printed exception is “other than during a bid.” The effect is a card effect, not itself a faction/alliance power that generic Karama cancels. No recipient accept/refuse step is printed.
**Unresolved exact span.** No retrieved primary answer defines whether “a bid” means the complete auction of one card or only an individual bid declaration. Treating the whole Bidding phase as forbidden is broader than the face. A defensible bounded policy blocks Distrans throughout an unresolved lot, including Silent submissions and payment, while allowing it between lots when no bid is pending. Record that as an interpretation until clarified. Never permit it between Silent submissions to probe hidden commitments or invalidate fixed eligibility without a settlement policy.
**Selected provisional span — 26 October 2026.** No retrieved primary answer defines whether “a bid” means the complete auction of one card or only an individual bid declaration. Treating the whole Bidding phase as forbidden is broader than the face. Under the 14 October recommended-policy authority, an untouched ordinary lot now permits use before its first bid or pass, with its dealt pool and cycle intact. Active bids and unpaid special lots, including Silent submissions, remain guarded; paid-sale use keeps its existing separate allowance. [Current timing and live hand-capacity contract](RICHESE_DISTRANS_ENGINE_AUDIT.md#untouched-ordinary-lot--26-october-2026). Never use a transfer between Silent submissions to probe hidden commitments or invalidate fixed eligibility without a settlement policy.
Distrans itself as the gifted card is not resolved by the face's give-then-discard instruction. Do not put the same physical card in both the recipient's hand and discard; reject that target as unsupported pending clarification. Other reserved/committed-card and answer-first constraints are the same continuation concerns as the alliance gift. A successful ordinary transfer consumes exactly the chosen separate card plus Distrans from the donor's hand, adds the chosen card to the recipient, and puts only Distrans in normal discard. This produces a new discard event relevant to future Semuta integration.
+52 -2
View File
@@ -2,6 +2,56 @@
Audit date: 2026-09-06. Read `docs/RICHESE_ACQUISITION_RULES.md` first. This audit does not activate the card or certify the remaining Richese effects.
## Untouched ordinary lot — 26 October 2026
The printed exception excludes use during a bid, without defining its complete
span. Under the 14 October choose-recommended authority, allow Distrans on a
real untouched ordinary lot before its first bid or pass. This is a provisional
timing composition, not a retrieved publisher clarification. It supersedes only
that part of the original blanket unpaid-lot boundary below. Later lots may
qualify independently; already committed lot quantity and physical deck order
do not change. The existing completed paid-sale allowance remains.
`game/distrans-timing.ts` supplies the authoritative timing block. It requires
Bidding, an actual current ordinary card, zero bid, no bidder/passes/contribution
and no Richese special lot. Current inspection does not consume this window.
The first accepted bid or pass closes it for that lot; no action resets the
bid history to permit a transfer. Once Around/Silent unpaid lots, self-transfer,
Truthtrance, exact physical reservations and pending capacity commitments keep
their existing restrictions. This does not certify every auction substep.
The existing action, private projection and selectors remain. Persistent human
guidance identifies the provisional span. Both outgoing cards and the recipient
are validated before the normal private transfer/discard; no recipient consent,
payment or extra deal is added. The current lot/cards/index/opener/order/active
seat remain. Full donor hands can free space, while a recipient whose final
slot is filled cannot buy beyond its limit. Shared `normalAuctionHandBlock`
is used by the engine, minimal AI and table controls: a now-full active player
may pass, then the existing cycle skips ineligible hands. No new saved field,
source kind or transfer response is introduced.
Frozen evidence: **10 files,68/68**, types/lint/build and eight native
engine/GameTable SSR/actual hook-free transfer-callback paths. The public
R/G/A/E source buys the physical cache Distrans for1 and retains its original
starting Shield. Actual ordinary purchases create full-donor, final-slot active
recipient and already-full recipient positions. The last rejects at turn2;
successful transfers finish the original lot through native bidding/payment.
All45 original cards remain. Source actions: Basic33/42/44/87 and
Advanced38/47/49/96 in that four-path order. Fourteen native engine and seven
controlled rendering/callback cases supplement the existing related regressions.
Test/types/lint/build logs are in private `20261026-distrans-prebid-proof-v2/`;
runtime/composed same-source evidence:
`/home/quintine/.local/share/dune/checkpoints/20261026-distrans-prebid-runtime-proof-v3/`;
journeys/HTML: adjacent `20261026-distrans-prebid-runtime/`.
The private smoke selector was corrected for the rendered arrow SVG without
changing application source. No saved-room/D1/server or recovery operation;
SSR/callbacks do not prove DOM/hydration or browser/mobile/deployed acceptance.
The official publisher URL still appears in indexed search, but a fresh direct
fetch returned403; this change uses the recorded face text and selected policy,
not a claim of a newly published ruling. Full Richese games, wider auction
timing, combinations and final assurance remain open.
## Verified printed effect
Distrans is a Special Treachery Card. Its holder gives **one other player one Treachery Card from the holder's hand**, provided the recipient has room. It can be played at any time except during a bid. Distrans is discarded after use.
@@ -28,7 +78,7 @@ The distinction between an ordinary Treachery effect and a cancellable faction/a
## Explicit unresolved guards
1. **Giving the activating Distrans itself.** The give-then-discard wording does not explain self-selection. Do not put the same physical card in both the recipient's hand and the discard, discard a different card, or silently omit the discard. Until clarified, require a separate transferred card and label self-selection unsupported, not a printed prohibition.
2. **Exact scope of “during a bid.”** The face does not define whether this means one bid declaration or the complete auction of a card. It does not say the entire Bidding phase. A temporary guard over unresolved normal/Once Around/Silent lots, including unsettled payment, is an explicit conservative implementation boundary. Pre-bid declaration/selection, between-lot windows and post-purchase income are distinct contexts; do not silently present a blanket phase-3 ban as the official rule. The user has already been asked about this boundary by root; this audit adds no question or assumed answer.
2. **Exact scope of “during a bid.”** The face does not define whether this means one bid declaration or the complete auction of a card. It does not say the entire Bidding phase. The 26 October selected policy above now permits an untouched ordinary lot before its first bid/pass; live normal/Once Around/Silent lots, including unsettled payment, retain the explicit timing boundary. Pre-bid declaration/selection, between-lot windows and post-purchase income are distinct contexts; do not present a blanket phase-3 ban as the official rule. The earlier open question is superseded only by that selected provisional scope.
3. **Active Truthtrance answer priority.** Existing question/priority resolution prevents changing the queried hand mid-question. No retrieved Distrans-specific rule overrides it. Keep this narrow existing priority boundary, rather than disabling Distrans for every unrelated decision or response.
4. **Semuta discard reaction — updated 11 October 2026.** The explicit development preview reacts after a clean completed transfer, including during battle. Only the used Distrans is fresh; the privately transferred card is never a Semuta target. Claim or decline cannot repeat the transfer or change a sealed plan. The recipient may itself hold Semuta and claim the used card while keeping the earlier gift. Competing parents retain their separate boundaries; the neutral response and approved full-hand exchange are documented in [the Semuta source/runtime contract](SEMUTA_SOURCE_UPDATE_20260907.md).
@@ -98,7 +148,7 @@ Recommended regressions: atomic distinct-card conservation and fresh-version rep
## Runtime integration checkpoint
The ordinary card action and owner-only projected transfer choices are integrated. Shared exact-card reservations cover saved parent Ix replacements and pending gifts; prospective checks preserve compulsory exchanges and binding donor promises. No new response or recipient confirmation is created. The supported post-payment context uses currentAuctionSale only after the existing code has paid and transferred the purchased card. Open unpaid lots and self-transfer remain explicit unresolved guards.
The ordinary card action and owner-only projected transfer choices are integrated. Shared exact-card reservations cover saved parent Ix replacements and pending gifts; prospective checks preserve compulsory exchanges and binding donor promises. No new response or recipient confirmation is created. The supported post-payment context uses currentAuctionSale only after the existing code has paid and transferred the purchased card. The 26 October prototype admits untouched ordinary lots; live bids, unpaid special lots and self-transfer remain guarded.
Six root engine, six independent review, five AI and three real SQLite/API cases pass, in addition to six pure custody cases. Full registered suites pass1,247 rules/client and96 persisted/API tests; TypeScript, lint and production build pass. The real browser gave Shield from a synthetic Harkonnen hand using Distrans while preserving a separate pending Richese gift; fresh-tab recovery did not replay it. Exact logs and fixtures are in IMPLEMENTATION_STATUS.md. Mobile, future Semuta, bid/self-transfer rulings and full Richese games remain incomplete.
+13
View File
@@ -1,5 +1,18 @@
# Rule decision index
## Distrans before the first ordinary bid/pass — 26 October 2026
The printed card permits use except during a bid (publisher E2 p5). Under
14 October choose-recommended authority, a physical ordinary lot with no bid,
bidder, pass or committed contribution may accept Distrans before its first bid
or pass. This selects a provisional span; inspection and opening the lot do not
themselves begin that bid. Keep the original dealt pool, lot index, opener,
cycle and active seat. Live bids, unpaid special auctions and self-transfer keep
their existing separate restrictions; completed paid-sale use stays available.
After a transfer, current hand capacity controls new ordinary bids: a now-full
active seat can pass and the existing cycle recalculates eligibility.
[Source and execution](RICHESE_DISTRANS_ENGINE_AUDIT.md#untouched-ordinary-lot--26-october-2026).
## Existing-ally Ecaz Ambassador Duke acquisition — 26 October 2026
Connect printed Ambassador benefit sharing (publisher E3 p8, authorized