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:
co-authored by
Claude Opus 5
parent
66d1410118
commit
ef5a15ae2c
@@ -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` |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 →
|
||||
|
||||
Reference in New Issue
Block a user