What works

55 of 294 checks in 65 tracked features are proven. Client build 25810808. Updated . Each check is a thing that must work as on retail; it is proven only when it was seen to work with the real client or with bots. No percent: a share of retail cannot be measured.

Live
Seen working with the real game client.
Bots
Seen working with test bots.
Tests
Automated tests pass.
Code
Code exists, not yet proven.
None
Not done yet.

Foundation

16 of 58

Project setup and checks (M0)

1/1 Live
  • Live

    Build, lint, tests, licence policy, Docker infrastructure.

Game data pipeline (M1, M1b)

0/2 Tests
  • Tests

    All datasheets, text and 41 world files from your own install.

  • Tests

    The committed player attack table is the one of the paks again (it lacked the fields added since: aim, dodge cancel and block windows, root motion; refreshed 2026-11-01).

Collision, roads, water

2/9 Live
  • Live

    Tutorial and open world collision files.

  • Live

    Bodies stand on decks, stairs, roofs.

  • Tests

    Since 2026-11-10 (tests only) also the trees and stones of each region's distribution file (2,728,908 rows) and the engine's static colliders: 730,257 more bodies in the open world (2,146,861 now), 882 more in the tutorial.

  • Tests

    Closed meshes count as solid for mobs.

  • Tests

    Since 2026-11-10 (tests only) the collision tool also reads each region's slice data file (region.slicedata): the meshes and the collision flag of each slice and variant that the region's trees, stones and plants place.

  • Tests

    361,192 rows whose variant no variation table holds now stand with their own mesh (303,313 of them have no collision, such as bushes); 284 rows keep an unknown variant.

  • None

    Temple door wall opens by a quest trigger: not done. Retail player feet on our ground at La Roussette: 83 % of samples.

  • None

    Mobs sunk in the ground or stuck in walls (Janszoon, the cave) need a live check.

  • None

    284 tree and stone rows name a variant that no variation table holds: they stand as their plain slice (the region's slice data file is not read yet).

Capture decoders

0/2 Tests
  • Tests

    99.993% of 25.3 million bundles read.

  • None

    Raid group data, a few classes.

Client patch

1/1 Live
  • Live

    Cert bypass, Steam offline login.

Login server and launcher (M2)

3/8 Live
  • Live

    Saved servers in the launcher (2026-11-04; seen on Linux in both themes): a list of servers, each with its own name and login, and a click connects.

  • Live

    Password or Discord login (live on Linux: Discord login with the server check and allow list, a linked password account; saves the Discord username and email), Linux Proton start, two worlds.

  • Live

    Windows: a second player logged in and played from Windows on the game server (2026-11-09) with the Windows launcher and the patch script of the Windows test package of 2026-11-08 and its how-to.

  • Tests

    Site news in the launcher (tests only): the 5 newest posts of the site's launcher feed beside Play, with pictures and a cache. It asks once at each start, when it first connects; no timer.

  • None

    The newer launcher (saved servers, site news) is not tested on Windows; the Windows player used the package of 2026-11-08.

  • None

    News hosts rerouted (live on Linux); region ping rerouted (live on Linux); shop services rerouted (live on Linux); privacy settings service answered as retail (tests only).

  • None

    Windows not live-checked.

  • Code

    Other server ports (public_https_port, public_ping_port) built, tests only.

Gateway and registration (M3)

1/1 Live
  • Live

    DTLS and registration with the real client.

Many sims and handoff (M5)

3/7 Bots
  • Bots

    1,000 bots cross cell borders.

  • Bots

    With 1,100 bots on 4 sims (2026-11-01), the busiest sim (about 365 players, 5,500 to 6,800 awake mobs) went from about 33 to 36 ms a tick (the limit is 33) to 20.5 to 23 ms, with 8 tick threads (LIVE_STACK_TICK_THREADS=8; the default is 4), a kept mob reach answer and a fast hash for the mob store.

  • Bots

    The metric sim_tick_part_seconds{part} times each part of a tick.

  • None

    Real clients crossing cell borders: Unknown.

  • None

    In the last run 9.6 % of the busiest sim's ticks were still over 33 ms (1 late tick in 120 s).

  • None

    The mob card part runs on one thread (about 6 ms at 6,000 awake mobs).

  • None

    A build or a screen recorder on the same PC slows the sims.

Database saves

0/10 Tests
  • Tests

    Accounts, characters, items, progression, quests, notifications, recipe cooldowns, faction.

  • Tests

    Food and potion buffs stay over a log out and a sim border (migration 0026; on retail a food buff still had 303.5 s left after a login). Their timer pauses while the player is away unless the data says it keeps running (Inferred), and their heals go on.

  • Tests

    Added 2026-11-01: a placed camp's rotation and blueprint (0027), the mount summon cooldown (0028), potion and food cooldowns (0029, Inferred: no retail login shows one), and a trading post, trade or shop job now saves its players right away instead of in the next 10 s save. Each save is round-trip tested on a real database; no real client has logged out and back in to check them.

  • Tests

    Added 2026-11-04: the servers stop cleanly on SIGTERM (before, a restart skipped the last save round), a resumed player keeps its achievements, and the new sim of a handoff saves the items and quests it took over.

  • Tests

    Added 2026-11-10 (world migration 0034): health, mana and stamina at the save, so a player comes back as hurt as it left and a player saved dead comes back dead and respawns (retail: a recorded run that ended at health 0 started its next part at health 0 and respawned 32 s later); running ability cooldowns; the PvP flag wish (on, or on its way on: it comes back as on its way on); puzzle-stone turns; the bait on the fishing pole; and the depleted gather nodes of each level (world state: a sim restart no longer grows every node back early).

  • Tests

    All are saved with the progression in one transaction, and the nodes in their own table.

  • None

    Not seen with a real client yet: log out hurt, log back in, and check health, cooldowns and nodes.

  • None

    Not saved, with the reason: loot bags (world objects that live at most 5 minutes; whether retail keeps them over a restart is Unknown), short effects from hits and abilities (their source is gone after a log out; retail rule Unknown), war sign-ups (no war is scheduled, so none is ever kept).

  • None

    Mana and stamina are kept as health is (Inferred: the same vitals state).

  • Tests

    The world clock is saved (world migration 0035): day and night go on over a restart, and all sims share it.

Admin tools

0/8 Tests
  • Tests

    Live panel, studio, GM commands, drop simulator, script editor; a new look (2026-11-04, local only).

  • Tests

    GM chat commands in the game (!help).

  • Tests

    nw-testclient chat says a GM line and checks the answer.

  • Tests

    The site can run behind a relay on another machine (tests only).

  • None

    Pages for systems that are not done.

  • Code

    Relay: public, Discord login works live; live page stream not checked.

  • None

    GM chat commands: not checked live.

  • None

    In the 2026-10-30 camp test the client sent no chat line at all (cause: likely the chat probation flag, sent since c3c84794).

Server status page

5/9 Bots
  • Bots

    New status-reporter (config/status-reporter.toml, 2026-11-08): one per world, on the game machine.

  • Bots

    Every 15 s it reads the metrics pages of login, gateway, director, sims and social and sends the world status (parts up or down, players online, the slowest gateway worker's p99 round trip) to the website; every 5 minutes it sends the 422 boards of the game data with their top 100 rows (values from the global database, character and company names from the world database). Each report is signed (HMAC-SHA256 of the time and the body, with the world's secret).

  • Bots

    Data only goes out: the website never reads a database or a metrics page.

  • Bots

    content-tool leaderboards writes the board table (English names and groups).

  • Bots

    Seen with a local copy of the website and the live servers: Online, then Players online 3 with 3 test bots.

  • Tests

    Since 2026-11-09 (tests only): each board also has its sub-group, value kind, order, reset time and what it ranks; ranks are shared like in the game; group rows name their members; edge-http pulls the message of the day from the site and names the launcher's news feed (docs/website-integration.md).

  • None

    Not on the game VM or the public website yet.

  • None

    Not seen with the real game client: the p99 round trip stayed 0 ms with the test bots, which send no ping echo.

  • None

    No board had values yet, so no leaderboard row was seen on the website.

Player in the world

6 of 13

Create, select, enter world

1/3 Live
  • Live

    New character goes in game.

  • Tests

    The select screen shows the saved level (not live-checked).

  • None

    Small login burst gaps.

Own movement

2/4 Live
  • Live

    No more rubber banding (6d508fc).

  • Live

    Every movement packet and note reviewed (findings/2026-11-01-movement-review.md); the replay guard passes (retail run: body 0.32 m median, 0.25 m open world; 0 pulls of the patched client).

  • Code

    Attack windows: 1.27 m median after 1 s (attack root motion is built but not wired: it made the camera follow worse).

  • None

    Ship fights 0.94 m (to-do t1).

See other players

1/2 Live
  • Live

    Look, gear, health, facing, attacks.

  • None

    Full live test with many players: not done.

Swim, water, falls

1/2 Live
  • Live

    Swim strokes, water hold, fall damage.

  • None

    Some swim states not checked.

Ship deck

1/2 Live
  • Live

    Bodies stay on the deck, also in fights.

  • None

    Fight camera does not fit the model.

Combat

4 of 44

Melee hits

1/3 Live
  • Live

    Homing, lag help, retail damage messages.

  • None

    Boar hits miss sometimes (not seen in the 3 live logs of 2026-10-30: every swing with a mob within 2 m hit). Cause: Unknown.

  • Tests

    A melee hit from behind a mob is a crit (retail: 510 of 560 such hits), unless its row says NoBackstab.

Target lock

1/2 Live
  • Live

    Lock, release and wheel cycling work live (110ccc0).

  • None

    Retail check of the nearest-in-circle pick; lock after a reconnect.

Dodge and stamina

0/4 Tests
  • Tests

    Match retail (review 2026-10-01).

  • Tests

    A dodge in an attack waits for its CanDodgeCancel window while the key is held (all 9 retail dodges fit).

  • None

    Live check.

  • None

    The buffer rule (key still held at the window) is Inferred.

Block

0/8 Tests
  • Tests

    Guard break, no regen while held, 2218 only in the tutorial, cross-sim hits.

  • Tests

    The block stays down in an attack's BlockDisabled window (data).

  • Tests

    From the data (2026-11-01): the 150 unblockable attacks (Unblockable, CanBeBlocked: boss wipes, howls, spells) pass a block and take no stamina; mob empower buffs raise what a block takes (StaminaDamageModifier); a stun keeps the block down and the dodge back, a root only the dodge.

  • None

    Live check.

  • None

    The rest of the retail 1 s rise delay, facing arc.

  • None

    Ranged block from the data only.

  • None

    Perk triggers on a block (OnBlockedHitTaken, OnBlockBreak) run since 2026-11-09 (tests only).

  • None

    Mobs do not block: the wire form of a hit a mob blocks and the mob stamina rule are Unknown.

Ranged and magic

0/8 Tests
  • Tests

    Staffs, gauntlets, bows, muskets cast along the aim.

  • Tests

    Weapon abilities (keys 1 to 3) run the game's ability lists: cooldowns as retail, mana spend and regen, flying spells, lasting areas, second spells, upgrades (unit tests and one test on the real table).

  • None

    No live check of abilities yet.

  • Code

    Every weapon ability a key starts, but 6, starts in a test on the real lists (all 15 weapons); fixed: a sim crash with two-list weapons, the tag-in-slot and client-setting tests, the mana compare, the transition clips, and (2026-11-04) each key press test's own BackTicks and the real start and end of tag activities (Shooter's Stance and Stopping Power start now).

  • None

    Open: the bow's Penetrating, Poison and Rain of Arrows shots, Meteor Shower and Ice Storm (their shot actions are reached by no parsed fragment transition; fragment options by tag: Unknown) and the Ice Pylon (needs its placed pylon).

  • None

    Part of the retail cooldown cut: Unknown.

  • Tests

    A shot that meets the top of a body is a head shot: crit damage and the Headshot flag, never Crit (retail: 346 head shots).

  • None

    Where the head starts on each creature is Inferred (the top 15 % of its body).

Status effects

0/7 Tests
  • Tests

    Effects from game data.

  • Tests

    Checked against retail: the out-of-combat regen ends at full health, food heals 3 times as much while it runs, no heal number (4298) for the player's own heals.

  • Tests

    From the data (2026-11-01): weakness by damage type, stamina regen rate, food attributes (Constitution raises the max health), crit mods, heal mods (disease lowers heals, potions too), armor rend by damage category (and true damage takes no armor), health regen rate and no regen, stun, root and silence, the effects that end at death's door, effects added at death, first stacks.

  • Code

    Mob effects now go to the client in the mob's remote map (tests only; the full map, not retail's deltas).

  • None

    Live check of most effects.

  • None

    Not read: movement speed, tradeskill XP and luck columns.

  • None

    Passive ability triggers apply and remove effects since 2026-11-09 (tests only).

Death, respawn, revive

2/7 Live
  • Live

    Death screen, 38 respawn points, revive at 1 health.

  • Live

    A drunk potion sends no heal number (retail).

  • Tests

    Death's door from the data (120 s, 1 s delay, off in the PvP modes and to a killer 10 levels above), retail vitals blocks (tests only).

  • Tests

    The incapacitated state (670) is on at death's door and off at its end, as retail (2026-11-05, tests only).

  • None

    Live check of death's door.

  • None

    Status effects that skip it.

  • None

    Some respawn points.

