277 lines
18 KiB
Markdown
277 lines
18 KiB
Markdown
# Truthtrance ordinary bid commitments
|
|
|
|
## Basic phase-wide bids through Ixian and Richese preparation — 28 October 2026
|
|
|
|
**Prototyped / Partial.** A pre-Bidding `{kind:'phaseBid'}` answer can now
|
|
continue through native Basic Ixian inspection or cancellation and through
|
|
the Richese cache before ordinary bidding. Richese's cache replaces one
|
|
ordinary lot; a future witness therefore requires an eligible ordinary lot,
|
|
an available physical card, funding and hand space. A definite Truthtrance
|
|
answer spends its actual held card, so a full asker's newly freed hand slot is
|
|
included. Cache bids do not fulfill or violate an ordinary-bid commitment.
|
|
|
|
For a potential cache purchase, the respondent's own bid reserves its physical
|
|
hand slot, possible Harkonnen bonus slot, funds and committed allied aid; the
|
|
forecast does not read rival sealed amounts or assume a rival bid. Voluntary
|
|
actions must preserve a funded Yes, while settled opposing effects can release
|
|
an impossible one. Existing positive early-cache bid commitments do not admit
|
|
an independent phase Yes without a joint planner. Basic native Semuta can
|
|
finish its real discard window; Printed Kull and optional modules remain
|
|
outside this slice. The publisher FAQ permits current-turn questions while
|
|
possible; this detailed forecast remains a provisional software policy.
|
|
|
|
An expired ordinary-auction clock now uses the existing phase-bid guide when a
|
|
required Yes prevents passing; a No remains in force until Bidding actually
|
|
closes. Thirteen focused files pass 89 cases, including native Ixian inspection
|
|
and cancellation, Richese first/last Once Around and Silent lots, funding and
|
|
hand-slot limits, actual Truthtrance discard, minimal bot guides and clock
|
|
expiry. Selected edge cases explicitly stage conserved unopened cards. Types,
|
|
lint and build pass. Other module combinations, full Truthtrance coverage and
|
|
deployed acceptance remain open.
|
|
|
|
## Basic early Richese cache bid — 28 October 2026
|
|
|
|
**Prototyped / Partial.** Before Bidding, a player may ask whether the target
|
|
will make at least a stated bid in this turn's first Richese cache auction.
|
|
The card, method, direction and public auction event do not yet exist in the
|
|
question. A waiting receipt attaches to the real cache event before settlement,
|
|
then reuses the existing Once Around or Silent obligation, legal guide and
|
|
sealed-bid behavior. Yes is fulfilled by a qualifying accepted declaration,
|
|
not a win; No caps the bid. An actual canceled or unavailable cache releases
|
|
Yes and fulfills No. A real opposing bid can also make a later Yes impossible.
|
|
|
|
The early feasibility witness conservatively uses current uncommitted personal
|
|
spice and hand space, without assuming future allied funding or rival bids;
|
|
uncertain cases can answer No or unknown rather than inventing a Yes witness.
|
|
Other positive financial/action promises remain guarded until a joint planner
|
|
exists. During the wait, a voluntary action cannot eliminate a funded Yes;
|
|
an outstanding leading ordinary purchase reserves a hand slot (two for a
|
|
Harkonnen bonus draw). A waiting Richese owner can choose Silent; if the owner
|
|
chooses Once Around and all others pass, the unreachable Yes is released. This
|
|
is an online feasibility policy, not a publisher ruling. The general
|
|
[GF9 FAQ p. 8](https://www.gf9games.com/dune/wp-content/uploads/2020/11/Dune-FAQ-Nov-2020.pdf#page=8)
|
|
permits game-related current-turn questions and compliance while possible.
|
|
|
|
Thirteen focused files pass 74 cases. Basic native first/last Once Around and
|
|
Silent paths exercise both answers, real event binding, guides and all four
|
|
minimal bot profiles. Additional real-auction cases exercise voluntary spending,
|
|
the final hand slot, canceled cache and the owner's Once Around turn; some
|
|
explicitly stage conserved unopened cards. The owner sees a persistent waiting
|
|
reminder; controls are tested with component callbacks. Printed Kull, broader
|
|
combinations, Advanced early questions and deployed
|
|
acceptance remain open.
|
|
`npm run check:quick` and the production build passed for this batch.
|
|
|
|
## Richese Silent bid prototype — 27 October 2026
|
|
|
|
**Prototyped / Partial.** The existing event-bound Richese minimum-bid question
|
|
also applies to the respondent's one unsubmitted Silent bid. A qualifying
|
|
positive sealed bid fulfills Yes; No permits zero or a bid below the threshold.
|
|
The answer and guide use only the respondent's actual available funds and aid,
|
|
not other sealed amounts. All eligible submissions retain native escrow and
|
|
reveal simultaneously in original tie order; only the winner pays. When a hand
|
|
becomes full, the native automatic zero releases an impossible Yes or completes
|
|
No. Its public text matches a manual sealed submission and its action tag is neutral. Public hand counts can still allow inference of a forced zero. Five focused
|
|
files pass 54/54; type/lint passed before the intervening test-only CI fix.
|
|
|
|
The [GF9 November 2020 FAQ p8](https://www.gf9games.com/dune/wp-content/uploads/2020/11/Dune-FAQ-Nov-2020.pdf#page=8)
|
|
supports action commitments while possible, but does not supply this specific
|
|
sealed-auction procedure. This remains a provisional interpretation. Normal
|
|
Black Market bidding, mixed questions and wider combined promises remain open.
|
|
Native Basic and Advanced R/A/E fixtures exercise original Silent lots, real
|
|
Truth cards, zero, positive bids, reveal and minimal bot guides. Separate
|
|
full-hand cases explicitly stage conserved unopened cards; selector/browser and
|
|
deployed acceptance remain open. Ten focused files pass 85/85 and build passes;
|
|
type/lint passed before the final test-only wording correction.
|
|
|
|
## Richese Once Around bid prototype — 27 October 2026
|
|
|
|
**Prototyped / Partial.** The distinct `{kind:'richeseBid', target, turn, event,
|
|
minimum}` question binds the current public Once Around lot, not its private
|
|
card identity. The original physical Truth card, one bid or pass, bid order,
|
|
capacity, currently available spice, pledged ally funding and native winner's
|
|
payment remain unchanged. An accepted qualifying bid fulfills Yes even if it
|
|
loses; No excludes qualifying declarations. The last-acting Richese owner gets
|
|
no opportunity if all other bidders pass, so Yes is not forecast without an
|
|
existing positive bid. A real opposing raise or loss of funds can release an
|
|
impossible Yes; the respondent cannot deliberately abandon it.
|
|
|
|
The public question editor, private answer, own receipt, event-bound guide and
|
|
four minimal legal bot profiles are connected. Existing positive independent
|
|
financial/transport commitments restrict admission in both answer orders until
|
|
a combined planner is implemented. Silent and normal special auctions, mixed
|
|
expressions, optional module combinations, broad Semuta discard interactions,
|
|
complete modes and browser/deployed acceptance remain open. Basic's native
|
|
Semuta preview may enter the quiet lot path, without certifying its combinations.
|
|
|
|
The [GF9 November 2020 FAQ p8](https://www.gf9games.com/dune/wp-content/uploads/2020/11/Dune-FAQ-Nov-2020.pdf#page=8)
|
|
supports current-turn action questions and compliance while possible but does
|
|
not prescribe this Once Around procedure. The online opportunity and release
|
|
policy is a provisional software interpretation, not a dedicated publisher
|
|
ruling. Native Basic/Advanced R/A/E starting deals and auction actions exercise
|
|
answers, costs, lot continuation, rival raises and minimal bots. A separate
|
|
Advanced bribe conflict uses a labeled card-conserving supplement. Server-rendered
|
|
controls and guide callbacks are exercised, without operating the stateful
|
|
selector. Ten focused files pass 120/120; type/lint and build pass.
|
|
|
|
## Phase-wide ordinary bid prototype — 27 October 2026
|
|
|
|
**Prototyped / Partial.** A distinct `{kind:'phaseBid', target, turn, minimum}`
|
|
asks whether the respondent will make at least one accepted ordinary bid of
|
|
that size after the answer and before this turn's Bidding ends. It may be asked
|
|
before Bidding or during a quiet ordinary lot on supported native tables. A Yes
|
|
survives lot changes until fulfilled or made impossible; No caps every later
|
|
ordinary bid until actual phase close. The original current-lot question and its
|
|
saved records remain separate. The general FAQ authority below does not contain
|
|
a phase-wide bid worked example, so these online feasibility rules are explicitly
|
|
provisional.
|
|
|
|
An accepted declaration fulfills Yes even if it later loses; purchases retain
|
|
their real payment. A later lot is not assumed when all players might pass:
|
|
there must already be a funded positive winning bid, a physically prepared next
|
|
card and post-purchase hand space and funding. Possible Basic and Advanced Harkonnen bonus
|
|
draws reserve their hand slot; a cancelable Karama-only overbid is not a funded
|
|
later-lot witness. Existing current-lot answers are considered before forecasting
|
|
the later invoice. Before Bidding, a witness uses current eligible hand space,
|
|
funding and available card count, without inventing a future acquisition. The
|
|
later Basic Ixian/Richese extension is documented above. Existing transport, revival and aggregate turn commitments retain current-lot
|
|
checks; the future combined planner is not implemented. Before Bidding, an
|
|
independent bribe can be quoted first using currently funded payments, leaving
|
|
only the actual remaining funds for the bid; current-lot independent bribe
|
|
combinations remain limited. Uncertain combinations do not create a fictitious
|
|
later witness or release an answer merely because that planner is absent. Full special-auction, mixed-expression and module coverage
|
|
remains open.
|
|
|
|
The private panel displays owned answers and a server-quoted current bid/pass;
|
|
its event and public lot ordinal reject stale guided actions. The ordinary
|
|
question control, current answer choices and four minimal bot profiles use the
|
|
same server projections. No extra card, funds, hand slot, auction or payment is
|
|
created. Prior bids do not count. Public Basic and Advanced fixtures exercise original Truth cards, actual bids
|
|
and competing funded and unfunded commitments; additional cases explicitly
|
|
stage conserved resources. Server-rendered controls and their engine callback
|
|
have focused smoke coverage. Stateful browser interaction, full-game,
|
|
recovery and deployed acceptance remain separate. The focused 12-file batch
|
|
passes 224/224; type/lint and the production build pass.
|
|
|
|
### Admission and external funding correction — 27 October 2026
|
|
|
|
Later independent shipment, movement, revival and travel answers are checked
|
|
against an existing phase-bid Yes before they are offered. A movement No does
|
|
not itself require a movement or suppress a future bid. When the combined future
|
|
planner cannot prove a positive answer, it may withhold that definite answer;
|
|
this remains a conservative prototype boundary, not a completed planner. An
|
|
external change releases an impossible Yes when a bribe and bid are fully
|
|
quoted, while an unsupported future combination remains unknown. Original
|
|
Basic/Advanced questions and real bids exercise the acceptance path; revival
|
|
and external-loss supplements stage a conserved force or spice transfer. Seven
|
|
focused files pass 88/88; type/lint and build pass.
|
|
|
|
## Current-lot prototype — 26 October 2026
|
|
|
|
**Prototyped / Partial.** The question binds one
|
|
future ordinary bid declaration of at least a chosen positive whole amount in
|
|
the current lot. Registered native Basic/Advanced tables use their selected
|
|
decks and ordinary auctions. Optional modules, independent cards, Semuta/Kull,
|
|
native special auctions and phase-wide/grouped bidding claims remain required
|
|
work. The [native force-revival follow-up](TRUTHTRANCE_REVIVAL_PROMISES.md) adds
|
|
current-phase ordinary returns; broader revival promises remain due. This does not change game-start permissions.
|
|
|
|
## Authority and selected interpretation
|
|
|
|
The [GF9 November 2020 FAQ, printed p8](https://www.gf9games.com/dune/wp-content/uploads/2020/11/Dune-FAQ-Nov-2020.pdf#page=8)
|
|
permits game-related yes/no questions and current-turn action commitments,
|
|
requires compliance while possible, and releases a later impossible answer.
|
|
Its worked example concerns shipment; it does not prescribe a bidding-specific
|
|
packet or online auction boundary. The official-domain indexed text was checked
|
|
for this slice. The previous [general source audit](TRUTHTRANCE_NONBATTLE_READINESS_20260907.md)
|
|
remains applicable.
|
|
|
|
Under the standing 14 October choose-recommended instruction, use a single
|
|
accepted bid in this exact ordinary lot. Only a still-eligible active or waiting
|
|
bidder can answer; current-highest, already-passed and full-hand players have no
|
|
new opportunity for this question. An earlier bid does not fulfill it. Yes
|
|
requires a qualifying declaration at the player's next available opportunity
|
|
while possible; a smaller bid or pass cannot rely on a future rival raise.
|
|
No forbids every later qualifying bid through the close of the lot. These are
|
|
explicit provisional software interpretations, not a dedicated publisher FAQ.
|
|
|
|
Fulfillment records the declaration, even if someone else wins. The original
|
|
winning invoice and Karama payment remain separate and binding. Legal native
|
|
Karama overbidding is retained; the question creates no spice, discount or free
|
|
purchase. Existing current cash, prepaid allied aid, capacity and normal quote
|
|
checks remain authoritative. Unknown purchases and future rival income are not
|
|
assumed. Earlier shipment/movement funding obligations constrain the bid quote.
|
|
|
|
## State, actions and continuation
|
|
|
|
`game/bid-promises.ts` validates positive safe-integer `turn`, one-based `lot`
|
|
and `minimum`. The new question is `{kind:'bid',target,turn,lot,minimum}`.
|
|
It uses the original card declaration, priority, Ask, public Yes/No, physical
|
|
discard and interrupted-auction continuation. It adds no automatic human reply.
|
|
|
|
The engine privately binds the original physical lot, turn, respondent and
|
|
asker with a distinct event. Public history contains the stated lot/minimum and
|
|
answer; the unrevealed card binding is never projected. Only the respondent
|
|
receives feasible answers and its own sanitized commitment/guide. The guide
|
|
waits for the real active seat and original pending windows, and its event
|
|
rejects stale guided callbacks. Ordinary manual bid packets retain their shape.
|
|
|
|
The native bid quote is shared with ordinary bidding. Yes requirements form a
|
|
lower bound; No requirements cap the permitted amount. Several original
|
|
Truthtrances must remain jointly satisfiable. A real accepted bid fulfills each
|
|
matching Yes; No persists. Native settlement, custody and income then continue
|
|
normally. A paid purchase is not another bid.
|
|
|
|
Own voluntary spending or closure cannot erase a remaining Yes. A completed
|
|
opposing raise can price out the respondent and release only impossible Yes
|
|
answers in accepted order; feasible answers and No constraints remain. Finished
|
|
lots fulfill No and release any forced impossible remainder. Records may stay
|
|
in history, but never bind another lot or turn. Recovery/privacy/custody
|
|
certification is deferred with the rest of the full-rules review.
|
|
|
|
## Connected controls and evidence
|
|
|
|
The original Truthtrance selector offers **Bind a bid in this ordinary lot**,
|
|
with fixed public lot/turn, editable validated minimum and an explicit preview.
|
|
Only feasible respondent answers are shown. `components/bid-promises.tsx`
|
|
keeps the owner's obligation and fulfilled/released status visible; its guarded
|
|
button submits the authoritative bid/pass packet without duplicating prices.
|
|
No transient notice is required. All four existing policies use the same legal
|
|
answer/next-action guidance; strategy and strength tuning remain deferred.
|
|
|
|
Pure cases: `tests/bid-promises.test.ts`. Native source and engine cases:
|
|
`tests/fixture-truth-bid.ts`, `tests/truth-bid-runtime.test.ts`. Controlled and
|
|
source-earned callbacks: `tests/truth-bid-controls.test.tsx`. Original H/A/E
|
|
starts genuinely deal Harkonnen both physical Truthtrances and the other native
|
|
hands. Only unopened deal/lot/Spice positions and scalar lotteries are selected;
|
|
no played card, purse, force, auction, question or promise is installed.
|
|
|
|
Frozen integration passes **14 files,175/175**, types/lint/build and four native
|
|
runtime paths with17 GameTable SSR renders and two actual guide callbacks.
|
|
Ten pure cases, fourteen native engine cases and six controlled/source-earned
|
|
UI cases cover the new contract. Related original auction, Banker/Bureaucrat,
|
|
funding and Truthtrance cases remain passing after the native quote extraction.
|
|
|
|
Public H/A/E Basic/Advanced active sources use22/25 actions plus8 each. Actual
|
|
declaration/priority/Ask/answer precede the authoritative bid callback; Yes4
|
|
fulfills before cash changes, then the original winner pays4. Four existing
|
|
minimal policies each submit a legal guide action per source. Waiting sources
|
|
use20+12 actions for No4/lower3/lot expiry/new-lot4, or20+9 for an actual A10
|
|
opposing bid, E10's released Yes8 and original A payment/native E income10.
|
|
|
|
Other native cases bind both original cards as No6 plus Yes4, lose after a
|
|
fulfilled declaration, spend an original Karama after the promised11 bid and
|
|
reject stale/foreign packets and voluntary loss of required funding. An earlier
|
|
shipment Yes9 disallows later bid Yes4; a paid1 card leaves the actual9 for a
|
|
native nine-force shipment. All33 original cards remain physical. SSR confirms
|
|
the original authoring option, respondent answers, persistent guide and final
|
|
statuses; actual hook-free callbacks execute the original native bid packet.
|
|
This is not DOM/hydration or browser evidence.
|
|
|
|
Report/source manifest:
|
|
`/home/quintine/.local/share/dune/checkpoints/20261026-truth-bid-proof-v1/`;
|
|
journeys/HTML: adjacent `20261026-truth-bid-runtime/`.
|
|
No saved-room/D1/server, reset/restart, deployment or separate assurance campaign.
|
|
Full Truthtrance, module/native-special composition, browser/mobile/deployed
|
|
acceptance and final assurance remain open.
|