Run 48 deleted Kits' file for a fresh start, and the harness's
rnhrevolver kit, added after boot with `oxide.reload Kits` through the
panel's command endpoint, never reached Kits: no reload or compile job
followed, and every test profile was refused for want of the kit.
The drill now replaces kits_data.json with one holding only that kit.
Kits reads it at boot; RunicNPC's first load adds its example kits
beside it (it skips kits already there) and settles its own Kits
reload (D329). The add-after-boot stays as a fallback, now through the
console's websocket, and is a finding when Kits does not load again.
Refs #20, #22
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
The staging drill's run 47 failed on Rust staging 26341433:
- Rust added BasePlayer.timeSinceAiming, BaseEntity.ServerPreProcessed and
BaseNetworkable.ignoreNetworkLod to the swap's field list (D232): 55 -> 58.
On edge now; main at the forced wipe of 2026-11-05.
- Harness 0.7.4: place.set.each was refused and the refusal was thrown
away; place.spawned failed; reading each[0] of an empty list then killed
the coroutine, so the drill waited 45 minutes for a run that had stopped
after 10. Place puts its spots on the navmesh, the set checks carry the
refusal, a failed place.spawned ends the group, and any group that throws
is a <group>.exception FAIL line and the run goes on.
- drill.js: rust-staging boots from empty Kits and RunicNPC data, so the
write-once example kits match this Rust (s6.examples.fullCondition); the
wait ends after 5 minutes without a new harness line; latest.log's tail
goes into the issue when the harness did not finish. drill.test.js
covers the stall logic.
Refs #20, #21
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY