Files
Dune/docs/TRUTHTRANCE_MIXED_BIDS.md
T

8.2 KiB

Truthtrance current facts and ordinary bids

Mixed aggregate prototype — 26 October 2026

Prototyped / Partial. The packet is {kind:'mixedBid',target,turn,lot,mixed}. Fact/action/AND/OR clauses reuse MixedActionExpression<BidActionClaim>; each action contains only {minimum}. All bid leaves concern the same current ordinary lot. Quiet native Basic/ Advanced tables retain existing bid eligibility, mode gates, funded completion and original payment rules.

Authority and snapshot meaning

Reuse the recorded publisher November2020 FAQp8 current-turn/AND/OR and supplied Advanced physical39/printed37 compliance/release/unknown authority. The existing mixed Revival and movement models define the same answer-time fact snapshot. No source supplies a complete online solver; native current-lot opportunity, owned witness and accepted-order release remain provisional under standing14October priority.

Every fact freezes at the actual answer. A current-spice fact at10 stays that answer-time fact after an accepted bid4 and later winning payment leave6. Declaration itself spends no spice; the actual winning invoice does. Later resource/custody changes do not create new fact answers. No negates the entire mixed expression. Unknown takes false for Yes and true for No; any remaining native obligation must guarantee the selected aggregate. Correlations between unknown predicates are not inferred. If neither definite answer has a known guaranteed completion, unknown/save/change-question remains available.

True fact OR bid can settle Yes immediately, false fact AND bid No immediately, without binding any bid. Otherwise every positive leaf is a threshold on the maximum future accepted declaration in this exact lot. AND takes the maximum threshold; OR takes the minimum. This exact reduction preserves all legal amounts and whole No; it chooses no fixed route. Smaller declarations never sum into a larger bid, and a purchase invoice is not a new declaration.

Native interval and shared implementation

game/mixed-bid-question.ts strictly accepts one positive safe whole minimum, rejecting turn/lot/private metadata inside a leaf. Shared parsing validates all raw clauses under one16-leaf/depth4 budget including nested facts. Public frozen constants are not accepted. mixedBidMinimum reduces only an action residual; it never evaluates a fact or invents funds/opportunities.

The shared compiler eagerly snapshots facts before folding known constants, identities and singleton groups. Only a needed residual enters the existing bidPromises ledger with its original hidden physical-lot source/event. Internal mixedBidQuestions links the original raw tree to that native event; constants create only terminal aggregate metadata. No second auction, native bid quote, winning-price solver or custody path is added.

Existing current cash, prepaid ally aid, native Karama, capacity, active/waiting eligibility and earlier shipment/movement/revival/payment budgets remain. Current highest, passed and full-hand participants have no supported future opportunity. Prior declarations cannot fulfill a new answer. Yes requires a qualifying declaration at the next available opportunity while possible; a lower bid/pass assumes no future rival raise. Fulfillment survives losing. No caps every later declaration until actual lot close. Opposing raises may release an impossible Yes in accepted order; voluntary evasion is rejected. No finished record binds a new lot or turn.

Own projection contains only original raw question, turn/lot, whole answer and fulfilled/released status. Frozen values, reduced minimum, binding metadata and hidden lot source remain unprojected; pure bid projection excludes mixed events. There is no additional progress counter because one qualifying declaration immediately fulfills Yes; No persists until actual close. The shared exact native bid/pass guide accepts a live pure or mixed event and retains its original owner/turn/lot/phase/funding guards. Historical panels stay passive. New mixed discard signatures include raw/native metadata without changing old record signatures or reactivating history.

The full shared editor adds/wraps/nests/switches/removes groups and exposes only per-leaf minimum controls with the fixed current turn/lot. Invalid drafts remain repairable. Raw preview/Ask, private answer choices and persistent own aggregate status connect through the table. Four minimal profiles answer and execute native guides; strategy/calibration remain deferred.

Evidence and remaining gates

Pure reduction: tests/mixed-bid-question.test.ts. Original native adapter and journeys: tests/fixture-truth-mixed-bid.ts, tests/truth-mixed-bid-runtime.test.ts, tests/truth-mixed-bid-funding.test.ts. Controlled editor/guide: tests/truth-mixed-bid-controls.test.tsx. Six pure reduction,19 original native,three funding and nine controlled cases supplement existing shared compiler/scalar bid/auction/funding coverage. The frozen 20-file,225/225 union, types/lint, production build and ten native paths pass on the same unchanged repository source. Actual GameTable SSR renders 33 times; six exact bid-guide callbacks and one editor callback submit native packets. All four minimal profiles actually answer and declare legal bids on both original Basic/Advanced sources.

Original source Prefix actions Further actions Actual result
Basic frozen spice 22 11 Future bid4 fulfills before original invoice changes E10→6
Advanced frozen spice 25 11 Same snapshot, actual declaration and original payment
Basic edited true OR 22 11 Actual AND→OR editor/Ask; immediate Yes, later real bid5 remains legal
Basic false AND 22 11 Immediate No leaves a real bid4/purchase legal
Basic unknown OR Yes 22 11 Unknown forecast requires actual future bid4
Basic unknown AND No 22 11 Bid4 forbidden, actual lower3 purchase settles No at close
Basic nested thresholds 22 11 AND4 with OR7/5 requires exact5; actual purchase leaves E5
Basic waiting opposing raise 20 12 Real A10 releases E's impossible Yes; A pays and E earns native10 income
Basic own bribe budget 20 14 Bribe7 rejected, real bribe6 plus bid4/invoice leaves E0
Original Karama source 25 12 Actual11 declaration fulfills, original physical Karama settles free invoice

Other native cases retain every later No cap after an outbid, previous bid exclusion, exact wire/owner/lot/event, raw own projection, losing after a fulfilled Yes, and new-lot nonreactivation. Two original Truths preserve No6 plus Yes4 with one real5 declaration; shipment9 funding rejects later bidYes4 while actual bid1 leaves the native9-force shipment affordable. All33 cards remain physical.

V1 passes types but lint flags the adapter's capitalized helper call nested in JSX. The adapter retains the existing shared tail-delegation pattern, with fixed turn/lot in its legend. No rule or native test expectation changes. All frozen checks pass in v2. Verified source tree: 09637da04aa264eca212233ba2e33fb40529babab8e92d3caf46e0072425b3a8 (3179 files). Final evidence prose is a separate three-document overlay. Proof/report/manifest: /home/quintine/.local/share/dune/checkpoints/20261026-truth-mixed-bid-proof-v2/; journeys/HTML: /home/quintine/.local/share/dune/checkpoints/20261026-truth-mixed-bid-runtime/. SSR/editor/guide callbacks are local engine/control evidence, not DOM, hydration, browser/mobile or deployed acceptance.

The inherited original H/A/E base33 source genuinely deals both original Harkonnen Truths, opens the native bank lot and reaches active Basic22/Advanced25 or waiting Basic20/Advanced23 histories. Only the raw question changes; no played clock, purse, hand, bid, answer, promise or fulfilled state is installed. Controlled fixtures retain their labels rather than claiming original acquisition histories.

Other action families, correlated unknowns, phase-wide/native-special auction claims, future preparations, optional modules, broader faction/card/funding composition and final rules/recovery/privacy/custody/browser/mobile/deployed acceptance remain required. No complete mode is certified. No saved-game/ database/server/reset/restart/deployment operation is performed by this batch.