diff --git a/docs/triage/README.md b/docs/triage/README.md index fa68fcca6..9739c4ca5 100644 --- a/docs/triage/README.md +++ b/docs/triage/README.md @@ -1,7 +1,8 @@ # Issue order and delivery -The [published report](https://1u1gh8ximdga.postplan.dev) is Codex's working dispatch list for -the GitHub issue queue. GitHub remains authoritative for issue state, review comments and CI. +The [published report](https://1u1gh8ximdga.postplan.dev) is the report owner's working dispatch list +for the GitHub issue queue. `report_owner` in `issues.json` names that agent. GitHub remains +authoritative for issue state, review comments and CI. `issues.json` holds the assessments, owners, next actions and review state. `report.html` is generated from it. The report explains the scoring rule. Treat scores as estimates and revise them when diff --git a/docs/triage/issues.json b/docs/triage/issues.json index 525ac1c36..bcbe03f82 100644 --- a/docs/triage/issues.json +++ b/docs/triage/issues.json @@ -1,13 +1,13 @@ { - "updated_at": "2026-09-08 08:59 UTC", - "base_revision": "994f86dabbaa861e88791d9ee2caed5451eff792", - "status_note": "All 65 open issues have current assessments. Source PRs #473, #474, #476, #477 and #479 merged after CI and review; #71 and #72 are closed. Canonical door performance, imported-data and client acceptance remain open. The next loot-recovery work needs a combined design review of settlement retirement and group-disband recovery.", - "monitoring_note": "Codex owns this report and the dispatch order. This source batch is complete; every remaining issue retains an owner and next action. Monitoring runs during active Codex work sessions. No unattended scheduler is installed. The report and its repository source preserve the work between sessions; refresh GitHub state before the next batch.", + "updated_at": "2026-10-05 16:40 UTC", + "base_revision": "f454a983b4cf76e6c72cd58c54b74a8066f30114", + "status_note": "The 2026-10-02 backlog session closed #559 and #534, merged meeting stones (#532) and both halves of the #570 stop fix. #532 and #570 wait on real-client checks. Two follow-ups are ready: #607 (shared group event snapshot) and #608 (snap-back on a path renewal). No Core PR is open.", + "monitoring_note": "Claude owns this report and the dispatch order from 2026-10-02. Every open issue has an owner and a next action. Monitoring runs during active work sessions. No unattended scheduler is installed. Refresh GitHub state before the next batch.", "focus": [ - "Use the existing diagnostics for current capacity, crash and movement verification on approved development targets. Capture evidence for #59, #60 and #424 before choosing another runtime change.", - "Review the two dependent #84 designs together before implementation: durable settlement and receipt retirement, then source Group participation and disband recovery. Preserve the stated gameplay rules and keep any deliberate narrowing explicit.", - "Run the canonical collision and sight-ray benchmarks for #113 and imported FactoryDoor acceptance for #114 on their approved targets. Their source is complete.", - "Coordinate authorized rollout work: audit legacy item GUIDs and permanent ranges, publish the Spell Module before the Gateway, and regenerate imported navigation data plus derived coverage for #479." + "Agent work: #607 and #608 are ready. Packages issue #62 tracks two tests that fail at random in the durable jobs.", + "Real-client checks: meeting stones (#532, docs/meeting-stone-client-check.md, after a gameobjects re-import and debug_repair_after_publish) and the bot stop point (#570).", + "Hand-play a loot take on Argus for #584. If taking an item does nothing for a stock client, the issue moves to ready.", + "Measure on approved development targets before choosing another runtime change: #77, #88, #86 and #105. The disconnect, crash and motion runs (#59, #60, #424) need an Operator and a named host." ], "issues": [ { @@ -43,8 +43,8 @@ "effort": 4, "confidence": "medium", "disposition": "verify", - "rationale": "PR #437 moved the diagnostic ahead of AOI audience selection and added per-Shard queue, callback, subscription, and pump signals. That proves the old warning could be a false positive. It does not explain or reproduce the reported 15-hour visible freeze, so speculative re-arm code would hide the missing diagnosis.", - "next_action": "Use the merged per-Shard diagnostics during a controlled reproduction or the next occurrence. Correlate queued movement, callback progress, subscription state, pump state, and peer visibility before choosing recovery behavior.", + "rationale": "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.", + "next_action": "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.", "blockers": [ "No current reproduction captures a stopped stream with the new diagnostics.", "A real-Realm capture needs a named host and explicit authorization." @@ -52,7 +52,9 @@ "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/424", "https://github.com/LyraCoreProject/LyraCore/pull/437", - "gateway/src/stdb/connection.rs and gateway/src/stdb/movement_batch.rs now report per-Shard delivery state; PR #437 explicitly leaves recovery behavior unchanged." + "gateway/src/stdb/connection.rs and gateway/src/stdb/movement_batch.rs now report per-Shard delivery state; PR #437 explicitly leaves recovery behavior unchanged.", + "gateway/src/stdb/subscriptions.rs:528: comment on the dead-relay signal (movement submitted, callback almost never fired).", + "No commit since 2026-09-04 changes the relay callback path in gateway/src/stdb/connection.rs or movement_batch.rs." ], "related_prs": [ 437 @@ -60,7 +62,7 @@ "url": "https://github.com/LyraCoreProject/LyraCore/issues/424", "updatedAt": "2026-09-04T06:20:58Z", "github_state": "open", - "owner": "Codex tracks; Operator capture needed" + "owner": "Human" }, { "number": 404, @@ -142,14 +144,14 @@ }, { "number": 373, - "summary": "Observe believable imported bots and a fresh Deadmines entry in the real client.", + "summary": "Observe believable imported bots and a fresh Deadmines entry in the real client; the automated hour is accepted, the attended session is not done.", "importance": 3, "gain": 3, "effort": 2, "confidence": "high", "disposition": "human", - "rationale": "Mechanics tests cannot establish believable motion, plausible population behavior, or a clean first entry into a newly created instance. The issue has a combined one-hour runbook. Package #17 has closed, while the missing Smite content in package #18 remains open.", - "next_action": "After package #18 ships and the approved imported Realm carries it, run Parts A and C of the combined acceptance session and retain the one-hour log evidence.", + "rationale": "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.", + "next_action": "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.", "blockers": [ "https://github.com/LyraCoreProject/packages/issues/18", "Named imported test Realm and a real 1.12.1 client." @@ -157,13 +159,21 @@ "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/373", "https://github.com/LyraCoreProject/LyraCore/issues/373#issuecomment-5509904813", - "https://github.com/LyraCoreProject/packages/issues/17 is closed; package issue #18 remains open." + "https://github.com/LyraCoreProject/packages/issues/17 is closed; package issue #18 remains open.", + "docs/research/playerbots-client-acceptance.md: accepted v19 hour (25 bots, 3,600 s); attended Follow step failed on 2026-09-16; rendered clipping pending.", + "docs/research/playerbots-table-retirement.md: legacy table retirement is held, so table names in the runbook can change.", + "https://github.com/LyraCoreProject/packages/issues/17 is closed; issue #18 (stomp) is open and affects Part C only." + ], + "related_prs": [ + 517, + 519, + 523, + 525 ], - "related_prs": [], "url": "https://github.com/LyraCoreProject/LyraCore/issues/373", "updatedAt": "2026-09-02T12:58:43Z", "github_state": "open", - "owner": "Operator and real-client reviewer" + "owner": "Human" }, { "number": 368, @@ -207,7 +217,8 @@ "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/367", "https://github.com/LyraCoreProject/LyraCore/pull/440", - "https://github.com/LyraCoreProject/LyraCore/issues/367#issuecomment-5571495033" + "https://github.com/LyraCoreProject/LyraCore/issues/367#issuecomment-5571495033", + "module/src/gameobject.rs:835, :868, :974: locked_shut is applied in the CHEST, GOOBER and DOOR/BUTTON arms; module/tests/goober_lock.rs covers the GOOBER refusal." ], "related_prs": [ 440 @@ -215,18 +226,18 @@ "url": "https://github.com/LyraCoreProject/LyraCore/issues/367", "updatedAt": "2026-09-07T13:39:51Z", "github_state": "open", - "owner": "Operator and real-client reviewer" + "owner": "Human" }, { "number": 366, - "summary": "Verify Deadmines choreography, including Smite's curated stomp, in the real client.", + "summary": "Verify Deadmines choreography, including Smite's stomp, in the real client once Package #18 ships.", "importance": 3, "gain": 4, "effort": 2, "confidence": "high", "disposition": "human", - "rationale": "The dungeons Package has durable tests, but visible doors, Sneed's transition, the cannon breach, Smite's movement, weapon displays, yells, and stomp still need a client pass. The old stomp decision is settled: use the curated spell mapping tracked in package #18.", - "next_action": "Finish package #18, then combine this checklist with #373 and #114 on an imported map 36 Realm, including a fresh instance entry.", + "rationale": "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.", + "next_action": "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.", "blockers": [ "https://github.com/LyraCoreProject/packages/issues/18", "Named imported map 36 Realm and a real 1.12.1 client." @@ -234,13 +245,16 @@ "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/366", "https://github.com/LyraCoreProject/LyraCore/issues/366#issuecomment-5499801352", - "https://github.com/LyraCoreProject/LyraCore/issues/373" + "https://github.com/LyraCoreProject/LyraCore/issues/373", + "https://github.com/LyraCoreProject/packages/issues/18 is open.", + "docs/research/playerbots-client-acceptance.md: headless Map 36 route passed; rendered geometry and clipping still need a real client.", + "docs/vmap-rollout.md: Map 36 static geometry covers only the entry and exit slice." ], "related_prs": [], "url": "https://github.com/LyraCoreProject/LyraCore/issues/366", "updatedAt": "2026-09-01T20:12:38Z", "github_state": "open", - "owner": "Operator and real-client reviewer" + "owner": "Human" }, { "number": 353, @@ -347,8 +361,8 @@ "effort": 1, "confidence": "high", "disposition": "human", - "rationale": "PR #358 delivered the schema, whole-plan reconciliation, ordering, failure containment, and durable tests. The script replay gap closed through #393 and PRs #400 and #406. Production evidence already found the playerbots scripts on every Shard, but no recorded session proves the login effect fires and disappears after disablement.", - "next_action": "Run the existing install, login, disable, replay, and login sequence on an approved Realm. Record the effect and the absence of script rows on every target Shard after disablement.", + "rationale": "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.", + "next_action": "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.", "blockers": [ "Named test Realm and permission for Package changes." ], @@ -356,7 +370,9 @@ "https://github.com/LyraCoreProject/LyraCore/issues/318", "https://github.com/LyraCoreProject/LyraCore/pull/358", "https://github.com/LyraCoreProject/LyraCore/issues/393 is closed; PRs #400 and #406 carry script replay in the pinned CLI.", - "module/tests/package_runtime_scripts.rs records four durable integration cases." + "module/tests/package_runtime_scripts.rs records four durable integration cases.", + "docs/research/playerbots-execution.json: the held retirement plan removes the personality script, so it is not a stable test script.", + "No change to module/src/script_binding.rs or module/src/package_import/script.rs since the first audit." ], "related_prs": [ 358, @@ -366,7 +382,7 @@ "url": "https://github.com/LyraCoreProject/LyraCore/issues/318", "updatedAt": "2026-09-03T07:17:46Z", "github_state": "open", - "owner": "Operator" + "owner": "Human" }, { "number": 313, @@ -384,13 +400,14 @@ "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/313", "https://github.com/LyraCoreProject/LyraCore/issues/313#issuecomment-5513903216", - "The proposal identifies positional keys and a replay-order dependency that cannot be inferred from current code alone." + "The proposal identifies positional keys and a replay-order dependency that cannot be inferred from current code alone.", + "importer/src/dbc.rs: only #602 changed it since the first audit (spell rank links, the spell stream, out of scope here). No Package Delta hook for these tables exists." ], "related_prs": [], "url": "https://github.com/LyraCoreProject/LyraCore/issues/313", "updatedAt": "2026-09-02T17:48:43Z", "github_state": "open", - "owner": "Maintainer decision" + "owner": "Human" }, { "number": 304, @@ -408,7 +425,9 @@ "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/304", "https://github.com/LyraCoreProject/LyraCore/pull/392", - "importer/src/ui_transform.rs and importer/src/pack_client.rs implement the accepted transform and provenance rules." + "importer/src/ui_transform.rs and importer/src/pack_client.rs implement the accepted transform and provenance rules.", + "https://github.com/LyraCoreProject/LyraCore/issues/304#issuecomment-5513890822", + "importer/src/ui_transform.rs: no behavior change since PR #392 and its follow-up slices." ], "related_prs": [ 392 @@ -416,25 +435,29 @@ "url": "https://github.com/LyraCoreProject/LyraCore/issues/304", "updatedAt": "2026-09-02T17:47:42Z", "github_state": "open", - "owner": "Operator and real-client reviewer" + "owner": "Human" }, { "number": 272, - "summary": "Resident creature movement now replays after CREATE; queue shedding and sensing cadence need evidence before changes.", + "summary": "Resident creature movement replays after CREATE; the motion-flush shedding policy and the 4 s sensing cadence still need a maintainer choice.", "importance": 3, "gain": 4, "effort": 2, - "confidence": "high", - "disposition": "verify", - "rationale": "PR #450 fixed the concrete mid-leg CREATE gap and preserved the remaining work. Current code still sheds a motion flush at high egress depth while retaining the latest pending leg, and proximity sensing still runs every eight 500 ms ticks. The issue offers competing policy changes, so a current stock-client recording should decide whether either symptom remains.", - "next_action": "Record engage, approach, and kite movement on current main after #450. If delayed movement remains, correlate egress depth and sense timing, then split the reproduced cause into its own bounded fix.", + "confidence": "medium", + "disposition": "decision", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "Controlled reproduction and stock-client observation on current main." + "Maintainer choice on shedding and sensing cadence.", + "Controlled stock-client recording." ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/272", "https://github.com/LyraCoreProject/LyraCore/pull/450", - "gateway/src/stdb/world_view.rs retains pending movement when a flush is shed; module/src/creatures/ai.rs retains the eight-tick sensing cadence." + "gateway/src/stdb/world_view.rs retains pending movement when a flush is shed; module/src/creatures/ai.rs retains the eight-tick sensing cadence.", + "gateway/src/stdb/world_view.rs:1767: maybe_queue_motion_flush sheds at depth and keeps the latest pending leg.", + "module/src/creatures/ai.rs:428: SENSE_EVERY_N_TICKS = 8.", + "gateway/src/stdb/subscriptions.rs:2993: append_resident_creature_after_create (the #450 fix)." ], "related_prs": [ 450 @@ -442,7 +465,7 @@ "url": "https://github.com/LyraCoreProject/LyraCore/issues/272", "updatedAt": "2026-09-07T14:21:21Z", "github_state": "open", - "owner": "Codex tracks; real-client reproduction needed" + "owner": "Human" }, { "number": 202, @@ -460,42 +483,46 @@ "evidence": [ "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." + "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." ], "related_prs": [], "url": "https://github.com/LyraCoreProject/LyraCore/issues/202", "updatedAt": "2026-08-13T08:21:33Z", "github_state": "open", - "owner": "Real-client reviewer" + "owner": "Human" }, { "number": 198, - "summary": "Retire the global vmap Gate after current World Import Profile rollout and matching navigation evidence.", + "summary": "Retire the global vmap Gate after current rollout and navigation evidence; Map 36 coverage rules now need a per-map answer.", "importance": 3, "gain": 3, "effort": 4, "confidence": "high", "disposition": "dependency", - "rationale": "The global Gate remains by design. The issue and its old comment use a retired destination example, but docs/vmap-rollout.md now defines the supported World Import Profiles and excludes the Instance Pool from bounded-profile vmaps. No further topology decision is needed. Source removal still depends on accepted rollout and navigation coverage from #184 and #195.", - "next_action": "Complete #184 and #195 with the current alliance-eastern and alliance-kalimdor World Import Profiles. Then remove the global Gate, stale reducer and bindings, and runbook steps through one centralized per-map eligibility rule.", + "rationale": "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.", + "next_action": "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.", "blockers": [ "Accepted rollout evidence from #184.", "Matching navigation coverage evidence from #195." ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/198", - "docs/vmap-rollout.md names lyracore and lyracore-world-1 as the World Shards and requires the Instance Pool to receive no bounded-profile generation.", - "module/src/vmap.rs still requires game_config.vmap_enabled plus an active generation." + "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." ], "related_prs": [ 192, 258, - 275 + 275, + 477, + 515 ], "url": "https://github.com/LyraCoreProject/LyraCore/issues/198", "updatedAt": "2026-09-01T08:55:50Z", "github_state": "open", - "owner": "Codex tracks dependencies" + "owner": "Claude" }, { "number": 196, @@ -513,7 +540,10 @@ "evidence": [ "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 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." ], "related_prs": [ 253 @@ -521,18 +551,18 @@ "url": "https://github.com/LyraCoreProject/LyraCore/issues/196", "updatedAt": "2026-09-01T08:55:50Z", "github_state": "open", - "owner": "Real-client reviewer" + "owner": "Human" }, { "number": 195, - "summary": "Generation-scoped navigation coverage is implemented; rollout and real route acceptance remain.", + "summary": "Generation-scoped navigation coverage is implemented; navigation data must be re-imported with the current importer, then route and client acceptance remain.", "importance": 4, "gain": 4, "effort": 2, "confidence": "high", "disposition": "human", - "rationale": "PR #258 shipped preparation, finalization, route-planner consumption, and tests. The old issue destination examples no longer match the current World Import Profiles, but docs/vmap-rollout.md settles the target topology. The remaining work changes Realm data and needs route and client evidence.", - "next_action": "Regenerate the affected navigation data with the #479 importer and rebuild derived coverage on approved World Shards. Record before and after detours, then enable nav_coverage_enabled only after the required acceptance and approval.", + "rationale": "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.", + "next_action": "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.", "blockers": [ "Named-host authorization and imported route and collision acceptance." ], @@ -542,28 +572,32 @@ "module/src/vmap.rs stores generation-scoped coverage; module/src/nav.rs consumes it only behind nav_coverage_enabled.", "docs/vmap-rollout.md supplies the current World Import Profile destinations.", "https://github.com/LyraCoreProject/LyraCore/pull/479", - "PR #479 changes the selected WMO standing surface and movement probes. Publishing the Module alone cannot repair old blocked navigation rows; regenerate navigation data and rebuild derived coverage during the authorized import." + "PR #479 changes the selected WMO standing surface and movement probes. Publishing the Module alone cannot repair old blocked navigation rows; regenerate navigation data and rebuild derived coverage during the authorized import.", + "https://github.com/LyraCoreProject/LyraCore/pull/601", + "PR #601: importer terrain-hole mask used reversed world axes. Existing navigation rows need a navigation-only re-import.", + "docs/vmap-rollout.md: Map 36 terrain and Navigation Coverage stay unavailable." ], "related_prs": [ 258, 275, - 479 + 479, + 601 ], "url": "https://github.com/LyraCoreProject/LyraCore/issues/195", "updatedAt": "2026-09-01T08:55:50Z", "github_state": "open", - "owner": "Operator and real-client reviewer" + "owner": "Human" }, { "number": 184, - "summary": "Run vmap rollout and collision acceptance with the current World Import Profiles.", + "summary": "Run the vmap rollout and collision acceptance on the World Shards and the Instance Pool with the current World Import Profiles.", "importance": 4, "gain": 4, "effort": 2, "confidence": "high", "disposition": "human", - "rationale": "PR #192 shipped the staged import workflow and the issue's source blocker #183 is closed. The issue body still asks for map 0 on the Instance Pool, which the current rollout document forbids. This is checklist drift, not a new product decision. The actual remaining work is a guarded Realm operation and client check.", - "next_action": "Follow docs/vmap-rollout.md: import and verify alliance-eastern on lyracore and alliance-kalimdor on lyracore-world-1, prove the Instance Pool has no bounded-profile generation, then collect ray, floor, indoor, and client evidence before enabling the Gate.", + "rationale": "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.", + "next_action": "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.", "blockers": [ "Named-host authorization, approved client data, maintenance approval, and stock-client collision acceptance." ], @@ -571,16 +605,25 @@ "https://github.com/LyraCoreProject/LyraCore/issues/184", "https://github.com/LyraCoreProject/LyraCore/issues/183 is closed.", "https://github.com/LyraCoreProject/LyraCore/pull/192", - "docs/vmap-rollout.md is the current target matrix and explicitly excludes the Instance Pool from bounded-profile generations." + "https://github.com/LyraCoreProject/LyraCore/pull/192", + "https://github.com/LyraCoreProject/LyraCore/pull/515", + "https://github.com/LyraCoreProject/LyraCore/pull/499", + "https://github.com/LyraCoreProject/LyraCore/pull/599", + "docs/vmap-rollout.md: lists lyracore/alliance-eastern, lyracore-world-1/alliance-kalimdor and lyracore-instances/instances (deadmines-entry-exit); the Gate stays off during import.", + "importer/src/world_import_scope.rs: profiles are alliance-eastern, alliance-kalimdor, alliance-single, starting-eastern, starting-kalimdor, instances.", + "The first audit said the Instance Pool gets no bounded-profile generation. That is no longer true for Map 36." ], "related_prs": [ 192, - 275 + 275, + 499, + 515, + 599 ], "url": "https://github.com/LyraCoreProject/LyraCore/issues/184", "updatedAt": "2026-09-01T08:55:50Z", "github_state": "open", - "owner": "Operator and real-client reviewer" + "owner": "Human" }, { "number": 154, @@ -598,7 +641,9 @@ "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/154", "https://github.com/LyraCoreProject/LyraCore/pull/217", - "docs/aura-stacking-probes.md contains the unfilled acceptance template." + "docs/aura-stacking-probes.md contains the unfilled acceptance template.", + "docs/aura-stacking-probes.md: the evidence template at the end is still blank.", + "module/src/spell/stacking.rs:1238: the single-boundary guard test still exists. PR #492 touched this file after the first audit; run the guard in the probe session." ], "related_prs": [ 217 @@ -606,7 +651,7 @@ "url": "https://github.com/LyraCoreProject/LyraCore/issues/154", "updatedAt": "2026-09-01T08:55:14Z", "github_state": "open", - "owner": "Operator and real-client reviewer" + "owner": "Human" }, { "number": 142, @@ -626,7 +671,9 @@ "https://github.com/LyraCoreProject/LyraCore/issues/142", "https://github.com/LyraCoreProject/wire-harness/pull/10", "https://github.com/LyraCoreProject/LyraCore/pull/454", - "module/src/breath.rs and gateway/src/codec/breath.rs contain the durable timer and wire behavior." + "module/src/breath.rs and gateway/src/codec/breath.rs contain the durable timer and wire behavior.", + ".wire-harness-rev now pins v0.1.0-alpha.13 (the dive adapter shipped in alpha.8).", + "module/src/breath.rs and gateway/src/codec/breath.rs: unchanged since 2026-09-08." ], "related_prs": [ 150, @@ -636,7 +683,7 @@ "url": "https://github.com/LyraCoreProject/LyraCore/issues/142", "updatedAt": "2026-09-07T15:07:00Z", "github_state": "open", - "owner": "Operator and real-client reviewer" + "owner": "Human" }, { "number": 138, @@ -654,13 +701,15 @@ "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/138", "https://github.com/LyraCoreProject/LyraCoreProject.github.io/blob/main/README.md says the site is not built yet.", - "docs/quickstart.md remains the repository's complete setup guide." + "docs/quickstart.md remains the repository's complete setup guide.", + "LyraCoreProject.github.io has one commit (2026-08-12, spec seed); its README still says Not built yet.", + "README.md:82 still links docs/quickstart.md as the setup guide." ], "related_prs": [], "url": "https://github.com/LyraCoreProject/LyraCore/issues/138", "updatedAt": "2026-08-13T05:28:30Z", "github_state": "open", - "owner": "Public-site maintainer" + "owner": "Human" }, { "number": 137, @@ -679,7 +728,9 @@ "https://github.com/LyraCoreProject/LyraCore/issues/137", "https://github.com/LyraCoreProject/wire-harness/pull/9", "https://github.com/LyraCoreProject/LyraCore/pull/453", - "gateway/src/world/handlers/bank.rs dispatches the requested bank operations through the current Store." + "gateway/src/world/handlers/bank.rs dispatches the requested bank operations through the current Store.", + ".wire-harness-rev now pins v0.1.0-alpha.13 (the bank adapter shipped in alpha.7).", + "gateway/src/world/handlers/bank.rs: unchanged since 2026-09-08." ], "related_prs": [ 158, @@ -689,20 +740,21 @@ "url": "https://github.com/LyraCoreProject/LyraCore/issues/137", "updatedAt": "2026-09-07T14:47:37Z", "github_state": "open", - "owner": "Operator and real-client reviewer" + "owner": "Human" }, { "number": 114, - "summary": "Instance-aware door rays and sibling isolation are merged; imported Deadmines FactoryDoor acceptance remains.", + "summary": "Instance-aware door rays and sibling isolation are merged; imported Deadmines Factory Door acceptance remains.", "importance": 4, "gain": 4, "effort": 3, "confidence": "high", "disposition": "human", - "rationale": "PR #477 ships the source work together with #113. The durable synthetic fixture proves isolated instances, closed/open and despawned state, lifecycle updates, nearest hits and Blink. The issue also requires actual imported FactoryDoor geometry on a development Shard, which synthetic proof does not replace.", - "next_action": "On a named approved development Shard, import the Deadmines door models, rebuild colliders, and record FactoryDoor closed/open behavior plus isolation from a sibling instance. Use matching model and Package geometry artifacts.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "Final Deadmines acceptance needs approved client data and a named development Shard." + "Approved client data and a named development Shard.", + "Matching model and Package geometry artifacts for the Factory Door." ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/114", @@ -710,75 +762,84 @@ "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/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." ], "related_prs": [ - 477 + 477, + 515, + 499 ], "url": "https://github.com/LyraCoreProject/LyraCore/issues/114", "updatedAt": "2026-09-08T08:12:45Z", "github_state": "open", - "owner": "Operator and real-client reviewer", - "score": 5.3 + "owner": "Human" }, { "number": 113, - "summary": "Instance-scoped door collision is merged; canonical collision and sight-ray performance remain to be measured.", + "summary": "Instance-scoped door collision is merged; the canonical-box collision and sight-ray benchmark is the only open item.", "importance": 4, "gain": 5, "effort": 2, "confidence": "high", - "disposition": "verify", - "rationale": "PR #477 adds the private collider registry, lifecycle hooks, transforms and state Gate, then merges dynamic and static hits through instance-aware ray calls. Synthetic durable behavior and all CI passed after schema approval and the fixture-data review correction. The issue explicitly requires canonical-box performance evidence before closure.", - "next_action": "Run debug_bench_collision_gate and debug_bench_los with exact=true on the canonical box. Record comparable before and after results and investigate any regression before closing #113.", + "disposition": "human", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "Canonical-box collision and sight-ray performance must be measured before closing #113." + "Approved client data and an Operator-run development Shard with the imported canonical box." ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/113", - "https://github.com/LyraCoreProject/LyraCore/pull/254", - "PR #254 supplied local-space DOOR and BUTTON meshes; merged PR #477 adds their instance-scoped collider consumer.", - "module/src/vmap.rs ties static geometry to an active generation; docs/vmap-rollout.md intentionally leaves the Instance Pool without a bounded-profile generation.", - "docs/danger-zones.md permits a justified Operator reconciliation scan but forbids spatial-table scans on gameplay paths.", + "https://github.com/LyraCoreProject/LyraCore/issues/113#issuecomment-5581598770", "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/113#issuecomment-5581598770" + "https://github.com/LyraCoreProject/LyraCore/pull/254", + "https://github.com/LyraCoreProject/LyraCore/pull/599", + "module/src/go_collider.rs defines rebuild_go_colliders; module/tests/go_collision.rs holds the durable fixture.", + "docs/vmap-rollout.md (Instance doors): benchmark evidence on the imported canonical box is still Operator acceptance.", + "module/src/vmap.rs:775: rays_enabled reads the global Gate; dynamic doors do not need a static generation.", + "No benchmark result is recorded in the repository or on the issue." ], "related_prs": [ 254, - 477 + 477, + 599 ], "url": "https://github.com/LyraCoreProject/LyraCore/issues/113", "updatedAt": "2026-09-08T08:12:43Z", "github_state": "open", - "owner": "Codex tracks; Operator benchmark needed", - "score": 10.0 + "owner": "Human" }, { "number": 112, - "summary": "The DOOR and BUTTON model importer is merged; approved client-data dry run and apply remain.", + "summary": "The DOOR and BUTTON model importer is merged; an approved client-data dry run and apply on a named development Shard remain.", "importance": 3, "gain": 4, "effort": 2, "confidence": "high", "disposition": "human", - "rationale": "PR #254 ships DBC model lookup, M2 extraction, local-space conversion, bounds, codec storage, reducers, generated bindings, and tests. Runtime collision belongs to #113 and #114. This issue's remaining checks require licensed client data and a named Shard.", - "next_action": "Run --go-models as a dry run against approved client Data, record nonzero Deadmines door triangles and any WMO or parse skips, then apply the rows to a named development Shard.", + "rationale": "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.", + "next_action": "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.", "blockers": [ "Approved client Data and an explicitly named development Shard." ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/112", "https://github.com/LyraCoreProject/LyraCore/pull/254", - "importer/src/go_model.rs extracts DOOR and BUTTON models; module/src/go_model.rs stores them." + "importer/src/go_model.rs extracts DOOR and BUTTON models; module/src/go_model.rs stores them.", + "https://github.com/LyraCoreProject/LyraCore/pull/499", + "PR #499: GameObject model imports now fail with the model name on missing or malformed M2 collision. Redo any dry run made before 2026-09-09." ], "related_prs": [ - 254 + 254, + 499 ], "url": "https://github.com/LyraCoreProject/LyraCore/issues/112", "updatedAt": "2026-09-01T08:55:50Z", "github_state": "open", - "owner": "Operator" + "owner": "Human" }, { "number": 107, @@ -795,8 +856,11 @@ ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/107", + "https://github.com/LyraCoreProject/LyraCore/issues/107#issuecomment-5491495154", "https://github.com/LyraCoreProject/LyraCore/pull/110", - "importer/src/main.rs imports template size; gateway/src/codec/gameobject.rs emits it with a 1.0 fallback." + "importer/src/main.rs:4952 and importer/src/go_model.rs:110: read the GameObject template size column.", + "gateway/src/codec/gameobject.rs:60: the GameObject spawn emits object_scale_x(go.size) with a 1.0 fallback. The other 1.0 at line 172 is the DynamicObject, not a GameObject.", + "No change to these files since 2026-09-08." ], "related_prs": [ 110 @@ -804,243 +868,260 @@ "url": "https://github.com/LyraCoreProject/LyraCore/issues/107", "updatedAt": "2026-09-01T08:55:52Z", "github_state": "open", - "owner": "Operator and real-client reviewer" + "owner": "Human" }, { "number": 105, - "summary": "LyraCore pins the repaired Headless Client suite; one full approved-Realm run remains.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/105", + "summary": "The 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.", "importance": 4, "gain": 5, "effort": 3, "confidence": "high", "disposition": "verify", - "rationale": "Wire-harness PR #6 resolves scenario paths from the adapter directory, supports named subsets, and separates startup failures. Core PR #446 pins the released alpha.4 revision. Offline tests and upstream CI prove dispatch behavior, but the issue's done condition still asks for all scenarios to execute on their merits against a Realm.", - "next_action": "Run the pinned full suite on an approved development Realm and retain every scenario result, including real startup failures and fixture skips.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "Approved development Realm and Operator execution." + "Needs a disposable development Realm.", + "test-group-loot.sh needs a damage step (see #84)." ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/105", + "https://github.com/LyraCoreProject/LyraCore/issues/105#issuecomment-5571352859", "https://github.com/LyraCoreProject/wire-harness/pull/6", "https://github.com/LyraCoreProject/LyraCore/pull/446", - "https://github.com/LyraCoreProject/LyraCore/issues/105#issuecomment-5571352859" + "https://github.com/LyraCoreProject/LyraCore/pull/531", + ".wire-harness-rev: v0.1.0-alpha.13 68f4a0de." ], "related_prs": [ - 446 + 446, + 531 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/105", "updatedAt": "2026-09-07T13:27:56Z", "github_state": "open", - "owner": "Operator" + "owner": "Claude" }, { "number": 104, - "summary": "The Rust CLI import verbs are merged and pinned; fresh-provision parity and script retirement remain.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/104", + "summary": "Rust 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.", "importance": 3, "gain": 4, "effort": 2, - "confidence": "high", - "disposition": "verify", - "rationale": "lyracore-cli PR #25 implemented import world and import vmaps, and current core documentation uses them. That PR left fresh-provision Verification and retirement of importer/scripts/import-world.sh open. The script cannot be deleted before private and external consumers are inventoried.", - "next_action": "Run both Rust verbs on a fresh approved development stack. If their floors and manifests match the old flow, inventory and repoint every script consumer, then delete import-world.sh in a source PR.", + "confidence": "medium", + "disposition": "decision", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "Fresh-provision parity needs approved dump and client data plus Operator coordination.", - "Private or external consumers of import-world.sh must be inventoried before deletion." + "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." ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/104", "https://github.com/LyraCoreProject/lyracore-cli/pull/25", - "docs/development-cli.md documents the Rust import flow; importer/scripts/import-world.sh still exists." + "lyracore-cli @ b225405 src/cmd/import.rs header: import-world.sh is not retired.", + "docs/development-cli.md:163: Rust import flow documented.", + "importer/scripts/import-world.sh still present, referenced by import-manifest-smoke.sh and docs/data-ingestion.md." ], "related_prs": [], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/104", "updatedAt": "2026-08-11T08:23:39Z", "github_state": "open", - "owner": "Operator first; Codex after parity" + "owner": "Human" }, { "number": 103, - "summary": "Dynamic door collision source is complete; child performance and imported-data acceptance remain.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/103", + "summary": "Source 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.", "importance": 4, "gain": 5, "effort": 1, "confidence": "high", "disposition": "dependency", - "rationale": "PR #254 delivered the model importer and PR #477 delivered the instance-scoped collider and gameplay rays. This parent tracks the remaining evidence in #112, #113 and #114; it has no separate source implementation left.", - "next_action": "Collect the approved model import evidence in #112, canonical performance results in #113, and imported FactoryDoor and sibling-instance results in #114. Close this parent only after those checks pass.", + "rationale": "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.", + "next_action": "Collect the three acceptance results in #112, #113 and #114, then close this parent.", "blockers": [ - "Approved client-data import acceptance in #112.", - "Canonical collision and sight-ray performance in #113.", - "Imported FactoryDoor and sibling-instance acceptance in #114." + "Imported client-data acceptance in #112.", + "Collision and sight-ray benchmark in #113.", + "Imported Factory Door and sibling-instance acceptance in #114." ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/103", + "https://github.com/LyraCoreProject/LyraCore/issues/112", + "https://github.com/LyraCoreProject/LyraCore/issues/113", + "https://github.com/LyraCoreProject/LyraCore/issues/114", "https://github.com/LyraCoreProject/LyraCore/pull/254", - "Merged PR #477 adds the dynamic collider pass, partitioned by map and instance, with the nearest static/dynamic hit selected.", - "https://github.com/LyraCoreProject/LyraCore/pull/477" + "https://github.com/LyraCoreProject/LyraCore/pull/477", + "importer/src/go_model.rs and module/src/go_collider.rs present on main.", + "git log: last change to go_model.rs is 14cda70a (PR #499, 2026-09-09), M2 collision retained." ], "related_prs": [ 254, - 477 + 477, + 499 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/103", "updatedAt": "2026-08-11T12:43:26Z", "github_state": "open", - "owner": "Codex tracks child issues" + "owner": "Claude" }, { "number": 92, - "summary": "client sync and the later Client Artifact command are implemented; only a real client sync load check remains.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/92", + "summary": "lyracore 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.", "importance": 3, "gain": 4, "effort": 1, "confidence": "high", "disposition": "human", - "rationale": "CLI PR 32 and core PR 322 shipped sync. Issue 303 and PR 392 later shipped the distributable Client Artifact that the original issue deferred. The latest issue evidence correctly leaves only stock-client loading.", - "next_action": "Run lyracore client sync against a configured stock client and record that patch-3.MPQ and every enabled Package addon load.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "Requires a configured, legally obtained stock 1.12.1 client and a human load check." + "Needs a legally obtained, configured stock 1.12.1 client and a human." ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/92", "https://github.com/LyraCoreProject/lyracore-cli/pull/32", "https://github.com/LyraCoreProject/LyraCore/pull/322", "https://github.com/LyraCoreProject/LyraCore/pull/392", - "docs/development-cli.md: client sync and client pack are both current supported commands." + "https://github.com/LyraCoreProject/LyraCore/issues/303", + "docs/development-cli.md:60-61,93-94: client sync and client pack documented." ], "related_prs": [ 322, 392 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/92", "updatedAt": "2026-09-02T11:46:39Z", "github_state": "open", - "owner": "Codex", - "score": 12 + "owner": "Human" }, { "number": 88, - "summary": "Movement heartbeat batching is already active at 40 ms with 128-entry calls; the remaining work is an approved load acceptance run and tuning only if its timing signals regress.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/88", + "summary": "Movement 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.", "importance": 4, "gain": 5, "effort": 2, "confidence": "high", "disposition": "verify", - "rationale": "The current code contradicts the original title: gw_movement_batch, chunking across call pipes, entry isolation, and metrics all exist. PR 234 added a guarded acceptance runner but explicitly left the 500-mover and real-client checks undone.", - "next_action": "Run docs/movement-batch-acceptance.md against an approved disposable Realm with at least 500 movers, record batch factor and both latency signals, and tune one lever only if the tripwire fires.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "Requires an approved synthetic load driver and disposable Realm.", - "Visual acceptance requires a stock client." + "Needs an approved synthetic load driver and a disposable Realm.", + "Visual acceptance needs a stock client." ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/88", "https://github.com/LyraCoreProject/LyraCore/pull/234", - "gateway/src/stdb/connection.rs: the flusher drains every 40 ms and caps calls at 128 entries across call pipes.", - "docs/movement-batch-acceptance.md: the guarded load and real-client acceptance remain external checks." + "module/src/gw.rs:247: pub fn gw_movement_batch.", + "gateway/src/stdb/movement_batch.rs:6: MAX_MOVES_PER_CALL = 128.", + "gateway/src/stdb/connection.rs:2577: flush interval Duration::from_millis(40).", + "docs/movement-batch-acceptance.md: acceptance procedure, unchanged since PR #234." ], "related_prs": [ 234 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/88", "updatedAt": "2026-08-11T08:23:13Z", "github_state": "open", - "owner": "Codex", - "score": 10 + "owner": "Claude" }, { "number": 86, - "summary": "Per-viewer motion supersession is implemented, but there is no current evidence that dense-crowd login starvation still has the 2026-08-09 shape after the shared WorldView changes.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/86", + "summary": "Per-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.", "importance": 4, "gain": 5, "effort": 3, "confidence": "medium", "disposition": "verify", - "rationale": "The first coalescing rung is present. Later work replaced per-Character subscriptions with one per-Shard stream and an in-memory cell index, invalidating part of the old cost account. Dense fan-out is still inherently large, but a login-priority lane or interest cap needs fresh evidence.", - "next_action": "Run the current dense-crowd measurement from issue 59 and record login completion, queue depth, relay latency, CPU, and delivered motion. Choose a priority lane or interest cap only if starvation reproduces.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "Issue 59's current crowd-cliff measurement is still open.", - "A dense interest cap changes visible behavior and needs maintainer approval." + "Issue #59 crowd measurement is open.", + "A dense interest cap changes visible behaviour and needs maintainer approval." ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/86", "https://github.com/LyraCoreProject/LyraCore/issues/59", "https://github.com/LyraCoreProject/LyraCore/pull/244", - "gateway/src/stdb/world_view.rs: each viewer keeps a latest-row map per mover and queues at most one motion flush.", - "gateway/src/stdb/world_index.rs: relay audience selection now uses one in-memory cell index fed by one global subscription per Shard." + "https://github.com/LyraCoreProject/LyraCore/pull/234", + "gateway/src/stdb/world_view.rs:202: MotionPending coalesces motion per viewer.", + "git grep for an interest cap in gateway/src: no match." ], "related_prs": [ + 234, 244 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/86", "updatedAt": "2026-08-11T08:23:07Z", "github_state": "open", - "owner": "Codex", - "score": 6.67 + "owner": "Claude" }, { "number": 84, - "summary": "Loot Roll recovery after result expiry needs durable settlement identity; the original three-Shard and bot-party incident remains unverified.", - "importance": 4, + "url": "https://github.com/LyraCoreProject/LyraCore/issues/84", + "summary": "The 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.", + "importance": 3, "gain": 4, "effort": 5, "confidence": "medium", "disposition": "decision", - "rationale": "PR #474 merged the completion-marker fix. Recovery after result expiry needs durable receipt retirement plus exclusive roll authority and disband handling across group mirrors. These are several dependent changes. The next design must preserve current loot distribution, including the existing final-member predicate, while preventing stale source work after a group disappears.", - "next_action": "Review the T2a and T2b rollout contract together. T2a covers source authority, exact outcomes and receipt retirement. T2b covers Group participation, stale mirror fencing and disband decisions. Preserve original incident acceptance and explicitly review the new Group-id match.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "Exclusive resolution authority, staging/disband recovery and receipt retirement need one reviewed design.", - "The original incident rerun needs a disposable three-Shard development Realm and verified Headless Client scenario dispatch." + "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." ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/84", - "PR #474 changed gateway/src/world/loot.rs to retain the completion marker after settlement failure while continuing healthy Shards.", - "gateway/src/world/loot_tests.rs now proves a failed settlement retries while the result event remains, successful work continues, and completed results stop repeating.", - "PRs #439 and #461 fixed concurrent and replayed promotions. Neither covers a failed World Shard settlement, and neither proves the original three-Shard incident cause.", - "https://github.com/LyraCoreProject/LyraCore/pull/474", - "Gateway suite: 1,444 passed, 7 private tests ignored. Formatting and Gateway clippy passed. The regression failed on the unchanged Gateway and passed with the marker fix.", "https://github.com/LyraCoreProject/LyraCore/issues/84#issuecomment-5580498204", - "The source design study and adversarial review are saved in the local #84 Tickets. An acknowledgment timeout does not bound a suspended Gateway; promotion_source equal to self does not distinguish source staging from single-database resolution authority.", - "A follow-up design proof rejects a contiguous cleanup frontier: one unfinished roll retains unlimited later receipts. Outstanding records plus an issued ceiling prevent that accumulation. Total storage still needs source and Realm admission caps; this is a design proposal, not an implemented guarantee.", - "The source admission trace found that withholding later CorpseLoot rows creates a waiting queue and can pin corpse decay. Refusing creation can roll back a death or aura tick; FFA fallback changes group distribution. The next recovery Ticket preserves existing admission and retires completed receipts, with storage proportional to unfinished work. A fixed capacity policy is outside that Ticket.", - "The authority review found that a durable disband decision must preserve the exact final-member set and survivor predicate. Retiring that decision also needs a source-mirror fence; a stale mirror can otherwise recreate source group work after Realm disband. This increases remaining effort to several dependent Tickets.", - "The final local proposal splits settlement retirement from Group participation and disband recovery. Its Group-id match deliberately narrows the legacy voter-subset-only resolver so a later re-formed Group cannot claim an earlier Group's roll. This remains a design proposal, with thirteen recovery interleavings and no implementation assigned." + "https://github.com/LyraCoreProject/LyraCore/issues/84#issuecomment-5794257270", + "https://github.com/LyraCoreProject/LyraCore/pull/474", + "https://github.com/LyraCoreProject/LyraCore/pull/531", + "https://github.com/LyraCoreProject/LyraCore/pull/439", + "https://github.com/LyraCoreProject/LyraCore/pull/461", + "PR #531 body: group-loot scenario failed 2 of 2 on old main, passed 3 of 3 with run_vote flushing promotions first.", + "module/src/loot/rolls.rs:109: game_loot_roll_promotion_receipt exists; no receipt retirement or acknowledgment path in rolls.rs.", + "wire-harness @ alpha.13 adapters/lyracore/test-group-loot.sh: still uses debug_kill_creature with no prior damage step." ], "related_prs": [ 439, 461, - 474 + 474, + 531 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/84", - "updatedAt": "2026-09-08T06:42:37Z", + "updatedAt": "2026-09-23T11:48:36Z", "github_state": "open", - "owner": "GPT-6, Codex coordinator", - "score": 3.2 + "owner": "Human" }, { "number": 82, - "summary": "A real Realm still has no tracked TCP load balancer, backend admission cap, or drain procedure for a Gateway pool.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/82", + "summary": "A 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.", "importance": 3, "gain": 4, "effort": 4, "confidence": "high", "disposition": "decision", - "rationale": "The repository contains only the Standalone Supervisor deployment artifact. The issue is explicitly tied to host topology and kill-a-backend acceptance, while the old capacity numbers need refresh after shared connections and batching.", - "next_action": "After current capacity and dense-crowd Verification, choose the supported load balancer and tracked deployment shape. Build static backend caps, health checks, drain commands, and a failure drill against a named non-production host first.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "Needs current single-Gateway and dense-crowd capacity evidence.", - "Requires a maintainer choice of load balancer and a named host before any topology change." + "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." ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/82", - "deploy/systemd: only the Standalone Supervisor service is tracked; no Gateway load-balancer configuration exists.", - "gateway/src/config.rs: LYRACORE_REALM_ADDRESS can advertise an external address but does not provision or drain backends." + "https://github.com/LyraCoreProject/LyraCore/issues/64", + "https://github.com/LyraCoreProject/LyraCore/issues/65", + "deploy and deploy/systemd: spacetimedb-standalone and spacetimedb-prune units only; no HAProxy or nginx stream configuration.", + "docs/danger-zones.md: capacity-edge runbook (#83, #176) is a human-authorized procedure, not a pool." + ], + "related_prs": [ + 586 ], - "related_prs": [], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/82", "updatedAt": "2026-08-11T08:22:59Z", "github_state": "open", - "owner": "Codex", - "score": 3 + "owner": "Human" }, { "number": 80, @@ -1069,90 +1150,91 @@ }, { "number": 79, - "summary": "Gateway connections still use the SpacetimeDB confirmed-read default, and the current shared Coordinator gives no movement-only connection on which to disable it safely.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/79", + "summary": "Gateway connections still use the SpacetimeDB default confirmed reads; no override exists, and the shared Coordinator carries durable state as well as movement.", "importance": 2, "gain": 2, "effort": 3, "confidence": "medium", "disposition": "decision", - "rationale": "No confirmed-read override exists. The issue's proposed one-line movement-path change no longer fits the architecture: a Coordinator carries all subscribed state and Durable Reads for a Shard, so the durability trade affects more than movement.", - "next_action": "Measure confirmed-read latency on the current Coordinator, list which state would become visible before durability, and decide whether to keep confirmation or introduce a narrowly scoped connection before changing the setting.", + "rationale": "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.", + "next_action": "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.", "blockers": [ "A maintainer must approve the crash-durability trade.", - "There is no current movement-only subscription connection." + "No movement-only subscription connection exists." ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/79", "https://spacetimedb.com/docs/upgrade", - "gateway/src/stdb/connection.rs: the shared Coordinator owns Shard subscriptions and Durable Reads; no with_confirmed_reads override is present." + "git grep confirmed in gateway/src/stdb/connection.rs: no confirmed-reads setting." ], "related_prs": [ 247 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/79", "updatedAt": "2026-08-11T08:18:58Z", "github_state": "open", - "owner": "Codex", - "score": 1.33 + "owner": "Human" }, { "number": 78, - "summary": "GridBox still recenters at every cell crossing, but this no longer tears down SpacetimeDB subscriptions; it now applies a bounded in-memory index delta and may cause only entity create and destroy churn.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/78", + "summary": "GridBox 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.", "importance": 2, "gain": 2, "effort": 2, "confidence": "high", "disposition": "verify", - "rationale": "The original measured subscription cost is retired by the shared WorldView. Widening the AOI to 7 by 7 would raise steady audience and relay work, so the old proposed fix should not ship without new evidence of visible churn.", - "next_action": "Measure current AOI recenter deltas and client create and destroy traffic near cell boundaries. Close as superseded if bounded in-memory churn is harmless; otherwise write a new Spec that prices the wider AOI.", + "rationale": "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.", + "next_action": "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.", "blockers": [ "The original measurement does not describe the current architecture." ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/78", "https://github.com/LyraCoreProject/LyraCore/pull/244", - "gateway/src/stdb/aoi.rs: the old per-Character subscription builder is compiled only for differential tests.", - "gateway/src/stdb/world_index.rs: a recenter is now a fixed cell-index delta in memory.", - "crates/lyracore-shared/src/spatial.rs: needs_recenter still triggers on any anchor-cell change." + "gateway/src/stdb/world_view.rs:5963: recenter() returns on no crossing and counts AOI_RECENTERS otherwise.", + "gateway/src/stdb/subscriptions.rs:131: aoi_update calls world_view::recenter with no I/O.", + "crates/lyracore-shared/src/spatial.rs:185: needs_recenter is still the exact-cell test." ], "related_prs": [ 244 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/78", "updatedAt": "2026-08-11T08:18:54Z", "github_state": "open", - "owner": "Codex", - "score": 2 + "owner": "Claude" }, { "number": 77, - "summary": "The old connection model is retired; the stated capacity target is unmeasured", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/77", + "summary": "Gateway 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).", "importance": 4, "gain": 5, "effort": 1, "confidence": "high", "disposition": "verify", - "rationale": "Shared Coordinator connections and movement batching change the reported bottlenecks. The issue still requires a comparable run beyond roughly 525 seated Characters and a movement-cost breakdown. Code changes alone cannot satisfy that result.", - "next_action": "Use #59 to record the current seated capacity and movement cost on comparable hardware. Update or close this parent from that measured result.", + "rationale": "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.", + "next_action": "Use the #59 run to record seated World Sessions and movement cost on comparable hardware, then close or rewrite this parent from that result.", "blockers": [ "Fresh current-revision capacity evidence from #59." ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/77", "https://github.com/LyraCoreProject/LyraCore/issues/81", + "https://github.com/LyraCoreProject/LyraCore/issues/59", "https://github.com/LyraCoreProject/LyraCore/pull/244", "https://github.com/LyraCoreProject/LyraCore/pull/247", - "gateway/src/stdb/aoi.rs and gateway/src/stdb/world_index.rs: one global subscription per Shard replaced distinct AOI subscription queries." + "docs/architecture.md: a World Session holds its blocking thread for its whole life; 477 seats at 512, 535 at 4096 (measured 2026-08-07).", + "docs/research/playerbots-capacity.md: bot capacity runs use sessionless bots, not Gateway seats." ], "related_prs": [ 244, - 247 + 247, + 578, + 587 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/77", "updatedAt": "2026-08-11T08:22:53Z", "github_state": "open", - "owner": "Codex", - "score": 20 + "owner": "Claude" }, { "number": 76, @@ -1208,30 +1290,30 @@ }, { "number": 73, - "summary": "The pinned CLI has a useful text dev status command and no Ratatui dependency; choosing a TUI remains a product decision.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/73", + "summary": "The 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.", "importance": 2, "gain": 3, "effort": 2, "confidence": "high", "disposition": "decision", - "rationale": "The sibling lyracore-cli repository at the pinned revision has no ratatui or crossterm dependency. dev status already renders process, topology, and per-database health directly from the CLI's existing state and health checks. A TUI could make local observation easier, but the spatial seam map is retired and a remote GM console has different authentication and reach. The remaining work is to select one bounded surface rather than adopt a rendering library first.", - "next_action": "Have the Operator choose whether local dev status needs an interactive TUI; if yes, scope a read-only local process and database view before considering remote Realm or spatial editing.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "No operations surface has been selected.", - "The spatial seam map named by the issue is retired." + "No operations surface selected." ], "evidence": [ - "https://github.com/LyraCoreProject/LyraCore/issues/73. The issue asks for a decision among three different operations surfaces.", - "https://github.com/LyraCoreProject/lyracore-cli/blob/61f198aa0d5ace26528ed894f269fcf2c4c642bd/Cargo.toml. The pinned CLI manifest contains no Ratatui or Crossterm dependency.", - "https://github.com/LyraCoreProject/lyracore-cli/blob/61f198aa0d5ace26528ed894f269fcf2c4c642bd/src/cmd/dev.rs. The pinned dev status implementation already prints process, topology, and database health.", - "https://github.com/LyraCoreProject/LyraCore/blob/a6e7119484e35c8779f0f013af7dadafbc293ce7/docs/agents/cross-repo-cli.md. Repository instructions identify the pinned sibling CLI source as authoritative for this audit." + "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." + ], + "related_prs": [ + 593 ], - "related_prs": [], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/73", "updatedAt": "2026-08-11T08:22:51Z", "github_state": "open", - "owner": "Codex", - "score": 3 + "owner": "Human" }, { "number": 72, @@ -1260,8 +1342,7 @@ "url": "https://github.com/LyraCoreProject/LyraCore/issues/72", "updatedAt": "2026-09-08T07:28:15Z", "github_state": "closed", - "owner": "GPT-5.6 Sol, high effort, Spell event implementer", - "score": 3 + "owner": "GPT-5.6 Sol, high effort, Spell event implementer" }, { "number": 71, @@ -1324,106 +1405,112 @@ }, { "number": 69, - "summary": "The claimed choice between free-form Gateways and Gateway-per-Shard affinity no longer matches the shared connection model and needs a narrower decision.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/69", + "summary": "The 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.", "importance": 3, "gain": 4, "effort": 2, "confidence": "medium", "disposition": "decision", - "rationale": "Current Gateways keep shared coordinator connections to Shards, maintain a local WorldView, and select event audiences by spatial cells. That is already a hybrid: any Gateway can serve a viewer while local indexes avoid broadcasting most Relays to every World Session. Motion still comes from per-mover Shard rows, so the remaining question is measured subscription and writer cost, not the issue's original strict architectural fork.", - "next_action": "Rewrite the decision around the current shared connection and WorldView model, then use #59 and #66 measurements to decide whether process-to-Shard affinity adds enough gain to justify routing and failover constraints.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "Issue #59 lacks a current baseline.", - "Issue #66 lacks a two-Gateway comparison." + "Issue #59 has no current baseline.", + "Issue #66 has no two-Gateway comparison." ], "evidence": [ - "https://github.com/LyraCoreProject/LyraCore/issues/69. The issue frames the designs as mutually exclusive based on the former co-Gateway Relay model.", - "https://github.com/LyraCoreProject/LyraCore/pull/421. Merged cell audiences moved event Relay selection into each Gateway's WorldView and measured the local fan-out cost.", - "https://github.com/LyraCoreProject/LyraCore/blob/a6e7119484e35c8779f0f013af7dadafbc293ce7/module/src/world.rs#L470-L484. Motion is one per-mover Shard row consumed through the Gateway AOI model, not the old per-recipient Relay table." + "https://github.com/LyraCoreProject/LyraCore/issues/69", + "https://github.com/LyraCoreProject/LyraCore/pull/421", + "gateway/src/stdb/world_view.rs: recenter and audience selection run on an in-memory cell index (spatial.move_viewer_delta).", + "Issue #49 (seam console) closed 2026-09-07." ], "related_prs": [ 421 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/69", "updatedAt": "2026-08-11T08:22:45Z", "github_state": "open", - "owner": "Codex", - "score": 6 + "owner": "Human" }, { "number": 68, - "summary": "Zero-disconnect file-descriptor handoff remains a large optional architecture project with all of its prerequisites open.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/68", + "summary": "Zero-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.", "importance": 2, "gain": 2, "effort": 5, "confidence": "high", "disposition": "dependency", - "rationale": "The Gateway keeps DecrypterHalf in the reader and EncrypterHalf in the writer; there is no cipher snapshot, SCM_RIGHTS transport, or receiving process protocol. The proposed handoff must also reconstruct WorldView state and coordinate ownership without letting either process write stale data. This complexity is only justified after measured restart cost and two-Gateway gain show that ordinary drain and reconnect are insufficient.", - "next_action": "Do not implement before #64, #66, and #67. If measurements justify it, first isolate and test vanilla header-cipher snapshot restoration, then specify the Unix handoff state machine and real-client acceptance check.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "Issues #64, #66, and #67 are unresolved.", - "No cipher-state snapshot API or acceptance test exists.", - "The feature is Unix-specific and needs an Operator value decision." + "Issues #64, #66 and #67 are open.", + "No cipher-state snapshot API or acceptance test.", + "Unix-only; needs an Operator value decision." ], "evidence": [ - "https://github.com/LyraCoreProject/LyraCore/issues/68. The issue depends on graceful drain, overlapping listeners, and measured multi-Gateway gain.", - "https://github.com/LyraCoreProject/LyraCore/blob/a6e7119484e35c8779f0f013af7dadafbc293ce7/gateway/src/world/mod.rs#L316-L324. The current WorldConn owns DecrypterHalf while the writer separately owns EncrypterHalf.", - "https://github.com/LyraCoreProject/LyraCore/blob/a6e7119484e35c8779f0f013af7dadafbc293ce7/gateway/src/world/mod.rs#L824-L839. The single writer thread owns the encryption state and socket write clone; no transfer protocol exists." + "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." ], "related_prs": [], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/68", "updatedAt": "2026-08-11T08:22:42Z", "github_state": "open", - "owner": "Codex", - "score": 0.8 + "owner": "Claude" }, { "number": 67, - "summary": "SO_REUSEPORT is still absent, but its value depends on the chosen drain and world-address routing design.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/67", + "summary": "SO_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.", "importance": 2, "gain": 2, "effort": 3, "confidence": "high", "disposition": "decision", - "rationale": "Both Gateway listeners still use TcpListener::bind, and there is no reuse-port setup. That proves the feature is unimplemented, but not that it is the best deploy mechanism. If logon sends new clients only to a fresh advertised address and the old Gateway drains, overlapping binds may add little. Platform behavior and failure reporting also need an explicit support policy.", - "next_action": "Decide after #64 and #65 whether overlapping binds are required; if yes, specify supported operating systems and add socket creation plus an overlap acceptance test.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "Issue #64 has no graceful drain.", - "Issue #65 has no Gateway-address selection.", - "The supported-platform policy is unstated." + "Issue #64 (open) has no graceful drain.", + "Issue #65 (open) has no Gateway address selection.", + "No supported-platform policy." ], "evidence": [ - "https://github.com/LyraCoreProject/LyraCore/issues/67. The issue itself treats reuse-port as a possible bridge for rolling drains.", - "https://github.com/LyraCoreProject/LyraCore/blob/a6e7119484e35c8779f0f013af7dadafbc293ce7/gateway/src/logon/mod.rs#L314. Logon uses TcpListener::bind without socket options.", - "https://github.com/LyraCoreProject/LyraCore/blob/a6e7119484e35c8779f0f013af7dadafbc293ce7/gateway/src/world/mod.rs#L1575. World uses the same plain bind path." + "https://github.com/LyraCoreProject/LyraCore/issues/67", + "https://github.com/LyraCoreProject/LyraCore/issues/64", + "https://github.com/LyraCoreProject/LyraCore/issues/65", + "gateway/src/logon/mod.rs:332: TcpListener::bind(&cfg.logon_bind) with no socket options.", + "gateway/src/world/mod.rs:1760: TcpListener::bind(&cfg.world_bind), same plain path.", + "git grep SO_REUSEPORT and socket2 in gateway/src and gateway/Cargo.toml: no matches." ], "related_prs": [], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/67", "updatedAt": "2026-08-11T08:22:39Z", "github_state": "open", - "owner": "Codex", - "score": 1.33 + "owner": "Human" }, { "number": 66, - "summary": "The two-Gateway capacity experiment now waits on a current one-Gateway baseline and routable Gateway selection; its cross-process correctness prerequisites are closed.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/66", + "summary": "The 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.", "importance": 4, "gain": 5, "effort": 4, "confidence": "high", "disposition": "dependency", - "rationale": "PR #390 closed duplicate bot invites, PR #439 closed duplicate Loot Roll promotion, and PR #471 closed competing Account ownership across Gateways. Shared Shard connections and cell audiences make the original query-count assumptions in the issue stale. The experiment is useful after #59 supplies a current baseline and #65 supplies a supported routing path.", - "next_action": "Complete #59 and #65, then run one and two Gateway processes against the same Realm with identical Headless Client load. Compare writer occupancy, subscriptions, Gateway CPU, latency, and disconnects.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "Issue #59 has no current one-Gateway baseline.", - "Issue #65 has no routable Gateway selection mechanism." + "Issue #59 (open) has no current one-Gateway baseline.", + "Issue #65 (open) has no routable Gateway selection." ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/66", + "https://github.com/LyraCoreProject/LyraCore/issues/59", + "https://github.com/LyraCoreProject/LyraCore/issues/65", "https://github.com/LyraCoreProject/LyraCore/pull/390", "https://github.com/LyraCoreProject/LyraCore/pull/439", "https://github.com/LyraCoreProject/LyraCore/pull/471", - "https://github.com/LyraCoreProject/LyraCore/pull/421" + "https://github.com/LyraCoreProject/LyraCore/pull/421", + "docs/architecture.md: a World Session still holds one blocking thread for its whole life; no second-Gateway routing exists in gateway/src/logon." ], "related_prs": [ 390, @@ -1431,65 +1518,65 @@ 439, 471 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/66", "updatedAt": "2026-08-11T08:22:35Z", "github_state": "open", - "owner": "Codex", - "score": 5 + "owner": "Claude" }, { "number": 65, - "summary": "Logon still advertises one configured world address and has no Realm-core registry of Gateway address, load, or draining state.", - "importance": 4, + "url": "https://github.com/LyraCoreProject/LyraCore/issues/65", + "summary": "Logon 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.", + "importance": 3, "gain": 4, "effort": 4, "confidence": "high", "disposition": "dependency", - "rationale": "The logon Store returns a one-element realm list built from the configured world address. Realm-core has per-Gateway Shard load samples, but their gateway_key is a hash for accounting rather than a routable address, and no row says a Gateway accepts new World Sessions or is draining. The old estimate that selection is a tiny change no longer matches the required registration and lease work.", - "next_action": "After #69, define a leased Gateway process row on Realm-core with advertised address, admission state, and load; make realm-list selection deterministic and test drain exclusion and stale-row expiry.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "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." + "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" ], "evidence": [ - "https://github.com/LyraCoreProject/LyraCore/issues/65. The issue requests Realm-core-backed world-address selection for scaling and rolling deploys.", - "https://github.com/LyraCoreProject/LyraCore/blob/a6e7119484e35c8779f0f013af7dadafbc293ce7/gateway/src/logon/mod.rs#L559-L577. The production realms method returns one RealmInfo using the configured address.", - "https://github.com/LyraCoreProject/LyraCore/blob/a6e7119484e35c8779f0f013af7dadafbc293ce7/module/src/load.rs#L43-L82. Existing per-Gateway load rows contain a numeric gateway_key and totals, not an address or admission lease." + "https://github.com/LyraCoreProject/LyraCore/issues/65", + "https://github.com/LyraCoreProject/LyraCore/issues/69", + "https://github.com/LyraCoreProject/LyraCore/issues/59", + "gateway/src/logon/mod.rs: realms() returns a one-element Vec built from Coordinator::realm() and advertised_realm_address_or.", + "gateway/src/config.rs: LYRACORE_REALM_ADDRESS override is the only address control." ], "related_prs": [], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/65", "updatedAt": "2026-08-11T08:17:57Z", "github_state": "open", - "owner": "Codex", - "score": 4 + "owner": "Claude" }, { "number": 64, - "summary": "The Gateway still has no SIGTERM drain path and both listeners end only when their tasks fail.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/64", + "summary": "The Gateway still has no SIGTERM handler: tokio's signal feature is off and main ends at try_join over the two listeners.", "importance": 4, "gain": 4, "effort": 4, "confidence": "high", "disposition": "dependency", - "rationale": "Current main has no Unix shutdown signal or shared drain state. Account Claims from PR #471 protect a replacement World Session from stale cleanup, but they do not stop admission, wait for active World Sessions, or record orderly logout. Runbook B must establish mass-teardown behavior before shutdown is built around it.", - "next_action": "After #60, add a shared shutdown signal that closes both listeners, stops new logons, drains World Sessions to a deadline, records clean logout, and exits with observable phase logs.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "Issue #60 must first establish current mass-disconnect behavior." + "Issue #60 must first establish current mass-disconnect behavior" ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/64", - "gateway/src/main.rs binds the logon and world listeners without a SIGTERM handler or drain coordinator.", - "https://github.com/LyraCoreProject/LyraCore/pull/471" + "https://github.com/LyraCoreProject/LyraCore/issues/60", + "https://github.com/LyraCoreProject/LyraCore/pull/471", + "gateway/Cargo.toml: tokio features are rt-multi-thread, net, macros, io-util, sync, time (no signal).", + "gateway/src/main.rs: tokio::try_join!(logon, world) at line 157 with no shutdown path." ], "related_prs": [ 471 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/64", "updatedAt": "2026-08-11T08:22:32Z", "github_state": "open", - "owner": "Codex", - "score": 4 + "owner": "Claude" }, { "number": 63, @@ -1564,89 +1651,95 @@ }, { "number": 60, - "summary": "The two historical crashes during roughly 500 simultaneous disconnects have no current rerun, so core availability is still unverified.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/60", + "summary": "The two historical crashes at about 500 simultaneous disconnects have no rerun, so Gateway availability under a mass disconnect is still unverified.", "importance": 5, "gain": 4, "effort": 3, "confidence": "high", "disposition": "verify", - "rationale": "Pre-auth deadlines, bounded blocking admission, dead-client benchmark reporting, and Account Claims all changed failure and cleanup behavior. None proves that roughly 500 simultaneous post-auth disconnects no longer kill the Gateway. The issue still requires two clean Runbook B runs with process, kernel, and application evidence.", - "next_action": "Run the pinned Headless Client Runbook B twice against the current release Gateway, recording exit status, kernel OOM or signal evidence, file descriptors, task counts, session cleanup, and recovery.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "Requires the controlled 500-client load environment.", - "No current Runbook B evidence is attached." + "A controlled 500-client load environment (Operator-gated)", + "No current Runbook B evidence is attached" ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/60", "https://github.com/LyraCoreProject/LyraCore/pull/410", "https://github.com/LyraCoreProject/LyraCore/pull/449", - "https://github.com/LyraCoreProject/LyraCore/pull/471" + "https://github.com/LyraCoreProject/LyraCore/pull/471", + "No Runbook B result or script appears in git log since 2026-09-08." ], "related_prs": [ 410, 449, 471 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/60", "updatedAt": "2026-08-11T08:17:35Z", "github_state": "open", - "owner": "Codex", - "score": 6.67 + "owner": "Human" }, { "number": 59, - "summary": "The old crowd-cliff numbers cannot answer current capacity after movement and Relay changes; Runbook A still needs a fresh end-to-end run.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/59", + "summary": "The old 150 and 371 crowd numbers still predate the relay, subscription, and heartbeat changes, and no Runbook A run has been recorded since.", "importance": 4, "gain": 5, "effort": 3, "confidence": "high", "disposition": "verify", - "rationale": "The current movement model and cell-audience Relay path differ from the old 150 and 371 client runs. PR #437 corrected motion-delivery counters and PR #449 reports dead and unknown clients, so a fresh run can now produce useful evidence. No current end-to-end capacity result exists.", - "next_action": "Run Runbook A against a release build at the current main commit and publish capacity, latency, disconnect, writer-occupancy, QUEUESTAT, AOISTAT, and SHARDLOAD results with exact revisions.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "Requires a controlled release benchmark environment.", - "Current end-to-end capacity evidence is absent." + "A controlled release benchmark environment (Operator-gated)", + "Current end-to-end capacity evidence is absent" ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/59", "https://github.com/LyraCoreProject/LyraCore/pull/421", "https://github.com/LyraCoreProject/LyraCore/pull/437", - "https://github.com/LyraCoreProject/LyraCore/pull/449" + "https://github.com/LyraCoreProject/LyraCore/pull/449", + "https://github.com/LyraCoreProject/LyraCore/pull/593", + "gateway/src/load_sample.rs: SHARDLOAD sampling now includes Realm-core.", + "docs/research/playerbots-capacity.md: capacity figures are for bot decisions on private nodes, not Gateway sessions." ], "related_prs": [ 421, 437, - 449 + 449, + 578, + 593 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/59", "updatedAt": "2026-08-11T08:17:30Z", "github_state": "open", - "owner": "Codex", - "score": 6.67 + "owner": "Human" }, { "number": 58, - "summary": "The source installer shipped; the requested binary installer did not", - "importance": 3, + "url": "https://github.com/LyraCoreProject/LyraCore/issues/58", + "summary": "The source installer shipped and the README links it; the requested binary installer and release artifacts do not exist.", + "importance": 2, "gain": 4, "effort": 1, "confidence": "high", "disposition": "decision", - "rationale": "install.sh clones the source and installs a pinned CLI launcher. The original issue instead requires both CLI and Gateway binaries in the installation folder. Treating the source-first flow as full completion would hide that difference.", - "next_action": "Decide whether the supported source installation replaces this binary-distribution request. If binary distribution remains wanted, define supported targets and release artifacts before implementation.", - "blockers": [], + "rationale": "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.", + "next_action": "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.", + "blockers": [ + "A decision between source install and binary distribution" + ], "evidence": [ - "https://github.com/LyraCoreProject/LyraCore/issues/58. The requested outcome is a curl bootstrap into a working local LyraCore checkout.", - "https://github.com/LyraCoreProject/LyraCore/blob/a6e7119484e35c8779f0f013af7dadafbc293ce7/install.sh#L1-L35. install.sh documents the one-line command and its prerequisite, clone, and launcher steps.", - "https://github.com/LyraCoreProject/LyraCore/blob/a6e7119484e35c8779f0f013af7dadafbc293ce7/README.md#L19-L26. The README uses install.sh followed by lyracore dev up as the primary quick start.", - "https://github.com/LyraCoreProject/LyraCore/issues/35. The broader CLI/operator issue treats the installer as the remaining bootstrap story rather than a Gateway binary release." + "https://github.com/LyraCoreProject/LyraCore/issues/58", + "https://github.com/LyraCoreProject/LyraCore/issues/35", + "install.sh: clones into ./LyraCore, installs the lyracore launcher, never runs sudo.", + "README.md line 19 and docs/quickstart.md link the install.sh curl command.", + "git log for install.sh shows no change since 2026-08-07; .github/workflows has no release workflow." ], "related_prs": [], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/58", "updatedAt": "2026-08-11T08:17:26Z", "github_state": "open", - "owner": "Codex", - "score": 12 + "owner": "Human" }, { "number": 56, @@ -1672,62 +1765,69 @@ }, { "number": 55, - "summary": "The residual crowd disconnects remain unclassified and require a fresh correlated load run.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/55", + "summary": "Residual 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.", "importance": 3, "gain": 3, "effort": 3, - "confidence": "high", + "confidence": "medium", "disposition": "verify", - "rationale": "The old audit found no corruption path and left the symptom for a correlated load run. Cell-audience Relay work and benchmark death reporting have since changed, so the old 3 to 8 disconnects per 150 clients do not describe current behavior.", - "next_action": "Run the current crowd scenario with stable peer IDs and collect Gateway session-end causes, Headless Client disconnect reasons, QUEUESTAT, AOISTAT, and SHARDLOAD for the same time window.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "Requires a controlled load run and correlated logs.", - "No current reproduction is attached to the issue." + "A controlled load run with kept Gateway logs (Operator-gated)", + "No current reproduction is attached" ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/55", "https://github.com/LyraCoreProject/LyraCore/pull/421", - "https://github.com/LyraCoreProject/LyraCore/pull/449" + "https://github.com/LyraCoreProject/LyraCore/pull/449", + "https://github.com/LyraCoreProject/LyraCore/pull/471", + "gateway/src/world/mod.rs: log::warn!(\"world session {peer} ended: {e:#}\") carries the real close reason.", + "gateway/src/load_sample.rs: SHARDLOAD lines exist, and PR #593 now includes Realm-core in the samples." ], "related_prs": [ 421, - 449 + 449, + 471, + 593 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/55", "updatedAt": "2026-08-11T08:17:12Z", "github_state": "open", - "owner": "Codex", - "score": 3 + "owner": "Human" }, { "number": 53, - "summary": "A maintained public demo realm still needs deployment, backup, restore, and operations work despite recent pre-auth hardening.", - "importance": 4, + "url": "https://github.com/LyraCoreProject/LyraCore/issues/53", + "summary": "A public demo Realm still has no named host, restore drill, or runbook; recent work only added SpacetimeDB history pruning and pre-auth hardening.", + "importance": 3, "gain": 3, "effort": 5, "confidence": "high", "disposition": "human", - "rationale": "Pre-auth limits and Session Expiry shipped in merged PR #416. A public demo Realm still needs a named host, backup and restore procedures, operational ownership and an approved deployment.", - "next_action": "Split the remaining work into a reviewed public-host runbook and reversible automation, then have an Operator name the host and approve the first deployment and restore drill.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "No named public host or deployment target is authorized.", - "Backup and restore behavior has not been demonstrated." + "No named public host or deployment target is authorized", + "Backup and restore behavior has not been demonstrated", + "Gateway graceful shutdown (#64) for clean restarts" ], "evidence": [ - "https://github.com/LyraCoreProject/LyraCore/issues/53. The issue spans host hardening, deployment, backups, monitoring, and real-client operation.", - "https://github.com/LyraCoreProject/LyraCore/pull/410. Merged pre-auth deadlines, bounded blocking capacity, and fixed-field world authentication decoding.", - "https://github.com/LyraCoreProject/LyraCore/pull/416. The merged PR caps proof attempts and expires Session keys.", - "https://github.com/LyraCoreProject/LyraCore/blob/a6e7119484e35c8779f0f013af7dadafbc293ce7/deploy/systemd/spacetimedb-standalone.service. The repository contains a standalone SpacetimeDB service unit, but that is only one part of the requested operated realm." + "https://github.com/LyraCoreProject/LyraCore/issues/53", + "https://github.com/LyraCoreProject/LyraCore/pull/410", + "https://github.com/LyraCoreProject/LyraCore/pull/416", + "https://github.com/LyraCoreProject/LyraCore/pull/586", + "deploy/spacetimedb-prune.sh and deploy/systemd/spacetimedb-prune.timer exist; git grep backup in deploy/ finds nothing.", + "docs/research/playerbots-client-acceptance.md: Argus backup service still reports its 4 September failure, timer disabled." ], "related_prs": [ 410, - 416 + 416, + 586 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/53", "updatedAt": "2026-08-11T08:22:23Z", "github_state": "open", - "owner": "Codex", - "score": 2.4 + "owner": "Human" }, { "number": 51, @@ -1831,33 +1931,34 @@ }, { "number": 46, - "summary": "PR #463 removes a deleted Character from Realm-core party membership only after acknowledged absence on every healthy Shard; the full Package-backed party suite remains.", - "importance": 4, - "gain": 4, - "effort": 3, - "confidence": "high", - "disposition": "dependency", - "rationale": "The merged cleanup uses temporary acknowledged Character subscriptions, retries Realm-core leave and mirror repair, and preserves membership when a second Coordinator has not observed Transfer arrival. A two-Coordinator durable test covers that race. Wire-harness alpha.11 removed the global party reset and passed the scoped deletion case twice. The remaining eight scenarios need a compatible Package-enabled Module.", - "next_action": "Run all eight Package-backed party scenarios on a compatible owned Module and Gateway pair. Close the issue if deletion, Transfer, surviving rosters, leader and loot settings all remain correct.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/46", + "summary": "The 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.", + "importance": 2, + "gain": 3, + "effort": 2, + "confidence": "medium", + "disposition": "verify", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "No audited local Module artifact provides playerbots_spawn_role and pkg_playerbots_bot. The full acceptance run needs a compatible Package-enabled Module and Gateway pair." + "A compatible Package-enabled Module and Gateway pair for the party suite (check Playerbots Package availability)" ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/46", "https://github.com/LyraCoreProject/LyraCore/pull/384", "https://github.com/LyraCoreProject/LyraCore/pull/463", - "PR #463 passed the private two-Coordinator Transfer and deletion regression plus current-head review.", - "wire-harness PR #13 released alpha.11, removed the global party reset, and passed the scoped two-Shard deletion scenario twice." + "https://github.com/LyraCoreProject/LyraCore/pull/573", + "gateway/src/stdb/subscriptions_character_gone_durable_tests.rs: durable test for a delayed Transfer followed by deletion and automatic cleanup.", + "git grep reset_party_state in this repository finds nothing." ], "related_prs": [ 384, - 463 + 463, + 573 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/46", "updatedAt": "2026-08-11T08:22:10Z", "github_state": "open", - "owner": "GPT-5.6 Sol, high effort, Character cleanup implementer", - "score": 5.33 + "owner": "Claude" }, { "number": 45, @@ -1885,133 +1986,152 @@ }, { "number": 42, - "summary": "The scripted and package-based Playerbot work has shipped; the remaining acceptance bar is a human-run real-client session that judges believable behavior and completes Deadmines.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/42", + "summary": "The 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.", "importance": 3, "gain": 5, - "effort": 2, + "effort": 3, "confidence": "high", "disposition": "human", - "rationale": "Core PRs #394 and #395 and the linked package, CLI, and wire-harness work are merged. The issue's latest checklist explicitly leaves human judgment of believability, serendipity, and a full real 1.12.1 client dungeon run.", - "next_action": "Run issue #373's imported-node playbook, then complete issue #366 through VanCleef and record the observed failures as narrow follow-up issues.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "A real 1.12.1 client and imported node", - "The Playerbot packages needed by the acceptance scenario", + "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" ], "evidence": [ + "https://github.com/LyraCoreProject/LyraCore/issues/42#issuecomment-5499763431", "https://github.com/LyraCoreProject/LyraCore/issues/42#issuecomment-5511966201", - "https://github.com/LyraCoreProject/LyraCore/issues/373", "https://github.com/LyraCoreProject/LyraCore/issues/366", + "https://github.com/LyraCoreProject/LyraCore/issues/373", "https://github.com/LyraCoreProject/LyraCore/pull/394", - "https://github.com/LyraCoreProject/LyraCore/pull/395" + "https://github.com/LyraCoreProject/LyraCore/pull/395", + "https://github.com/LyraCoreProject/LyraCore/pull/523", + "https://github.com/LyraCoreProject/LyraCore/pull/578", + "docs/research/playerbots-client-acceptance.md: status 16 September, attended Follow failed, companions paused, PB012 pending.", + "docs/research/playerbots-capacity.md: 500 bots per World Shard measured at p95 world tick 330 ms on private nodes." ], "related_prs": [ 394, - 395 + 395, + 523, + 525, + 526, + 578, + 587, + 590 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/42", "updatedAt": "2026-09-02T15:24:09Z", "github_state": "open", - "owner": "Codex", - "score": 7.5 + "owner": "Human" }, { "number": 41, - "summary": "Ritual of Summoning still lacks the ritual portal, two-assistant interaction, and targeted teleport flow.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/41", + "summary": "Ritual of Summoning is still unimplemented: no portal GameObject, no two-assistant interaction, and no targeted teleport exist in the code.", "importance": 2, "gain": 2, "effort": 5, "confidence": "medium", "disposition": "decision", - "rationale": "The requested behavior depends on exact 1.12 group and GameObject interaction semantics that are not specified in the issue or represented in current code. A multi-client observation is needed before implementation can be split safely.", - "next_action": "Research the missing protocol and gameplay facts from primary sources, then define a complete implementation Ticket. Keep the final real-client check separate.", + "rationale": "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.", + "next_action": "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.", "blockers": [ + "A priority decision to un-defer", "Exact 1.12 ritual interaction behavior", "A three-client acceptance session" ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/41", - "Code fact: searches for spell 698, Ritual of Summoning, and ritual portal assistance found no implementation in importer, Module, or Gateway code." + "git grep for Ritual of Summoning and spell 698 in module, gateway, importer and packages finds no implementation.", + "PRs #543, #550, #551, #552 and #558 show group and raid features are now merged." ], "related_prs": [], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/41", "updatedAt": "2026-08-11T08:22:02Z", "github_state": "open", - "owner": "Codex", - "score": 0.8 + "owner": "Human" }, { "number": 40, - "summary": "The Binding encounters, reward spells, focus Gate, temporary summons, and kill credit are merged; only real-client feedback remains.", - "importance": 4, + "url": "https://github.com/LyraCoreProject/LyraCore/issues/40", + "summary": "The Binding encounters, reward spells, focus Gate, temporary summons, and kill credit are merged; only a real-client check remains.", + "importance": 3, "gain": 4, "effort": 2, "confidence": "high", "disposition": "human", - "rationale": "PR #455 imported the missing quest items, creatures and teaching rewards. It creates the source-backed hostile summons at spell focus 83, preserves source-item lifecycle, grants ordinary kill credit, and teaches the pet spells at turn-in. Durable behavior and the schema review are complete.", - "next_action": "Use a real 1.12.1 client on a named development Realm to verify ritual-circle placement, summon feedback, combat, objective credit, and the learned Voidwalker and Succubus spells.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "A named development Realm with the merged Module data and a real 1.12.1 client. No existing Realm update is authorized." + "A development Realm with the merged Module data and a real 1.12.1 client. The Operator names the host and approves any update." ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/40", "https://github.com/LyraCoreProject/LyraCore/pull/455", - "PR #455 passed the Binding durable fixture, full current-head checks, schema review, and final CodeRabbit review.", - "No existing Realm was updated during implementation." + "PR #455 body: Binding durable fixture covers both quests, circle radius, source-item lifecycle, kill credit, reward learning and pet preservation.", + "docs/research/playerbots-client-acceptance.md: Argus ran Core c7306184 on 2026-09-16, which is after PR #455." ], "related_prs": [ 455 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/40", "updatedAt": "2026-08-11T08:16:06Z", "github_state": "open", - "owner": "Codex", - "score": 8 + "owner": "Human" }, { "number": 39, - "summary": "Static and dynamic collision source is merged; child acceptance, fresh-provision parity and real-client movement checks remain.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/39", + "summary": "Static and door collision source is merged; the imported-data acceptance, fresh-provision parity run, and Blink eyeball remain before the epic can close.", "importance": 3, - "gain": 5, - "effort": 5, + "gain": 4, + "effort": 3, "confidence": "high", "disposition": "dependency", - "rationale": "PR #115 delivered static collision and PR #477 delivered instance-scoped dynamic door collision. Completion still depends on the explicit performance and imported-data checks under #103, issue #104 provisioning parity, and the real-client Blink and line-of-sight matrix.", - "next_action": "Complete the performance and imported-data acceptance under #103, verify #104 on a fresh provision, then run the real-client Blink and line-of-sight matrix before closing the epic.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "Issue #103 child performance and imported dynamic collision acceptance.", + "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" ], "evidence": [ - "https://github.com/LyraCoreProject/LyraCore/issues/39#issuecomment-5253362768", - "https://github.com/LyraCoreProject/LyraCore/issues/103", - "https://github.com/LyraCoreProject/LyraCore/issues/104", + "https://github.com/LyraCoreProject/LyraCore/issues/39", "https://github.com/LyraCoreProject/LyraCore/pull/115", "https://github.com/LyraCoreProject/LyraCore/pull/254", - "https://github.com/LyraCoreProject/LyraCore/pull/477" + "https://github.com/LyraCoreProject/LyraCore/pull/477", + "https://github.com/LyraCoreProject/LyraCore/pull/515", + "https://github.com/LyraCoreProject/LyraCore/issues/103", + "https://github.com/LyraCoreProject/LyraCore/issues/104", + "https://github.com/LyraCoreProject/LyraCore/issues/112", + "https://github.com/LyraCoreProject/LyraCore/issues/113", + "https://github.com/LyraCoreProject/LyraCore/issues/114", + "Issue #102 is CLOSED; #113 and #114 are open with 'source implemented in #477' comments dated 2026-09-08.", + "PR #477 body: imported Deadmines calibration and canonical-box performance remain Operator acceptance work." ], "related_prs": [ 115, 254, - 477 + 477, + 499, + 515 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/39", "updatedAt": "2026-08-11T12:46:47Z", "github_state": "open", - "owner": "Codex", - "score": 3 + "owner": "Human" }, { "number": 38, - "summary": "The Gateway now installs Shard event callbacks once and performs a single ordered login visibility sweep; the remaining work is the issue's real-client login matrix.", - "importance": 4, + "url": "https://github.com/LyraCoreProject/LyraCore/issues/38", + "summary": "The Gateway no longer carries the per-relay resident sweeps or initial_* snapshot gates; only the real-client login matrix remains.", + "importance": 3, "gain": 4, "effort": 2, "confidence": "high", "disposition": "human", - "rationale": "PRs #421 and #433 replaced the subscription and login ordering paths described by the issue. Code-level Gates cover callback placement and sweep ordering, but the acceptance criteria still require fresh and geared Characters, auras, and questgivers on a real client.", - "next_action": "Run the stated 5875 login matrix on main and close the issue if every initial snapshot and following delta is correct; file narrow failures separately.", + "rationale": "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.", + "next_action": "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.", "blockers": [ "A real 1.12.1 client with fresh and geared Character fixtures" ], @@ -2019,109 +2139,118 @@ "https://github.com/LyraCoreProject/LyraCore/issues/38", "https://github.com/LyraCoreProject/LyraCore/pull/421", "https://github.com/LyraCoreProject/LyraCore/pull/433", - "Code fact: gateway/src/stdb/world_view.rs arms callbacks once per Shard and queues one initial visibility sweep after viewer registration." + "gateway/src/stdb/subscriptions.rs: grep for _resident_sweep and initial_ finds only two test names (lines 6725 and 6762).", + "gateway/src/stdb/world_view.rs: sweep_into_view enqueues one writer job, with tests for the order (WorldEntity before GameObject)." ], "related_prs": [ 421, 433 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/38", "updatedAt": "2026-08-11T08:15:57Z", "github_state": "open", - "owner": "Codex", - "score": 8 + "owner": "Human" }, { "number": 37, - "summary": "Spell rank supersession and trainer plus relog behavior have shipped; only the real 1.12 client acceptance check remains.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/37", + "summary": "Spell 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.", "importance": 2, "gain": 3, "effort": 1, "confidence": "high", "disposition": "human", - "rationale": "PR #256 merged the specified packet behavior, and the issue comment confirms the trainer and relog Gate shipped. No further code slice is identified.", - "next_action": "Learn a higher spell rank in a real 1.12.1 client, relog, and confirm the spellbook contains the expected visible rank before closing.", + "rationale": "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.", + "next_action": "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.", "blockers": [ "A real 1.12.1 client acceptance session" ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/37#issuecomment-5491495231", - "https://github.com/LyraCoreProject/LyraCore/pull/256" + "https://github.com/LyraCoreProject/LyraCore/pull/256", + "https://github.com/LyraCoreProject/LyraCore/pull/602", + "gateway/src/world/handlers/trainer.rs: SMSG_SUPERCEDED_SPELL is sent when the chain predecessor is already known.", + "PR #602 body: rank chains from SkillLineAbility fill families the world dump omitted (521 more ranks)." ], "related_prs": [ - 256 + 256, + 602 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/37", "updatedAt": "2026-09-01T08:55:50Z", "github_state": "open", - "owner": "Codex", - "score": 6 + "owner": "Human" }, { "number": 36, - "summary": "Speed and teleport movement checks exist, but fall, gravity, Z-axis, and wall-crossing checks remain undefined and unimplemented.", - "importance": 4, + "url": "https://github.com/LyraCoreProject/LyraCore/issues/36", + "summary": "Speed and teleport movement checks are shipped; fall, Z-axis, and wall-crossing checks are still unbuilt and have no agreed false-positive budget.", + "importance": 3, "gain": 3, "effort": 4, "confidence": "high", "disposition": "decision", - "rationale": "The Module reserves violation codes for the remaining checks, but the issue does not set thresholds or a false-positive budget from observed traces. Those policy choices affect legitimate movement and should be settled before more enforcement is added.", - "next_action": "Choose the next check and its false-positive budget from recorded movement traces, then write one Ticket with deterministic Module Gates and a Headless Client scenario.", + "rationale": "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.", + "next_action": "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.", "blockers": [ "Threshold and false-positive policy for the next movement check", "Representative legitimate and violating movement traces" ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/36", - "Code fact: module/src/world.rs implements movement violation codes 1 and 2 for speed and teleport, and reserves codes 3 through 5 for fall or gravity, Z-axis, and wall checks." + "module/src/world.rs: MOVE_VIOLATION_SPEED=1 and MOVE_VIOLATION_TELEPORT=2 only; movement_violation() scores speed and teleport.", + "module/src/world.rs: game_movement_violation table; GM and godmode Characters are exempt.", + "module/src/gc.rs: game_movement_violation rows are reaped by TTL.", + "https://github.com/LyraCoreProject/LyraCore/pull/477" + ], + "related_prs": [ + 477 ], - "related_prs": [], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/36", "updatedAt": "2026-08-11T08:21:56Z", "github_state": "open", - "owner": "Codex", - "score": 3 + "owner": "Human" }, { "number": 35, - "summary": "Package authoring, trust, provenance, and the compiled CLI are present; the remaining public-host work is the install script, Server manifest design, and fresh-machine acceptance.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/35", + "summary": "The Package API lint, trust review, and compiled CLI are shipped; the Server manifest design and fresh-machine acceptance are still open.", "importance": 3, "gain": 5, "effort": 5, "confidence": "high", "disposition": "decision", - "rationale": "PR #397 closed the package API and lint slice, and the cross-repository CLI workflow is established. The unresolved Server manifest is a product and deployment design choice, while issue #58 and fresh-machine verification are separate executable slices.", - "next_action": "Decide the minimum deployment manifest and binary-distribution contract. #58 has a source installer but its requested binary distribution is unresolved.", + "rationale": "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.", + "next_action": "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.", "blockers": [ "A decision on the Server manifest contract", - "Open issue #58 for the installer", + "Issue #58 for the installer and any binary distribution", "Fresh-machine acceptance across the CLI repository and this pinned shim" ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/35#issuecomment-5499636994", "https://github.com/LyraCoreProject/LyraCore/issues/58", "https://github.com/LyraCoreProject/LyraCore/pull/397", - "Code fact: docs/package-api.md and module/tests/package_api_lint.rs define and enforce the shipped package contract; docs/agents/cross-repo-cli.md requires CLI work in the sibling lyracore-cli repository followed by a pin bump here." + "Issue #391 is CLOSED (Package API surface and import lint).", + "docs/package-api.md: the blessed Package API surface exists.", + "install.sh and README.md: the source installer is linked from the quickstart.", + "docs/agents/cross-repo-cli.md: CLI work lands in the sibling lyracore-cli repository, then a pin bump here." ], "related_prs": [ 397 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/35", "updatedAt": "2026-09-01T19:58:40Z", "github_state": "open", - "owner": "Codex", - "score": 3 + "owner": "Human" }, { "number": 34, - "summary": "Realm-core authentication is active, but role-selectable Gateway processes, cross-Realm ban kicks, GM baselines, account migration, registration guidance, and a two-Realm Gate remain.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/34", + "summary": "Realm-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.", "importance": 4, "gain": 5, "effort": 5, "confidence": "high", "disposition": "decision", - "rationale": "The data seam has shipped, but the remaining slices change deployment roles and account policy across Realm processes. The issue still requires Operator sequencing and does not identify which operational slice should land first.", - "next_action": "Choose the next operational slice, preferably explicit Gateway role flags, and write separate Tickets for role selection, ban propagation, GM policy, migration, registration, and the two-Realm Gate.", + "rationale": "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.", + "next_action": "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.", "blockers": [ "Operator sequencing for the remaining slices", "A product decision for GM baseline and per-Realm override behavior", @@ -2129,40 +2258,38 @@ ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/34", - "Code fact: gateway/src/config.rs reads LYRACORE_REALM_CORE and gateway/src/main.rs starts both logon and world listeners without a role selection enum or flag.", - "Code fact: the current CoordinatorStore realm list contains one Realm, and account ban state has no cross-Realm active-session kick subscription." + "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" ], "related_prs": [], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/34", "updatedAt": "2026-08-11T08:21:51Z", "github_state": "open", - "owner": "Codex", - "score": 4 + "owner": "Human" }, { "number": 33, - "summary": "The protocol can expose a Realm list, but the Gateway still presents one configured Realm and the deployment lacks the shared account foundation needed for multiple Realms.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/33", + "summary": "The 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.", "importance": 2, "gain": 4, "effort": 5, "confidence": "high", "disposition": "dependency", - "rationale": "Issue #33 explicitly depends on the shared authentication and account work in #34. Starting independent multi-Realm implementation would duplicate or constrain that unfinished design.", - "next_action": "Complete and verify issue #34, then rewrite this issue around Realm directory discovery, selection, routing, and a two-Realm Gate.", + "rationale": "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.", + "next_action": "Finish issue #34 first, then rewrite this issue around Realm directory discovery, selection, routing and a two-Realm Gate.", "blockers": [ "Issue #34 shared authentication hub and account policy" ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/33", "https://github.com/LyraCoreProject/LyraCore/issues/34", - "Code fact: the current CoordinatorStore realms path returns exactly one configured Realm despite the protocol-level Realm list response." + "gateway/src/logon/mod.rs:600: realms() returns a vec of exactly one RealmInfo from coordinator.realm()" ], "related_prs": [], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/33", "updatedAt": "2026-08-11T08:21:47Z", "github_state": "open", - "owner": "Codex", - "score": 1.6 + "owner": "Human" }, { "number": 31, @@ -2171,9 +2298,9 @@ "gain": 4, "effort": 2, "confidence": "high", - "disposition": "human", + "disposition": "done", "rationale": "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.", - "next_action": "On a named development Realm, import the current data and verify suffix tooltips, weighted SQL bands, stat changes, and the craft preview with a real 1.12.1 client.", + "next_action": "Closed on GitHub as completed. Suffix stat lines shipped in PR #583.", "blockers": [ "A named imported development Realm and real 1.12.1 client. No existing Realm update is authorized." ], @@ -2186,241 +2313,289 @@ ], "related_prs": [ 462, - 466 + 466, + 583 ], "url": "https://github.com/LyraCoreProject/LyraCore/issues/31", - "updatedAt": "2026-08-22T09:18:51Z", - "github_state": "open", - "owner": "Codex", - "score": 6 + "updatedAt": "2026-09-28T08:32:29Z", + "github_state": "closed", + "owner": "Codex" }, { "number": 30, - "summary": "The Realm has no seasonal game-event data model, calendar activation, spawn participation, or Operator debug controls.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/30", + "summary": "The 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.", "importance": 2, "gain": 4, "effort": 5, "confidence": "high", "disposition": "decision", - "rationale": "The calendar and spawn-link Spec is detailed, but its gameobject plan conflicts with current code. Parking a game_gameobject row stops use or respawn; the Gateway still creates it for viewers. A concrete visibility or retained-definition design must be selected before implementing seasonal disappearance.", - "next_action": "Resolve gameobject disappearance: either add a Gateway visibility Gate for parked event rows, or retain definitions separately and remove/reinsert live rows through one lifecycle. Then split and implement the event Tracer.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "The Spec prohibits Gateway changes and requires parked object definitions to survive, but the current parked state does not hide a gameobject." + "The Spec forbids Gateway changes and requires parked definitions to survive, but a parked row is still shown" ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/30", - "Code fact: the repository has no seasonal game-event tables or debug verbs; game_event_reaper_schedule is an unrelated cleanup schedule, and Gateway condition handling states that seasonal events do not exist.", - "Code fact at 3455aa2: module/src/gameobject.rs keeps depleted rows with state 1; gateway/src/stdb/world_view.rs gameobject_appeared indexes and creates every row without a state visibility Gate. Pool objects already separate definitions from live rows." + "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" ], "related_prs": [], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/30", "updatedAt": "2026-08-21T15:12:38Z", "github_state": "open", - "owner": "Codex", - "score": 1.6 + "owner": "Human" }, { "number": 29, - "summary": "Basic GM playtest commands exist, while moderation audit, mute, kick, ban enforcement, summon or appear, and freeze behavior remain absent.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/29", + "summary": "Basic 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.", "importance": 4, "gain": 4, "effort": 5, "confidence": "high", "disposition": "decision", - "rationale": "The issue now mixes shipped playtest tooling with unimplemented moderation and policy work. The remaining work crosses Gateway sessions, Module state, realm-core account policy, and audit retention, so the umbrella needs a current moderation-only Spec.", - "next_action": "Rewrite the issue around moderation outcomes, permission levels, audit records, and ban or mute propagation, then split it into one command and enforcement path per Ticket.", + "rationale": "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.", + "next_action": "Rewrite the issue around moderation outcomes, permission levels, audit records and ban or mute propagation, then split one command and enforcement path per Ticket.", "blockers": [ - "A decision on GM permission levels and audit retention", + "Decision on GM permission levels and audit retention", "Alignment with issue #34 account ban and GM baseline policy" ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/29", - "Code fact: module/src/gm.rs implements speed, god, XP rate, level, money, heal, kill, gps, teleport, and add-item commands with gm_level checks, but no game_gm_action table or mute, kick, ban, summon, appear, or freeze path exists." + "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" + ], + "related_prs": [ + 540, + 568 ], - "related_prs": [], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/29", "updatedAt": "2026-08-11T08:15:18Z", "github_state": "open", - "owner": "Codex", - "score": 3.2 + "owner": "Human" }, { "number": 28, - "summary": "Drink item use does not create or decay an inebriation state, update PLAYER_BYTES_3, or apply chat slurring.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/28", + "summary": "Drink item use still creates no inebriation state, no PLAYER_BYTES_3 drunk update and no chat slurring.", "importance": 2, "gain": 2, "effort": 4, "confidence": "high", "disposition": "decision", - "rationale": "Primary-source preflight confirms alcohol state, packing and decay, but the pinned CMaNGOS say/yell path forwards text unchanged. The issue requires an exact server slur transform that this reference does not contain.", - "next_action": "Choose a proven state/field/decay slice with the server-slur criterion retained as unresolved, or name a separately sourced or authored chat rule. Then prepare the implementation Ticket.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "The requested exact pinned-CMaNGOS server slur transform is absent from the verified source." + "The requested exact slur transform is absent from the verified CMaNGOS source" ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/28", - "Code fact: PLAYER_BYTES_3 is initialized for Character creation, but searches across importer, Module, and Gateway code find no drunk state, inebriation decay, or slur transform.", - "Pinned CMaNGOS ca0775f: low 16 bits of PLAYER_BYTES_3 hold gender | (drunk & 0xFFFE); decay subtracts 256 after more than 10 seconds. The issue states a tier byte and roughly one tier per 9 seconds, which do not match this source.", + "grep: no drunk or inebriation code in module/src, gateway/src or importer/src", + "gateway/src/codec/entity.rs:58: player_bytes_3 exists in the entity view", "https://github.com/cmangos/mangos-classic/blob/ca0775fe352fb67a0e82dc6051f0563187d569a5/src/game/Entities/Player.cpp#L1049-L1084", "https://github.com/cmangos/mangos-classic/blob/ca0775fe352fb67a0e82dc6051f0563187d569a5/src/game/Entities/Player.cpp#L16571-L16588" ], "related_prs": [], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/28", "updatedAt": "2026-08-11T08:15:13Z", "github_state": "open", - "owner": "Codex, coordinating agent", - "score": 1 + "owner": "Human" }, { "number": 27, - "summary": "Groups remain limited to parties; raid conversion, subgroups, assistants, raid roster packets, and raid quest-credit rules are absent.", - "importance": 3, + "url": "https://github.com/LyraCoreProject/LyraCore/issues/27", + "summary": "Raid 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.", + "importance": 2, "gain": 4, - "effort": 5, + "effort": 2, "confidence": "high", - "disposition": "decision", - "rationale": "Current code explicitly excludes raid groups. The issue spans data modeling, protocol behavior, permissions, quest credit, and multi-client acceptance without a current packet or policy Spec.", - "next_action": "Define the 1.12 raid roster packet shapes and quest-credit policy, then split conversion, subgroup movement, assistant permissions, roster projection, and credit behavior into separate Tickets.", + "disposition": "human", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "Exact 1.12 raid packet behavior", - "A policy decision for raid quest credit", - "A multi-client roster acceptance session" + "Real 1.12.1 client run of docs/raid-client-check.md" ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/27", - "Code fact: module/src/group.rs states that raid groups are out of scope, and the current schema has no raid subgroup or assistant role state." + "https://github.com/LyraCoreProject/LyraCore/pull/543", + "https://github.com/LyraCoreProject/LyraCore/pull/574", + "docs/raid-client-check.md: 'Execution status: outstanding'", + "module/src/group.rs:29-36: Raid of up to 40 in 8 Subgroups, Assistants; raid XP rates are a documented follow-up", + "gateway/src/world/party.rs: handlers for raid convert, assistant, subgroup change, ready check and target icon" + ], + "related_prs": [ + 543, + 550, + 551, + 552, + 557, + 558, + 566, + 574 ], - "related_prs": [], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/27", "updatedAt": "2026-08-11T08:15:09Z", "github_state": "open", - "owner": "Codex", - "score": 2.4 + "owner": "Human" }, { "number": 11, - "summary": "Self-resurrection effects such as Soulstone and Reincarnation have no stored eligibility, consume-on-use flow, or self-resurrect packet handling.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/11", + "summary": "Self-resurrection effects (Soulstone, Reincarnation) have no stored eligibility, consume-on-use flow or self-resurrect handling; the importer still leaves Reincarnation as E_SCRIPTED.", "importance": 3, "gain": 3, "effort": 4, "confidence": "medium", "disposition": "decision", - "rationale": "Existing resurrection code handles requests from another Character, while the importer leaves Reincarnation scripted. The exact 1.12 duration, death-screen option, reagent, cooldown, and consumption behavior need observation before the state model is fixed.", - "next_action": "Research the missing protocol and gameplay facts from primary sources, then define a complete implementation Ticket. Keep the final real-client check separate.", + "rationale": "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.", + "next_action": "Research the 1.12 Soulstone and Reincarnation rules from primary sources, then write a complete Ticket; keep the real-client check separate.", "blockers": [ "Exact 1.12 Soulstone and Reincarnation semantics", "A real-client acceptance session" ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/11", - "Code fact: current resurrection handling models an ally-issued resurrection request, no SELF_RESURRECT path exists, and importer spell classification leaves Reincarnation as E_SCRIPTED." + "importer/src/spell.rs:2992: correct_script_effect_kind(\"Reincarnation\", E_SCRIPTED)", + "grep: no Soulstone or SELF_RESURRECT code in module/src" ], "related_prs": [], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/11", "updatedAt": "2026-08-11T08:13:59Z", "github_state": "open", - "owner": "Codex", - "score": 2.25 + "owner": "Human" }, { "number": 10, - "summary": "Distract has no destination checks, temporary Creature attention state, facing update, or combat and expiry rules.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/10", + "summary": "Distract (DISTRACT-69) still falls to E_SCRIPTED: there is no destination check, temporary Creature attention state, facing update, or combat and expiry rule.", "importance": 2, "gain": 2, "effort": 4, "confidence": "medium", "disposition": "decision", - "rationale": "The desired idle, combat, radius, duration, and facing semantics are not specified precisely, and the current Creature behavior has no matching investigation or attention state. Observation should precede a new AI state seam.", - "next_action": "Research the missing protocol and gameplay facts from primary sources, then define a complete implementation Ticket. Keep the final real-client check separate.", + "rationale": "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.", + "next_action": "Research the 1.12 Distract rules from primary sources and write one complete Ticket; keep the real-client check as a separate human step.", "blockers": [ "Exact 1.12 Distract targeting and expiry behavior", "A real-client behavior check" ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/10", - "Code fact: searches across spell, combat, and Creature behavior code find no Distract, investigation, or temporary attention implementation." + "grep: no 'distract' match in module/src, importer/src or gateway/src" ], "related_prs": [], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/10", "updatedAt": "2026-08-11T08:13:54Z", "github_state": "open", - "owner": "Codex", - "score": 1 + "owner": "Human" }, { "number": 4, - "summary": "The imported world has no continent-crossing transport or synthetic AreaTrigger link, and the issue offers two different destinations with different content costs.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/4", + "summary": "The 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.", "importance": 2, "gain": 3, "effort": 3, "confidence": "high", "disposition": "decision", - "rationale": "The Operator must choose between the cheap Ratchet to Stormwind synthetic link and waiting for a real dock path that needs wider map-0 content. Code work before that choice risks implementing the wrong world route.", - "next_action": "Choose the temporary synthetic route or the real-dock route; for the temporary route, write one importer plus teleport Gate Ticket using the selected trigger ids.", + "rationale": "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.", + "next_action": "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.", "blockers": [ - "Operator choice between the proposed Ratchet to Stormwind link and a later real-dock route", + "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" ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/4", - "Code fact: the importer reads source AreaTrigger rows, but trigger ids 3551, 3530, and 4029 and any synthetic continent-crossing link are absent from current code." + "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" ], "related_prs": [], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/4", "updatedAt": "2026-08-11T08:21:28Z", "github_state": "open", - "owner": "Codex", - "score": 2 + "owner": "Human" }, { "number": 3, - "summary": "Realm-wide mail, auctions, guilds, whispers, parties, and loot coordination are present, but the reopened epic still lacks a consolidated two-client, multi-Shard acceptance record and contains stale mirror-removal wording.", - "importance": 4, + "url": "https://github.com/LyraCoreProject/LyraCore/issues/3", + "summary": "Realm-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.", + "importance": 3, "gain": 5, "effort": 2, - "confidence": "medium", + "confidence": "high", "disposition": "human", - "rationale": "The major systems named by the epic now use realm-core authority, including cross-Shard party and whisper paths. The remaining useful work is a real-client system Gate and an acceptance update that distinguishes authoritative state from deliberate Shard read mirrors.", - "next_action": "Run two real clients on different Shards through mail, auction, guild, whisper, party, loot-roll, Transfer, and delete scenarios; update the mirror criterion and file only concrete failures.", - "blockers": [ - "A two-client multi-Shard 1.12.1 acceptance environment", - "Clarification that Shard read mirrors may remain when realm-core is authoritative" - ], - "evidence": [ - "Code fact: gateway/src/world/party.rs uses realm-core authority with Shard write-through reads, gateway/src/world/whisper.rs routes across Shards, and mail, auction, guild, and realm-core loot-roll paths exist.", - "https://github.com/LyraCoreProject/LyraCore/issues/3", - "https://github.com/LyraCoreProject/LyraCore/pull/203", - "https://github.com/LyraCoreProject/LyraCore/pull/226", - "https://github.com/LyraCoreProject/LyraCore/pull/384", - "https://github.com/LyraCoreProject/LyraCore/pull/461", - "https://github.com/LyraCoreProject/LyraCore/pull/463" - ], - "related_prs": [ - 203, - 226, - 384, - 461, - 463 - ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/3", - "updatedAt": "2026-08-11T08:28:41Z", - "github_state": "open", - "owner": "Codex", - "score": 10 + "rationale": "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.", + "next_action": "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.", + "blockers": [ + "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" + ], + "evidence": [ + "https://github.com/LyraCoreProject/LyraCore/issues/3#issuecomment-5793839209", + "docs/chat-client-check.md, guild-client-check.md, mail-client-check.md, auction-house-client-check.md, raid-client-check.md: 'Execution status: outstanding'", + "module/src/group.rs: party and raid membership are authoritative on Realm-core, World Shards keep read copies", + "Local videos ../videos/01-realm-chat.mp4 and 03-guilds-across-shards.mp4 (2026-09-25); nothing for mail, auction or raid", + "https://github.com/LyraCoreProject/LyraCore/pull/540", + "https://github.com/LyraCoreProject/LyraCore/pull/539", + "https://github.com/LyraCoreProject/LyraCore/pull/555", + "https://github.com/LyraCoreProject/LyraCore/pull/574", + "https://github.com/LyraCoreProject/LyraCore/pull/575" + ], + "related_prs": [ + 531, + 535, + 536, + 538, + 539, + 540, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 560, + 561, + 563, + 564, + 565, + 566, + 568, + 572, + 573, + 574, + 575, + 576, + 581 + ], + "updatedAt": "2026-09-23T11:15:48Z", + "github_state": "open", + "owner": "Human" }, { "number": 1, - "summary": "The public package-manager proposal is largely implemented, while the remaining work is human product review, a real-client sync check, and maintenance of the proposal as a tracker.", + "url": "https://github.com/LyraCoreProject/LyraCore/issues/1", + "summary": "The 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.", "importance": 3, "gain": 5, "effort": 2, "confidence": "high", "disposition": "human", - "rationale": "Most linked slices are closed, and the repository documents package, build, config, replay, client sync, and client pack workflows. The issue comments say not to implement the umbrella directly; open issue #92 now retains only a real-client sync acceptance step.", - "next_action": "Complete issue #92's real-client sync check, review the installed workflow against the public proposal, and refresh or close the umbrella without starting code from it.", + "rationale": "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.", + "next_action": "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.", "blockers": [ "Issue #92 real-client sync acceptance", - "Human review of the public proposal's remaining product commitments" + "Issue #304 native UI authoring", + "Human review of the proposal's remaining product commitments" ], "evidence": [ "https://github.com/LyraCoreProject/LyraCore/issues/1#issuecomment-5392208341", @@ -2428,18 +2603,17 @@ "https://github.com/LyraCoreProject/LyraCore/pull/322", "https://github.com/LyraCoreProject/LyraCore/pull/392", "https://github.com/LyraCoreProject/LyraCore/pull/397", - "Code fact: docs/development-cli.md documents packages, build, check, config, replay, client sync, and client pack; docs/package-api.md defines the shipped package interface." + "gh: sub-issues 92 and 304 still OPEN, the other 13 closed (checked 2026-10-02)", + "docs/development-cli.md documents packages, build, check, config, replay, client sync and client pack; docs/package-api.md defines the shipped package interface" ], "related_prs": [ 322, 392, 397 ], - "url": "https://github.com/LyraCoreProject/LyraCore/issues/1", "updatedAt": "2026-08-24T07:48:15Z", "github_state": "open", - "owner": "Codex", - "score": 7.5 + "owner": "Human" }, { "number": 441, @@ -2541,2028 +2715,234 @@ "updatedAt": "2026-09-07T20:44:12Z", "github_state": "closed", "owner": "GPT-5.6 Sol, high effort, expiry regression cases; Codex final review" - } - ], - "pull_requests": [ - { - "number": 426, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/426", - "title": "ci(module): run the durable test suite and drop its fixed sleeps", - "owner": "Existing PR review owner; Codex monitors", - "status": "Merged", - "next_action": "Complete. Reassess linked issues for any remaining acceptance.", - "head": "87664f92a802d8100d952d38b94490ea04973ff5" - }, - { - "number": 419, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/419", - "title": "ci: make fmt and clippy blocking, and clear the workspace to match", - "owner": "Existing PR review owner; Codex monitors", - "status": "Merged", - "next_action": "Complete. Reassess linked issues for any remaining acceptance.", - "head": "b24a5c2f06c141e31cd6fb7c5d2e2d2072fd19dc" - }, - { - "number": 416, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/416", - "title": "fix(logon): cap proof attempts per peer and expire session keys", - "owner": "Existing PR review owner; Codex monitors", - "status": "Merged", - "next_action": "Complete. Reassess linked issues for any remaining acceptance.", - "head": "39e454c488066d4711936942187e09363caf8b07" - }, - { - "number": 415, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/415", - "title": "refactor(auction): let the Module own the auctioneer interaction Gate", - "owner": "Existing PR review owner; Codex monitors", - "status": "Merged", - "next_action": "Complete. Reassess linked issues for any remaining acceptance.", - "head": "f0aed9b2ba3cf2380996b75dd369b36555cad4fb" - }, - { - "number": 434, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/434", - "title": "Protect fixture creatures from cast Claims", - "owner": "GPT-5.6 Sol, Package Delta agent", - "status": "Merged", - "next_action": "Complete. Reassess linked issues for any remaining acceptance.", - "head": "1b120cc85e741188bee221c2bab973f2f555f3da", - "merge_commit": "2365075fdb0b110ad4bd56668f8c629fdfb5d14a" - }, - { - "number": 435, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/435", - "title": "Keep periodic deaths from rolling back the aura tick", - "owner": "GPT-6, Codex", - "status": "Merged", - "next_action": "Complete. Reassess linked issues for any remaining acceptance.", - "head": "7ef874dbf22cc5944433f2834b98af8eef531361", - "merge_commit": "8f3a8a78b69f701bb078cf54920722785d27c9af" - }, - { - "number": 436, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/436", - "title": "Maintain the issue order and delivery report", - "owner": "GPT-6, Codex", - "status": "Merged", - "next_action": "Complete. Reassess linked issues for any remaining acceptance.", - "head": "7a63f5dd86eb2336b64df5de28ed97f3249b9202" - }, - { - "number": 437, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/437", - "title": "Measure motion delivery at each Shard callback", - "owner": "GPT-6 Astra, motion diagnosis agent", - "status": "Merged", - "next_action": "Complete. Reassess linked issues for any remaining acceptance.", - "head": "4ec3ecd47b4e43854d48e696c1e54521e1160f24", - "merge_commit": "b1c0f9400a31a2522b9385f6870a9eb8f8f92c76" - }, - { - "number": 438, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/438", - "title": "fix(world): remove motion after cross-map teleport", - "owner": "GPT-5.6 Sol, PR completion agent", - "status": "Merged", - "next_action": "Complete. Issue #80 is closed.", - "head": "0734b3bb47f43ecd88445263d9ae8117a1e405d3", - "checked_at": "2026-09-07 13:24 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "github_state": "MERGED", - "merge_commit": "3e750af3ab6f5fcc75f22040f3b7ece1edd5075c" - }, - { - "number": 440, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/440", - "title": "fix(gameobject): require opener for locked goobers", - "owner": "GPT-5.6 Sol, PR completion agent", - "status": "Merged", - "next_action": "Code complete. Imported-cannon real-client acceptance remains in #367.", - "head": "6c32518d358c77aae0eca881eec7d9846b21eb5d", - "checked_at": "2026-09-07 13:40 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "UNAVAILABLE", - "platform_result": "SUCCESS", - "source": "GitHub reported SUCCESS for a rate-limit notice; no completed CodeRabbit review was delivered before this historical merge." - } - ], - "github_state": "MERGED", - "merge_commit": "0b8631d400d9a445aec4fe1af5a80f87c83aee4b", - "review_note": "Merged by the prior session after coordinating review. CodeRabbit was rate-limited. This historical merge predates the explicit requirement to wait for CodeRabbit." - }, - { - "number": 439, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/439", - "title": "fix(loot): keep concurrent promotions on one live roll", - "owner": "GPT-5.6 Sol, PR completion agent", - "status": "Merged", - "next_action": "Complete. Issue #63 is closed; post-resolution replay remains in #441.", - "head": "94c5d5e12ac3d9d45727e78b8977392230603ac3", - "checked_at": "2026-09-07 13:31 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "github_state": "MERGED", - "merge_commit": "918a057eb38814245cefd7407c67eb53c0c43445" }, { - "number": 56, - "url": "https://github.com/LyraCoreProject/lyracore-cli/pull/56", - "title": "fix(packages): count Package Deltas in trust review", - "owner": "GPT-5.6 Sol, CLI completion agent", - "status": "Merged", - "next_action": "Complete. Core pin #447 is merged; issue #398 is closed.", - "head": "5da24b50ce324a8db9ebd037c68fd485b3f7494d", - "checked_at": "2026-09-07 13:31 UTC", - "checks": [ - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "github_state": "MERGED", - "merge_commit": "def8492a6b135ffc4afe69a1100e0f9c08519735" - }, - { - "number": 444, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/444", - "title": "docs(triage): refresh issue order and resume PR ownership", - "owner": "GPT-6 Astra, Codex", - "status": "Merged after all checks and review passed", - "next_action": "Complete. Report ownership continues in this thread.", - "head": "d4bac13e2fcfb038729943d1d3b280d3eebc0f0e", - "checked_at": "2026-09-07 13:17 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "merge_commit": "49061fe2ec84412e1cce8484a6cf64f37aa1f022" - }, - { - "number": 6, - "url": "https://github.com/LyraCoreProject/wire-harness/pull/6", - "title": "fix(suite): run scenarios from the adapter directory", - "owner": "GPT-6 Astra, Codex", - "status": "Merged; alpha.4 released", - "next_action": "Code, release and core pin #446 complete. Full-suite acceptance remains in #105.", - "head": "9da18425cf099bcd66d1f193f7fabac44f174e9e", - "checked_at": "2026-09-07 13:16 UTC", - "checks": [ - { - "name": "test (ubuntu-latest)", - "result": "SUCCESS" - }, - { - "name": "test (macos-latest)", - "result": "SUCCESS" - }, - { - "name": "coverage", - "result": "SUCCESS" - } - ], - "merge_commit": "fcaabf9486a774611c1ee3d1a69710471c79c60a" - }, - { - "number": 445, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/445", - "title": "test(transfer): classify unit-keyed ownership tables", - "owner": "GPT-5.6 Sol, ownership check agent", - "head": "58b7eb34b3e9207e1f405a2c44df2f58ff976d97", - "status": "Merged", - "next_action": "Complete. Issue #50 is closed.", - "checked_at": "2026-09-07 13:50 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "github_state": "MERGED", - "merge_commit": "71a5ef6eaea5d9187d31fffaf53ec0a81f1d07c0" - }, - { - "number": 446, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/446", - "title": "fix(test): pin the wire suite dispatch repair", - "owner": "GPT-6 Astra, Codex", - "head": "ace303fdcd2aa431cc15354a0d0c3e131ae0abfc", - "status": "Merged", - "next_action": "Code and pin complete. Full-suite acceptance remains in #105.", - "checked_at": "2026-09-07 13:28 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "github_state": "MERGED", - "merge_commit": "faf230aea9c02d8997679638f907d2fed7b2abc6" - }, - { - "number": 447, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/447", - "title": "chore(cli): pin generated artifact trust review", - "owner": "GPT-5.6 Sol, CLI completion agent", - "status": "Merged", - "next_action": "Complete. Issue #398 is closed.", - "head": "a504359689082c2b4a5157a21b13e365469f6af5", - "checked_at": "2026-09-07 13:44 UTC", - "github_state": "MERGED", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "UNAVAILABLE", - "platform_result": "SUCCESS", - "source": "GitHub reported SUCCESS for a rate-limit notice; no completed CodeRabbit review was delivered before this historical merge." - } - ], - "merge_commit": "533be16e04b097ef63c94a2ad362b00085104974", - "review_note": "Merged by the prior session after coordinating review. CodeRabbit was rate-limited. This historical merge predates the explicit requirement to wait for CodeRabbit." - }, - { - "number": 448, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/448", - "title": "ci(gateway): detect generated binding drift", - "owner": "GPT-5.6 Sol, high effort, ownership check agent", - "status": "Merged", - "next_action": "Complete. Issue #368 is closed. CodeRabbit was quota-limited; parent reviewed the exact diff before merge.", - "head": "b072d7596acb835f8fa42a5ef687d3ada519b996", - "checked_at": "2026-09-07 13:55 UTC", - "github_state": "MERGED", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "UNAVAILABLE", - "platform_result": "SUCCESS", - "source": "GitHub reported SUCCESS for a rate-limit notice; no completed CodeRabbit review was delivered before this historical merge." - } - ], - "merge_commit": "38a78b827b92cf4a231196df7352b1852c2722d8", - "review_note": "Merged by the prior session after coordinating review. CodeRabbit was rate-limited. This historical merge predates the explicit requirement to wait for CodeRabbit." - }, - { - "number": 7, - "url": "https://github.com/LyraCoreProject/wire-harness/pull/7", - "title": "fix(bench): report dead clients at window close", - "owner": "GPT-5.6 Sol, medium effort, benchmark agent", - "status": "Merged; alpha.5 released", - "next_action": "Complete. Core #449 adopts corrected alpha.6.", - "head": "289b6dad09bb32474cf64f87df4652498b31e6a6", - "checked_at": "2026-09-07 13:57 UTC", - "github_state": "MERGED", - "checks": [ - { - "name": "test (ubuntu-latest)", - "result": "SUCCESS" - }, - { - "name": "test (macos-latest)", - "result": "SUCCESS" - }, - { - "name": "coverage", - "result": "SUCCESS" - } - ], - "merge_commit": "a8398ba0a5b4398198145129224b1e2135c92de4" - }, - { - "number": 449, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/449", - "title": "fix(bench): pin dead-client reporting release", - "owner": "Codex", - "status": "Merged; #75 closed", - "next_action": "Complete. Corrected alpha.6 is pinned in core.", - "head": "00f64bb2930924ff45b8295035697758ced88920", - "checked_at": "2026-09-07 14:20 UTC", - "github_state": "MERGED", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "merge_commit": "e6194ef2018e8765f459012ae52f16eb06dbbe99" - }, - { - "number": 8, - "url": "https://github.com/LyraCoreProject/wire-harness/pull/8", - "title": "fix(client): apply sparse Character create snapshots", - "owner": "GPT-5.6 Sol, medium effort, benchmark agent", - "status": "Merged; alpha.6 released", - "next_action": "Complete. Core #449 adopts corrected alpha.6.", - "head": "50a3eb215f792ad3d8afeaeb52feaf542c00d349", - "checked_at": "2026-09-07 14:05 UTC", - "github_state": "MERGED", - "checks": [ - { - "name": "test (ubuntu-latest)", - "result": "SUCCESS" - }, - { - "name": "test (macos-latest)", - "result": "SUCCESS" - }, - { - "name": "coverage", - "result": "SUCCESS" - } - ], - "merge_commit": "78f191f5463d6834041801b0d6d9079427907ec9" - }, - { - "number": 450, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/450", - "title": "fix(gateway): replay resident creature movement after CREATE", - "owner": "Codex, after implementer handoff", - "status": "Merged; #272 has remaining decisions", - "next_action": "Resident replay is complete. Keep #272 open for the remaining policy choices and real-client acceptance.", - "head": "153f55f5f37185b5590bb16b452f7c72cf5e5554", - "checked_at": "2026-09-07 14:22 UTC", - "github_state": "MERGED", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "merge_commit": "6ccfe68e4cb226c5cac836fd309976b44ebb19cd" - }, - { - "number": 57, - "url": "https://github.com/LyraCoreProject/lyracore-cli/pull/57", - "title": "fix(service): verify the effective start command", - "owner": "GPT-5.6 Sol, high effort, CLI agent", - "status": "Merged; #340 and #341 closed", - "next_action": "Complete. Core #452 adopts CLI #57.", - "head": "94535c723ca9b3fc10c420bae5edc91c8b10bd0b", - "github_state": "MERGED", - "checks": [ - { - "name": "CodeRabbit", - "result": "SUCCESS" - }, - { - "name": "cargo test: 711 passed", - "result": "SUCCESS", - "source": "Implementer local check at 94535c723ca9b3fc10c420bae5edc91c8b10bd0b" - }, - { - "name": "cargo +1.85 check", - "result": "SUCCESS", - "source": "Implementer local check at 94535c723ca9b3fc10c420bae5edc91c8b10bd0b" - }, - { - "name": "cargo clippy --all-targets -- -D warnings", - "result": "SUCCESS", - "source": "Implementer local check at 94535c723ca9b3fc10c420bae5edc91c8b10bd0b" - }, - { - "name": "rustfmt --check src/cmd/service.rs", - "result": "SUCCESS", - "source": "Implementer local check at 94535c723ca9b3fc10c420bae5edc91c8b10bd0b" - }, - { - "name": "git diff --check origin/main", - "result": "SUCCESS", - "source": "Implementer local check at 94535c723ca9b3fc10c420bae5edc91c8b10bd0b" - } - ], - "checked_at": "2026-09-07 14:28 UTC", - "merge_commit": "ad2aa067bf5c9bf47c3c4034aaa3897c1eb6f502" - }, - { - "number": 9, - "url": "https://github.com/LyraCoreProject/wire-harness/pull/9", - "title": "test(bank): add the full bank flow adapter", - "owner": "GPT-5.6 Sol, medium effort, adapter agent", - "status": "Merged; bank adapter pinned", - "next_action": "Code delivery is complete. Issue #137 retains Operator and stock-client acceptance.", - "head": "98c4e0ebd64fda247a4a75ebf72f9357b807572a", - "github_state": "MERGED", - "checks": [ - { - "name": "test (ubuntu-latest)", - "result": "SUCCESS" - }, - { - "name": "test (macos-latest)", - "result": "SUCCESS" - }, - { - "name": "coverage", - "result": "SUCCESS" - } - ], - "checked_at": "2026-09-07 14:31 UTC", - "merge_commit": "e812f530e807723dbdd83433e649b8bb0c1eb5ec" - }, - { - "number": 452, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/452", - "title": "chore(cli): pin effective service verification", - "owner": "GPT-5.6 Sol, high effort, CLI agent", - "status": "Merged; #340 and #341 closed", - "next_action": "Complete. Core #452 adopts CLI #57.", - "github_state": "MERGED", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "head": "186556e8117c942edfe7e11d199234d458f556a2", - "checked_at": "2026-09-07 14:45 UTC", - "merge_commit": "a76684b2b913505f96cc4952114e78c7b34d6baa" - }, - { - "number": 453, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/453", - "title": "test(bank): pin the bank acceptance adapter", - "owner": "Codex", - "status": "Merged; bank adapter pinned", - "next_action": "Code delivery is complete. Issue #137 retains Operator and stock-client acceptance.", - "github_state": "MERGED", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "head": "04e5ac5e14b779e99474145e6a9a2b45172b3c15", - "checked_at": "2026-09-07 14:45 UTC", - "merge_commit": "e26ffff05fd8938b4e2d5339e7224683b36af84d" + "number": 532, + "url": "https://github.com/LyraCoreProject/LyraCore/issues/532", + "summary": "Meeting stones are merged; the real-client check list remains.", + "importance": 2, + "gain": 3, + "effort": 2, + "confidence": "high", + "disposition": "human", + "rationale": "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.", + "next_action": "Re-import the gameobjects family, run debug_repair_after_publish, then run docs/meeting-stone-client-check.md with a real client.", + "blockers": [ + "Real 1.12.1 client check", + "Named-host deploy" + ], + "evidence": [ + "https://github.com/LyraCoreProject/LyraCore/pull/605", + "docs/meeting-stone-client-check.md" + ], + "related_prs": [ + 605 + ], + "updatedAt": "2026-09-23T11:16:03Z", + "github_state": "open", + "owner": "Human" }, { - "number": 10, - "url": "https://github.com/LyraCoreProject/wire-harness/pull/10", - "title": "test(dive): add the breath and drowning flow", - "owner": "GPT-5.6 Sol, medium effort, adapter agent", - "status": "Merged; dive adapter pinned", - "next_action": "Code delivery is complete. Issue #142 retains Operator and stock-client acceptance.", - "head": "6affc2eec40a7fee7c4a915e80a816f867de0614", - "github_state": "MERGED", - "merge_commit": "538423176c4b2a3dd1ba8eae1cc1ab1a1cc877cf", - "checked_at": "2026-09-07 14:45 UTC", - "checks": [ - { - "name": "test (ubuntu-latest)", - "result": "SUCCESS" - }, - { - "name": "test (macos-latest)", - "result": "SUCCESS" - }, - { - "name": "coverage", - "result": "SUCCESS" - } - ] - }, - { - "number": 451, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/451", - "title": "docs(triage): record issue outcomes and current assignments", - "owner": "Codex", - "status": "Merged after checks and all five review threads resolved", - "next_action": "Complete. Report ownership continues in this thread.", - "head": "14331e22578d4f92e2a84e98a6a071db971fe03c", - "github_state": "MERGED", - "checked_at": "2026-09-07 14:59 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "merge_commit": "6f42d5a18583326a1a133a7411772a9cf7367a8c" - }, - { - "number": 454, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/454", - "title": "test(dive): pin the drowning acceptance adapter", - "owner": "GPT-5.6 Sol, medium effort, adapter agent", - "status": "Merged; dive adapter pinned", - "next_action": "Code delivery is complete. Issue #142 retains Operator and stock-client acceptance.", - "head": "4bf3a522fdd0d7c90aa9d5a3559b7e192f68d14b", - "github_state": "MERGED", - "checked_at": "2026-09-07 15:02 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "UNAVAILABLE", - "platform_result": "SUCCESS", - "source": "GitHub reported SUCCESS for a rate-limit notice; no completed CodeRabbit review was delivered before this historical merge." - } - ], - "merge_commit": "32aa004e0d2fe0921033bea77e3a85796e277dfd", - "review_note": "CodeRabbit reported its rate limit. The prior coordinating review checked the exact pin diff, upstream PR, release and fresh-clone evidence before merge. This historical merge predates the explicit requirement to wait for CodeRabbit." - }, - { - "number": 455, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/455", - "title": "fix(quests): complete the Warlock Binding encounters", - "owner": "Codex, coordinating PR review", - "status": "Merged after human schema approval", - "next_action": "Complete implementation. Keep #40 open for real-client acceptance.", - "head": "bab88efadfe3b2365f11d0e02540225b71c4f9e6", - "github_state": "MERGED", - "checked_at": "2026-09-07 17:52 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "review_state": { - "CodeRabbit": "COMPLETE", - "coordinating": "COMPLETE", - "human_schema": "APPROVED" - }, - "review_findings": [], - "review_note": "The user reviewed and approved the schema. All seven current-head checks and actual CodeRabbit review passed before the separate merge action.", - "merge_commit": "1c63b7f2dad4c9ad32bd2f934e63ee62dc729080", - "merged_at": "2026-09-07T17:46:23Z" - }, - { - "number": 457, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/457", - "title": "test(module): isolate concurrent fixture Wasm artifacts", - "owner": "Prior orchestrator, private-Wasm correction", - "status": "Merged; checks and completed reviews passed", - "next_action": "Complete. Preserve review and verification evidence.", - "head": "91c5745bed7a82536449b4670889a59b7e1020f4", - "checked_at": "2026-09-07 15:49 UTC", - "github_state": "MERGED", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "review_state": { - "CodeRabbit": "COMPLETE", - "coordinating": "COMPLETE" - }, - "review_findings": [], - "merge_commit": "180a68168fb48b0766f8f9f6faa7155d65f615c3", - "merged_at": "2026-09-07T15:44:24Z", - "review_note": "All seven checks passed. CodeRabbit completed review through the recorded head with no unresolved findings; coordinating review is complete." - }, - { - "number": 456, - "owner": "Codex, coordinating agent", - "title": "docs(triage): recover assignments and wait for review", - "url": "https://github.com/LyraCoreProject/LyraCore/pull/456", - "head": "505ee54c531e895eca618ddf1cbb3b6441b69e39", - "github_state": "MERGED", - "checked_at": "2026-09-07 15:49 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "review_findings": [], - "review_state": { - "CodeRabbit": "COMPLETE", - "coordinating": "COMPLETE" - }, - "status": "Merged; checks and completed reviews passed", - "next_action": "Complete. Preserve review and verification evidence.", - "merge_commit": "3455aa2ef1de7eb959909fa79d55f62a90925cba", - "merged_at": "2026-09-07T15:46:30Z", - "review_note": "All seven checks passed. CodeRabbit completed review through the recorded head with no unresolved findings; coordinating review is complete." - }, - { - "number": 458, - "title": "docs(triage): resume issue ownership and PR monitoring", - "url": "https://github.com/LyraCoreProject/LyraCore/pull/458", - "owner": "Codex, coordinating agent", - "status": "Merged; report correction merged in #459", - "next_action": "Complete. Correction #459 merged and the original review thread is resolved.", - "head": "da2140f545711063c490149217ad370c3fc08662", - "github_state": "MERGED", - "checked_at": "2026-09-07 16:57 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "merge_commit": "627327f04aab8ceae9e021ef3450212dda40680c", - "review_state": { - "CodeRabbit": "COMPLETE", - "coordinating": "COMPLETE" - }, - "review_findings": [], - "review_note": "All seven checks passed at da2140f. CodeRabbit completed review with one actionable report-state finding. The coordinating merge script continued after a failed review assertion and merged the PR with that thread unresolved. Validation and merge now run as separate steps. Correction #459 subsequently merged after all checks and actual CodeRabbit review passed, and the original thread was resolved." - }, - { - "number": 459, - "title": "docs(triage): correct review status and record implementation progress", - "url": "https://github.com/LyraCoreProject/LyraCore/pull/459", - "owner": "Codex, coordinating agent", - "status": "Merged after all checks and review passed", - "next_action": "Complete. Original #458 review thread resolved; report maintenance continues.", - "head": "ae8438767834dba3b97d4ea1a4988ef4f6046cd3", - "github_state": "MERGED", - "checked_at": "2026-09-07 16:57 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "review_state": { - "CodeRabbit": "COMPLETE", - "coordinating": "COMPLETE" - }, - "review_findings": [], - "merge_commit": "94aa2da8bb22b1d368b980769563c6fbbb330bc7", - "merged_at": "2026-09-07T16:54:10Z", - "review_note": "CodeRabbit review a0b10a66-db4c-4067-9454-4fbc2a61f54c covered ae84387 with no new findings. All seven checks passed and the clarification thread was resolved before merge." - }, - { - "number": 461, - "title": "fix(loot): refuse replayed promotions after resolution", - "url": "https://github.com/LyraCoreProject/LyraCore/pull/461", - "head": "034079ae748e09cc0e0731f9e635a55031d51ef7", - "github_state": "MERGED", - "owner": "Codex, coordinating PR review", - "checked_at": "2026-09-07 20:20 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "status": "Merged after human schema approval, all checks and current-head review", - "next_action": "Complete. The guarded upgrade procedure ships with the merged change.", - "review_state": { - "CodeRabbit": "COMPLETE", - "coordinating": "COMPLETE", - "human_schema": "APPROVED" - }, - "review_findings": [], - "review_note": "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. All seven checks and current-head CodeRabbit review passed before merge 5f42e5a. The recorded human schema approval covers the unchanged Module and upgrade procedure.", - "human_schema_approval": { - "at": "2026-09-07 20:05 UTC", - "reviewed_head": "aea68d8d08aee09f1a44dcd40333a0de230a7cf1", - "instruction": "I reviewed the schema; approve merge", - "current_schema_identical": true - }, - "merged_at": "2026-09-07T20:18:34Z", - "merge_commit": "5f42e5ae31060461973941c17f364f38554c8428" - }, - { - "number": 462, - "title": "feat(items): preserve random properties from creation to the client", - "url": "https://github.com/LyraCoreProject/LyraCore/pull/462", - "head": "8b72ddf55bbb9828c4873bc49c7904c8c89898fc", - "github_state": "MERGED", - "owner": "Codex, coordinating PR review", - "checked_at": "2026-09-07 18:14 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "status": "Merged after human schema approval", - "next_action": "Complete. Integrate the remaining Stat Kind behavior and Spell repair.", - "review_state": { - "CodeRabbit": "COMPLETE", - "coordinating": "COMPLETE", - "human_schema": "APPROVED" - }, - "review_findings": [], - "review_note": "The user reviewed and approved the schema. All seven current-head checks and actual CodeRabbit review passed before the separate merge action.", - "merge_commit": "8a409896be5680f8c71553e969b624b3c23d06c0", - "merged_at": "2026-09-07T17:54:48Z" - }, - { - "number": 463, - "title": "fix(gateway): clean up parties after Character deletion", - "url": "https://github.com/LyraCoreProject/LyraCore/pull/463", - "github_state": "MERGED", - "owner": "GPT-5.6 Sol, high effort, Character cleanup implementer", - "head": "d94bc1d5bf7365e5bec118cbd98fab1d04b165ce", - "checked_at": "2026-09-07 19:51 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "review_findings": [], - "review_state": { - "CodeRabbit": "COMPLETE", - "coordinating": "COMPLETE" - }, - "status": "Merged after all checks and current-head review passed", - "next_action": "Complete the separate Headless Client suite acceptance for #46.", - "review_note": "Head d94bc1d preserves the original LEAVE failure if roster confirmation also fails, and repairs known groups while a failed Shard enumeration remains queued for retry. All 53 party tests, eight focused deletion checks and strict Gateway lint pass. CodeRabbit completed review on this head with no remaining finding. All seven checks, including durable CI, passed before merge a345555.", - "merged_at": "2026-09-07T19:48:12Z", - "merge_commit": "a345555b09623d4cf344106e31b0435a807357df" - }, - { - "number": 464, - "title": "docs(triage): track published PRs and review follow-up", - "url": "https://github.com/LyraCoreProject/LyraCore/pull/464", - "owner": "Codex, coordinating PR review", - "github_state": "MERGED", - "head": "3205dae4eed5f0fec4f15541b6120e98be84b32e", - "checked_at": "2026-09-07 17:52 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "status": "Merged after all checks and review passed", - "next_action": "Complete. Report maintenance continues.", - "merge_commit": "f86c3e23ce9841850805ebedff29160801f210a1", - "merged_at": "2026-09-07T17:48:25Z", - "review_findings": [], - "review_state": { - "CodeRabbit": "COMPLETE", - "coordinating": "COMPLETE" - }, - "review_note": "All seven checks passed and actual CodeRabbit review reported no findings at 3205dae before merge." - }, - { - "number": 465, - "title": "fix(importer): restore build 5875 spell effects", - "url": "https://github.com/LyraCoreProject/LyraCore/pull/465", - "owner": "GPT-5.6 Sol, high effort, Spell target fix; Codex final review", - "github_state": "MERGED", - "head": "5ce7d39d06bfe904e56542e9dbde4b69962b66a4", - "checked_at": "2026-09-07 21:17 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "status": "Merged after all checks and current-head review passed", - "next_action": "Complete. Preserve the recorded checks and review evidence.", - "review_findings": [], - "review_state": { - "CodeRabbit": "COMPLETE", - "coordinating": "COMPLETE" - }, - "review_note": "Final head 5ce7d39 passed all seven checks and current-head CodeRabbit review before merge 044b935. Its 360 ordinary importer tests, actual-source audits, strict lint and imported gameplay cases pass. The corrected target selection covers all 19 pinned location codes and repairs 170 additional source pairs.", - "merge_commit": "044b93531ed6afe13202cd541d105d3d634d5b0d" + "number": 533, + "url": "https://github.com/LyraCoreProject/LyraCore/issues/533", + "summary": "No 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.", + "importance": 1, + "gain": 2, + "effort": 2, + "confidence": "medium", + "disposition": "dependency", + "rationale": "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.", + "next_action": "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.", + "blockers": [ + "An imported raid map (the importer covers Deadmines, map 36, as the only instance)" + ], + "evidence": [ + "https://github.com/LyraCoreProject/LyraCore/issues/533", + "module/src/instance.rs: party_size_allows_entry only checks member_count <= GROUP_MAX_MEMBERS (5)", + "module/src/group.rs: GroupKind::Raid exists, so the Gate can read the group kind" + ], + "related_prs": [ + 543, + 566 + ], + "updatedAt": "2026-09-23T11:16:05Z", + "github_state": "open", + "owner": "Claude" }, { - "number": 58, - "url": "https://github.com/LyraCoreProject/lyracore-cli/pull/58", - "title": "fix(publish): require drained legacy loot before upgrade", - "owner": "GPT-5.6 Sol, high effort, CLI implementer", - "head": "d6601ec35592eb0f18c40408ba5113846f4640e8", - "github_state": "MERGED", - "checked_at": "2026-09-07 18:14 UTC", - "checks": [ - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "status": "Merged; Core pin integration in #461", - "next_action": "Integrate the reachable CLI commit into #461 and verify the pinned shim.", - "review_state": { - "CodeRabbit": "COMPLETE", - "coordinating": "COMPLETE" - }, - "review_findings": [], - "review_note": "722 local tests, Rust 1.85 checks and strict lint pass. CodeRabbit withdrew its atomic-lock finding after the supported quiescence procedure was made explicit. No production operation was performed.", - "merge_commit": "5688972fe1504943581a12547481dddb77eadb2b" - }, - { - "number": 466, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/466", - "title": "feat(items): apply remaining random property stats", - "owner": "Codex, final integration and review", - "head": "0e9e855a8a2aa8b7c008aa4e98e0e0418d8af50a", - "github_state": "MERGED", - "checked_at": "2026-09-07 21:37 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "status": "Merged after all seven checks and current-head review passed", - "next_action": "Complete. Issue #31 retains the real-client acceptance steps.", - "review_state": { - "CodeRabbit": "COMPLETE", - "coordinating": "COMPLETE" - }, - "review_findings": [], - "review_note": "Merged #466 as 34e9a35 after all seven checks and current-head CodeRabbit review passed. The final Gateway projection also saturates the positive armor-aura sum; its real durable regression reproduced signed overflow before the fix and passed afterward. Module source passed 1,501 unit tests and four durable Stat Kind cases. Final Gateway source passed 1,323 unit and 119 integration/parity checks, the resistance fixture, strict lint and preflight. Live-client acceptance remains separate.", - "merge_commit": "34e9a35420377dd2ec8dc1cae769fbbe22d1da80" - }, - { - "number": 467, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/467", - "title": "docs(triage): record schema merges and integration findings", - "owner": "Codex", - "head": "22046acf5684e7609a5039f1938ab9a38ee4ba1b", - "github_state": "MERGED", - "checked_at": "2026-09-07 21:17 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "status": "Merged after all checks and current-head review passed", - "next_action": "Complete. Preserve the recorded checks and review evidence.", - "review_state": { - "CodeRabbit": "COMPLETE", - "coordinating": "COMPLETE" - }, - "review_findings": [], - "review_note": "The earlier rate limit applied to 9f2b072. CodeRabbit later reviewed b8136d1 and requested the #470 merge revision; 22046ac added it. CodeRabbit then reported no actionable comments for the b8136d1-to-22046ac range and recorded final review coverage for 22046ac. All seven checks passed before merge 48ba8b3. Completion evidence: https://github.com/LyraCoreProject/LyraCore/pull/467#issuecomment-5574380209", - "merge_commit": "48ba8b397f6c9e84dc69571e4503b3960bca4021" - }, - { - "number": 468, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/468", - "title": "test(quests): copy the appended item property field", - "owner": "Codex", - "head": "08402b836499cb584ee3f922310721bec67eff14", - "github_state": "MERGED", - "checked_at": "2026-09-07 18:56 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "status": "Merged", - "next_action": "Complete. Dependent branches are integrating this fixture correction.", - "review_state": { - "CodeRabbit": "COMPLETE", - "coordinating": "COMPLETE" - }, - "review_findings": [], - "review_note": "All seven checks and actual CodeRabbit review passed before merge. The corrected Binding fixture had also passed its local durable case.", - "merge_commit": "88c93aeb9bfd1a34ca7f3d5cf2417406184bc2c7", - "merged_at": "2026-09-07T18:47:57Z" + "number": 534, + "url": "https://github.com/LyraCoreProject/LyraCore/issues/534", + "summary": "Bots in a Raid read party facts and take Companion Orders across the whole Raid.", + "importance": 2, + "gain": 2, + "effort": 3, + "confidence": "medium", + "disposition": "done", + "rationale": "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.", + "next_action": "Closed on GitHub with evidence.", + "blockers": [], + "evidence": [ + "https://github.com/LyraCoreProject/LyraCore/pull/604", + "https://github.com/LyraCoreProject/LyraCore/pull/606", + "https://github.com/LyraCoreProject/packages/pull/60" + ], + "related_prs": [ + 604, + 606 + ], + "updatedAt": "2026-10-03T21:00:00Z", + "github_state": "closed", + "owner": "Claude" }, { - "number": 11, - "url": "https://github.com/LyraCoreProject/wire-harness/pull/11", - "title": "fix(lyracore): encode Operator cleanup actors for durable ownership", - "owner": "Codex, Headless Client adapter compatibility", - "head": "bd6a238a3a82e8590fa483b000ee93208f4bf4a3", - "github_state": "MERGED", - "checked_at": "2026-09-07 19:20 UTC", - "status": "Merged and released as v0.1.0-alpha.9", - "next_action": "Include the verified alpha.9 pin in Account ownership #61.", - "checks": [ - { - "name": "test (ubuntu-latest)", - "result": "SUCCESS" - }, - { - "name": "test (macos-latest)", - "result": "SUCCESS" - }, - { - "name": "coverage", - "result": "SUCCESS" - } - ], - "review_state": { - "CodeRabbit": "NOT_CONFIGURED", - "coordinating": "COMPLETE" - }, - "review_findings": [], - "review_note": "Independent review caught and corrected the Transfer argument count before merge. All three CI checks and four offline shell checks pass. A fresh clone of alpha.9 resolves to the merged commit and passes the command-boundary check.", - "merge_commit": "ec6c65fd7ef96ea3772f6015446d07d1b4005859", - "merged_at": "2026-09-07T19:17:51Z" - }, - { - "number": 470, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/470", - "title": "fix(creatures): retain temporary summon lifetime checks", - "head": "47184b723c5ba572499a4abbf49b1bf2c3fd837b", - "owner": "GPT-5.6 Sol, high effort, expiry regression cases; Codex final review", - "github_state": "MERGED", - "checked_at": "2026-09-07 20:48 UTC", - "status": "Merged after all seven checks and current-head review passed", - "next_action": "Complete. Dependent branches are integrating merge 3669dfb.", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "review_state": { - "CodeRabbit": "COMPLETE", - "coordinating": "COMPLETE" - }, - "review_findings": [], - "review_note": "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; all seven checks, including durable CI, passed before merge 3669dfb.", - "merge_commit": "3669dfbc7f648fd098cb77317a44f76c8597e262" - }, - { - "number": 471, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/471", - "title": "fix(account): fence World Sessions across Gateways", - "owner": "GPT-6 Astra, high effort, Account ownership implementer", - "head": "9dd2955d64be9704cdb7e2069ea75e1a6effade5", - "github_state": "MERGED", - "checked_at": "2026-09-08 04:49 UTC", - "status": "Merged as c6003e5 after user authorization; issue #61 closed", - "next_action": "Complete. Follow the coordinated Module and Gateway rollout when deployment is authorized.", - "review_state": { - "CodeRabbit": "SUCCESS", - "coordinating": "COMPLETE", - "human_schema": "MERGE_AUTHORIZED" - }, - "review_findings": [], - "review_note": "The user authorized merging after the concrete schema and SessionActor ABI were presented: \"If you are confident in the prs merge them\". Root confirmed confidence from the completed two-Gateway and durable proofs, then rechecked unchanged head 9dd2955, all seven successful statuses, actual review coverage, all 16 resolved threads and CLEAN/MERGEABLE state. A separate squash merge produced c6003e5 at 04:47:01 UTC. No production Realm was changed.", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "merge_commit": "c6003e5fe5017f6302aa501b11c1b16aeeb1e322" - }, - { - "number": 12, - "url": "https://github.com/LyraCoreProject/wire-harness/pull/12", - "title": "fix(lyracore): send numeric GUIDs in structured actors", - "owner": "Codex; independent Sol review", - "head": "83c671680b2392df15cb14180aef61970436b2a0", - "github_state": "MERGED", - "checked_at": "2026-09-07 20:24 UTC", - "status": "Merged and released as v0.1.0-alpha.10", - "next_action": "Complete. Account ownership and the party suite are integrating the verified release.", - "checks": [ - { - "name": "test (ubuntu-latest)", - "result": "SUCCESS" - }, - { - "name": "test (macos-latest)", - "result": "SUCCESS" - }, - { - "name": "coverage", - "result": "SUCCESS" - } - ], - "review_state": { - "CodeRabbit": "NOT_CONFIGURED", - "coordinating": "COMPLETE" - }, - "review_findings": [], - "review_note": "Actual CLI testing found alpha9 encodes a structured u64 as a JSON string, which Module decoding refuses. The fix prints canonical decimal JSON numbers without float conversion. The revised contract fails on old code; all four offline suites pass. Owned CLI 2.7.1 changed exact durable GUID 9007199254740993 without rounding. Independent Sol review found no blocker. Release alpha10 resolves to 8b497bb; a fresh tag clone passed the Actor contract.", - "merged_at": "2026-09-07T20:22:44Z", - "merge_commit": "8b497bbdef97c5aa83c5aa6630046e69fa1a374f" - }, - { - "number": 13, - "url": "https://github.com/LyraCoreProject/wire-harness/pull/13", - "title": "test(lyracore): isolate party scenarios by fixture", - "owner": "GPT-5.6 Sol, high effort; independent Sol review and Codex final merge", - "head": "2eb3fdcd0c12ba2bd98a6d49ecde9456ca625542", - "github_state": "MERGED", - "merge_commit": "30a2dd2a73d0e48bc286b0c40135460dfe8818f3", - "checked_at": "2026-09-07 21:17 UTC", - "status": "Merged and released as alpha11", - "next_action": "Integrate the verified alpha11 pin in #471. Complete Package-backed acceptance when its compatible artifact is available.", - "checks": [ - { - "name": "test (ubuntu-latest)", - "result": "SUCCESS" - }, - { - "name": "test (macos-latest)", - "result": "SUCCESS" - }, - { - "name": "coverage", - "result": "SUCCESS" - } - ], - "review_state": { - "independent": "COMPLETE", - "coordinating": "COMPLETE" - }, - "review_findings": [], - "review_note": "All five independent review findings are corrected. The owned two-Shard deletion scenario passed twice with complete unrelated-party preservation. A fresh alpha11 clone matches the merge SHA and passes Actor and party-isolation contracts." - }, - { - "number": 472, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/472", - "title": "docs(triage): record merged work and remaining acceptance", - "owner": "Codex", - "head": "7b7a319ec1cba59d6d26a83a311116012b56af49", - "github_state": "MERGED", - "checked_at": "2026-09-07 22:57 UTC", - "status": "Merged as d672278; all checks and actual review passed", - "next_action": "Continue maintaining the live report at the same URL.", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "SUCCESS" - } - ], - "review_state": { - "CodeRabbit": "SUCCESS", - "coordinating": "COMPLETE" - }, - "review_findings": [], - "review_note": "Root verified all seven successful statuses, actual review of 7b7a319 with no actionable comments, resolved threads and CLEAN/MERGEABLE state before a separate squash merge. GitHub records merge d672278 at 22:55:47 UTC. This live status update records that completed snapshot; Account ownership remains a draft pending the requested human schema approval.", - "merge_commit": "d67227838bf3daaa0ce9ed4c2bd79deb90dd38ad" - }, - { - "number": 473, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/473", - "title": "fix(items): allocate GUIDs from durable Shard ranges", - "owner": "GPT-6 Astra, high effort, item GUID implementer", - "head": "c0ddfd010db2185cd75a5ebc35f3cfbaee3e0b3e", - "status": "Merged after final CI and review", - "next_action": "Source and design complete; #71 closed. Before deployment, an authorized Operator must audit legacy GUIDs and permanent ranges, then follow the coordinated rollout plan.", - "checked_at": "2026-09-08 07:05 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "PASS_ON_PRIOR_HEAD", - "source": "Full review of 45 files through fa64b46 completed with no actionable findings. Later fixture and compatibility corrections need independent review." - } - ], - "review_note": "CodeRabbit completed a full 45-file review through fa64b46 with no actionable findings. Root and GPT-5.6 Sol independently reviewed the later compatibility correction. Final c0ddfd0 adds comment corrections and rebases onto main e41d5f8 without further runtime changes. All final-head CI passed, including full Module durable and Gateway ownership/projection suites. The only CodeRabbit thread is resolved.", - "github_state": "MERGED", - "merge_commit": "408f417cb4b909065bc6c253eba9477c2e402d15" - }, - { - "number": 474, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/474", - "title": "fix(loot): retry failed settlements while results remain", - "owner": "GPT-6, Codex coordinator", - "head": "2a11e7c24ba58594a8089bce64343cecf251dbd3", - "status": "Merged after CI and independent review", - "next_action": "Bounded retry is complete. Issue #84 keeps immutable durable settlement and original three-Shard/bot-party acceptance open.", - "checked_at": "2026-09-08 06:32 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "UNAVAILABLE", - "source": "Hourly quota prevented actual review. Independent review is recorded separately." - } - ], - "github_state": "MERGED", - "review_note": "Merged at 2a11e7c after every CI job and GPT-5.6 Sol independent review passed, with no unresolved threads. CodeRabbit was unavailable under its hourly quota and supplied no review of this PR.", - "merge_commit": "e41d5f846e55c5b08f67d6477725ebdd8b6158f5" - }, - { - "number": 475, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/475", - "title": "docs(triage): refresh issue order and assign the next batch", - "owner": "GPT-6, Codex coordinator", - "head": "c8493f068eaea6136e9a5a1705b690cf5a066ad0", - "checked_at": "2026-09-08 06:13 UTC", - "status": "Merged", - "next_action": "Complete. Preserve later report updates in the next source snapshot.", - "review_note": "All CI checks passed. GPT-5.6 Sol independently checked exact issue coverage, audit incorporation, state evidence and deterministic rendering at c8493f0. CodeRabbit skipped the two data files and supplied no content review.", - "github_state": "MERGED", - "merge_commit": "5a4dedcb3818dbb3413affe2e592901c950f4ac3" - }, - { - "number": 476, - "owner": "GPT-5.6 Sol, high effort, Spell event implementer", - "head": "af13d1e94c79601545d5296f88455f91c03207bf", - "title": "refactor(spells): give cast events an explicit kind", - "url": "https://github.com/LyraCoreProject/LyraCore/pull/476", - "checked_at": "2026-09-08 07:30 UTC", - "github_state": "MERGED", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "UNAVAILABLE", - "source": "Hourly quota prevented actual review." - } - ], - "status": "Merged after human schema approval, CI and independent review", - "next_action": "Source complete; #72 closed. Publish the Module before starting the new Gateway during an authorized rollout.", - "review_note": "Root reviewed explicit dispatch and kind-zero legacy ordering. Local Module, Gateway, importer and shared suites, all 990 generated bindings, strict lint, build, formatting and offline preflight passed. CodeRabbit posted a rate limit. Root combined all three source changes without conflicts. Module 1508, Gateway 1448, all 13 new durable cases, all 995 bindings, formatting and strict workspace Clippy passed. The user approved the schema change, and root merged af13d1e as 02a0662 after rechecking all CI and zero unresolved threads.", - "merge_commit": "02a0662cf22175d1c72de18ae34846377daaabbf" - }, - { - "number": 477, - "owner": "GPT-6 Astra, high effort, door collision implementer", - "head": "37d1a1e2eec8f0a20fcb5126f60719b6da1033a4", - "title": "fix(vmap): make closed instance doors block rays", - "url": "https://github.com/LyraCoreProject/LyraCore/pull/477", - "checked_at": "2026-09-08 08:14 UTC", - "github_state": "MERGED", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "REVIEW_AND_FIX_CONFIRMED", - "source": "Full review at 7d5c8ce plus explicit confirmation of the rollback fix at 37d1a1e: discussion_r3955595964." - } - ], - "status": "Merged after schema approval, CI and resolved review", - "next_action": "Source complete. Keep #113 open for canonical collision and sight-ray benchmarks and #114 open for imported FactoryDoor and sibling-instance acceptance.", - "review_note": "Root and the item GUID implementer reviewed runtime behavior, then root reviewed the pool lifecycle follow-up. Combined source proof passed: Module 1508, Gateway 1448, 13 new durable cases, all 995 bindings, formatting and strict workspace Clippy. Full CodeRabbit review at 7d5c8ce found one valid fixture-data issue. Final 37d1a1e rebases onto bfe651f8 and makes the diagnostic fixture abort even after successful assertions. Its fresh durable test requires the success marker and proves seeded unrelated rows survive. Root reviewed this correction without findings; CodeRabbit inspected 37d1a1e and confirmed its original concern no longer applies. The review thread is resolved. All six final CI jobs passed, including the full durable suite. Root verified the exact head and zero unresolved threads, then merged 37d1a1e as ef33da5 after the recorded human schema approval.", - "merge_commit": "ef33da57990e71dbace256ff025f4673dd818c5e" - }, - { - "number": 478, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/478", - "title": "docs(triage): record merged fixes and remaining reviews", - "owner": "GPT-6, Codex coordinator", - "head": "0320f116f4f2ffde4d9278b6c34a04dfb1b30ce2", - "merge_commit": "bfe651f8f101dd7cba1deaaacdb3cc1b59f3e444", - "github_state": "MERGED", - "status": "Merged", - "checked_at": "2026-09-08 07:54 UTC", - "next_action": "Complete. Preserve later live report changes in the next source snapshot.", - "review_note": "All CI passed. GPT-5.6 Sol independently reviewed the data and deterministic renderer; two stale sentences were corrected and the final revision had no findings. CodeRabbit supplied a quota notice and no content review." - }, - { - "number": 479, - "url": "https://github.com/LyraCoreProject/LyraCore/pull/479", - "title": "fix(nav): route bots into Northshire Abbey", - "owner": "Existing GPT-6 Codex implementer owns merge; triage agents review", - "head": "438ad8cdccdc580d003c1e9b00daac9064738dae", - "github_state": "MERGED", - "status": "Merged after CI and all review findings were resolved", - "checked_at": "2026-09-08 08:59 UTC", - "checks": [ - { - "name": "durable", - "result": "SUCCESS" - }, - { - "name": "build", - "result": "SUCCESS" - }, - { - "name": "fmt", - "result": "SUCCESS" - }, - { - "name": "clippy", - "result": "SUCCESS" - }, - { - "name": "test", - "result": "SUCCESS" - }, - { - "name": "wasm", - "result": "SUCCESS" - }, - { - "name": "CodeRabbit", - "result": "REVIEW_AND_FIX_CONFIRMED" - } - ], - "next_action": "Source complete. During an authorized rollout, regenerate imported navigation data and derived coverage, then complete client acceptance.", - "review_note": "Independent review reproduced the low-ceiling and stair-boundary regressions, then verified their corrections. CodeRabbit reviewed 72ef1d4 and found the extra height offset in the coarse movement ray. Final 438ad8cd passes foot height to that query and keeps the raised exact ray; a real durable 2.5-yard wall regression failed before the fix and passed after it, according to the implementer. Codex reviewed the final delta without findings, including the exact-step rounding correction. CodeRabbit inspected 438ad8cd and confirmed its finding is addressed at discussion_r3955984303. The sole review thread is resolved. All six final CI jobs passed. The implementer merged 438ad8cd as 994f86d after review was complete. Captured Abbey replay evidence is the implementer's verification; the triage team did not access that geometry.", - "merge_commit": "994f86dabbaa861e88791d9ee2caed5451eff792" + "number": 559, + "url": "https://github.com/LyraCoreProject/LyraCore/issues/559", + "summary": "The three random test failures are fixed on packages main.", + "importance": 2, + "gain": 3, + "effort": 2, + "confidence": "medium", + "disposition": "done", + "rationale": "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.", + "next_action": "Closed on GitHub with evidence.", + "blockers": [], + "evidence": [ + "https://github.com/LyraCoreProject/packages/pull/58", + "https://github.com/LyraCoreProject/LyraCore/issues/559" + ], + "related_prs": [ + 58 + ], + "updatedAt": "2026-10-03T00:00:00Z", + "github_state": "closed", + "owner": "Claude" + }, + { + "number": 570, + "url": "https://github.com/LyraCoreProject/LyraCore/issues/570", + "summary": "Both halves are merged; only the real-client check remains.", + "importance": 2, + "gain": 2, + "effort": 1, + "confidence": "high", + "disposition": "human", + "rationale": "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.", + "next_action": "In a real client, interrupt a bot on a bent path mid-leg and kill a creature mid-walk. Neither should snap back.", + "blockers": [ + "Real 1.12.1 client check" + ], + "evidence": [ + "https://github.com/LyraCoreProject/LyraCore/pull/603", + "https://github.com/LyraCoreProject/packages/pull/61", + "https://github.com/LyraCoreProject/LyraCore/issues/608" + ], + "related_prs": [ + 603 + ], + "updatedAt": "2026-09-24T20:44:21Z", + "github_state": "open", + "owner": "Human" + }, + { + "number": 584, + "url": "https://github.com/LyraCoreProject/LyraCore/issues/584", + "summary": "A 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.", + "importance": 4, + "gain": 4, + "effort": 2, + "confidence": "low", + "disposition": "human", + "rationale": "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.", + "next_action": "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.", + "blockers": [ + "Hand-played loot test on Argus (named host, human)" + ], + "evidence": [ + "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" + ], + "related_prs": [ + 557, + 531 + ], + "updatedAt": "2026-09-28T08:27:38Z", + "github_state": "open", + "owner": "Human" + }, + { + "number": 585, + "url": "https://github.com/LyraCoreProject/LyraCore/issues/585", + "summary": "The 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.", + "importance": 2, + "gain": 2, + "effort": 2, + "confidence": "high", + "disposition": "decision", + "rationale": "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.", + "next_action": "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.", + "blockers": [ + "Decision on compatibility id mapping" + ], + "evidence": [ + "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" + ], + "related_prs": [ + 583 + ], + "updatedAt": "2026-09-28T08:27:40Z", + "github_state": "open", + "owner": "Human" + }, + { + "number": 607, + "url": "https://github.com/LyraCoreProject/LyraCore/issues/607", + "summary": "Each group event recipient reads the cached event table once per transaction.", + "importance": 2, + "gain": 2, + "effort": 2, + "confidence": "medium", + "disposition": "ready", + "rationale": "The event GC keeps the table small, so the cost has a ceiling. One shared snapshot per transaction removes the repeat.", + "next_action": "Collect one transaction's rows once per source and give each recipient its slice; prove one read per transaction in a test.", + "blockers": [], + "evidence": [ + "https://github.com/LyraCoreProject/LyraCore/pull/605" + ], + "related_prs": [], + "updatedAt": "2026-10-03T00:00:00Z", + "github_state": "open", + "owner": "Claude" + }, + { + "number": 608, + "url": "https://github.com/LyraCoreProject/LyraCore/issues/608", + "summary": "A path renewal mid-leg starts the new spline from the stored point, which can lag the rendered one.", + "importance": 2, + "gain": 2, + "effort": 2, + "confidence": "medium", + "disposition": "ready", + "rationale": "The #603 stop rule covers stops but not renewals. The 4 yd persist rule makes the lag visible.", + "next_action": "Start a renewed leg from the stop_on_leg point, with the obstruction check, and add a test that renews between ticks.", + "blockers": [], + "evidence": [ + "https://github.com/LyraCoreProject/packages/pull/61" + ], + "related_prs": [], + "updatedAt": "2026-10-03T00:00:00Z", + "github_state": "open", + "owner": "Claude" } ], + "pull_requests": [], "history": [ { "at": "2026-09-05 06:30 UTC", @@ -4959,10 +3339,19 @@ { "at": "2026-09-08 08:59 UTC", "text": "The Abbey implementer merged PR #479 as 994f86d after all final CI jobs passed, both independent geometry findings were corrected, and CodeRabbit confirmed the coarse-ray fix. Five source PRs are complete. The report keeps 65 issues open with the remaining verification, design and authorized rollout work, and records the two-part #84 proposal." + }, + { + "at": "2026-10-02 16:40 UTC", + "text": "Claude took over the report. Re-audited all 71 open issues after PRs #481 to #602. Added #532, #533, #534, #559, #570, #584 and #585. Recorded #31 as closed. Four issues are ready; #27 and #3 moved to real-client acceptance." + }, + { + "at": "2026-10-03 21:00 UTC", + "text": "Backlog session: closed #559 (packages #58) and #534 (Core #604, #606, packages #60). Merged meeting stones (#605) and the #570 stop fix (Core #603, packages #61); both wait on client checks. Filed #607 and #608." } ], "postplan_draft": "1u1gh8ximdga", "report_url": "https://1u1gh8ximdga.postplan.dev", - "merge_policy": "Codex takes the final merge after current-head checks pass and review findings are resolved. Explicit human review requirements and real-client acceptance remain separate.", - "audit_note": "The 2026-09-08 audit covered all 67 then-open issues against their bodies, comments, linked work and source at c6003e5. Two independent audits covered 66 issues; the GUID implementer reproduced #71 on the unchanged Module. Issues #71 and #72 have since closed after implementation and review, leaving 65 open issues." + "merge_policy": "Claude takes the final merge after current-head checks pass and review findings are resolved. Explicit human review requirements and real-client acceptance remain separate.", + "audit_note": "The 2026-10-02 audit covered all 71 open issues against their bodies, comments, PRs merged since 2026-09-08 and source at da11dcf. The report was then rebased to f454a98 with no assessment changes. Four parallel audits each started from the prior assessment. Issue #31 closed on 2026-09-28.", + "report_owner": "Claude" } diff --git a/docs/triage/report.html b/docs/triage/report.html index 7f390f518..28293ef67 100644 --- a/docs/triage/report.html +++ b/docs/triage/report.html @@ -21,12 +21,12 @@ @media print{.controls{display:none}body{max-width:none;padding:0;font-size:10pt}.scroll{overflow:visible}a{color:inherit}}

