The org lead put all three in 9e (2026-10-09): the default dome at 3 spheres and the
recommended PopupNotifications banner (docs, installer, egg) first, so the cutover
ships them; then the Carbon Kits reload checked on a real first boot; then the
coordinated v1.0.0 release.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
The org lead played every client-only row on both rigs on 2026-10-09 (Rust 25797215,
Oxide 2.0.7815, Carbon 2.0.262). Records the results, the decisions the session made
(D323-D325), what was asked for next (dome stack 3, the PopupNotifications banner),
the Carbon Kits-reload finding, and two walk artifacts.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
Decisions from the 9d player walk, 2026-10-09: each example profile wears its own
outfit, and the example kits' items are written at full durability read from the
item definitions. API.md's note on the example kits says both.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
- runicnpc/PLAN.md: 9b built and measured; D315 (the performance check records
today's cost, the warning says it, idle overhead is runicnpc-rust#13) and D316
(the picker keeps Rust's own; a step on a server without RunicNPC is refused
on save).
- runicnpc/INSTALL.md (new): requirements, the installer and egg, by hand
without Runic Gateway, Kits and ZoneManager reported not installed, its files,
the cost warning with stage 9's numbers, caps, and after a Rust update.
- runicnpc/COMMANDS.md (new): every /rnpc verb and console command with its
permission, options and defaults, and how to read rnpc.status.
- rust-link/INSTALL.md: RunicNPC is required; the installer refuses a bundle
without it and doctor fails. (The plan named modules/rust/OPERATING.md, which
is a verbatim uMod mirror; this is the operator guide that lists Kits.)
- rust-link/PROTOCOL.md: §19.16, every NPC placement needs RunicNPC; no message
changes shape.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
The org lead's answers of 2026-10-06: the performance bar is what stages 1
and 5 measured (D306); a separate small-map staging rig (D307) driven by a
daily Gitea CI drill, static and live (D308), with its own panel key in an
org secret (D309); no RunicNPC means every Place NPCs step is refused (D310,
ending D243's fallback); Gitea-only publishing for 1.0 (D311); one player
walk gathering every deferred in-game check (D312); one coordinated cutover
of the five Rust repos (D313); and core's phase label fixed (D314).
Stage 9 is laid out as four phases after this one: 9b hardening, 9c the
staging drill, 9d the player walk, 9e the cutover and release.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
- website/MODULE_API.md: 1.12.0, an event action's optional
progress(): its envelope, its two answer shapes, and the rule that it
answers for one reader and never fails loudly.
- website/EVENTS.md §I: a live occurrence's progress lines.
- rust-link/PROTOCOL.md §17.3: map.live's RunicNPC rows (name, key,
boss, health, add) and the world layer's boss.
- runicnpc/PLAN.md: stage 8's design renamed live -> progress, and its
"Built" section, with the branches, the tests and the walk on both
rigs in the browser and on the emulator.
Also recorded in the plan: a core finding outside this stage. The
public page never shows a live run's phase label, because phaseLabel
looks phases up by id while specs key them by key.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
The org lead's answers on 2026-10-06:
- D302: the map shows an event's NPCs (a boss's adds among them) and
every boss.
- D303: a marker says its name and event, and a boss is bigger; no
health on the map.
- D304: the event page has a line per Place NPCs step, with a boss as
its health; a boss's adds are not counted.
- D305: core may change, as long as it stays game-agnostic and the UO
integration does not break.
The design: MODULE_API 1.12.0 adds an optional `live` function to an
event action, whose answers core puts in the public run. map.live's
RunicNPC rows gain a name, the step key and boss/add flags. A boss
placed outside an event goes in the world layer.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
- runicnpc/API.md: version 6, the profile's loot block and a spawn's
loot.dropTable override.
- rust-link/PROTOCOL.md: §19.15, world.place's dropLoot.
- runicnpc/PLAN.md: stage 7's "Built" section. It covers the builds it
was tested on (Rust 25681086, Oxide 2.0.7801, Carbon 2.0.262), the
harness (s7 25/25, all 270/270, both rigs) and the walk on both rigs
through the site. It also lists what building it found: Rust's
ApplyLoot after the hook, and the inventory already emptied when the
hook runs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
The corpse is filled in OnCorpsePopulate (ApplyLoot is protected on
Oxide and public on Carbon, so no one override fits both); Rust's
crates spawn empty with their loot off; a locked crate's timer is its
starting count; a corpse's time is ResetRemovalTime.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
Loot: the corpse's start is the profile's (Rust's scientist loot, the kit,
or nothing) with its table on top; a table is always-rows plus a pool
capped at N picks; an optional crate, the locked one included, with the
profile's hack timer; anyone loots; the corpse's time is the profile's;
one table per profile, edited in the data file without a site; an
event's Place NPCs step switches table loot; one stage, spike first.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
API.md version 5: the profile's boss and use blocks, the passive role
and stand, the boss hooks and OnRunicNpcUsed, role and boss in
RunicNpc_List, RunicNpc_Despawn taking a boss's adds, the example kits
written once, and a Kits reload taking RunicNPC with it (D283).
PROTOCOL.md §19.14: npc.boss.spawned, npc.boss.phase and npc.boss.died,
their classes, and runicnpc_api 5.
PLAN.md stage 6: what was built, the builds it was tested on, the
harness and the site walk on both rigs, and what building it found.
The example kits' permission is kits.runicnpc.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
D285 an event's boss rewards stay the Rust module's existing steps;
D286 spawn and death lines to everyone, phase lines to players near
the boss; D287 adds fight on after the boss dies; D288 a passive NPC
moves as its profile says; D289 the four example profiles.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
D283: RunicNPC keeps "// Requires: Kits"; a Kits reload reloads it and
its spawned NPCs are lost, so operators are told not to reload Kits
during an event. D284: the four example kits are written only on the
first install, behind a flag, and never restored or overwritten.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
What rnt.spike6 found on the Oxide and Carbon rigs: press E has no
hook but OnPlayerInput; the bar can redraw in place with CUI's update;
a phase's kit swap keeps the target but needs EquipWeapon; adds cost
4-8 ms each in one frame; Kits' data file takes an added kit on reload
and keeps players' usage. Found on the way: RunicNPC's
"// Requires: Kits" makes every Kits reload take RunicNPC and its
NPCs down. Two questions for the org lead.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
The org lead's answers on 2026-10-05 for stage 6 (bosses, passive NPCs,
example profiles): a boss box on any profile, the bar's audience, what a
phase changes, rewards through an event only, announcements in game and
in the app (Discord through an event), press E, passive NPCs unhurt by
default, four example profiles whose kits RunicNPC writes into Kits'
data file, no greet/hurt/kill lines, one stage opening with a spike.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
- runicnpc/PLAN.md: stage 5 as built, what the build found that the spike
did not (Rust's CanSeeTarget is no line of sight for an NPC target; a
destroyed escort target compares equal to null; a rocket's line of
sight), the harness results on both rigs, and the site walk;
- runicnpc/API.md: API 4 (the faction table, escort, ally, tether, the
profile's stage 5 fields, a placement's tether, OnRunicNpcEscortEnded,
the new rows of RunicNpc_List, rnpc.faction, /rnpc follow, tether=);
- rust-link/PROTOCOL.md §19.13: the faction table on npc.profiles and
npc.profiles.set, world.place's escort, ally and tether, the three new
world.error reasons; the bridge needs RunicNPC API 4. Joins protocol 13
(D253).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
The org lead's answers to the six questions the stage 5 build raised
(2026-10-01): a Harmony patch for the safe-zone sentries under the
condition that it never reaches Rust's own scientists (D267), faction pairs
both ways and shooting back (D268), escort as an order that walks home
when the target is gone (D269), the event step's escort and ally (D270),
the PVE opt-out as two checkboxes (D271), and the tether on placements and
event steps rather than profiles (D272).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
The org lead's answers to the spike's four open questions (2026-10-01):
D263 a fight with Rust's scientists stays one-sided and our NPCs never
go hunting into monuments; D264 `turrets: always` adds Outpost's and
Bandit Camp's sentries; D265 the main weapon's ammunition is endless, as
in Rust; D266 fire burns as it does in Rust, allies included.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
What the stage 5 spike measured on both rigs, written into the stage 5
section of runicnpc/PLAN.md: why an NPC's bullets never hurt an NPC (Rust
skips the hit unless the victim's faction is Horror) and the per-shot
mark that fixes it; what our own sensing costs against stage 1's; what
Rust's turrets, its AI and TruePVE or NextGenPVE do with our NPC; and
four questions the answers leave for the org lead.
Stage 1's row on fighting NPCs is corrected: its "cover and facing states
win" was not the cause.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
The org lead's answers of 2026-09-30 for stage 5 (behaviour): one stage
walked once, opening with the D231 spike; named factions with per-profile
exceptions; players-only by default; group alert at 40 m; clan and team
allies defended; escort targets from events, the API and /rnpc follow;
turrets as for Rust's scientists; kit extras opt-in; PVE hooks allowed both
ways; a patrol returns to the point it was heading to.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
PROTOCOL.md §19.12: RunicNPC over the bridge — integrations.runicNpc, the
npc.profiles, npc.profiles.set, npc.placements and npc.placement commands and
their refusals, the npc.died, npc.health and npc.placement.changed frames,
world.place with a profile, attackerNpc and attackerProfile, the tally's
npcProfileKills, the four sidecar routes, and overlay.toml's runicnpc_api.
API.md: API 3 — RunicNpc_AddPlacement, RunicNpc_RenamePlacement,
RunicNpc_RespawnPlacement and OnRunicNpcPlacementChanged.
PLAN.md stage 4: what was built in five repositories, the walk on both rigs
row by row, what was not walked and why, and what building it found.
rust-link/INSTALL.md: RunicNPC as the bundle's third file, by hand, the egg,
doctor and uninstall.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY