Files
last-hearth/docs/m2-verification.md
T
2026-11-03 12:41:09 -05:00

5.8 KiB
Executable File
Raw Blame History

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, M1 evidence, architecture and launch checklist.

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.