Game guide · source of truth
Ledger

M0-12C

Unity sky controller, telegraph contrast, GM sky panel, macOS evidence

← Ledger

partialstatus · M0
8✓ 1✗tests passed / failed
6.67Mtokens · 14 min
1evidence files · 3 kB

Evidence

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

Logs and data (1)

editmode-sky-state-log.txt · 3 kB · open
ZOEN_SKY phase=dawn clock=05:00 weather=clear (auto) speed=x0 tier=High particles=0 none
ZOEN_SKY phase=night clock=01:24 weather=clear (auto) speed=x0 tier=High particles=0 none
ZOEN_SKY phase=night clock=01:24 weather=rain (forced) speed=x0 tier=High particles=500 rain
ZOEN_SKY phase=dusk clock=20:36 weather=rain (forced) speed=x0 tier=High particles=500 rain
ZOEN_SKY phase=dusk clock=20:36 weather=sandstorm (forced) speed=x0 tier=High particles=500 sheets
ZOEN_SKY phase=dusk clock=20:36 weather=rain (auto) speed=x0 tier=High particles=500 rain
ZOEN_SKY phase=dawn clock=05:36 weather=rain (auto) speed=x60 tier=High particles=500 rain
ZOEN_SKY phase=day clock=15:10 weather=rain (auto) speed=x60 tier=High particles=500 rain
ZOEN_SKY phase=dawn clock=06:12 weather=clear (auto) speed=x1 tier=High particles=0 none
ZOEN_SKY phase=day clock=13:24 weather=clear (auto) speed=x1 tier=High particles=0 none
ZOEN_SKY phase=dusk clock=20:36 weather=clear (auto) speed=x1 tier=High particles=0 none
ZOEN_SKY phase=night clock=01:24 weather=clear (auto) speed=x1 tier=High particles=0 none
ZOEN_SKY phase=day clock=13:30 weather=clear (auto) speed=x1 tier=High particles=0 none
ZOEN_SKY phase=day clock=13:30 weather=clear (auto) speed=x1 tier=High particles=0 none
ZOEN_SKY phase=day clock=13:30 weather=clear (auto) speed=x0 tier=High particles=0 none
ZOEN_SKY phase=day clock=13:30 weather=clear (auto) speed=x1 tier=High particles=0 none
ZOEN_SKY phase=day clock=13:32 weather=clear (auto) speed=x10 tier=High particles=0 none
ZOEN_SKY phase=day clock=13:44 weather=clear (auto) speed=x60 tier=High particles=0 none
ZOEN_SKY phase=day clock=13:56 weather=clear (forced) speed=x60 tier=High particles=0 none
ZOEN_SKY phase=day clock=14:08 weather=dust_haze (forced) speed=x60 tier=High particles=125 dust
ZOEN_SKY phase=day clock=14:20 weather=overcast (forced) speed=x60 tier=High particles=0 none
ZOEN_SKY phase=day clock=14:32 weather=rain (forced) speed=x60 tier=High particles=500 rain
ZOEN_SKY phase=day clock=14:44 weather=sandstorm (forced) speed=x60 tier=High particles=500 sheets
ZOEN_SKY phase=day clock=14:56 weather=clear (auto) speed=x60 tier=High particles=0 none
ZOEN_SKY phase=dawn clock=05:00 weather=rain (forced) speed=x1 tier=High particles=500 rain
ZOEN_SKY phase=dawn clock=05:00 weather=rain (forced) speed=x1 tier=Low particles=0 none
ZOEN_SKY phase=dawn clock=05:00 weather=rain (forced) speed=x1 tier=Mid particles=200 rain
ZOEN_SKY phase=dawn clock=05:00 weather=rain (forced) speed=x1 tier=High particles=500 rain
ZOEN_SKY phase=dawn clock=05:00 weather=rain (forced) speed=x1 tier=Ultra particles=800 rain
Test run completed. Exiting with code 0 (Ok). Run completed.

Tests

