Files
Dune/docs/TRUTHTRANCE_MIXED_BIDS.md
T

133 lines
8.2 KiB
Markdown

# 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](TRUTHTRANCE_BID_PROMISES.md) 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](TRUTHTRANCE_MIXED_REVIVAL.md) 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.