Lots of content
This commit is contained in:
Executable
+67
@@ -0,0 +1,67 @@
|
||||
# M2 implementation and verification — The Last Hearth
|
||||
|
||||
Updated: 2026-11-02. Scope: first-night gameplay implementation and technical
|
||||
verification. This document does **not** claim unfamiliar-player acceptance, M1
|
||||
human acceptance, community-location approval or production readiness. See the
|
||||
[roadmap](roadmap.md), [M1 evidence](m1-verification.md), [architecture](architecture.md)
|
||||
and [launch checklist](launch-features.md).
|
||||
|
||||
## M2 implementation present
|
||||
|
||||
| Area | Implemented behavior | Boundary |
|
||||
| --- | --- | --- |
|
||||
| Safe arrival and home | Bounded emergence and safe-surface checks reject unloaded/liquid/hazard/occupied/claimed/recently lethal locations. `/sethome` requires a safe point in the owner's claim. `/home` revalidates the saved point before trying a safe world spawn or a 64-node bounded rescan. | No automatic geolocation. The old persistent play world is not used by tests. |
|
||||
| Death | Inventory, food, water and wetness persist; respawn recovers at a verified safe point with only stamina and warmth limited. | No item-recovery corpse or final player-approved death policy. |
|
||||
| Fire and light | Cold fuel needs a reusable firestarter; fuel is not self-igniting. Craftable torch supports nighttime activity. | No uncontrolled fire spread, lamps or light-quality playtest. |
|
||||
| Cooking and water | Six-second cooking and four-second boiling reserve their fuel charge at queue time. Absolute deadlines continue during server absence, fuel can expire, and completed output remains until safe collection. | Offline player needs remain paused. No crops, spoilage or generalized offline simulation. |
|
||||
| Rest | A placed bedroll inside a claim requires five still seconds under sheltered, ventilated cover. Movement, damage, unsafe cover or permission changes interrupt; completion adds modest warmth and has a 30-second cooldown. | Does not advance or pause the shared world clock; environmental shelter remains M1's four-ray approximation until M3. |
|
||||
| Discovery | `/recipes`, the recipe-index button and guide page provide paginated plain-text search across recipes/ingredients plus process durations and sources. | Existing recipes and the progression ceiling remain intentionally small; tester-led balance is still required. |
|
||||
| Persistence | Save schema 1 now validates the `homes` world-storage map; hearth job metadata is validated/reconciled on timer/load and output completion is idempotent. | Engine node metadata is not an envelope-schema transaction or crash-durable database. |
|
||||
| Map starts | `test:seeds` creates fresh real-engine worlds for eight fixed map seeds and checks required resources plus a dry, supported safe-arrival surface in the same bounds as fallback spawn. | This is deterministic fixture coverage, not exhaustive world-generation proof or human assessment of start quality. |
|
||||
|
||||
## Automated verification on the current Windows host
|
||||
|
||||
- **M2 historical contract:** Node.js 24.22.0; stock Luanti 5.18.0; game 0.3.0-m2; save schema 1. M3 release supersedes it.
|
||||
- **Engine integration:** `scripts/run.mjs test` passed. The pinned real engine compiled
|
||||
39 Lua files, ran 16 isolated suites totaling **254 checks**, and passed registry,
|
||||
recipes, terrain/resources/enclosure, and native gravity/collision/animation smoke.
|
||||
The native smoke explicitly does not prove rendered animation, audible playback,
|
||||
movement feel or a client playtest.
|
||||
- **Node tooling/assets:** 30 named tests passed across `tests/tooling.test.mjs` and
|
||||
`tests/assets.test.mjs`. Optional full codec decode/regeneration was not run;
|
||||
Ogg framing/CRC/hash checks did run. Windows did not grant file-symlink privilege;
|
||||
directory-junction protection was exercised.
|
||||
- **Multi-seed:** `scripts/run.mjs test:seeds` passed on eight fresh worlds for seeds
|
||||
731104, 19027, 2026, 987654321, 271828, 314159, 42 and 8675309. Every world had
|
||||
all required starting-resource types and a dry, supported safe-arrival surface;
|
||||
the smallest checked fallback area had 229 such surfaces (seed 42). The aggregate
|
||||
`LAST_HEARTH_SEED_TEST_PASS` marker was emitted. Seed 42 initially exposed that the
|
||||
±32-node fallback bound had no dry arrival; arrival/emergence checks and the fixture
|
||||
were aligned and widened to ±64, after which all seeds passed.
|
||||
- No separate Lua interpreter, clean-machine run, Linux/macOS native run or test of
|
||||
the persistent play world is claimed. The exact M1 human gate remains open.
|
||||
|
||||
## Manual M2 acceptance still required
|
||||
|
||||
1. Use a disposable local `HEARTH_HOME`; never use a fixture in the preserved play
|
||||
world. Test both first-night summer and winter fixtures, without revealing recipe
|
||||
answers to the tester.
|
||||
2. Ask five unfamiliar testers to attempt 30–60 minutes without coaching. Observe
|
||||
whether each can identify local resources, craft a useful tool, ignite a hearth,
|
||||
produce food and clean water, make a usable shelter/bedroll, and recover from an
|
||||
unsafe spawn or death.
|
||||
3. Record time-to-goal, failed/dead-end recipes, fuel/output loss, nighttime visibility,
|
||||
recovery fairness and actionable feedback. Do not collect location/account data.
|
||||
4. Capture exact game/engine/fixture, seed, host/device, controls and reproducible
|
||||
defects. Do not present synthetic 45°N/0°E fixture runs as community-location
|
||||
approval or climate balance.
|
||||
5. The user/operator must explicitly choose and configure community coordinates
|
||||
before shared climate staging. M1 voluntary repeat-play and real-client
|
||||
performance/network evaluation also remain outstanding.
|
||||
|
||||
## Disposition
|
||||
|
||||
M2 gameplay implementation is in place and the available automated integration and
|
||||
Node test gates passed at its release. M3 has since been implemented; M2 is still
|
||||
**not human-accepted** until the unfamiliar-tester and operator gates above are evidenced.
|
||||
No claim is made that M2 completes the launch checklist or authorizes production.
|
||||
Reference in New Issue
Block a user