Files
Dune/docs/TRUTHTRANCE_MOVEMENT_PROMISES.md
T
Quintine f0b2ac82d9 Support Basic movement promises before shipment
Allow clean active Basic ground-movement questions before or after shipment. Enumerate ordinary reserve amounts, native physical allocations, destinations and pledged payment splits through the actual declaration and shared physical commit. Detached projection stops before income/arrival effects and never counts shipment as ground fulfillment. Joint movement No and shipment Yes retain a legal next action rather than invalid End guidance.

Preserve exact pending ordinary reserve and native Guild permission/rate declarations when checking the remaining route. Voluntary wrong destination, force splitting or fee loss cannot release Yes through an opponent response. Guard unsupported sources before full speculative continuation. Existing live payment, cancellation, income and entry paths remain. Persistent busy-safe controls display reinforcement and both obligations; all four existing profiles use the same legal witness without strategy refinement.

Verify 19 files165/165, types/lint/build, six original-action gameplay/control/table-rendering programmes and four profiles with16 accepted actions. Genuine sources19/37/24/19 retain classic Arrakeen10 reinforced to11, native zero-board Emperor/CHOAM starts and original Guild5/15/5 reserve/cross transport. Second-card/counter cases explicitly transfer conserved originals. Bounded review repaired source guarding, funding completeness and exact pending-frame behavior. Stop an observed expensive search, reorder complete candidates by useful proximity and conservatively prune dead-end final moves; twelve new engine cases pass in3.2s. Correct a display-template lint issue.

Earlier phases/waiting turns, native transport/relocation preparation, No-Field/module sources, broader interactions, full modes, comprehensive assurance and deployed acceptance remain open. No strategic tuning or saved-room/reset/restart/deployment operation.
2026-10-24 15:10:49 +11:00

251 lines
16 KiB
Markdown