LyraCore issue order and delivery

-

Owner: Codex in the triage and delivery thread. Updated . -91 of 91 issues assessed. 65 open on GitHub. -Source revision 994f86dabbaa861e88791d9ee2caed5451eff792.

-

All 65 open issues have current assessments. Source PRs #473, #474, #476, #477 and #479 merged after CI and review; #71 and #72 are closed. Canonical door performance, imported-data and client acceptance remain open. The next loot-recovery work needs a combined design review of settlement retirement and group-disband recovery.

+

Owner: Claude in the triage and delivery thread. Updated . +100 of 100 issues assessed. 71 open on GitHub. +Source revision f454a983b4cf76e6c72cd58c54b74a8066f30114.

+

The 2026-10-02 backlog session closed #559 and #534, merged meeting stones (#532) and both halves of the #570 stop fix. #532 and #570 wait on real-client checks. Two follow-ups are ready: #607 (shared group event snapshot) and #608 (snap-back on a path renewal). No Core PR is open.

-

Current work

+

Current work

How I set the order

Importance measures the cost of leaving the problem open. Gain measures reach and the work it unlocks. Both use 1 to 5, with 5 highest. Effort uses 1 for a small local change, 3 for a substantial slice, @@ -43,22 +43,22 @@

-
OrderIssue and assessment ImportanceGainEffortReturnState and ownerNext action
1#60
The two historical crashes during roughly 500 simultaneous disconnects have no current rerun, so core availability is still unverified.

