feat: stage 9b hardening — cost warning, update surface, rnt.cost (D306, D315) #14

Merged
whitlocktech merged 2 commits from feat/stage-9 into edge 2026-10-07 02:42:38 +00:00

2 Commits

Author SHA1 Message Date
b5e7ecc4ed feat: the cost warning says what stage 9 measured (D306)
All checks were successful
PR Checks / plugin-checks (pull_request) Successful in 6s
Stage 9 measured the released NPC on both frameworks (6000 map): about 3 ms of
median frame per 100 idle while a player keeps them awake, 0.5 ms once they
sleep with nobody near, and 9 ms per 100 fighting, with each NPC reacting about
every 3 s under Rust's shared AI budget. The warning now says idle twice
(awake and asleep) and uses those figures, the worst of the two rigs rounded up.
The awake-idle overhead over the bare swap is runicnpc-rust#13.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
2026-10-06 21:33:49 -05:00
6a384d0a28 docs, test: the update surface in the README, and rnt.cost (stage 9, D306)
- README: status is stage 9; the installer and egg install it now; API 6; the
  swap reports 55/55 npc fields; COMMANDS.md and INSTALL.md are linked; a new
  "update surface" table lists every Rust type and member the swap and the
  brain depend on, where, and what catches a change (compile, the field list,
  or only a running server). The staging drill checks exactly that list.
- tools/RunicNpcTest.cs 0.7.0: rnt.cost measures 100 of RunicNPC's own NPCs
  against the same session's empty server, idle (awake) and fighting 20
  invulnerable stand-ins, with a second empty baseline at the end and the bar
  taken against the lower. `idle` skips the fight, `sentry` makes them stand
  still, `asleep` leaves out the keeper.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
2026-10-06 17:33:28 -05:00