# REBNO Domain Context

The shared language of *BN Online* (legacy game) and *ReBNO* (its rebuild). This glossary
is the source of truth for game-domain terms — what concepts ARE, and the canonical word for
each. It is NOT a spec and holds no implementation detail.

> Status: actively being refined via `/grill-with-docs`. Terms marked _(draft)_ are
> provisional pending confirmation.

## Language

### Game identity

**BN Online** (alias: **BNO**):
The legacy game — a persistent, multiplayer **social-exploration** world built in GameMaker
5.3a, skinned in the Mega Man Battle Network aesthetic. The core loop is exploration, not
combat: uncover hidden platforms/pathways/portals, beat timing-sensitive movement challenges,
and solve puzzles built from interwoven traversal mechanics. **No combat system.**
_Avoid_: "MMBN game", "battle game" (the IP is skin, not mechanics).
_Code-verified (recon 14): zero combat / HP / damage / PvP across client + server; the only
removal mechanic is the void-fall → **Digital Abyss**. A full-codebase completeness sweep (320
objects / 366 scripts / 17 rooms) found **no uncatalogued gameplay system** — coverage complete._

**ReBNO**:
The ground-up rebuild of BNO on a modern web stack. Primary goal: **full feature parity with
BNO plus QoL tweaks** afforded by web infrastructure. Not a reskin and not a new game — parity
first. New systems and an eventual IP-shed / battle system are explicitly far-future, out of
current scope.
_Avoid_: "the port" (it is a from-scratch rebuild, not a port).

**Progression** (the reward axis):
Advancement is exploration-driven and Metroidvania-shaped — rewards unlock the ability to reach
more of the world. Reward types: new **Zones**, new **Areas**, new **Message Boards**,
**Collectables**, and **Key Items**.

### ReBNO design pillars

