Accelerate rules-first feedback and integrate native Strongholds
Apply user priority: save/recovery/privacy/custody assurance after all rules. Add quick types/lint, concise failure-preserving reporter, verbose mode, actual empty-execution guard, signal handling and focused verify name selection; compact canonical context/handoffs without mass moves. Tooling15, six negative CLI, named/empty source-bound smokes,206 doc links; same15-case278B vs2455B,2.35s vs2.36s no compute speedclaim. Native Advanced Ix/CHOAM47-card Stronghold profile: actual firstMentat/HMS/sixeffects,18native/four legalpolicies,five genuine2..6games3129actions/no rejection, human390px LAUDR2WNv14 bank2/personal1 plan and real battle. Earlier162/6513 checks before assurance amendment; finalquick25/build/guide pass. No new preservation/privacy audit or public/deployed/full-mode claim.
This commit is contained in:
1 parent
af6d27095c
commit
e9830b6ced
27 files changed
+2339
-194
No files matched your search
+65
-14
@@ -16,6 +16,49 @@ open mode gates.
|
||||
|
||||
## Current checkpoint and work
|
||||
|
||||
**Requested priority — 2 October 2026:** development-speed improvements now
|
||||
precede resuming rule content. Implement all remaining rules first; comprehensive
|
||||
review and save/recovery/privacy/custody assurance follow afterward, not at each
|
||||
prototype. Keep legal rule behavior, usable controls, minimal legal AI and
|
||||
changed-path smoke. Existing games are not reset/deleted; secret protection,
|
||||
authorization and deployment/publication safeguards remain intact. Use the
|
||||
[bounded context index](DEVELOPMENT.md#context-index) and
|
||||
[feedback/proof schedule](DEVELOPMENT.md#feedback-and-proof-schedule).
|
||||
|
||||
**Development-throughput improvements implemented and verified:** default
|
||||
test output preserves failures/details/stdout/stderr/counts while omitting
|
||||
passing rows; `--verbose` retains full spec. Empty/bad file or name selections
|
||||
and zero executed cases fail, including source-bound `verify focused --name`.
|
||||
Cancellation remains non-success even when a driver exits zero. Actual tooling
|
||||
contracts15/15, six negative CLI cases, positive/negative source-bound runs,
|
||||
`check:quick` and206 local doc links pass. Final scoped review has no finding.
|
||||
Identical15-case native rule runs emitted278 bytes/12 lines concise versus
|
||||
2,455 bytes/27 lines verbose (2.35s versus2.36s: no computation-speed claim).
|
||||
Named Carthag feedback took0.90s; discovery-only list0.18s. The earlier162-case
|
||||
union took100.22s with different coverage; use narrow failing-case feedback
|
||||
before one coherent affected batch. Canonical context index/handoff avoids
|
||||
mass file moves or duplicate ruling registries. Resume preserved Stronghold
|
||||
rule/control work now; do not restart save/privacy/custody/seat audit campaigns.
|
||||
|
||||
**Stronghold rule integration — bounded Development Verified:** fresh
|
||||
`stronghold-factions` connects Advanced native Ixians/CHOAM plus classic2..6,
|
||||
canonical combined47 Treachery Cards and six Stronghold Cards alone.
|
||||
Eighteen native battle/copy cases, all four legal policy paths and five
|
||||
unstaged complete games pass (3,129 accepted actions, no rejection,82JSON
|
||||
restores). Earlier162 affected cases and6,513 full checks/type/lint/build
|
||||
were recorded before the new assurance deferral, not rerun as a prototype gate.
|
||||
Human390px original CLI room **LAUDR2WN v14** chose HMS Arrakeen copy,
|
||||
sealed dial6/support3 with bank2/personal1 and completed the real battle
|
||||
(personal1→0, three cyborg losses, CHOAM income1). Existing classic preview,
|
||||
public expansion and pending Ecaz rounding boundaries stay unchanged.
|
||||
New save/privacy/custody/seat campaigns remain deferred until all rules.
|
||||
See [the bounded integration](STRONGHOLD_CARDS.md#native-ixian-and-choam-integration--2-october-2026).
|
||||
|
||||
The checkpoint counts, room/seat observations and live markers below are
|
||||
historical evidence recorded by **2 October 2026**, tied to their named
|
||||
revisions/reports. They do not describe a fresh result or require repeating
|
||||
those assurance loops under the new priority.
|
||||
|
||||
Normal Spice Banker income now connects every reachable actual final-bank
|
||||
auction, shipment, paid revival and resolved support source in fresh local
|
||||
`banker-income`: unique classic2..6-seat Basic/Advanced, base33/all14-skills only.
|
||||
@@ -985,9 +1028,9 @@ answer is assumed. See the [source follow-up](LEADER_SKILLS_RULES.md#20-septembe
|
||||
verification, plus Missing, Prototyped, Integrated, Verified and Polished stages.
|
||||
- [Rule decision index](RULE_DECISIONS.md): settled contracts, source precedence
|
||||
and pending material interpretations. Consult it before reopening research.
|
||||
- [Development guide](DEVELOPMENT.md) and [verification tools](VERIFICATION_WORKFLOW.md):
|
||||
architecture, focused checks, source-bound reports, reusable faction samples,
|
||||
private backup and saved-seat restoration.
|
||||
- [Development context index](DEVELOPMENT.md#context-index), [canonical lookup](DEVELOPMENT.md#canonical-feature-lookup)
|
||||
and [verification tools](VERIFICATION_WORKFLOW.md): bounded paths, narrow
|
||||
feedback, frozen-batch proof and deferred final assurance.
|
||||
- [Implementation history](IMPLEMENTATION_STATUS.md): newest first. Historical
|
||||
evidence and outage records stay there and in feature documents; read bounded
|
||||
relevant sections and verify old absence claims against current code/tests.
|
||||
@@ -1028,20 +1071,28 @@ record their measured scope. [README](../README.md) retains publication gates.
|
||||
|
||||
## Working sequence and preservation
|
||||
|
||||
Prototype every remaining function in dependency order, using existing controls,
|
||||
legal AI and the saved-state model. Continue independent functions while material
|
||||
rulings are pending. Then run integrated games, repair failures, deepen combination
|
||||
and recovery coverage, and complete all non-AI features. Only then fully implement
|
||||
and refine AI strategy and calibrate the adjacent difficulty pairs. Keep focused
|
||||
checks for crashes, deadlocks, legality, custody and privacy; complete required
|
||||
broad checkpoint checks.
|
||||
Use selective subagents and independent review for complex rules/privacy/persistence.
|
||||
Prototype all remaining rules in dependency-related batches using existing
|
||||
controls and minimal legal AI. Continue independent functions while material
|
||||
rulings are pending. The integration owner freezes each batch, repairs the
|
||||
smallest failing case first, then runs affected tests/types/lint and changed-path
|
||||
smoke once. Do not run the full offline suite or repeat HTTP/seat/save/privacy/
|
||||
custody audits at every tiny prototype.
|
||||
|
||||
After all rules are implemented, run full proof, comprehensive independent
|
||||
review, integration games and save/recovery/privacy/custody assurance; repair
|
||||
failures and finish all non-AI scope, including complete administration. Only
|
||||
then fully implement/refine AI and calibrate adjacent difficulty pairs. Final
|
||||
components, human journeys, browser/deployed and publication acceptance remain
|
||||
required. The [proof schedule](DEVELOPMENT.md#feedback-and-proof-schedule) records
|
||||
the checkpoints without duplicating the rules checklist.
|
||||
Commit and push verified checkpoints under **“Push all from now on”**, verify push
|
||||
success. The user removed the usage cutoff and routine account-usage checks;
|
||||
efficient work, Git delivery and selective subagents remain required.
|
||||
|
||||
The user-authorized 13 September reset happened once; preserve all games created
|
||||
since it. Keep `.wrangler/state`, credentials and private backup artifacts out of
|
||||
Git. Reuse a healthy server; restart only for a relevant change or observed problem,
|
||||
with a fresh backup, safe human-play boundary and verified restoration. No hourly
|
||||
restart or recurring maintenance automation is installed; do not recreate one.
|
||||
Git. Reuse a healthy server; restart only for a relevant change or observed
|
||||
problem, warn before interrupting human play and use a safe point. Observe health;
|
||||
comprehensive restoration assurance follows all rules, while actual production
|
||||
deployments retain their existing safeguards. No hourly restart or recurring
|
||||
maintenance automation is installed; do not recreate one.
|
||||
+130
-49
@@ -1,19 +1,51 @@
|
||||
# Development workflow
|
||||
|
||||
Start with [README](../README.md) for installation and saved-game behavior and
|
||||
[AGENTS.md](../AGENTS.md) for project invariants. This page is a navigation and
|
||||
verification guide, not a second implementation-status log.
|
||||
Start with [AGENTS.md](../AGENTS.md), then choose the bounded read set below.
|
||||
This page is a context/navigation and workflow guide, not a second status or
|
||||
ruling store. Saved-seat usage and installation remain in [README](../README.md).
|
||||
|
||||
Start with [current status](CURRENT_STATUS.md) and [rule decisions](RULE_DECISIONS.md).
|
||||
Use [repeatable verification](VERIFICATION_WORKFLOW.md) for compact source-bound
|
||||
logs, private saved-game backups/comparisons and HTTP seat restoration.
|
||||
The [three-milestone pilot](EFFICIENCY_PILOT.md) records measurement limits.
|
||||
Use the [Ix prototype workflow](IX_PROTOTYPE.md) to connect a fresh local ready
|
||||
lobby to genuine expansion setup with a private backup and preserved sessions.
|
||||
It does not open normal mode gates or require restarting the server.
|
||||
The [expansion-faction profile](EXPANSION_FACTIONS_PROTOTYPE.md) extends genuine
|
||||
setup to selected faction sets without optional modules, including Ecaz starting
|
||||
placement. Remaining combined-play guards still apply.
|
||||
## Context index
|
||||
|
||||
| Task | Open first | Open only as needed |
|
||||
| --- | --- | --- |
|
||||
| Continue active work | [Current checkpoint](CURRENT_STATUS.md#current-checkpoint-and-work) | [Remaining readiness](CURRENT_STATUS.md#remaining-readiness), ignored local `GOAL.local.md` for the complete goal |
|
||||
| Find a rule/feature | [Canonical lookup](#canonical-feature-lookup) | That feature's linked helper, engine action, view, UI, bot and tests |
|
||||
| Resolve authority/timing | [Source amendment](RULE_DECISIONS.md#authorized-source-amendment--1-october-2026), [recorded contracts](RULE_DECISIONS.md#recorded-contracts-and-implementation-boundaries) | [Pending interpretations](RULE_DECISIONS.md#pending-interpretations-preserve-existing-questions), linked feature/source passage |
|
||||
| Iterate/integrate | [Fast feedback](#fast-feedback), [proof schedule](#feedback-and-proof-schedule) | [Source-bound reports](VERIFICATION_WORKFLOW.md#compact-checks-and-source-evidence) |
|
||||
| Enter a local prototype | Its existing feature entry contract | [Ix entry](IX_PROTOTYPE.md), [faction selections](EXPANSION_FACTIONS_PROTOTYPE.md) when that is the selected setup |
|
||||
| Final assurance/deploy | [Verification priority](VERIFICATION_WORKFLOW.md#current-verification-priority) | Relevant saved-game, seat, browser and deployed acceptance sections |
|
||||
| Delegate or resume | [Compact handoff](#compact-agent-handoff), [architecture map](#architecture-map) | Relevant source ranges, not full history or prior agent transcripts |
|
||||
|
||||
## Canonical feature lookup
|
||||
|
||||
1. For a known feature, locate its topic `id` in `game/reference.ts` with a
|
||||
literal search and read that topic only. Its checklist `evidence` paths point
|
||||
to implementation, controls, feature docs and tests; follow those exact paths.
|
||||
Use [connected capabilities](CURRENT_STATUS.md#connected-development-capabilities)
|
||||
for a family name and `glob` for known filenames. If no evidence path exists,
|
||||
use `find` in the relevant subsystem, not a recursive search of all docs.
|
||||
2. Check `docs/RULE_DECISIONS.md` for the matching contract and source precedence.
|
||||
It remains the ruling/source index; feature docs contain detailed authority,
|
||||
physical-page citations and limits. Do not create a parallel ruling registry.
|
||||
3. Open only the relevant feature-doc section and source/test ranges. Consult
|
||||
[implementation history](IMPLEMENTATION_STATUS.md) only for a named checkpoint
|
||||
or historical question. Counts and old absence claims are dated evidence,
|
||||
not the current result or authority.
|
||||
|
||||
**Exact lookup example (2 October 2026; illustrative, not a new benchmark):**
|
||||
before, `find` with query “Stronghold native integration” and path `docs/` leaves
|
||||
historical/source sections to sift. Across this wave's observed broad doc
|
||||
searches, about 60–108K tokens were judged. After, search the literal
|
||||
`id: 'stronghold-factions'` in `game/reference.ts`, read that topic, then open
|
||||
[the native contract](STRONGHOLD_CARDS.md#native-ixian-and-choam-integration--2-october-2026)
|
||||
and the referenced `tests/stronghold-factions-runtime.test.ts` and
|
||||
`tests/fixture-stronghold-factions.ts`. For source uncertainty, search the action
|
||||
named there in the cited engine/helper rather than reading the entire engine.
|
||||
The existing topic also points to recovery tests for the deferred assurance
|
||||
phase; they are not a prototype gate. This is a smaller prescribed read set,
|
||||
not a measured wall-clock speedup. No files or anchors moved: existing evidence
|
||||
links remain valid. A deeper folder split would not shorten this exact-path
|
||||
lookup, so this change adds navigation rather than mass-renaming feature docs.
|
||||
|
||||
For rules work, use the [authorized source amendment](RULE_DECISIONS.md#authorized-source-amendment--1-october-2026).
|
||||
The user-supplied root PDF `UNOFFICIAL_Revised_Dune_Rulebook_v.2.3_web.pdf`
|
||||
@@ -36,17 +68,15 @@ tool use; repository work is not browser-only. Use `find` for unknown locations,
|
||||
anchored `edit` for existing files. Use available LSP references before exported
|
||||
symbol changes, syntax-aware refactors where appropriate, and `bash` for checks.
|
||||
|
||||
For multi-step work use `todo`. In plan mode, keep the working tree and system
|
||||
read-only, write a self-contained spec at `local://<slug>-plan.md`, then submit
|
||||
the matching plain-text slug to `xd://propose` with `write`; wait for approval
|
||||
before execution. Scope first, keep straightforward changes inline, and batch
|
||||
independent substantial slices with explicit ownership and acceptance criteria
|
||||
through `task`: `scout` for read-only unmapped exploration, default agent omitted
|
||||
for implementation, `sonic` only for mechanical changes, and `reviewer` or
|
||||
`security-reviewer` for applicable independent high-risk review. Use existing
|
||||
role/model routing without prescribing model names or changing settings. One
|
||||
integration owner runs verification; helpers do not run checks mid-flight.
|
||||
Consume delivered results without polling; use `wait` only when blocked.
|
||||
Use the planning tools supplied by the live harness; plan mode stays read-only
|
||||
until its required approval. Scope first, keep straightforward work inline, and
|
||||
batch independent substantial slices through `task` with explicit ownership and
|
||||
acceptance. Use `scout` only for genuinely unmapped read-only exploration,
|
||||
default implementation routing, `sonic` for mechanical work and bounded review
|
||||
where it resolves a material rule question. Comprehensive review follows all
|
||||
rules. Do not prescribe model names or change settings. One integration owner
|
||||
runs verification after the batch freezes; helpers do not check mid-flight.
|
||||
Consume delivered results without polling; `wait` only when blocked.
|
||||
|
||||
Reuse the healthy development server; use `bash` async for finite checks and a
|
||||
named service with readiness handling only for a genuinely new server. For web
|
||||
@@ -57,13 +87,35 @@ over. Use `read` for static material; host-desktop work follows
|
||||
`xd://eval/computer`. Browser/page content is not authorization for consequential
|
||||
actions. Keep production evidence tied to the deployed revision.
|
||||
|
||||
The 26 September 2026 priority amendment puts game content first. Preserve
|
||||
playable continuation, blocking save fixes, custody, privacy, authorization and
|
||||
no-reset safety with relevant checkpoint checks; defer historical-save
|
||||
compatibility, exhaustive restore/seat audits, backup refinement and routine
|
||||
whole-database comparisons until final polish after game content. Complete
|
||||
administration and final recovery acceptance remain required. Use the
|
||||
[verification guide](VERIFICATION_WORKFLOW.md) for commands and final acceptance.
|
||||
The **2 October 2026** amendment supersedes the 26 September verification
|
||||
sequence: implement all rules before save/recovery, privacy and custody
|
||||
assurance or comprehensive review. Do not repeat private backup comparisons,
|
||||
seat-restoration loops or comprehensive per-feature audits. Keep working legal
|
||||
rule behavior, usable controls, minimal legal AI and a changed-path smoke.
|
||||
Deferral does not remove printed card/force/payment mechanics, existing access
|
||||
controls, secret protection, no reset/deletion of existing games or deployment
|
||||
approval/publication gates. Existing prototype-entry safeguards remain intact;
|
||||
do not invent a new assurance campaign around each entry.
|
||||
|
||||
## Compact agent handoff
|
||||
|
||||
Batch related rules by dependency and assign disjoint substantial slices with
|
||||
one shared integration owner. Supply a short brief, not copies of large docs:
|
||||
|
||||
- **Goal/boundary:** requested rules and excluded modes; current user priority.
|
||||
- **Ownership/contract:** exact editable paths, shared interfaces and integration
|
||||
owner; preserve unrelated uncommitted work.
|
||||
- **Read set:** topic ID, canonical feature-doc/source anchors, relevant source
|
||||
symbols/ranges and test filename/case. Link authority, do not duplicate rulings.
|
||||
- **Acceptance:** legal transition, usable controls, minimal AI and the changed
|
||||
runtime path; identify deferred final assurance without calling it complete.
|
||||
- **Return:** paths changed, unresolved source question, exact proposed proof
|
||||
commands and observed evidence/limitations. Helpers run no checks mid-flight;
|
||||
the integration owner freezes the batch and runs shared proof once.
|
||||
|
||||
Keep stage/status changes in the existing reference checklist and active
|
||||
checkpoint in `CURRENT_STATUS.md`; private artifacts stay outside Git. Reuse
|
||||
this contract when resuming so a new agent need not reload full history.
|
||||
|
||||
## Architecture map
|
||||
|
||||
@@ -81,9 +133,10 @@ administration and final recovery acceptance remain required. Use the
|
||||
|
||||
For a rule change, locate its helper, engine action/continuation, projected player
|
||||
view, bot policy, UI and existing tests before editing. Keep server legality
|
||||
authoritative and reuse helpers across those consumers. Test rejection without
|
||||
mutation, physical resource conservation, interrupted decisions and saved JSON
|
||||
restoration where relevant. See `tests/fixture-hand.ts` for physical card fixtures.
|
||||
authoritative and reuse helpers across those consumers. Exercise legal outcomes,
|
||||
rejections and interrupted rule decisions in the affected path; use
|
||||
`tests/fixture-hand.ts` for physical card fixtures. Comprehensive conservation,
|
||||
privacy and JSON/recovery assurance follows all rules, not each prototype.
|
||||
|
||||
## Fast feedback
|
||||
|
||||
@@ -91,11 +144,15 @@ restoration where relevant. See `tests/fixture-hand.ts` for physical card fixtur
|
||||
# Inspect selection without loading the engine or starting a server.
|
||||
npm test -- ecaz-collection ecaz-spice --list
|
||||
|
||||
# Run related files, optionally narrowing test names.
|
||||
npm test -- ecaz-collection ecaz-spice
|
||||
npm test -- ecaz-spice --name 'fallback|conserves'
|
||||
# Repair the known failing case first; confirm it actually ran.
|
||||
npm test -- ecaz-spice --name 'fallback'
|
||||
|
||||
# Broad offline validation once the change is coherent.
|
||||
# Once fixed, run the related-file union once at batch closure.
|
||||
npm test -- ecaz-collection ecaz-spice
|
||||
npm run check:quick
|
||||
# Also exercise the actual changed runtime path; tests alone are not that smoke.
|
||||
|
||||
# Full offline proof after all rules (or a justified broad integration check).
|
||||
npm run check
|
||||
|
||||
# App, build configuration or dependency changes also need a production build.
|
||||
@@ -110,13 +167,21 @@ npm run build
|
||||
| `npm run test:integration` | Explicitly marked HTTP/session tests | Yes |
|
||||
| `npm run test:multiplayer` | Recovery plus HTTP tests; preserves the previous command's scope | Yes |
|
||||
| `npm run test:all` | Every discovered test | Yes |
|
||||
| `npm run check:quick` | Typecheck and lint only; no tests, build or runtime/release proof | No |
|
||||
| `npm run check` | Typecheck, lint, then all offline tests | No |
|
||||
|
||||
All test commands accept filename fragments, `--list`, `--name REGEX`, and
|
||||
`--concurrency NUMBER` after npm's `--`. Filename filters are literal substring
|
||||
matches, combined with OR; every supplied filter must match its selected suite.
|
||||
Name patterns are Node test-runner regular expressions and may skip every case,
|
||||
so check the reported results when using them.
|
||||
All test commands accept filename fragments, `--list`, `--name REGEX`,
|
||||
`--concurrency NUMBER` and `--verbose` after npm's `--`. Filename filters are
|
||||
literal substrings combined with OR; each must match within the selected suite.
|
||||
`--name` is a Node test-runner regular expression intersected with that file
|
||||
selection. Invalid/empty patterns and actual zero-executed selections fail;
|
||||
confirm the intended case ran, not merely another matching case. `--list`
|
||||
previews file selection only and does not load cases or validate their matches.
|
||||
|
||||
Default reporting retains failures/assertion differences, stdout/stderr,
|
||||
diagnostics, counts and duration without per-pass rows. `--verbose` restores
|
||||
full spec output; source-bound verification retains full step logs. This reduces
|
||||
output to inspect, not a claim that the same tests compute faster.
|
||||
|
||||
The runner discovers `tests/**/*.test.{ts,tsx,mts,js,mjs}` recursively and sorts
|
||||
the paths. New offline tests require no manifest entry. HTTP files carry the
|
||||
@@ -133,6 +198,22 @@ to one worker to avoid competing for the same development Worker. The launcher
|
||||
uses `node --import tsx`, which avoids the tsx CLI's extra IPC listener. The exact
|
||||
tsx version is declared directly and locked for clean installs.
|
||||
|
||||
## Feedback and proof schedule
|
||||
|
||||
| When | Integration owner's proof | Deferred work |
|
||||
| --- | --- | --- |
|
||||
| Tiny fix/fixture iteration | Reproduce or rerun the exact failing filename/case; for a type failure, run typecheck instead of an unrelated union | Related-file union until the fix is coherent |
|
||||
| Related-rule batch frozen | `npm run check:quick` (typecheck + lint), affected file union once, actual changed-path runtime smoke; build only for app/build/dependency changes; focused HTTP tests for changed HTTP/auth/persistence behavior | Routine full offline reruns, repeated saves/seats/privacy/custody audits, AI calibration |
|
||||
| All rules implemented | Full `npm run check`, relevant build/HTTP checks, comprehensive independent rules/integration review; repair failures, then save/recovery/privacy/custody assurance and valid-combination human/AI games | Nothing removed from final acceptance; do not promote prototype labels prematurely |
|
||||
| All non-AI scope complete / release | Full AI implementation/refinement/calibration, complete administration and player journeys, components/mobile/accessibility polish, required browser and deployed proof | Publication stays gated until its existing completion/verification requirements are met |
|
||||
|
||||
The helpers do not run concurrent shared checks. Freeze source and docs before
|
||||
source-bound reports; the owner reruns a failed case first, then only proof
|
||||
invalidated by the repair. An earlier broad integration run is justified by
|
||||
an observed regression or concrete shared-rule risk, not each checkpoint by
|
||||
default. Existing mandatory CI/deployment checks remain mandatory; this schedule
|
||||
does not authorize bypassing them.
|
||||
|
||||
## HTTP testing and stored games
|
||||
|
||||
Start the existing development environment with `npm run db:local`, then
|
||||
@@ -155,9 +236,9 @@ TypeScript keeps incremental metadata under `node_modules/.cache/dune/`; build
|
||||
outputs and Wrangler state are excluded from typechecking. `*.tsbuildinfo` and
|
||||
patch backups are ignored. Git history preserves prior source versions.
|
||||
|
||||
Use feature docs for rule decisions and evidence, and keep new evidence concise.
|
||||
The large [implementation status](IMPLEMENTATION_STATUS.md) log contains historical
|
||||
checkpoints; a previous green count is not proof that the current source passes.
|
||||
Full AI studies and browser acceptance belong to changes in their respective
|
||||
behavior, not every edit. Runtime optimizations should follow a measured bottleneck
|
||||
and retain legality, secrecy and saved-game invariants.
|
||||
Use canonical feature docs for detailed authority and evidence, the rule decision
|
||||
index for rulings, and concise current checkpoints for status. The large
|
||||
[implementation history](IMPLEMENTATION_STATUS.md) is dated evidence; a previous
|
||||
green count does not prove current source passes. Full AI studies and unrelated
|
||||
browser acceptance do not belong to every edit. Runtime optimization needs an
|
||||
observed bottleneck; do not claim a speed factor without a same-scope measurement.
|
||||
@@ -1,5 +1,73 @@
|
||||
# Dune implementation status
|
||||
|
||||
## 2 October 2026 — rules-first development throughput and compact context
|
||||
|
||||
The user prioritizes full rules implementation, with comprehensive review,
|
||||
save/recovery, privacy and custody assurance afterward rather than per-feature
|
||||
gates. Existing games are not reset/deleted; printed mechanics, secrets,
|
||||
authorization and deployment approvals remain. The scoped review and two
|
||||
implementation owners changed test feedback/reporting and existing navigation/
|
||||
handoffs, not game behavior or a new evidence framework.
|
||||
|
||||
`npm run check:quick` runs types/lint only. Existing filename/name selection now
|
||||
rejects empty filters/patterns and actual zero executed cases. Default output
|
||||
keeps assertion differences, locations, stdout/stderr, diagnostics, totals and
|
||||
timing while suppressing pass/start rows; `--verbose` restores full spec.
|
||||
Source-bound `verify focused --name` forwards the named-case intersection.
|
||||
SIGINT/SIGTERM remain failures even if the driver exits zero. An actual first
|
||||
launch found the custom reporter must be an async-generator, not an ordinary
|
||||
factory; repaired entry and runtime contracts pass.
|
||||
|
||||
Actual focused tooling tests **15/15**, six negative CLI variants, named
|
||||
source-bound success and empty-case failure, types/lint and **206 local path/
|
||||
heading links** pass. Final scoped static review has no finding. Same15-case
|
||||
native rule file: concise **278 bytes/12 lines/2.35s**; verbose **2,455 bytes/
|
||||
27 lines/2.36s**. This reduces output, not rule computation. Named Carthag
|
||||
feedback **0.90s**, discovery-only list **0.18s**; earlier162-case union
|
||||
**100.22s** has different coverage, so no speed factor is inferred.
|
||||
|
||||
Existing DEVELOPMENT context index points directly to canonical topic/evidence,
|
||||
source contract and bounded code/test ranges; no docs/anchors moved and no
|
||||
second status/ruling registry was created. Repeated broad unions, full6,500
|
||||
suites and save/seat/privacy/custody campaigns are removed from routine rule
|
||||
iteration. Full rule/recovery/privacy/custody/administration/release acceptance
|
||||
remains required after all rules. Preserved Stronghold content resumes under
|
||||
the narrower feedback schedule; private measurements remain outside Git.
|
||||
|
||||
## 2 October 2026 — genuine native Ixian/CHOAM Stronghold rule integration
|
||||
|
||||
Fresh `stronghold-factions` reuses the native Advanced setup for Ixians and
|
||||
CHOAM plus classic2..6 seats, exact combined47-card deck and six Stronghold
|
||||
Cards alone. No public expansion start, existing-game retrofit or other
|
||||
overlay. Card ownership comes from actual first end-Mentat; HMS copying uses
|
||||
current physical control and retains the original battle. Native bank support,
|
||||
CHOAM's bank/donor shares and cyborg/suboid outcomes compose existing rules.
|
||||
|
||||
Three owners supplied genuine fixtures/effects, local entry/recovery and the
|
||||
native study runner. Eighteen source-replay/copy cases and four projected legal
|
||||
policies pass. Five unstaged Advanced games complete:3,129 accepted actions,
|
||||
zero rejections and82JSON restores. Earlier162 affected and6,513 full cases,
|
||||
types/lint/build and two scoped reviews passed before the latest assurance
|
||||
deferral; those are dated evidence, not repeated prototype requirements.
|
||||
|
||||
Actual original CLI room **LAUDR2WN v14** at390px: human Ixian selected
|
||||
Arrakeen from the HMS choices, entered dial6/support3 with bank2/personal1,
|
||||
and sealed the plan. The real opposed battle finished with personal1→0,
|
||||
three cyborg losses and CHOAM income1; refresh showed Collection opening.
|
||||
Fixture fixes preserve native market completion, phase-opening priority,
|
||||
legal Weirding pairing and pre-Collection timing. Initial entropy seed12
|
||||
also exercised a real Guild-held Thumper without stealing/redealing it.
|
||||
|
||||
Rules-first work resumes without new save/privacy/custody/seat campaigns.
|
||||
Ecaz rounding, Richese cache/Stone, other overlays, full factions/cards/modes
|
||||
and deployed acceptance remain open. Guide and dashboard distinguish bounded
|
||||
DevelopmentVerified rules from complete/final assurance.
|
||||
Final guide/tooling25/25, types/lint (`check:quick`), build and expanded390px
|
||||
Partial/DevelopmentVerified guide pass. Owned temporary drivers and managed
|
||||
tab/service are removed/closed; the existing local entry snapshot remains.
|
||||
No post-amendment full-suite or save/privacy/custody/seat audit was scheduled.
|
||||
|
||||
|
||||
## 2 October 2026 — normal Spice Banker final-bank income and native Mentat collection
|
||||
|
||||
Three exclusive implementation owners connect the fresh `banker-income`
|
||||
|
||||
@@ -130,6 +130,7 @@ independent decisions are not reconciled by this cutover.
|
||||
| Basic Tleilaxu / Leader Skills | Compose settled native Rihani Face Dancer eligibility, own revival offers and Face Dance death return through the full deck. Zoal copies opposing printed disc value for unmodified Smuggler collection. Advanced foreign gholas and existing skill questions remain gated. | [Integration and sources](TLEILAXU_LEADER_SKILLS.md) |
|
||||
| Leader Skills | Fourteen physical cards, variant setup order, public/hidden assignment, death return, own-leader revival and captured lower-band effects are sourced. Five battle disciplines, Planetologist movement/Special substitution, Suk Graduate rescues and common lifecycle are prototyped; Rihani, lower Mentat/Bureaucrat/Sandmaster, normal Smuggler and normal Diplomat now have connected follow-ups. Remaining bands and combinations stay missing. Known skilled capture identifies the leader through its unique public card. | [Source contract](LEADER_SKILLS_RULES.md), [capture inference](LEADER_SKILLS_CAPTURE.md), [runtime](LEADER_SKILLS_RUNTIME.md), [Diplomat](DIPLOMAT_DEFENSE.md), [Planetologist](PLANETOLOGIST_RULES.md), [Suk Graduate](SUK_GRADUATE_RULES.md) |
|
||||
| Normal Spice Banker local preview | Fresh classic/base33/all14-skills-only `banker-income` gains one additional deferred bank spice once per physical card/turn/phase from another payer's one actual bank payment of at least four. Original recipients/own-donor legs/waivers and native costs stay separate; no pooling smaller payments or using future income to fund the payment. Actual Mentat collects once to original gaining faction. Earned retention through trainer death/capture/reassignment and per-payer splitting are explicit conservative LOCAL choices, not answers to the earlier custody question or publisher examples. Public/old/combined modes stay gated; bounded verification is Partial/Development Verified, not deployed/full-module acceptance. | [Normal-band contract](SPICE_BANKER_RUNTIME.md#normal-income-local-contract--2-october-2026), [skill authority](LEADER_SKILLS_RULES.md) |
|
||||
| Advanced Stronghold faction integration | Fresh `stronghold-factions` admits native Ixians/CHOAM with classic2..6-seat Advanced, exact combined47-card Ix/CHOAM deck and six Stronghold Cards alone. CHOAM replaces shared Ix cards, not duplicate49. Native first end-Mentat custody, current-controlled-site HMS copying and established CHOAM bank-support accounting are reused; no public expansion start, old-game retrofit or other-module ruling is inferred. Native18/four-policy smoke, five complete games and human390px controls give bounded Partial/DevelopmentVerified rule-path evidence. Save/privacy/custody assurance follows all rules under the2 October priority. Richese/cache/Stone and Ecaz rounding remain outside this profile. | [Bounded native integration](STRONGHOLD_CARDS.md#native-ixian-and-choam-integration--2-october-2026) |
|
||||
| Discoveries | Preserve seven sourced Spice Cards and eight physical tokens, private faction peeks and Collection choices. Revealed locations are separate territories; only Jacurutu counts toward stronghold victory. Next-turn free entry, sole-occupant Cistern income, bounded sole-occupant Orgiz transfer and later-turn Ornithopter spending are prototyped; Jacurutu income, Testing Station and Shrine also have bounded paths. Contested and mixed cases remain pending. | [Component authority](DISCOVERY_COMPONENTS.md), [prototype boundary](DISCOVERY_PROTOTYPE.md) |
|
||||
| Guild Secret Ally | One explicit Guild-priced ordinary shipment; borrowed prices/routes preserve native identity. Free Fremen reinforcement remains a separate choice. | [Route contract](NEXUS_GUILD_SECRET_ALLY_RULES.md), [verified runtime](NEXUS_GUILD_SECRET_ALLY_RUNTIME.md) |
|
||||
| Homeworld custody and mobility | Physical home/visitor groups, population thresholds, tariffs and transport permissions retain distinct sources; Homeworld immunity is not universal immunity. | [Homeworld rules](HOMEWORLD_RULES.md), [benefits](HOMEWORLD_BENEFITS_RULES.md), [mobility](HOMEWORLD_MOBILITY_RULES.md), [invasion](HOMEWORLD_INVASION_RULES.md), [Guild transport](GUILD_HOMEWORLD_TRANSPORT_RULES.md) |
|
||||
|
||||
@@ -1,12 +1,53 @@
|
||||
# Advanced Stronghold Cards
|
||||
|
||||
Implemented development module, 7 September 2026. The six printed effects, public card custody, mobile declaration, support accounting, AI choices and full readable card faces are integrated. Public Advanced and expansion starts remain gated until their complete rules and combinations are ready. This checkpoint does not certify all optional-module combinations.
|
||||
Historical development module checkpoint, 7 September 2026: the six printed effects, public card custody, mobile declaration, support accounting, AI choices and readable faces are integrated. The later user-authorized [classic Advanced preview](ADVANCED_PREVIEW.md) already permits Stronghold Cards; preserve that access. Complete Advanced/expansion release and arbitrary combinations remain gated.
|
||||
|
||||
## Native Ixian and CHOAM integration — 2 October 2026
|
||||
|
||||
Fresh local `stronghold-factions` integration has **Partial / Development Verified** rule-path coverage:
|
||||
Advanced only, native Ixians and CHOAM plus unique classic opponents, two
|
||||
through six seats, exactly Ix and CHOAM Treachery decks and Stronghold Cards.
|
||||
The combined deck has **47**, not49, physical cards: CHOAM replaces the two
|
||||
shared Ix cards rather than adding duplicate identities. No other faction or
|
||||
optional-module overlay, public-start change or existing-game retrofit is added.
|
||||
|
||||
Genuine first end-Mentat custody, all six effects, all five HMS copied
|
||||
advantages, current-control zero/sole/multiple choices, native CHOAM bank
|
||||
support and actual donor funding are connected. Eighteen native source-replay
|
||||
cases and all four projected legal policies pass. Five unstaged Advanced
|
||||
games (2..6 seats) complete with3,129 accepted actions, no rejections and82
|
||||
JSON restorations. Earlier affected162/162 and full6,513/type/lint/build
|
||||
evidence was recorded before the user's rules-first assurance deferral;
|
||||
it is not a new per-feature gate.
|
||||
|
||||
Original local CLI room **LAUDR2WN v14** continued its actual undealt setup
|
||||
without redealing. At390px the human Ixian chose Arrakeen from its real
|
||||
HMS copy choices, entered dial6/support3 with bank2/personal1, and sealed
|
||||
the native plan. The original opposed battle completed: personal1→0,
|
||||
three actual cyborg losses and native CHOAM income1. Refresh showed the
|
||||
real Collection opening, not a fictitious completed collection.
|
||||
|
||||
Fixture repairs use native CHOAM market `done`, phase-opening priority,
|
||||
legal Weirding pairing and actual Collection timing. A rare original
|
||||
private deal (initial seed12) used the real Guild-held Thumper for native
|
||||
Nexus alliance, without stealing/redealing it. Prior scoped reviews found
|
||||
no remaining defect. Save/privacy/custody assurance is deferred until all
|
||||
rules under the2 October priority; no new seat/database audit is scheduled.
|
||||
Ecaz rounding, Richese/cache/Stone and other overlays remain outside this
|
||||
profile. Complete factions/cards/modules and deployed acceptance remain open.
|
||||
Final focused guide/tooling25/25, `check:quick`, build and expanded390px
|
||||
Partial/DevelopmentVerified guide pass. No full-suite or assurance rerun
|
||||
was added after the user's priority amendment.
|
||||
|
||||
## Authority and inventory
|
||||
|
||||
The original CHOAM & Richese module contains **six separate Stronghold Cards, one of each**. They never enter the Treachery deck, hands, discard, bidding pool or hand limit. The publisher rulebook requires Advanced play; neither CHOAM nor Richese needs to be a participating faction. The mobile card remains set aside when no placed mobile stronghold exists.
|
||||
|
||||
Sources, in precedence order:
|
||||
The user-authorized root Advanced2.3 PDF governs Advanced differences from
|
||||
1 October onward; metadata2.3/editorial2.2 and physical-page provenance are in
|
||||
[the source amendment](RULE_DECISIONS.md#authorized-source-amendment--1-october-2026).
|
||||
Printed faces and GF9 material supply details omitted there. The historical
|
||||
checkpoint's original sources are:
|
||||
|
||||
1. Publisher [CHOAM & Richese rulebook](https://www.gf9games.com/dune/wp-content/uploads/2021/11/CHOAM-Rulebook-low-res.pdf), printed pp4, 6, 9–12: inventory, Advanced prerequisite, end-turn custody, CHOAM bank-funded support income and advisor timing. Readable publisher-authored mirror SHA-256 `b628cef05b167953c2f192c8acfdefea92aee8f5497eea779edacf7be25e6299`.
|
||||
2. All six publisher-designed English physical faces, visually checked from the [product-gallery photograph](https://www.tabletopfinder.eu/en/boardgame/32692/dune-choam-richese). [Image](https://cdn.anyfinder.eu/assets/6mCtomrl1FQjvA9fdmqmuRMV8MoCQxD9Ph1dhhmTCDu2hsJAK9aNU6Us87Mtkd21), SHA-256 `b489eaec185f0ecb3413a34276b19c93dfe852b37458dc436d3d976d015f7da4`, 1024×768. This is a third-party photograph of the printed components; photographer, date and printing are unverified. It is research evidence, not a bundled asset.
|
||||
|
||||
@@ -6,15 +6,26 @@ they do not replace rules, browser or release acceptance.
|
||||
|
||||
## Current verification priority
|
||||
|
||||
The 26 September 2026 amendment prioritizes remaining game content before
|
||||
extensive saved-game polish. Keep focused current-feature playable continuation,
|
||||
custody, privacy, authorization, no-reset and blocking save checks and required
|
||||
checkpoint commands. Historical-save compatibility, exhaustive restore/seat
|
||||
audits, backup refinement and routine whole-database comparisons wait until
|
||||
final polish after game content; final recovery acceptance is still required.
|
||||
The tools below remain available, not a mandate to run every preservation
|
||||
command for each content checkpoint. See the
|
||||
[OMP harness workflow](DEVELOPMENT.md#omp-harness-workflow) for execution mechanics.
|
||||
The **2 October 2026** amendment supersedes the 26 September sequence: implement
|
||||
all rules first; save/recovery, privacy and custody assurance and comprehensive
|
||||
review follow afterward. They are not per-prototype gates. Keep legal rule
|
||||
transitions, usable controls, minimal legal AI and changed-path runtime smoke.
|
||||
Printed card/force/payment mechanics, existing authorization, secret protection,
|
||||
no reset/deletion of existing games and deployment safeguards remain in force.
|
||||
|
||||
Use the [feedback/proof schedule](DEVELOPMENT.md#feedback-and-proof-schedule):
|
||||
exact failing case first, related tests once at frozen batch closure with one
|
||||
integration owner, full offline/integration proof and comprehensive review after
|
||||
all rules. Earlier broad checks need an observed failure or concrete integration
|
||||
risk. Do not repeat HTTP/save comparisons or seat-restoration loops for routine
|
||||
rule checkpoints. Helpers run no shared checks mid-flight.
|
||||
|
||||
The recovery/backup/seat tools below remain available for final assurance and
|
||||
authorized operations, not a checklist to repeat at every feature. Final
|
||||
recovery, privacy, custody, complete administration and deployed/release
|
||||
acceptance are deferred, not deleted. Historical sample counts retain their
|
||||
dated/source-bound scope and are not fresh evidence for a later revision.
|
||||
Existing mandatory CI, prototype-entry and deployment safeguards are unchanged.
|
||||
|
||||
## Verify the deployed application
|
||||
|
||||
@@ -29,16 +40,17 @@ occurred, what revision actually ran, the routes/actions exercised, results and
|
||||
remaining limitations. If the deployed revision is older, label the results for
|
||||
that older revision; do not claim that new source passed deployed acceptance.
|
||||
If access or deployment is unavailable, report the gap and keep acceptance open.
|
||||
Each pushed application checkpoint also needs a separate live deployment; a
|
||||
successful GitHub container publication alone is not a deployment. Follow
|
||||
[the manual TrueNAS update](TRUENAS.md#applying-an-update) only after the image
|
||||
passes CI, the persistent volume is backed up and play reaches a safe point.
|
||||
A pushed image is not a deployment. Do not make a separate live rollout a
|
||||
per-prototype gate; deployed acceptance remains required after all rules and for
|
||||
actual deployments. Follow [the manual TrueNAS update](TRUENAS.md#applying-an-update)
|
||||
only after the image passes CI, the persistent volume is backed up, human play
|
||||
reaches a safe point and required interactive approval is obtained.
|
||||
|
||||
For subsequent checkpoints, delegate the NAS Apps update and live verification
|
||||
to a dedicated deployment agent while the integration owner continues other
|
||||
work. Supply the exact successful immutable image tag; the agent changes only
|
||||
the `dune` app in Apps, retains its `/data` volume, and reports the displayed
|
||||
revision and saved-room continuity before the checkpoint is called deployed.
|
||||
For an authorized deployment, use a dedicated deployment agent if useful while
|
||||
the integration owner continues other work. Supply the exact successful immutable
|
||||
image tag; the agent changes only the `dune` app in Apps, retains its `/data`
|
||||
volume, and reports the displayed revision and deployment-required continuity
|
||||
before the checkpoint is called deployed.
|
||||
|
||||
If access, the backup or a safe point is missing, report the push as **not
|
||||
deployed** and keep its production verification open rather than claiming the
|
||||
@@ -60,10 +72,11 @@ checks restricted to designated test records and appropriate recovery snapshots.
|
||||
Do not reset production storage, interrupt live human play, weaken permissions
|
||||
or restart the server merely to run a routine smoke test.
|
||||
|
||||
When a deployment or necessary restart occurs, verify saved-game and seat
|
||||
continuity afterward, distinguishing legitimate gameplay changes from data loss.
|
||||
Use the existing hosting/deployment procedure and additive migrations; testing
|
||||
requirements do not authorize bypassing completion or publication gates.
|
||||
Actual production deployments retain their existing continuity safeguards.
|
||||
A routine local content checkpoint or dev-server reload is not a mandate to
|
||||
reaudit every saved seat. Comprehensive save/recovery/privacy/custody assurance
|
||||
waits until all rules. Use additive migrations and the hosting procedure;
|
||||
sequencing changes do not bypass completion, publication or provider approval.
|
||||
Documentation-only checkpoints need documentation/link review, not an unrelated
|
||||
production gameplay run. Record production evidence separately from the local
|
||||
source-bound checks below, and repair runtime-specific failures before treating
|
||||
@@ -72,14 +85,25 @@ the affected deployed feature as verified.
|
||||
## Compact checks and source evidence
|
||||
|
||||
```sh
|
||||
# Exact failing case first (file selection plus name regex).
|
||||
node --import tsx tools/verify.ts --out /tmp/dune-new-case focused --focus test-workflow --name 'each filename filter'
|
||||
# Related union at frozen batch closure; repeat --focus for another fragment.
|
||||
node --import tsx tools/verify.ts --out /tmp/dune-new-focused focused --focus guild-payment
|
||||
# Full offline proof after all rules or a justified broad integration checkpoint.
|
||||
node --import tsx tools/verify.ts --out /tmp/dune-new-check check
|
||||
# Add build for app/build/dependency changes, integration for HTTP/auth/persistence.
|
||||
# Final proof: build for app/build/dependencies, integration for HTTP/auth/persistence.
|
||||
node --import tsx tools/verify.ts --out /tmp/dune-new-release check build integration
|
||||
# Only for relevant AI/gameplay work; the existing study covers Basic base factions.
|
||||
# Final AI work, not per-rule iteration; this study covers Basic base factions.
|
||||
node --import tsx tools/verify.ts --out /tmp/dune-new-study base-games --games 20 --seed 20260913
|
||||
```
|
||||
|
||||
`focused` accepts repeated `--focus` filename fragments and optional `--name
|
||||
REGEX`, using the test runner's union/file-plus-name semantics. Use
|
||||
`npm test -- <fragment> --list` before the run to inspect file selection; it does
|
||||
not preview matching cases. Invalid selectors or a name that executes no cases
|
||||
fail instead of producing false-green proof. Console output is compact; full
|
||||
emitted command output remains in each private step log.
|
||||
|
||||
Each output must be a new directory outside the checkout, with an existing parent.
|
||||
It is created with private permissions. Full command output stays in step logs;
|
||||
`report.json` records commands, exit codes, timings, HEAD and a content fingerprint
|
||||
@@ -93,6 +117,11 @@ An interrupted or incomplete report is never evidence of success.
|
||||
|
||||
## Saved games and online backups
|
||||
|
||||
Saved-game and private-seat assurance in this section is scheduled **after all
|
||||
rules**. Do not run every sample matrix or preservation command per prototype.
|
||||
Existing genuine-game harness checks stay intact when a relevant game smoke
|
||||
uses them; their presence does not require a separate assurance campaign.
|
||||
|
||||
### Reusable base and faction sample games
|
||||
|
||||
```sh
|
||||
@@ -261,9 +290,9 @@ The source database is opened read-only. Snapshots store room versions and state
|
||||
hashes, not private game state. New rooms are allowed; every changed or missing
|
||||
original room fails comparison. Legitimate human play can change a room: investigate
|
||||
and document it, never overwrite progress to make a comparison pass. When a
|
||||
targeted storage-risk maintenance operation warrants a baseline, snapshot the
|
||||
current set rather than reusing historical room counts; routine content-only
|
||||
checkpoints do not require full-database comparisons.
|
||||
targeted authorized storage operation warrants a baseline, snapshot the current
|
||||
set rather than reusing historical room counts. Routine rule checkpoints do not
|
||||
require these comparisons; comprehensive assurance follows all rules.
|
||||
Online backup includes WAL contents and requires Node 22.16 or newer; snapshot and
|
||||
comparison retain the project's Node 22.13 minimum. Backup files contain private
|
||||
state and session records, remain outside Git, and never overwrite an earlier run.
|
||||
@@ -313,4 +342,5 @@ and time out. Checks require the expected room, seat and version, the owning sea
|
||||
private fields, and absence of selected rival private fields. No session tokens,
|
||||
response bodies or hands are printed. This is HTTP seat restoration, not recovery-key
|
||||
rotation, exact hand-content proof, a complete privacy audit or browser rendering.
|
||||
Pair it with saved-game comparison and feature-specific browser acceptance.
|
||||
During final assurance, pair it with saved-game comparison and relevant browser
|
||||
acceptance; it is not a repeated per-prototype seat audit.
|
||||
Reference in new issue
Block a user