Pre-auth deadlines, bounded blocking admission, dead-client benchmark reporting, and Account Claims all changed failure and cleanup behavior. None proves that roughly 500 simultaneous post-auth disconnects no longer kill the Gateway. The issue still requires two clean Runbook B runs with process, kernel, and application evidence.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • Requires the controlled 500-client load environment.
  • No current Runbook B evidence is attached.

PR #410 PR #449 PR #471

5436.7Verify existing work
Codex
Run the pinned Headless Client Runbook B twice against the current release Gateway, recording exit status, kernel OOM or signal evidence, file descriptors, task counts, session cleanup, and recovery.
2#424
Motion 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. That proves the old warning could be a false positive. It does not explain or reproduce the reported 15-hour visible freeze, so 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

5546.2Verify existing work
Codex tracks; Operator capture needed
Use the merged per-Shard diagnostics during a controlled reproduction or the next occurrence. Correlate queued movement, callback progress, subscription state, pump state, and peer visibility before choosing recovery behavior.
3#77
The old connection model is retired; the stated capacity target is unmeasured

Shared Coordinator connections and movement batching change the reported bottlenecks. The issue still requires a comparable run beyond roughly 525 seated Characters and a movement-cost breakdown. Code changes alone cannot satisfy that result.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • Fresh current-revision capacity evidence from #59.

