Allow Distrans before the first ordinary auction bid
This commit is contained in:
1 parent
34dccdfd99
commit
2ea3c58f68
19 files changed
+906
-42
No files matched your search
+35
-7
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in new issue
Block a user