Files
Dune/docs/TRUTHTRANCE_MIXED_TRAITOR.md

7.8 KiB

Truthtrance current facts and original Traitor declarations

Mixed aggregate prototype — 26 October 2026

Prototyped / Partial. The packet is {kind:'mixedTraitorCall',target,battle,territory,mixed}. Fact/action/AND/OR clauses use TraitorActionClaim={call:boolean}: true Reveal, false Decline. Every action leaf concerns the same current original revealed native voter decision. The scalar contract still owns public source, voter/beneficiary, matching physical card, protection and effect timing. Original pure questions and faction/module start gates stay unchanged.

Authority and logical meaning

Reuse recorded publisher November2020 FAQp8 AND/OR/current-turn and supplied Advanced physical39/printed37 compliance/release/unknown authority. The existing native declaration interval and shared snapshot/witness interpretation remain provisional under standing14October priority. No dedicated publisher mixed solver, future matching draw witness or arbitrary promise language is claimed.

Current facts all freeze at the actual answer. Later bribes, Traitor draws and returns do not reevaluate them. Unknown is false for definite Yes and true for No; a remaining native obligation must guarantee the aggregate. No negates the whole expression. Unknown FACT correlations are not inferred.

Every Reveal/Decline action leaf names one boolean decision, so its correlation is exact. mixedTraitorRequirement evaluates the complete compiled tree for both logical declarations. It returns impossible, one forced choice, or no restriction when both values guarantee the selected aggregate. Constants and logical tautologies are terminal immediately; this claims no declaration receipt. A contradictory action expression can have a guaranteed whole No. No to a Decline condition can force Reveal. Smaller subclauses never acquire separate public answers or fixed routes.

Reduction considers both logical values before native eligibility. A presently unmatched/leaderless/protected actor may only Decline, but a new forced Decline still binds through later matching-card draws. Eligibility is not used to erase the future commitment. If no guaranteed answer has an original native completion, unknown/save/change-question remains available.

One native decision and receipt

game/mixed-traitor-question.ts strictly accepts only one call boolean per leaf. Outer groups use the shared16-leaf/depth4 grammar and nested fact budget, with no additional battle-plan node/term caps. Invalid metadata/groups cannot hide under decisive branches. The original native context must be revealed/current, with an actual still-unsubmitted voter and exact battle/territory. This includes native Harkonnen ally voting and retains original Homeworld restrictions.

A forced choice enters traitorDecisionPromises through the original binder, with one optional new event link. Old pure records omit that property and retain their shape. Validation accepts only a nonempty link when present; settlement/reconciliation preserve it. Native choice calculation, matching identity, Kwisatz protection, beneficiary, opposing leader and prior promises stay authoritative. The mixed helper performs no second native eligibility or physical card search.

Raw mixedTraitorQuestions links original question/answer to the native record. Actual declaration settles it before effect prevention or synchronous cleanup. A later canceled effect never undoes a receipt. Native impossibility or ended unfulfilled source releases pending aggregates; submitted true and false slots never reopen. New mixed discard signatures retain raw metadata plus the already signed battle/ledger without changing old pure continuation signatures.

Harkonnen Cunning still draws/returns original physical identities. A live required Reveal protects its matching identity from voluntary return, including an answer added during the pending native return. A Decline can return the matching identity; new draws do not remove its cap. After an actual fulfilled Reveal, returning that identity does not retract the original receipt/effective call. Existing parent signatures keep their original exemptions and unrelated fields; no extra snapshot weakening is added.

Projection and human controls

Own projection retains only original raw question, whole answer, public turn/ battle/territory and fulfilled/released status. Binding flags, forced choices, compiled trees and separate frozen facts are not projected. Native own pure promise rows filter mixed event links for every viewer; private declaration choices still use the full authoritative ledger.

The shared full editor adds/wraps/nests/switches/removes/collapses groups and exposes per-leaf Reveal/Decline choices without inspecting card custody or canReveal. Invalid drafts remain repairable. Raw preview/Ask and target-only aggregate answer choices connect to the exact current source. Saved answer callbacks retain owner/question/window/battle/choice-array identity and busy/ source guards. Pure wording and behavior remain.

The mixed panel is status-only and persists after battle cleanup. Original Reveal/Decline controls use native allowed choices; no duplicate declaration control or fact reconstruction is added. Four minimal profiles answer and actually declare legally; strategy/calibration remain deferred.

Evidence and remaining gates

Helpers: tests/mixed-traitor-question.test.ts, tests/traitor-decision-promises.test.ts. Source/journeys: tests/fixture-truth-mixed-traitor.ts, tests/truth-mixed-traitor-runtime.test.ts, tests/truth-mixed-traitor-harkonnen.test.ts. Controlled/shared answer/UI: tests/truth-mixed-traitor-controls.test.tsx. Frozen v2 integration passes 18 files,149/149, types/lint/build and eleven original runtime paths with 29 GameTable SSR renders,11 actual answer callbacks and one editor callback followed by native Ask. Basic26 prefixes add6 for actual declaration/cleanup, edited true OR, false AND, No-to-Decline requiring Reveal, call tautology and both unknown polarities; a real bribe3 adds7. Allied72 adds9 for actual Reveal, original Karama cancellation and retained receipt. Cunning77 adds8 for matching protection/safe return/Reveal or matching return/frozen fact/ Decline. Four minimal profiles actually answer and declare legally. Native tests also exercise the original pre-Cunning76 prefix, real draw/return after Decline, and fulfilled Reveal followed by a later matching return.

V1 quick checks pass, then the new controls file needs the established Vinext/ CSS test import shim. Loaded controls find a missing history location and an assertion that omitted the native button arrow. Repairs also make a mixed Decline's disabled-Reveal explanation reflect its accepted obligation. The two failing cases pass narrowly, then the complete frozen v2 passes. Proof and per-file manifest: /home/quintine/.local/share/dune/checkpoints/20261026-truth-mixed-traitor-proof-v2/; journeys/HTML: adjacent 20261026-truth-mixed-traitor-runtime/. This is local engine/SSR/actual-callback evidence, not DOM, hydration, browser, mobile or deployed acceptance.

The adapters reuse original Basic26 and actual allied Harkonnen72/Cunning77 sources, deriving counts from inherited action arrays. Original setup/deal, Traitor choices, paid invasions, alliances, plans and draw/return stay genuine. No extra Truth, played hand/purse/clock/vote/promise is installed. The unmatched case labels its conserved original-card exchange as controlled rather than a historical acquisition claim. Two-Truth/prior-ledger histories are not invented.

Unrevealed future-leader questions, other action families, unknown-fact correlations, broader owned preparations, optional/faction/card/cross-action compositions 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.