PR #244 PR #247

45120.0Verify existing work
Codex
Use #59 to record the current seated capacity and movement cost on comparable hardware. Update or close this parent from that measured result.
4#88
Movement heartbeat batching is already active at 40 ms with 128-entry calls; the remaining work is an approved load acceptance run and tuning only if its timing signals regress.

The current code contradicts the original title: gw_movement_batch, chunking across call pipes, entry isolation, and metrics all exist. PR 234 added a guarded acceptance runner but explicitly left the 500-mover and real-client checks undone.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • Requires an approved synthetic load driver and disposable Realm.
  • Visual acceptance requires a stock client.

PR #234

45210.0Verify existing work
Codex
Run docs/movement-batch-acceptance.md against an approved disposable Realm with at least 500 movers, record batch factor and both latency signals, and tune one lever only if the tripwire fires.
5#113
Instance-scoped door collision is merged; canonical collision and sight-ray performance remain to be measured.

PR #477 adds the private collider registry, lifecycle hooks, transforms and state Gate, then merges dynamic and static hits through instance-aware ray calls. Synthetic durable behavior and all CI passed after schema approval and the fixture-data review correction. The issue explicitly requires canonical-box performance evidence before closure.

Confidence: high. Issue updated 2026-09-08.

Blocked by

  • Canonical-box collision and sight-ray performance must be measured before closing #113.

