178 lines
10 KiB
Markdown
178 lines
10 KiB
Markdown
# Truthtrance: compound shipment promises
|
|
|
|
14 September 2026. This extends the [reserve-shipment prototype](TRUTHTRANCE_SHIPMENT_PROMISES.md)
|
|
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](https://www.gf9games.com/dune/wp-content/uploads/2020/11/Dune-FAQ-Nov-2020.pdf)
|
|
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.
|