Files
Dune/docs/TRUTHTRANCE_BID_PROMISES.md
T

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.