PR #254 PR #477

45210.0Verify existing work
Codex tracks; Operator benchmark needed
Run debug_bench_collision_gate and debug_bench_los with exact=true on the canonical box. Record comparable before and after results and investigate any regression before closing #113.
6#59
The old crowd-cliff numbers cannot answer current capacity after movement and Relay changes; Runbook A still needs a fresh end-to-end run.

The current movement model and cell-audience Relay path differ from the old 150 and 371 client runs. PR #437 corrected motion-delivery counters and PR #449 reports dead and unknown clients, so a fresh run can now produce useful evidence. No current end-to-end capacity result exists.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • Requires a controlled release benchmark environment.
  • Current end-to-end capacity evidence is absent.

PR #421 PR #437 PR #449

4536.7Verify existing work
Codex
Run Runbook A against a release build at the current main commit and publish capacity, latency, disconnect, writer-occupancy, QUEUESTAT, AOISTAT, and SHARDLOAD results with exact revisions.
7#86
Per-viewer motion supersession is implemented, but there is no current evidence that dense-crowd login starvation still has the 2026-08-09 shape after the shared WorldView changes.

The first coalescing rung is present. Later work replaced per-Character subscriptions with one per-Shard stream and an in-memory cell index, invalidating part of the old cost account. Dense fan-out is still inherently large, but a login-priority lane or interest cap needs fresh evidence.