**Input model** (ReBNO):
First-class **gamepad** support is a design driver. Legacy text commands (the backtick `` ` ``
verbs — dig, duo, join, summon, watch, add…) are being **revamped into gamepad-friendly UI**;
ReBNO chat will likely have **no commands at all** (possibly excepting whisper). **TTS** is a
planned first-class accessibility feature (also serving controller play).

**Perception gating** (ReBNO):
The unifying rule — *you perceive only what your **progression and spatial state** grant.*
**Friendship does NOT affect raw avatar or chat visibility** (markers only); an active **Duo** is
the one exception. It governs:
- **Avatar visibility** — spatial/progression only: you see a Navi only if you share their
  contiguous hidden-tile body / reachable geometry. Friendship does **not** reveal a hidden
  avatar. **Exception: active Duo partners always see each other — including on hidden tiles
  either is standing on.**
- **Chat** — inherits avatar visibility (can't see the avatar → can't see their chat).
- **Map markers** — *may* be relationship-granted (metadata, not in-world sight): a friend's
  marker shows only when their avatar is visible to you, **except Duo partners**, whose markers
  are visible worldwide.
- **Friend location text** — gated by *your* Link Data: a friend's Zone name shows only if you
  hold that Zone's Link Data, their Area name only if you hold that Area's Link Data, else `???`.

### World structure

**Zone**:
A top-level region. In legacy BNO each Zone is exactly **one GameMaker room** (~11 total:
BNCentral, Bahoo, Noiya, Floes of Ghennam, Emptiness' Hull, Deserted Lobby, Prairie Flats,
Database, Traverse Core, Schweisstar, and the Digital Abyss / Abyssal Ruin). All inter-zone
travel is teleport-gated, but a zone can be reached on foot (or via a found **Warp**) before you
hold its Link Data — you simply cannot fast-travel to it yet.
_ReBNO note:_ ReBNO replaces legacy's one-room-per-zone with a single **chunked overworld** — a
zone transition loads much like loading the next chunk of your current zone. Consequence:
cross-zone hexporters are trivial (no special-casing) and therefore in-scope, not a new system.

**Area** (alias: **Subregion**):
A named sub-region *within* a Zone's single room (not a separate room), delimited by invisible
**area-name marker** objects (legacy `ac_*` change-area labels; ~120 across the world).

**Central Portal**:
The one portal in each Zone that is the **source of that zone's Zone Link Data**. You must
physically reach it before that zone joins your fast-travel network — until then you can only
travel there on foot, and the Summon/Join system refuses to teleport you there. (Legacy object
`hometele`: interacting grants the Zone Link and **revives the zone's dead Area-link points**;
standing on it also lets you teleport without an expansion.)

### Key Items & Collectables

**Key Item**:
A progression-gating reward. Primarily **Navi Expansions**. Metroidvania lock-and-key: a key
item unlocks an ability/feature that opens previously-unreachable progression.

**Navi Expansion** (the `*Plugn` family):
A class of Key Item that unlocks a Navi ability/feature — the primary Metroidvania keys. Legacy
`global.keydata` keyids 1–6, of which **five are functional Plugns**:
- **HxpPlugn** (1) — enables **Hexport** travel.
- **RmtPlugn** (2) — enables free fast-travel (teleport from anywhere, not only while standing
  on a portal; exact limits TBD).
- **MskPlugn** (3) — enables applying **Spectrum Data** (via **Spectral Gate** tiles).
- **DuoPlugn** (5) — enables forming a **Duo**.
- **WrpPlugn** (6) — enables **Warp** tiles.

**TakABrak** (keyid 4):
An **easter-egg** key item ("Take-A-Break.exe"), not an ability-gating expansion. Gates nothing.
**Likely NOT ported** to ReBNO.

**Mod Item** (Key-category IDs 900–909):
A **mixed** admin item set — NOT uniformly RCE (classified from handler code):
- **RCE — anti-port (Hard Rule 3):** 900 `Exc` (clipboard exec), 901 `Qury` (local eval), 902
  `NetExc` (server exec), 903 `NetQury` (server eval), 904 `NetTarg` + 905 `NetCon` (run code on
  another player's client).
- **Fenced features — candidate ReBNO admin surface:** 906 **Location** (coord bookmark), 908
  **NetPop** (online-roster query), 909 **Joker Shell** (90-step invulnerable ghost-walk +
  teleport-to-ghost; drop its `"UNLIM"` clipboard backdoor).
- **Unclear:** 907 `MasMod` (registered but inert — no consumer in either tree).

The legacy **server operator console** is a *separate* admin surface (server-app Ctrl-key
handlers, per `legacy/.../,ServerCommands.txt`): Ctrl+E/Q + Ctrl+O = exec (RCE, anti-port);
Ctrl+M/S/U = board-view / spectate / un-spectate (fenced).

**Collectable**:
A gatherable reward, surfaced in-universe as **Data** drops. Known taxonomy:
- **Zone Link Data** (alias: Zone Data) — unlocks fast-travel to a Zone; sourced from that
  zone's **Central Portal**.
- **Area Link Data** (alias: Area Data) — unlocks fast-travel to an Area; usable only if you
  also hold the parent Zone's Zone Link Data. Dispensed by **linkpoint** objects, which stay
  inert (`LinkPointInDead`) until you hold the parent Zone Link.
- **Spectrum Data** — unlocks an avatar cosmetic option (requires `MskPlugn` to apply).
- **Friend Data** — an in-universe friends-list entry (inventory category 2; acquired by a
  mutual social add, NOT found as a drop — see **Friend Data** under Social).

**Link Data**:
The teleport-enabling subclass of **Data** — the keys to the fast-travel network. Stored as one
inventory category; **Zone Link vs Area Link is a flag**, not two systems. An Area Link is inert
("dies") if you do not hold its parent Zone Link.

**Data**:
The in-universe noun for collectable drops (link/spectrum/friend data). The avatar, NPC, and
"data"-drop sprites are the only non-original art (MMBN-derived); the rest of BNO's art is
original.

### State sharing & visibility

**Deterministic-Synced state** _(ReBNO intent — legacy did NOT sync these)_:
World state ReBNO will drive by shared server time so every client renders it identically: moving
**Platform** positions, animation loops, **Flicker** cycles, **Glow** activation. Legacy ran
platforms as **pure local sim** (±3 px/step, `random(60)` end-pause); **Flicker** tiles *do*
exist (object `magictile` — 35 instances in Emptiness' Hull) — but **neither is synced** in legacy
(`magictile` uses client-side `random()`). So ReBNO must *add* the determinism (seed the RNG / drive by server time). _ReBNO QoL:
moving platforms blink a departure tell (~5 blinks) before moving — needs a new per-platform
animation._ Not per-player. (Movers and slippery ice have no unique state — just a looping
animation.)

**Per-Player state**:
Anything tied to a player's unlocks, abilities, or inventory: **Hexbridge** activation,
**Hidden** tile reveals, and all **Key Item** / **Collectable**-gated access (warp/zone/area/
spectrum). Two players in the same room can stand on different walkable surfaces.

**Visibility rule** _(ReBNO design intention — NEW, not legacy)_:
A Navi standing on **Hidden** tiles is invisible to any Navi that does not share the same
**contiguous hidden-tile body**. A Navi on otherwise-unavailable geometry (e.g. an unactivated
hexbridge) is seen "floating" by others — seeing them means you *could potentially* reach that
geometry, not that it is unlocked for you.
_Confirmed a **ReBNO addition**, not legacy: `client-5-8` has no contiguous-body cull (hidden
tiles are cloaked floor + self-reveal only). Legacy's client-relay couldn't enforce per-player
peer-visibility; ReBNO's authoritative server can (interest management). A blessed new system._

**Contiguous hidden-tile body**:
A connected group of Hidden floor tiles forming one visibility group. Navis on the same body
can see each other; outsiders cannot see them.

### Cooperative play

**Duo** (via the **DuoPlugn** Navi Expansion; the **Duo System**):
A **mutual, consented** pairing of two Navis (gated by `DuoPlugn`), modelled on Mega Man Legends'
digger+spotter. Roles: **Digger** (explores) + **Spotter** (rides a *pannable* duo-camera).
Benefits: **partners always see each other — including on hidden tiles either is standing on**
(the one relationship that overrides the spatial visibility rule; their chat follows too, since
chat inherits avatar visibility), plus the Spotter's pannable duo-camera and a worldwide duo
marker; auto-accepted Summon/Join between them; a **teleport tether** (link-data teleport is
blocked while in a duo; the digger auto-rejoins the spotter on transit); and the **Duo Net**.

**Spotter / Digger**:
The two Duo roles — **Spotter** (pannable observation camera + assist) and **Digger** (the Navi
physically exploring). (Legacy bug, do-not-port: the offer-sender is always forced to Spotter
regardless of intent.)

**Duo Net**:
A Duo safety mechanic: when the Digger takes a fatal fall, instead of both being dumped to the
**Digital Abyss** the fall is caught and the **Spotter is teleported to the rescue** (legacy
msgid 23). _ReBNO: Spotter + Digger **share one combined Fall Safety Buffer** (~10 vs ~5 solo);
once depleted, a fatal fall is only ~5% per fall (vs ~10% solo)._

**Duo Beacon** _(ReBNO post-port concept — far future)_:
A carriable consumable/findable world item a player can **set down as a non-sentient target for
a "partial" Duo** — soloing some Duo benefits without a second live player. It **breaks on a fatal
fall** (which sends the player to their Home Portal) — hence consumable.

**Watch** (the **Watcher** system):
A **one-way follow-camera** on another Navi — ungated (no expansion). A camera eases toward the
target; if the target drifts past ~320×240 it "escapes from view" and watch ends. Grants **zero
extra visibility** (only room-scoped position broadcasts), **freezes your own avatar** while
active, and the watched party can't tell who's watching (the blunt `` `shake eyes `` command
evicts all spectators). A strictly lighter cousin of **Duo**.
_ReBNO: being **watchable** becomes a **persistent opt-in setting** (status icon in the game
menu); Watch UX moves off text commands to gamepad UI._

