aboutsummaryrefslogtreecommitdiff
path: root/FIXES.md
diff options
context:
space:
mode:
Diffstat (limited to 'FIXES.md')
-rw-r--r--FIXES.md20
1 files changed, 14 insertions, 6 deletions
diff --git a/FIXES.md b/FIXES.md
index d40ed3d..169793c 100644
--- a/FIXES.md
+++ b/FIXES.md
@@ -79,17 +79,25 @@ Nothing was staged or committed. The audit artifacts (`AUDIT.md`, `reports/`) ar
- **Net**: the shutdown flush gives each session a bounded slice instead of letting the first stalled writer starve the rest; the telnet echo CRLF refreshes its write deadline so it is not dropped on an idle connection.
- **Casino**: video-poker cabinet IDs are claimed in the addressable namespace, so an ID colliding with a machine variant/game name is rejected instead of producing an unreachable cabinet. Test: `TestVideoPokerCabinetIDCollisionIsRejected`.
+## Tranche 4 (this pass)
+
+- **Production**: the multi-recipe bug is fixed. Availability scanned every recipe but execution used `Craft[0]`, so 5 of 6 `arrow_shaft` recipes were unreachable (start-then-abort). A `CraftIndex` is now carried through `ProductionData`/`CombineData`/`FletchData`; `usableCraftIndex` selects the recipe the player satisfies; `collectByproducts`/`canContinueProduction` use the selected recipe; the production menu displays the usable recipe; and `findFletchItems` scans every recipe. Test: `TestUsableCraftIndexSelectsSatisfiedRecipe`.
+- **Validation**: mob loot and steal drops with `weight <= 0` are now warned about (gather already was).
+- **Persistence**: journals now carry a schema `version`; `Recover` refuses a version it does not understand instead of misreading a newer journal. Test: `TestRecoverRefusesUnknownJournalVersion`.
+- **Casino**: the plinko rules text now states the measured per-risk returns rather than only the target RTP.
+- **Refactor**: the duplicated `countExtraInbound` (game + admin, byte-for-byte) is now one `world.CountExtraInbound`, so the two room-removal paths cannot drift.
+
## Still open
- **Explicit undo snapshot-existence flag** (the current fix safely refuses an intentionally empty before-image).
-- **Production `FirstCraft()` vs multi-recipe availability** (5 of 6 `arrow_shaft` recipes unreachable); **"how many" batches vs units**.
-- **Craft `type`/`subtype` validator rule**; **safespot validation** (needs the size vocabulary moved to a shared package); **drop weight in mob loot/steal readers**.
-- **Persistence** `Recover` mid-game misuse; journal versioning.
-- **Casino**: craps Fire/ATS settlement deferral; plinko RTP wording.
+- **Production "how many" batches vs units**.
+- **Craft `type`/`subtype` validator rule** and **safespot validation** (both need their vocabularies moved to a shared package so `validate` can see them without importing `game`).
+- **Persistence** `Recover` mid-game misuse.
+- **Casino**: craps Fire/ATS settlement deferral.
- **Admin**: symlink handling in the raw file API.
-- **Structural refactors** from `AUDIT.md` §3–4.
+- **Structural refactors** remaining from `AUDIT.md` §3–4 (ui.Table shrink consolidation, self-signed cert, YAML encoders, `tableCore` for pai gow, typed `GridConflict.Kind`, `refs` struct in validate).
- **Test infrastructure**: `make test-race`/CI, harness owner-goroutine leak, master-tick harness option, and coverage for steal/gather/burn/talk and the WebSocket transport.
## Suggested next step
-Tranche 4: the production multi-recipe fix, the remaining validation gaps, the persistence hardening, and then the structural refactors. Keep `make lint`, `go test ./...`, and `go test -race` green.
+Tranche 5: the remaining structural refactors (ui.Table, cert, YAML encoders, `tableCore` for pai gow, typed `GridConflict.Kind`), the shared vocabularies for craft/safespot validation, and the test-infrastructure work. Keep `make lint`, `go test ./...`, and `go test -race` green.