Confidence: medium. Issue updated 2026-08-11.

Blocked by

  • Issue 59's current crowd-cliff measurement is still open.
  • A dense interest cap changes visible behavior and needs maintainer approval.

PR #244

4536.7Verify existing work
Codex
Run the current dense-crowd measurement from issue 59 and record login completion, queue depth, relay latency, CPU, and delivered motion. Choose a priority lane or interest cap only if starvation reproduces.
8#105
LyraCore pins the repaired Headless Client suite; one full approved-Realm run remains.

Wire-harness PR #6 resolves scenario paths from the adapter directory, supports named subsets, and separates startup failures. Core PR #446 pins the released alpha.4 revision. Offline tests and upstream CI prove dispatch behavior, but the issue's done condition still asks for all scenarios to execute on their merits against a Realm.

Confidence: high. Issue updated 2026-09-07.

Blocked by

  • Approved development Realm and Operator execution.

PR #446

4536.7Verify existing work
Operator
Run the pinned full suite on an approved development Realm and retain every scenario result, including real startup failures and fixture skips.
9#104
The Rust CLI import verbs are merged and pinned; fresh-provision parity and script retirement remain.

lyracore-cli PR #25 implemented import world and import vmaps, and current core documentation uses them. That PR left fresh-provision Verification and retirement of importer/scripts/import-world.sh open. The script cannot be deleted before private and external consumers are inventoried.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • Fresh-provision parity needs approved dump and client data plus Operator coordination.
  • Private or external consumers of import-world.sh must be inventoried before deletion.

3426.0Verify existing work
Operator first; Codex after parity
Run both Rust verbs on a fresh approved development stack. If their floors and manifests match the old flow, inventory and repoint every script consumer, then delete import-world.sh in a source PR.
10#272
Resident creature movement now replays after CREATE; queue shedding and sensing cadence need evidence before changes.

PR #450 fixed the concrete mid-leg CREATE gap and preserved the remaining work. Current code still sheds a motion flush at high egress depth while retaining the latest pending leg, and proximity sensing still runs every eight 500 ms ticks. The issue offers competing policy changes, so a current stock-client recording should decide whether either symptom remains.

Confidence: high. Issue updated 2026-09-07.

Blocked by

  • Controlled reproduction and stock-client observation on current main.

PR #450

3426.0Verify existing work
Codex tracks; real-client reproduction needed
Record engage, approach, and kite movement on current main after #450. If delayed movement remains, correlate egress depth and sense timing, then split the reproduced cause into its own bounded fix.
11#55
The residual crowd disconnects remain unclassified and require a fresh correlated load run.

The old audit found no corruption path and left the symptom for a correlated load run. Cell-audience Relay work and benchmark death reporting have since changed, so the old 3 to 8 disconnects per 150 clients do not describe current behavior.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • Requires a controlled load run and correlated logs.
  • No current reproduction is attached to the issue.

PR #421 PR #449

3333.0Verify existing work
Codex
Run the current crowd scenario with stable peer IDs and collect Gateway session-end causes, Headless Client disconnect reasons, QUEUESTAT, AOISTAT, and SHARDLOAD for the same time window.
12#78
GridBox still recenters at every cell crossing, but this no longer tears down SpacetimeDB subscriptions; it now applies a bounded in-memory index delta and may cause only entity create and destroy churn.

