10 KiB
Truthtrance: compound shipment promises
14 September 2026. This extends the reserve-shipment prototype with shipment-only AND/OR questions. Public mode and publication gates remain unchanged.
Full pure-shipment authoring — 26 October 2026
The pure shipment form now exposes the parser's full shipment-only tree instead of two flat conditions. Add siblings, wrap/nest AND/OR groups, switch their meaning and remove/collapse without losing other conditions. It can use all sixteen shipment leaves and depth four, without spending a leaf on a current fact. The separate Mixed builder keeps its own requirement for both kinds. Each leaf still describes the same eventual reserve shipment, never an extra shipment or permission to ship early.
The existing shipment parser supplies the unchanged shape/bounds and whole-
input validation. Internal frozen fact constants cannot be authored, including
under a decisive OR. Numeric-invalid minima remain editable; the whole question
must be valid before Ask publicly. Legacy single-leaf questions remain accepted,
while the full form uses the existing claim expression envelope. No saved
field, migration or new action kind is added.
Current ask ownership, busy and seated-target checks apply to actual callbacks;
truthShipmentTargets remains the authoritative opportunity boundary. The
form uses public destinations and physical minima, without reading private
holdings or recreating feasibility. The existing server supplies feasible
answers, prevents voluntary evasion, fulfills the same physical delivery/skip
and retains the original continuation. AND requires every condition; OR any;
No makes the whole statement false. All four minimal profiles keep their
existing legal path, with strategic refinement deferred.
Controls: components/shipment-expression-fields.tsx and
components/truth-shipment-question.tsx, integrated in the original panel;
game/shipment-expression-input.ts reuses the existing parser for editing
bounds. This form extension does not certify broader timing/module combinations,
full Truthtrance or deployed acceptance.
Combined battle/shipment proof passes 14 files,123/123, types/lint/build and
twelve native engine/GameTable SSR/actual edit-and-Ask callback paths. Six pure
shipment routes use a genuine two-seat Basic20-action prefix, bind whole Yes/No,
deliver the original one-force Arrakeen shipment at its one-spice cost and end
the original turn, six post-source actions each. Nine new engine cases cover24
flat and four nested variants, sixteen distinct destinations/depth four,
skip/nonmatching alternatives, invalid constants/limits, original continuation
and four minimal profiles; eleven controlled cases cover the complete form.
All33 original cards remain. Private proof:
/home/quintine/.local/share/dune/checkpoints/20261026-truth-remaining-authoring-proof-v2/;
journeys/HTML: adjacent 20261026-truth-remaining-authoring-runtime/.
No saved-room/D1/server or recovery operation. Native evidence is Basic;
SSR/callbacks do not prove DOM/hydration or browser/mobile/deployed acceptance.
Mixed current facts and future shipment — 3 October 2026
The structured builder now supports bounded nested AND/OR trees containing current named-card, card-count, inventory, traitor, personal-spice, physical-force or knowledge facts alongside reserve-shipment conditions. Both kinds must be present; the existing software limit is sixteen logical leaves and four grouped levels, not a printed limit on game questions. Current fact legality comes from the existing fact parser; reserve shipment uses the original destination/count quote and the same active-unused-shipment/mode boundary.
Evaluate current facts when a definite answer is given and freeze their three-valued results privately. Later legal card/force/spice changes cannot rewrite the past statement. Future leaves still describe one eventual reserve shipment or its absence, and the whole expression must match the public answer. For example:
- Yes to “I currently hold at least10 spice OR I will ship4 to Arrakeen” with20 spice permits later spending and no shipment.
- No to “I currently hold at most10 spice AND I will ship4 to Arrakeen” with20 spice permits shipment even if its cost later reduces the wallet to5.
- Yes AND with a true current clause still requires the future shipment. No OR with a true current clause is impossible.
Unknown current information stays unknown: it is not converted to false for a No promise. A definite answer is available only when an actually legal future outcome makes the whole statement definite. Multiple ordinary and mixed promises constrain that same event together. Voluntary spending cannot remove the last legal completion, but need not preserve a current holding that was not itself a future promise.
Only the respondent receives a mixed promise's compiled fixed answers and private feasible choices. Public question/history text keeps the original grouping and whole answer, never which current clause matched. Shared shipment, skip, preparation, release, controls and minimal legal policies use the same frozen expression. Default public parsers reject caller-supplied constants.
The existing FAQ whole-question semantics and historical/current distinction support this composition; it is not a new expansion or timing ruling. Earlier phases, other future actions, expansion shipment modes and arbitrary prose enforcement remain outside the bounded implementation.
Eight actual programs cover the four mixed truth/skip/shipment/changed-spice paths and all four legal policies. Nested and joint promises have rule regressions. The affected truth/ship/discard rule batch passes88/88; mixed/reference23/23, types/lint and build pass. Human390px 4PVKRRWB v10 authored and answered the actual OR claim, then spent all20 spice as a bribe, skipped shipment and fulfilled the promise while the public answer stayed Yes. This is bounded local evidence, not complete Truthtrance, module or deployed acceptance.
The later390px FCGZTEGV v11 control check authored an outer OR around
(current spice >=10 AND ship4 to Arrakeen), with an alternative shipment6
to Carthag. The respondent answered Yes at20 spice, paid a real12-spice bribe,
then shipped4 to Arrakeen at a four-spice cost. The frozen nested branch
fulfilled the whole answer with only4 current spice; native end-movement
continued the original turn and the exact grouped question/Yes survived refresh.
This is additional human control evidence, not another program case or an
expanded timing/module claim.
Meaning and authority
The GF9 November 2020 FAQ, printed page 8 permits AND/OR questions and binds definite answers while compliance remains possible. Each condition here describes the same eventual reserve shipment in the active opportunity, using a destination and minimum physical force count. The original shipment-only form does not promise two shipments; the later mixed form above adds current facts without turning them into future holdings.
AND is true only if every condition matches. OR is true if any condition matches. A No answer negates the whole expression: No to AND requires at least one false condition; No to OR requires every condition to be false. Skipping shipment makes all these positive shipment conditions false. Separately answered questions must all be honored together.
For example, Yes to “at least six to Carthag OR at least four to Arrakeen” permits either branch. No to that same question permits fewer than six to Carthag, fewer than four to Arrakeen, another destination or no shipment. AND with two different destinations cannot be fulfilled by a single shipment, so Yes is unavailable.
Connected prototype
The original question form added a second destination/count condition and an AND/OR choice. The shared engine expression supports grouping within software limits of sixteen leaves and four nested groups; the 26 October form above now exposes that full pure expression. Existing flat questions and saved promises retain their meaning. Public question/history text preserves grouping, while answer feasibility and suggested preparations stay private to the respondent.
The completion search considers every relevant destination, physical count and legal sector, with the same controlled preparations and funding as single promises. It evaluates the entire expression and all earlier promises together. Actual shipment, skipping, voluntary spending and opposing-effect release use the same evaluator. A fulfilled promise records the shipment event and survives later movement or casualties.
All four AI profiles rank the projected feasible answers using only public destination value and their own reserves. Strategic preference never determines whether an answer is possible. The existing complete continuation remains the fallback when a strategic shipment shortlist misses a legal route.
Evidence and remaining scope
Focused engine, controls, AI and authenticated SQLite cases cover whole-expression truth, alternative destinations, old saves, joint commitments, custody, private restoration and duplicate actions. Final results and source fingerprints belong to the private checkpoint report and Git message.
The isolated browser used genuine base setup before conserved turn-two staging. The human asked “twenty to Carthag OR four to Arrakeen.” The respondent's legal AI policy answered Yes, and the public grouped question/answer survived refresh. Its next AI action shipped four to Arrakeen, spent four spice and fulfilled the aggregate promise once. All six accepted actions replayed exactly; all private views, card/force custody and the original seat row were preserved. This is a targeted browser scenario, not a complete human game.
The existing active-unused-shipment scope remains: base Basic, and supported base Advanced games without Guild or optional modules. Mixed current-fact/ shipment trees now use that same opportunity. Earlier timing, other future actions, expansion shipment combinations and arbitrary prose remain unfinished. This prototype does not settle pending material rulings or certify complete Truthtrance.
The opening backup preserves 1,004 local rooms and their seat/recovery records. Reuse the healthy server and keep all subsequent games.