Game guide · source of truth
Ledger

M0-12

Time-of-day and weather controller with GM toggles

← Ledger

partialstatus · M0
9✓ tests passed / failed
6.80Mtokens · 12 min
0evidence files

Evidence

From logs/evidence/M0-12/. Click a thumbnail for the full image.

No evidence files in logs/evidence/M0-12/.

Tests

pass core xunit: time-weather state machine and GM commands · 2.5 s · raw log$ pnpm core:test
pass data tests · 6.6 s · raw log$ pnpm data:test
pass zoen-sim cargo tests + clippy · 1.9 s · raw log$ pnpm sim:test
pass Zoen.Core dotnet build + xunit · 1.2 s · raw log$ pnpm core:test
pass docs lint + index · 0.2 s · raw log$ pnpm docs:lint
pass wiki typecheck · 2.1 s · raw log$ pnpm --filter @zoen/wiki typecheck
pass wiki production build · 7.1 s · raw log$ pnpm wiki:build
pass wiki e2e (changed specs) · 0.7 s · raw log$ pnpm --filter @zoen/wiki exec playwright test --only-changed
pass data tests after status update · 6.5 s · raw log$ pnpm data:test

Notes

2026-10-08 00:55 UTC · Split by the size rule (context meter over 150k after reading): M0-12 = engine-free sky core + data + xunit; M0-12B = Unity part. Built packages/core-cs/Zoen.Core/World: TimeWeatherRules/TimeWeatherReader (time-weather.json incl. gm option lists), SkyModel (pure, allocation-free: phase+blend, 24h clock, auto weather per minHold slot by seeded SplitMix64/FNV-1a weighted pick, 60 s blend at slot start), IServerClock + SkyState (anchor+speed, re-anchored on change, no time scale), LocalSkyAuthority (local stub of the zone server clock authority; GM commands are requests to it), GmSkyCommands (/gm time <phase|HH:MM> lands mid-phase, /gm cycle <on|off|x1|x10|x60> on resumes last speed, /gm weather <state|auto> forced at once), GmAccess (dev-only local GM flag until M6: compiled into test builds, launch option gm=off disables, release builds omit it). Proposed data in time-weather.json: clock.dawnStartsAt 05:00; weatherChange.weights clear 6/dust_haze 3/overcast 3/rain 2/sandstorm 1; weatherChange.heaviness clear<overcast<dust_haze<rain<sandstorm. Tests: core xunit 88/88 (45 new in Zoen.Core.Tests/TimeWeatherTests.cs), verify --changed all green, data tests 170/170. M0-12B holds: Unity SkyController in Boot (URP sun/moon, flat ambient + night floor, exp2 fog kept from stripping, solid sky, weather particles within budget: Low 0, share 0.1 of PERFORMANCE.md totals), look keyframes + telegraph contrast threshold as proposed data, placeholder telegraph (no-fog shader) + contrast probe, GM panel (UI Toolkit buttons + field, dev flag only), overlay phase+weather line, EditMode/PlayMode tests, Web/macOS/Android rebuild + smokes 0 errors, review-matrix contact sheet + four-phase strip in logs/evidence/M0-12B/. Unity has not imported the new core files yet (it writes their .meta files on next open).