PvP

0/5 Tests
  • Tests

    PvP hits roll like retail.

  • Tests

    Faction join and change (3161), saved, sent as retail; quests check RequiredFaction.

  • Tests

    Since 2026-11-05 the PvP flag waits while you are in a settlement, then counts down 30 s, as on retail.

  • None

    Flag rules, PvP zones, rewards: not checked.

  • None

    Faction boards, forts.

Mobs

3 of 32

Spawns and health

0/7 Tests
  • Tests

    99.3% of creature records explained.

  • Tests

    The open map leaves out the invasion and breach encounter spawns (no encounter runner there); each kept spawn keeps its own AI profile and patrol path (fixed 2026-10-31: they had shifted to other spawns).

  • Code

    Since 2026-11-05 the mob copies keep every retail state of the captures (align to terrain on 782 creatures, status effects on 755, boss phase, timelines) and the sim reads all of them (it dropped 258 before).

  • Code

    Respawn is now the retail 62 s (the data's 360 s rule is Unknown).

  • None

    A mob left alone plays its spawn again when a player comes back (radius = our wake radius; retail radius Unknown).

  • None

    Breaches and invasions need an encounter runner.

  • None

    A few odd records.

Mob AI

3/18 Live
  • Live

    1,075 behavior trees from Server.pak.

  • Live

    Thorpe fight fixed.

  • Live

    Mob paths stop at walls and climb at most 0.6 m a step.

  • Tests

    New 2026-11-10 (tests only): a mob moves and turns in its attack by the attack's Homing clips (radius, angle, turn rate, move to distance and time), so it strikes from near the player and not from 3 to 4.5 m; a mob blocked by solids searches a way over the floors and walks it (also around two walls that no single turn passes); it does not walk into solids, deep water or a level designer's no-floor mark (each town gate has one); on its way home with no way found it walks its trail back; a world event comes back after its spawner's respawn time from the data (for example 300 s, 600 s, 1 to 3 hours).

  • Tests

    Since 2026-11-10 (tests only): world events start and track players by the encounter's own detection volume (box, sphere, cylinder or capsule; 559 encounters have one), a stage that waits for a start object spawns it and ends when a player gathers it (44 start object slices from retail captures), and players near an event get its root entity with the event's status and each stage's status history, as retail sends them (240 of the 329 open world encounters; the other 89 slices are in no retail capture).

  • Code

    Janszoon tree is built from held trees; he attacks, throws his anchor at 6 to 10 m (Inferred; the anchor is now a real projectile), his charge follows the slope and he leashes home (live check needed).

  • None

    He also slams his anchor up close (a second retail fight, 2026-11-02), and a mob's weighted attack pick is drawn again after each attack, as the client does, so his heavy attacks come back (before: one light swing for minutes).

  • None

    His spin (Attack_Mid_2H_Axe_02) is only in the hard attack tree; with it he got stuck in a walk-home loop in one test, so it is not on yet.

  • Code

    Terrain cookies now in our ground; mobs walk around rocks and crates.

  • Code

    Boss summons (ExecuteSpawn) built: 10 of 46 summon slices have a retail card (the others cannot show).

  • None

    Not run: beams, boss-to-helper triggers, orders, tree projectiles (no capture).

  • None

    Not seen in the game yet: the homing in attacks, the way search, the town gate marks, the event respawn times (2026-11-10).

  • None

    Not seen in the game yet: event states, start objects and detection volumes.

  • None

    89 encounter slices have no root (no retail capture shows them) and 8 start object slices are in no capture, so their events cannot go past that stage.

  • Tests

    Mobs cast their spells (CAGE-CastSpell, 744 of 765 spell names have a row): ground areas hit the players in them by the mob's damage row, and self heals and buffs hold on the mob.

  • Tests

    A hit plays the reaction of its side: front, back, left or right (retail: 160 captures).

  • Tests

    A knockback perk pushes the mob back; a wall on the way stops it.

  • None

    Not seen with a real client: mob spells, side reactions, knockback.

Mob animations

0/2 Tests
  • Tests

    736 of 747 creature assets.

  • None

    11 assets.

Patrols and waypoints

0/2 Tests
  • Tests

    12,858 spawns get waypoint paths.

  • None

    Live check.

Corpses

0/3 Tests
  • Tests

    Retail times per creature.

  • Tests

    Skinned corpses go after 5.5 s.

  • None

    Boar times vary in retail.

New player: tutorial and starting beach

4 of 8

Tutorial flow (ftue_v2 level)

1/2 Live
  • Live

    Ship, quick time event, sailors, legionnaires, corruption, Thorpe, journal.

  • None

    Temple door and growth explode (level not yet checked).

Starting beach (open world)

2/3 Live
  • Live

    Beach quests 12-1 to 12-9 played live up to the Demon Storm turn-in; lock, skinning, crafting, crates, cutscenes, journal auto pin.

  • Live

    Play test 2 (2026-10-29) reached Janszoon.

  • None

    Play test 2 fixes need a live check; hits from behind; the terrain cookie fix at La Roussette and the Satisfaction wreck needs a live check.

Journal auto pin

1/1 Live
  • Live

    You confirmed it live (c21828b).

Tutorial skip and class gear

0/2 Tests
  • Tests

    Skip completes Soul Survivor, gives class bag.

  • None

    Live check.

Quests and progression

0 of 37

Quest engine

0/18 Tests
  • Tests

    Task types from task sheets, turn-in, rewards.

  • Tests

    Many quests at once, with the client's journal limit per quest type.

  • Tests

    Interact, game mode, give item, patrol, level, talk, gather, cyclic object, temporary unlock, craft, objective, use item, territory, fishing, salvage, item family, refine, song and dungeon steps.

  • Tests

    Town board missions.

  • Tests

    Drop a quest (3836, 2026-11-05: it leaves the journal and can be taken again).

  • Tests

    772 quest trigger volumes from the level data.

  • Tests

    Done StayActive steps show as retail.

  • Tests

    Quest objects that are loot containers give their quest items; kills count by spawner category and category group.

  • Tests

    Have-and-return items of quests drop as retail (2026-11-09, side quest captures): into the kill's loot bag, from containers at the task's chance, from quest objects, and go back at the turn-in.

  • Tests

    A quest object with a detection sphere (238 kinds, the mount quest's torches) sets off its event when a player on its quest walks in, as retail.

  • Tests

    Food status effects, quest success events and recipes fire their game events; achievement steps read expressions; POI steps read tag lists; faction rank steps count.

  • None

    Live check of the new steps (Truffle Fever failed live before the fix); pin limit Unknown.

  • None

    Open (audit 2026-11-03): encounter result events (45 tasks), encounter-spawned gatherables (9), PvP kill and fort events (7), volumes in deferred slices (12), kill-contribution mobs with no spawn (51); the mount food's daily experience limit is not checked.

  • None

    Live check of the races and the faction join.

  • None

    Puzzle scripts, the emote step, PvP faction mission steps (TaskDie, control points), trigger areas of instance levels (20).

  • Tests

    Game events give faction reputation and tokens to the player's faction (581 events: faction missions and rank quests).

  • Tests

    A first lore read keeps the page and gives its game event's experience; a second read gives nothing.

  • None

    Emote tasks and puzzle (slayer script) tasks: the client message is Unknown, no retail capture.

Beach and wreck quests

0/2 Tests
  • Tests

    Start beach chain and wreck quests 4 to 7.

  • None

    Full live run.

Main story and side quests

0/4 Tests
  • Tests

    The engine runs them from game data.

  • Tests

    Side quests with only supported steps: 526 of 528; main story: 354 of 358 (2 steps have no target in the data, 2 are puzzle scripts).

  • None

    Nobody played them live.

  • Code

    The faction join works; the faction boards offer no missions yet.

XP, levels, attribute points

0/5 Tests
  • Tests

    Kill XP, level up, attribute and weapon points.

  • Tests

    Max health grows with the level and Constitution as retail (856 + 1.75 x level squared + the Constitution health: 9 retail points fit), and the client gets the new max after a level up or a spend.

  • None

    Live check after the tutorial.

  • None

    Attribute damage scaling and the attribute threshold effects (evidence conflicts).

  • None

    Gear health bonuses.

Weapon mastery

0/4 Tests
  • Tests

    Mastery XP and saves.

  • None

    Live check.

  • Tests

    Tree nodes without a trigger that change hits (crit, damage, damage taken) work on every hit while their weapon is held.

  • Tests

    Perks and nodes on head shots and hits from behind (OnHeadShot, OnHitBehind, their damage shares) fire.

Area charting, territory standing

0/2 Tests
  • Tests

    Charting XP, standing rank 1.

  • None

    Higher ranks and their rewards.

Achievements

0/2 Code
  • Code

    Achievement and meta achievement states.

  • None

    Live check.

Items and economy

16 of 45

Inventory, gear, paperdoll

1/2 Live
  • Live

    Inventory, slots, gear versions.

  • None

    Gear score rules, some item calls.

Loot drops

0/2 Tests
  • Tests

    Retail loot tables, drop chance, one bag per kill.

  • None

    Live check outside the tutorial.

Gathering and skinning

9/11 Live
  • Live

    Skinning, nodules and gatherables work live.

  • Live

    The sickle is the harvesting tool (slot 34).

  • Live

    Held effects add their gather speed (food, music buffs).

  • Live

    Worn perks hold their status effects, scaled by the item's gear score (tool, armour, amulet and bag perks).

  • Live

    Gather bots (nw-testclient gather, 2026-11-01) wear start tools (NW_SIM_START_TOOLS; the data has no T1 logging axe, so 2hAxeT2 is the lowest) and gather trees, herbs, crops, ore and stone (82 kinds in the 30 min run).

  • Live

    In the last run all 100 bots gathered.

  • Live

    A water gather targets the player and ends with the own done state, as retail Hive_Dye (before: the gather animation never ended); a second press on the same interaction id runs again.

  • Live

    Since 2026-11-05 a gather needs a level node of its kind in reach.

  • Live

    Since 2026-11-10 the server sends a node's state only for a kind whose bundle slots are known (Harvesting, Logging and Mining kinds, and 11 measured kinds of no tradeskill); doors, locks, banners and cannons keep the client's own state, so a used Fire Cannon no longer crashes the game.

  • None

    Tool levels and node respawn, live.

  • None

    Gathering luck: how ROL values change a gather roll is Unknown (the roll is server only).

Crafting

6/9 Live
  • Live

    Campfire, recipes (the skinning knife crafts live with no error message), craft answers after the item change, and the bag reasons of a craft (2 used, 3 made, 2 on a used-up slot) as retail.

  • Live

    Required, hiding and one-time recipe achievements.

  • Live

    Held effects (crafting food) raise the gear score range.

  • Live

    A salvaged schematic teaches its recipe.

  • Live

    Daily and weekly recipe cooldowns, saved, sent as retail.

  • Live

    Checked against 6 retail crafting and refining captures: one storage note per item made, with the last storage search.

  • None

    Live check of more recipes; higher stations and refining.

  • None

    Crafts take from storage in retail (which storage: Unknown); bonus items of another kind (their table: Unknown).

  • None

    The reset of the 79200 s cooldown and the colour gypsum orbs: Unknown.

Fishing

0/3 Tests
  • Tests

    Fishing code, one live run.

  • Tests

    Fishing quest steps and quest fish.

  • None

    Result of the live run: Unknown.

Repair, salvage, transmog, dyes

0/4 Tests
  • Tests

    Checked against retail salvage (4 captures) and dye captures: the salvaged slot goes out with reason 24, its items with 26 (containers) or 33 (gear); dye items and their emptied slots with 2.

  • None

    No retail repair capture.

  • None

    The storage note count of a salvage and a dye: Unknown.

  • None

    No live test.

Shops and coins

0/2 Code
  • Code

    Coins state, shop code.

  • None

    Not checked live.

Storage

0/4 Tests
  • Tests

    Storage search code.

  • Tests

    Checked against the retail storage capture: new ids on a move, the view from afar, 2 storage notes per move.

  • None

    No live test.

  • None

    Weight limit, transfer fee and the notes after a view from afar are Unknown.

Trading post

0/8 Tests
  • Tests

    Part buys show the units left to both players (search, own lists, notices): a stack of 10 bought 1 then 9 ends with the buyer holding 10 and the seller paid (world test on the database). Retail event counts, ends, notice versions, completion times, sync reasons 19/10/0, the completer's own tax.

  • Tests

    Orders carry the retail settlement id (nearest settlement or outpost capital: 22 of 22 retail ids from data, 5 of 5 captures); a filled buy order's units go to that settlement's storage (retail 2 of 2).

  • Tests

    Search throttle (1 s).

  • Tests

    A part-filled bag no longer gives a delivery twice.

  • Tests

    Since 2026-11-05 the buyer gets the sold stack with its perks, gear score, durability and look, and the post opens only at a settlement.

  • None

    No live test (the bot client has no trading post).

  • None

    Posting fees (no formula fits the 9 retail fees).

  • None

    Buys at another settlement and expired sell orders go to the bag (Unknown).

World systems

6 of 45

Fast travel, inns, recall

0/7 Tests
  • Tests

    Travel rules and saves.

  • Tests

    Inn check in is answered (its open and check in share one interaction id, retail inn tutorial).

  • Tests

    A shrine is charted at its first entry (its ChartedAchievement, as retail Playthrough_Part_01 3210.7 s), a discoverable one at an entry after its discovery.

  • Tests

    The phasing updates name all 10 phasing areas, so the client reports entries into the areas inside them (Brysedd Overlook Shrine lies in Monarch's Bluffs settlement's area 30155).

  • None

    Live check of the inn recall (no used point named since 2026-11-08), the unstuck stand, the inn check in and a shrine in a settlement's area.

  • None

    The fast travel kneel plays live since 2026-11-08. Retail names only the phasing areas near the player; all of them go here (Inferred).

  • None

    Shrine travel needs no chart on the server.

Player camps

0/3 Tests
  • Tests

    Place a camp for its costs, the retail camp entity group, respawn at its SpawnPoint, Camp crafting station, BindCamp event, the camp stands again at login.

  • None

    Live check.

  • None

    PvP destruction, how a new character earns the Camping rank (Unknown), guild and faction.

Mounts

3/9 Live
  • Live

    Summon, ride, dash, stamina, dismounts, cooldowns, mount screens and saves.

  • Live

    The mount quest (My Kingdom for a Horse) ran live to its end (2026-11-03): the cave torches light within their 9 m sphere, the box gives Moonshadow, the summon and the ride work.

  • Live

    A jump on the mount sets the 1 s stamina regen delay.

  • Tests

    Mount food from quick slots 1 to 4 while riding: riding experience, the quest step and the daily limit of 3 (tests only).

  • Tests

    The change mount screen gets its isChangingMount echo (retail slot 1 child 16; before: it spun).

  • Tests

    Quick courses (races, rallies, tours, time trials): start on a mount with the course task, node hits, timer, finish; the race task counts each section, 1/8 to 8/8, as retail (before: 0/8 until the finish).

  • Tests

    A rider's server body keeps the floor (its saddle camera is 3.91 m up, a walker's 1.685 m), steps at its mount's speed (the walking 0.36 m a record held it at 7.2 m/s) and its camera trails 0.45 s (Inferred fit): retail Hermit's Rally replay 1.11 m off (median), before 2.95 m and 2.0 m up.

  • None

    Live check of the change mount screen (store answer) and of mount food from a quick slot. Unknown: a dismount on a hit while idle (no retail capture shows one), town exclusion areas and forced walk, the trample message (6731), charm multipliers, the quest's required level (1 or 20).

  • None

    A failed course's result: Unknown.

Social: chat, friends, groups, voice

3/5 Live
  • Live

    Chat, friends, groups, raids, voice option.

  • Live

    Account probation (72 h, staff never).

  • Live

    Own voice service: sign-in, map cell rooms, push-to-talk audio relay; one player heard itself live (2026-11-08).

  • None

    Live test with many players; voice between two players.

  • None

    Play time part of probation (180 min) not counted.

Companies and territories

0/2 Code
  • Code

    Company code, standing.

  • None

    Ownership, taxes, upkeep.

Expeditions and instances

0/5 Code
  • Code

    Instances, dungeon scripts, mutations.

  • None

    No live run of a dungeon.

  • Tests

    Story instances on the open world map (Medea and the other story fights): their scripts are found (the capital names the script without its slices folder), and their doors (Entrance_Quest*, trial and raid entrances) name their mode.

  • Tests

    The director starts instance sims from its config ([instances.launch]).

  • None

    Not seen with a real client: entering a story instance.

Game modes (queues, arenas, Outpost Rush)

0/4 Code
  • Code

    Queues and matches.

  • Code

    Leave a queue (1066, and 2385 for all queues) with the retail 4970 answer, and leave a game mode (3309) back to the open world (2026-11-05, tests only).

  • Code

    Since 2026-11-05 a queue join is refused at once (no fake local match).

  • None

    Mode rules, the game mode world states (2343, 363, 3105), live test.

Wars, sieges, invasions

0/3 Code
  • Code

    Codecs and sign-ups only.

  • Code

    Since 2026-11-05 sign-ups get the retail closed-war answer.

  • None

    No capture shows the war flow.

Seasons and season pass

0/2 Code
  • Code

    Only the state the journal needs.

  • None

    Season pass rewards and progress.

Leaderboards and analytics

0/2 Tests
  • Tests

    Stats service with the retail reply shapes, boards counted by the sims, client analytics events stored (Kinesis and STS answered).

  • None

    Live check of the leaderboard screen. Only HercyneRaid_Reward boards count so far (docs/re/2026-09-18-leaderboards-and-analytics.md).

Music instruments

0/3 Code
  • Code

    Music code exists.

  • Code

    Since 2026-11-05 the server judges notes against the game's note charts, and the picked reward pays out its event.

  • None

    Not checked live.

Not started

0 of 12

Housing

0/4 Tests
  • Tests

    Buy a house, enter and leave the plot, place, move and remove furniture, taxes, travel home (travel module).

  • Tests

    All 19 kinds of retail housing calls read and all 10 kinds of answers are built (capture survey 2026-11-05).

  • None

    The house data (3663) and plot (3055) world states.

  • None

    Live test.

Artifacts

0/1 None
  • None

    Not built.

Heartrunes

0/4 Tests
  • Tests

    Hits fill the heart rune charge by the damage row's rune charge points (attack, blocked attack, hit, blocked hit); the charge state goes to the client in whole percents.

  • Tests

    A worn rune (paperdoll slot 41) turns on the rune ability list; Detonate starts at a full charge and takes it.

  • None

    Not seen with a real client: the charge bar and the Detonate press.

  • None

    The other nine runes (Stone Form and the rest) are in the list but not checked one by one.

Town projects

0/2 Tests
  • Tests

    Town board missions: take, the mission's items, kills and place, turn-in.

  • None

    Project progress, upgrades and the board's offer rules.

Trophies

0/1 None
  • None

    Not built.

Done

  • Website shows the checks (2026-11-11): the home and progress pages count the proven checks of each feature (seen with the real client or with bots) and show no percent; the site reads the new docs/progress.json from main.

  • Game VM and PC stack updated (2026-11-11): the night order programs and data (not committed yet), world migration 0035 applied on the PC and on the game VM; the VM sims load 44 game modes, and the status reports are accepted.

  • Night order 2026-11-10 (tests only, not seen live): story instances on the open world map (15 more game modes scripted, entrance names), heart rune charge and Detonate, the world clock saved (world migration 0035), mob spells (744 of 765 spell names: ground areas, self heals and buffs), hit reactions by side (retail: 160 captures), weapon tree nodes without a trigger, crits from behind (retail: 510 of 560) and head shots (retail: 346), knockback stopped by walls, faction reputation and tokens from game events (581), lore read XP. The progress page now lists checks with their own proof; no percent.

  • Game VM updated (2026-11-10): new programs and data from 54e38670, world migration 0034 applied; the sims load 240 world event roots and 44 start objects, and the status reports are accepted.

  • World events and tree variants (2026-11-10, tests only). The sim sends the encounter root entity of 240 open world events with the manager status and each stage's status history (bytes and stage order checked on retail captures); 44 start objects spawn and end their stage when gathered; 559 encounters use their own detection volume. The collision tool reads region.slicedata: 361,192 tree, stone and plant rows now have their own mesh.

  • Database saves, second part (2026-11-10, tests only). New world migration 0034: health (dead too), mana, stamina, running ability cooldowns, the PvP flag wish, puzzle-stone turns and the fishing bait are saved with the progression; the depleted gather nodes of each level are saved in their own table and loaded at a sim start. Proof for health: a recorded retail run that ended dead began its next part dead. Run edge-http migrate before the next start.

  • Mob movement, first part (2026-11-10, tests only, not on the game VM yet). (1) Mob attacks move the mob: the server turns and moves a mob by the Homing clips of its attack fragment, as the client does only for the player's own character. (2) More solids: each region's tree and stone file and the engine's static mesh and primitive colliders, by the mobs' own collision filter AI (it blocks the same solids as the player filter in this build), with closed meshes as solid blocks and water deeper than a swimming body closed to mobs. (3) A way search for mobs over the floors when the straight way is closed, which also gives the tree's reachable answer; a target with no way gives the way to the nearest place. (4) The level designers' navigation marks (7,185 in the open world, 69 in the tutorial): no mob stands in a town gate. (5) On the way home with no way found a mob walks its trail back (it was already immune on the way home and healed at home). (6) World event encounters come back after the respawn range of their spawn group's area spawner (329 of 329 open world encounters).

  • Undead, dryad and inquisitor mobs used the wrong attack data: fixed in the data tool (2026-11-10, tests only, not on the game VM yet). The damned animation database keeps the fragments of those creatures in sub databases (<SubADB Tags="Undead" File=...>), and the tool did not read them. Such a mob played the damned entry of each fragment, whose damage row its own damage table does not have (live: mob damage row missing and mob projectile flight missing for the undead pistol mobs). The tool now adds the fragments of the sub databases with their tags; 107 creature rows changed (24 undead, 19 dryad, 2 inquisitor, 62 others).

  • Aimed abilities cast once and then never again (Sacred Ground and every aimed ability): fixed (2026-11-10, tests only, not on the game VM yet). Three parts of the client's ability rules were missing. (1) A transition clip that names a fragment no action plays makes the running action go on with that fragment; the table dropped those clips, so the ready fragment never went on to its aim loop and a click later than 0.67 s cast nothing. (2) A fragment that starts on a Mannequin scope takes it from the fragment that played there; the table had no scopes, so the aim action ran on after the cast and blocked every later press (and its cast fired for another weapon's ability). (3) The cast action waits for the aim's raycast; the engine started it at the key press. The ability table now holds 78 fragment switches and the scopes of all 217 fragments, from playermalecontrollerdefs.xml.

  • Client crash at a Flail Slam cast: cause found and removed (2026-11-10, tests only, not on the game VM yet). Two clients crashed in the tick the server spawned the spell entity of Spell_Flail_Slam_AOE_Upgrade. The spell entity table replayed every state of the most common retail card of a spell, and for this spell that held a position state of one retail cast (338 different values in 581 retail cards). The table now keeps a state only with the bytes that at least half of the spell's retail cards have; the position states are gone from all 1,036 spells, and 43 entries without bytes are gone too.

  • Game crash after the Fire Cannon of 12A_MSQ_08_DestroyRune (2026-11-10, tests only, not on the game VM yet). Retail's card of that cannon has the gatherable controller in bundle slot 2 and the interact in slot 6; the server put them in slots 3 and 4, where the cannon has another class or nothing. The client crashed, and again at each login near the cannon, because the server kept the node. A scan of 2,265 retail ledgers found slots 3 and 4 on all 110 kinds of the Harvesting, Logging and Mining tradeskills and on 11 kinds of no tradeskill; 15 other kinds (doors, locks, banners, cannons) had other slots, some different per placement. The server now sends node states only for the kinds with known slots and still keeps the others depleted until they grow back.

  • Buff and debuff timers of about 10957 days: cause found in retail (2026-11-10, tests only, not on the game VM yet). The client sets its wall clock from two values of the own player state, sessionStartWallClockTimePoint (Unix ns) and sessionStartTimePoint (ns since 2000). Retail has both in the own card of all 3 login captures looked at; their difference is the time from 1970 to 2000 plus 1 to 3 ms. The server sent neither, so the client's wall clock ran 30 years behind and every end time on that clock showed about 10957 days. The server now sends the pair at the spawn. The inn and house cooldown ends go out as Unix times again, as retail's (the 2026-11-08 change had put them on the 2000 clock to hide the same fault).

  • Voice on a server with other ports than 443: cause found with a trace of the running client (2026-11-10, tests only, not on the game VM yet). When the voice API address names a port, the voice SDK sends its first request (the prelogin) without TLS (WinHttpOpenRequest flags 0). The HTTPS port answered with TLS bytes, WinHTTP gave error 12152 and the game showed voice error 10052. An address without a port gets a TLS request, which is why a server on port 443 signed in. The plain HTTP listener of edge-http now answers the prelogin too, and the social service's [voice] api_url names that listener's public port on such a server. Network, certificate and Wine were ruled out first (a WinHTTP test program on the same path got status 200).

  • "Take all" and "move all" in storage: fixed (2026-11-10, tests only, not on the game VM yet). The by-class item calls carry a class number. The table of those numbers was in the order of the client's name strings, which is not the order of the numbers for 75 to 89, so those sections moved nothing (live: the dye section sent 82, the cooking section 83). The numbers now come from the order of the client's registration functions, one every 1120 bytes; that order gives all 8 numbers seen in retail. UI_Catacombs has no number yet. The sim logs how many stacks each call moved.

  • Fall damage from a structure the level data lacks: fixed (2026-11-10, tests only, not on the game VM yet). A player on such a floor (a town building spawned by a card) who ran off it went to the ground in one step, on a floor the whole time, so the landing had no drop. The body now falls from there by the physics, and a jump on such a floor comes down on that floor. The sim logs each landing of 3 m or more with its drop.

  • Other players' attacks: one more fact (2026-11-10). In the two-player run the states one player got of the other during a life staff attack held no action state at all: the attacker's own slayer state did not change at the cast either. The cause is not known yet; the sim now logs why an ability press starts no action, for the ground-target abilities that did not cast in the same run.

  • Swarmer portals and script mob poses (2026-11-10, tests, on the game server, not seen live): one spawn of a spawner slice with more than one spawner makes each of its mobs (the storm priest's worldevent_ai_cultist_chaplain_minion holds Swarmer1 and Swarmer2: two swarmers per portal, as retail 12-9_demonstorm2). A mob that a script spawns takes the waypoints of its spawner slice (894 script slices; the storm priest's wp-nopath with POI_Ritual_Channeling_LOOP, as retail 12-8_demonstorm).

  • Corrupted growths, checked against retail 12-5_survivors (2026-11-10): at a break retail sends no state of the growth itself, only the hit (2071), an item change (7048), the break (2724) and the player's own states. The server sends the same hit, break, loot tracker entry (state 2, type 4, reset 33 s later, Unix ns) and gather state. No message is missing; the break effect needs a look in the game after the clock fix of 2026-11-10.

  • Voice sign-in trace (2026-11-10): the client's own address check accepts the game server's voice address (ClientConnectionImpl::Connect, server.IsValid(): an https:// prefix and under 256 characters). A trace script for the client's voice SDK calls is set up and the social service logs each voice call; the next login shows where the sign-in stops.

  • Windows login and play, seen live (2026-11-09): a second player on Windows used the Windows launcher and the patch script of the Windows test package (2026-11-08) with its how-to, logged in to the game server and played.

  • Open world encounters run (2026-11-10, tests, on the game server, not seen live): the dungeon script file now also holds the open world's 329 spawn group encounters (WorldEvent_SpawnGroup_Single_Master and the other world event and world boss groups; 1,384 mobs), and the open map sim runs them with the instance script runner. An encounter starts when a player comes within the wake radius, resets when every player left for its grace period, and starts again after the mob respawn time (Inferred) once it ended. The level file's encounter spawns of those groups (2,060) are left to the script. Storm priest: he now spawns at his own place (7349.18, 2917.83) and his Sub-Phase_01 - Spawn Swarmer Portals stage spawns the swarmers at 0 s, 15 s and 25 s after he falls to half health, as retail 12-9_demonstorm2 shows (121 s, 136 s). Tests: an_open_world_encounter_runs_while_a_player_is_near_and_comes_back_after_its_end, a_spawn_of_a_nested_encounter_slice_makes_each_of_its_mobs, the_encounter_spawns_of_a_scripted_group_are_left_to_its_script. Open: each portal gives one swarmer (retail two, 1.3 s apart); the priest's ritual pose (his spawner's wp-nopath task is not given to a script mob); the 596 other spawn group capitals whose slices hold no encounter manager.

  • Dungeon script file builds again (2026-11-10): content-tool dungeon-scripts stopped at an Eden Grove objective without a target entity (dg_enc_edengrove_00_arboretum_02), so no script file existed and the sims loaded 0 game modes. Such an objective now loads (no entity event completes it; its time limit ends it). 28 instance levels, 274 instance encounters. The quest trials (QuestGawain and 11 more) still have no script: their game modes name no script slice.

  • World files rebuilt with the waypoint reader fix (2026-11-10, tests, not seen live): 11 level files changed (the open world and 10 expeditions). Mobs on PointSpawner_1wp_Stand and the other missed spawner kinds now have their post and pose. Test: a_mob_plays_the_task_of_its_waypoint_at_its_spawn (a beach boar lies on its side, Boatswain Bridget looks around). Old files kept in a backup folder.

  • Storm priest and his swarmers, OPEN (2026-11-10): the level file lists the priest and six swarmers at the centre of an encounter group (WorldEvent_SpawnGroup_Single_Master). The group's own slice places the priest 5 m away on a wp-nopath waypoint with the task POI_Ritual_Channeling_LOOP; the swarmer entries are minion spawn points of the encounter Damned_Cultist_Chaplain_MinionSpawn. His tree (damnedchaplain_basebehavior) holds no ExecuteSpawn, only encounter events. Retail 12-9_demonstorm2 spawns the swarmers two at a time. The server does not run open world encounter groups: it spawns all seven at the centre. About 3,400 open world encounter spawns are of this kind.

  • Voice on the game server, OPEN (2026-11-10): ports, certificate chain and TLS 1.2/1.3 are good from the player's network, the voice API answers a prelogin with 200, and the realm, issuer and host names agree in all three config files. The game client never sends its first voice request (no prelogin in the edge log of a whole play session; it reports voice error 0 about once a minute). The one difference from the PC setup that worked is the port in the voice API address. Cause: Unknown.

  • Corrupted growths, checked (2026-11-10): retail 12-5_survivors sends at each break a 2071, an item change (7048), a 2724 and one own bundle; the server sends the same 2071, 2724, loot tracker entry, gather state and objectives. Not compared yet: the own bundle's classes 11, 2913 and 3183. Retail broke each growth with one hit there; the server asks for two.

  • Ability binds and respec: FIXED (2026-11-09, seen live on the game VM: the ability goes on the bar). The client names an ability table by its position in its own order in the slot change (2701) and the respec (186); retail's ability state lists the 29 tables in that order (general-other-01, the sword at 27). Ours used the bundle's order, so the VM refused every 2701 (UnknownTable) and the bar stayed empty. CLIENT_ABILITY_TABLE_ORDER in crates/nw-content/src/character_points.rs now orders the tables.

  • VM content files rebuilt (2026-11-09): player-abilities-25810808.json (the ability rules now carry delay_ms) and ai-data-25810808.bin, for the new code; before, the sim loaded no ability table and no mob AI. Old files kept as .before-delayms and .before-rebuild-20261109.

  • Ability keys start no ability on the live server: FIXED in code (2026-11-09, on the game VM, not seen live). Cause: a start's test names the key press only in its own frame (IfActiveAbilityMoveName without BackTicks). The server timed the press by its input message and tested it in the next tick, some ms later, so the press was never in its frame: 99 logged presses of Sacred Ground and Void Blade, 0 starts. The tests passed because they pressed and ticked at the same time. Now the press is of the frame of the first tick that reads it. Covers the reports of heals, ground spells, mana use and the void blade; each one still needs a look in game.

  • Quest walk of the Monarch's Bluffs quests (2026-11-10, local-data/reports/quest-walk-12a-20261110.md): 46 of 47 end, "Foreman's Fate" (12A_MSQ_06_ToMiclot) among them. The one marked broken, 12A_MSQ_24_DefeatGawain, waits in a partial container on its game mode step (TaskGameMode QuestGawain, the soul trial); the walk cannot enter a game mode, and the game VM loads 0 dungeon scripts (dungeon scripts game_modes=0), so this trial is open. 10 talk steps of these quests name a topic that no NPC row holds; they end when the client sends the topic, which the walk does itself, so each one still needs a look in game.

  • Mob charges hit nobody (Torok the Beast): FIXED (2026-11-10, tests only). Torok is Boar_Named_00 (slice boar_aggressive, tree 788). The boar tree's charge (Attack_Charge_Start, the run Attack_Charge, Attack_Charge_End) comes for a target 3 to 7 m away when the attack cooldown and the charge cooldown (6 to 8 s from the alert, then 12 to 18 s) are over; a 50 % draw against run-then-gore. The run is a NavigationAction, and the server read damage windows only for CAGEAction nodes, so the run's CAGE-Damage clip (DamageTableRow Attack_Charge, open from 0 s without an end) never struck. Now a move opens the windows of its action, and a window without an end strikes when the run gets to its target. Every mob attack that a move plays is covered. Test: a_boar_charge_strikes_the_player_it_runs_into. Not proven: that the hit lands in the world's reach check at the arrival distance (not seen live).

  • Mobs that stand at a post wander (Boatswain Bridget): FIXED in the reader (2026-11-10), world files rebuilt (see the last commit line). Bridget is Corrupted_Sailor_1H_Sword_Named_00. Retail 12-4_crewmates: she plays POI_LookAround at her spawn, then Attack_Close_1H_Sword_01 and _04 with strafes. The server's Bridget fights with the same attacks, but she wandered: her spawner slice (PointSpawner_1wp_Stand) names its waypoint wp-nopath and the reader took only names like wp01. Also missed: WP1 (lynx patrols), WP (blightfiend eat) and waypoints without a task (black wolf patrols). In the open world 11,984 spawns on a waypoint spawner had no path (6,631 of them PointSpawner_1wp_Stand). Tests: a_waypoint_is_known_by_each_way_the_slices_write_its_name.

  • Ranged light attacks miss with the crosshair on the mob: FIXED (2026-11-10, tests, on the VM, not seen live). Live logs: 13 of 69 life staff casts met no mob (54 % the day before the aim fixes). Cause: the shot flew from the player's own place along the camera's yaw and pitch; the camera stands over the shoulder, so that line passes beside or under the mob under the crosshair. Now the shot (basic attack and projectile ability) flies to the aim point of the client's input when one came within 200 ms and no lock is set; else as before. Test: a_shot_flies_to_the_point_under_the_crosshair. Heavy attack (life staff, hold): the server casts it (17 LifeStaff_PrimaryAttackC2 casts in the live log of 2026-11-10).

  • Idle mobs never finished a walk: FIXED (2026-11-10, tests, on the VM, not seen live). Live log: the storm priest (Damned_Cultist_Named_03) and the swarmers started a new wander walk about every 0.35 s. Retail 12-5_survivors: an idle sailor's Move is followed by its next Move after 3.98 s at the least (8.66 s in the middle). Cause: the brain made its plan again each think and cancelled the running plan on every difference; the weighted draw of the wander tree's FidgetOrNothing (the step after the walk, not running yet) differed each think. Now only another choice at a selector that executes cancels the plan. Tests: the_draw_of_a_later_step_does_not_cut_the_running_step, an_idle_mob_walks_its_wander_steps_to_their_ends. Open: within 1 m of its spawn the wander tree's CheckNearSpawnPos entry still cuts the first walks (retail rule Unknown).

  • Sleeping pigs and other idle poses: FIXED (2026-11-10, tests, on the VM, not seen live). Retail 12-6_pillageship: three beach boars play POI_Lay_Down_On_Side_LOOP. The level file holds the task at each boar's waypoint, but a route kept a task only when a behavior tree names it: 114 of the open world's 148 waypoint task names (11,500 of 18,264 waypoint tasks: look around, kneel, mine, pray, lie down, ...) were dropped. The AI data now takes every waypoint task name of the level at load. Test: a_beach_boar_lies_on_its_side_at_its_waypoint (real ground).

  • Janszoon walk-home tests: FIXED (2026-11-10). He walked home to 0.5 m and then wandered up to 5.3 m from his home (his wander tree); the tests asked for under 2 m at the end. They now check the nearest point after the fight and that he stays near. All sim tests pass (968).

  • Storm priest (Demon Storm) checked, OPEN: in the test bench and on the real ground he aggroes and fights (knife attacks, Mark of Corruption, Corrupting Light). Live log 2026-11-10 02:00 to 02:02: he wandered (see the walk fault above) and took the player as target only when hit. Retail 12-8_demonstorm: he plays POI_Ritual_Channeling_LOOP at (7349.18, 2917.83), 5 m from his level spawn, and retail 12-9_demonstorm2 spawns his swarmers two at a time (121 s, 136 s). The server spawns him and six swarmers at once at the level spawn with no waypoint: the encounter's own spawn script is not run (Unknown data source).

  • Area spells show nothing (no heal circle): BUILT (2026-11-10, tests only, not seen live). Retail spawns a spell entity per cast: a card of the spell's slice, a spell state (class 2912: spell id, start place and turn, attachment, caster id, radius scale), the caster's ownership for some slices, and the slice's other states. Built: the typed spell state (round trip of the retail Sacred Ground bytes), a table of the slice and states of 1,036 spells (769 from the captures, the rest from SpellData SpellPrefabPath with the states of the captured spell of the same slice; the captured slices match the game data in every spell, 0 differences), and the spawn at the moment an area opens, until it ends (at least 1 s). 52 of the 80 player ability spells have a slice; the other 28 are projectiles (another entity kind, not built). Open: when retail takes a one-pass spell's entity away is Unknown (1 s here).

  • Empty towns, first part: BUILT (2026-11-10, tests only, not seen live). A scan of every retail capture (1,384 ledgers, 440,286 different spawn groups of 4,853 slices) shows what the retail server spawns by card. Our server now spawns the 834 settlement and fort props that retail sends with a card and a place only: the station buildings (one per folder and point, the tier seen most), lanterns, torches, fireplaces and house plots (local-data/content/town-props-25810808.json, made by cardsurvey and townprops.py of the capture tools). The trading post building stays in code with the trading post. Open: event props (snow, ruin decals), house data, a settlement that no capture shows, and the tiers of our own world (the table has the tier the captures saw most). NPC in the trading post: the captures hold no server-spawned NPC at the trading post (22 NPC slices in all captures, none of a trader); what stands in the building is part of the client's own level data. Unknown why the user saw none.

  • Two Sacred Grounds for one press: FIXED in code (2026-11-10, tests only). The action shows its aim with a targeting cast of the plain spell and then casts by raycast (the plain spell or the held upgrade). The server spawned both. Now an action that casts by raycast spawns nothing for its targeting cast.

  • Voice fails on the game VM: NOT FIXED, findings (2026-11-10). From the PC the public voice API answers (HTTP 405 to a GET of the prelogin route), TCP 5223 is open and its certificate holds the voice host name. The voice server on the VM saw 14 connections in all its logs, 7 ended in a TLS handshake EOF, and none from the game since the last restarts. The social service logs client voice service error ... error=0 about once a minute for the player. The client's own log on the PC is empty. So the client gives up before or at the first voice step; the cause is Unknown.

  • Aimed area spells (Sacred Ground) open in the wrong place: FIXED in code (2026-11-10, on the game VM, not seen live). From the retail capture general-other-01 (the strtpos of the spell states, class 2912, of 11 area spells): the spell opens at the aim point the client's input carries (row 3; 0.1 to 0.5 m in 6 casts), else where the look from the camera meets the caster's floor (0.08 to 0.27 m in 3 casts). Retail's were 1.7 to 20 m from the caster; ours opened the whole 25 m reach ahead, so nobody stood in them. The earlier note "the client sends no point" was wrong. Still open: the server spawns no spell entity, so the circle does not show.

  • Every buff and debuff timer shows about 10957 days: FIXED in code (2026-11-10, built, not seen live). Cause, from the retail captures: SyncTimeChange carries the world's start in ns since 2000 (retail 845485830908027957 in two captures 3 days apart). Ours sent the start in Unix ms, a time in 1970 on that clock. 10957 days is the time from 1970 to 2000.

  • No trading post in the towns, so the quest step "Visit the Prydwen Trading Post" never ended: FIXED in code (2026-11-10, on the game VM, not seen live). Cause, from the retail captures: a settlement's trading post is not a level object. The retail server spawns it as an entity of its own (one slice asset for every town) and the client shows its interaction only with that spawn card. Our server sent no card, so the client had nothing to use (the VM log of a player's visit shows no trading post interaction). Built: the card and its 7 states for the 13 settlements whose trading post the captures show (932 retail cards), byte for byte as retail but the id and the order counts. Added the same day after a live check showed no trading post still: retail spawns a second entity on the same point, the building craftingstation_t5_tradingpost_complete (a card and a place; 1,314 retail cards of the same 13 settlements). Our server now sends it too. Open: the order counts in the card are 0 (the sim keeps none), and a settlement that no capture shows has no trading post yet.

  • Life staff heals give no health: FIXED in code (2026-11-10, on the game VM, not seen live). The ability key fix was seen live first: Sacred Ground, Light's Embrace and Orb of Protection cast and open their areas (VM log). Cause of no heal: the heal effects change health by a share of their spell's hit (HealthModifierDamageBased: Sacred Ground 0.16, Light's Embrace 0.8, Divine Embrace 1.2) and a spell's effects came without a hit, so the share was of 0. Now the hit is the caster's weapon damage times the coefficient of the spell's damage row (Inferred from the data and the tooltips; UseHealScalingValue is not read). Corrected the same day (built, not on the VM yet): the heal base is the weapon damage alone. The first form multiplied it by the spell's damage row, and the heal rows hold a coefficient of 0, so Sacred Ground and Light's Embrace still gave 0 (VM log: hit_amount=0.0). Still open: an aimed heal opens its CastDistance ahead of the caster (Sacred Ground and Light's Embrace 25 m), not where the client aims or on the caster; the server spawns no spell entity, so the circle does not show (retail spawns spell_aoe_heal_foe; its place is not in its card). The sim now logs each item call (client item call) for the dye report.

  • Other players' animations: PARTLY (2026-11-09, on the game VM). Each viewer now gets another player's sequence time (slayerSeqTimeRel, retail 1,750 of 1,751 states) and its slayer state in the first 3 states after a start only (retail runs of 1 to 8). Review of the whole path against retail and the client decompile (same day): the clock of another player's states (ours 1 ms behind the server time, retail 20 to 40 ms), its facing (retail's body faces within 15 degrees of the look in 91 % of the moving own states) and the children of the states match retail, so those were not the cause. The client plays another player from a time-ordered ring of full states (BuildTargetStateRemoteEntity, FUN_144871ad0): it blends the two states around its render time, the server time less a delay. Built from retail after it (on the game VM, not seen live): a weapon key starts the new weapon's draw in the second slot at every swap, not only from no weapon (retail 16=2c 18=<draw> after 351 weapon keys); a sheathe sends 16=2c 18=9b2c; the first card carries the movement state the player has then, not the stand of a spawn; another player's sequence time takes a new absolute part only when it leaves the byte's reach (retail: none with a start); the sim logs every state of another player (player state). The limit that stays: the client does not name its movement sequences (97 % of retail's own movement starts have no client row), the retail server picks among 79 moving, 136 turn and stop and 127 stand sequences, and ours has one of each per weapon stance, the most common in the captures; crouch and prone have no sequence in our table. Not working yet: attacks and weapon swaps others see, the walk (the server restarts the move state every 0.3 to 0.8 s), the staff pose, and the place (others see the server's estimate, so a player can float). The sim logs player action states as hex for the comparison with retail.

  • Players see each other: FIXED (2026-11-09, seen live on the game VM: two players see each other). The cause was the high flag byte of the first position of another player (ALC child 42, the high byte of the client actor flag word at +0x450): our card copied the own player's 53, and retail sends 03 on 16 of 18 first cards of another player in the own captures. With 53 the other player was there (targetable, could cast and hit, its weapon showed) but its body was not drawn. The history of the earlier changes follows. The change below is on the game VM, and the two players still did not see each other after it. In the first test with two real clients, two players 2 m apart could chat but did not see each other. The server sent another player's spawn card again every 30 bundles (about once a second) and filled it with every state of the own player (58 classes, the coins and bags among them). Retail sends that card once, when the player comes into view, and then only its states (general-other-01: one card in a slot, then up to 7,368 groups without one), and the card holds 13 player classes (look, gear, vitals, mount, faction and a few more). A card again starts the client's load of the slice over, as it did for mobs. The server now sends another player's card once, with those 13 classes only. Second change (2026-11-09, on the game VM, not seen live yet): the card also gave the other client the own client's private slots. In all 40 first cards of another player in the own retail captures, the position state (11) and the vitals (15) carry slot 0 only (slot byte 01) and the faction (3152) slot 2 only (04); our card sent 03, 03 and 06, as on the own card (slot 1: distGround and the rest, the mana and afflictions, the pending PvP flag). Now another player's card and any other entity's first position carry the public slots only. The client log of the live test shows that the client did make the other players' slices/remoteplayer.dynamicslice (the same 26 slice warnings per player as retail logs), so the card came through; the client decompile picks local or remote by the 3935 characterId only, and ours passes. Live test of the second change: still no body, but each player saw the other's blade, so the entity, its place and its paperdoll arrive and only the body is not drawn. Third change (2026-11-09, on the game VM, not seen live yet): the card now carries what retail's carries of who the player is. On the own card and on every other player's first card retail sends the 3935 characterName and homeWorldId (slot 2 children 1 and 2; the layout is 04 9f <id> <name> <world> 01 00 on another player's card, with lookingThroughLoadout 0), the vitals' vitalsData life block with healthChangeFlags 0, and on another player's card its level alone (899 01 01 <level>). Ours sent the id and the connected flag only, no life block and no level. Not sent yet, as this server does not have them: the 3935 platform children 7 and 8 (platformAccountId, the Steam id, and platformType), the remote stat multiplier table (1525), the slayer script lists (6234), the status effect list (4236), and the social title (4176). The sim now logs each other player's card as hex at debug level (player card), so a live run can be set beside the retail bytes. To check: two real players near each other on the VM.

  • Quest item drops (2026-11-09, tests and the quest walk). The walk stopped 698 quests at a "have and return items" step with no source: a quest's step was built with no drop and no container chance, a mission's with both. Retail side quest captures show the rule: the item of a kill drops into its loot bag (Lost, white wolves, boars, a grizzly: the task counted 30 to 50 ms after each bag use), the item of a container comes at the task's chance on top of the container's own loot (the tutorial chest's table gives 1 potion, retail's bag got 2), quest objects and the cactus list drop at the gather, and the items go back at the turn-in (Earth Will Provide: the bag slot of the 2 items held the reward after it). The server now does the same for quests and missions, and gather steps with a container chance too. Walk: 17,648 of 18,441 quests end (16,976 before). Not seen live.

  • Passive ability triggers (2026-11-09, tests only). The AbilityData rows of mastery points, worn perks, attribute thresholds and their helpers now fire on a player's hit (OnHit, OnCrit, OnKill), on a mob's hit on a player (OnHitTaken), on a block (OnBlockedHitTaken) and on a guard break (OnBlockBreak): about 900 of 1,202 combat rows. They check the weapon, attack type, damage row, health, stamina and mana shares, status effects on either side, distance, activation cooldown and required abilities, and they apply and remove status effects, change the hit's damage and crit, heal a share of the hit, give mana and stamina, and cut cooldowns. A row with a condition the server does not read yet never fires (action windows, hit counters, grit, markers). Not seen live.

  • Website link, part 2 (2026-11-09, tests only). The leaderboard report now gives each board its sub-group, value kind (Time, Ratio, Days ...), order (lowest first for clear times), whether it holds every world, what it ranks (character, company or group), the current rotation and its reset time (the season end comes from the client's remote config). Rows keep the game's shared ranks (1, 1, 3), keep decimals (clear times in seconds), and group rows name every member this world knows. With [website] site_url in the edge config, edge-http gets the message of the day for character select from the site once a minute (ETag, last good copy kept), and the new GET /launcher/news-source tells the launcher where the site's news feed is. The client shows the message of the day as plain text (markup is off in its screen files). How a site connects: docs/website-integration.md.

  • Status reporter for the website (2026-11-08, seen with test bots and a local copy of the website). New status-reporter (config/status-reporter.toml): one per world, on the game machine, sending out only. Every 15 s it reads the metrics pages of each part (login, gateway, director, sims, social; a part is up when each of its pages answers with a Prometheus text page, also an empty one: a server that just started has counted nothing yet) and posts the status to /api/ingest/status: the part states, the players of the sims (sim_players) and the largest gateway worker p99 round trip. Every 5 minutes it posts all 422 boards of the game data to /api/ingest/leaderboards, with the top 100 named rows of each board's current rotation; a row whose entity is no character or company of the world is left out. Each report carries the world id, the time and a lowercase hex HMAC-SHA256 of time.body with the world's secret (the website's test vector passes). content-tool leaderboards writes the board table leaderboards-<build>.json with the English names and groups. The rotation keys of [leaderboards] are now one shared type for the sim and the reporter. Live check: the local site went from "No signal" to Online, and showed Players online 3 while 3 test bots were in the world.

  • Discord role access (2026-11-08, tests only). With the allow list on, the holders of a role in [discord] allowed_role_ids (in the guild_id server) may log in too, so a whole group of testers needs no per-person list. The roles come from the member record the login already reads; each Discord login stores them (global migration 0008, discord_login.guild_role_ids), and each Play checks the stored ones, since Discord cannot be asked then. A role given or taken in Discord counts from the player's next login. To check: a role holder logs in and plays on the VM.

  • Fast travel kneel (2026-11-08, seen live). Live, inn recall and shrine travel still did not kneel, while unstuck did. The server's own pose log showed our kneel matched retail's usual form byte for byte: the kneel sequence alone (15=05), from standing still, with the channel flag and interaction off before it in the same bundle. Unstuck sends a full state with its sequence, and it plays. Retail also sends the fast travel kneel as a full state (13=1f 15=05) in 21 of 487 starts. Live, the full form did not kneel either (log: 13=1f 15=05 sent at 20:05:53). The server now sends the unstuck kneel (13=19 15=b247), which plays live, for every fast travel and inn recall too (the user's call: it is the same animation). Live, still no kneel with the same pose. A client trace then showed the game does get the channel flag (its fast travel teleporting flag turned on at the start and off at the cancel), and the unstuck kneel plays from the unstuck accept message (3980) alone. So a fast travel now also sends the unstuck accept at its start (with the channel's wait) and the unstuck done message (2190) at its end or cancel. Seen live (2026-11-08 20:40 UTC): the fast travel kneels. The inn cooldown stays 15 minutes: right after 9 retail recalls, at most 884 s were left, never more than 900 s.

  • Inn recall timer and landing (2026-11-08, tests only). Live, after a recall the Game Menu showed a 10,956 day countdown, and the recall put the player behind the innkeeper. The timer: the inn point's cooldown end went out as a Unix time, and the client counts from 2000-01-01 (10,957 days later). It now goes out on the client's clock. Retail's cooldown is 15 minutes (900 s in all 449 retail inn points), not one hour. The landing: the inn's level point is the innkeeper; retail lands 3.00 m in front of the innkeeper, at the same height (9 of 10 innkeepers with retail recalls; one lands 1.00 m in front, why is Unknown). The server now does the same. The server also logs each own pose change at debug level, for the fast travel kneel, which still does not play.

  • Inn recall and the Game Menu store box (2026-11-08, tests only). Live, "Recall to Inn" stayed grey and the store box on the Game Menu spun. One cause: the home point state named the bound inn as the point the player had just used. At each such state the client starts that point's 900 s cooldown from its own clock (a client trace: the inn's cooldown end was the login time plus 900 s). The Game Menu then checks the cooldown every second and redraws, and each redraw asks for the store again. Retail names a used point in 16 of 1,573 login states and never an inn (0 of 4,347 states). The server now names no point. To check: log in bound to an inn, open the Game Menu.

  • Unstuck kneels and stands up as retail (2026-11-08, tests only). Live, after an unstuck the character kept a stiff pose with arms out and the weapon pose until a jump. Retail sends a kneel pose (13=19 15=b247) and turns interaction off when it accepts the unstuck, and a stand-still pose (13=1f 15=b910) with interaction on at the move. The server sent neither; it now sends both, and it also stands the player up when the move fails (Inferred). To check: use unstuck, then walk.

  • Our own voice service (2026-11-08, seen live with one player). New voice-server (config/voice-server.toml) and the voice prelogin in edge-http ([voice] of config/edge.toml). The game signs in, joins its map cell rooms within 0.2 s ("channel joined" in Game.log), sends speech while push-to-talk is held, and the player heard its own voice through the relay. Three fixes found with a trace of the voice SDK: the status answer carries the request id, the room presence names the occupant jid, and the bound jid keeps the SDK's +B account name (without it the game never saw itself in a room and showed "join failed" after 60 s).

  • Quest walk and play bot (2026-11-06). sim quest-walk plays every quest of the level with a test character and writes which end and where the others stop: 16,976 of 18,441 end. The GM lines !queststate, !questplan and !state show a quest's place, its next steps and the player's state. nw-testclient play runs a bot on the live servers through the client's calls: it leaves the tutorial, plays quests in the order their requirements allow, and plays activities. Seen working over the wire: level up, PvP flag, crafting, shrine fast travel, an expedition's remote entry and a town board take. Not played yet: groups (needs two bots at once), mounts (the summon key input), music (equipping an instrument) and inns (which id a check in names is Unknown). The bots log in through a second edge in password mode on port 8444, because the live edge uses Discord.

  • Test bots at level 65 in good gear (2026-11-06, tests only). New GM line !gearup: for each worn item it wears the best item of its kind (the same item classes, no fixed gear score, the highest MaxGearScore) at that gear score; the old item goes into the bag. A player's hit scales with its weapon's gear score, so a Soldier bot now hits with a gear score 800 tier 5 longsword in place of the gear score 60 kit sword. The bot's setup is !god on, !heal, !level 65, !gearup. Seen live on 2026-11-06: the setup lines ran, and a new Ranger bot finished 18 of 20 starting quests (the other 2: no hit landed on a Withered Grunt, and a mandolin step the bot does not play).

  • A town fast travel lands on the town's ground (2026-11-07, tests only). Live, a travel to area 30155 put the player at height 104, under the terrain at 111.4; the refused falling moves then put the player back at the shrine it had left, under that shrine's platform. Retail town and outpost travels arrive at the retail home point of their area (Monarch's Bluffs 19 of 19, area 30253 10 of 10, outpost 40325 12 of 12). The server now uses that point, and a teleport makes the new place the one a move back goes to.

  • Voice chat rooms follow retail (2026-11-07, tests only). From 7,404 retail room lists (405) of 556 captures: the list holds the 512 m squares that a 512 m box around the player overlaps (2 to 4, own square first; it held retail's list in 5,697 of 6,270 cases, the exact rule is Unknown), was the own square only before (retail's list in 496); the layer is 0 in the open world and a 16-digit id per instance (113 captures switched layers when entering an instance), was always 0; every 405 and every group room (4200, 312 of 312) answered a request within 1 s, so the server pushes neither. The test bot has a voice check (service, login ticket, rooms, join ticket). Real voice still needs a Vivox-compatible voice server; none exists for this client's SDK.

  • The inn home point carries its retail name (2026-11-07, tests only). Live, inn recall stayed unusable with its timer at 0. Our inn entry matched retail's in place (the innkeeper on the inn's InnInteract landmark), cooldown, use time and id ([17680737194352937251]0 is the Prydwen inn element's own id; correction 2026-11-08: retail never names it as the used point), but its name was empty; retail names it, for example @12_InnName (23 retail inn points, now a table). Whether the name is what the client needs to allow the recall is Inferred.

  • The shield comes out with the sword (2026-11-07, tests only). Live, the shield sometimes stayed on the back in combat. Our paperdoll maps always kept slot 27 sheathed, so the client's own draw could be undone. In 1,085 retail ledgers the shield of slot 27 is drawn and attached with a longsword or a flail from option 24 or 25, and stays sheathed with other weapons. The server now draws and attaches it with those weapons, and other players see it too.

  • Mobs stand on the floor at spawn (2026-11-07, tests only). Live, timber wolves near Prydwen walked 3 to 6 m in the air. Their spawn was 3.32 m over the floor, and the spawn landing only moved a mob down 3 m. Retail wolves of the same spawn stand 0.10 m over the floor. A spawn now lands on the floor at any height. 5,088 of 115,965 open world spawns were more than 3 m up. All 10 retail tutorial mobs are within 1 m of our floor, the ship deck too.

  • A login starts on the floor (2026-11-07, tests only). Live, a login sometimes dropped the player a few feet. The saved spot is the last client position, which can be in a jump; the server only fixed spots more than 150 m up. Retail's first login position is 0.00 to 0.08 m over the floor. The arrival now lands on the floor under it (ground or a building), or at swim height in water.

  • The fast travel kneel plays (2026-11-07, tests only). Live, the countdown ran but the character stood still. Retail starts the kneel itself: 40 to 80 ms after the travel call, the player's animation state gets sequence 5 (461 of the retail 3713 calls and 30 of 30 home travels). Our server sent nothing. It now sends that sequence. A rider first gets off the mount with 5937 reason 0, as in all 23 retail rider travels, and then kneels standing still. Live test 1 (2026-11-07): still no kneel, and after the arrival the sword and shield showed in the hands while the server held them sheathed. Retail stands the player still after the arrival (13=1f 15=b910 16=2d 18=00, 65 of about 100 arrivals) and turns the player's interactor off for the channel (all retail travels checked); the server now does both. Why the client did not kneel is still Unknown.

  • Fast travel to a shrine works again (2026-11-07, seen live: two shrines reached). Live, every shrine travel failed with "fast travel failed". The server found the place by the position the client sends, inside the place's radius. A shrine's radius in the level is 0 m, and the client sends a position up to 3.4 m away, so no shrine matched. In 751 retail fast travels (406 shrines, 122 settlements, 60 of type 22, 163 inn recalls), the type and the area id the client sends name exactly one level place every time. The server now finds the place by its type and area id. The test bot sent the place's exact position, so it hid this fault.

  • Free fast travel switch and a GM line for azoth (2026-11-07, tests only). New [fast_travel] free setting in config/edge.toml, next to [experience]: true makes every fast travel to a settlement or a shrine cost no azoth. The server writes it into the remote config as javelin.playtest-disable-fast-travel-costs (the client's own switch), and the sims read the same value, so the map and the server agree. Left out, it is false: the retail cost. No config file may set that key by hand. New GM line !azoth <amount> [player] sets the azoth, at most the azoth cap.

  • Town and outpost points on the map, and exact shrine points (2026-11-06, tests only). A scan of every home point list in 816 retail captures found 22 town and outpost points, 131 shrine points and 3 crow's nests. Each one has the same position for every character, so it is fixed game data. A town's point is added when the player first comes into the town's territory, and a new character has none. The server now keeps the towns each character has been in (world migration 0033) and sends their points with the retail position, name and cooldown. The shrine points now use the retail positions too: the old rule (2 m beside the teleporter) was wrong for 27 shrines of other teleporter models. Crow's nests are listed once charted. Not seen live yet.

  • Charted shrines and landmarks on the map (2026-11-06, seen live). A trace inside the client showed that the map counts a shrine charted only when the player's home point list holds a shrine point in its territory. The server now lists each charted shrine. A landmark is now charted at an entry after its discovery, as in 66 retail cases. Live: learned shrines show as discovered, and two landmarks changed from "?" to their icon.

  • The change mount screen opens (2026-11-06, seen live). A trace inside the client showed the cause: the screen asks for the store catalog while its script still loads, and the client skips a loading script when the "catalog ready" signal comes. The server answered in 12 to 18 ms; the screen finished loading about 30 ms after it asked. Retail answers over the internet and is slower. The login server now waits 1 second before the catalog and store answers.

  • Shrine and town names on the map (2026-11-06, seen live). A trace inside the client showed the map's hover script stop on every shrine and town icon: it asks for the territory's governance (taxes, upkeep) and got nothing, because the server never sent the land claim manager state. Retail sends it at login on a world entity it first creates with a spawn card (the same card in four retail captures): 13 claims, their positions and one tax set for all. The server now sends that card, its position and the same claims, positions and taxes once per client, with no company owner. The first try sent the claims without the card and changed nothing.

  • Character select shows the worn armor (2026-11-06, seen live). The screen draws the look the login server sends; it was always the character creation look, with the starter preview armor. Retail's look holds, per armor slot, the checksum of the appearance the character wears (skins too; 427 slots of retail login data checked). The game server now saves that look at every item save and leave (world migration 0032), and the login server writes it into the character select look.

  • Spirit shrines are sanctuaries (2026-11-06, tests only). Retail puts its Sanctuary effect on a player at a shrine: a scan of 1,080 retail captures found every fast travel to a shrine arriving with it on, and 878 walks across the edge (off at a median of 7.6 m, on at 5.4 m). The server's sanctuary rule (it holds back or takes off the PvP flag) now covers 6.5 m around each of the 133 shrine landmarks, as well as the towns. Still open: the server never sends the Sanctuary effect itself (not at towns either); retail sends it in the lightweight map, and which of its two data rows sets that is Unknown.

  • Play bot plays steps as a player (2026-11-06). It gathers a quest object or a gatherable for a step's item with a client's gather interaction (it named every node with an empty id before, so the server tied that id to one node: "Depleted", then "out of reach"). It fights the placed mobs when a step counts one spawn group (a GM mob is in no group), heals after !god on (a mob killed it at its landing place, and a dead player wakes no mob), and fights on while its hits land (a level 34 bear has 8,776 health; a starter weapon hits for 42). A kill step whose fights saw no mob or killed none is "not played", not "broken". Live: 04A_Side02_01_ObeliskNotes, 04A_Side09_01_LostAlchemy, 1111_0201_deluge, 02A_Side06_01_Bears and 1104_0201_waterfalls turned in, and the harvest activity completed. The sim logs mob hurt and mob healed at the end of its reset at debug level.

  • Audit of the whole code and its fixes (2026-11-05, tests only). The audit looked for stubs, fake success answers, demo data and half-done features. The findings and the state of each one are in local-data/findings/2026-11-05-honesty-audit.md. Items now keep everything they had (perks, gear score, durability, dye) when they move in a trade, a trading post sale (world migration 0030), a drop or a loot bag, and a full bag no longer loses anything. The server checks what the client claims. A gather or a lore read needs a node or note of that kind nearby in the level data, and the trading post opens only at a settlement. Craft fees, standing points, camp skins and voice channels are checked as well, and music notes are judged against the game's 655 note charts (content-tool music-charts). A quest step the server cannot run now waits instead of finishing at once; a step with nothing in its data still finishes, as on retail. A ban ends a live session. Social saves retry instead of being dropped, company coins can no longer vanish (world migration 0031), and privacy settings are stored and followed (global migrations 0006 and 0007). Mobs react to stuns and to their own tree's buffs. The PvP flag waits and counts down as on retail. Worn armor and weapon gear score set damage, and each start rolls a new dice seed. Queues and war sign-ups are refused until the PvP modes and wars exist. Still open: attributes in damage (the formula the data suggests does not match retail hits), dungeon doors, four quest step kinds, and projectiles and beams fired by behavior trees.

  • Open world capture survey and the first fixes from it (2026-11-05, tests only). All 1,071 open world captures were read. 238 of 265 kinds of client calls reach a sim reader, 168 of 194 kinds of server messages are built, and 70 of 118 kinds of world states are filled. The charm slot call (6983) read 8 bytes too many and failed on all 17 retail calls; it is fixed. Leaving a queue (1066, 2385) and leaving a game mode (3309) now work. Dropping a quest (3836) takes it out of the journal without marking it done, in 6 bundles as on retail. Creature triggers (3135) now come from the mobs' behavior trees and action lists (971 slice trigger components, 1,141 trigger activities). The incapacitated state (670) is set at death's door. The mob copies were built again with every retail state, and the sim now reads a state that has no reader of its own by its layout.

  • Held-aim abilities and Mannequin tags (2026-11-04, tests only). A key press test (IfActiveAbilityMoveName) now counts back its own BackTicks frames; without the attribute it sees only the frame of the press (Observed: FUN_142bec920 fills the new test with zeros). Before, every test saw a press for 680 ms, so Shooter's Stance left its aim at once. Each action's SetMannequinTag activities now start and end with their IfThenElse branch, pick their first named case that holds, and set or unset their tag on OnEnter and OnExit; a tag stays on until something unsets it. Before, every named tag counted as set while the action ran. Result: Shooter's Stance readies, aims, shoots on a click and starts its 18 s cooldown, then reloads; Stopping Power starts. The spear's Javelin throws on a click from 433 to 600 ms after the key, as its list says (it clears the press when its ready step starts). The ability table is made again (content-tool player-abilities). Checked against the retail musket capture: a key is a tap of about 130 ms (ability3, ability3_hold, ability3_release). Tests: shooters_stance_aims_and_a_click_shoots_and_starts_its_cooldown, every_weapon_ability_starts_from_its_key, an_ability_move_test_counts_back_its_own_frames, tag_activities_keep_their_changes_branches_and_cases.

  • Privacy settings service (2026-11-04, tests only): game.<domain> answers POST /players/<persona>/games/new-world/privacy-settings with the retail default of each known setting asked for, in the retail order (the retail request gets the retail reply byte for byte); the remote config fills omni.privacy-settings.client-endpoint. A change of a setting has no capture and no route. Notes: docs/re/2026-11-02-shop-services.md section 2.2.

  • Transmog token counter (2026-11-05, tests only): the inventory's token counter spun forever because the entitlement list had no Transmog_Token. The list now holds it with 0 tokens (Inferred: this server grants and charges none), and its last page carries "paginationToken": null as on retail.

  • Store answer for the change mount screen (2026-11-04, tests only): one empty static slot per hidden store, offers named by their mount's store product (47 of 52 store mounts have one), 99 % off on a free offer, 304 to the client's x-amzn-if-none-match. Live check still needed.

  • Lost progress after restarts (2026-11-04; tests, and the new build is on the local stack). The database held every place the server had seen you find: all 17 discoveries and charts in the logs are in Tium's saved bits. The places from the morning of 2026-11-03 (Brysedd Overlook Shrine, Withered Farm, Withered Mines, a camp) never reached the server. The client only sends "entered" for a place it does not have, and our phasing bug (fixed in 2beb44ee that afternoon) kept it from sending one there, so visit them again. Four save gaps are fixed. First, every server program now stops cleanly on SIGTERM as well as Ctrl-C. Before, kill, systemd and Docker ended them at once and the sim skipped its last save round (live check: the sim exits with code 0 on SIGTERM). Second, a player moved to another sim after its sim was lost now keeps its achievement bits, so new finds are set and saved. Third, after a handoff the new sim saves the items and quests it took over, which the old sim never saved. Fourth, a handoff keeps the PvP flag and the quest auto-pin setting. Notes: findings/2026-11-04-lost-progress-audit.md.

  • Admin site redesign (2026-11-04, local build only, not on the VMs yet): every page now looks like the game's map screen. A dark tab bar on top; maps on parchment with dark edges; slate panels with a gold top edge and serif capital titles; square buttons. Live keeps the map full size, with a tool column on the left (Selected, Events, Players, GM tools, Server, Key) and the server standings at the top right. Home, GM, Studio, Records, Scripts, To-do, Captures, Map, Live 3D and the login page use the same panels. Night and day themes, system fonts only. How to use each page is in docs/admin-site.md.

  • Admin site fixes (2026-11-04, local build only, not on the VMs yet). Map: the Mob spawns, Gatherables and Landmarks boxes showed nothing until you zoomed in very close; now a zoomed-out map shows a square per 256 m cell where those points are (/api/world/spawn-cells), and zoomed in shows each point as before. GM page: it now lists the players online on every sim and gives the picked player the same controls as the Live page (teleport, heal, god mode, kill, kick, items, quests, level, mastery, coins), with a line on what each admin rank may do. Studio: a "How Studio works" panel. Live 3D: a low-poly wire world (ground from the height grid, rocks, buildings and props from the level collision file through /api/world/shapes, the biggest shapes first up to 200,000 triangles), "Go to x, y" so the page shows the world with no one online, and a switch for the map colours. Trees and bushes: the tree and bush gatherables of the world file, as low-poly cones sized by the size word of their name (our choice of heights). The region.vegetation files were decoded (note in the research repo) and hold only ground cover (grass, brambles, small rocks, ferns, ivy), no trees; trees that cannot be chopped are not shown.

  • Admin home page server figures (2026-11-04, local build only): a Server panel shows the memory used of the total, the memory use, the processor cores and the processor use of the machine the admin runs on (/api/host, read from /proc every 3 seconds), each with a bar.

  • Admin Live 3D look (2026-11-05, local build only, not on the VMs yet): the ground is now flat low-poly faces coloured by height and slope (seabed, shore, grass, highland, bare peaks, cliffs), with a soft wire on top and a small light/dark change per face. A coarse ground (32 m faces, 8 km square) goes out to the horizon around the fine one (6 m faces, 1 km square), with a sky that fades to a hazy horizon and fog. Rocks and buildings are lighter than the ground, trees have two tiers of leaves, and the Go to camera is lower so the horizon shows.

  • Admin site through a relay (2026-11-04, live: the user logged in with Discord at the public admin name): blighted-admin relay runs on another machine and takes the browsers; blighted-admin serve with [access.relay] runs on the game machine, connects out to it over TLS where each side checks the other's certificate (blighted-admin relay-keys), and serves every admin page and the live stream through it. No port opens into the game machine; a site behind a relay serves no capture data. Set up 2026-11-04: relay on VM 600 (port 9190 for browsers, 9191 for the agent), agent on VM 601; public at the admin name through NPMplus on OVH with a Let's Encrypt certificate; the login page, Discord login start, host check and login check answer from outside. A site with Discord login now offers only Discord: the name and password form is gone and its route answers "password login is off". The login page layout is fixed (it sat in the narrow menu column).

  • Store mounts and a Marks of Fortune wallet (2026-11-04, tests only). The in-game store lists the 52 store mounts from the game data. [shop] enabled turns the store on or off. With [shop] free on, every mount costs 0, as in retail's last weeks (the capture mount-menu-buying-all-store-horses shows 35 mounts bought that way). With it off, a mount costs mount_price, or its own price when one is set, paid from the account's Marks of Fortune. blighted-admin give-marks gives an account Marks. When the game buys a mount (898), the sim answers 5936 right away. It then pays and saves the unlock to the account in one transaction (account_entitlement and account_wallet, global migration 0005) and answers 1285. A wallet that is too low gets no answer. A bought mount works on every sim and after every login, and the store's entitlement list shows it. content-tool store writes the store table that edge-http reads ([shop] store_table). Each store call is logged with its header names, to find out what the change mount screen waits for. What retail sends for a refused purchase is Unknown.

  • Experience settings (2026-11-04, tests). Every experience multiplier is 1.0 by default, which is retail without an event. Every retail capture had the shutdown event running (character, trade skills and weapon masteries at 2, territory standing at 3), which is why a new character reached Riding 39 where the mount quests give Riding 20. The [experience] section of edge.toml sets each multiplier on its own, with a comment above each one: character, umbral_crystals, 19 trade skills, 16 weapon masteries and the standing of 14 territories. The server writes them into the remote config the game reads (javelin.xp-multipliers), and the sims read them from there. No settings file may set them itself. The local test server runs the live event values.

  • Saved servers in the launcher (2026-11-04, tests; the window was checked on Linux in the Night and Day themes). The Server section lists each saved server with its name and address, and the selected one is raised. A click connects. A new address is saved once it connects, under the server's own name. Each server keeps its own launcher login, so switching servers logs you out of nothing. "Saved as" renames the selected server, and Remove forgets it along with its login. An older settings.json with one server and token becomes the first saved server. Windows and Linux share one code path with no system-specific part, but the Windows build was not compiled on this PC (it has no MinGW C compiler for ring).

  • Admin tools for Discord accounts (2026-11-04, tests only): blighted-admin grant-rank and revoke-rank, and the ban and rank forms of the GM page, find an account by its login name, Discord user id or Discord username; the rank list shows the Discord username. A server-mode admin site with [access.discord] has Log in with Discord: only a Discord user with a game account and an admin rank gets in, and the login writes an audit row.

  • OpenSSL built into the programs (2026-11-04, tests only): edge-http, rep-gateway and nw-testclient no longer need the OpenSSL of the host, so one build runs on this PC (OpenSSL 4) and on an Ubuntu 26.04 game host (OpenSSL 3.5). The DTLS, edge and gateway tests pass.

  • Mount food from a quick slot (2026-11-03, tests only). Pressing quick slot key 1 to 4 (Use_Quickslot_1 to 4) uses the item in slot 14 to 17. Before, the server read only key 1, and through a different input. Mount food (IsMountConsumable) works only while riding and is used 690 ms after the press, as in retail (9401_tutorialfood-Hungry-as-a-horse: pressed at 67.12 s, used at 67.81 s). It ends any mount food already active (RemoveStatusEffectCategories), fires its game event (the quest step 9401_TutorialFood, and Riding 2,500 for MountConsum_GruelT1) and plays its effect's visual script (608, as retail does; the rule that this follows the effect's ShowTextInDamageNumbers is Inferred). A game event with a LootLimitID counts toward that limit, and once the limit is reached it fires its limit-reached event instead. A consumable with a RequiredInactiveLootLimitID is refused at that limit, so mount food gives riding experience 3 times a day (Mount_FoodDailyXP_Limit).

  • Mount screen, rally checkpoints and riding (2026-11-03, tests only): the change mount screen gets the isChangingMount echo it waits for; a race task counts each checkpoint; a rider's server body stays on the floor, keeps its mount's speed and follows a rider's camera (retail ride replay: 1.11 m off instead of 2.95 m).

  • Mount summon after a login and quest gaps (2026-11-03, tests only): an ended summon cooldown is sent as 0; each store answer holds one hidden store, so the client's catalog finishes and the change mount screen can stop spinning. Quest steps that could never finish: food status effects fire their game event (the mount food step 9401_TutorialFood, and its riding experience), a region gatherable's gather has its variant's interact tag (the Gawain crown of 12A_MSQ_24_DefeatGawain), achievement steps read A || B and !A expressions (90 tasks), POI steps read a tag list (4), quest success events (2) and recipe game events (2) reach the quests, faction rank steps read the faction's progression (24). Still open from the audit: encounter result events (45 tasks), encounter-spawned gatherables (9), PvP kill and fort events (7), volumes in deferred slices (12), kill-contribution mobs with no spawn (51).

  • Discord allow list (2026-11-03, live for a listed user: Discord login with the list and the server check on, game start, characters there; a refused user is tests only): [discord] allow_list (off by default) with allowed_user_ids; while it is on, only those Discord users can log in and make accounts, and a user taken off the list is refused at Play even with an older launcher login. New Discord accounts have no staff rank (test). The [auth] and [discord] options of config/edge.toml now say how to turn each one on and off.

  • Password account to Discord (2026-11-03, live: a linked password account opened by Discord login with its characters; contact details saved): edge-http link-discord --username <name> --discord-user-id <id> points a Discord user at a password account, so Discord login opens its characters, ranks and account items; nothing is copied and the password login stays for the admin site. A Discord login whose new account has no characters moves over; one with characters is refused.

  • Discord login keeps contact details (2026-11-03, tests only): the login asks for identify email and saves the Discord username, email and email-verified flag of each Discord login, written again at every login, so staff can help a player get an account back (global migration 0004). A new [discord] guild_id lets in only the members of one Discord server: the login then also asks for guilds.members.read and refuses users outside it. Run edge-http migrate after this update.

  • Four live bugs (2026-11-03, tests only): the inn check in is answered (it uses the open's interaction id); the mount quest's torches light when the player walks within 9 m (the detection sphere of 238 quest objects); a water gather ends with the own done state, so its animation stops; shrines are charted, and every phasing area has a phasing entry so the client reports entering the areas inside them.

  • Server ports set in the config (2026-11-03, tests only): public_https_port and public_ping_port in config/edge.toml (default 443 and 80); the links to login.<domain> and game.<domain> name the HTTPS port when it is not 443; the launcher takes example.org:8443; the launcher's loopback proxy sends tunnels to that port and the region ping to the server's ping port, and now runs on Linux too for a client patched with --aws-proxy.

  • Mounts from the quest (2026-11-02, tests only): the mount quest runs to its end on the game data; a quest's success event now gives its categorical progression (Riding 500) and achievement; a game event's AchievementId is earned when it fires, so the reward box gives the horse; a jump on the mount sets the 1 s regen delay. A player taken from another sim keeps its achievements, so achievements set after a sim border reach the client (before: they were lost).

  • Janszoon and mob attack picks (2026-11-02, tests only): Janszoon slams his anchor up close (retail playthrough 819480 ms); a UtilitySelector keeps its last pick only while it is in the running plan (client FUN_1426355b0), so mobs mix their attacks again.

  • Shop services rerouted (2026-11-02, live-checked on Linux): remote config fills omni.fcs.endpoints.catalog-service, entitlement-service and transaction-service with game.<domain> (the same fill as the leaderboard endpoint); the game host serves an empty catalog, no stores, no entitlements and 202 for a sync, with retail ETags and 304.

  • Region ping rerouted (2026-11-02, live-checked on Linux): dynamodb.<region>.amazonaws.com is a mirror host; edge-http answers GET /ping with the retail body on its plain HTTP listener; the Windows proxy passes the plain ping to the server's port 80; --aws-proxy patches the pinger's client too (fifth cave, found on our NewWorld.exe).

  • News hosts rerouted (2026-11-02, live-checked on Linux): the news host and its image host are mirror hosts; edge-http serves our own message of the day, news stories and menu tiles from config/cms/ as S3 objects with ETags (shared with the remote config sets); the server refuses to start without both hosts in [aws_mirror]; --aws-proxy patches the news client too (fourth cave, found on our NewWorld.exe). The tracked files have no news.

  • Sim tick speed (2026-11-01, bots only): with 1,100 bots, the busiest sim went from about 33 to 36 ms a tick and 237 to 375 late ticks in 90 s down to 20.5 to 23 ms and 0 to 1 late ticks in 120 s. It is not fully fixed: in the last run, 9.6 % of its ticks still took longer than 33 ms. The test runs used 8 tick threads (LIVE_STACK_TICK_THREADS=8; the script default is still 4). A mob now keeps its reach answer until it or its target moves 0.5 m; an A/B run and a profile showed that check took half the mob time. Tick part times are in the metrics.

  • Gather bots (2026-11-01): nw-testclient gather logs in bots with an archetype and start tools, walks them to the level's trees, plants and ore, and gathers as the client does. In the last run (100 bots, 7 min, next to 1,000 walkers) every bot gathered, 1,917 times in all. Two of its checks still fail: tick time on the busiest sim, and moves the server refuses from the walker bots. The 30 min run before the tick fixes gathered 2,697 times, but 7 bots never gathered.

  • Blocks and status effects from the data (2026-11-01, tests only): unblockable attacks pass a block; empower buffs raise block stamina; weakness, stamina regen, food attributes, crits, heal mods, armor rend by damage category, health regen, stun, root and silence, death's door removals, death effects, first stacks.

  • More database saves (2026-11-01, tests on the database): camp rotation and blueprint, mount summon cooldown, potion and food cooldowns (migrations 0027 to 0029); trading post, trade and shop jobs save their players at once.

  • Overnight 2026-11-01 (tests only, not live-checked): food and potion buffs saved over a log out and a sim border; a first try at the status and dev sites (deleted 2026-11-02) and the player round trip time; the trading post's part buys, settlement ids and buy-order storage; all 15 weapons' abilities checked on the real lists (83 of 91 start; a crash with two-list weapons fixed); boss summons; the movement review.

  • Dodge, mobs and death's door (2026-11-01, not live-checked): a dodge in an attack waits for the attack's dodge cancel window while the key is held (retail sword: dodges at 17, 566, 1182 ms taken, at 252 to 414 ms refused; all fit); mobs respawn after 62 s (retail; the data says 360 s), play their spawn animation again when a player comes back to a mob that was left alone, and notice a player within 3.8 m from any side; a lethal hit puts the player at death's door for 120 s (1 s delay, a hit after it kills, a revive brings it back), not in outpost rush, capture the flag, 3v3 or battle royale, nor to a killer 10 levels above, with the retail vitals blocks.

  • Weapon abilities and mana (not live-checked): the server runs each weapon's ability list from the game files; a key press starts the mapped ability, its follow-up actions, cooldown (sent as the retail 2932 bytes) and mana spend; spells fly to the first target on their line, open areas that last their Duration and clear on exit or end, and open their second spell where they land; upgrades count from spent skill points, worn perks and Focus thresholds (Focus 100: mana max 110, as retail; Focus 25: cooldowns 3 % shorter). Fixed on the way: sword abilities took a knife tool's animations; Sacred Ground cast twice and started no cooldown (2026-10-31).

  • Hunt test passes all 11 checks with 30 bots (1,748 hits, 276 mob deaths; before: 0 hits). Fixed in the sim: every kept spawn keeps its own AI (the encounter filter had shifted profiles and patrol paths to other spawns, so mobs reset their fight all the time). Fixed in the test client: own hunt accounts, the start nearest where a bot appears, mobs kept until their slot stops, the bot's own place, aim at the mob, only real mobs (not rocks or nodes), mobs on the bot's ground, a mob left after 5 swings without a hit; new checks for the start and for messages that do not decode (2026-10-31).

  • Busy sim speed: the open map leaves out the encounter spawns of the encounters it does not run (the forts' invasion rosters, up to 2,226 mobs on one point, and the breaches' seven tier copies of each mob; 59,214 of 115,965 spawns), mob minds use all their threads from 128 awake mobs, and the collision rays lost a hash set per ray. With 28 bots: late ticks 500+ to about 4, every bot logs in and stays (2026-10-31).

  • Player max health grows with the level and Constitution as retail: 856 + 1.75 x level squared + the Constitution health (9 retail points of two characters fit); the client gets the new max after a level up or a spend (2026-10-31).

  • Storage and trading post: an item gets a new id on each move, the storage seen from afar and the storage notes match retail, and a trading post search less than 1 s after the last one is refused as retail (2026-10-31).

  • Fast travel costs azoth as retail (20, or 10 within the player's territory; inn and home travel free); a mount summon is refused in combat and cancelled in the air as retail (2026-10-31).

  • Crafting, dyes and salvage: the item notes carry the last storage search, a craft sends one note per item made, and the bag sync reasons match retail (2026-10-31).

  • Status effects: the out-of-combat regen stops at full health, a player gets no heal number for its own heals and potions, and food heals scale with the held effects as retail (2026-10-31).

  • Test client: nw-testclient chat says a line in area chat and checks the answer (a GM command's system lines, or the line itself); a test race in the view tests is fixed (2026-10-31).

  • Recipes: a salvaged schematic sets the achievement its recipe asks for; daily and weekly recipe cooldowns count crafts, refuse past the quantity, are saved and go to the client in the crafting state as retail (2026-10-30).

  • Gear perks: a worn item's perks hold their status effects (PerkData.Affix to AffixStatData.StatusEffect), potency 1 plus the scale per gear score from 100 (fits the retail bag perk 2.508 at gear score 430) (2026-10-30).

  • Factions: the faction pick (3161) joins or changes the faction, saved; the faction state change goes as retail; the join quest step ends; quests and missions check RequiredFaction (2026-10-30).

  • Quick courses: 86 course paths from the game paks (content-tool quick-courses); a course starts on a mount with its quest step, counts node hits, runs its timer and ends with 6065 as retail Hermit's Rally; the house quest step (2026-10-30).

  • Ranged block: a mob projectile passes a block without CanBlockRanged; a shield or weapon that can block it uses its ranged block scales (2026-10-30).

  • Quest steps: fishing (equip, cast, hook, reel, catch rules, quest fish), salvage, weapon and item family, refine, song and dungeon steps; go-to by location, give by interact; mission go-to, territory, patrol, timer and transport values. Skipped task rows: 146 to 85 (2026-10-30).

  • Gathering and crafting: the sickle slot for harvesting; held effects add gather speed (EFF_*) and craft gear score (MGS_*, MaxGS_*); recipes check their required, hiding and blocking achievements and set their unlock and first-craft achievements (2026-10-30).

  • Mob projectiles: a mob's CAGE-RangedAttack clip fires its weapon profile's ranged attack (range, radius) with its projectile slice's flight, led at a moving target; it hits where it lands. Janszoon's anchor now hits for his Anchor_Toss row (retail: 40 health, 1.53 s after the throw); 323 ranged attacks and 135 mob projectiles in the AI data (2026-10-30).

  • Chat probation: the world server sends accountInProbation after the spawn, as retail; an account younger than 72 hours is in probation unless it has a CSR, GM or head admin rank. Before, no account could use global chat (2026-10-30).

  • Player camps: a placed camp takes 5 wood and 1 flint, stands in the world as the retail capture shows, is a Camp crafting station and is the respawn point (its slice SpawnPoint, within 0.01 m of retail); placement fires BindCamp; !mastery Camping 2 sets the rank for tests (5e8240ad, 2026-10-30).

  • Block stops mob hits: the hit that takes the last stamina breaks the guard (half damage, down until the key is released); no stamina regen while held; 2218 only in the tutorial; mob hits from another sim take the block (7eae997a, 2026-10-30).

  • Janszoon throws his anchor: his missing tree is built from the great axeman's tree and the undead officer's toss (6 to 10 m, 6 to 9 s cooldown; Inferred from the retail throw at 8.7 m); the toss hits with his table's Anchor_Toss_Windup row (4ea518d8, 2026-10-30).

  • Janszoon aggro and leash tests on the real beach ground: he aggroes on a player in his face and keeps a player 10 m away; the sim logs each mob target change (7e2193e1, 2026-10-30).

  • Mobs walk home after a lost fight on slopes: a distance check beyond its height limit now counts as far (Janszoon stood 37 m out, 2.3 m below his spawn) (972b150a, 2026-10-29).

  • Mob lunges follow the ground; mobs far from home stay awake and their trees leash them home (DoesLeash) (3f6696dd, 2026-10-29).

  • Janszoon fights: his tree gets its difficulty tier from his slice, and mob attacks take their hits from the weapon's animation database when the body's has none (450 creatures carry one) (d33f65d1, 6f76390f, 2026-10-29).

  • Crafting: no "Crafting attempt failed" message; verified live on the skinning knife (ba675453, 2026-10-29).

  • Mobs walk around a rock or crate that blocks their straight way (Janszoon, Bridget); a target behind one solid counts as reachable (6f76390f, 2026-10-29).

  • Terrain cookies: the 5,244 height stamps of the open world's capitals are put into our terrain; retail player feet on our ground 586,786 to 615,209 samples in 34 captures (4c1a219f, 2026-10-29).

  • Admin live 3D map: /live3d orbits a selected player, shows terrain and every player and mob inside the 150 m render radius with name, HP and target lines (01bc7e5b, 2026-10-29).

  • Admin live 3D map rework: the map is no longer mirrored (north was drawn south), the in-game map picture lies on the ground, the sea shows at its level, mobs stand at their real height (the sim snapshot now sends mob z), markers glide between updates, the camera follows the player and a click follows another player; the Live map takes a click with up to 6 px of hand movement (was 2 px) (282a0c74, a7ddae72, 2026-10-29).

  • Records page lists all entries on load and reloads when you change kind (8ff0e1da, 2026-10-29).

  • M0 Project setup, licences, checks, Docker infrastructure.

  • M1 Game data pipeline: all 2,250 datasheets and 285,031 rows load back.

  • M1b World data: 41 checked world files.

  • M2 Login server and launcher: the real client reaches character select.

  • M3 Gateway: the client completes DTLS and registration (exit test 2026-09-02).

  • M4 Sim: two clients see each other move (exit test 2026-09-04).

  • M5 World director: 1,000 bots cross cell borders with handoff (exit test 2026-09-04).

  • M6-A Combat engine: 8 sims with every mob, 5,000 bots (exit test 2026-09-04).

  • M6-B Combat on the wire: 0 codec differences on 695 ledgers, 90 bots (exit test 2026-09-04).

  • Rubber banding root cause fixed: own state numbers run 128 ahead (6d508fc, 2026-09-26).

  • Thorpe fight: arena teleport, grab pull, collision scale fix (2026-09-26).

  • Capture decoders read 99.993% of 25.3 million bundles (2026-09-26).

  • Corpses go at retail times (20200c8, 2026-09-26).

  • Tutorial chest marked looted (04dd5d4, 2026-09-29).

  • Journal auto pin works, you confirmed it live (c21828b, 2026-10-01).

  • Target lock works on mobs: lock, release, wheel cycling, you confirmed it live (110ccc0, 2026-10-01).

  • Demon Storm turn-in works live: the watchtower area ends in its point of interest (d1ea27a, 2026-10-02).

  • Select screen shows the saved level (1073a00, 2026-10-02).

  • Many quests at once, with the client's journal limit per quest type (4e91ac7, 2026-10-02).

  • Interact steps: quest objects and town buildings (4e91ac7, 2026-10-02).

  • Town board missions: take, the mission's items, kills and place, turn-in (90340f6, 2026-10-02).

  • Game mode, give item and carried item steps (5d9afe6, 2026-10-02); patrol steps (d8a2b1f).

  • Quest trigger volumes from the level data: 772 in the open world (c0f5e5b, 2026-10-02).

  • Level steps and talk steps (bd33ce66, 2026-10-02).

  • Gather steps that count only real gathers (33cd74e2, 2026-10-03).

  • Cyclic object steps: turned stones, staff rituals (14a6125d, 2026-10-03).

  • Temporary unlock steps (0dbe1ac7, 2026-10-03).

  • Multiple recipe craft steps (7e4e45e3, 2026-10-03).

  • Fix: map pin steps no longer skip the real step (93fa629e, 2026-10-03).

  • Objective, use item and territory steps (d7886c1c, c26fde84, 70f2533c, 2026-10-03).

  • Fix: quest items from loot-container objects (Truffle Fever) and kills by spawner category (ed5044db, 956d6a8b, 2026-10-03).