docs(runicnpc): stage 7 spike, measured on both rigs; D300–D301 #319

Merged
whitlocktech merged 3 commits from docs/runicnpc-stage7-spike into main 2026-10-06 07:17:04 +00:00
Member

What

Stage 7's spike (D299), in runicnpc/PLAN.md stage 7, "Measured", and your two build answers (D300, D301). The harness is runicnpc-rust#11. 13 of 14 checks passed on each rig. Builds: Rust 2634.289.1 (buildid 25681086), Oxide 2.0.7801 and Carbon 2.0.262, all checked as the latest first.

Found
Corpse today Rust's scientist loot plus the kit's clothing, never its belt and main items. Removed after 600 s.
The hook OnCorpsePopulate fires once for our NPC on both frameworks.
A framework difference ApplyLoot is protected on Oxide and public on Carbon, which publicises Rust's assembly. An override can't change access, so one file can't override it on both. The build fills the corpse in OnCorpsePopulate.
Crates Rust's wooden box, military crate, elite crate and locked crate all spawn empty with their loot switched off, take ours, never refill, and go when emptied. Slots: 6, 6, 12, 24.
Locked crate timer Rust's is one server-wide 900 s. Starting each crate's count where the profile's time remains gives a per-crate timer: 10 s → 11.5–12.1 s, 20 s → 21.1–22.4 s.
Corpse removal ResetRemovalTime(5) → gone in about 5 s; a corpse killed at once is gone.

Your answers (2026-10-05):

# Decision
D300 A corpse that starts with "nothing" is truly empty, the clothes it wore included.
D301 A dropped crate stays until it is emptied, as Rust's own crates do. The locked crate keeps Rust's own 2-hour removal when unhacked.

Open for the walk: a locked crate set longer than 15 minutes starts its count below zero. It unlocks on time, but what a player's screen shows is unknown without a client.

main is merged in, so the diff is this stage's alone.

Checklist

  • I have read CONTRIBUTING.md.
  • Docs only.
  • AI tools were used. Tool(s): Claude Code (Claude Opus 5.5). The commits carry 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 7's spike (D299), in `runicnpc/PLAN.md` stage 7, "Measured", and your two build answers (D300, D301). The harness is runicnpc-rust#11. 13 of 14 checks passed on each rig. Builds: Rust 2634.289.1 (buildid 25681086), Oxide 2.0.7801 and Carbon 2.0.262, all checked as the latest first. | | Found | |---|---| | Corpse today | Rust's scientist loot plus the kit's clothing, never its belt and main items. Removed after 600 s. | | The hook | `OnCorpsePopulate` fires once for our NPC on both frameworks. | | **A framework difference** | `ApplyLoot` is `protected` on Oxide and `public` on Carbon, which publicises Rust's assembly. An override can't change access, so one file can't override it on both. **The build fills the corpse in `OnCorpsePopulate`.** | | Crates | Rust's wooden box, military crate, elite crate and locked crate all spawn empty with their loot switched off, take ours, never refill, and go when emptied. Slots: 6, 6, 12, 24. | | Locked crate timer | Rust's is one server-wide 900 s. Starting each crate's count where the profile's time remains gives a per-crate timer: 10 s → 11.5–12.1 s, 20 s → 21.1–22.4 s. | | Corpse removal | `ResetRemovalTime(5)` → gone in about 5 s; a corpse killed at once is gone. | **Your answers (2026-10-05):** | # | Decision | |---|---| | D300 | A corpse that starts with "nothing" is truly empty, the clothes it wore included. | | D301 | A dropped crate stays until it is emptied, as Rust's own crates do. The locked crate keeps Rust's own 2-hour removal when unhacked. | **Open for the walk:** a locked crate set longer than 15 minutes starts its count below zero. It unlocks on time, but what a player's screen shows is unknown without a client. `main` is merged in, so the diff is this stage's alone. ## Checklist - [x] I have read CONTRIBUTING.md. - [x] Docs only. - [x] AI tools were used. Tool(s): `Claude Code (Claude Opus 5.5)`. The commits carry 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-06 00:51:55 +00:00
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
wtclaude added 1 commit 2026-10-06 02:55:26 +00:00
D300 a "nothing" corpse is truly empty, clothes too; D301 a dropped crate
stays until emptied, the locked crate keeping Rust's own decay.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
wtclaude added 1 commit 2026-10-06 02:55:53 +00:00
wtclaude changed title from docs(runicnpc): stage 7 spike, measured on both rigs to docs(runicnpc): stage 7 spike, measured on both rigs; D300–D301 2026-10-06 02:56:03 +00:00
whitlocktech merged commit 1f455c3ddc into main 2026-10-06 07:17:04 +00:00
whitlocktech deleted branch docs/runicnpc-stage7-spike 2026-10-06 07:17:06 +00:00
Sign in to join this conversation.
No description provided.