Files
Dune/docs/TRUTHTRANCE_MIXED_BRIBES.md

127 lines
7.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Truthtrance current facts and ordinary payments
## Mixed aggregate prototype — 26 October 2026
**Prototyped / Partial.** The packet is
`{kind:'mixedBribe',target,turn,mixed}`. Raw fact/action/AND/OR clauses reuse
`MixedActionExpression<BribePaymentClaim>`; a payment leaf contains only
`{recipient,minimum}`. Quiet native Basic/Advanced phases0–8 retain the existing
[ordinary payment](TRUTHTRANCE_BRIBE_EXPRESSIONS.md) scope and all mode gates.
## Authority and snapshot meaning
Reuse the [mixed-movement composition](TRUTHTRANCE_MIXED_MOVEMENT.md), recorded
[publisher November2020 FAQp8](https://www.gf9games.com/dune/wp-content/uploads/2020/11/Dune-FAQ-Nov-2020.pdf)
current-turn/AND/OR authority and supplied Advanced physical39/printed37 public
answer/compliance/release/unknown text. Existing [Mentat timing](MENTAT_BRIBES.md)
and cumulative native payer accounting remain. No source supplies a complete
online solver; current-funded witnesses, snapshot/unknown and accepted-order
release remain provisional under standing14October priority.
Facts freeze at the actual answer. A current-spice fact at10 stays that
answer-time fact after promised payments reduce the same purse to5. Later
spending/card changes create no new fact answer. No negates the entire mixed
expression. Unknown takes false for a definite Yes and true for No, then the
remaining owned payment completion must guarantee the aggregate. Correlations
between unknown predicates are not inferred. When neither definite completion
is known, unknown/save/change-question remains available.
A true held Shield OR payment can settle Yes immediately; false held Hajr AND
payment can settle No immediately. Otherwise the action-only residual uses the
existing cumulative native payment ledger. Smaller payments after the answer
add together per named recipient. Prior payments, gifts, allied aid and later
recipient collection do not count. Different questions keep their own future
intervals; repeated recipient thresholds share actual payer progress.
## Shared implementation and controls
`game/mixed-bribe-question.ts` rejects leaf metadata/extra keys and reuses scalar
recipient/minimum decoding. The generic mixed parser validates every subtree
and shares one16-leaf/depth4 budget with nested current facts. A positive safe
whole minimum has no artificial extra cap. Server context validates every
recipient as another current nonally, including below decisive fact branches.
Public frozen constants or compiled fields are not accepted.
The existing compiler eagerly reads all current facts before folding known
constants/identity children/singletons. A remaining payment tree binds the
original bribe-expression ledger and accepted order; raw `mixedBribeQuestions`
metadata links the original question to that event. A constant aggregate has no
native payment binding. There is no second payment/debit/receipt implementation.
Native quotes preserve earlier scalar, grouped, revival, bid, shipment,
movement and battle budgets using the same current uncommitted purse.
Own raw question, aggregate status and recorded payer totals are projected.
Compiled residuals are excluded from the public pure-expression ledger; raw
internal metadata and frozen per-fact values remain unprojected. The common
exact event/phase payment guide can belong to scalar, grouped or mixed answers.
Uniform existing Yes readiness reopening applies even to decisive constants,
so no immediate compiled-branch readiness flag is added. Required aggregate
release and public actual payments retain their original information.
`components/mixed-action-fields.tsx` shares full add/wrap/nest/switch/remove/
collapse editing and current-fact controls. Movement retains its public API,
IDs/data attributes and callback traversal through a thin adapter. Bribe fields
supply public recipient choices and uniquely identified per-leaf numeric inputs;
invalid numeric/empty-recipient drafts remain repairable. Preview/Ask keep the
complete original tree. Scalar/grouped/mixed panels choose exactly one guide
using live ownership rather than fulfilled historical rows. Four minimal
policies answer and pay legally; strategy/calibration remain deferred.
Payer spice is spent now. Recipient shares remain deferred until the next actual
Mentat opening; late Mentat payments wait for next turn's opening. Existing ally,
pending-choice, Inflation Double and Bureaucrat guards remain. Yes cannot evade
Mentat Ready; No remains binding through collection until actual turn advance.
A known automatic Double closure retains the earlier Collection deadline.
New mixed discard signatures bind metadata/residual without altering older
record signatures. No historical answer is reactivated or database rewritten.
## Evidence and remaining gates
Source cases: `tests/fixture-truth-mixed-bribe.ts`,
`tests/truth-mixed-bribe-runtime.test.ts`,
`tests/truth-mixed-bribe-funding.test.ts`.
Controlled shared editing/guide cases: `tests/truth-mixed-bribe-controls.test.tsx`;
existing mixed-movement controls retain their scope. Nineteen native,two native
funding and nine controlled cases supplement existing generic/scalar/grouped/
movement coverage in the frozen **21-file,216/216** union. Types/lint, production
build and ten native paths pass on the same unchanged source. Actual GameTable
SSR renders33 times;13 guide callbacks submit native packets. Two editor
meaning callbacks (payment and retained movement adapter) preserve their whole
raw questions through native Ask. Four minimal profiles actually answer and pay
on both Basic/Advanced original sources.
| Original source | Prefix actions | Further actions | Actual result |
| --- | ---: | ---: | --- |
| Basic frozen spice | 20 | 22 | H3/A2 reduces E10→5; both exact opening receipts |
| Advanced frozen spice | 23 | 22 | Same answer-time snapshot/native payment/receipt |
| Basic edited true OR | 20 | 20 | Real AND→OR editor/Ask; immediate Yes, no payment binding |
| Basic false AND | 20 | 21 | Immediate No permits an actual ordinary payment |
| Basic unknown OR Yes | 20 | 21 | Unknown forecast requires actual payment |
| Basic unknown AND No | 20 | 21 | Cumulative payments remain below the qualifying minimum |
| Basic late-ready mixed | 32 | 37 | Only payer reopens; receipts wait for next real opening |
| Basic shared leader, bribe first | 102 | 16 | H1/A1 then native leader2 at T0; both obligations fulfilled |
| Basic shared leader, revival first | 102 | 16 | Same real purse in opposite accepted order |
| Basic shared movement editor | 20 | 5 | Retained movement IDs/callbacks edit/Ask the same raw tree |
The first frozen batch passes after updating one old assertion to live scalar
ownership. The passing source snapshot is
`ae77b288d097191c4b1f1ecdea123d564184532a9e06b7555f4b2e3fe79a9d0d`
(3162 files). Final evidence prose is a separate three-document overlay.
Frozen proof/report/manifest:
`/home/quintine/.local/share/dune/checkpoints/20261026-truth-mixed-bribe-proof-v1/`;
journeys/HTML: adjacent `20261026-truth-mixed-bribe-runtime/`.
SSR/editor/guide callbacks are local engine/control evidence, not DOM,
hydration, browser/mobile or deployed acceptance.
Original H/A/E base33 Basic20/Advanced23 and late Mentat32/35 sources supply
E10, its printed Shield and both original H Truths. H/A/T Ix47 sources supply
actual T4/dead native leader2 for shared-funding orders. No played clock,
purse, hand, payment, fact answer, promise or progress is installed. Controlled
views keep those labels rather than claiming original acquisition histories.
Other action families, correlated unknowns, future owned income/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.