# FLEET VERIFICATION PLAYBOOK — trust files, not changelogs

Run this after any multi-agent edit session or deploy. The Codex records what agents
*say* they did; this verifies what the machine is *actually doing*. (First run:
2026-07-09, v9.10.199 — found 2 real defects the Codex didn't know about.)

## T1 — Boot smoke (the fleet itself is the test)
A running fleet proves every `.mjs` parsed. Check the fresh boot block in
`tools/oracle-discord/logs/ecosystem.log`:
- every bot prints `[<Bot>/Ready] FLEET_BUILD=v<expected>`
- `### NEURAL CORE ONLINE` with a new PID
- `[KAI/Warmup] Index rebuild complete`
PASS = all present, no error lines in the boot block.

## T2 — Runtime error sweep
Grep the whole ecosystem.log for:
`ReferenceError|is not defined|Cannot read|SyntaxError|UnhandledPromise|FATAL|ENOENT`
Investigate every hit — note whether it's pre- or post-restart. (Found live:
null tool-args crash in native-tools.mjs, fixed 2026-07-09.)

## T3 — Browser-side undefined references (kaiverse.js / kaiverse-graphics.js / oracle.html)
The fleet boot does NOT test browser JS. Sweep every `ns*()` call against
definitions in all three files (js `function`/`const`/`window.` forms).
Discard GLSL-in-shader-string names (nsFbm, nsVN, nsHash33, nsRidged, nsTerrainH)
and `_`-prefixed internals. (Found live: nsMakeCloudTexture + two undeclared
texture caches, fixed 2026-07-08. Known guarded gap: `nsColorOf` is undefined but
typeof-guarded at kaiverse.js ~2444 — silent no-op tint, not a crash.)

## T4 — Config truth
`.env` flags vs what the code defaults assume. Especially:
- `LEO_PACED_PRODUCER=1` (pacer v2 live)
- `LEO_NEURAL_VAD` (0/absent = LEGACY RMS gate is the ACTIVE mic path — any fix
  made only to the Silero branch is INERT; this bit us on 2026-07-09)
- `KAI_CODER_HANDS` absent/0 = Kai Coder writes stay locked (intended default)

## T5 — Error-state files
`logs/restart-errors.log` + `state/last_restart_error.json` — absent/empty = no
failed respawns.

## T6 — Voice session (owner-in-the-loop)
Talk to Leo: long hesitant sentence → ONE transcript entry + ONE reply; a codex
question → no stutter; "what planet are you on?" → Terra Familiar (embodiment).
Then read the newest `logs/leo-voice-debug-*.log`: speedups=0, stalls small,
backlogMax < ~500ms.

## Rules
- Backup (`cp x x.bak-<tag>-<date>`) before every fix, even one-liners.
- The Linux mount serves STALE copies of recently-edited files — verify all
  findings against the real Windows file (Read/Grep tools) before believing them.
- One Codex entry per fix batch, version bumped, Cargo synced.
