Files
Dune/docs/TRUTHTRANCE_ALLIANCE_EXPRESSIONS.md
T

9.5 KiB

Truthtrance whole and mixed final-alliance questions

Current-Nexus prototype — 26 October 2026

Prototyped / Partial. Pure questions use {kind:'allianceExpression',target,turn,claim} with partner leaves {kind:'partner',partner} and full AND/OR groups. Mixed questions use {kind:'mixedAlliance',target,turn,mixed} with generic fact/action/AND/OR clauses and action leaves {partner}. Both concern final actual membership when this current ordinary Nexus closes, within existing bare native Basic/ Advanced scope. Start/mode gates stay unchanged.

Authority and meaning

Reuse the scalar alliance contract, recorded publisher November2020 FAQp8 AND/OR/current-turn authority and supplied Advanced physical39/printed37 compliance/release/unknown. Supplied physical15 ALLIANCES retains reciprocal formation, at most one alliance and each participant's right to leave. The online current-Nexus interval, owned witness and accepted-order release remain provisional under standing14October priority; no dedicated publisher solver or complete diplomacy certification is claimed.

A pure expression evaluates one final native partner or None. OR retains any compatible partner; AND requires every condition. Two distinct final partners cannot both be true in the native pair model. No negates the whole tree. A proposal alone is not membership. Neither formation nor one false leaf settles a binding whole answer early; Yes and No settle at the actual Nexus close. A temporary pair may be ended before readiness if whole No remains reachable.

Mixed facts all freeze at the actual answer. A current-spice fact at10 stays that answer-time fact after an actual native bribe3 leaves7. Individual frozen values and compiled branches remain private. Unknown takes false for definite Yes and true for No, then the remaining owned obligation must guarantee the aggregate. Correlated unknowns are not inferred. True fact OR partnership can settle Yes immediately; false fact AND partnership can settle No immediately. Constants need no future alliance binding. Every definite answer uniformly reopens only its respondent's readiness, including constants.

game/alliance-expression-promises.ts strictly validates full trees under the existing16-leaf/depth4 software budget. Every raw partner must be another current participant, including beneath decisive mixed facts. Public frozen constants, private source or binding metadata are not accepted. Mixed action parsing reuses the scalar partner decoder and shared generic fact grammar.

allianceExpressionOutcomes enumerates final partner/None states matching all live scalar and whole answers. findAllianceExpressionPlans reuses the original findAlliancePromisePlan for each exact outcome; local synthetic requirements are never persisted or projected. No second reciprocal-consent implementation exists. Already matching membership/no-op stays preferred; every owned route is retained. Another participant's future acceptance, departure or renewed offer is not invented. Missing foreign consent can leave No or unknown/save/reask available. Known financial impossibility is not relabelled unknown consent.

The engine tries each native route against original financial/preparation quotes. A blocked first route cannot pin OR or hide another legal route. Earlier owed bribes retain native payment controls before accepting their recipient when needed. Shipment, movement, Revival, payments and owned funds remain constrained by original rules. Keeping an already matching membership adds no prospective foreign cost, preserving the scalar contract.

One alliancePromiseSequence spans scalar and whole records; unstamped older scalar records retain original priority. Mixed residuals enter the same whole ledger. Reconciliation keeps earlier possible commitments, rejects voluntary evasion, and preserves opposing withdrawal/departure rights. Removing one OR invitation keeps another owned route; removing the last can release Yes. A reoffer never reactivates history. Native Ready checks both ledgers and actual Nexus closure settles them together. No prior question is rebound to a new Nexus.

Controls and projection

Pure and mixed editors support full add/wrap/nest/switch/remove/collapse, repairable partner drafts, unique IDs, nested facts and the complete raw Ask preview. Choices depend only on the public current roster, not private hands, funding or future consent. Current consent affects server completion, not which questions the author can write.

Pure own rows omit physical Nexus source. Own mixed rows retain original tree, aggregate answer and terminal flags while hiding binding metadata, frozen facts and the residual; pure projection excludes mixed events. No progress count is needed: actual membership is visible, and binding outcomes settle at close. A shared exact event/turn/context native guide serves scalar, pure or mixed records once. Historical rows stay passive. The client checks visible scalar/ pure membership and canonical own quotes; it never reconstructs a mixed branch. Existing bribe guides handle prior payments. Four minimal profiles answer and execute legal acceptance/break/Ready; full strategy/calibration remain deferred. New question discard signatures include native/mixed metadata without changing older signatures. No saved game or prior answer is rewritten.

