KB: late-join make-sync gap + revolving-door plan digest (multiplayer, open-questions)

The 1995 engine tolerates late HOST attach but never finished late ENTITY
sync (NotifyOfReplacementEntityCreation = Fail stub, makes broadcast-once).
Routes to docs/REVOLVING_DOOR_PLAN.md.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0166KTsC7ADm7VXEi1HF1jNg
This commit is contained in:
arcattack
2026-07-24 16:13:29 -05:00
co-authored by Claude Opus 5
parent 66d1410118
commit ef5a15ae2c
3 changed files with 31 additions and 1 deletions
+1 -1
View File
@@ -83,7 +83,7 @@ precise than anything you can infer.
| Term / acronym definitions | `reference/glossary.yaml` |
| The ORIGINAL 1995 player manual (controls, per-mech stats, coolant loops) | `reference/manual/Tesla40_BT_manual.pdf` (+ alignment audit in `context/pod-hardware.md` §Manual) |
| The complete verbatim detail (fallback) | `docs/PROGRESS_LOG.md` (the old 2236-line CLAUDE.md) |
| Detailed running ledgers | `docs/RECONCILE.md`, `docs/GAUGE_COMPOSITE.md`, `docs/HARD_PROBLEMS.md`, `docs/SUBSYS_PLAN.md`, `docs/P3_LOCOMOTION.md`, `docs/RESOURCE_AUDIT.md`, `docs/VEHICLE_SUBSYSTEMS.md`, `docs/BGF_FORMAT.md`, `docs/ASSET_PIPELINE.md`, `docs/BT_SOURCE_STATUS.md`, `docs/WAVE_PLAN.md`, `docs/GLASS_COCKPIT.md` |
| Detailed running ledgers | `docs/RECONCILE.md`, `docs/GAUGE_COMPOSITE.md`, `docs/HARD_PROBLEMS.md`, `docs/SUBSYS_PLAN.md`, `docs/P3_LOCOMOTION.md`, `docs/RESOURCE_AUDIT.md`, `docs/VEHICLE_SUBSYSTEMS.md`, `docs/BGF_FORMAT.md`, `docs/ASSET_PIPELINE.md`, `docs/BT_SOURCE_STATUS.md`, `docs/WAVE_PLAN.md`, `docs/GLASS_COCKPIT.md`, `docs/REVOLVING_DOOR_PLAN.md` |
---
+22
View File
@@ -680,6 +680,28 @@ join/teardown/respawn windows leave the vehicle briefly NULL. Both sites now nu
(burning semantics preserved). ALSO: live proof that interest teardown of entities RUNS in
MP — the #38 paint-loss mechanism's first half is confirmed fact.
## Late-join / revolving-door feasibility (2026-07-24, read-only study) [T1 code-read]
Full plan + anchors: `docs/REVOLVING_DOOR_PLAN.md` (two phases; Phase 1 = console-only round
carousel, Phase 2 = true drop-in). The durable engine facts found:
- **Late HOST attach is designed-in**: `HostConnectedMessageHandler` (L4NET.CPP:1551+) flips an
existing ROSTER host to OnLine whenever it connects — arrival order/timing is free (this is
how slow loaders already work), and the relay's PEER_UP exchange is bidirectional for
newcomers (btconsole.py:1202-1209).
- **Late ENTITY sync was never finished in 1995**: entity MakeMessages are broadcast ONCE at
creation and never retained. `InterestManager::NotifyOfEntityCreation` (INTEREST.cpp:694-763
→ DynamicEntityCreation :839+) sends immediately; the interest-zone bookkeeping is
`#if 0 "HACK - Partial implementation"`; and `HostManager::NotifyOfReplacementEntityCreation`
(HOSTMGR.cpp) is literally `Fail("under construction")`. So a mid-mission joiner sees an
empty world — while the world sees the JOINER fine (its makes broadcast after it connects).
- **The engine launch gate stalls on absent roster seats** (every pod waits on every roster
host — the stall the relay warns about); the relay's launch-time roster TRIM is what makes
partial-attendance launches work today.
- The relay's back-to-back machinery (`_check_launch_gate` btconsole.py:780-813) already
auto re-arms after a round in auto mode — a round carousel is ~3 changes away (door gate,
round-end roster reset, round-length knob). Phase 2 = re-send locally-owned masters' makes
on a mid-mission PEER_UP + a duplicate-make guard + a relaxed launch gate; it lives in the
same interest-teardown neighborhood as the crash above, so churn-soak is mandatory.
## Remaining (P6 phase 4 / Phase 7)
Pod-LAN config: **real-IP path VALIDATED (2026-07-15)** — an egg with the machine's real LAN IP in
`[pilots]` (not `127.0.0.1`) connected + replicated + moved end-to-end (`Connected to
+8
View File
@@ -139,6 +139,14 @@ register. ⚠ The audit also flags the damage-economy item as SELF-CONTRADICTOR
(task #8 "landed" vs the kShotDamage=12 bring-up residue) — audit before reworking.
## Deferred subsystems / feeds (authentic path scoped, marked in code)
- **Revolving-door Phase 2 (true mid-mission drop-in) — PLANNED, gated on a spike**
(`docs/REVOLVING_DOOR_PLAN.md`, 2026-07-24). Open questions before any engine work:
(a) can an `Entity::MakeMessage` be REGENERATED post-birth (serializing current state), or
does the make path assume creation-time state? (b) what does the replicant-creation path do
with an already-known entity ID (idempotent, or double-create — needs a guard)? (c) where
exactly is the all-roster-hosts-connected launch wait, and can absent seats stay `Opening`
without stalling? Go/no-go = the 2-node late-attach spike in the plan doc. Phase 1 (round
carousel) is console-only and has no engine unknowns. [[multiplayer]]
- **Glass panel dead-button backlog (input-coverage audit 2026-07-20) [T1 census].** 8 of the 72
panel buttons dispatch a streamed message with NO reconstructed handler (silently ignored):
0x13 → Mech `DuckRequest` @0049fa00 (CROUCH — `duckState` attr + SQUAT clips exist!), 0x28 →