Players can ask total-hand and primary-role card-count comparisons using the existing count controls and compound facts. Component presentation shares the same default-role classification, including canonical Richese cards, Ix alternate uses, and Ecaz slot-only specials. Only the respondent receives the verified aggregate answer; current facts do not impose future custody promises. Eight new tests cover all 60 catalog cards, real engine actions, malformed input, private worlds, all four bots, JSON continuation, and a legal custody transfer. Expanded production-room SQLite cases cover restored total/category/compound facts, suspended auction state, and one winning concurrent answer/discard. Independent review's two copy issues were fixed before broad verification. Validation: types, lint and 4,200 offline tests passed; production build passed; 40 HTTP tests passed. One stable broad run (check 123036 ms, build 6505 ms, integration 23467 ms). Browser room LC3E55GY verified combined role counts, total hand size, invalid-input feedback and refresh at 390px phone width. All 33 pre-integration rooms preserved unchanged; HTTP checks added 30 rooms. No complete-mode, full-game or publication gate opened. Private report: 20260913-hand-inventory-final/report.json Source fingerprint: c6a69a9e69941cdd1e5734d92afedbf10d31fda36c91d26ca7e15f4fb7c59b18 Efficiency pilot milestone 3: aggregate counter 58,695,053 to 59,144,653 at completed verification = 449,600 tokens, including context/coordination overhead. Two bounded workhorse-model helpers, reused UI and SQLite fixtures, one browser room. Counter is not monetary cost and this differently sized batch does not establish a savings percentage. Final Git/push overhead follows this sample.
63 lines
3.8 KiB
Markdown
63 lines
3.8 KiB
Markdown
# Truthtrance hand inventory
|
|
|
|
13 September 2026. A bounded current-fact capability; public Advanced and unfinished
|
|
expansion starts remain gated. Freeform interpretation and broader commitments are
|
|
still incomplete.
|
|
|
|
## Contract and authority
|
|
|
|
The [GF9 November 2020 FAQ, p8](https://www.gf9games.com/dune/wp-content/uploads/2020/11/Dune-FAQ-Nov-2020.pdf)
|
|
permits game-related Yes/No questions and AND/OR combinations, including a weapon
|
|
and defense example. Official-domain indexed page text was retrieved on this date.
|
|
This implementation supplies precise current-hand predicates, not a restriction on
|
|
the questions allowed by the published card.
|
|
|
|
`HandInventoryFact` compares physical cards currently held with a nonnegative safe
|
|
integer, using exactly, at least or at most. Categories are all cards, primary
|
|
weapons, primary defenses, Worthless, Cheap Hero/Heroine, and remaining Special
|
|
cards. Decks, discards, separate caches and on-table cards are outside the hand.
|
|
Reserved cards still held in hand count. This fact creates no obligation to keep
|
|
cards, acquire more, or use them in a particular slot.
|
|
|
|
Primary roles are an explicitly worded query definition. They reuse the existing
|
|
component presentation and canonical Richese definitions, not battle-slot legality:
|
|
Weirding Way is primarily a weapon, Chemistry a defense, and Worthless cards remain
|
|
separate even for BG/CHOAM. Stone Burner and Mirror Weapon are printed weapons;
|
|
Portable Snooper is a printed defense despite their persisted `special` kind.
|
|
See [Richese components](RICHESE_COMPONENTS.md) for that physical inventory audit.
|
|
No unfinished effect is enabled by counting its held card.
|
|
|
|
`game/card-category.ts` provides the shared classification. The focused inventory
|
|
module parses, compares and renders the predicate; the existing Truthtrance flow
|
|
handles priority, aggregate three-valued logic, truthful responses, physical card
|
|
disposal and resuming the interrupted decision. Only the respondent sees the
|
|
verified answer before publication. Exact Yes comparisons necessarily disclose
|
|
the selected count, but matching card identities and individual compound results
|
|
are not added to other views. All four bots use the same owner-only answer.
|
|
|
|
## Verification and limits
|
|
|
|
`tests/truthtrance-hand-inventory.test.ts` exercises physical copies, default and
|
|
alternate roles, input rejection, actual questions/answers, private views, four
|
|
profiles, JSON continuations and the absence of a retention promise. The existing
|
|
production-room SQLite suite `tests/truthtrance-spice-recovery.test.ts` now covers
|
|
total/category and compound inventory facts across module restarts, suspended
|
|
auction payment, unchanged private views and competing answers committing once.
|
|
|
|
Browser acceptance and final required check results are recorded in the milestone
|
|
checkpoint and its private verification report. These checks establish the stated
|
|
fact boundary; they do not certify every card interaction, arbitrary question,
|
|
AI question strategy, complete Advanced play or expansion readiness.
|
|
|
|
Browser room `LC3E55GY` was created through the lobby, backed up, then staged through
|
|
the genuine Basic initializer into an isolated phase-five question opportunity.
|
|
Its Medium Emperor held four physical cards: two Shields, Lasgun and Baliset.
|
|
The human asker submitted primary-weapon-at-least-one AND
|
|
primary-defense-at-least-two; the AI publicly answered Yes. A negative count
|
|
disabled submission and showed the correction. At 390px width the human then
|
|
submitted total-hand-exactly-four and refreshed during the answer wait. The room
|
|
restored both Yes records, an empty asker hand and the prior movement decision.
|
|
Phone screenshots showed readable controls and the public preview; the temporary
|
|
viewport was reset. Other saved rooms were not used as fixtures. This is targeted
|
|
question/recovery evidence, not a complete-game browser run.
|