**Request system**:
The unified legacy mechanism (`rq_*`) behind player-to-player interactions — **Join**, **Summon**,
friend **Add**, and Duo **Spot** / **Dig**. Consent model: there is **no explicit "accept"
packet** — you accept by issuing the *complementary* action, which the system pairs with the
pending request; **Ignore is local-only**; **Duo partners auto-accept** each other's Summon/Join.
(**Watch** is adjacent but unilateral — not a consented request.) Legacy server is a pure relay
with no consent/state tracking — **ReBNO must implement this state machine server-side.**

### Avatar

**Navi**:
The player-controlled avatar. **Essentially one shared silhouette** for every player (base
`NaviStandD` family — 8 directions × Stand/Run frames), moving at speed tiers walk / fast /
(admin-only joker). Per-player variation is recoloring (see **Spectrum Data**) — with one
exception: the **"Phoenix" spectrum suite** (`P` / `PH`) is a genuine **shape variant**, not a
recolor (still close enough to coexist with the palette sets). The **nameplate**
(plain text above the Navi — aqua for self, white for peers) is **not** customizable: no titles,
badges, or rank adornments.

**Spectrum Data** (customization):
A cosmetic **palette unlock** — a `(region, color)` pairing. Five recolorable regions
(body/helmet, gloves/boots, trim, stripes, core-circle) across ~32 color options → ~9,800
combos, **all on the same silhouette** (no shape/part/model variation). Implemented as pre-baked
overlay sprites stacked on the base (not a runtime shader). Collected as `d_spectrum` pickups
(inventory category 5, stored `set|color`), then equipped at a **Spectral Gate** (`swaptile`)
terminal — gated by `MskPlugn` — whose carousel offers only colors you own. _Legacy broadcasts
appearance **unvalidated** (client-authoritative); ReBNO should validate owned colors
server-side (see Mandated divergences)._
_ReBNO additions: a creation-time pick from a **limited Spectrum pool** (the chosen data's
in-world pickup is then swapped to its default equivalent, so it can't be double-claimed);
post-port — a **Face** spectrum line, and letting one or two spectrums tint the **teleport
animation** / **hexport disk** color._

### Portals & travel

**Portal**:
An in-world teleport node. To fast-travel, a Navi stands on a portal and selects acquired
**Link Data** from a menu (legacy flow; ReBNO targets a heavily improved UX for this).

**Home Portal**:
A player-chosen portal (any cleared zone/area portal) that is their login spawn and the only
destination fast-travelable from *anywhere*. Falling during exploration also returns the Navi
here — with a slim chance of landing in the **Digital Abyss** instead. _ReBNO change: you may
only **set** your Home Portal while standing at a Zone or Area portal (legacy allowed changing it
from anywhere)._

**Digital Abyss** (legacy room: **Abyssal Ruin**, zone 4):
A fall-failure destination, and itself a **no-teleport zone** (you climb out on foot). Exact
legacy rule: each fall rolls ~10% (`random(99)`, abyss if `≤9`) **but only once `dafalls > 5`**
(`dafalls` is a client/session counter; your first 5 falls are immune). On Abyss entry the
server sets a **persisted, sticky `dabypass` flag** — you then **respawn in the Abyss on every
login until you physically walk out** (it blocks the Home Portal spawn). `dabypass` is a
"trapped" flag, NOT an exemption. _In-Abyss rules: players **see each other but with no
nametags**, and **chat is disabled** — the chat input line permanently reads `VOID`._

**Fall Safety Buffer** (existing legacy mechanic; ReBNO adds the visual + new rules):
The **existing** legacy fall-immunity counter (`dafalls`, ≤5 safe) — **not new**. ReBNO adds a
**visible, depleting GUI bar** plus new rules. Solo: ~5 safe falls, then each fatal fall is a
chance (~10%). In a **Duo**, Spotter + Digger **share one combined buffer** (~10), after which the
chance drops to ~5% (see **Duo Net**). _(The shared pool, refill model, and Quick-Portal
interaction below are the new parts; the underlying immunity counter is parity.)_
_Refill model (ReBNO): the buffer refills by **teleporting through an inter-zone portal** or by
**escaping the Digital Abyss** (post-port: possible recharge stations). See **Quick Portal**,
which consumes and locks the buffer while active._

**Fatal fall**:
Terminology: a fall that hits the ~10% abyss roll (once the **Fall Safety Buffer** is spent) and
would teleport the Navi to the **Digital Abyss**. "Fatal" is by convention only — there is **no
death or HP**; some features (e.g. the **Duo Net**) intercept it and cancel the Abyss teleport.

**Online Command Screen**:
A hub/menu screen used as the default spawn when a player has set no Home Portal.

**Hexport** (requires **HxpPlugn**):
The signature in-zone traversal mechanic. A **Hexporter** floor terminal splits the Navi into
six light orbs that re-form into a flat hexagon of light, travelling in a straight line across
empty space and *under* the floor tiles. **Hexsling** tiles redirect a hexporting Navi: in the
5-8 build, **exactly 1** enabled exit auto-picks that direction (fixed priority up>down>left>
right); **2+** exits halt the orb and wait for an arrow-key choice. **ReBNO ports this 5-8
behavior as-is** (the `LEGACY_FEATURE_REFERENCE.md`
"prefer-the-direction-you-weren't-travelling" wording is dropped — that reversal is only the
hexbridge zero-arrow bounce). **Hexbridge**
tiles bounce it back after spawning a floor tile recorded **permanently per-account** (bridge id
= `x + room + y`), synced to the server and replayed at every login — cleared hexbridges persist
forever, per player.

**Warp** (requires **WrpPlugn**):
Intra-zone teleportation via Warp tiles. Inert without the expansion.

**Gateway**:
The **formal name** (a rename of an existing legacy feature — NOT new) for an **inter-zone portal
with NO associated Link Data**. You **stand on it and press the action button** to teleport to an
adjacent zone — it is **not** a walk-through path and does **not** fire on collision alone. Lets
you reach a zone before (or without) holding its Zone Link (legacy `teleparent` / `to<Zone>`).
Distinct from a **Central Portal** (which *grants* Link Data) and from Link-Data fast-travel.
(ReBNO *may* additionally introduce special cross-zone hexport Gateways — that part is TBD.)

**Summon / Join**:
A player-to-player teleport system. It refuses to teleport a user into a Zone where that user
holds no **Zone Link Data** — only a **Duo** can bridge that gap (the gate literally checks
`target == your duo partner`; duo partners also auto-accept requests). Zone magic numbers carve
out exceptions: **Emptiness' Hull (zone 3) is free-teleport**; the **Digital Abyss (zone 4) is
no-teleport**. Separately, a Navi currently in a Duo cannot freely fast-travel (tethered to the
partner).

**Quick Portal** _(ReBNO QoL key item — new)_:
A player-created **2-way gate between their current spot and their Home Portal**, for bookmarking
progress across logout without breaking the Metroidvania. Rules: (1) creatable only in a Zone you
hold the **Zone Link** for (it manifests *from* that link); (2) it **empties your Fall Safety
Buffer** while manifested — you need ≥1 safe fall to open it; (3) passing through puts you in a
**limbo** state (no warp/teleport away from your home zone); (4) if you fall, it vanishes, limbo
ends, buffer restored minus one tick; (5) returning through it once vanishes it, ends limbo, and
**fully restores the buffer**; (6) buffer otherwise refills via inter-zone teleport (blocked in
limbo) or escaping the Abyss; (7) in a **Duo** it applies to both partners uniformly (both warp
to the creator's Home Portal, both enter limbo).

### Social

**Message Board**:
A **global shared wall** — one per Zone (~24, each a `mbparent` with a static `mbid`). Topics +
replies live server-side (`mb_topic[]` / `mb_reply[]`, packed `Author[Title]Body`) and persist
to a single flat file **`MB_Log.bnb`**. The only per-user state is an unread flag, persisted as
`News_<uid>.bnu` (the `unews_*` scripts). Legacy edit path has **no authorship check** (a removed
guard — a bug to fix in ReBNO). New boards unlock as a progression reward.

**Chat**:
Public chat is **proximity-scoped**, not room- or server-wide: a public line reaches only
same-room Navis within **480×360 px** of the speaker. **Whispers** are point-to-point and
cross-room (`name~message`). The command prefix is the **backtick `` ` ``** (`` `join ``,
`` `summon ``, `` `add ``, `` `accept ``, `` `watch ``, …), not slash. Legacy has **no rate
limiting and no profanity filter** (only a bypassable client-side length cap) — both are ReBNO
additions.
_ReBNO: proximity chat **stays**; **chat inherits avatar visibility** (can't see the avatar →
can't see their chat, same as the hidden-platform rule — see **Perception gating**). Likely no
chat commands (maybe whisper). **TTS** planned first-class._

**Friend Data** (inventory category 2):
A convenience social link, **NOT a found collectable** — there is no `d_friend` drop. Added by a
**mutual `` `add `` trade** (request type 5, a client-to-client relay; legacy keeps no server
friend graph). Holding it only adds shortcut actions (Whisper / Join / Summon) and filters that
friend's connect/disconnect notices client-side — it is **not a hard gate**. _ReBNO: modernize
in place — move the friend graph + presence server-side._

**Message Data** (inventory category 4) _(legacy ~25% built; ReBNO intends to fully realize)_:
A player-authored note — like a Minecraft book. Full intended feature: write a message, then
either **drop it in the world** (anywhere) or **send it to a friend** via Friend Data (an in-game
email). Planned options: a **stranger lock** (only players who hold your Friend Data can open it)
and a **lifetime** (it returns to the author, or disappears, if not picked up within N days).
Distinct from **Message Board** (global per-zone walls).
_Legacy state: only the storage format (`Title#…#Body`, 5 fields) + a read-only **View** path
exist; **Edit/Delete are inert stubs**; create UI, world-drop entity, send-to-friend, stranger-
lock and expiry were **never coded**. ReBNO = mostly net-new build; the 5-field format must gain
recipient / lock / expiry fields._

**Presence**:
Legacy presence is **ephemeral and global** — a live `p_online[pid]` socket array broadcast to
everyone on login/logout. No persistent presence, no friends-online roster, no "last seen," no
way to locate a friend's room/coords. _ReBNO modernizes this server-side._

### Actors, economy & onboarding

**NPC**:
Non-player characters are **functional hint-givers**, not pure flavor. Some give dialogue hints
about nearby hidden paths/platforms/puzzles; this dialogue lives in each NPC's **instance
creation code** (`rooms/*/instances.json[].creationCode` — `name`, `say`/`sayings`, `saytype`),
**confirmed fully preserved by extraction** (64/66 instances populated; no data loss). Named
hint-givers: **Pallikos** (run-hint), **B.U. Gaito / Nelelle / Coptre** (directional hints naming
adjacent/hidden zones); **REAPROG** is a "spooky" Abyss wanderer that **guides the player out if
they choose to follow**. Some NPCs stand **on hidden tiles or in obscure spots** — a deliberate
*visual hint* that those places are reachable. They give no items, and there is no quest system.
(~14 "**Mr. Prog**" talkers populate BNCentral.) _Importer: parse `creationCode`; object
Create-event text is only the fallback. Full dialogue extracted to the localization kit:
`docs/localization/legacy-npc-dialogue.md` (+ `legacy-npc-strings.csv`)._

**Collectable economy**:
There is **no currency** — progression is purely keyed unlocks (no economy in the port; possibly
post-port). World pickups (`d_key` → Navi Expansions, `d_spectrum` → Spectrum Data, `linkpoint`
→ Area Link Data, `hometele` → Zone Link Data) are **permanent, per-account, server-side** and
**do not respawn** (a claimed `d_spectrum` greys out; others vanish) — **full pickup parity** in
ReBNO. The core Plugns cluster in **Emptiness' Hull**; ReBNO may **re-tune acquisition order**
(e.g. `DuoPlugn` early to ease movement challenges; `HxpPlugn` behind a tough challenge).

**Passkey**:
A secret code/sequence gating some pickups (e.g. optional on `d_spectrum`, and the moderator
tools in **Traverse Core**) — the only hidden progression layer beyond connectivity.

**Onboarding**:
A new account starts **empty** (no expansions, no links, `homedata = -1`) and spawns at the
**Online Command Screen**. The only ungated destination is **BNCentral** (the hub); every other
zone needs its Zone Link. The **Deserted Lobby** is *not* a tutorial — it's gated zone 0 like any
other. Accounts are created out-of-band; legacy has **no in-game registration** (a ReBNO add).
_ReBNO: the **OCS is not ported** (not engaging or controller-friendly — maybe a post-port nod);
new Navis spawn **directly into BNCentral** with a true onboarding that lets them pick from a
**limited Spectrum pool** at creation. Starting loadout stays **strictly empty** (earning the
first Plugn is the first beat)._

**Progression model**:
No quest system — advancement is an **emergent "Metroidvania of connectivity"**: reach a Zone's
**Central Portal** → claim its Zone Link → its **Area Links** light up → collect **Key Items**
(Expansions) → those unlock reaching the next Zone's portal. The inventory *is* the progress
state.

## Scope principle (parity vs new system)

The dividing test for "what's making it into ReBNO" (confirmed):

> A change is in-scope **QoL** if it preserves the legacy mechanic's *inputs, gating, and
> outcomes* and only improves presentation, ergonomics, feedback, or accessibility. It is an
> out-of-scope **new system** if it adds a player capability, changes progression gating, or
> changes what is collectable/unlockable.

Worked adjudications: portal/Link-Data fast-travel UX overhaul = **QoL, in**; controller-first +
multiplatform delivery (desktop/Android/iOS/handheld/Discord Activity/VR overlay) = **QoL, in**;
cross-zone hexporters = **in** (trivial under ReBNO's chunked overworld); server-authoritative
rules/inventory = **in** (security-mandated divergence); IP-shed + battle system = **far-future,
out**. The hidden-tile contiguous-body **Visibility rule** is a deliberately **blessed new
system** (an explicit exception to the principle).

## Mandated divergences (faithful-port is rejected on purpose)

- **Server authority** — legacy is fully client-authoritative (the Master only relays;
  `server_receive.gml` stores `p_*` + rebroadcasts). ReBNO is **server-authoritative** across all
  rules + inventory (CLAUDE.md Hard Rule 1). _Confirmed in-scope now._
- **Plaintext passwords** → argon2id (Hard Rule 2). **RCE admin** (`<M:Exc>` mod items) → vetted
  admin surface (Hard Rule 3). Note: not *all* Mod Items are RCE — see **Mod Item**.

## Flagged ambiguities

- ✅ **Friend Data** — RESOLVED: **modernize in place.** Keep Friend Data as the system; present
  it more simply/usably. No separate parallel account-level friends list.
- ✅ **Hidden-tile contiguous-body visibility** — RESOLVED: a **ReBNO design intention (new)**,
  not legacy. See **Visibility rule**.
- ✅ **Hexsling direction rule** — RESOLVED: **port the 5-8 behavior as-is** (≤1-exit auto-pick /
  >1-exit wait-for-input). The pre-5-8 "prefer-not-travelling" rule is dropped, not chased.
- 📋 **`LEGACY_FEATURE_REFERENCE.md` is dual-purpose** — it mixes *faithful legacy log* AND
  *ReBNO-intended behavior*. A reconcile pass vs 5-8 code must **classify** each mismatch
  (legacy-drift vs ReBNO-intent) rather than auto-correct to legacy; ReBNO-intent entries are
  preserved. _(In progress — recon classifying.)_
- ✅ **`dabypass`** — RESOLVED: a persisted **"trapped in Abyss" sticky flag** (respawn in the
  Abyss each login until you walk out), not an exemption.

## Example dialogue

_(to be written once core terms are confirmed)_
