Files
Dune/docs/TRUTHTRANCE_BID_PROMISES.md
T

18 KiB

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 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 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 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 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 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 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.