test(harness): stage 6 spike, rnt.spike6 (D282) #9

Merged
whitlocktech merged 1 commits from spike/stage-6 into edge 2026-10-05 14:26:32 +00:00
Member

What

Stage 6's spike, in the test harness (tools/RunicNpcTest.cs 0.6.0, never shipped). rnt.spike6 [part,...] runs against RunicNPC API 4 on a rig:

  • use: a use ray from a player's eyes to our NPC at 1.5/2.5/3.5 m (head, chest, legs), and what OnPlayerInput's not-pressed test costs (D278)
  • bar: CuiElement.Update, the bar's JSON and its build cost, and the cost of finding the players within 100 m (D274)
  • kits: kits written into data/Kits/kits_data.json, two Kits reloads, a claim held only in Kits' memory, real players' usage (D280)
  • swap: strip, GiveKit, EquipWeapon mid-fight, timed, and once without EquipWeapon (D275)
  • adds: 4, then 10, placed on a ring around a fighting NPC (D275)
  • unkits: takes the spike kits out again

Result: 26 of 26 on each rig (Oxide and Carbon, final runs 2026-10-05). The findings, and the two questions they raise, are in docs#314 (runicnpc/PLAN.md, stage 6, "Measured").

The headline finding: RunicNPC's // Requires: Kits makes every Kits reload unload RunicNPC too, killing its NPCs. That's question 1 in docs#314.

Rigs afterwards: harness removed from both, and RunicNPC and Kits data restored from backups. Carbon needed a server restart: after a c.unload/c.load, its compiler queued Kits and RunicNPC but never loaded them.

Checklist

  • I have read CONTRIBUTING.md.
  • Developer tool only (tools/); nothing shipped changes.
  • AI tools were used. Tool(s): Claude Code (Claude Opus 5.5). The commit carries the Co-Authored-By trailer.
  • I agree that my contribution is licensed under GPL-3.0-or-later.

🤖 Generated with Claude Code

https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY

## What Stage 6's spike, in the test harness (`tools/RunicNpcTest.cs` 0.6.0, never shipped). `rnt.spike6 [part,...]` runs against RunicNPC API 4 on a rig: - `use`: a use ray from a player's eyes to our NPC at 1.5/2.5/3.5 m (head, chest, legs), and what `OnPlayerInput`'s not-pressed test costs (D278) - `bar`: `CuiElement.Update`, the bar's JSON and its build cost, and the cost of finding the players within 100 m (D274) - `kits`: kits written into `data/Kits/kits_data.json`, two Kits reloads, a claim held only in Kits' memory, real players' usage (D280) - `swap`: strip, `GiveKit`, `EquipWeapon` mid-fight, timed, and once without `EquipWeapon` (D275) - `adds`: 4, then 10, placed on a ring around a fighting NPC (D275) - `unkits`: takes the spike kits out again **Result: 26 of 26 on each rig** (Oxide and Carbon, final runs 2026-10-05). The findings, and the two questions they raise, are in docs#314 (`runicnpc/PLAN.md`, stage 6, "Measured"). The headline finding: RunicNPC's `// Requires: Kits` makes every Kits reload unload RunicNPC too, killing its NPCs. That's question 1 in docs#314. Rigs afterwards: harness removed from both, and RunicNPC and Kits data restored from backups. Carbon needed a server restart: after a `c.unload`/`c.load`, its compiler queued Kits and RunicNPC but never loaded them. ## Checklist - [x] I have read CONTRIBUTING.md. - [x] Developer tool only (tools/); nothing shipped changes. - [x] AI tools were used. Tool(s): `Claude Code (Claude Opus 5.5)`. The commit carries the `Co-Authored-By` trailer. - [x] I agree that my contribution is licensed under GPL-3.0-or-later. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
wtclaude added 1 commit 2026-10-05 11:23:58 +00:00
test(harness): stage 6 spike, rnt.spike6 (D282)
All checks were successful
PR Checks / plugin-checks (pull_request) Successful in 10s
c8db94ece4
RunicNpcTest 0.6.0 gets stage 6's spike, run on both rigs against
RunicNPC API 4: press E (a use ray from a player's eyes to our NPC,
and what OnPlayerInput's not-pressed test costs), the health bar
(CuiElement.Update, the bar's JSON and what finding its viewers
costs), Kits' data file (a kit written to it, two reloads, a claim
held only in memory, real players' usage), a kit swap mid-fight
(strip, GiveKit, EquipWeapon, timed; and without EquipWeapon), and
summoned adds (4 and 10 on a ring around a fighting NPC).

The Kits reload notes whether RunicNPC was reloaded with it and what
became of its NPCs: its "// Requires: Kits" takes it down on both
frameworks.

Results: 26 of 26 on each rig (docs/runicnpc/PLAN.md stage 6).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
whitlocktech merged commit 5274da1e69 into edge 2026-10-05 14:26:32 +00:00
whitlocktech deleted branch spike/stage-6 2026-10-05 14:26:32 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RunicGateway/runicnpc-rust#9
No description provided.