Evidence and remaining gates

Pure: tests/alliance-expression-promises.test.ts, tests/mixed-alliance-question.test.ts. Original native source/journeys: tests/fixture-truth-alliance-expression.ts, tests/truth-alliance-expression-runtime.test.ts, tests/truth-mixed-alliance-runtime.test.ts, tests/truth-alliance-expression-funding.test.ts. Controlled: tests/truth-alliance-expression-controls.test.tsx, tests/truth-mixed-alliance-controls.test.tsx. Twelve pure expression and four mixed helper cases,14 pure native,10 mixed native, four original accepted-order/funding and15 controlled cases supplement the existing scalar/Nexus/financial coverage. The frozen 24-file,226/226 union, types/lint, production build and12 native paths pass on the same unchanged repository source. Actual GameTable SSR renders42 times;17 exact native guide callbacks and one editor callback submit real packets. Four minimal profiles actually answer, accept and Ready through the original closure. A bounded read-only review of the new planner/accepted-order/release integration finds no concrete issue; comprehensive review remains deferred.

Original source Prefix actions Further actions Actual result
Basic whole OR 48 9 Two actual invitations, canonical acceptance/Ready, settlement only at close
Advanced whole OR 49 9 Same native final interval and consent rights
Basic manual OR alternative 48 9 Other real invitation accepted without following the suggested partner
Basic whole OR No 48 9 Actual existing pair breaks; No stays pending until close
Basic mixed frozen spice 48 10 Actual bribe3 leaves E7; original E10 fact binds through acceptance/close
Advanced mixed frozen spice 49 10 Same snapshot and real native payment/membership
Basic edited constant OR 48 11 Actual AND→OR editor/Ask; only respondent Ready reopens; later pair legal
Basic false AND 47 9 Immediate No, no binding, real later acceptance remains legal
Basic unknown OR Yes 47 9 Unknown forecast requires actual partnership and close
Basic unknown AND No 47 10 Temporary pair allowed, actual break/Ready required, no early settlement
Basic two withdrawals 48 11 First leaves OR possible; last releases; reoffer does not reactivate
Basic earlier owed bribe 48 12 Actual promised3 payment, manual other OR partner, whole close at E7

Other native cases preserve unknown/save/reask after real consent, exact owner/turn/context/event/JSON packets, private source/raw aggregate boundaries, No to distinct-partner AND and actual opposing departure. Two original Truths keep prior scalar No with the other whole-OR route, share one scalar/mixed Yes at close, retain the earlier bribe snapshot, and reject a later scalar No contradicting an earlier whole Yes. All33 original cards remain physical.

V1 typecheck identifies two test action fields needing explicit TruthAnswer narrowing. No rule expectations change; the complete v2 batch passes. Verified source tree: 1c2a3a627ebf95e40f7b603b112416cb74a0cf89d0aa338aeddd0e05cb640009 (3194 files). Final evidence prose is a separate three-document overlay. Proof/report/manifest: /home/quintine/.local/share/dune/checkpoints/20261026-truth-alliance-expression-proof-v2/; journeys/HTML: /home/quintine/.local/share/dune/checkpoints/20261026-truth-alliance-expression-runtime/. SSR/editor/guide callbacks are local engine/control evidence, not DOM, hydration, browser/mobile or deployed acceptance.

The inherited H/A/E base33 source earns its original Worm Nexus and consent; one optional second invitation is an actual H action. Only raw questions change; no played purse/hand/clock/offer/pair/answer/promise is installed. Controlled views retain their labels rather than claiming acquisition histories.

Earlier-phase/whole-turn diplomacy, other action families, correlated unknowns, future preparations, optional modules and broader faction/card/funding composition remain required, followed by final rules/recovery/privacy/custody/ browser/mobile/deployed acceptance. No complete mode is certified. No saved-game/ database/server/reset/restart/deployment operation is performed by this batch.