| 1 | #607Each group event recipient reads the cached event table once per transaction.The event GC keeps the table small, so the cost has a ceiling. One shared snapshot per transaction removes the repeat. Confidence: medium. Issue updated 2026-10-03. | 2 | 2 | 2 | 2.0 | Ready Claude | Collect one transaction's rows once per source and give each recipient its slice; prove one read per transaction in a test. |
| 2 | #608A path renewal mid-leg starts the new spline from the stored point, which can lag the rendered one.The #603 stop rule covers stops but not renewals. The 4 yd persist rule makes the lag visible. Confidence: medium. Issue updated 2026-10-03. | 2 | 2 | 2 | 2.0 | Ready Claude | Start a renewed leg from the stop_on_leg point, with the obstruction check, and add a test that renews between ticks. |
| 3 | #60The two historical crashes at about 500 simultaneous disconnects have no rerun, so Gateway availability under a mass disconnect is still unverified.Pre-auth deadlines (#410), dead-client reporting (#449), and World Session fencing (#471) changed failure and cleanup paths, but none of them is a Runbook B run. Per-connection memory fell in earlier work, so the crash may be gone. This still gates #64 and any drain design. Confidence: high. Issue updated 2026-08-11. Blocked by - A controlled 500-client load environment (Operator-gated)
- No current Runbook B evidence is attached
PR #410 PR #449 PR #471 | 5 | 4 | 3 | 6.7 | Verify existing work Human | Run Runbook B twice on a release Gateway at the current main commit. Record exit status, kernel OOM or signal evidence, file descriptors, task counts, session cleanup, and recovery, then close or file the crash. |
| 4 | #424Motion delivery may stop until the Gateway restarts, but the original warning also fired during healthy mover-only traffic.PR #437 moved the diagnostic ahead of AOI audience selection and added per-Shard queue, callback, subscription and pump signals, so the old warning could be a false positive. No Gateway relay change since then targets the 15-hour freeze, and no new capture exists. The nightly backup timer that restarted the Gateway is now disabled (docs/research/playerbots-client-acceptance.md), so long-running processes are more likely. Speculative re-arm code would hide the missing diagnosis. Confidence: medium. Issue updated 2026-09-04. Blocked by - No current reproduction captures a stopped stream with the new diagnostics.
- A real-Realm capture needs a named host and explicit authorization.
PR #437 | 5 | 5 | 4 | 6.2 | Verify existing work Human | On the next occurrence or a controlled long run, capture the per-Shard queue, callback, subscription and pump signals, and peer visibility, before choosing recovery behavior. |
| 5 | #77Gateway still holds one blocking thread per World Session, and no seat or movement-cost measurement exists for the current revision (shared Coordinators, 40 ms movement batching, in-memory cell index).The old bottlenecks named in the issue (per-player connections, distinct AOI query strings) are retired by #81 and PR #244. New bot-population work (PR #578, PR #587) measured sessionless Package bots, not Gateway World Sessions, so it does not answer the 525-seat question. Confidence: high. Issue updated 2026-08-11. Blocked by - Fresh current-revision capacity evidence from #59.
PR #244 PR #247 PR #578 PR #587 | 4 | 5 | 1 | 20.0 | Verify existing work Claude | Use the #59 run to record seated World Sessions and movement cost on comparable hardware, then close or rewrite this parent from that result. |
| 6 | #88Movement batching is live: gw_movement_batch exists, the Gateway flushes every 40 ms in calls of at most 128 entries; only the approved 500-mover acceptance run and a real-client check are missing.The issue title is already implemented (PR #234). docs/movement-batch-acceptance.md defines the load and real-client checks, and they have not been recorded. Tune only if the latency tripwire fires. Confidence: high. Issue updated 2026-08-11. Blocked by - Needs an approved synthetic load driver and a disposable Realm.
- Visual acceptance needs a stock client.
PR #234 | 4 | 5 | 2 | 10.0 | Verify existing work Claude | Run docs/movement-batch-acceptance.md on a disposable Realm with at least 500 movers, record batch factor and both latency signals, then close the issue or tune one lever. |
| 7 | #59The old 150 and 371 crowd numbers still predate the relay, subscription, and heartbeat changes, and no Runbook A run has been recorded since.Many changes since the issue was filed (#421, #437, #449, #578, #587, #593) touch the load path, and bot population work now measures server-side capacity only, not Gateway egress. The Gateway now samples all four Shards and prints SHARDLOAD, QUEUESTAT and AOISTAT, so a run gives more signal than before. Playerbots capacity figures do not replace Runbook A. Confidence: high. Issue updated 2026-08-11. Blocked by - A controlled release benchmark environment (Operator-gated)
- Current end-to-end capacity evidence is absent
PR #421 PR #437 PR #449 PR #578 PR #593 | 4 | 5 | 3 | 6.7 | Verify existing work Human | Run Runbook A (STAGES=150,250,371,450, release build) at the current main commit and record Gateway CPU, delivery ratio, writer occupancy and RSS with exact revisions. |
| 8 | #86Per-viewer motion supersession is in place, but no one has re-measured dense-crowd login starvation since the shared WorldView and 40 ms batching landed.MotionPending keeps the latest motion row per mover for each viewer and queues one flush. No dense-cell interest cap or login-priority lane exists in gateway/src. The old 2026-08-09 figures predate PR #244 and PR #234. Confidence: medium. Issue updated 2026-08-11. Blocked by - Issue #59 crowd measurement is open.
- A dense interest cap changes visible behaviour and needs maintainer approval.
PR #234 PR #244 | 4 | 5 | 3 | 6.7 | Verify existing work Claude | Run the dense-crowd measurement from #59 and record login completion, queue depth, relay latency, CPU and delivered motion. Add a priority lane or interest cap only if starvation reproduces. |
| 9 | #105The repaired wire-harness suite is pinned (now alpha.13); one full run on a disposable Realm is still missing, and the known group-loot scenario will fail on its missing damage step.Wire-harness PR #6 fixed scenario path resolution and PR #446 pinned it; the pin has since moved to alpha.13. Agents already run the Headless Client on a local dev up stack (PR #531), so the full run does not need a production host. PR #531 shows test-group-loot.sh fails before its first kill check on current main. Confidence: high. Issue updated 2026-09-07. Blocked by - Needs a disposable development Realm.
- test-group-loot.sh needs a damage step (see #84).
PR #446 PR #531 | 4 | 5 | 3 | 6.7 | Verify existing work Claude | Run the pinned full suite on a local disposable dev up stack, keep every scenario result, and file separate fixes for real failures such as the group-loot damage step. |
| 10 | #55Residual crowd disconnects remain unclassified; no new reproduction exists and the Gateway relay, fencing, and heartbeat paths have changed a lot since the runs were made.The issue is parked pending a live run with kept logs. PRs #421, #449 and #471 changed the paths it names, so the churn may already be gone. The close reason line still exists at gateway/src/world/mod.rs:1968 at a different line than the issue cites. Confidence: medium. Issue updated 2026-08-11. Blocked by - A controlled load run with kept Gateway logs (Operator-gated)
- No current reproduction is attached
PR #421 PR #449 PR #471 PR #593 | 3 | 3 | 3 | 3.0 | Verify existing work Human | Run the 150-client crowd scenario once on a release build with RUST_LOG=info and the log kept. Match each dropped client to its 'world session ended' line, or close the issue if no drops occur. |
| 11 | #46The code fix shipped: a deleted Character leaves Realm-core party membership after acknowledged absence on every healthy Shard; the Package-backed party suite run remains as final proof.PR #463 moves deletion cleanup to a Gateway worker with retries and a reconcile at startup, and PR #573 reuses the same absence check for Guilds. The reset_party_state workaround no longer appears in this repository, but the wire-harness is a sibling repository. The Playerbots Package is now deployed on Argus, so the compatible Module that was missing before may exist. Confidence: medium. Issue updated 2026-08-11. Blocked by - A compatible Package-enabled Module and Gateway pair for the party suite (check Playerbots Package availability)
PR #384 PR #463 PR #573 | 2 | 3 | 2 | 3.0 | Verify existing work Claude | Run the eight Package-backed party scenarios on a Module and Gateway pair built from main with the Playerbots Package. Close the issue if deletion, Transfer, rosters, leader and loot settings stay correct. |
| 12 | #78GridBox still recenters on any anchor-cell change, but a recenter is now a bounded in-memory cell-set diff in the Gateway, not a subscription teardown.world_view::recenter returns early when the viewer stays in its cell and otherwise enqueues CREATE and DESTROY jobs for the cell delta. The original cost (SpacetimeDB subscription churn) is gone. A 7 by 7 box would raise steady audience and relay work, so the proposed fix needs new evidence. Confidence: high. Issue updated 2026-08-11. Blocked by - The original measurement does not describe the current architecture.
PR #244 | 2 | 2 | 2 | 2.0 | Verify existing work Claude | Measure client create and destroy traffic from AOI_RECENTERS near cell boundaries. Close as superseded if the churn is harmless; otherwise write a new Spec that prices a wider box or hysteresis. |
| 13 | #103Source for dynamic door collision is complete (importer in PR #254, collider and instance-scoped rays in PR #477); acceptance evidence remains in #112, #113 and #114.importer/src/go_model.rs, module/src/go_collider.rs and module/tests/go_collision.rs exist on main. #112 needs an imported-data dry run, #113 needs benchmark comparison, #114 needs Factory Door acceptance on map 36. This parent has no separate source work. Confidence: high. Issue updated 2026-08-11. Blocked by - Imported client-data acceptance in #112.
- Collision and sight-ray benchmark in #113.
- Imported Factory Door and sibling-instance acceptance in #114.
PR #254 PR #477 PR #499 | 4 | 5 | 1 | 20.0 | Dependency Claude | Collect the three acceptance results in #112, #113 and #114, then close this parent. |
| 14 | #66The two-Gateway capacity experiment still waits on a current one-Gateway baseline (#59) and a routable Gateway address (#65); both are open and no Gateway change since 2026-09-08 touches them.PR #390, PR #439 and PR #471 closed the cross-process correctness prerequisites. Shared Shard connections and cell audiences make the original query-count model in the issue stale. The experiment needs #59 for a baseline and #65 for a supported way to send clients to a second Gateway. Confidence: high. Issue updated 2026-08-11. Blocked by - Issue #59 (open) has no current one-Gateway baseline.
- Issue #65 (open) has no routable Gateway selection.
PR #390 PR #421 PR #439 PR #471 | 4 | 5 | 4 | 5.0 | Dependency Claude | Finish #59 and #65, then run one and two Gateway processes on the same Realm with equal Headless Client load. Compare writer occupancy, subscriptions, Gateway CPU, latency and disconnects. |
| 15 | #64The Gateway still has no SIGTERM handler: tokio's signal feature is off and main ends at try_join over the two listeners.gateway/Cargo.toml tokio features still omit signal, and gateway/src/main.rs still ends at tokio::try_join!(logon, world). The Argus Realm now deploys through the CLI with systemd, so each restart still hard-closes every World Session. The issue still names #60 as the blocker for any bulk drain. Confidence: high. Issue updated 2026-08-11. Blocked by - Issue #60 must first establish current mass-disconnect behavior
PR #471 | 4 | 4 | 4 | 4.0 | Dependency Claude | After #60 shows how the Gateway handles a mass disconnect, add a shared shutdown signal that stops both listeners, stops new logons, drains World Sessions to a deadline, runs normal logout, and logs each phase. |
| 16 | #39Static and door collision source is merged; the imported-data acceptance, fresh-provision parity run, and Blink eyeball remain before the epic can close.PR #115 delivered static collision and the nav step gate. PR #477 delivered instance-scoped door rays, and comments on #113 and #114 say their source is done, but both issues are still open. Nav fixes #596 to #601 and the Map 36 importer (#499, #515) also landed. What is left needs the Operator: #112 (apply Deadmines door models to a named Shard), #104 parity run, and the abbey column Blink check. Confidence: high. Issue updated 2026-08-11. Blocked by - Issue #112 imported door model acceptance (Operator)
- Issue #103 performance and imported-data acceptance
- Issue #104 fresh-provision parity
- A real-client Blink and line-of-sight session
PR #115 PR #254 PR #477 PR #499 PR #515 | 3 | 4 | 3 | 4.0 | Dependency Human | Close #113 and #114 against PR #477 if the Operator agrees, then schedule #112 apply, the #104 fresh-provision parity run, and the Blink check as one session with #366. |
| 17 | #65Logon still advertises one configured world address from a literal one-element realm list, with no Realm-core registry of Gateway address, load, or draining state.CoordinatorStore::realms in gateway/src/logon/mod.rs still returns vec![RealmInfo{..}] with one address from advertised_realm_address_or. #69 (multi-Gateway serving model) is still open and decides whether this registry is needed at all. Importance drops to 3 because single-Gateway Realms, such as Argus, work as is. Confidence: high. Issue updated 2026-08-11. Blocked by - Issue #69 must choose the multi-Gateway serving model
- A leased process registry and expiry rule do not exist
- Issue #59 must provide a useful load signal for selection
| 3 | 4 | 4 | 3.0 | Dependency Claude | After #69 is decided, define a leased Gateway process row on Realm-core with address, admission state, and load. Make realm-list selection deterministic and test drain exclusion and stale-row expiry. |
| 18 | #198Retire the global vmap Gate after current rollout and navigation evidence; Map 36 coverage rules now need a per-map answer.The global Gate remains by design (module/src/vmap.rs:775 rays_enabled). Source removal depends on accepted rollout from #184 and navigation evidence from #195. The Instance Pool now holds a Map 36 slice that has no Navigation Coverage, and door colliders use the same Gate without a static generation. The per-map rule must handle both cases before the Gate goes. Confidence: high. Issue updated 2026-09-01. Blocked by - Accepted rollout evidence from #184.
- Matching navigation coverage evidence from #195.
- https://github.com/LyraCoreProject/LyraCore/issues/198
- docs/vmap-rollout.md names lyracore, lyracore-world-1 and the lyracore-instances Instance Pool (Map 36 slice only).
- module/src/vmap.rs:770: vmap_enabled needs rays_enabled plus an active generation; line 774 says dynamic doors do not require a static generation.
- module/src/debug/instance.rs: debug_set_vmap_enabled and debug_set_nav_coverage_enabled still toggle game_config.
PR #192 PR #258 PR #275 PR #477 PR #515 | 3 | 3 | 4 | 2.2 | Dependency Claude | Complete #184 and #195 first. Then write one per-map eligibility rule that covers World Shard maps, the Map 36 slice without Navigation Coverage, and door colliders, and remove the Gate, reducer, bindings and runbook steps. |
| 19 | #138The published quickstart does not exist yet, so the repository guide cannot safely become a pointer.The issue body is only a dash. The public-site repository still says the site is not built, while docs/quickstart.md remains the complete guide linked from this repository. Replacing it now would remove working instructions without a destination. Confidence: high. Issue updated 2026-08-13. Blocked by - No published quickstart or explicit destination URL exists.
| 1 | 2 | 1 | 2.0 | Dependency Human | Wait until the public site publishes and owns a complete versioned quickstart. Then replace docs/quickstart.md with a short durable pointer and check inbound links. |
| 20 | #33The protocol can carry a Realm list, but the logon store still returns exactly one configured Realm and the shared account foundation from issue #34 is unfinished.Issue #33 states it is blocked by #34. Starting multi-Realm routing now would duplicate or constrain that design. No logon or account work merged since 2026-09-08 changes this. Confidence: high. Issue updated 2026-08-11. Blocked by - Issue #34 shared authentication hub and account policy
| 2 | 4 | 5 | 1.6 | Dependency Human | Finish issue #34 first, then rewrite this issue around Realm directory discovery, selection, routing and a two-Realm Gate. |
| 21 | #533No raid map is imported, so nothing refuses a party or a solo Character at a raid entrance; the dungeon entry check only caps the group at 5.The Gate has no map to guard until a raid map is imported. The related 60 s removal timer for a Character that leaves the Group inside an instance shipped in #566. Confidence: medium. Issue updated 2026-09-23. Blocked by - An imported raid map (the importer covers Deadmines, map 36, as the only instance)
PR #543 PR #566 | 1 | 2 | 2 | 1.0 | Dependency Claude | Wait for the first raid map import, then add the raid-group entry Gate beside party_size_allows_entry with a fixture raid map test. |
| 22 | #68Zero-disconnect file-descriptor handoff is still unstarted: the Gateway has no cipher snapshot, no SCM_RIGHTS transport and no handoff protocol, and its prerequisites #64, #66 and #67 are open.The reader owns DecrypterHalf and the single writer thread owns EncrypterHalf, so a handoff must also rebuild WorldView state and fence writes from two processes. This cost is only justified if measured restart cost and two-Gateway gain show that drain and reconnect are not enough. Confidence: high. Issue updated 2026-08-11. Blocked by - Issues #64, #66 and #67 are open.
- No cipher-state snapshot API or acceptance test.
- Unix-only; needs an Operator value decision.
- https://github.com/LyraCoreProject/LyraCore/issues/68
- gateway/src/world/mod.rs:355: WorldConn owns DecrypterHalf.
- gateway/src/world/mod.rs:883-898: the single writer thread is the sole owner of EncrypterHalf.
- git grep SCM_RIGHTS in gateway/src: only a comment in accept.rs about errno, no transport.
| 2 | 2 | 5 | 0.8 | Dependency Claude | Do not start before #64, #66 and #67. If measurements justify it, first isolate and test restoring the vanilla header cipher from a snapshot, then specify the Unix handoff and a real-client check. |
| 23 | #58The source installer shipped and the README links it; the requested binary installer and release artifacts do not exist.install.sh clones the repository, checks prerequisites, and installs a launcher, which meets the done-when items about a hosted script and a README link. The issue asked for prebuilt lyracore-cli and gateway binaries, and no release workflow exists in .github/workflows. Importance drops to 2 because a working install path exists. Confidence: high. Issue updated 2026-08-11. Blocked by - A decision between source install and binary distribution
| 2 | 4 | 1 | 8.0 | Design first Human | Decide whether the source installer replaces the binary request. If yes, close the issue with a note. If no, define supported targets and a release workflow first. |
| 24 | #69The choice between free-form Gateways and Gateway-per-Shard affinity no longer matches the shared Coordinator and WorldView model; the real open question is measured subscription and writer cost.Gateways share Coordinator connections per Shard, keep a local WorldView and pick audiences by spatial cell (PR #421), so the design is already a hybrid. Affinity only pays off if the #59 and #66 measurements show a cost that routing constraints would remove. Confidence: medium. Issue updated 2026-08-11. Blocked by - Issue #59 has no current baseline.
- Issue #66 has no two-Gateway comparison.
PR #421 | 3 | 4 | 2 | 6.0 | Design first Human | Rewrite the decision around the current shared connection and WorldView model, then use #59 and #66 measurements to decide whether process-to-Shard affinity is worth its routing and failover limits. |
| 25 | #104Rust import world and import vmaps verbs are pinned and documented, but import-world.sh is deliberately kept and still referenced by tests and docs; retirement needs a decision plus a fresh-provision parity run.The CLI import.rs header says import-world.sh is not retired and remains the by-hand path for custom legacy scope. importer/scripts and docs still reference it (import-manifest-smoke.sh, data-ingestion.md). Retiring it is a scope choice, and parity needs approved dump and client data. Confidence: medium. Issue updated 2026-08-11. Blocked by - Fresh-provision parity needs approved dump and client data.
- Consumers of import-world.sh (smoke tests, docs, region fixtures) must be repointed first.
- Maintainer decision on keeping the legacy path.
| 3 | 4 | 2 | 6.0 | Design first Human | Decide whether to retire import-world.sh or keep it as the legacy path. If retiring, run both Rust verbs on a fresh approved stack, repoint the consumers, then delete the script in one PR. |
| 26 | #272Resident creature movement replays after CREATE; the motion-flush shedding policy and the 4 s sensing cadence still need a maintainer choice.PR #450 fixed finding 1. The issue itself says finding 2 needs a decision on whether motion flushes may be shed, and finding 3 is a cadence choice for the maintainer. Code is unchanged for both: maybe_queue_motion_flush still sheds at depth and SENSE_EVERY_N_TICKS is still 8. A stock-client recording on current main would show whether either symptom is still visible. Confidence: medium. Issue updated 2026-09-07. Blocked by - Maintainer choice on shedding and sensing cadence.
- Controlled stock-client recording.
PR #450 | 3 | 4 | 2 | 6.0 | Design first Human | Record engage, approach and kite movement on current main with a stock client. Then choose a shed policy and a sensing cadence, and split each into its own bounded Ticket. |
| 27 | #34Realm-core authentication is active, but Gateway role flags, cross-Realm ban kicks, a GM baseline, account migration, registration guidance and a two-Realm Gate are all still missing.The data seam (slice 0) shipped, but the rest changes deployment roles and account policy across Realm processes and needs Operator sequencing. No role flag, ban subscription or hub change merged since 2026-09-08. Confidence: high. Issue updated 2026-08-11. Blocked by - Operator sequencing for the remaining slices
- A product decision for GM baseline and per-Realm override behavior
- A two-Realm live acceptance environment
- https://github.com/LyraCoreProject/LyraCore/issues/34
- grep: no --role flag or role enum in gateway/src/main.rs or config.rs
- gateway/src/logon/mod.rs:230: a banned account is refused at logon only; no live-session kick subscription exists
- gateway/src/logon/mod.rs:600: one Realm in the realm list
| 4 | 5 | 5 | 4.0 | Design first Human | Choose the next slice, preferably explicit Gateway role flags, then write separate Tickets for roles, ban propagation, GM policy, migration, registration and the two-Realm Gate. |
| 28 | #29Basic GM playtest commands exist and gm_level now gates a few paths, but mute, kick, ban enforcement, summon or appear, freeze and the audit log are still absent.The issue mixes shipped playtest tools with unbuilt moderation. The work crosses Gateway sessions, Module state, Realm-core account policy and audit retention. #568 added channel moderation for players, not GM moderation. Confidence: high. Issue updated 2026-08-11. Blocked by - Decision on GM permission levels and audit retention
- Alignment with issue #34 account ban and GM baseline policy
- https://github.com/LyraCoreProject/LyraCore/issues/29
- module/src/gm.rs: commands speed, god, xprate, level, money, heal, gps, additem, kill, tele only
- grep: no game_gm_action table in module/src or gateway/src
- gateway/src/world/chat_flood.rs: gm_level exempts a Character from the flood mute; gateway/src/stdb/reads/guild.rs reads gm_level for guild founding
PR #540 PR #568 | 4 | 4 | 5 | 3.2 | Design first Human | Rewrite the issue around moderation outcomes, permission levels, audit records and ban or mute propagation, then split one command and enforcement path per Ticket. |
| 29 | #35The Package API lint, trust review, and compiled CLI are shipped; the Server manifest design and fresh-machine acceptance are still open.PR #397 closed the Package API slice (#391 is closed), and the sibling lyracore-cli repository owns the verb surface. The Server manifest (realm definitions, hash verification, install and remove sweeps) is still an open design round on this issue. Nothing changed on this issue since 2026-09-01. Confidence: high. Issue updated 2026-09-01. Blocked by - A decision on the Server manifest contract
- Issue #58 for the installer and any binary distribution
- Fresh-machine acceptance across the CLI repository and this pinned shim
PR #397 | 3 | 5 | 5 | 3.0 | Design first Human | Decide the minimum Server manifest contract beyond Provenance Stamps, then split a Ticket per slice. Run the fresh-machine acceptance after #58 settles the installer question. |
| 30 | #82A real Realm still has no tracked TCP load balancer, per-backend admission cap or drain procedure for a Gateway pool; deploy/ holds only the Standalone service and the new history-prune timer.PR #586 added deploy/ prune files but no Gateway balancer configuration. Drain (#64) and logon address selection (#65) are still open, and the issue's capacity numbers (cap about 750) predate shared Coordinators and batching. The load balancer choice and a named host are maintainer calls. Confidence: high. Issue updated 2026-08-11. Blocked by - Needs current single-Gateway capacity evidence.
- Needs a maintainer choice of load balancer and a named host before any topology change.
- Depends on #64 for drain.
PR #586 | 3 | 4 | 4 | 3.0 | Design first Human | After current capacity evidence (#59, #77), choose the supported load balancer and deployment shape. Build static backend caps, health checks and drain commands, and run a failure drill on a named non-production host first. |
| 31 | #73The pinned CLI (b225405) still has no Ratatui or Crossterm dependency and only a text dev status; the spatial seam console (#49) is closed, so the choice is now local ops TUI versus remote GM console.Issue #49 closed 2026-09-07, which removes one of the three surfaces the issue compares. Pin b225405 adds a production command group but still no interactive view. The remaining question is whether the local operator loop needs a live TUI at all. Confidence: high. Issue updated 2026-08-11. Blocked by - No operations surface selected.
- https://github.com/LyraCoreProject/LyraCore/issues/73
- https://github.com/LyraCoreProject/LyraCore/issues/49
- lyracore-cli @ b225405 (.lyracore-cli-rev): Cargo.toml has no ratatui or crossterm; src/cmd has account, character, client, config, dev, doctor, import, preflight, production, publish, service, update.
- PR #593 added Realm-core to Gateway load samples, so the data feed for a live view is now complete.
PR #593 | 2 | 3 | 2 | 3.0 | Design first Human | Have the Operator decide whether local dev status needs an interactive view. If yes, scope a read-only process, Shard and database health pane; keep the remote GM console as a separate item. |
| 32 | #84The original symptom (no SMSG_LOOT_ROLL_WON) was a vote-before-promotion race fixed by PR #531; what remains is a durable recovery design for expired Loot Roll results, the bot-party half, and a broken wire-harness group-loot scenario.PR #474 fixed failed-settlement retry and PR #531 fixed the original incident (3 of 3 passes on a local four-database stack). Recovery after the one-second Group Event lifetime still needs durable receipt retirement, source authority and disband handling as several dependent Tickets. The issue now mixes a closed symptom with open design work. Confidence: medium. Issue updated 2026-09-23. Blocked by - Exclusive resolution authority, receipt retirement and disband recovery need one reviewed design.
- Bot-party half (test-party-brains, bot_deadmines) needs the playerbots Package and a multi-Shard stack.
- Pinned wire-harness test-group-loot.sh needs a damage step.
PR #439 PR #461 PR #474 PR #531 | 3 | 4 | 5 | 2.4 | Design first Human | Retitle or split: close the original symptom, open one design Ticket for settlement receipt retirement and Group participation, and one small Ticket to add a debug_apply_damage step before each kill in wire-harness test-group-loot.sh plus a pin bump. |
| 33 | #313Choose the first non-spell DBC catalogues that Package Deltas may update.The issue comment supplies a detailed update-only proposal, but it explicitly awaits maintainer approval. The stable key for game_skill_ability, family boundaries, claimable columns, replay ordering, and cross-family spell references define the Package contract. The ready-for-agent label does not settle those choices. Confidence: medium. Issue updated 2026-09-02. Blocked by - Maintainer approval requested in the 2026-09-02 issue comment.
| 3 | 4 | 5 | 2.4 | Design first Human | Approve or revise the proposed v1 table set and its five open decisions. Then assign one Tracer covering a single family through schema, apply, replay, and provenance. |
| 34 | #11Self-resurrection effects (Soulstone, Reincarnation) have no stored eligibility, consume-on-use flow or self-resurrect handling; the importer still leaves Reincarnation as E_SCRIPTED.Existing resurrection handles requests from another Character only. The 1.12 duration, death-screen option, reagent and consumption rules need observation before the state model is fixed. Confidence: medium. Issue updated 2026-08-11. Blocked by - Exact 1.12 Soulstone and Reincarnation semantics
- A real-client acceptance session
| 3 | 3 | 4 | 2.2 | Design first Human | Research the 1.12 Soulstone and Reincarnation rules from primary sources, then write a complete Ticket; keep the real-client check separate. |
| 35 | #36Speed and teleport movement checks are shipped; fall, Z-axis, and wall-crossing checks are still unbuilt and have no agreed false-positive budget.module/src/world.rs still implements only violation kinds 1 and 2 and reserves 3 to 5. Since the last audit the nav fixes (#596 to #601) and instance door rays (#477) improved the data a wall-clip check would read, but the zero-false-positive requirement for legit sessions is still undefined for the coarse grid. Importance drops to 3 because the logging-only checks that ship already cover the gross speed and teleport cases. Confidence: high. Issue updated 2026-08-11. Blocked by - Threshold and false-positive policy for the next movement check
- Representative legitimate and violating movement traces
PR #477 | 3 | 3 | 4 | 2.2 | Design first Human | Pick the next check (Z-axis against ground height is the cheapest) and set its false-positive budget from recorded Headless Client movement traces. Then write one Ticket with deterministic Module Gates. |
| 36 | #4The imported world has no continent-crossing synthetic AreaTrigger, and the issue still offers two routes with different content cost: Ratchet (3551) to Stormwind (3530) now, or a real Booty Bay dock later.The issue records an Operator shelving decision from 2026-07-28 and a later corrected study. Trigger 4029 is not free, so the Booty Bay route needs a widened map-0 import and a new trigger. No importer work on this has merged since 2026-09-08. Confidence: high. Issue updated 2026-08-11. Blocked by - Operator choice between the Ratchet to Stormwind link and a later real-dock route
- Wider map-0 import scope if the real-dock route is selected
- https://github.com/LyraCoreProject/LyraCore/issues/4
- importer/src: no synthetic areatrigger_teleport block, no reference to triggers 3551 or 3530 as teleport rows
- git log since 2026-09-08 for importer/: Deadmines, WMO and collision work only; no AreaTrigger change
| 2 | 3 | 3 | 2.0 | Design first Human | Choose the temporary Ratchet to Stormwind link or the later real-dock route; for the temporary link write one importer plus teleport Gate Ticket for triggers 3551 and 3530. |
| 37 | #585The client never sees an item's permanent enchant: world entry sends enchantment 0 and the live insert sends only a Guild Charter's petition id, while the Module stat fold counts the enchant.Sending game_item_instance.enchant_id as is would not work, because the seeded ids 7745 and 7748 are spell ids that SpellItemEnchantment.dbc does not contain. Someone must choose to map them to real DBC enchant ids or to send only ids the DBC knows. Confidence: high. Issue updated 2026-09-28. Blocked by - Decision on compatibility id mapping
- https://github.com/LyraCoreProject/LyraCore/issues/585
- gateway/src/stdb/reads/items.rs:60: enchantment: 0 in world entry item views
- gateway/src/stdb/world_view.rs:2075 and :2089: the insert relay sends only charter_petition_id
- gateway/src/codec/item.rs:484 and :514: set_item_enchantment already writes the field
- importer/src/item_property.rs: compatibility effects use ids 7745 and 7748
- module/src/items/ops.rs:700: the stat fold reads item.enchant_id
PR #583 | 2 | 2 | 2 | 2.0 | Design first Human | Choose between mapping compatibility ids to DBC enchant ids and sending only DBC-known ids, then write one Gateway Ticket that sends slot 0 (word 22) through set_item_enchantment. |
| 38 | #30The Realm has no seasonal game-event tables, calendar pass, event spawn links or Operator force verbs, and the Spec's gameobject plan still conflicts with how the Gateway shows parked rows.The issue has the ready-for-agent label and a detailed Spec, but a parked game_gameobject row is still created for viewers, so event objects would not vanish. The Spec forbids Gateway changes. A visibility or retained-definition design must be chosen first. Confidence: high. Issue updated 2026-08-21. Blocked by - The Spec forbids Gateway changes and requires parked definitions to survive, but a parked row is still shown
- https://github.com/LyraCoreProject/LyraCore/issues/30
- grep: no game_event, game_event_creature or game_event_gameobject code; only game_event_reaper_schedule (unrelated)
- gateway/src/stdb/world_view.rs:1667: gameobject_appeared creates every row for viewers with no state check
- gateway/src/codec/npc.rs:79: comment says seasonal events do not exist
- module/src/gameobject.rs: depleted rows stay with state 1 and a respawn timer
| 2 | 4 | 5 | 1.6 | Design first Human | Pick one: add a Gateway visibility Gate for parked event rows, or retain definitions separately and delete and reinsert live rows through one lifecycle; then split and build the event Tracer. |
| 39 | #67SO_REUSEPORT is still absent: both Gateway listeners call plain TcpListener::bind (logon/mod.rs:332, world/mod.rs:1760), and no socket2 option path exists.The feature is unimplemented, but it is not clear that it is the right deploy mechanism. If logon (#65) sends new clients to a fresh address while the old Gateway drains (#64), overlapping binds add little. Platform support and failure reporting also need a policy. Confidence: high. Issue updated 2026-08-11. Blocked by - Issue #64 (open) has no graceful drain.
- Issue #65 (open) has no Gateway address selection.
- No supported-platform policy.
| 2 | 2 | 3 | 1.3 | Design first Human | Decide after #64 and #65 whether overlapping binds are required. If yes, state the supported operating systems and add socket creation plus an overlap acceptance test. |
| 40 | #79Gateway connections still use the SpacetimeDB default confirmed reads; no override exists, and the shared Coordinator carries durable state as well as movement.git grep finds no with_confirmed_reads or confirmed=false in gateway or module. A Coordinator carries every subscribed table for a Shard, so turning confirmation off exposes non-durable state beyond movement. A maintainer must accept that trade, or a separate movement-only connection must exist first. Confidence: medium. Issue updated 2026-08-11. Blocked by - A maintainer must approve the crash-durability trade.
- No movement-only subscription connection exists.
PR #247 | 2 | 2 | 3 | 1.3 | Design first Human | Measure confirmed-read latency on the current Coordinator and list what state would become visible before durability. Then decide whether to keep confirmation or add a scoped connection. |
| 41 | #10Distract (DISTRACT-69) still falls to E_SCRIPTED: there is no destination check, temporary Creature attention state, facing update, or combat and expiry rule.The issue itself says the radius, duration and idle versus combat behavior need a real-client check. No spell or Creature AI work since 2026-09-08 touches Distract. Confidence: medium. Issue updated 2026-08-11. Blocked by - Exact 1.12 Distract targeting and expiry behavior
- A real-client behavior check
| 2 | 2 | 4 | 1.0 | Design first Human | Research the 1.12 Distract rules from primary sources and write one complete Ticket; keep the real-client check as a separate human step. |
| 42 | #28Drink item use still creates no inebriation state, no PLAYER_BYTES_3 drunk update and no chat slurring.Earlier source checks found the drunk value and decay in the pinned CMaNGOS, but no say/yell slur transform there, and the issue's tier byte and 9 s step differ from that source. The issue asks for an exact slur transform that the reference lacks. Confidence: high. Issue updated 2026-08-11. Blocked by - The requested exact slur transform is absent from the verified CMaNGOS source
| 2 | 2 | 4 | 1.0 | Design first Human | Choose a proven state, field and decay slice and keep the slur criterion open, or name another source or authored rule for the slur; then write the Ticket. |
| 43 | #41Ritual of Summoning is still unimplemented: no portal GameObject, no two-assistant interaction, and no targeted teleport exist in the code.The issue itself defers this until the group and companion work, and that work has now shipped (cross-shard parties, raids, Playerbots). Whether to un-defer it is a product priority call, and the exact 1.12 ritual behavior still needs primary-source research and a three-client check. No search for spell 698 or a ritual portal finds code in the Module, Gateway, or importer. Confidence: medium. Issue updated 2026-08-11. Blocked by - A priority decision to un-defer
- Exact 1.12 ritual interaction behavior
- A three-client acceptance session
| 2 | 2 | 5 | 0.8 | Design first Human | Decide whether to un-defer now that groups and companion Playerbots exist. If yes, research the 1.12 ritual flow from primary sources and write a Ticket split into portal, assist tally, and Transfer-safe teleport. |
| 44 | #92lyracore client sync and client pack both ship and are documented; only a human load check of patch-3.MPQ and addons in a stock 1.12.1 client remains.CLI PR #32 and core PR #322 shipped sync; issue #303 closed 2026-09-02 and PR #392 added client pack. docs/development-cli.md lists both verbs. No agent can run a stock client load check. Confidence: high. Issue updated 2026-09-02. Blocked by - Needs a legally obtained, configured stock 1.12.1 client and a human.
PR #322 PR #392 | 3 | 4 | 1 | 12.0 | Human acceptance Human | Have a human run lyracore client sync on a configured stock client, confirm patch-3.MPQ and every enabled Package addon load, then close the issue. |
| 45 | #318Runtime Script reconciliation is implemented; visible execution and removal on a Realm remain.PR #358 delivered the schema, whole-plan reconciliation, ordering, failure containment and durable tests; script replay shipped through #393 (closed). No recorded session proves a login effect fires and disappears after disablement. The playerbots personality script is on the playerbots retirement list, so use a scratch Package for the sequence. Confidence: high. Issue updated 2026-09-03. Blocked by - Named test Realm and permission for Package changes.
PR #358 PR #400 PR #406 | 3 | 4 | 1 | 12.0 | Human acceptance Human | On an approved Realm, install a scratch Package with an on_login script, log in, disable it, replay, log in again. Record the effect and the absence of script rows on every target Shard. |
| 46 | #113Instance-scoped door collision is merged; the canonical-box collision and sight-ray benchmark is the only open item.PR #477 ships the private collider registry, lifecycle hooks, transforms and state Gate. Later commits changed the collider on main: steep faces no longer count as floors (#599) and rotated doors apply the walking slope (5a216e37). The issue requires a before and after benchmark on an imported canonical box, which needs approved client data and an Operator run, so no agent step remains. Confidence: high. Issue updated 2026-09-08. Blocked by - Approved client data and an Operator-run development Shard with the imported canonical box.
PR #254 PR #477 PR #599 | 4 | 5 | 2 | 10.0 | Human acceptance Human | On current main, run debug_bench_collision_gate and debug_bench_los with exact=true on an imported canonical box. Record the result against the pre-#477 numbers and investigate any regression before closing #113. |
| 47 | #184Run the vmap rollout and collision acceptance on the World Shards and the Instance Pool with the current World Import Profiles.PR #192 shipped the staged import workflow. The issue body still names map 0 on lyracore and lyracore-instances and bars lyracore-world-1. The rollout document now sets alliance-eastern on lyracore, alliance-kalimdor on lyracore-world-1, and a bounded Map 36 entry and exit slice (instances profile) on the Instance Pool. Importer fixes since September (#499, #515, #599) mean any earlier dry run is stale. What remains is a guarded Realm operation and a client check. Confidence: high. Issue updated 2026-09-01. Blocked by - Named-host authorization, approved client data, maintenance approval, and stock-client collision acceptance.
PR #192 PR #275 PR #499 PR #515 PR #599 | 4 | 4 | 2 | 8.0 | Human acceptance Human | Follow docs/vmap-rollout.md with the current importer: import and verify all three destinations, collect ray, floor, indoor and Map 36 evidence with the Gate off, then do the client check before the Gate is enabled. Ask the maintainer to rewrite the issue checklist to match the document. |
| 48 | #195Generation-scoped navigation coverage is implemented; navigation data must be re-imported with the current importer, then route and client acceptance remain.PR #258 shipped preparation, finalization, route-planner consumption and tests. Since the first audit, PR #601 fixed terrain-hole axes in the navigation importer and PR #479 changed nav probes; existing navigation rows need a navigation-only re-import. Map 36 has no Navigation Coverage by design. The remaining work changes Realm data and needs route and client evidence. Confidence: high. Issue updated 2026-09-01. Blocked by - Named-host authorization and imported route and collision acceptance.
PR #258 PR #275 PR #479 PR #601 | 4 | 4 | 2 | 8.0 | Human acceptance Human | Re-import navigation with the importer at current main on approved World Shards and rebuild derived coverage. Record before and after detours, then enable nav_coverage_enabled only after acceptance and approval. |
| 49 | #584A stock client opened a corpse's loot window on Argus but taking an item did nothing; the cause is unknown and may be the XTEST driving setup, since nobody has looted by hand.Looting is a core loop, so a real fault is serious, but the report may come from the 2 FPS input driver. The gateway code path exists and has unit tests; a missing open-loot target silently drops the request. A hand-played test on the named host decides if there is a bug. Confidence: low. Issue updated 2026-09-28. Blocked by - Hand-played loot test on Argus (named host, human)
- https://github.com/LyraCoreProject/LyraCore/issues/584
- gateway/src/world/handlers/loot.rs:234: dispatch_loot_window now lives here, not in gateway/src/world/mod.rs
- gateway/src/world/handlers/loot.rs:345: CMSG_AUTOSTORE_LOOT_ITEM returns with no reply and no log when the session has no open loot target
- gateway/src/world/handlers/loot.rs: a Refusal without a loot error is silent
- No merged PR since 2026-09-28 touches the loot take path
PR #557 PR #531 | 4 | 4 | 2 | 8.0 | Human acceptance Human | A human loots one mob by hand on Argus; if it fails, trace CMSG_AUTOSTORE_LOOT_ITEM through dispatch_loot_window and take_loot with debug logs and log silent drops. |
| 50 | #1The public package-manager proposal is largely implemented; what remains is issue #92's real-client sync check, the open client UI issue #304, and a human review of the proposal text.Most linked slices are closed. The comments say not to implement the umbrella directly. Issue #92 and #304 are still open, and no merged work since 2026-09-08 changed that picture. Confidence: high. Issue updated 2026-08-24. Blocked by - Issue #92 real-client sync acceptance
- Issue #304 native UI authoring
- Human review of the proposal's remaining product commitments
PR #322 PR #392 PR #397 | 3 | 5 | 2 | 7.5 | Human acceptance Human | Finish issue #92's real-client sync check, review the shipped workflow against the public proposal, then refresh or close the umbrella without starting code from it. |
| 51 | #3Realm-wide mail, auctions, guilds, chat, groups and raids now run on Realm-core after #531 to #576; only the two-client multi-Shard acceptance run is left, and every client-check checklist is still marked outstanding.The gaps listed on 2026-09-23 (guilds, Realm Chat, channels, AFK and DND, friends and who, raids, mail expiry and delivery delay, auction cancel and notices) all have merged PRs. Six docs/*-client-check.md files say execution outstanding. Local videos exist for chat and guilds (2026-09-25), none for mail, auction or raid. Confidence: high. Issue updated 2026-09-23. Blocked by - Two-client multi-Shard 1.12.1 acceptance run (human)
- Issue #27's raid client check
- Execution of docs/guild-client-check.md, mail-client-check.md, auction-house-client-check.md, chat-client-check.md
PR #531 PR #535 PR #536 PR #538 PR #539 PR #540 PR #542 PR #543 PR #544 PR #545 PR #546 PR #547 PR #548 PR #549 PR #550 PR #551 PR #552 PR #553 PR #554 PR #555 PR #556 PR #557 PR #558 PR #560 PR #561 PR #563 PR #564 PR #565 PR #566 PR #568 PR #572 PR #573 PR #574 PR #575 PR #576 PR #581 | 3 | 5 | 2 | 7.5 | Human acceptance Human | Run the client checks (chat, guild, mail, auction, raid) with two real clients on different Shards, record the final video, tick the criteria on the issue and file only concrete failures. |
| 52 | #154Aura stacking code and its insertion boundary are covered; the live sequence has no recorded evidence.PR #217 shipped stacking policy tests and the Architecture Test for one authoritative insertion boundary. The issue's code blocker #153 is complete. docs/aura-stacking-probes.md still has an empty evidence template, so only Operator-run Module and client Verification remains. Confidence: high. Issue updated 2026-09-01. Blocked by - Operator-approved Module publish and a real client.
PR #217 | 4 | 3 | 2 | 6.0 | Human acceptance Human | Run docs/aura-stacking-probes.md on an approved development Realm, fill the persisted-row and visible-effect evidence, and close this issue if every sequence agrees. |
| 53 | #38The Gateway no longer carries the per-relay resident sweeps or initial_* snapshot gates; only the real-client login matrix remains.PRs #421 and #433 rebuilt the login path. gateway/src/stdb/subscriptions.rs now has no sweep or initial_* gate constructs, only two unit tests whose names mention the old sweep, and world_view.rs holds one ordered sweep_into_view job. The done-when text also needs a live check of a geared and buffed Character and the questgiver walk-away case. Importance drops to 3 because the structural debt is gone. Confidence: high. Issue updated 2026-08-11. Blocked by - A real 1.12.1 client with fresh and geared Character fixtures
PR #421 PR #433 | 3 | 4 | 2 | 6.0 | Human acceptance Human | Run the issue's login matrix (fresh, geared, with auras, on a questgiver) on a real 1.12.1 client against current main. Close the issue if every initial snapshot and following delta is correct. |
| 54 | #40The Binding encounters, reward spells, focus Gate, temporary summons, and kill credit are merged; only a real-client check remains.PR #455 imported the quest items, creatures, and teaching rewards, and its Binding durable fixture passed. The test Realm Argus was redeployed on 2026-09-16, after the merge, so a client check may now be possible there once the spell, quest, creature and gameobject reimport is confirmed. Importance drops to 3 because the server side is verified. Confidence: high. Issue updated 2026-08-11. Blocked by - A development Realm with the merged Module data and a real 1.12.1 client. The Operator names the host and approves any update.
PR #455 | 3 | 4 | 2 | 6.0 | Human acceptance Human | Confirm the Binding data is imported on the development Realm, then play both quests in a real 1.12.1 client and check ritual-circle placement, summon feedback, combat, objective credit, and the learned Voidwalker and Succubus spells. |
| 55 | #112The DOOR and BUTTON model importer is merged; an approved client-data dry run and apply on a named development Shard remain.PR #254 ships the importer, storage, reducers and tests. PR #499 later made the M2 reader stricter: a GameObject model import now fails with the model name when collision data is missing or malformed, so any earlier dry run is stale. The remaining checks need licensed client data and a named Shard. Confidence: high. Issue updated 2026-09-01. Blocked by - Approved client Data and an explicitly named development Shard.
PR #254 PR #499 | 3 | 4 | 2 | 6.0 | Human acceptance Human | Run --go-models as a dry run with the current importer against approved client Data, record nonzero Deadmines door triangles and any WMO or parse skips, then apply the rows to a named development Shard. |
| 56 | #196Bounded patrol return is implemented; only real-client movement Verification remains.PR #253 added repeated ground-snapped return steps and pure coverage for long displacement and ordinary patrol behavior. The latest issue comment narrows the remainder to watching the result across real terrain. Confidence: high. Issue updated 2026-09-01. Blocked by - Stock 1.12.1 client and a suitable imported patrol scenario.
- https://github.com/LyraCoreProject/LyraCore/issues/196
- https://github.com/LyraCoreProject/LyraCore/pull/253
- module/src/creatures/cycle/harness.rs covers a badly displaced patroller and ordinary patrol behavior.
- module/src/creatures/cycle/harness.rs:3317 and :3344: a_badly_displaced_patroller_steps_toward_its_waypoint_one_firing_at_a_time and a_displaced_patroller_converges_then_resumes_ordinary_patrolling.
- module/src/creatures/cycle/harness.rs:3277: ordinary patrol segment test.
- Commit 66f7b6b8 (creature position persist gate) changed stored positions only; the real-client check should use current main.
PR #253 | 3 | 2 | 1 | 6.0 | Human acceptance Human | Displace a patroller across uneven terrain in a stock client and record its stepped return, route rejoin, and resumed patrol. |
| 57 | #366Verify Deadmines choreography, including Smite's stomp, in the real client once Package #18 ships.The dungeons Package has durable tests and a private Headless Client route now proves Map 36 import, AreaTrigger 78 entry, AreaTrigger 119 exit and five-member Transfer settlement. Visible doors, Sneed, the cannon breach, Smite's movement, weapon displays, yells and stomp still need a client pass. Package #18 (stomp) is still open. Confidence: high. Issue updated 2026-09-01. Blocked by | 3 | 4 | 2 | 6.0 | Human acceptance Human | Finish package #18, then run this checklist with #373 and #114 on an imported Map 36 Realm in one session, including a fresh instance entry. |
| 58 | #367The GOOBER lock Gate is merged; imported Defias Cannon acceptance remains.PR #440 applies the existing lock Gate before quest credit or Package hooks and proves that a Refusal leaves durable state unchanged. The automated case uses equivalent reserved lock data. The issue deliberately remains open for the imported cannon and its real opener. Confidence: high. Issue updated 2026-09-07. Blocked by - Imported Deadmines data, an approved Realm, and a real 1.12.1 client.
PR #440 | 3 | 4 | 2 | 6.0 | Human acceptance Human | On an approved imported Realm, verify with a real client that the Defias Cannon refuses use without gunpowder and fires with it. |
| 59 | #37Spell rank supersession shipped for trainer buys and login; only real 1.12.1 client acceptance remains, and PR #602 now adds many more rank chains to the data.gateway/src/world/handlers/trainer.rs still sends SMSG_SUPERCEDED_SPELL on a rank upgrade, and the issue comment confirms the relog behavior shipped. PR #602 imports 521 more client rank links (all Warrior families and others), so the visible effect of this fix now reaches more spells once that import is deployed. No agent code slice remains. Confidence: high. Issue updated 2026-09-01. Blocked by - A real 1.12.1 client acceptance session
PR #256 PR #602 | 2 | 3 | 1 | 6.0 | Human acceptance Human | Learn a non-mana rank upgrade from a trainer in a real 1.12.1 client, relog, and confirm the old rank stays absent. Do it after the #602 import reaches the test Realm so the new chains are covered. |
| 60 | #114Instance-aware door rays and sibling isolation are merged; imported Deadmines Factory Door acceptance remains.PR #477 carries instance_id through ray callers and adds debug_vmap_ray_instance. The durable synthetic fixture proves isolation and state. The Instance Pool now has only a bounded Map 36 entry and exit slice (PR #515), so the Factory Door check depends on dynamic door colliders and the global Gate, not on static dungeon geometry. Imported model axes and spawn quaternions still need a real check. Confidence: high. Issue updated 2026-09-08. Blocked by - Approved client data and a named development Shard.
- Matching model and Package geometry artifacts for the Factory Door.
- https://github.com/LyraCoreProject/LyraCore/issues/114
- Merged PR #477 carries instance_id through movement, sight, collision, floor and Spell callers.
- module/src/nav.rs and the listed combat, creature, and spell callers already have the acting entity and its instance_id.
- https://github.com/LyraCoreProject/LyraCore/pull/477
- The synthetic durable fixture proves closed/open/despawned state, sibling isolation, Package apply/replay/clear, both debug command signatures, transforms, nearest hits and Blink. It does not prove imported Deadmines geometry or canonical-box performance.
- https://github.com/LyraCoreProject/LyraCore/issues/114#issuecomment-5581599127
- https://github.com/LyraCoreProject/LyraCore/pull/515
- https://github.com/LyraCoreProject/LyraCore/pull/499
- docs/vmap-rollout.md: the instances profile owns only the deadmines-entry-exit slice (Map 36 cells x 511-513, y 522-524); it supplies no collision for the rest of Deadmines.
- module/src/debug/instance.rs:263: debug_vmap_ray_instance takes the instance id.
PR #477 PR #515 PR #499 | 4 | 4 | 3 | 5.3 | Human acceptance Human | On a named development Shard with the Gate on, import the Map 36 DOOR and BUTTON models with the current importer, run rebuild_go_colliders, then record debug_vmap_ray_instance results across the closed and opened Factory Door and a closed sibling instance. |
| 61 | #42The Playerbots rewrite shipped as a Package and passed headless hours, but the attended Argus Follow step failed on 2026-09-16 and the real-client believability and Deadmines sessions are not done.PRs #394 and #395 merged, along with about 60 Playerbots PRs (#482 to #595). docs/research/playerbots-client-acceptance.md records a passed 25-bot hour, then a failed attended Follow attempt on Argus because decisions took about 3.5 s alongside 100 bots. Scheduler fixes since then (#523, #525, #526, #578, #587, #590) are merged but need another guarded deployment and attended retry. #366 and #373 are still open and hold the checklists. Confidence: high. Issue updated 2026-09-02. Blocked by - A real 1.12.1 client and an imported node
- A guarded Argus deployment of the scheduler fixes, approved by the Operator
- Human judgment of behavior quality
PR #394 PR #395 PR #523 PR #525 PR #526 PR #578 PR #587 PR #590 | 3 | 5 | 3 | 5.0 | Human acceptance Human | Deploy the current scheduler fixes to Argus through the guarded procedure, then run the attended session from #373 and #366 (believability, then Deadmines to VanCleef, including a fresh instance entry). File narrow follow-up issues for each failure. |
| 62 | #304UI Transforms are implemented; FrameXML and GlueXML still need separate stock-client checks.PR #392 ships deterministic anchored transforms, conflict Refusals, baseline and source hashes, and the Client Artifact boundary. The issue's latest comment marks every automated criterion complete and leaves the two real-client phases open. Confidence: high. Issue updated 2026-09-02. Blocked by - Operator baseline from a real unmodified 1.12.1 client.
PR #392 | 3 | 3 | 2 | 4.5 | Human acceptance Human | Run the PR #392 uicheck Tracer against the Operator's baseline. Confirm the GlueXML login text and FrameXML chat line separately, then remove the scratch Package. |
| 63 | #373Observe believable imported bots and a fresh Deadmines entry in the real client; the automated hour is accepted, the attended session is not done.The playerbots rewrite changed the picture. An automated one-hour imported run of 25 bots was accepted (v19, 2026-09-13), and a headless Map 36 entry, exit and Transfer route passed. Believable motion and first entry into a new instance still need a human. The first attended session on 16 September failed on companion scheduling, which later PRs addressed, and the runbook still names legacy table pkg_playerbots_goal. Confidence: high. Issue updated 2026-09-02. Blocked by PR #517 PR #519 PR #523 PR #525 | 3 | 3 | 2 | 4.5 | Human acceptance Human | Refresh the Part A checks to the rewrite's tables, then run Parts A and C with the PB012 session template on the approved imported Realm after package #18 ships, and keep the one-hour logs. |
| 64 | #27Raid groups are implemented (convert, 40 members, Subgroups, Assistants, ready check, Target Icons, raid chat, quest credit, removal timer); only the live-client acceptance in docs/raid-client-check.md is open.The prior 'raid groups are absent' state is obsolete: #543, #550, #551, #552, #557, #558 and #566 merged, and #574 added cross-ticket tests and the checklist. The Done-when needs a live client to render the raid tab, so an agent cannot close it. Documented follow-ups remain: raid XP multipliers and the raid XP rate. Confidence: high. Issue updated 2026-08-11. Blocked by - Real 1.12.1 client run of docs/raid-client-check.md
PR #543 PR #550 PR #551 PR #552 PR #557 PR #558 PR #566 PR #574 | 2 | 4 | 2 | 4.0 | Human acceptance Human | Run docs/raid-client-check.md with two real clients and bots, then close the issue and track the XP follow-up and issues #533 and #534 separately. |
| 65 | #202The low gossip text identifier is implemented; Marshal McBride's stock-client window is unverified.The Gateway sends gossip text identifier 1 and answers a query for it. Packet tests cannot reproduce a build-5875 client silently dropping a gossip message, so the remaining criterion is visual client behavior. Confidence: high. Issue updated 2026-08-13. Blocked by - Stock 1.12.1 client and a human visual check.
- https://github.com/LyraCoreProject/LyraCore/issues/202
- gateway/src/codec/npc.rs defines GOSSIP_GREETING_TEXT_ID as 1 and answers arbitrary queried text identifiers.
- The issue states that the Headless Client shares the codec and cannot prove rendering.
- gateway/src/codec/npc.rs: unchanged since 2026-09-08; GOSSIP_GREETING_TEXT_ID is still 1 at line 133.
| 2 | 2 | 1 | 4.0 | Human acceptance Human | Right-click Marshal McBride in a stock build-5875 client and record whether the greeting and quest offer render. If they do not, investigate the questgiver and gossip menu-path race named in the issue. |
| 66 | #570Both halves are merged; only the real-client check remains.Core #603 added stop_where_rendered and fixed the death stop. Packages #61 makes the runner stop at the rendered point; its test fails with the change reverted. Confidence: high. Issue updated 2026-09-24. Blocked by PR #603 | 2 | 2 | 1 | 4.0 | Human acceptance Human | In a real client, interrupt a bot on a bent path mid-leg and kill a creature mid-walk. Neither should snap back. |
| 67 | #137The bank Headless Client adapter is merged and pinned; Realm execution and stock-client checks remain.Wire-harness PR #9 and core PR #453 cover activation, deposit, reconnect persistence, withdrawal, and slot purchase. The historical code blockers are complete. No approved Realm run or stock-client window check is recorded. Confidence: high. Issue updated 2026-09-07. Blocked by - Approved development Realm and a real 1.12.1 client.
PR #158 PR #171 PR #453 | 3 | 3 | 3 | 3.0 | Human acceptance Human | Run the pinned bank adapter on an approved development Realm, then inspect the bank window, all 24 cells, relog persistence, and the purchased slot in a stock client. |
| 68 | #142The drowning Headless Client adapter is merged and pinned; Realm execution and stock-client calibration remain.Wire-harness PR #10 and core PR #454 completed the source half. The adapter checks the breath timer, expiry before damage, matching health loss and drowning logs, and the stop after surfacing. It has not run on a Realm, and no automated check can calibrate head height or prove the mirror bar renders smoothly. Confidence: high. Issue updated 2026-09-07. Blocked by - Approved development Realm with imported liquid coordinates.
- Real-client calibration of head height and mirror-bar behavior.
PR #150 PR #166 PR #454 | 3 | 3 | 3 | 3.0 | Human acceptance Human | Run the pinned dive adapter on an approved development Realm with imported liquid coordinates, then verify the stock-client mirror bar, submerge threshold, partial dives, death, zone changes, and Transfer behavior. |
| 69 | #107GameObject template scale is imported and sent; source-data and stock-client proportions remain unchecked.PR #110 shipped the importer, Module column, Gateway field, fallback, and tests. The latest issue comment limits the remainder to imported row, wire, and visual checks for Peacebloom and Copper Vein. Confidence: high. Issue updated 2026-09-01. Blocked by - Approved game data, an Operator-run development Shard, and a stock client.
PR #110 | 2 | 3 | 2 | 3.0 | Human acceptance Human | Publish and import on a named development Shard, compare both template sizes with the source data, inspect OBJECT_FIELD_SCALE_X, and check their proportions in a stock client. |
| 70 | #532Meeting stones are merged; the real-client check list remains.PR #605 shipped the queue and matching on Realm-core, the Roster Revision Relay and the Gateway handlers. CI runs both cross-shard Gateway durable tests. Confidence: high. Issue updated 2026-09-23. Blocked by - Real 1.12.1 client check
- Named-host deploy
PR #605 | 2 | 3 | 2 | 3.0 | Human acceptance Human | Re-import the gameobjects family, run debug_repair_after_publish, then run docs/meeting-stone-client-check.md with a real client. |
| 71 | #53A public demo Realm still has no named host, restore drill, or runbook; recent work only added SpacetimeDB history pruning and pre-auth hardening.PR #586 added a prune script and systemd timer so the Realm disk stops filling, and PRs #410 and #416 hardened logon and the Gateway. No backup or restore procedure exists in the repository, and the Argus test Realm backup service has reported a failure since 2026-09-04 with its timer disabled. Importance drops to 3 because Argus now exercises many of these operations as a test Realm. Confidence: high. Issue updated 2026-08-11. Blocked by - No named public host or deployment target is authorized
- Backup and restore behavior has not been demonstrated
- Gateway graceful shutdown (#64) for clean restarts
PR #410 PR #416 PR #586 | 3 | 3 | 5 | 1.8 | Human acceptance Human | Split the work into a reviewed public-host runbook and reversible automation, starting with a working backup and restore drill on Argus. An Operator names the public host and approves the first deployment. |
| 72 | #425Aura tick aborts after a due aura is removedA creature death can remove a due aura before the scheduler advances its old snapshot. The fix advances only rows that still exist, so death and unrelated periodic effects commit together. Confidence: high. Issue updated 2026-09-05. PR #435 | 5 | 5 | 2 | 12.5 | Done Codex | Closed on GitHub. Preserve the recorded implementation evidence. |
| 73 | #63Concurrent promotions now reuse one active Loot Roll and preserve its complete vote set.Concurrent Gateway promotions could insert duplicate active Loot Rolls and vote sets on Realm-core. Merged #439 makes the authoritative insertion reuse the existing active roll and preserve its votes. Post-resolution replay remains a separate decision in #441. Confidence: high. Issue updated 2026-09-07. PR #439 | 5 | 4 | 3 | 6.7 | Done GPT-5.6 Sol, PR completion agent | Complete. Concurrent-promotion SQL acceptance passed in merged #439. Post-resolution replay remains in #441. |
| 74 | #61Realm-core owns the Account generation. Competing live admission is refused, and stale gameplay, Transfer completion and cleanup cannot remove the winning Character.This removes the ownership race between independent Gateways. One live Account Claim and retained Shard generations enforce the invariant through the same transactions that perform gameplay and cleanup. Confidence: high. Issue updated 2026-09-08. - https://github.com/LyraCoreProject/LyraCore/issues/61. The issue identifies stale disconnect cleanup as a cross-process Character corruption path.
- https://github.com/LyraCoreProject/LyraCore/blob/a6e7119484e35c8779f0f013af7dadafbc293ce7/gateway/src/stdb/account_sessions.rs#L18-L47. SessionEpochs remains process-local state.
- https://github.com/LyraCoreProject/LyraCore/blob/a6e7119484e35c8779f0f013af7dadafbc293ce7/gateway/src/stdb/connection.rs#L2552-L2560. Coordinator claim_session and release_session delegate to that local map.
- https://github.com/LyraCoreProject/LyraCore/blob/a6e7119484e35c8779f0f013af7dadafbc293ce7/gateway/src/stdb/world_store.rs#L227-L231. Bound identity is now deterministic per Account, so that part no longer differs between Gateway processes.
- Issue #61 states the two-Gateway stale-disconnect corruption directly.
- The maintained report already identifies a Realm-core-owned generation or lease and the losing-socket test as the bounded solution.
- CODING_STANDARDS.md assigns realm-wide Session state to Realm-core and requires atomic Durable Requests.
- Local T1 and T2 Tickets establish the two-Gateway ownership path and integration checks. Design review requires tokens on queued movement, gameplay, cleanup and Transfer requests. Every configured Shard must acknowledge the new generation before admission; an unavailable Shard therefore prevents admission.
- A disposable Standalone with two independent Coordinators reproduced the current defect: both logins succeed, then delayed and repeated logout from the older Gateway deletes the newer Character entity. The test failed with zero live entities where one was required. Durable ownership implementation is in progress.
- The first durable replacement test now passes: a competing live claim is refused, an expired claim is replaced, and delayed old cleanup and a stale combat request leave the winning Character intact. The agent is integrating approved main and proving socket-loop, queued movement and Transfer cases.
- The encrypted World Session case refused a competing live claim and preserved the successor after expiry and old cleanup. Self-review found that an ownership-loss message could wait behind a blocked writer; the agent is replacing it with direct shutdown through an owned socket clone and testing that case before publication.
- Cross-repository audit found three Headless Client shell calls still using bare guids. Compatible argument encoding and refusal-safe party cleanup are published in wire-harness #11 with four passing offline shell checks. The core implementation will include its reviewed release pin.
- The expiry fixture found that identity lookup can select the wrong live entity when legacy rows share an identity. The implementer is passing the already resolved Character entity into the shared logout body and testing duplicate identities. Renewal work also moves outside the blocking pool used by active World Sessions.
- At 2f6b96d, all 1,496 Module, 1,302 Gateway and 351 importer unit tests pass, plus 156 shared tests and 121 Gateway integration/parity checks. Strict workspace lint passes. The encrypted World Session proof covers competing admission, old socket closure and renewal with a full Tokio blocking pool. Independent routing review found no missing immutable ownership token. Binding comparison and offline preflight are the remaining local gates.
- Initial Rust CI passed. Durable CI failed before two fixtures connected because parallel Standalone launches could not read their signing key; three Account durable cases passed. The implementer is fixing fixture isolation and integrating a345555. All local unit, lint, formatting, 986-binding and offline preflight gates passed before publication. Private Account Claim/Fence tables and reducer argument changes require human schema review after checks pass.
- The five Account durable cases pass with four concurrent test threads after private signing-key isolation. The integration with merged party cleanup retains SessionActor in the new Coordinator clone and deletion LEAVE path. A literal two-process smoke check is prepared on new owned Standalone fixtures.
- https://github.com/LyraCoreProject/LyraCore/pull/471#issuecomment-5575251072. Both directions of the literal two-process acceptance pass with frozen artifact hashes.
- https://github.com/LyraCoreProject/wire-harness/pull/12. Corrects root's alpha9 structured-GUID advice after the real CLI refused a JSON string; an exact value above 2^53 is verified durably.
- The earlier Transfer review response was incomplete: production Transfer ids equal Character guids, masking an incorrect Actor fallback. A real Coordinator test with Transfer 7001 and Character 1 reproduces STALE_WORLD_SESSION for the valid owner. Four wrappers now retain the bound Character Actor while preserving the Transfer id; valid completion and all four stale-owner Refusals pass. Final integrated checks are running.
- https://github.com/LyraCoreProject/LyraCore/pull/471#issuecomment-5575933410. Published 7177b25 includes main 34e9a35 and Headless Client alpha11. All combined local checks pass: 990 bindings, 1,501 Module unit tests, 1,322 Gateway unit tests, 121 integration/parity tests, six Account and four item-stat durable cases, four Gateway durable regressions, strict workspace lint, formatting and preflight.
- https://github.com/LyraCoreProject/LyraCore/pull/471#issuecomment-5576175126. The final test-only follow-up 9dd2955 fixes both full-review suggestions: observe the blocked socket syscall before shutdown, and exercise tokenless deletion while preserving both closed generation-2 rows. Both fixtures, strict Gateway and Module lint, and formatting passed. Production, schema and bindings are byte-identical to fully checked 7177b25.
- https://github.com/LyraCoreProject/LyraCore/pull/471#issuecomment-5576251573. The actual incremental review covers 9dd2955 with no actionable findings; all 16 threads are resolved. All seven statuses passed at 22:37 UTC, including the full Module durable suite and four Gateway cases. GitHub reports CLEAN and MERGEABLE. Human review of the two private Account tables and SessionActor ABI was requested at 22:38 UTC under docs/danger-zones.md section 1.
- https://github.com/LyraCoreProject/LyraCore/pull/471#issuecomment-5579391416. After the concrete schema and SessionActor ABI were presented, the user authorized merging if Codex was confident. Root rechecked unchanged head 9dd2955, all seven successful statuses, actual review coverage, resolved threads and CLEAN/MERGEABLE state, then merged as c6003e5 on 2026-09-08 at 04:47:01 UTC.
- https://github.com/LyraCoreProject/LyraCore/issues/61#issuecomment-5579398466. Closed at 04:47:32 UTC with the two-Gateway process proof and final durable regressions linked.
PR #471 | 5 | 5 | 4 | 6.2 | Done GPT-6 Astra implementer; Codex merged and closed the issue | Closed with repeatable two-Gateway evidence. Use the documented coordinated rollout when deploying. |
| 75 | #441A delayed START can recreate a resolved Loot RollPR #439 is merged, so the listed prerequisite is stale. Stable promotion identity and durable replay refusal are distributed idempotency work that an agent can design and implement. Human review is required only before a schema change ships. Confidence: high. Issue updated 2026-09-05. Blocked by - Human schema review under docs/danger-zones.md section 1 after current-head CI and review pass.
- https://github.com/LyraCoreProject/LyraCore/issues/441
- https://github.com/LyraCoreProject/LyraCore/pull/439
- gateway/src/world/loot.rs promote_one sends START using corpse_guid and slot, then clears the staging row after success.
- module/src/loot/rolls.rs insert_roll_rows deduplicates only against a live corpse and slot row, while cleanup_roll deletes the row and votes.
- The issue provides the required replay, later-valid-roll, cleanup-boundary, and settlement-Gate tests.
- PR #439 is already merged into the report base revision.
- A private durable test reproduced delayed START recreating a resolved roll on unchanged main. Six durable checks now pass with a receipt keyed by source database identity, corpse and slot, retaining the greatest source roll id. Private old-to-new Module publish tests pass for drained legacy state and refusal of unidentifiable legacy promotions. Receipt storage grows with distinct corpse keys.
- Draft #461 at fae0189 passed 1485 Module and 1419 Gateway tests, six durable regressions, strict lint, preflight and all 970 generated bindings. Private upgrade checks proved deadline drain, additive publish, ZERO refusal, old argument-list refusal and retained source sequence. Root owns PR follow-up.
- PR #461 at 1834a57 passes all seven checks. Its initial XP test failure was reproduced on the baseline by reversing an unordered query; the fixture now removes duplicate spawns and asserts the one Character-killed creature. The upgrade finding remains open.
- The separate CLI checkpoint checks actual table names and refuses the whole batch on legacy rolls, votes, withheld loot or unreadable state. All 722 CLI tests and Rust 1.85 checks pass; exact COUNT query output was verified on an owned fixture. A two-Shard baseline-to-current test proves settlement must finish before the upgrade and that the settled item and source sequence survive.
- lyracore-cli #58 merged as 5688972 after 722 local tests, Rust 1.85 checks and actual CodeRabbit review. The CLI refuses pending legacy rolls, votes and withheld loot before any publish. It requires Operator-enforced quiescence throughout the batch. Core integration pins reachable implementation d6601ec and is in progress.
- The rebased Loot Roll implementation preserves the approved property column before its new identity column. Full private generation produced 978 bindings. All six replay durable cases, 1,494 Module tests, 1,304 Gateway unit tests and 119 Gateway integration checks pass. A two-Shard 8a40989 upgrade proof preserved the settled item, property 117 and source sequence; old START arguments were refused.
- The CLI checkpoint is integrated at d6601ec. Its previous review thread is resolved. Rebase aea68d8 includes merged Binding fixture #468; Module, Gateway and replay fixture trees are byte-identical to locally checked 6d62bc0. The two-Shard upgrade proof preserves item property 117 and settled inventory. Actual review on this new head is still required.
- All seven checks and full CodeRabbit review passed at aea68d8. Requested human review of the appended default-ZERO source Identity, private permanent receipt table, reducer arguments, bindings and tested upgrade procedure. No approval is assumed.
- The maintainer explicitly reviewed and approved the schema at aea68d8. The published integration 034079a has identical Module, bindings, CLI pin and upgrade procedure. All 1,323 Gateway unit tests, 119 integration/parity checks, strict all-target/all-feature lint, formatting and diff checks pass. PR is ready; current CI and review are running.
- Merged #461 as 5f42e5a on 2026-09-07 at 20:18 UTC. The maintainer approved the schema, all seven checks and actual review passed, and issue #441 is closed.
PR #439 PR #461 | 5 | 5 | 4 | 6.2 | Done Codex, coordinating PR review | Complete. PR #461 merged after human schema approval and full checks; durable replay and later-generation tests pass. |
| 76 | #460Shifted Spell columns corrupt general imported effects and can omit the third effect.Real-data checks found the general importer reads an equipment mask as an effect and shifts valid effects by one slot. This affects core spell behavior. The Random Property Tracer has a narrow corrected reader that can guide the broader repair. Confidence: high. Issue updated 2026-09-07. - https://github.com/LyraCoreProject/LyraCore/issues/460
- importer/src/spell.rs documents the missing InterruptFlags column but incorrectly claims effect arrays resynchronize. push_spell_effect_rows and resolve_effect_kind use the shifted named arrays.
- Spell 7748 has raw effects [53,0,0] and inventory mask 1048608, while wow_dbc reads effects [1048608,53,0]. Spell 7747 has raw effect [6,0,0], aura [34,0,0], base points [14,0,0]; each named array is shifted by one slot.
- A source-shaped general-import test reproduced a phantom inventory-mask effect, shifted effects and a lost third effect. The source audit also found shifted reagents and truncated family flags in existing reads. The agent owns importer changes separately from #31 stat folds.
- Implementation f3fd65a is committed and locally checked. Four World Import Profile item outputs remain byte-identical. The general Spell comparison retains 22,357 headers, restores 874 third effects, removes 204 phantom effects and corrects targets, reagents, interrupt masks and full family masks. Actual imported ally buffs, Gouge and Stealth tests pass.
- Draft #465 is published at a0c86db on parent 8b72ddf. All 352 importer tests, the actual-source audit, three imported gameplay fixtures and the 49,307-row items stamp check pass. Seven source-dependent fixtures are ignored in the ordinary run and were run separately. Strict importer lint and formatting checks pass.
- The unstacked branch preserves Binding quest required-focus column 15 and hostile summon effects. It passes 357 importer tests and the actual-source audit. A durable Gouge fixture used a spell with a random miss chance; the revised fixture verifies guaranteed shared-pipeline damage with scheduled aura expiry disabled. Final checks are running.
- Published unstacked #465 at 32ac5c8. All final local importer checks and three imported gameplay cases pass. CI found a main integration gap: Binding quest fixture INSERT has 58 fields after the approved item template grew to 59. Codex owns adding its default-zero property column and rerunning the durable case.
- The Binding quest durable case passed after the fixture column correction. Published that one-line main repair separately as #468. CodeRabbit found that source TARGET_NONE remains conflated with caster; an implementer is checking actual source effects and the smallest correct fallback before changes.
- The Binding fixture repair merged as #468. The implementer now owns the source target correction. Source TARGET_NONE must use compatible explicit target flags or its effect default, rather than caster. Actual source examples include Bear Form secondary effects and Slime.
- Head 74bfa36 is based on merged #468. All 358 importer tests, actual-source TARGET_NONE checks, Binding source audit and three imported gameplay durable cases pass. Strict importer lint and formatting pass. The target correction changes 4,589 effect targets with no other field or key changes; unsupported scripted effects retain the runtime fallback.
- Local 8a8d26d uses all 19 location codes from the pinned target classification. Actual client data gains 170 corrected target pairs. All 360 ordinary importer tests, the source audit and strict lint pass. Root checked the classification and found no blocker.
- Merged #465 as 044b935 after all seven checks and actual current-head review passed. Issue closure records the remaining Operator import steps; no existing Realm was accessed.
PR #465 | 5 | 5 | 4 | 6.2 | Done GPT-5.6 Sol, high effort, Spell target fix; Codex final review | Closed after #465 merged. Operator follow-up is recorded: reimport Spells, rebuild Base Snapshots and review affected Package Deltas before replay. |
| 77 | #71Durable Shard GUID Ranges prevent new item collisions and preserve Transfer identity; source and migration design are complete.PR #473 merged the durable allocator and committed migration plan after all CI and review findings were resolved. The issue requested source and design work, so it is closed. The authorized legacy-state audit and coordinated deployment remain operational follow-through. Confidence: high. Issue updated 2026-09-08. PR #473 | 5 | 3 | 5 | 3.0 | Done GPT-6 Astra, high effort, item GUID implementer | Source and design complete; #71 closed. Before deployment, an authorized Operator must audit legacy GUIDs and permanent ranges, then follow the coordinated rollout plan. |
| 78 | #70A fresh clone now runs a four-database sharded fixture, while the requested Northshire region seam was deliberately retired.The issue's product goal, showing Sharding out of the box, is shipped in an evolved form. dev up publishes Eastern Kingdoms, Kalimdor, an Instance Pool, and Realm-core, so contributors exercise both continental and instance routing. The same docs explicitly record removal of the second Elwynn database and walkable Northshire seam. Keeping the exact original issue open would reverse a later Operator decision. Confidence: high. Issue updated 2026-09-07. PR #111 PR #321 | 4 | 5 | 1 | 20.0 | Done Codex | Closed with current-source evidence. See the GitHub triage comment. |
| 79 | #51The old away-Shard subscription path is gone, and the replacement shared connection model enforces ghost and stealth visibility.The issue targets ensure_away and fold_home_shard, neither of which exists. The Gateway now keeps shared Shard connections and selects visible peers through WorldView. ViewerGates carries the viewer's ghost state, and peer creation consults ghost and stealth state before sending CREATE. A later merged fix also restores a peer's aura state when stealth ends. Confidence: high. Issue updated 2026-09-07. PR #421 PR #432 | 4 | 4 | 1 | 16.0 | Done Codex | Closed with current-source evidence. See the GitHub triage comment. |
| 80 | #76The blocking-pool limit is now configured, logged, documented, and enforced before a socket enters Tokio's blocking queue, satisfying the issue's stated completion rule.Current code and PR 410 go beyond the original acceptance criteria by sharing a non-waiting capacity across both listeners. The title's old 477 and 535 observations remain historical evidence, not an open implementation request. Confidence: high. Issue updated 2026-09-07. PR #410 | 4 | 4 | 1 | 16.0 | Done Codex | Closed with current-source evidence. See the GitHub triage comment. |
| 81 | #404Package casts now protect fixture creatures.The cast entry points did not consistently apply the shared creature identifier policy. Merged #434 protects fixture creatures across cast declarations, including partial updates. Confidence: high. Issue updated 2026-09-05. PR #434 | 4 | 4 | 1 | 16.0 | Done Codex | Closed on GitHub. Preserve the recorded implementation evidence. |
| 82 | #80Cross-map teleport now deletes public and staged motion with the live entity.Before #438, cross-map teleport removed staged motion and the live entity but left public motion behind. The merged cleanup removes both motion forms with the entity; the durable regression proves the result. Confidence: high. Issue updated 2026-09-07. PR #438 | 4 | 3 | 1 | 12.0 | Done GPT-5.6 Sol, PR completion agent | Complete. PR #438 merged after the durable regression, all other checks and review passed. |
| 83 | #469Temporary summon lifetime callbacks collide with their retained unique row; a Binding quest poll also races corpse removal.Report-only CI on current main captured a unique-key panic in expire_eventai_summon. This can interrupt recurring lifetime checks. The same run exposed a transient dead-entity assertion in the Binding fixture. Both have an isolated implementation owner. Confidence: high. Issue updated 2026-09-07. - https://github.com/LyraCoreProject/LyraCore/issues/469
- https://github.com/LyraCoreProject/LyraCore/actions/runs/34154396306
- The uploaded Standalone log records DatastoreInsertBsatn errno 12 inside expire_eventai_summon at 19:10:22 UTC. Its replacement INSERT retains the unique creature_guid while the current row still exists.
- The original Module failed with a living summon missing its expiry row; its owned log confirms the unique-key panic. The fix passes repeated lifetime checks, stable life_seq, durable quest credit and corpse removal. All 1,496 Module unit tests, strict all-target/all-feature lint, formatting and independent review pass. No schema change.
- The original Module failed with a missing expiry row and an owned log confirms the unique-key panic. The fix and repeated lifetime checks pass all CI. CodeRabbit requested actual stale-callback and natural-expiry coverage from the issue acceptance criteria. A Sol implementer owns those additions.
- Published 47184b7 on merged Loot replay 5f42e5a. The stale-callback mutation reproduces the unique-key panic; the corrected durable regression and natural expiry pass. All 1,495 Module tests, 1,442 applicable Gateway tests, strict lint and 979 generated binding comparisons pass. Actual CodeRabbit review completed without actionable comments; durable CI remains pending.
PR #470 | 4 | 5 | 2 | 10.0 | Done GPT-5.6 Sol, high effort, expiry regression cases; Codex final review | Closed after #470 merged. Preserve the mutation and durable regression evidence. |
| 84 | #399Replay no longer needs client data for a completed planCurrent CLI main reads target provenance before resolving client data. The script-only no-op test already runs without client data. The original control-flow complaint appears fixed by the replay work. Confidence: high. Issue updated 2026-09-05. PR #400 PR #406 | 3 | 3 | 1 | 9.0 | Done Codex | Closed on GitHub. Preserve the recorded implementation evidence. |
| 85 | #346Finish enforcing the repository checks in CIMerged #419 and #426 supply the repository checks required by the original checklist. Current workflow evidence is recorded in the closure comment. Confidence: high. Issue updated 2026-09-07. PR #419 PR #426 | 4 | 5 | 3 | 6.7 | Done Codex | Closed with current-source evidence. See the GitHub triage comment. |
| 86 | #353Make workspace lint checks pass and block regressionsPR #419 is merged. The blocking clippy, formatting and Rust jobs passed on main b4c17c4; the GitHub closure cites that run. Confidence: high. Issue updated 2026-09-07. PR #419 | 4 | 5 | 3 | 6.7 | Done Codex | Closed with the merged PR and passing main workflow as evidence. |
| 87 | #368Detect generated Gateway binding drift in CISubscribed-table parity left other generated definitions unchecked. Merged #448 adds reproducible full binding generation and comparison, so CI now catches that drift. Confidence: high. Issue updated 2026-09-07. PR #448 | 4 | 5 | 3 | 6.7 | Done GPT-5.6 Sol, ownership check agent | Complete. Merged #448 generates and compares every Gateway binding file, with documented normalization. Its baseline contained 967 files. |
| 88 | #341Service unit parsing misses continued directivesThe former parser split physical lines, which could hide conflicting continued directives. The merged CLI parses logical lines, including continuation comments, and rejects conflicting units before host changes. Confidence: high. Issue updated 2026-09-07. PR #452 | 4 | 3 | 2 | 6.0 | Done GPT-5.6 Sol, high effort, CLI agent | Complete. CLI #57 is adopted by merged core pin #452. |
| 89 | #31Random Properties now import, roll once, survive every item path, reach the client, and apply every specified Stat Kind; only live-client and imported-data acceptance remains.PR #462 merged the catalogue import, weighted selection, per-instance persistence, Transfer compatibility, item movement, wire projection, and the first stat families. PR #466 merged health, mana, resistances, weapon damage, avoidance, regeneration, spell power, healing, and character-sheet resistance projection. The remaining checks require imported data and a stock client. Confidence: high. Issue updated 2026-09-28. Blocked by - A named imported development Realm and real 1.12.1 client. No existing Realm update is authorized.
PR #462 PR #466 PR #583 | 3 | 4 | 2 | 6.0 | Done Codex | Closed on GitHub as completed. Suffix stat lines shipped in PR #583. |
| 90 | #50Classify Character ownership through unit-shaped and bare guid fieldsMerged #445 classifies unit-shaped and bare guid columns, matches table-specific ownership markers and excludes comments and test code. Its Architecture Test catches Character state omissions during cleanup or Transfer. Confidence: high. Issue updated 2026-09-07. PR #445 | 4 | 4 | 3 | 5.3 | Done GPT-5.6 Sol, ownership check agent | Complete. The Architecture Test covers the wider field census and rejects missing ownership markers or explicit exclusions. |
| 91 | #75Raid benchmark reports dead and unknown Characters at each measurement window.Core #449 adopts alpha.6, including the sparse CREATE correction. Reporting satisfies the issue's stated completion rule without automatic recovery. Confidence: high. Issue updated 2026-09-07. PR #449 | 4 | 4 | 3 | 5.3 | Done GPT-5.6 Sol, medium effort, benchmark agent | Complete. Automatic recovery can be a separate feature if requested. |
| 92 | #340Service Reconciliation misses effective command driftThe former verifier omitted effective command arguments and drop-in provenance. The merged CLI compares typed systemd ExecStart data with the tracked command, preserves argument boundaries and reports drop-ins on mismatch. Confidence: high. Issue updated 2026-09-07. PR #452 | 4 | 4 | 3 | 5.3 | Done GPT-5.6 Sol, high effort, CLI agent | Complete. CLI #57 is adopted by merged core pin #452. |
| 93 | #398Generated Package Deltas and Runtime Scripts now have accurate trust-review counts in the pinned CLI.The old review counted source filenames and missed prebuilt Script Artifacts. Correct accounting also separates physical Delta artifacts from their Import Family memberships. This was more work than replacing the stale Datascript line. Confidence: high. Issue updated 2026-09-07. PR #447 | 3 | 4 | 3 | 4.0 | Done GPT-5.6 Sol, CLI completion agent | Complete. CLI #56 and core pin #447 are merged; 701 CLI tests and all core checks passed. |
| 94 | #45The old question about per-Character AOI subscription cost no longer matches the event relay design, which now uses one stable event subscription per Shard and computes viewer audiences in Gateway memory.PR #421 removed the fan-out pattern that motivated the table-collapse decision. Its 2,000-Character benchmark reduced queued jobs from 4,000,000 to 336,124 in the distributed case, so the proposed comparison would measure an obsolete architecture. Confidence: high. Issue updated 2026-09-07. PR #421 | 2 | 2 | 1 | 4.0 | Done Codex | Closed with current-source evidence. See the GitHub triage comment. |
| 95 | #72SpellCastEvent has an explicit kind and preserves legacy decoding; the source change is complete.PR #476 appends the default-zero kind, stamps typed constructors and dispatches explicitly while keeping legacy payload fields. It merged after human schema approval, independent review and all CI. Module-before-Gateway rollout remains an operational step. Confidence: high. Issue updated 2026-09-08. PR #476 | 3 | 3 | 3 | 3.0 | Done GPT-5.6 Sol, high effort, Spell event implementer | Source complete; #72 closed. Publish the Module before starting the new Gateway during an authorized rollout. |
| 96 | #559The three random test failures are fixed on packages main.Packages #58 asserts the Fireball cast outcome instead of one cast's damage. c08a784 and packages #56 had already fixed the facing and recovery tests. Confidence: medium. Issue updated 2026-10-03. PR #58 | 2 | 3 | 2 | 3.0 | Done Claude | Closed on GitHub with evidence. |
| 97 | #534Bots in a Raid read party facts and take Companion Orders across the whole Raid.Core #604 and #606 lift the bound to the Group kind cap. Packages #60 proves a 10-member Raid heal, an Assist across Subgroups and the 80/81 threat bound. Confidence: medium. Issue updated 2026-10-03. PR #604 PR #606 | 2 | 2 | 3 | 1.3 | Done Claude | Closed on GitHub with evidence. |
| 98 | #48The reported warm-handoff seam feel belongs to the retired region tier; the current Gateway has no seam state machine to tune.The repository removed sub-map regions and mid-walk warm handoff. All recorded angle tests also passed before that removal, so further work on the old hysteresis design would target code that no longer exists. Confidence: high. Issue updated 2026-09-07. | 1 | 1 | 1 | 1.0 | Done Codex | Closed with current-source evidence. See the GitHub triage comment. |
| 99 | #56The requested walkable-seam presentation polish has no active region seam after the region tier was retired.Abrupt range-leave presentation and repeated crossings were properties of the removed Northshire-to-Elwynn region handoff. Current fixture Shard crossings are escrowed continent or instance transfers, not an overlapping walkable view merge. Keeping this issue open implies an active feature that the current topology deliberately removed. Confidence: high. Issue updated 2026-09-07. | 2 | 1 | 3 | 0.7 | Done Codex | Closed with current-source evidence. See the GitHub triage comment. |
| 100 | #49The seam operations console has no active region tier to operate; only the underlying load samples remain useful.The fixture and production topology no longer activate region assignments. Current documentation explicitly retires the walkable region seam and keeps continental and instance routing. Building the requested editor now would put a large UI around inert topology data. Shard load telemetry can support a smaller future operations surface after #73 selects one. Confidence: high. Issue updated 2026-09-07. Blocked by - The region tier was retired.
- Issue #73 has not selected an operations surface.
| 2 | 1 | 5 | 0.4 | Done Codex | Closed with current-source evidence. See the GitHub triage comment. |