fail Unity EditMode: sky controller follows the model, tier particle cap, no alloc, no time scale, telegraph contrast bands · 24.9 s · raw log$ node tools/unity-run.mjs editmode
pass Unity EditMode: sky controller follows the model, tier particle cap, no alloc, no time scale, telegraph contrast bands · 17.8 s · raw log$ node tools/unity-run.mjs editmode
pass data tests · 19.5 s · raw log$ pnpm data:test
pass zoen-sim cargo tests + clippy · 4.4 s · raw log$ pnpm sim:test
pass Zoen.Core dotnet build + xunit · 15.9 s · raw log$ pnpm core:test
pass docs lint + index · 1.4 s · raw log$ pnpm docs:lint
pass wiki typecheck · 7.5 s · raw log$ pnpm --filter @zoen/wiki typecheck
pass wiki production build · 14.9 s · raw log$ pnpm wiki:build
pass wiki e2e (changed specs) · 1.1 s · raw log$ pnpm --filter @zoen/wiki exec playwright test --only-changed

Notes

2026-10-08 02:48 UTC · Split by the size rule (context meter at 152k after reading the client and core signatures). Done: apps/client-unity/Assets/Zoen/Runtime/Sky/SkyController.cs reads time and weather only through IServerClock (stand-in LocalSkyAuthority: server time = ms since start, weather seed 1, area -1, the day starts mid-day) and applies SkyLook each frame: key light rotation Euler(elevation, azimuth, 0), colour and intensity; RenderSettings flat ambient + ambientProbe (from ambient.linear); exp2 fog colour/density; camera SolidColor background; one weather ParticleSystem (world space, box spawn from look.particles.spawnBox, velocity wind x and -fall y, stretched billboards when stretch > 1, colour as _Color in a MaterialPropertyBlock, linear) at round(tier cap x weather share), its GameObject inactive at 0 so Low never has particles; ZOEN_SKY lines on phase/weather/GM revision/tier/kind change; AppendStatus for the overlay. Also SkyRulesAsset (Resources/Zoen_SkyRules, not generated yet), GroundTelegraph (three-band mesh builder, placeholder prop radii fill 1.05, edgeLight 1.3, edgeDark 1.5, ground probe ring 1.85 m) and TelegraphContrastProbe (camera.Render into a 960x540 sRGB RT, ReadPixels, median WCAG luminance of 48 samples per ring, best band vs ground >= minContrast); neither is in the scene yet. Tests: Unity EditMode 55/55 (6 new in Tests/EditMode/SkyControllerTests.cs: controller follows SkyModel+SkyLook across GM commands, particle cap per tier with none on Low, Tick allocation-free, GM commands never change Time.timeScale and no runtime/core source assigns it, the data's telegraph bands reach minContrast against any ground luminance 0-1, mesh has three bands); verify --changed all green (data 170, core xunit 96, docs lint, wiki typecheck/build). Evidence: logs/evidence/M0-12C/editmode-sky-state-log.txt. Unity wrote the core World/*.meta files (keep). Remains as M0-12D: ProjectSetup writes Zoen_SkyRules.asset from time-weather.json and the Boot scene with fog exp2 on (keeps URP fog variants), skybox null, ambient Flat, reflection intensity 0, a Sky object (SkyController wired to the Directional Light, Main Camera and a Weather ParticleSystem with a Zoen/WeatherParticle unlit alpha material reading _Color, fogged) and the GroundTelegraph at (-4.6, 0.02, -3.8) with a generated mesh asset and the Zoen/Telegraph shader (unlit, no fog, Queue Transparent+100, ZWrite Off, _Fill/_EdgeLight/_EdgeDark from look.telegraph chosen by uv.x band); GmSkyPanel under #if ZOEN_GM || UNITY_EDITOR (UI Toolkit buttons from the gm option lists, skipping HH:MM, Send -> LocalSkyAuthority.TryRequest with ZOEN_GM log lines, GmAccess with -zoen-gm off) and Build.cs extraScriptingDefines ZOEN_GM unless -zoen-release (EditMode test for both); FpsOverlay sky line via SkyController.Current.AppendStatus; a PlayMode asmdef + tests (Boot loads without errors, sky updates over frames, each GM toggle changes the state and logs, the contrast probe passes on Low in every review-matrix state, timeScale stays 1); SkyReviewRun (-zoen-sky-review <dir>: cycle off, matrix + four phases, ZOEN_SKY_REVIEW lines with the probe reading, captures, quit); macOS build + macos-smoke + review run with the contact sheet and four-phase strip in logs/evidence/M0-12D/. M0-12E: Web + Android rebuild and smokes.