The original measured subscription cost is retired by the shared WorldView. Widening the AOI to 7 by 7 would raise steady audience and relay work, so the old proposed fix should not ship without new evidence of visible churn.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • The original measurement does not describe the current architecture.

PR #244

2222.0Verify existing work
Codex
Measure current AOI recenter deltas and client create and destroy traffic near cell boundaries. Close as superseded if bounded in-memory churn is harmless; otherwise write a new Spec that prices the wider AOI.
13#103
Dynamic door collision source is complete; child performance and imported-data acceptance remain.

PR #254 delivered the model importer and PR #477 delivered the instance-scoped collider and gameplay rays. This parent tracks the remaining evidence in #112, #113 and #114; it has no separate source implementation left.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • Approved client-data import acceptance in #112.
  • Canonical collision and sight-ray performance in #113.
  • Imported FactoryDoor and sibling-instance acceptance in #114.

PR #254 PR #477

45120.0Dependency
Codex tracks child issues
Collect the approved model import evidence in #112, canonical performance results in #113, and imported FactoryDoor and sibling-instance results in #114. Close this parent only after those checks pass.
14#46
PR #463 removes a deleted Character from Realm-core party membership only after acknowledged absence on every healthy Shard; the full Package-backed party suite remains.

The merged cleanup uses temporary acknowledged Character subscriptions, retries Realm-core leave and mirror repair, and preserves membership when a second Coordinator has not observed Transfer arrival. A two-Coordinator durable test covers that race. Wire-harness alpha.11 removed the global party reset and passed the scoped deletion case twice. The remaining eight scenarios need a compatible Package-enabled Module.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • No audited local Module artifact provides playerbots_spawn_role and pkg_playerbots_bot. The full acceptance run needs a compatible Package-enabled Module and Gateway pair.

PR #384 PR #463

4435.3Dependency
GPT-5.6 Sol, high effort, Character cleanup implementer
Run all eight Package-backed party scenarios on a compatible owned Module and Gateway pair. Close the issue if deletion, Transfer, surviving rosters, leader and loot settings all remain correct.
15#66
The two-Gateway capacity experiment now waits on a current one-Gateway baseline and routable Gateway selection; its cross-process correctness prerequisites are closed.

PR #390 closed duplicate bot invites, PR #439 closed duplicate Loot Roll promotion, and PR #471 closed competing Account ownership across Gateways. Shared Shard connections and cell audiences make the original query-count assumptions in the issue stale. The experiment is useful after #59 supplies a current baseline and #65 supplies a supported routing path.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • Issue #59 has no current one-Gateway baseline.
  • Issue #65 has no routable Gateway selection mechanism.

PR #390 PR #421 PR #439 PR #471

4545.0Dependency
Codex
Complete #59 and #65, then run one and two Gateway processes against the same Realm with identical Headless Client load. Compare writer occupancy, subscriptions, Gateway CPU, latency, and disconnects.
16#64
The Gateway still has no SIGTERM drain path and both listeners end only when their tasks fail.

Current main has no Unix shutdown signal or shared drain state. Account Claims from PR #471 protect a replacement World Session from stale cleanup, but they do not stop admission, wait for active World Sessions, or record orderly logout. Runbook B must establish mass-teardown behavior before shutdown is built around it.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • Issue #60 must first establish current mass-disconnect behavior.

PR #471

4444.0Dependency
Codex
After #60, add a shared shutdown signal that closes both listeners, stops new logons, drains World Sessions to a deadline, records clean logout, and exits with observable phase logs.
17#65
Logon still advertises one configured world address and has no Realm-core registry of Gateway address, load, or draining state.

The logon Store returns a one-element realm list built from the configured world address. Realm-core has per-Gateway Shard load samples, but their gateway_key is a hash for accounting rather than a routable address, and no row says a Gateway accepts new World Sessions or is draining. The old estimate that selection is a tiny change no longer matches the required registration and lease work.

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.

4444.0Dependency
Codex
After #69, define a leased Gateway process row on Realm-core with advertised address, admission state, and load; make realm-list selection deterministic and test drain exclusion and stale-row expiry.
18#39
Static and dynamic collision source is merged; child acceptance, fresh-provision parity and real-client movement checks remain.

PR #115 delivered static collision and PR #477 delivered instance-scoped dynamic door collision. Completion still depends on the explicit performance and imported-data checks under #103, issue #104 provisioning parity, and the real-client Blink and line-of-sight matrix.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • Issue #103 child performance and imported dynamic collision acceptance.
  • Issue #104 fresh-provision parity
  • A real-client Blink and line-of-sight session

PR #115 PR #254 PR #477

3553.0Dependency
Codex
Complete the performance and imported-data acceptance under #103, verify #104 on a fresh provision, then run the real-client Blink and line-of-sight matrix before closing the epic.
19#198
Retire the global vmap Gate after current World Import Profile rollout and matching navigation evidence.

The global Gate remains by design. The issue and its old comment use a retired destination example, but docs/vmap-rollout.md now defines the supported World Import Profiles and excludes the Instance Pool from bounded-profile vmaps. No further topology decision is needed. Source removal still depends on accepted rollout and navigation coverage from #184 and #195.

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 and lyracore-world-1 as the World Shards and requires the Instance Pool to receive no bounded-profile generation.
  • module/src/vmap.rs still requires game_config.vmap_enabled plus an active generation.

PR #192 PR #258 PR #275

3342.2Dependency
Codex tracks dependencies
Complete #184 and #195 with the current alliance-eastern and alliance-kalimdor World Import Profiles. Then remove the global Gate, stale reducer and bindings, and runbook steps through one centralized per-map eligibility rule.
20#138
The 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.

1212.0Dependency
Public-site maintainer
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.
21#33
The protocol can expose a Realm list, but the Gateway still presents one configured Realm and the deployment lacks the shared account foundation needed for multiple Realms.

Issue #33 explicitly depends on the shared authentication and account work in #34. Starting independent multi-Realm implementation would duplicate or constrain that unfinished design.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • Issue #34 shared authentication hub and account policy

2451.6Dependency
Codex
Complete and verify issue #34, then rewrite this issue around Realm directory discovery, selection, routing, and a two-Realm Gate.
22#68
Zero-disconnect file-descriptor handoff remains a large optional architecture project with all of its prerequisites open.

The Gateway keeps DecrypterHalf in the reader and EncrypterHalf in the writer; there is no cipher snapshot, SCM_RIGHTS transport, or receiving process protocol. The proposed handoff must also reconstruct WorldView state and coordinate ownership without letting either process write stale data. This complexity is only justified after measured restart cost and two-Gateway gain show that ordinary drain and reconnect are insufficient.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • Issues #64, #66, and #67 are unresolved.
  • No cipher-state snapshot API or acceptance test exists.
  • The feature is Unix-specific and needs an Operator value decision.

2250.8Dependency
Codex
Do not implement before #64, #66, and #67. If measurements justify it, first isolate and test vanilla header-cipher snapshot restoration, then specify the Unix handoff state machine and real-client acceptance check.
23#58
The source installer shipped; the requested binary installer did not

install.sh clones the source and installs a pinned CLI launcher. The original issue instead requires both CLI and Gateway binaries in the installation folder. Treating the source-first flow as full completion would hide that difference.

Confidence: high. Issue updated 2026-08-11.

34112.0Design first
Codex
Decide whether the supported source installation replaces this binary-distribution request. If binary distribution remains wanted, define supported targets and release artifacts before implementation.
24#69
The claimed choice between free-form Gateways and Gateway-per-Shard affinity no longer matches the shared connection model and needs a narrower decision.

Current Gateways keep shared coordinator connections to Shards, maintain a local WorldView, and select event audiences by spatial cells. That is already a hybrid: any Gateway can serve a viewer while local indexes avoid broadcasting most Relays to every World Session. Motion still comes from per-mover Shard rows, so the remaining question is measured subscription and writer cost, not the issue's original strict architectural fork.

Confidence: medium. Issue updated 2026-08-11.

Blocked by

  • Issue #59 lacks a current baseline.
  • Issue #66 lacks a two-Gateway comparison.

PR #421

3426.0Design first
Codex
Rewrite the decision around the current shared connection and WorldView model, then use #59 and #66 measurements to decide whether process-to-Shard affinity adds enough gain to justify routing and failover constraints.
25#34
Realm-core authentication is active, but role-selectable Gateway processes, cross-Realm ban kicks, GM baselines, account migration, registration guidance, and a two-Realm Gate remain.

The data seam has shipped, but the remaining slices change deployment roles and account policy across Realm processes. The issue still requires Operator sequencing and does not identify which operational slice should land first.

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
  • Code fact: gateway/src/config.rs reads LYRACORE_REALM_CORE and gateway/src/main.rs starts both logon and world listeners without a role selection enum or flag.
  • Code fact: the current CoordinatorStore realm list contains one Realm, and account ban state has no cross-Realm active-session kick subscription.

4554.0Design first
Codex
Choose the next operational slice, preferably explicit Gateway role flags, and write separate Tickets for role selection, ban propagation, GM policy, migration, registration, and the two-Realm Gate.
26#29
Basic GM playtest commands exist, while moderation audit, mute, kick, ban enforcement, summon or appear, and freeze behavior remain absent.

The issue now mixes shipped playtest tooling with unimplemented moderation and policy work. The remaining work crosses Gateway sessions, Module state, realm-core account policy, and audit retention, so the umbrella needs a current moderation-only Spec.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • A 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
  • Code fact: module/src/gm.rs implements speed, god, XP rate, level, money, heal, kill, gps, teleport, and add-item commands with gm_level checks, but no game_gm_action table or mute, kick, ban, summon, appear, or freeze path exists.

4453.2Design first
Codex
Rewrite the issue around moderation outcomes, permission levels, audit records, and ban or mute propagation, then split it into one command and enforcement path per Ticket.
27#84
Loot Roll recovery after result expiry needs durable settlement identity; the original three-Shard and bot-party incident remains unverified.

PR #474 merged the completion-marker fix. Recovery after result expiry needs durable receipt retirement plus exclusive roll authority and disband handling across group mirrors. These are several dependent changes. The next design must preserve current loot distribution, including the existing final-member predicate, while preventing stale source work after a group disappears.

Confidence: medium. Issue updated 2026-09-08.

Blocked by

  • Exclusive resolution authority, staging/disband recovery and receipt retirement need one reviewed design.
  • The original incident rerun needs a disposable three-Shard development Realm and verified Headless Client scenario dispatch.
  • https://github.com/LyraCoreProject/LyraCore/issues/84
  • PR #474 changed gateway/src/world/loot.rs to retain the completion marker after settlement failure while continuing healthy Shards.
  • gateway/src/world/loot_tests.rs now proves a failed settlement retries while the result event remains, successful work continues, and completed results stop repeating.
  • PRs #439 and #461 fixed concurrent and replayed promotions. Neither covers a failed World Shard settlement, and neither proves the original three-Shard incident cause.
  • https://github.com/LyraCoreProject/LyraCore/pull/474
  • Gateway suite: 1,444 passed, 7 private tests ignored. Formatting and Gateway clippy passed. The regression failed on the unchanged Gateway and passed with the marker fix.
  • https://github.com/LyraCoreProject/LyraCore/issues/84#issuecomment-5580498204
  • The source design study and adversarial review are saved in the local #84 Tickets. An acknowledgment timeout does not bound a suspended Gateway; promotion_source equal to self does not distinguish source staging from single-database resolution authority.
  • A follow-up design proof rejects a contiguous cleanup frontier: one unfinished roll retains unlimited later receipts. Outstanding records plus an issued ceiling prevent that accumulation. Total storage still needs source and Realm admission caps; this is a design proposal, not an implemented guarantee.
  • The source admission trace found that withholding later CorpseLoot rows creates a waiting queue and can pin corpse decay. Refusing creation can roll back a death or aura tick; FFA fallback changes group distribution. The next recovery Ticket preserves existing admission and retires completed receipts, with storage proportional to unfinished work. A fixed capacity policy is outside that Ticket.
  • The authority review found that a durable disband decision must preserve the exact final-member set and survivor predicate. Retiring that decision also needs a source-mirror fence; a stale mirror can otherwise recreate source group work after Realm disband. This increases remaining effort to several dependent Tickets.
  • The final local proposal splits settlement retirement from Group participation and disband recovery. Its Group-id match deliberately narrows the legacy voter-subset-only resolver so a later re-formed Group cannot claim an earlier Group's roll. This remains a design proposal, with thirteen recovery interleavings and no implementation assigned.

PR #439 PR #461 PR #474

4453.2Design first
GPT-6, Codex coordinator
Review the T2a and T2b rollout contract together. T2a covers source authority, exact outcomes and receipt retirement. T2b covers Group participation, stale mirror fencing and disband decisions. Preserve original incident acceptance and explicitly review the new Group-id match.
28#36
Speed and teleport movement checks exist, but fall, gravity, Z-axis, and wall-crossing checks remain undefined and unimplemented.

The Module reserves violation codes for the remaining checks, but the issue does not set thresholds or a false-positive budget from observed traces. Those policy choices affect legitimate movement and should be settled before more enforcement is added.

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

4343.0Design first
Codex
Choose the next check and its false-positive budget from recorded movement traces, then write one Ticket with deterministic Module Gates and a Headless Client scenario.
29#35
Package authoring, trust, provenance, and the compiled CLI are present; the remaining public-host work is the install script, Server manifest design, and fresh-machine acceptance.

PR #397 closed the package API and lint slice, and the cross-repository CLI workflow is established. The unresolved Server manifest is a product and deployment design choice, while issue #58 and fresh-machine verification are separate executable slices.

Confidence: high. Issue updated 2026-09-01.

Blocked by

  • A decision on the Server manifest contract
  • Open issue #58 for the installer
  • Fresh-machine acceptance across the CLI repository and this pinned shim

PR #397

3553.0Design first
Codex
Decide the minimum deployment manifest and binary-distribution contract. #58 has a source installer but its requested binary distribution is unresolved.
30#82
A real Realm still has no tracked TCP load balancer, backend admission cap, or drain procedure for a Gateway pool.

The repository contains only the Standalone Supervisor deployment artifact. The issue is explicitly tied to host topology and kill-a-backend acceptance, while the old capacity numbers need refresh after shared connections and batching.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • Needs current single-Gateway and dense-crowd capacity evidence.
  • Requires a maintainer choice of load balancer and a named host before any topology change.
  • https://github.com/LyraCoreProject/LyraCore/issues/82
  • deploy/systemd: only the Standalone Supervisor service is tracked; no Gateway load-balancer configuration exists.
  • gateway/src/config.rs: LYRACORE_REALM_ADDRESS can advertise an external address but does not provision or drain backends.

3443.0Design first
Codex
After current capacity and dense-crowd Verification, choose the supported load balancer and tracked deployment shape. Build static backend caps, health checks, drain commands, and a failure drill against a named non-production host first.
31#73
The pinned CLI has a useful text dev status command and no Ratatui dependency; choosing a TUI remains a product decision.

The sibling lyracore-cli repository at the pinned revision has no ratatui or crossterm dependency. dev status already renders process, topology, and per-database health directly from the CLI's existing state and health checks. A TUI could make local observation easier, but the spatial seam map is retired and a remote GM console has different authentication and reach. The remaining work is to select one bounded surface rather than adopt a rendering library first.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • No operations surface has been selected.
  • The spatial seam map named by the issue is retired.

2323.0Design first
Codex
Have the Operator choose whether local dev status needs an interactive TUI; if yes, scope a read-only local process and database view before considering remote Realm or spatial editing.
32#27
Groups remain limited to parties; raid conversion, subgroups, assistants, raid roster packets, and raid quest-credit rules are absent.

Current code explicitly excludes raid groups. The issue spans data modeling, protocol behavior, permissions, quest credit, and multi-client acceptance without a current packet or policy Spec.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • Exact 1.12 raid packet behavior
  • A policy decision for raid quest credit
  • A multi-client roster acceptance session

3452.4Design first
Codex
Define the 1.12 raid roster packet shapes and quest-credit policy, then split conversion, subgroup movement, assistant permissions, roster projection, and credit behavior into separate Tickets.
33#313
Choose 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.

3452.4Design first
Maintainer decision
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#11
Self-resurrection effects such as Soulstone and Reincarnation have no stored eligibility, consume-on-use flow, or self-resurrect packet handling.

Existing resurrection code handles requests from another Character, while the importer leaves Reincarnation scripted. The exact 1.12 duration, death-screen option, reagent, cooldown, and consumption behavior 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

3342.2Design first
Codex
Research the missing protocol and gameplay facts from primary sources, then define a complete implementation Ticket. Keep the final real-client check separate.
35#4
The imported world has no continent-crossing transport or synthetic AreaTrigger link, and the issue offers two different destinations with different content costs.

The Operator must choose between the cheap Ratchet to Stormwind synthetic link and waiting for a real dock path that needs wider map-0 content. Code work before that choice risks implementing the wrong world route.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • Operator choice between the proposed Ratchet to Stormwind link and a later real-dock route
  • Wider map-0 import scope if the real-dock route is selected

2332.0Design first
Codex
Choose the temporary synthetic route or the real-dock route; for the temporary route, write one importer plus teleport Gate Ticket using the selected trigger ids.
36#30
The Realm has no seasonal game-event data model, calendar activation, spawn participation, or Operator debug controls.

The calendar and spawn-link Spec is detailed, but its gameobject plan conflicts with current code. Parking a game_gameobject row stops use or respawn; the Gateway still creates it for viewers. A concrete visibility or retained-definition design must be selected before implementing seasonal disappearance.

Confidence: high. Issue updated 2026-08-21.

Blocked by

  • The Spec prohibits Gateway changes and requires parked object definitions to survive, but the current parked state does not hide a gameobject.
  • https://github.com/LyraCoreProject/LyraCore/issues/30
  • Code fact: the repository has no seasonal game-event tables or debug verbs; game_event_reaper_schedule is an unrelated cleanup schedule, and Gateway condition handling states that seasonal events do not exist.
  • Code fact at 3455aa2: module/src/gameobject.rs keeps depleted rows with state 1; gateway/src/stdb/world_view.rs gameobject_appeared indexes and creates every row without a state visibility Gate. Pool objects already separate definitions from live rows.

2451.6Design first
Codex
Resolve gameobject disappearance: either add a Gateway visibility Gate for parked event rows, or retain definitions separately and remove/reinsert live rows through one lifecycle. Then split and implement the event Tracer.
37#67
SO_REUSEPORT is still absent, but its value depends on the chosen drain and world-address routing design.

Both Gateway listeners still use TcpListener::bind, and there is no reuse-port setup. That proves the feature is unimplemented, but not that it is the best deploy mechanism. If logon sends new clients only to a fresh advertised address and the old Gateway drains, overlapping binds may add little. Platform behavior and failure reporting also need an explicit support policy.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • Issue #64 has no graceful drain.
  • Issue #65 has no Gateway-address selection.
  • The supported-platform policy is unstated.

2231.3Design first
Codex
Decide after #64 and #65 whether overlapping binds are required; if yes, specify supported operating systems and add socket creation plus an overlap acceptance test.
38#79
Gateway connections still use the SpacetimeDB confirmed-read default, and the current shared Coordinator gives no movement-only connection on which to disable it safely.

No confirmed-read override exists. The issue's proposed one-line movement-path change no longer fits the architecture: a Coordinator carries all subscribed state and Durable Reads for a Shard, so the durability trade affects more than movement.

Confidence: medium. Issue updated 2026-08-11.

Blocked by

  • A maintainer must approve the crash-durability trade.
  • There is no current movement-only subscription connection.

PR #247

2231.3Design first
Codex
Measure confirmed-read latency on the current Coordinator, list which state would become visible before durability, and decide whether to keep confirmation or introduce a narrowly scoped connection before changing the setting.
39#10
Distract has no destination checks, temporary Creature attention state, facing update, or combat and expiry rules.

The desired idle, combat, radius, duration, and facing semantics are not specified precisely, and the current Creature behavior has no matching investigation or attention state. Observation should precede a new AI state seam.

Confidence: medium. Issue updated 2026-08-11.

Blocked by

  • Exact 1.12 Distract targeting and expiry behavior
  • A real-client behavior check

2241.0Design first
Codex
Research the missing protocol and gameplay facts from primary sources, then define a complete implementation Ticket. Keep the final real-client check separate.
40#28
Drink item use does not create or decay an inebriation state, update PLAYER_BYTES_3, or apply chat slurring.

Primary-source preflight confirms alcohol state, packing and decay, but the pinned CMaNGOS say/yell path forwards text unchanged. The issue requires an exact server slur transform that this reference does not contain.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • The requested exact pinned-CMaNGOS server slur transform is absent from the verified source.

2241.0Design first
Codex, coordinating agent
Choose a proven state/field/decay slice with the server-slur criterion retained as unresolved, or name a separately sourced or authored chat rule. Then prepare the implementation Ticket.
41#41
Ritual of Summoning still lacks the ritual portal, two-assistant interaction, and targeted teleport flow.

The requested behavior depends on exact 1.12 group and GameObject interaction semantics that are not specified in the issue or represented in current code. A multi-client observation is needed before implementation can be split safely.

Confidence: medium. Issue updated 2026-08-11.

Blocked by

  • Exact 1.12 ritual interaction behavior
  • A three-client acceptance session

2250.8Design first
Codex
Research the missing protocol and gameplay facts from primary sources, then define a complete implementation Ticket. Keep the final real-client check separate.
42#92
client sync and the later Client Artifact command are implemented; only a real client sync load check remains.

CLI PR 32 and core PR 322 shipped sync. Issue 303 and PR 392 later shipped the distributable Client Artifact that the original issue deferred. The latest issue evidence correctly leaves only stock-client loading.

Confidence: high. Issue updated 2026-09-02.

Blocked by

  • Requires a configured, legally obtained stock 1.12.1 client and a human load check.

PR #322 PR #392

34112.0Human acceptance
Codex
Run lyracore client sync against a configured stock client and record that patch-3.MPQ and every enabled Package addon load.
43#318
Runtime 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. The script replay gap closed through #393 and PRs #400 and #406. Production evidence already found the playerbots scripts on every Shard, but no recorded session proves the login effect fires and disappears after disablement.

Confidence: high. Issue updated 2026-09-03.

Blocked by

  • Named test Realm and permission for Package changes.

PR #358 PR #400 PR #406

34112.0Human acceptance
Operator
Run the existing install, login, disable, replay, and login sequence on an approved Realm. Record the effect and the absence of script rows on every target Shard after disablement.
44#3
Realm-wide mail, auctions, guilds, whispers, parties, and loot coordination are present, but the reopened epic still lacks a consolidated two-client, multi-Shard acceptance record and contains stale mirror-removal wording.

The major systems named by the epic now use realm-core authority, including cross-Shard party and whisper paths. The remaining useful work is a real-client system Gate and an acceptance update that distinguishes authoritative state from deliberate Shard read mirrors.

Confidence: medium. Issue updated 2026-08-11.

Blocked by

  • A two-client multi-Shard 1.12.1 acceptance environment
  • Clarification that Shard read mirrors may remain when realm-core is authoritative

PR #203 PR #226 PR #384 PR #461 PR #463

45210.0Human acceptance
Codex
Run two real clients on different Shards through mail, auction, guild, whisper, party, loot-roll, Transfer, and delete scenarios; update the mirror criterion and file only concrete failures.
45#38
The Gateway now installs Shard event callbacks once and performs a single ordered login visibility sweep; the remaining work is the issue's real-client login matrix.

PRs #421 and #433 replaced the subscription and login ordering paths described by the issue. Code-level Gates cover callback placement and sweep ordering, but the acceptance criteria still require fresh and geared Characters, auras, and questgivers on a real client.

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

4428.0Human acceptance
Codex
Run the stated 5875 login matrix on main and close the issue if every initial snapshot and following delta is correct; file narrow failures separately.
46#40
The Binding encounters, reward spells, focus Gate, temporary summons, and kill credit are merged; only real-client feedback remains.

PR #455 imported the missing quest items, creatures and teaching rewards. It creates the source-backed hostile summons at spell focus 83, preserves source-item lifecycle, grants ordinary kill credit, and teaches the pet spells at turn-in. Durable behavior and the schema review are complete.

Confidence: high. Issue updated 2026-08-11.

Blocked by

  • A named development Realm with the merged Module data and a real 1.12.1 client. No existing Realm update is authorized.

PR #455

4428.0Human acceptance
Codex
Use a real 1.12.1 client on a named development Realm to verify ritual-circle placement, summon feedback, combat, objective credit, and the learned Voidwalker and Succubus spells.
47#184
Run vmap rollout and collision acceptance with the current World Import Profiles.

PR #192 shipped the staged import workflow and the issue's source blocker #183 is closed. The issue body still asks for map 0 on the Instance Pool, which the current rollout document forbids. This is checklist drift, not a new product decision. The actual remaining work is a guarded Realm operation and 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

4428.0Human acceptance
Operator and real-client reviewer
Follow docs/vmap-rollout.md: import and verify alliance-eastern on lyracore and alliance-kalimdor on lyracore-world-1, prove the Instance Pool has no bounded-profile generation, then collect ray, floor, indoor, and client evidence before enabling the Gate.
48#195
Generation-scoped navigation coverage is implemented; rollout and real route acceptance remain.

PR #258 shipped preparation, finalization, route-planner consumption, and tests. The old issue destination examples no longer match the current World Import Profiles, but docs/vmap-rollout.md settles the target topology. 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

4428.0Human acceptance
Operator and real-client reviewer
Regenerate the affected navigation data with the #479 importer and rebuild derived coverage on approved World Shards. Record before and after detours, then enable nav_coverage_enabled only after the required acceptance and approval.
49#1
The public package-manager proposal is largely implemented, while the remaining work is human product review, a real-client sync check, and maintenance of the proposal as a tracker.

Most linked slices are closed, and the repository documents package, build, config, replay, client sync, and client pack workflows. The issue comments say not to implement the umbrella directly; open issue #92 now retains only a real-client sync acceptance step.

Confidence: high. Issue updated 2026-08-24.

Blocked by

  • Issue #92 real-client sync acceptance
  • Human review of the public proposal's remaining product commitments

PR #322 PR #392 PR #397

3527.5Human acceptance
Codex
Complete issue #92's real-client sync check, review the installed workflow against the public proposal, and refresh or close the umbrella without starting code from it.
50#42
The scripted and package-based Playerbot work has shipped; the remaining acceptance bar is a human-run real-client session that judges believable behavior and completes Deadmines.

Core PRs #394 and #395 and the linked package, CLI, and wire-harness work are merged. The issue's latest checklist explicitly leaves human judgment of believability, serendipity, and a full real 1.12.1 client dungeon run.

Confidence: high. Issue updated 2026-09-02.

Blocked by

  • A real 1.12.1 client and imported node
  • The Playerbot packages needed by the acceptance scenario
  • Human judgment of behavior quality

PR #394 PR #395

3527.5Human acceptance
Codex
Run issue #373's imported-node playbook, then complete issue #366 through VanCleef and record the observed failures as narrow follow-up issues.
51#154
Aura 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

4326.0Human acceptance
Operator and real-client reviewer
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.
52#31
Random 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-08-22.

Blocked by

  • A named imported development Realm and real 1.12.1 client. No existing Realm update is authorized.

PR #462 PR #466

3426.0Human acceptance
Codex
On a named development Realm, import the current data and verify suffix tooltips, weighted SQL bands, stat changes, and the craft preview with a real 1.12.1 client.
53#112
The DOOR and BUTTON model importer is merged; approved client-data dry run and apply remain.

PR #254 ships DBC model lookup, M2 extraction, local-space conversion, bounds, codec storage, reducers, generated bindings, and tests. Runtime collision belongs to #113 and #114. This issue's remaining checks require 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

3426.0Human acceptance
Operator
Run --go-models as a dry run against approved client Data, record nonzero Deadmines door triangles and any WMO or parse skips, then apply the rows to a named development Shard.
54#196
Bounded 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.

PR #253

3216.0Human acceptance
Real-client reviewer
Displace a patroller across uneven terrain in a stock client and record its stepped return, route rejoin, and resumed patrol.
55#366
Verify Deadmines choreography, including Smite's curated stomp, in the real client.

The dungeons Package has durable tests, but visible doors, Sneed's transition, the cannon breach, Smite's movement, weapon displays, yells, and stomp still need a client pass. The old stomp decision is settled: use the curated spell mapping tracked in package #18.

Confidence: high. Issue updated 2026-09-01.

Blocked by

3426.0Human acceptance
Operator and real-client reviewer
Finish package #18, then combine this checklist with #373 and #114 on an imported map 36 Realm, including a fresh instance entry.
56#367
The 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

3426.0Human acceptance
Operator and real-client reviewer
On an approved imported Realm, verify with a real client that the Defias Cannon refuses use without gunpowder and fires with it.
57#37
Spell rank supersession and trainer plus relog behavior have shipped; only the real 1.12 client acceptance check remains.

PR #256 merged the specified packet behavior, and the issue comment confirms the trainer and relog Gate shipped. No further code slice is identified.

Confidence: high. Issue updated 2026-09-01.

Blocked by

  • A real 1.12.1 client acceptance session