# Truthtrance ground-movement promises
## Basic prototype — 24 October 2026
**Prototyped / Partial.** The structured question asks whether the respondent
will make **one ground movement of at least N physical forces to a printed
territory before their current Shipment and Movement turn ends**. It concerns
future events after the answer, not earlier moves or sums of smaller groups.
Shipment, HMS relocation, free accompaniment and Ambassador relocation do not
count. A concealed No-Field marker itself is not a physical on-board force;
ordinary counters moving with it retain their actual count.
The general binding-while-possible/current-turn authority is the GF9 November
2020 FAQ printed p8, recorded in the [shipment source contract](TRUTHTRANCE_SHIPMENT_PROMISES.md#authority-and-supported-meaning).
Its worked example concerns shipment. Applying that rule to this existential
movement statement, the owned-action witness and accepted-order release policy
below are explicit software compositions, not a publisher movement-specific FAQ
or Basic adoption of the unofficial Advanced revision.
Fresh or existing Basic native tables can ask at a clean **active Shipment and
Movement turn**, before or after shipment, including selected E1/E2/E3 factions. No optional modules or Advanced
inherit this entry. The actual native roster, physical inventory and route
validation remain authoritative; no mode or publication gate opens. Earlier
phase/waiting-turn movement questions, compound movement/fact questions and wider
owned preparations/interactions remain unfinished. Existing saves are not
reconfigured and absent promise fields remain absent until a real answer binds.
## Behavior and controls
- **Yes** stays pending across nonmatching moves while a legal owned completion
remains. One matching physical commitment fulfills it permanently, before card
disposal, Intrusion, Ambassador/Terror or other later arrival effects. It is
not a promise to keep those forces alive afterward.
- **No** forbids every matching ordinary/card ground movement until the actual
turn ends, including later Hajr and both Ornithopter groups. A first nonmatch
or card-disposal pause does not fulfill it. Ending early cannot evade Yes.
- Feasible answers use actual board/typed groups and the shared human movement
declaration validator, not the strategic bot shortlist. The finite search
considers ordinary moves, held Hajr, both held/active Ornithopter modes and
their original cohort, current city access, current native bonuses, held
CHOAM Kulon and the owned Box recovery described below. Preparations use
private detached execution; actual cards retain
their ordinary effects, counters, discard/response and arrival continuations.
Unknown future draws/gifts and unresolved opposing outcomes are not invented.
- Voluntary moves/actions cannot remove the last legal completion. A declared
native movement waits for its real counter response before fulfillment or
impossibility. Opposing impossibility releases only the answers that cannot
remain compatible: retain every No and still-feasible Yes in accepted order.
An impossible large promise does not erase an independent smaller one.
- Authoring has dedicated movement labels, an exact public preview and a
one-to-twenty input. Only the respondent sees feasible answers and the next
owned completion action. Persistent promise/answer controls have no timer;
busy controls submit nothing. Four existing profiles follow those same legal
views without strategy changes or calibration.
This is bounded reachability, not complete arbitrary Truthtrance enforcement.
Other owned preparation families (including native relocation preparation),
earlier phases/waiting turns, optional/Advanced profiles and comprehensive
combination/recovery/privacy/custody acceptance remain due.
## Before-shipment movement promises — 24 October 2026
The same existential ground-movement question now includes the active player's
unused ordinary reserve shipment. This is a software reachability extension of
the general FAQ contract above; it introduces no new shipment price, force or
fulfillment rule. A shipment may create or reinforce a later ground group; it
does not fulfill Yes or violate No by itself. Both existing shipment answers and
movement answers constrain the same remaining owned turn. No-only movement
guidance first honors a required shipment instead of incorrectly suggesting End.
Ordinary preparation enumerates physical amounts, native special allocations,
destinations/sectors and explicit pledged ally-payment splits. The actual
declaration, shared tariff/funding validation and physical commit primitive
decide legality. Its detached mode stops after payment, typed withdrawal,
placement, stance, shipment-promise settlement and consuming the current price
benefit. It invents no income, draws, opponent choices or arrival effects.
Actual actions keep their original response and entry continuations.
A pending ordinary reserve shipment or native Guild cross/return projects its
**exact** declaration before later movement is checked. A player cannot declare
a bad destination/force split and then use an opponent's pass to release Yes.
Unsupported Ambassador/No-Field/module sources retain their boundary rather
than executing a full speculative continuation. Native cross/return preparation
is not enumerated yet, though actual legal choices preserve the existing promise.
Other preparation families, earlier phases/waiting turns, optional/Advanced and
comprehensive acceptance remain unfinished.
### Current before-shipment evidence
`tests/fixture-truth-movement-shipment.ts` retains actual source prefixes before
their original shipment. Classic19 has Arrakeen10 plus10 reserves: a one-spice
reinforcement permits a later eleven-force ground move. Native Emperor37 has
the real bought Box/Hajr and no board forces; CHOAM24 has its actually dealt
Kulon and no board forces. Fresh public Guild19 preserves original Tuek5,
reserves15 and spice5, with actual reserve and cross transport. Only unopened
deals/Spice and native scalar lotteries are selected. No hand, wallet, force,
clock or receipt is installed. Separate second-Truth and Karama acquisition
edges explicitly transfer conserved originals; actual rate cancellation and
joint answers then use their original controls.
The current nineteen-file union passes **165/165**, types/lint and production
build. Six actual guidance-handler/GameTable programmes cover classic Yes/No,
Emperor, CHOAM with actual Kulon and Guild reserve/cross transport; busy handlers
submit nothing. Four existing profiles make16 accepted answer/ship/move/end
actions without tuning. Bounded review repaired ordinary-source guarding,
pledged-share enumeration, exact pending declarations and joint completion.
One expensive search run was stopped; all candidates remain after ordering by
reinforcement and useful nearby routes. Conservative last-move pruning retains
owned movement cards. The twelve new engine cases subsequently pass in3.2s.
A display-template lint issue was repaired.
Frozen base `b5a53da7126f2be5066db0723536aea3b2fa91a6`, tree
`05a19569eee3e40f07c1be2f5c4cdcb51b4772a720bafd203a9ab0acadb02d26`,
2641 files. Private logs, original-state control HTML and receipts:
`/home/quintine/.local/share/dune/checkpoints/20261024-movement-before-shipment/`,
`frozen-integrated-3/report.json`. Only final checkpoint/reference prose overlays
follow proof. Framework aliases/CSS stubbing establish server rendering, not
browser/visual/deployed acceptance. Full modes, wider timing/preparations and
comprehensive assurance remain open. No saved-room/D1/reset/restart/deployment.
## Owned Box and Kulon preparation — 24 October 2026
The same bare Basic predicate now considers a held native CHOAM Kulon and an
owned Nullentropy Box with its printed **two uncommitted spice** fee. Box
authority and the existing provisional atomic full-hand exchange are unchanged;
see [the Box source contract](NULLENTROPY_BOX_ENGINE_AUDIT.md). This extends
bounded owned reachability, not the supported mode/timing profile.
Before payment, only a relevant physical card known still to be in the discard
may supply a Box witness. Public disposals teach all actual seats; private
disposals teach their former holder. Hajr, canonical Ornithopter and Kulon are
the only remembered faces needed here. A private Box choice or mixed Semuta
claim invalidates other seats' certainty of those candidates' **current
location**; its entitled inspector knows the remaining faces. Rebuilding the
deck removes current-discard certainty. This bookkeeping does not erase anyone's
historical memory, reveal discard names/counts before payment or retroactively
inspect unconfirmed old piles. Unknown/private preparation possibilities outside
that provable knowledge remain unfinished. The metadata is server-only; the
ordinary owner sees only the next legal action.
After actual payment, the original private search still shows every eligible
card, retains its event and charges once. A live Yes supplies a compliant
movement-card selection in the persistent promise control. A selection that
would destroy the last route rejects **before** the real shuffle and leaves the
paid decision available; its fee is neither repeated nor refunded. No-only
promises keep the ordinary paid choice and do not offer End movement until that
choice finishes. Minimal policies use the same guided paid selection rather
than repeatedly choosing an incompatible high-value card.
Speculation uses detached copies and deterministic pile order; it never pays,
shuffles or samples the live game. Actual Box settlement retains its one server
shuffle, physical exchange and native discard continuation. Held Kulon uses its
original native legality/cost/bonus; actual counters keep it held and blocked
when canceled. Opposing loss can release an impossible answer, while voluntary
spending cannot remove the only remaining fee-funded route. Broader preparation
through native relocation, counter mitigation, earlier timing and optional or
Advanced rules remains unfinished.
### Preceding card-preparation evidence
`tests/fixture-truth-movement-box.ts` selects one original unopened Guild
Truthtrance deal, then uses actual public Basic Richese/Emperor/Guild setup,
Box1/Hajr1 purchases, three-force desert shipment6 and real Hajr plus two
one-force moves. Its44-action source leaves the original Hajr in discard, held
Box and exactly two owned spice. The actual definite Truthtrance answer adds
the second paid-search candidate. Yes recovers that same Hajr and makes the
third move; No uses the original ordinary paid-selection control. Native
CHOAM source25 stops before actual Kulon, then the question, held Kulon and
city-enabled route4 execute normally. Only unopened positions and native scalar
lotteries are selected; no dealt hand, wallet, force, clock or receipt is installed.
Separate full-hand, unknown legacy certainty, opposing fee-loss and acquired
Karama-counter tests explicitly stage conserved original outcomes.
The preceding seventeen-file union passed **231/231**, types/lint and production
build. Three actual-control/GameTable-rendering programmes retain full paid
inspection, original event, single fee, rejected selection and busy no-submit.
Four existing profiles make40 accepted paid-selection/Hajr/move/end/neutral-pass
actions and finish legally without strategy refinement. Two older Box/Auditor
fixtures failed identically on the previous engine and now acknowledge the
actual battle result; a test-only const lint issue was repaired. Bounded review
checked printed search entitlement, full-hand policy, original paid continuation,
primitive disposal knowledge, memoized preparation state and paid-choice priority.
Frozen base `edbcbe28de2128c1b59ab7b17bdf7328bddc7416`, tree
`fd900a863da9cbc9826c22ca7627c26123d1cad04915d059735cb32471c7ba00`,
2636 files. Private logs, original-state control HTML and receipts:
`/home/quintine/.local/share/dune/checkpoints/20261024-movement-card-preparation/`,
`frozen-integrated-3/report.json`. Only final checkpoint/reference prose overlays
follow that proof. Framework aliases/CSS stubbing establish server rendering,
not browser/visual/deployed acceptance. Other timing/preparations/counter
mitigation, unknown private possibilities, optional/Advanced, full modes and
comprehensive assurance remain open. No saved-room/D1/reset/restart/deployment.
## Preceding movement checkpoint
`tests/fixture-truth-movement.ts` uses genuine public Basic Atreides/Emperor
setup, original33-card inventory and actual dealt Truthtrance/Hajr. Only unopened
deal/Spice positions and native scalar lotteries are selected. Actual readiness,
setup, phases and a **two-spice** one-force Polar Sink shipment precede the
question; ten original Arrakeen forces, wallets and allowances are unchanged.
The original public Ecaz/CHOAM/Richese/Guild source also buys physical
Ornithopter for one in the native cache auction, deals original Truthtrance to
Ecaz, buys one normal card, pays for placement and Guild shipment, then finishes
an actual empty CHOAM Ambassador grant. Two-group Yes/No and range-three paths
use those real cards/forces. Its existing native Ecaz final-move Semuta boundary
remains; ending disposal and the earlier Truthtrance cost still use their actual
neutral continuation. No force, wallet, clock, bonus or played card is installed.
`tests/fixture-truth-movement-choam.ts` uses public native CHOAM/Emperor setup,
actual dealt Kulon/Truthtrance, one-spice Arrakeen shipment and actual allowed
Kulon. City access plus its current bonus proves a four-territory route.
Separate multiple-question and impossibility edges explicitly stage a conserved
second original Truthtrance acquisition and conserved force-loss outcomes. They
are not natural second-purchase or native Atomics/Terror source evidence.
The preceding seventeen-file affected union passed **218/218**, with types/lint and the
production build passing. Seven actual gameplay/control/table-rendering
programmes cover direct Yes, later Hajr Yes, No surviving Hajr, both actual
Ornithopter groups, its range-three option and native current-Kulon route4.
Source programmes use20/58/26 accepted actions. Actual persistent promise
handlers execute the private witness and submit nothing when busy; actual
GameTable rendering covers question, answer, remaining promise, Truthtrance/
ending-disposal pauses and original turn completion. Authoring/answer states
are rendered and submitted as real actions, not browser clicks. Four existing
profiles make12 legal answer/move/end actions, without tuning or calibration.
Bounded review found current CHOAM range must include Kulon rather than a
three-territory cap, and an opposing loss must release only incompatible answers.
Both have regressions, including genuine Kulon play. Multiple-promise feedback
keeps detached settlement coherent; deterministic owned preparation does not
invent extra fresh-discard events while a real cost is suspended. Initial fixture
feedback corrected the actual two-spice Polar Sink tariff and automatically
allowed Kulon. Three representative older failures reproduced against the prior
committed engine: shared native fixtures now acknowledge neutral Semuta, two
battle fixtures acknowledge the actual result, and the broad pre-movement Hajr
case correctly uses Basic. Native Advanced Hajr still requires its genuine
post-movement opportunity. A notice-label scalar lint issue was repaired.
Frozen base `b4a556d5d345c9ff3056b01af0076ae86bdf5579`, tree
`990c92fd368f07e1be91dcc0c677a7c029ecfcd6f747b99943e07cae28f8cfc3`,
2631 files. Private logs, original-state/control HTML and receipts:
`/home/quintine/.local/share/dune/checkpoints/20261024-truth-movement/`,
`frozen-integrated-3/report.json`. Final checkpoint/reference prose overlays
are separately recorded; engine, controls, helpers and tests match the proof.
Framework aliases/CSS stubbing make this server-rendered evidence, not browser,
visual or deployed acceptance. Full modes, wider preparations/timing/modules,
comprehensive assurance and deployed acceptance remain open. No saved-room/D1
operation, reset, restart or deployment.