PR #256

2316.0Human acceptance
Codex
Learn a higher spell rank in a real 1.12.1 client, relog, and confirm the spellbook contains the expected visible rank before closing.
58#114
Instance-aware door rays and sibling isolation are merged; imported Deadmines FactoryDoor acceptance remains.

PR #477 ships the source work together with #113. The durable synthetic fixture proves isolated instances, closed/open and despawned state, lifecycle updates, nearest hits and Blink. The issue also requires actual imported FactoryDoor geometry on a development Shard, which synthetic proof does not replace.

Confidence: high. Issue updated 2026-09-08.

Blocked by

  • Final Deadmines acceptance needs approved client data and a named development Shard.

PR #477

4435.3Human acceptance
Operator and real-client reviewer
On a named approved development Shard, import the Deadmines door models, rebuild colliders, and record FactoryDoor closed/open behavior plus isolation from a sibling instance. Use matching model and Package geometry artifacts.
59#304
UI 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

3324.5Human acceptance
Operator and real-client reviewer
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.
60#373
Observe believable imported bots and a fresh Deadmines entry in the real client.

Mechanics tests cannot establish believable motion, plausible population behavior, or a clean first entry into a newly created instance. The issue has a combined one-hour runbook. Package #17 has closed, while the missing Smite content in package #18 remains open.

Confidence: high. Issue updated 2026-09-02.

Blocked by

3324.5Human acceptance
Operator and real-client reviewer
After package #18 ships and the approved imported Realm carries it, run Parts A and C of the combined acceptance session and retain the one-hour log evidence.
61#202
The 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.

2214.0Human acceptance
Real-client reviewer
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.
62#137
The 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

3333.0Human acceptance
Operator and real-client reviewer
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.
63#142
The 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

3333.0Human acceptance
Operator and real-client reviewer
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.
64#107
GameObject 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

2323.0Human acceptance
Operator and real-client reviewer
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.
65#53
A maintained public demo realm still needs deployment, backup, restore, and operations work despite recent pre-auth hardening.

Pre-auth limits and Session Expiry shipped in merged PR #416. A public demo Realm still needs a named host, backup and restore procedures, operational ownership and an approved deployment.

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.

PR #410 PR #416

4352.4Human acceptance
Codex
Split the remaining work into a reviewed public-host runbook and reversible automation, then have an Operator name the host and approve the first deployment and restore drill.
66#425
Aura tick aborts after a due aura is removed

A 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

55212.5Done
Codex
Closed on GitHub. Preserve the recorded implementation evidence.
67#63
Concurrent 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

5436.7Done
GPT-5.6 Sol, PR completion agent
Complete. Concurrent-promotion SQL acceptance passed in merged #439. Post-resolution replay remains in #441.
68#61
Realm-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.

PR #471

5546.2Done
GPT-6 Astra implementer; Codex merged and closed the issue
Closed with repeatable two-Gateway evidence. Use the documented coordinated rollout when deploying.
69#441
A delayed START can recreate a resolved Loot Roll

PR #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

5546.2Done
Codex, coordinating PR review
Complete. PR #461 merged after human schema approval and full checks; durable replay and later-generation tests pass.
70#460
Shifted 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

5546.2Done
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.
71#71
Durable 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

5353.0Done
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.
72#70
A 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

45120.0Done
Codex
Closed with current-source evidence. See the GitHub triage comment.
73#51
The 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

44116.0Done
Codex
Closed with current-source evidence. See the GitHub triage comment.
74#76
The 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

44116.0Done
Codex
Closed with current-source evidence. See the GitHub triage comment.
75#404
Package 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

44116.0Done
Codex
Closed on GitHub. Preserve the recorded implementation evidence.
76#80
Cross-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

43112.0Done
GPT-5.6 Sol, PR completion agent
Complete. PR #438 merged after the durable regression, all other checks and review passed.
77#469
Temporary 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

45210.0Done
GPT-5.6 Sol, high effort, expiry regression cases; Codex final review
Closed after #470 merged. Preserve the mutation and durable regression evidence.
78#399
Replay no longer needs client data for a completed plan

Current 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

3319.0Done
Codex
Closed on GitHub. Preserve the recorded implementation evidence.
79#346
Finish enforcing the repository checks in CI

Merged #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

4536.7Done
Codex
Closed with current-source evidence. See the GitHub triage comment.
80#353
Make workspace lint checks pass and block regressions

PR #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

4536.7Done
Codex
Closed with the merged PR and passing main workflow as evidence.
81#368
Detect generated Gateway binding drift in CI

Subscribed-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

4536.7Done
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.
82#341
Service unit parsing misses continued directives

The 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

4326.0Done
GPT-5.6 Sol, high effort, CLI agent
Complete. CLI #57 is adopted by merged core pin #452.
83#50
Classify Character ownership through unit-shaped and bare guid fields

Merged #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

4435.3Done
GPT-5.6 Sol, ownership check agent
Complete. The Architecture Test covers the wider field census and rejects missing ownership markers or explicit exclusions.
84#75
Raid 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

4435.3Done
GPT-5.6 Sol, medium effort, benchmark agent
Complete. Automatic recovery can be a separate feature if requested.
85#340
Service Reconciliation misses effective command drift

The 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

4435.3Done
GPT-5.6 Sol, high effort, CLI agent
Complete. CLI #57 is adopted by merged core pin #452.
86#398
Generated 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

3434.0Done
GPT-5.6 Sol, CLI completion agent
Complete. CLI #56 and core pin #447 are merged; 701 CLI tests and all core checks passed.
87#45
The 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

2214.0Done
Codex
Closed with current-source evidence. See the GitHub triage comment.
88#72
SpellCastEvent 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

3333.0Done
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.
89#48
The 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.

1111.0Done
Codex
Closed with current-source evidence. See the GitHub triage comment.
90#56
The 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.

2130.7Done
Codex
Closed with current-source evidence. See the GitHub triage comment.
91#49
The 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.

2150.4Done
Codex
Closed with current-source evidence. See the GitHub triage comment.
+State and ownerNext action1#607
Each 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.

2222.0Ready
ClaudeCollect one transaction's rows once per source and give each recipient its slice; prove one read per transaction in a test.2#608
A 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.

2222.0Ready
ClaudeStart a renewed leg from the stop_on_leg point, with the obstruction check, and add a test that renews between ticks.3#60
The 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

PR #410 PR #449 PR #471

5436.7Verify existing work
HumanRun 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#424
Motion 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

PR #437

5546.2Verify existing work
HumanOn 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#77
Gateway 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

PR #244 PR #247 PR #578 PR #587

45120.0Verify existing work
ClaudeUse the #59 run to record seated World Sessions and movement cost on comparable hardware, then close or rewrite this parent from that result.6#88
Movement 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

PR #234

45210.0Verify existing work
ClaudeRun 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#59
The 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

PR #421 PR #437 PR #449 PR #578 PR #593

4536.7Verify existing work
HumanRun 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#86
Per-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

PR #234 PR #244

4536.7Verify existing work
ClaudeRun 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#105
The 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

PR #446 PR #531

4536.7Verify existing work
ClaudeRun 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#55
Residual 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

PR #421 PR #449 PR #471 PR #593

3333.0Verify existing work
HumanRun 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#46
The 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

PR #384 PR #463 PR #573

2323.0Verify existing work
ClaudeRun 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#78
GridBox 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

PR #244

2222.0Verify existing work
ClaudeMeasure 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#103
Source 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

PR #254 PR #477 PR #499

45120.0Dependency
ClaudeCollect the three acceptance results in #112, #113 and #114, then close this parent.14#66
The 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

PR #390 PR #421 PR #439 PR #471

4545.0Dependency
ClaudeFinish #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#64
The 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

PR #471

4444.0Dependency
ClaudeAfter #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#39
Static 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

PR #115 PR #254 PR #477 PR #499 PR #515

3434.0Dependency
HumanClose #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#65
Logon 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

3443.0Dependency
ClaudeAfter #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#198
Retire 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

PR #192 PR #258 PR #275 PR #477 PR #515

3342.2Dependency
ClaudeComplete #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#138
The 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

1212.0Dependency
HumanWait 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#33
The 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

2451.6Dependency
HumanFinish issue #34 first, then rewrite this issue around Realm directory discovery, selection, routing and a two-Realm Gate.21#533
No 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

PR #543 PR #566

1221.0Dependency
ClaudeWait 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#68
Zero-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

2250.8Dependency
ClaudeDo 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#58
The 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

2418.0Design first
HumanDecide 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#69
The 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

PR #421

3426.0Design first
HumanRewrite 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#104
Rust 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

3426.0Design first
HumanDecide 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#272
Resident 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

PR #450

3426.0Design first
HumanRecord 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#34
Realm-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

4554.0Design first
HumanChoose 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#29
Basic 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

PR #540 PR #568

4453.2Design first
HumanRewrite the issue around moderation outcomes, permission levels, audit records and ban or mute propagation, then split one command and enforcement path per Ticket.29#35
The 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

PR #397

3553.0Design first
HumanDecide 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#82
A 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

PR #586

3443.0Design first
HumanAfter 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#73
The 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

PR #593

2323.0Design first
HumanHave 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#84
The 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

PR #439 PR #461 PR #474 PR #531

3452.4Design first
HumanRetitle 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#313
Choose 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

3452.4Design first
HumanApprove 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#11
Self-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

3342.2Design first
HumanResearch the 1.12 Soulstone and Reincarnation rules from primary sources, then write a complete Ticket; keep the real-client check separate.35#36
Speed 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

PR #477

3342.2Design first
HumanPick 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#4
The 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

2332.0Design first
HumanChoose 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#585
The 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

PR #583

2222.0Design first
HumanChoose 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#30
The 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

2451.6Design first
HumanPick 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#67
SO_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

2231.3Design first
HumanDecide 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#79
Gateway 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

PR #247

2231.3Design first
HumanMeasure 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#10
Distract (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

2241.0Design first
HumanResearch the 1.12 Distract rules from primary sources and write one complete Ticket; keep the real-client check as a separate human step.42#28
Drink 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

2241.0Design first
HumanChoose 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#41
Ritual 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

2250.8Design first
HumanDecide 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#92
lyracore 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

PR #322 PR #392

34112.0Human acceptance
HumanHave 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#318
Runtime 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

PR #358 PR #400 PR #406

34112.0Human acceptance
HumanOn 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#113
Instance-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

PR #254 PR #477 PR #599

45210.0Human acceptance
HumanOn 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#184
Run 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

PR #192 PR #275 PR #499 PR #515 PR #599

4428.0Human acceptance
HumanFollow 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#195
Generation-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

PR #258 PR #275 PR #479 PR #601

4428.0Human acceptance
HumanRe-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#584
A 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

PR #557 PR #531

4428.0Human acceptance
HumanA 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#1
The 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

PR #322 PR #392 PR #397

3527.5Human acceptance
HumanFinish 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#3
Realm-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

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

3527.5Human acceptance
HumanRun 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#154
Aura 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

PR #217

4326.0Human acceptance
HumanRun 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#38
The 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

PR #421 PR #433

3426.0Human acceptance
HumanRun 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#40
The 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

PR #455

3426.0Human acceptance
HumanConfirm 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#112
The 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

PR #254 PR #499

3426.0Human acceptance
HumanRun --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#196
Bounded 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

PR #253

3216.0Human acceptance
HumanDisplace a patroller across uneven terrain in a stock client and record its stepped return, route rejoin, and resumed patrol.57#366
Verify 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

3426.0Human acceptance
HumanFinish 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#367
The 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

PR #440

3426.0Human acceptance
HumanOn an approved imported Realm, verify with a real client that the Defias Cannon refuses use without gunpowder and fires with it.59#37
Spell 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

PR #256 PR #602

2316.0Human acceptance
HumanLearn 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#114
Instance-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

PR #477 PR #515 PR #499

4435.3Human acceptance
HumanOn 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#42
The 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

PR #394 PR #395 PR #523 PR #525 PR #526 PR #578 PR #587 PR #590

3535.0Human acceptance
HumanDeploy 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#304
UI 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

PR #392

3324.5Human acceptance
HumanRun 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#373
Observe 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

3324.5Human acceptance
HumanRefresh 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#27
Raid 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

PR #543 PR #550 PR #551 PR #552 PR #557 PR #558 PR #566 PR #574

2424.0Human acceptance
HumanRun 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#202
The 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

2214.0Human acceptance
HumanRight-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#570
Both 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

2214.0Human acceptance
HumanIn a real client, interrupt a bot on a bent path mid-leg and kill a creature mid-walk. Neither should snap back.67#137
The 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

PR #158 PR #171 PR #453

3333.0Human acceptance
HumanRun 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#142
The 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

PR #150 PR #166 PR #454

3333.0Human acceptance
HumanRun 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#107
GameObject 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

PR #110

2323.0Human acceptance
HumanPublish 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#532
Meeting 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

PR #605

2323.0Human acceptance
HumanRe-import the gameobjects family, run debug_repair_after_publish, then run docs/meeting-stone-client-check.md with a real client.71#53
A 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

PR #410 PR #416 PR #586

3351.8Human acceptance
HumanSplit 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#425
Aura tick aborts after a due aura is removed

A 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

55212.5Done
CodexClosed on GitHub. Preserve the recorded implementation evidence.73#63
Concurrent 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

5436.7Done
GPT-5.6 Sol, PR completion agentComplete. Concurrent-promotion SQL acceptance passed in merged #439. Post-resolution replay remains in #441.74#61
Realm-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.

PR #471

5546.2Done
GPT-6 Astra implementer; Codex merged and closed the issueClosed with repeatable two-Gateway evidence. Use the documented coordinated rollout when deploying.75#441
A delayed START can recreate a resolved Loot Roll

PR #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

PR #439 PR #461

5546.2Done
Codex, coordinating PR reviewComplete. PR #461 merged after human schema approval and full checks; durable replay and later-generation tests pass.76#460
Shifted 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.

PR #465

5546.2Done
GPT-5.6 Sol, high effort, Spell target fix; Codex final reviewClosed after #465 merged. Operator follow-up is recorded: reimport Spells, rebuild Base Snapshots and review affected Package Deltas before replay.77#71
Durable 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

5353.0Done
GPT-6 Astra, high effort, item GUID implementerSource and design complete; #71 closed. Before deployment, an authorized Operator must audit legacy GUIDs and permanent ranges, then follow the coordinated rollout plan.78#70
A 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

45120.0Done
CodexClosed with current-source evidence. See the GitHub triage comment.79#51
The 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

44116.0Done
CodexClosed with current-source evidence. See the GitHub triage comment.80#76
The 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

44116.0Done
CodexClosed with current-source evidence. See the GitHub triage comment.81#404
Package 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

44116.0Done
CodexClosed on GitHub. Preserve the recorded implementation evidence.82#80
Cross-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

43112.0Done
GPT-5.6 Sol, PR completion agentComplete. PR #438 merged after the durable regression, all other checks and review passed.83#469
Temporary 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.

PR #470

45210.0Done
GPT-5.6 Sol, high effort, expiry regression cases; Codex final reviewClosed after #470 merged. Preserve the mutation and durable regression evidence.84#399
Replay no longer needs client data for a completed plan

Current 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

3319.0Done
CodexClosed on GitHub. Preserve the recorded implementation evidence.85#346
Finish enforcing the repository checks in CI

Merged #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

4536.7Done
CodexClosed with current-source evidence. See the GitHub triage comment.86#353
Make workspace lint checks pass and block regressions

PR #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

4536.7Done
CodexClosed with the merged PR and passing main workflow as evidence.87#368
Detect generated Gateway binding drift in CI

Subscribed-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

4536.7Done
GPT-5.6 Sol, ownership check agentComplete. Merged #448 generates and compares every Gateway binding file, with documented normalization. Its baseline contained 967 files.88#341
Service unit parsing misses continued directives

The 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

4326.0Done
GPT-5.6 Sol, high effort, CLI agentComplete. CLI #57 is adopted by merged core pin #452.89#31
Random 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

PR #462 PR #466 PR #583

3426.0Done
CodexClosed on GitHub as completed. Suffix stat lines shipped in PR #583.90#50
Classify Character ownership through unit-shaped and bare guid fields

Merged #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

4435.3Done
GPT-5.6 Sol, ownership check agentComplete. The Architecture Test covers the wider field census and rejects missing ownership markers or explicit exclusions.91#75
Raid 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

4435.3Done
GPT-5.6 Sol, medium effort, benchmark agentComplete. Automatic recovery can be a separate feature if requested.92#340
Service Reconciliation misses effective command drift

The 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

4435.3Done
GPT-5.6 Sol, high effort, CLI agentComplete. CLI #57 is adopted by merged core pin #452.93#398
Generated 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

3434.0Done
GPT-5.6 Sol, CLI completion agentComplete. CLI #56 and core pin #447 are merged; 701 CLI tests and all core checks passed.94#45
The 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

2214.0Done
CodexClosed with current-source evidence. See the GitHub triage comment.95#72
SpellCastEvent 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

3333.0Done
GPT-5.6 Sol, high effort, Spell event implementerSource complete; #72 closed. Publish the Module before starting the new Gateway during an authorized rollout.96#559
The 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

2323.0Done
ClaudeClosed on GitHub with evidence.97#534
Bots 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

2231.3Done
ClaudeClosed on GitHub with evidence.98#48
The 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.

1111.0Done
CodexClosed with current-source evidence. See the GitHub triage comment.99#56
The 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.

2130.7Done
CodexClosed with current-source evidence. See the GitHub triage comment.100#49
The 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

2150.4Done
CodexClosed with current-source evidence. See the GitHub triage comment.

PRs to completion

-

Each implementer owns their PR until it merges or has a named blocker. Codex checks CI, CodeRabbit reviews, +

Each implementer owns their PR until it merges or has a named blocker. Claude checks CI, CodeRabbit reviews, human comments and unresolved threads after each push. Accepted findings get a fix and fresh checks; disputed findings get a reasoned response. Rebase before opening a PR and recheck the reviewed commit before merge.

-

Codex takes the final merge after current-head checks pass and review findings are resolved. Explicit human review requirements and real-client acceptance remain separate.

-
PRChangeOwnerStateNext action
#426ci(module): run the durable test suite and drop its fixed sleepsExisting PR review owner; Codex monitorsMergedComplete. Reassess linked issues for any remaining acceptance.
#419ci: make fmt and clippy blocking, and clear the workspace to matchExisting PR review owner; Codex monitorsMergedComplete. Reassess linked issues for any remaining acceptance.
#416fix(logon): cap proof attempts per peer and expire session keysExisting PR review owner; Codex monitorsMergedComplete. Reassess linked issues for any remaining acceptance.
#415refactor(auction): let the Module own the auctioneer interaction GateExisting PR review owner; Codex monitorsMergedComplete. Reassess linked issues for any remaining acceptance.
#434Protect fixture creatures from cast ClaimsGPT-5.6 Sol, Package Delta agentMergedComplete. Reassess linked issues for any remaining acceptance.
#435Keep periodic deaths from rolling back the aura tickGPT-6, CodexMergedComplete. Reassess linked issues for any remaining acceptance.
#436Maintain the issue order and delivery reportGPT-6, CodexMergedComplete. Reassess linked issues for any remaining acceptance.
#437Measure motion delivery at each Shard callbackGPT-6 Astra, motion diagnosis agentMergedComplete. Reassess linked issues for any remaining acceptance.
#438fix(world): remove motion after cross-map teleportGPT-5.6 Sol, PR completion agentMergedComplete. Issue #80 is closed.
#440fix(gameobject): require opener for locked goobersGPT-5.6 Sol, PR completion agentMergedCode complete. Imported-cannon real-client acceptance remains in #367.
#439fix(loot): keep concurrent promotions on one live rollGPT-5.6 Sol, PR completion agentMergedComplete. Issue #63 is closed; post-resolution replay remains in #441.
#56fix(packages): count Package Deltas in trust reviewGPT-5.6 Sol, CLI completion agentMergedComplete. Core pin #447 is merged; issue #398 is closed.
#444docs(triage): refresh issue order and resume PR ownershipGPT-6 Astra, CodexMerged after all checks and review passedComplete. Report ownership continues in this thread.
#6fix(suite): run scenarios from the adapter directoryGPT-6 Astra, CodexMerged; alpha.4 releasedCode, release and core pin #446 complete. Full-suite acceptance remains in #105.
#445test(transfer): classify unit-keyed ownership tablesGPT-5.6 Sol, ownership check agentMergedComplete. Issue #50 is closed.
#446fix(test): pin the wire suite dispatch repairGPT-6 Astra, CodexMergedCode and pin complete. Full-suite acceptance remains in #105.
#447chore(cli): pin generated artifact trust reviewGPT-5.6 Sol, CLI completion agentMergedComplete. Issue #398 is closed.
#448ci(gateway): detect generated binding driftGPT-5.6 Sol, high effort, ownership check agentMergedComplete. Issue #368 is closed. CodeRabbit was quota-limited; parent reviewed the exact diff before merge.
#7fix(bench): report dead clients at window closeGPT-5.6 Sol, medium effort, benchmark agentMerged; alpha.5 releasedComplete. Core #449 adopts corrected alpha.6.
#449fix(bench): pin dead-client reporting releaseCodexMerged; #75 closedComplete. Corrected alpha.6 is pinned in core.
#8fix(client): apply sparse Character create snapshotsGPT-5.6 Sol, medium effort, benchmark agentMerged; alpha.6 releasedComplete. Core #449 adopts corrected alpha.6.
#450fix(gateway): replay resident creature movement after CREATECodex, after implementer handoffMerged; #272 has remaining decisionsResident replay is complete. Keep #272 open for the remaining policy choices and real-client acceptance.
#57fix(service): verify the effective start commandGPT-5.6 Sol, high effort, CLI agentMerged; #340 and #341 closedComplete. Core #452 adopts CLI #57.
#9test(bank): add the full bank flow adapterGPT-5.6 Sol, medium effort, adapter agentMerged; bank adapter pinnedCode delivery is complete. Issue #137 retains Operator and stock-client acceptance.
#452chore(cli): pin effective service verificationGPT-5.6 Sol, high effort, CLI agentMerged; #340 and #341 closedComplete. Core #452 adopts CLI #57.
#453test(bank): pin the bank acceptance adapterCodexMerged; bank adapter pinnedCode delivery is complete. Issue #137 retains Operator and stock-client acceptance.
#10test(dive): add the breath and drowning flowGPT-5.6 Sol, medium effort, adapter agentMerged; dive adapter pinnedCode delivery is complete. Issue #142 retains Operator and stock-client acceptance.
#451docs(triage): record issue outcomes and current assignmentsCodexMerged after checks and all five review threads resolvedComplete. Report ownership continues in this thread.
#454test(dive): pin the drowning acceptance adapterGPT-5.6 Sol, medium effort, adapter agentMerged; dive adapter pinnedCode delivery is complete. Issue #142 retains Operator and stock-client acceptance.
#455fix(quests): complete the Warlock Binding encountersCodex, coordinating PR reviewMerged after human schema approvalComplete implementation. Keep #40 open for real-client acceptance.
#457test(module): isolate concurrent fixture Wasm artifactsPrior orchestrator, private-Wasm correctionMerged; checks and completed reviews passedComplete. Preserve review and verification evidence.
#456docs(triage): recover assignments and wait for reviewCodex, coordinating agentMerged; checks and completed reviews passedComplete. Preserve review and verification evidence.
#458docs(triage): resume issue ownership and PR monitoringCodex, coordinating agentMerged; report correction merged in #459Complete. Correction #459 merged and the original review thread is resolved.
#459docs(triage): correct review status and record implementation progressCodex, coordinating agentMerged after all checks and review passedComplete. Original #458 review thread resolved; report maintenance continues.
#461fix(loot): refuse replayed promotions after resolutionCodex, coordinating PR reviewMerged after human schema approval, all checks and current-head reviewComplete. The guarded upgrade procedure ships with the merged change.
#462feat(items): preserve random properties from creation to the clientCodex, coordinating PR reviewMerged after human schema approvalComplete. Integrate the remaining Stat Kind behavior and Spell repair.
#463fix(gateway): clean up parties after Character deletionGPT-5.6 Sol, high effort, Character cleanup implementerMerged after all checks and current-head review passedComplete the separate Headless Client suite acceptance for #46.
#464docs(triage): track published PRs and review follow-upCodex, coordinating PR reviewMerged after all checks and review passedComplete. Report maintenance continues.
#465fix(importer): restore build 5875 spell effectsGPT-5.6 Sol, high effort, Spell target fix; Codex final reviewMerged after all checks and current-head review passedComplete. Preserve the recorded checks and review evidence.
#58fix(publish): require drained legacy loot before upgradeGPT-5.6 Sol, high effort, CLI implementerMerged; Core pin integration in #461Integrate the reachable CLI commit into #461 and verify the pinned shim.
#466feat(items): apply remaining random property statsCodex, final integration and reviewMerged after all seven checks and current-head review passedComplete. Issue #31 retains the real-client acceptance steps.
#467docs(triage): record schema merges and integration findingsCodexMerged after all checks and current-head review passedComplete. Preserve the recorded checks and review evidence.
#468test(quests): copy the appended item property fieldCodexMergedComplete. Dependent branches are integrating this fixture correction.
#11fix(lyracore): encode Operator cleanup actors for durable ownershipCodex, Headless Client adapter compatibilityMerged and released as v0.1.0-alpha.9Include the verified alpha.9 pin in Account ownership #61.
#470fix(creatures): retain temporary summon lifetime checksGPT-5.6 Sol, high effort, expiry regression cases; Codex final reviewMerged after all seven checks and current-head review passedComplete. Dependent branches are integrating merge 3669dfb.
#471fix(account): fence World Sessions across GatewaysGPT-6 Astra, high effort, Account ownership implementerMerged as c6003e5 after user authorization; issue #61 closedComplete. Follow the coordinated Module and Gateway rollout when deployment is authorized.
#12fix(lyracore): send numeric GUIDs in structured actorsCodex; independent Sol reviewMerged and released as v0.1.0-alpha.10Complete. Account ownership and the party suite are integrating the verified release.
#13test(lyracore): isolate party scenarios by fixtureGPT-5.6 Sol, high effort; independent Sol review and Codex final mergeMerged and released as alpha11Integrate the verified alpha11 pin in #471. Complete Package-backed acceptance when its compatible artifact is available.
#472docs(triage): record merged work and remaining acceptanceCodexMerged as d672278; all checks and actual review passedContinue maintaining the live report at the same URL.
#473fix(items): allocate GUIDs from durable Shard rangesGPT-6 Astra, high effort, item GUID implementerMerged after final CI and reviewSource and design complete; #71 closed. Before deployment, an authorized Operator must audit legacy GUIDs and permanent ranges, then follow the coordinated rollout plan.
#474fix(loot): retry failed settlements while results remainGPT-6, Codex coordinatorMerged after CI and independent reviewBounded retry is complete. Issue #84 keeps immutable durable settlement and original three-Shard/bot-party acceptance open.
#475docs(triage): refresh issue order and assign the next batchGPT-6, Codex coordinatorMergedComplete. Preserve later report updates in the next source snapshot.
#476refactor(spells): give cast events an explicit kindGPT-5.6 Sol, high effort, Spell event implementerMerged after human schema approval, CI and independent reviewSource complete; #72 closed. Publish the Module before starting the new Gateway during an authorized rollout.
#477fix(vmap): make closed instance doors block raysGPT-6 Astra, high effort, door collision implementerMerged after schema approval, CI and resolved reviewSource complete. Keep #113 open for canonical collision and sight-ray benchmarks and #114 open for imported FactoryDoor and sibling-instance acceptance.
#478docs(triage): record merged fixes and remaining reviewsGPT-6, Codex coordinatorMergedComplete. Preserve later live report changes in the next source snapshot.
#479fix(nav): route bots into Northshire AbbeyExisting GPT-6 Codex implementer owns merge; triage agents reviewMerged after CI and all review findings were resolvedSource complete. During an authorized rollout, regenerate imported navigation data and derived coverage, then complete client acceptance.
+

Claude takes the final merge after current-head checks pass and review findings are resolved. Explicit human review requirements and real-client acceptance remain separate.

+
PRChangeOwnerStateNext action

Ownership and updates

-

This report is the working dispatch list. Codex updates the same published URL after triage, assignment, +

This report is the working dispatch list. Claude updates the same published URL after triage, assignment, PR creation, review changes and merge. Scores change when new evidence changes the expected benefit or effort. New issues enter as audit pending. A merged PR does not satisfy an outstanding real-client acceptance check.

-

Codex owns this report and the dispatch order. This source batch is complete; every remaining issue retains an owner and next action. Monitoring runs during active Codex work sessions. No unattended scheduler is installed. The report and its repository source preserve the work between sessions; refresh GitHub state before the next batch.

+

Claude owns this report and the dispatch order from 2026-10-02. Every open issue has an owner and a next action. Monitoring runs during active work sessions. No unattended scheduler is installed. Refresh GitHub state before the next batch.

Production changes require a named host and explicit authorization. Work that crosses section 1 of danger-zones.md needs human review before shipping. Product UI changes follow the repository's mock-selection requirement.

-

Recent updates

+

Recent updates