diff --git a/docs/triage/issues.json b/docs/triage/issues.json
index 00c606d49..525ac1c36 100644
--- a/docs/triage/issues.json
+++ b/docs/triage/issues.json
@@ -1,13 +1,13 @@
{
- "updated_at": "2026-09-08 07:24 UTC",
- "base_revision": "408f417cb4b909065bc6c253eba9477c2e402d15",
- "status_note": "All 66 open issues have current assessments. Item GUID PR #473 and loot retry PR #474 merged after CI and review. Issue #71 is closed as source and design complete. Spell event PR #476 and door collision PR #477 passed every current-head CI job and the combined proof. Human schema approval is pending.",
- "monitoring_note": "Codex owns this report and the dispatch order. Monitoring is active during this work session. Each implementer follows checks and actual CodeRabbit or human review through fixes; Codex handles final review and merge. No unattended scheduler is installed. The report and its repository source preserve the next actions between sessions.",
+ "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.",
"focus": [
- "Complete human schema review for Spell event PR #476 and door collision PR #477 after final integration checks. Their implementers own CI and review responses.",
- "Keep the merged item GUID rollout subject to its authorized legacy-state and range audit. Source issue #71 is complete.",
- "Revise the next #84 design for receipt cleanup and authority over staged rolls. Codex owns the revision; the GPT-5.6 Sol source study and GPT-6 Astra adversarial review are saved with the local Ticket.",
- "Keep original loot, imported-door and client acceptance open where the requested evidence is still missing."
+ "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."
],
"issues": [
{
@@ -532,7 +532,7 @@
"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": "Refresh the affected nav import, prepare and finalize matching coverage on the approved World Shards, record before and after detours, and enable nav_coverage_enabled only after approval.",
+ "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.",
"blockers": [
"Named-host authorization and imported route and collision acceptance."
],
@@ -540,11 +540,14 @@
"https://github.com/LyraCoreProject/LyraCore/issues/195",
"https://github.com/LyraCoreProject/LyraCore/pull/258",
"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."
+ "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."
],
"related_prs": [
258,
- 275
+ 275,
+ 479
],
"url": "https://github.com/LyraCoreProject/LyraCore/issues/195",
"updatedAt": "2026-09-01T08:55:50Z",
@@ -690,63 +693,66 @@
},
{
"number": 114,
- "summary": "Complete dynamic door collision with instance-aware ray APIs and sibling-instance isolation.",
+ "summary": "Instance-aware door rays and sibling isolation are merged; imported Deadmines FactoryDoor acceptance remains.",
"importance": 4,
"gain": 4,
- "effort": 4,
+ "effort": 3,
"confidence": "high",
- "disposition": "review",
- "rationale": "This issue depends only on source work in #113 and should ship in the same source DAG. An instance-0-only registry would create a temporary production interface that the next change immediately replaces. Current callers already hold entity instance identity. Imported Deadmines calibration remains a separate Operator gate after the source and synthetic tests merge.",
- "next_action": "Obtain the requested human schema approval before merge. The reviewed patch is unchanged after rebasing onto main 408f417. The implementer will use the next included CodeRabbit review and address any findings. Imported geometry, matching Package artifacts and canonical performance remain acceptance work.",
+ "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.",
"blockers": [
- "Human review is required before the additive schema ships.",
"Final Deadmines acceptance needs approved client data and a named development Shard."
],
"evidence": [
"https://github.com/LyraCoreProject/LyraCore/issues/114",
- "module/src/vmap.rs ray functions currently lack instance_id.",
+ "Merged PR #477 carries instance_id through movement, sight, collision, floor and Spell callers.",
"module/src/nav.rs and the listed combat, creature, and spell callers already have the acting entity and its instance_id.",
"https://github.com/LyraCoreProject/LyraCore/pull/477",
- "The synthetic durable fixture proves closed/open/despawned state, sibling isolation, Package apply/replay/clear, both debug command signatures, transforms, nearest hits and Blink. It does not prove imported Deadmines geometry or canonical-box performance."
+ "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"
],
"related_prs": [
477
],
"url": "https://github.com/LyraCoreProject/LyraCore/issues/114",
- "updatedAt": "2026-08-13T05:25:54Z",
+ "updatedAt": "2026-09-08T08:12:45Z",
"github_state": "open",
- "owner": "GPT-6 Astra, high effort, door collision implementer"
+ "owner": "Operator and real-client reviewer",
+ "score": 5.3
},
{
"number": 113,
- "summary": "Imported door meshes have no instance-scoped collider registry or state-gated ray consumer.",
+ "summary": "Instance-scoped door collision is merged; canonical collision and sight-ray performance remain to be measured.",
"importance": 4,
"gain": 5,
- "effort": 4,
+ "effort": 2,
"confidence": "high",
- "disposition": "review",
- "rationale": "PR #254 supplied game_go_model. The remaining collider table, lifecycle, transform, state Gate, broad-phase reject, and ray merge are specified and testable with synthetic data. Dynamic collider eligibility can depend on the global Gate and registry data while static geometry keeps its active-generation rule, so map 36 needs no invented static generation or new product decision. Implementing #114 in the same DAG avoids an instance-0-only production path.",
- "next_action": "Obtain the requested human schema approval before merge. The reviewed patch is unchanged after rebasing onto main 408f417. The implementer will use the next included CodeRabbit review and address any findings. Imported geometry, matching Package artifacts and canonical performance remain acceptance work.",
+ "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.",
"blockers": [
- "Human review is required before the additive schema ships; imported-door calibration stays open."
+ "Canonical-box collision and sight-ray performance must be measured before closing #113."
],
"evidence": [
"https://github.com/LyraCoreProject/LyraCore/issues/113",
"https://github.com/LyraCoreProject/LyraCore/pull/254",
- "module/src/go_model.rs stores local-space DOOR and BUTTON meshes and names game_go_collider as the missing consumer.",
+ "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/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."
+ "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"
],
"related_prs": [
254,
477
],
"url": "https://github.com/LyraCoreProject/LyraCore/issues/113",
- "updatedAt": "2026-08-13T05:25:52Z",
+ "updatedAt": "2026-09-08T08:12:43Z",
"github_state": "open",
- "owner": "GPT-6 Astra, high effort, door collision implementer"
+ "owner": "Codex tracks; Operator benchmark needed",
+ "score": 10.0
},
{
"number": 112,
@@ -854,25 +860,28 @@
},
{
"number": 103,
- "summary": "The dynamic door-collision parent has imported meshes; runtime and instance-aware behavior remain in #113 and #114.",
+ "summary": "Dynamic door collision source is complete; child performance and imported-data acceptance remain.",
"importance": 4,
"gain": 5,
"effort": 1,
"confidence": "high",
"disposition": "dependency",
- "rationale": "The parent delivered its Spec and split, and PR #254 completed the import slice. It is now a tracker. No further design decision blocks source work: #113 and #114 can form one instance-scoped implementation DAG, followed by imported Deadmines acceptance.",
- "next_action": "Keep this issue as the parent. Merge the combined #113 and #114 source work, complete the imported Deadmines collision probe, then close this parent from that evidence.",
+ "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.",
"blockers": [
- "Source completion of #113 and #114.",
- "Operator-assisted imported Deadmines acceptance."
+ "Approved client-data import acceptance in #112.",
+ "Canonical collision and sight-ray performance in #113.",
+ "Imported FactoryDoor and sibling-instance acceptance in #114."
],
"evidence": [
"https://github.com/LyraCoreProject/LyraCore/issues/103",
"https://github.com/LyraCoreProject/LyraCore/pull/254",
- "module/src/go_model.rs contains imported meshes; module/src/vmap.rs has no dynamic collider pass."
+ "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"
],
"related_prs": [
- 254
+ 254,
+ 477
],
"url": "https://github.com/LyraCoreProject/LyraCore/issues/103",
"updatedAt": "2026-08-11T12:43:26Z",
@@ -973,13 +982,13 @@
"summary": "Loot Roll recovery after result expiry needs durable settlement identity; the original three-Shard and bot-party incident remains unverified.",
"importance": 4,
"gain": 4,
- "effort": 4,
+ "effort": 5,
"confidence": "medium",
"disposition": "decision",
- "rationale": "PR #474 merged the proved completion-marker fix. The remaining work must carry immutable source loot identity beyond the one-second event lifetime and survive Gateway restart. That is a larger design and schema change; retaining only corpse GUID and slot could award a later respawn drop.",
- "next_action": "Revise the durable settlement design before implementation. Adversarial review found receipt cleanup can lose the original outcome, and source staging rolls need explicit resolution authority after promotion. Keep original incident acceptance separate.",
+ "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.",
"blockers": [
- "The receipt cleanup and roll authority protocols need a reviewed design.",
+ "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."
],
"evidence": [
@@ -990,7 +999,11 @@
"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."
+ "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."
],
"related_prs": [
439,
@@ -1001,7 +1014,7 @@
"updatedAt": "2026-09-08T06:42:37Z",
"github_state": "open",
"owner": "GPT-6, Codex coordinator",
- "score": 4
+ "score": 3.2
},
{
"number": 82,
@@ -1222,32 +1235,31 @@
},
{
"number": 72,
- "summary": "SpellCastEvent still multiplexes several wire signals through independent booleans and zero-value conventions.",
+ "summary": "SpellCastEvent has an explicit kind and preserves legacy decoding; the source change is complete.",
"importance": 3,
"gain": 3,
"effort": 3,
"confidence": "high",
- "disposition": "review",
- "rationale": "Legacy decoding can treat the appended zero kind as the current field-derived form, while new constructors stamp explicit kinds. That is a bounded compatibility design. Human schema review belongs after the concrete change.",
- "next_action": "Obtain the requested human schema approval before merge. The reviewed patch is unchanged after rebasing onto main 408f417.",
- "blockers": [
- "Human schema review before shipping."
- ],
+ "disposition": "done",
+ "rationale": "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.",
+ "next_action": "Source complete; #72 closed. Publish the Module before starting the new Gateway during an authorized rollout.",
+ "blockers": [],
"evidence": [
"https://github.com/LyraCoreProject/LyraCore/issues/72",
- "module/src/spell/tables.rs: SpellCastEvent still encodes five signals through independent booleans and zero-value fields.",
- "gateway/src/stdb/subscriptions.rs: cast_event_outbound decodes those signals through ordered branches, which can remain the kind-zero compatibility path.",
+ "PR #476 appended the explicit SpellCastEvent kind and updated all typed constructors.",
+ "gateway/src/stdb/subscriptions.rs now dispatches known kinds explicitly and retains the old branch order for kind zero.",
"Typed SpellCastEvent constructors centralize the baseline, so stamping an explicit appended kind stays local.",
"docs/danger-zones.md permits an end-appended defaulted numeric column and requires human schema review before shipping.",
"https://github.com/LyraCoreProject/LyraCore/pull/476",
- "Local proof: Module 1501 passed; Gateway 1446 passed, 7 ignored; importer 360 passed, 8 ignored; shared 156 passed. All 990 bindings match; strict lint, build, formatting and offline preflight pass."
+ "Local proof: Module 1501 passed; Gateway 1446 passed, 7 ignored; importer 360 passed, 8 ignored; shared 156 passed. All 990 bindings match; strict lint, build, formatting and offline preflight pass.",
+ "https://github.com/LyraCoreProject/LyraCore/issues/72#issuecomment-5581049237"
],
"related_prs": [
476
],
"url": "https://github.com/LyraCoreProject/LyraCore/issues/72",
- "updatedAt": "2026-08-11T08:18:27Z",
- "github_state": "open",
+ "updatedAt": "2026-09-08T07:28:15Z",
+ "github_state": "closed",
"owner": "GPT-5.6 Sol, high effort, Spell event implementer",
"score": 3
},
@@ -1267,7 +1279,7 @@
"https://github.com/LyraCoreProject/LyraCore/blob/a6e7119484e35c8779f0f013af7dadafbc293ce7/module/src/items/tables.rs#L266-L286. item_guid_for masks the owner to 24 bits and next_item_guid increments the current maximum without a boundary check.",
"https://github.com/LyraCoreProject/LyraCore/blob/a6e7119484e35c8779f0f013af7dadafbc293ce7/module/src/items/ops.rs#L213-L228. Routine item storage repeatedly calls next_item_guid, so allocation is not limited to the initial slot set.",
"https://github.com/LyraCoreProject/LyraCore/blob/a6e7119484e35c8779f0f013af7dadafbc293ce7/module/src/items/tables.rs#L248-L264. Cross-database transfer preserves item GUIDs because the code assumes they are already namespaced per Character.",
- "items/tables.rs masks the owner to 24 bits and next_item_guid increments without enforcing the 256-value block.",
+ "Before PR #473, items/tables.rs masked the owner to 24 bits and next_item_guid incremented without enforcing the 256-value block.",
"docs/danger-zones.md requires human review before migration work ships; it does not reserve implementation design for a person.",
"The issue already supplies saturation, transfer identity, migration, and collision cases for a bounded design Ticket.",
"The first PR #473 revision reused free IDs. Implementer review found same-transaction identity reuse in crafting and quest rewards. The merged c0ddfd0 revision uses durable GUID Ranges instead.",
@@ -1958,16 +1970,16 @@
},
{
"number": 39,
- "summary": "Static world collision is shipped, while dynamic GameObject collision, fresh-provision parity, and the final real-client movement checks remain open.",
+ "summary": "Static and dynamic collision source is merged; child acceptance, fresh-provision parity and real-client movement checks remain.",
"importance": 3,
"gain": 5,
"effort": 5,
"confidence": "high",
"disposition": "dependency",
- "rationale": "The epic's main collision slices landed in PR #115. Completion now depends on open issue #103 and its remaining children, issue #104's provisioning Gate, and a human Blink and line-of-sight check, so the umbrella is not a single implementation candidate.",
- "next_action": "Finish #103 through its remaining dynamic collision Tickets, complete #104 on a fresh provision, then run the real-client Blink and line-of-sight matrix and close the epic.",
+ "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.",
"blockers": [
- "Issue #103 dynamic GameObject collision, including open children #113 and #114",
+ "Issue #103 child performance and imported dynamic collision acceptance.",
"Issue #104 fresh-provision parity",
"A real-client Blink and line-of-sight session"
],
@@ -1976,11 +1988,13 @@
"https://github.com/LyraCoreProject/LyraCore/issues/103",
"https://github.com/LyraCoreProject/LyraCore/issues/104",
"https://github.com/LyraCoreProject/LyraCore/pull/115",
- "https://github.com/LyraCoreProject/LyraCore/pull/254"
+ "https://github.com/LyraCoreProject/LyraCore/pull/254",
+ "https://github.com/LyraCoreProject/LyraCore/pull/477"
],
"related_prs": [
115,
- 254
+ 254,
+ 477
],
"url": "https://github.com/LyraCoreProject/LyraCore/issues/39",
"updatedAt": "2026-08-11T12:46:47Z",
@@ -4410,8 +4424,8 @@
"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:24 UTC",
- "github_state": "OPEN",
+ "checked_at": "2026-09-08 07:30 UTC",
+ "github_state": "MERGED",
"checks": [
{
"name": "durable",
@@ -4443,18 +4457,19 @@
"source": "Hourly quota prevented actual review."
}
],
- "status": "All CI and independent review passed; human schema approval pending",
- "next_action": "Obtain the requested human schema approval before merge. The reviewed patch is unchanged after rebasing onto main 408f417.",
- "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."
+ "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": "7d5c8cec6c992a6c0e9338d24d539d3fb84e2957",
+ "head": "37d1a1e2eec8f0a20fcb5126f60719b6da1033a4",
"title": "fix(vmap): make closed instance doors block rays",
"url": "https://github.com/LyraCoreProject/LyraCore/pull/477",
- "checked_at": "2026-09-08 07:24 UTC",
- "github_state": "OPEN",
+ "checked_at": "2026-09-08 08:14 UTC",
+ "github_state": "MERGED",
"checks": [
{
"name": "durable",
@@ -4482,13 +4497,70 @@
},
{
"name": "CodeRabbit",
- "result": "UNAVAILABLE",
- "source": "Hourly quota prevented actual review."
+ "result": "REVIEW_AND_FIX_CONFIRMED",
+ "source": "Full review at 7d5c8ce plus explicit confirmation of the rollback fix at 37d1a1e: discussion_r3955595964."
}
],
- "status": "All CI and independent review passed; human schema approval pending",
- "next_action": "Obtain the requested human schema approval before merge. The reviewed patch is unchanged after rebasing onto main 408f417. The implementer will use the next included CodeRabbit review and address any findings. Imported geometry, matching Package artifacts and canonical performance remain acceptance work.",
- "review_note": "Root and the item GUID implementer reviewed the runtime. Root reviewed the later pool hooks and their public-Package durable regression. All local proofs passed, including pool rearm, movement, reroll and removal. Final 7d5c8ce rebases main 408f417 with unchanged reviewed patches. CodeRabbit supplied only a quota notice. 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."
+ "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"
}
],
"history": [
@@ -4843,10 +4915,54 @@
{
"at": "2026-09-08 07:24 UTC",
"text": "Both rebased schema PRs passed every CI job. Human approval remains pending. Independent report review verified all 66 open issue entries and found two stale sentences about the old door head and GUID revision; both are corrected. The door implementer will use the next included CodeRabbit review."
+ },
+ {
+ "at": "2026-09-08 07:30 UTC",
+ "text": "The user approved both concrete schema changes. Merged Spell event PR #476 as 02a0662 and closed #72 with source evidence. Door PR #477 remains in full CodeRabbit review with all CI green. Its trial merge into the new main produces exactly the combined file tree already tested."
+ },
+ {
+ "at": "2026-09-08 07:45 UTC",
+ "text": "CodeRabbit completed its full door review and found that the public assertion fixture could delete existing GameObject and other rows. The implementer is adding rollback-on-success and existing-data preservation proof. The source PR stays held until this finding and fresh CI are complete."
+ },
+ {
+ "at": "2026-09-08 07:54 UTC",
+ "text": "Door PR #477 at 37d1a1e fixes the actual CodeRabbit finding by rolling fixture row writes back after its success marker. The new preservation regression and independent review pass; fresh CI is running. Report snapshot #478 merged."
+ },
+ {
+ "at": "2026-09-08 07:56 UTC",
+ "text": "Detected the concurrent Abbey routing PR #479. Added it to the delivery list and assigned independent navigation and door-compatibility review. #477 remains first in merge order."
+ },
+ {
+ "at": "2026-09-08 08:05 UTC",
+ "text": "Independent Abbey review reproduced a low-ceiling navigation regression: the test fails at 3e740bb and passes on main. Posted the finding and began an isolated candidate correction. The #84 design scope now preserves existing loot admission; it does not claim a fixed storage bound during unlimited unfinished work."
+ },
+ {
+ "at": "2026-09-08 08:14 UTC",
+ "text": "Merged door PR #477 as ef33da5 after all six final CI jobs passed, the user approved the schema, and CodeRabbit confirmed the fixture-data correction. Posted source-completion evidence to #113 and #114 while preserving their explicit benchmark and imported-door acceptance. Updated parent #103 and collision epic #39 accordingly."
+ },
+ {
+ "at": "2026-09-08 08:21 UTC",
+ "text": "The Abbey implementer pushed 72ef1d4 with the ceiling correction, captured-route replay and merged-door integration. Stopped the unpublished parallel candidate. Independent door integration review found no issues; floor/headroom review and final CI remain."
+ },
+ {
+ "at": "2026-09-08 08:26 UTC",
+ "text": "Independent follow-up review reproduced a stair-boundary regression in Abbey head 72ef1d4. A 0.4-yard adjacent tread is classified as a ceiling when its boundary lies on a navigation sample. The test passes on 3e740bb. The active implementer owns correction and final merge; CodeRabbit review is also running."
+ },
+ {
+ "at": "2026-09-08 08:38 UTC",
+ "text": "Independent review cleared the Abbey shared-edge correction at 6bb87b9. CodeRabbit found a separate extra height offset in the coarse movement ray, and Codex verified it against step_hit and los_hit. The implementer owns the fix and a movement regression before final merge."
+ },
+ {
+ "at": "2026-09-08 08:43 UTC",
+ "text": "All Abbey findings are resolved at 438ad8cd. CodeRabbit explicitly verified the foot-height correction and durable wall regression; independent review cleared the final delta. The implementer owns final CI and merge. Raised #84 remaining effort after the authority study exposed a separate group-mirror and disband-retirement dependency."
+ },
+ {
+ "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."
}
],
"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. Issue #71 has since closed after implementation and review, leaving 66 open issues."
+ "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."
}
diff --git a/docs/triage/report.html b/docs/triage/report.html
index 5bf4d6e06..7f390f518 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. 66 open on GitHub.
-Source revision 408f417cb4b909065bc6c253eba9477c2e402d15.
-
All 66 open issues have current assessments. Item GUID PR #473 and loot retry PR #474 merged after CI and review. Issue #71 is closed as source and design complete. Spell event PR #476 and door collision PR #477 passed every current-head CI job and the combined proof. Human schema approval is pending.
+
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.
-
Current work
Complete human schema review for Spell event PR #476 and door collision PR #477 after final integration checks. Their implementers own CI and review responses.
Keep the merged item GUID rollout subject to its authorized legacy-state and range audit. Source issue #71 is complete.
Revise the next #84 design for receipt cleanup and authority over staged rolls. Codex owns the revision; the GPT-5.6 Sol source study and GPT-6 Astra adversarial review are saved with the local Ticket.
Keep original loot, imported-door and client acceptance open where the requested evidence is still missing.
+
Current work
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.
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 @@
Order
Issue and assessment
Importance
Gain
Effort
Return
-
State and owner
Next action
1
#113Imported door meshes have no instance-scoped collider registry or state-gated ray consumer.
PR #254 supplied game_go_model. The remaining collider table, lifecycle, transform, state Gate, broad-phase reject, and ray merge are specified and testable with synthetic data. Dynamic collider eligibility can depend on the global Gate and registry data while static geometry keeps its active-generation rule, so map 36 needs no invented static generation or new product decision. Implementing #114 in the same DAG avoids an instance-0-only production path.
Confidence: high. Issue updated 2026-08-13.
Blocked by
Human review is required before the additive schema ships; imported-door calibration stays open.
module/src/go_model.rs stores local-space DOOR and BUTTON meshes and names game_go_collider as the missing 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.
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.
PR review GPT-6 Astra, high effort, door collision implementer
Obtain the requested human schema approval before merge. The reviewed patch is unchanged after rebasing onto main 408f417. The implementer will use the next included CodeRabbit review and address any findings. Imported geometry, matching Package artifacts and canonical performance remain acceptance work.
2
#114Complete dynamic door collision with instance-aware ray APIs and sibling-instance isolation.
This issue depends only on source work in #113 and should ship in the same source DAG. An instance-0-only registry would create a temporary production interface that the next change immediately replaces. Current callers already hold entity instance identity. Imported Deadmines calibration remains a separate Operator gate after the source and synthetic tests merge.
Confidence: high. Issue updated 2026-08-13.
Blocked by
Human review is required before the additive schema ships.
Final Deadmines acceptance needs approved client data and a named development Shard.
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.
PR review GPT-6 Astra, high effort, door collision implementer
Obtain the requested human schema approval before merge. The reviewed patch is unchanged after rebasing onto main 408f417. The implementer will use the next included CodeRabbit review and address any findings. Imported geometry, matching Package artifacts and canonical performance remain acceptance work.
3
#72SpellCastEvent still multiplexes several wire signals through independent booleans and zero-value conventions.
Legacy decoding can treat the appended zero kind as the current field-derived form, while new constructors stamp explicit kinds. That is a bounded compatibility design. Human schema review belongs after the concrete change.
module/src/spell/tables.rs: SpellCastEvent still encodes five signals through independent booleans and zero-value fields.
gateway/src/stdb/subscriptions.rs: cast_event_outbound decodes those signals through ordered branches, which can remain the kind-zero compatibility path.
Typed SpellCastEvent constructors centralize the baseline, so stamping an explicit appended kind stays local.
docs/danger-zones.md permits an end-appended defaulted numeric column and requires human schema review before shipping.
PR review GPT-5.6 Sol, high effort, Spell event implementer
Obtain the requested human schema approval before merge. The reviewed patch is unchanged after rebasing onto main 408f417.
4
#60The 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.
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.
5
#424Motion delivery may stop until the Gateway restarts, but the original warning also fired during healthy mover-only traffic.
PR #437 moved the diagnostic ahead of AOI audience selection and added per-Shard queue, callback, subscription, and pump signals. 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.
Verify 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.
6
#77The 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.
Use #59 to record the current seated capacity and movement cost on comparable hardware. Update or close this parent from that measured result.
7
#88Movement 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.
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.
8
#59The 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.
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.
9
#86Per-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.
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.
10
#105LyraCore 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.
Run the pinned full suite on an approved development Realm and retain every scenario result, including real startup failures and fixture skips.
11
#104The 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.
docs/development-cli.md documents the Rust import flow; importer/scripts/import-world.sh still exists.
3
4
2
6.0
Verify 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.
12
#272Resident 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.
Verify 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.
13
#55The 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.
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.
14
#78GridBox 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.
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.
15
#103The dynamic door-collision parent has imported meshes; runtime and instance-aware behavior remain in #113 and #114.
The parent delivered its Spec and split, and PR #254 completed the import slice. It is now a tracker. No further design decision blocks source work: #113 and #114 can form one instance-scoped implementation DAG, followed by imported Deadmines acceptance.
Keep this issue as the parent. Merge the combined #113 and #114 source work, complete the imported Deadmines collision probe, then close this parent from that evidence.
16
#46PR #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.
Dependency 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.
17
#66The 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.
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.
18
#64The 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.
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.
19
#65Logon 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.
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.
20
#39Static world collision is shipped, while dynamic GameObject collision, fresh-provision parity, and the final real-client movement checks remain open.
The epic's main collision slices landed in PR #115. Completion now depends on open issue #103 and its remaining children, issue #104's provisioning Gate, and a human Blink and line-of-sight check, so the umbrella is not a single implementation candidate.
Confidence: high. Issue updated 2026-08-11.
Blocked by
Issue #103 dynamic GameObject collision, including open children #113 and #114
Finish #103 through its remaining dynamic collision Tickets, complete #104 on a fresh provision, then run the real-client Blink and line-of-sight matrix and close the epic.
21
#198Retire 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.
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.
22
#138The published quickstart does not exist yet, so the repository guide cannot safely become a pointer.
The issue body is only a dash. The public-site repository still says the site is not built, while docs/quickstart.md remains the complete guide linked from this repository. Replacing it now would remove working instructions without a destination.
Confidence: high. Issue updated 2026-08-13.
Blocked by
No published quickstart or explicit destination URL exists.
docs/quickstart.md remains the repository's complete setup guide.
1
2
1
2.0
Dependency 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.
23
#33The 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
Code fact: the current CoordinatorStore realms path returns exactly one configured Realm despite the protocol-level Realm list response.
2
4
5
1.6
Dependency Codex
Complete and verify issue #34, then rewrite this issue around Realm directory discovery, selection, routing, and a two-Realm Gate.
24
#68Zero-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.
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.
25
#58The 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.
Decide whether the supported source installation replaces this binary-distribution request. If binary distribution remains wanted, define supported targets and release artifacts before implementation.
26
#69The 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.
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.
27
#34Realm-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
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.
4
5
5
4.0
Design 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.
28
#84Loot Roll recovery after result expiry needs durable settlement identity; the original three-Shard and bot-party incident remains unverified.
PR #474 merged the proved completion-marker fix. The remaining work must carry immutable source loot identity beyond the one-second event lifetime and survive Gateway restart. That is a larger design and schema change; retaining only corpse GUID and slot could award a later respawn drop.
Confidence: medium. Issue updated 2026-09-08.
Blocked by
The receipt cleanup and roll authority protocols need a reviewed design.
The original incident rerun needs a disposable three-Shard development Realm and verified Headless Client scenario dispatch.
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.
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.
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.
Revise the durable settlement design before implementation. Adversarial review found receipt cleanup can lose the original outcome, and source staging rolls need explicit resolution authority after promotion. Keep original incident acceptance separate.
29
#29Basic 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
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.
4
4
5
3.2
Design 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.
30
#36Speed 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
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.
4
3
4
3.0
Design 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.
31
#35Package 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
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.
Decide the minimum deployment manifest and binary-distribution contract. #58 has a source installer but its requested binary distribution is unresolved.
32
#82A 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.
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.
3
4
4
3.0
Design 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.
33
#73The 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.
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.
34
#27Groups 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.
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.
3
4
5
2.4
Design 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.
35
#313Choose the first non-spell DBC catalogues that Package Deltas may update.
The issue comment supplies a detailed update-only proposal, but it explicitly awaits maintainer approval. The stable key for game_skill_ability, family boundaries, claimable columns, replay ordering, and cross-family spell references define the Package contract. The ready-for-agent label does not settle those choices.
Confidence: medium. Issue updated 2026-09-02.
Blocked by
Maintainer approval requested in the 2026-09-02 issue comment.
The proposal identifies positional keys and a replay-order dependency that cannot be inferred from current code alone.
3
4
5
2.4
Design 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.
36
#11Self-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.
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.
3
3
4
2.2
Design 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.
37
#4The 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
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.
2
3
3
2.0
Design 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.
38
#30The 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.
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.
2
4
5
1.6
Design 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.
39
#67SO_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.
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.
40
#79Gateway 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.
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.
41
#10Distract 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.
Code fact: searches across spell, combat, and Creature behavior code find no Distract, investigation, or temporary attention implementation.
2
2
4
1.0
Design 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
#28Drink 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.
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.
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.
43
#41Ritual 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.
Code fact: searches for spell 698, Ritual of Summoning, and ritual portal assistance found no implementation in importer, Module, or Gateway code.
2
2
5
0.8
Design 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.
44
#92client 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.
Run lyracore client sync against a configured stock client and record that patch-3.MPQ and every enabled Package addon load.
45
#318Runtime Script reconciliation is implemented; visible execution and removal on a Realm remain.
PR #358 delivered the schema, whole-plan reconciliation, ordering, failure containment, and durable tests. 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.
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.
46
#3Realm-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
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.
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.
47
#38The 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
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.
48
#40The 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.
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.
49
#184Run 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.
Human 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.
50
#195Generation-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.
Human acceptance Operator and real-client reviewer
Refresh the affected nav import, prepare and finalize matching coverage on the approved World Shards, record before and after detours, and enable nav_coverage_enabled only after approval.
51
#1The 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
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.
52
#42The 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
Run issue #373's imported-node playbook, then complete issue #366 through VanCleef and record the observed failures as narrow follow-up issues.
53
#154Aura stacking code and its insertion boundary are covered; the live sequence has no recorded evidence.
PR #217 shipped stacking policy tests and the Architecture Test for one authoritative insertion boundary. The issue's code blocker #153 is complete. docs/aura-stacking-probes.md still has an empty evidence template, so only Operator-run Module and client Verification remains.
Confidence: high. Issue updated 2026-09-01.
Blocked by
Operator-approved Module publish and a real client.
Human 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.
54
#31Random Properties now import, roll once, survive every item path, reach the client, and apply every specified Stat Kind; only live-client and imported-data acceptance remains.
PR #462 merged the catalogue import, weighted selection, per-instance persistence, Transfer compatibility, item movement, wire projection, and the first stat families. PR #466 merged health, mana, resistances, weapon damage, avoidance, regeneration, spell power, healing, and character-sheet resistance projection. The remaining checks require imported data and a stock client.
Confidence: high. Issue updated 2026-08-22.
Blocked by
A named imported development Realm and real 1.12.1 client. No existing Realm update is authorized.
Current main contains game_item_random_property, game_item_enchantment and game_item_property_weight plus nonzero random_property_id projection across loot, inventory, mail and auction paths.
PR #466 passed the full Module and Gateway suites, durable Stat Kind cases, resistance projection, strict lint and current-head review.
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.
55
#112The 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.
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.
56
#196Bounded patrol return is implemented; only real-client movement Verification remains.
PR #253 added repeated ground-snapped return steps and pure coverage for long displacement and ordinary patrol behavior. The latest issue comment narrows the remainder to watching the result across real terrain.
Confidence: high. Issue updated 2026-09-01.
Blocked by
Stock 1.12.1 client and a suitable imported patrol scenario.
Displace a patroller across uneven terrain in a stock client and record its stepped return, route rejoin, and resumed patrol.
57
#366Verify Deadmines choreography, including Smite's 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.
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.
Learn a higher spell rank in a real 1.12.1 client, relog, and confirm the spellbook contains the expected visible rank before closing.
60
#304UI Transforms are implemented; FrameXML and GlueXML still need separate stock-client checks.
PR #392 ships deterministic anchored transforms, conflict Refusals, baseline and source hashes, and the Client Artifact boundary. The issue's latest comment marks every automated criterion complete and leaves the two real-client phases open.
Confidence: high. Issue updated 2026-09-02.
Blocked by
Operator baseline from a real unmodified 1.12.1 client.
Human 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.
61
#373Observe 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.
Human 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.
62
#202The low gossip text identifier is implemented; Marshal McBride's stock-client window is unverified.
The Gateway sends gossip text identifier 1 and answers a query for it. Packet tests cannot reproduce a build-5875 client silently dropping a gossip message, so the remaining criterion is visual client behavior.
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.
2
2
1
4.0
Human 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.
63
#137The bank Headless Client adapter is merged and pinned; Realm execution and stock-client checks remain.
Wire-harness PR #9 and core PR #453 cover activation, deposit, reconnect persistence, withdrawal, and slot purchase. The historical code blockers are complete. No approved Realm run or stock-client window check is recorded.
Confidence: high. Issue updated 2026-09-07.
Blocked by
Approved development Realm and a real 1.12.1 client.
Human 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.
64
#142The drowning Headless Client adapter is merged and pinned; Realm execution and stock-client calibration remain.
Wire-harness PR #10 and core PR #454 completed the source half. The adapter checks the breath timer, expiry before damage, matching health loss and drowning logs, and the stop after surfacing. It has not run on a Realm, and no automated check can calibrate head height or prove the mirror bar renders smoothly.
Confidence: high. Issue updated 2026-09-07.
Blocked by
Approved development Realm with imported liquid coordinates.
Real-client calibration of head height and mirror-bar behavior.
Human 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.
65
#107GameObject template scale is imported and sent; source-data and stock-client proportions remain unchecked.
PR #110 shipped the importer, Module column, Gateway field, fallback, and tests. The latest issue comment limits the remainder to imported row, wire, and visual checks for Peacebloom and Copper Vein.
Confidence: high. Issue updated 2026-09-01.
Blocked by
Approved game data, an Operator-run development Shard, and a stock client.
Human 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.
66
#53A 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.
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.
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.
Closed on GitHub. Preserve the recorded implementation evidence.
68
#63Concurrent promotions now reuse one active Loot Roll and preserve its complete vote set.
Concurrent Gateway promotions could insert duplicate active Loot Rolls and vote sets on Realm-core. Merged #439 makes the authoritative insertion reuse the existing active roll and preserve its votes. Post-resolution replay remains a separate decision in #441.
Complete. Concurrent-promotion SQL acceptance passed in merged #439. Post-resolution replay remains in #441.
69
#61Realm-core owns the Account generation. Competing live admission is refused, and stale gameplay, Transfer completion and cleanup cannot remove the winning Character.
This removes the ownership race between independent Gateways. One live Account Claim and retained Shard generations enforce the invariant through the same transactions that perform gameplay and cleanup.
Issue #61 states the two-Gateway stale-disconnect corruption directly.
The maintained report already identifies a Realm-core-owned generation or lease and the losing-socket test as the bounded solution.
CODING_STANDARDS.md assigns realm-wide Session state to Realm-core and requires atomic Durable Requests.
Local T1 and T2 Tickets establish the two-Gateway ownership path and integration checks. Design review requires tokens on queued movement, gameplay, cleanup and Transfer requests. Every configured Shard must acknowledge the new generation before admission; an unavailable Shard therefore prevents admission.
A disposable Standalone with two independent Coordinators reproduced the current defect: both logins succeed, then delayed and repeated logout from the older Gateway deletes the newer Character entity. The test failed with zero live entities where one was required. Durable ownership implementation is in progress.
The first durable replacement test now passes: a competing live claim is refused, an expired claim is replaced, and delayed old cleanup and a stale combat request leave the winning Character intact. The agent is integrating approved main and proving socket-loop, queued movement and Transfer cases.
The encrypted World Session case refused a competing live claim and preserved the successor after expiry and old cleanup. Self-review found that an ownership-loss message could wait behind a blocked writer; the agent is replacing it with direct shutdown through an owned socket clone and testing that case before publication.
Cross-repository audit found three Headless Client shell calls still using bare guids. Compatible argument encoding and refusal-safe party cleanup are published in wire-harness #11 with four passing offline shell checks. The core implementation will include its reviewed release pin.
The expiry fixture found that identity lookup can select the wrong live entity when legacy rows share an identity. The implementer is passing the already resolved Character entity into the shared logout body and testing duplicate identities. Renewal work also moves outside the blocking pool used by active World Sessions.
At 2f6b96d, all 1,496 Module, 1,302 Gateway and 351 importer unit tests pass, plus 156 shared tests and 121 Gateway integration/parity checks. Strict workspace lint passes. The encrypted World Session proof covers competing admission, old socket closure and renewal with a full Tokio blocking pool. Independent routing review found no missing immutable ownership token. Binding comparison and offline preflight are the remaining local gates.
Initial Rust CI passed. Durable CI failed before two fixtures connected because parallel Standalone launches could not read their signing key; three Account durable cases passed. The implementer is fixing fixture isolation and integrating a345555. All local unit, lint, formatting, 986-binding and offline preflight gates passed before publication. Private Account Claim/Fence tables and reducer argument changes require human schema review after checks pass.
The five Account durable cases pass with four concurrent test threads after private signing-key isolation. The integration with merged party cleanup retains SessionActor in the new Coordinator clone and deletion LEAVE path. A literal two-process smoke check is prepared on new owned Standalone fixtures.
The earlier Transfer review response was incomplete: production Transfer ids equal Character guids, masking an incorrect Actor fallback. A real Coordinator test with Transfer 7001 and Character 1 reproduces STALE_WORLD_SESSION for the valid owner. Four wrappers now retain the bound Character Actor while preserving the Transfer id; valid completion and all four stale-owner Refusals pass. Final integrated checks are running.
Done GPT-6 Astra implementer; Codex merged and closed the issue
Closed with repeatable two-Gateway evidence. Use the documented coordinated rollout when deploying.
70
#441A 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.
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.
Complete. PR #461 merged after human schema approval and full checks; durable replay and later-generation tests pass.
71
#460Shifted Spell columns corrupt general imported effects and can omit the third effect.
Real-data checks found the general importer reads an equipment mask as an effect and shifts valid effects by one slot. This affects core spell behavior. The Random Property Tracer has a narrow corrected reader that can guide the broader repair.
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.
Done GPT-5.6 Sol, high effort, Spell target fix; Codex final review
Closed after #465 merged. Operator follow-up is recorded: reimport Spells, rebuild Base Snapshots and review affected Package Deltas before replay.
72
#71Durable Shard GUID Ranges prevent new item collisions and preserve Transfer identity; source and migration design are complete.
PR #473 merged the durable allocator and committed migration plan after all CI and review findings were resolved. The issue requested source and design work, so it is closed. The authorized legacy-state audit and coordinated deployment remain operational follow-through.
items/tables.rs masks the owner to 24 bits and next_item_guid increments without enforcing the 256-value block.
docs/danger-zones.md requires human review before migration work ships; it does not reserve implementation design for a person.
The issue already supplies saturation, transfer identity, migration, and collision cases for a bounded design Ticket.
The first PR #473 revision reused free IDs. Implementer review found same-transaction identity reuse in crafting and quest rewards. The merged c0ddfd0 revision uses durable GUID Ranges instead.
Coordinating review found that cascade_delete_character advanced the allocator before the Transfer import range Gate. The merged allocator excludes foreign Character GUIDs at this cleanup path when a range is installed.
The durable high-to-low Transfer regression reproduced allocator inflation from 6 to 1000000006 and passed with the foreign-range Gate. Gateway durable CI also exposed ID reuse after a no-range deletion; the merged revision preserves that legacy floor before range installation.
Done GPT-6 Astra, high effort, item GUID implementer
Source and design complete; #71 closed. Before deployment, an authorized Operator must audit legacy GUIDs and permanent ranges, then follow the coordinated rollout plan.
73
#70A fresh clone now runs a four-database sharded fixture, while the requested Northshire region seam was deliberately retired.
The issue's product goal, showing Sharding out of the box, is shipped in an evolved form. dev up publishes Eastern Kingdoms, Kalimdor, an Instance Pool, and Realm-core, so contributors exercise both continental and instance routing. The same docs explicitly record removal of the second Elwynn database and walkable Northshire seam. Keeping the exact original issue open would reverse a later Operator decision.
Closed with current-source evidence. See the GitHub triage comment.
74
#51The old away-Shard subscription path is gone, and the replacement shared connection model enforces ghost and stealth visibility.
The issue targets ensure_away and fold_home_shard, neither of which exists. The Gateway now keeps shared Shard connections and selects visible peers through WorldView. ViewerGates carries the viewer's ghost state, and peer creation consults ghost and stealth state before sending CREATE. A later merged fix also restores a peer's aura state when stealth ends.
Closed with current-source evidence. See the GitHub triage comment.
75
#76The blocking-pool limit is now configured, logged, documented, and enforced before a socket enters Tokio's blocking queue, satisfying the issue's stated completion rule.
Current code and PR 410 go beyond the original acceptance criteria by sharing a non-waiting capacity across both listeners. The title's old 477 and 535 observations remain historical evidence, not an open implementation request.
The cast entry points did not consistently apply the shared creature identifier policy. Merged #434 protects fixture creatures across cast declarations, including partial updates.
Closed on GitHub. Preserve the recorded implementation evidence.
77
#80Cross-map teleport now deletes public and staged motion with the live entity.
Before #438, cross-map teleport removed staged motion and the live entity but left public motion behind. The merged cleanup removes both motion forms with the entity; the durable regression proves the result.
Before #438, module/src/world.rs removed staged motion but left the public motion row during cross-map teleport.
module/src/helpers.rs and module/src/creatures/tick/lifecycle.rs: the standard entity cleanup contract includes game_entity_motion and game_creature_spline.
Complete. PR #438 merged after the durable regression, all other checks and review passed.
78
#469Temporary summon lifetime callbacks collide with their retained unique row; a Binding quest poll also races corpse removal.
Report-only CI on current main captured a unique-key panic in expire_eventai_summon. This can interrupt recurring lifetime checks. The same run exposed a transient dead-entity assertion in the Binding fixture. Both have an isolated implementation owner.
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.
Done GPT-5.6 Sol, high effort, expiry regression cases; Codex final review
Closed after #470 merged. Preserve the mutation and durable regression evidence.
79
#399Replay 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.
Subscribed-table parity left other generated definitions unchecked. Merged #448 adds reproducible full binding generation and comparison, so CI now catches that drift.
Complete. Merged #448 generates and compares every Gateway binding file, with documented normalization. Its baseline contained 967 files.
83
#341Service 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.
Complete. CLI #57 is adopted by merged core pin #452.
84
#50Classify 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.
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.
Complete. CLI #57 is adopted by merged core pin #452.
87
#398Generated Package Deltas and Runtime Scripts now have accurate trust-review counts in the pinned CLI.
The old review counted source filenames and missed prebuilt Script Artifacts. Correct accounting also separates physical Delta artifacts from their Import Family memberships. This was more work than replacing the stale Datascript line.
Complete. CLI #56 and core pin #447 are merged; 701 CLI tests and all core checks passed.
88
#45The old question about per-Character AOI subscription cost no longer matches the event relay design, which now uses one stable event subscription per Shard and computes viewer audiences in Gateway memory.
PR #421 removed the fan-out pattern that motivated the table-collapse decision. Its 2,000-Character benchmark reduced queued jobs from 4,000,000 to 336,124 in the distributed case, so the proposed comparison would measure an obsolete architecture.
Closed with current-source evidence. See the GitHub triage comment.
89
#48The reported warm-handoff seam feel belongs to the retired region tier; the current Gateway has no seam state machine to tune.
The repository removed sub-map regions and mid-walk warm handoff. All recorded angle tests also passed before that removal, so further work on the old hysteresis design would target code that no longer exists.
Code fact: gateway/src/world/seam.rs is absent, and docs/architecture.md records the 2026-08-08 removal of the region tier and seam menu.
1
1
1
1.0
Done Codex
Closed with current-source evidence. See the GitHub triage comment.
90
#56The requested walkable-seam presentation polish has no active region seam after the region tier was retired.
Abrupt range-leave presentation and repeated crossings were properties of the removed Northshire-to-Elwynn region handoff. Current fixture Shard crossings are escrowed continent or instance transfers, not an overlapping walkable view merge. Keeping this issue open implies an active feature that the current topology deliberately removed.
Closed with current-source evidence. See the GitHub triage comment.
91
#49The seam operations console has no active region tier to operate; only the underlying load samples remain useful.
The fixture and production topology no longer activate region assignments. Current documentation explicitly retires the walkable region seam and keeps continental and instance routing. Building the requested editor now would put a large UI around inert topology data. Shard load telemetry can support a smaller future operations surface after #73 selects one.
Closed with current-source evidence. See the GitHub triage comment.
+
State and owner
Next action
1
#60The 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.
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
#424Motion delivery may stop until the Gateway restarts, but the original warning also fired during healthy mover-only traffic.
PR #437 moved the diagnostic ahead of AOI audience selection and added per-Shard queue, callback, subscription, and pump signals. 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.
Verify 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
#77The 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.
Use #59 to record the current seated capacity and movement cost on comparable hardware. Update or close this parent from that measured result.
4
#88Movement 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.
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
#113Instance-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 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.
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.
Verify 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
#59The 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.
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
#86Per-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.
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
#105LyraCore 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.
Run the pinned full suite on an approved development Realm and retain every scenario result, including real startup failures and fixture skips.
9
#104The 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.
docs/development-cli.md documents the Rust import flow; importer/scripts/import-world.sh still exists.
3
4
2
6.0
Verify 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
#272Resident 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.
Verify 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
#55The 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.
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
#78GridBox 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.
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
#103Dynamic 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.
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
#46PR #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.
Dependency 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
#66The 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.
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
#64The 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.
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
#65Logon 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.
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
#39Static 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.
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
#198Retire 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.
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
#138The published quickstart does not exist yet, so the repository guide cannot safely become a pointer.
The issue body is only a dash. The public-site repository still says the site is not built, while docs/quickstart.md remains the complete guide linked from this repository. Replacing it now would remove working instructions without a destination.
Confidence: high. Issue updated 2026-08-13.
Blocked by
No published quickstart or explicit destination URL exists.
docs/quickstart.md remains the repository's complete setup guide.
1
2
1
2.0
Dependency 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
#33The 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
Code fact: the current CoordinatorStore realms path returns exactly one configured Realm despite the protocol-level Realm list response.
2
4
5
1.6
Dependency Codex
Complete and verify issue #34, then rewrite this issue around Realm directory discovery, selection, routing, and a two-Realm Gate.
22
#68Zero-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.
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
#58The 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.
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
#69The 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.
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
#34Realm-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
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.
4
5
5
4.0
Design 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
#29Basic 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
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.
4
4
5
3.2
Design 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
#84Loot 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.
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.
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.
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.
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
#36Speed 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
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.
4
3
4
3.0
Design 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
#35Package 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
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.
Decide the minimum deployment manifest and binary-distribution contract. #58 has a source installer but its requested binary distribution is unresolved.
30
#82A 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.
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.
3
4
4
3.0
Design 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
#73The 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.
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
#27Groups 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.
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.
3
4
5
2.4
Design 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
#313Choose the first non-spell DBC catalogues that Package Deltas may update.
The issue comment supplies a detailed update-only proposal, but it explicitly awaits maintainer approval. The stable key for game_skill_ability, family boundaries, claimable columns, replay ordering, and cross-family spell references define the Package contract. The ready-for-agent label does not settle those choices.
Confidence: medium. Issue updated 2026-09-02.
Blocked by
Maintainer approval requested in the 2026-09-02 issue comment.
The proposal identifies positional keys and a replay-order dependency that cannot be inferred from current code alone.
3
4
5
2.4
Design 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
#11Self-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.
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.
3
3
4
2.2
Design 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
#4The 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
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.
2
3
3
2.0
Design 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
#30The 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.
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.
2
4
5
1.6
Design 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
#67SO_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.
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
#79Gateway 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.
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
#10Distract 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.
Code fact: searches across spell, combat, and Creature behavior code find no Distract, investigation, or temporary attention implementation.
2
2
4
1.0
Design 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
#28Drink 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.
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.
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
#41Ritual 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.
Code fact: searches for spell 698, Ritual of Summoning, and ritual portal assistance found no implementation in importer, Module, or Gateway code.
2
2
5
0.8
Design 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
#92client 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.
Run lyracore client sync against a configured stock client and record that patch-3.MPQ and every enabled Package addon load.
43
#318Runtime Script reconciliation is implemented; visible execution and removal on a Realm remain.
PR #358 delivered the schema, whole-plan reconciliation, ordering, failure containment, and durable tests. 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.
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
#3Realm-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
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.
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
#38The 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
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
#40The 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.
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
#184Run 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.
Human 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
#195Generation-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 #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.
Human 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
#1The 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
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
#42The 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
Run issue #373's imported-node playbook, then complete issue #366 through VanCleef and record the observed failures as narrow follow-up issues.
51
#154Aura stacking code and its insertion boundary are covered; the live sequence has no recorded evidence.
PR #217 shipped stacking policy tests and the Architecture Test for one authoritative insertion boundary. The issue's code blocker #153 is complete. docs/aura-stacking-probes.md still has an empty evidence template, so only Operator-run Module and client Verification remains.
Confidence: high. Issue updated 2026-09-01.
Blocked by
Operator-approved Module publish and a real client.
Human 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
#31Random Properties now import, roll once, survive every item path, reach the client, and apply every specified Stat Kind; only live-client and imported-data acceptance remains.
PR #462 merged the catalogue import, weighted selection, per-instance persistence, Transfer compatibility, item movement, wire projection, and the first stat families. PR #466 merged health, mana, resistances, weapon damage, avoidance, regeneration, spell power, healing, and character-sheet resistance projection. The remaining checks require imported data and a stock client.
Confidence: high. Issue updated 2026-08-22.
Blocked by
A named imported development Realm and real 1.12.1 client. No existing Realm update is authorized.
Current main contains game_item_random_property, game_item_enchantment and game_item_property_weight plus nonzero random_property_id projection across loot, inventory, mail and auction paths.
PR #466 passed the full Module and Gateway suites, durable Stat Kind cases, resistance projection, strict lint and current-head review.
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
#112The 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.
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
#196Bounded patrol return is implemented; only real-client movement Verification remains.
PR #253 added repeated ground-snapped return steps and pure coverage for long displacement and ordinary patrol behavior. The latest issue comment narrows the remainder to watching the result across real terrain.
Confidence: high. Issue updated 2026-09-01.
Blocked by
Stock 1.12.1 client and a suitable imported patrol scenario.
Displace a patroller across uneven terrain in a stock client and record its stepped return, route rejoin, and resumed patrol.
55
#366Verify 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.
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.
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
#114Instance-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.
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.
Human 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
#304UI Transforms are implemented; FrameXML and GlueXML still need separate stock-client checks.
PR #392 ships deterministic anchored transforms, conflict Refusals, baseline and source hashes, and the Client Artifact boundary. The issue's latest comment marks every automated criterion complete and leaves the two real-client phases open.
Confidence: high. Issue updated 2026-09-02.
Blocked by
Operator baseline from a real unmodified 1.12.1 client.
Human 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
#373Observe 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.
Human 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
#202The low gossip text identifier is implemented; Marshal McBride's stock-client window is unverified.
The Gateway sends gossip text identifier 1 and answers a query for it. Packet tests cannot reproduce a build-5875 client silently dropping a gossip message, so the remaining criterion is visual client behavior.
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.
2
2
1
4.0
Human 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
#137The bank Headless Client adapter is merged and pinned; Realm execution and stock-client checks remain.
Wire-harness PR #9 and core PR #453 cover activation, deposit, reconnect persistence, withdrawal, and slot purchase. The historical code blockers are complete. No approved Realm run or stock-client window check is recorded.
Confidence: high. Issue updated 2026-09-07.
Blocked by
Approved development Realm and a real 1.12.1 client.
Human 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
#142The drowning Headless Client adapter is merged and pinned; Realm execution and stock-client calibration remain.
Wire-harness PR #10 and core PR #454 completed the source half. The adapter checks the breath timer, expiry before damage, matching health loss and drowning logs, and the stop after surfacing. It has not run on a Realm, and no automated check can calibrate head height or prove the mirror bar renders smoothly.
Confidence: high. Issue updated 2026-09-07.
Blocked by
Approved development Realm with imported liquid coordinates.
Real-client calibration of head height and mirror-bar behavior.
Human 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
#107GameObject template scale is imported and sent; source-data and stock-client proportions remain unchecked.
PR #110 shipped the importer, Module column, Gateway field, fallback, and tests. The latest issue comment limits the remainder to imported row, wire, and visual checks for Peacebloom and Copper Vein.
Confidence: high. Issue updated 2026-09-01.
Blocked by
Approved game data, an Operator-run development Shard, and a stock client.
Human 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
#53A 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.
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.
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.
Closed on GitHub. Preserve the recorded implementation evidence.
67
#63Concurrent promotions now reuse one active Loot Roll and preserve its complete vote set.
Concurrent Gateway promotions could insert duplicate active Loot Rolls and vote sets on Realm-core. Merged #439 makes the authoritative insertion reuse the existing active roll and preserve its votes. Post-resolution replay remains a separate decision in #441.
Complete. Concurrent-promotion SQL acceptance passed in merged #439. Post-resolution replay remains in #441.
68
#61Realm-core owns the Account generation. Competing live admission is refused, and stale gameplay, Transfer completion and cleanup cannot remove the winning Character.
This removes the ownership race between independent Gateways. One live Account Claim and retained Shard generations enforce the invariant through the same transactions that perform gameplay and cleanup.
Issue #61 states the two-Gateway stale-disconnect corruption directly.
The maintained report already identifies a Realm-core-owned generation or lease and the losing-socket test as the bounded solution.
CODING_STANDARDS.md assigns realm-wide Session state to Realm-core and requires atomic Durable Requests.
Local T1 and T2 Tickets establish the two-Gateway ownership path and integration checks. Design review requires tokens on queued movement, gameplay, cleanup and Transfer requests. Every configured Shard must acknowledge the new generation before admission; an unavailable Shard therefore prevents admission.
A disposable Standalone with two independent Coordinators reproduced the current defect: both logins succeed, then delayed and repeated logout from the older Gateway deletes the newer Character entity. The test failed with zero live entities where one was required. Durable ownership implementation is in progress.
The first durable replacement test now passes: a competing live claim is refused, an expired claim is replaced, and delayed old cleanup and a stale combat request leave the winning Character intact. The agent is integrating approved main and proving socket-loop, queued movement and Transfer cases.
The encrypted World Session case refused a competing live claim and preserved the successor after expiry and old cleanup. Self-review found that an ownership-loss message could wait behind a blocked writer; the agent is replacing it with direct shutdown through an owned socket clone and testing that case before publication.
Cross-repository audit found three Headless Client shell calls still using bare guids. Compatible argument encoding and refusal-safe party cleanup are published in wire-harness #11 with four passing offline shell checks. The core implementation will include its reviewed release pin.
The expiry fixture found that identity lookup can select the wrong live entity when legacy rows share an identity. The implementer is passing the already resolved Character entity into the shared logout body and testing duplicate identities. Renewal work also moves outside the blocking pool used by active World Sessions.
At 2f6b96d, all 1,496 Module, 1,302 Gateway and 351 importer unit tests pass, plus 156 shared tests and 121 Gateway integration/parity checks. Strict workspace lint passes. The encrypted World Session proof covers competing admission, old socket closure and renewal with a full Tokio blocking pool. Independent routing review found no missing immutable ownership token. Binding comparison and offline preflight are the remaining local gates.
Initial Rust CI passed. Durable CI failed before two fixtures connected because parallel Standalone launches could not read their signing key; three Account durable cases passed. The implementer is fixing fixture isolation and integrating a345555. All local unit, lint, formatting, 986-binding and offline preflight gates passed before publication. Private Account Claim/Fence tables and reducer argument changes require human schema review after checks pass.
The five Account durable cases pass with four concurrent test threads after private signing-key isolation. The integration with merged party cleanup retains SessionActor in the new Coordinator clone and deletion LEAVE path. A literal two-process smoke check is prepared on new owned Standalone fixtures.
The earlier Transfer review response was incomplete: production Transfer ids equal Character guids, masking an incorrect Actor fallback. A real Coordinator test with Transfer 7001 and Character 1 reproduces STALE_WORLD_SESSION for the valid owner. Four wrappers now retain the bound Character Actor while preserving the Transfer id; valid completion and all four stale-owner Refusals pass. Final integrated checks are running.
Done GPT-6 Astra implementer; Codex merged and closed the issue
Closed with repeatable two-Gateway evidence. Use the documented coordinated rollout when deploying.
69
#441A 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.
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.
Complete. PR #461 merged after human schema approval and full checks; durable replay and later-generation tests pass.
70
#460Shifted Spell columns corrupt general imported effects and can omit the third effect.
Real-data checks found the general importer reads an equipment mask as an effect and shifts valid effects by one slot. This affects core spell behavior. The Random Property Tracer has a narrow corrected reader that can guide the broader repair.
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.
Done GPT-5.6 Sol, high effort, Spell target fix; Codex final review
Closed after #465 merged. Operator follow-up is recorded: reimport Spells, rebuild Base Snapshots and review affected Package Deltas before replay.
71
#71Durable Shard GUID Ranges prevent new item collisions and preserve Transfer identity; source and migration design are complete.
PR #473 merged the durable allocator and committed migration plan after all CI and review findings were resolved. The issue requested source and design work, so it is closed. The authorized legacy-state audit and coordinated deployment remain operational follow-through.
Before PR #473, items/tables.rs masked the owner to 24 bits and next_item_guid incremented without enforcing the 256-value block.
docs/danger-zones.md requires human review before migration work ships; it does not reserve implementation design for a person.
The issue already supplies saturation, transfer identity, migration, and collision cases for a bounded design Ticket.
The first PR #473 revision reused free IDs. Implementer review found same-transaction identity reuse in crafting and quest rewards. The merged c0ddfd0 revision uses durable GUID Ranges instead.
Coordinating review found that cascade_delete_character advanced the allocator before the Transfer import range Gate. The merged allocator excludes foreign Character GUIDs at this cleanup path when a range is installed.
The durable high-to-low Transfer regression reproduced allocator inflation from 6 to 1000000006 and passed with the foreign-range Gate. Gateway durable CI also exposed ID reuse after a no-range deletion; the merged revision preserves that legacy floor before range installation.
Done GPT-6 Astra, high effort, item GUID implementer
Source and design complete; #71 closed. Before deployment, an authorized Operator must audit legacy GUIDs and permanent ranges, then follow the coordinated rollout plan.
72
#70A fresh clone now runs a four-database sharded fixture, while the requested Northshire region seam was deliberately retired.
The issue's product goal, showing Sharding out of the box, is shipped in an evolved form. dev up publishes Eastern Kingdoms, Kalimdor, an Instance Pool, and Realm-core, so contributors exercise both continental and instance routing. The same docs explicitly record removal of the second Elwynn database and walkable Northshire seam. Keeping the exact original issue open would reverse a later Operator decision.
Closed with current-source evidence. See the GitHub triage comment.
73
#51The old away-Shard subscription path is gone, and the replacement shared connection model enforces ghost and stealth visibility.
The issue targets ensure_away and fold_home_shard, neither of which exists. The Gateway now keeps shared Shard connections and selects visible peers through WorldView. ViewerGates carries the viewer's ghost state, and peer creation consults ghost and stealth state before sending CREATE. A later merged fix also restores a peer's aura state when stealth ends.
Closed with current-source evidence. See the GitHub triage comment.
74
#76The blocking-pool limit is now configured, logged, documented, and enforced before a socket enters Tokio's blocking queue, satisfying the issue's stated completion rule.
Current code and PR 410 go beyond the original acceptance criteria by sharing a non-waiting capacity across both listeners. The title's old 477 and 535 observations remain historical evidence, not an open implementation request.
The cast entry points did not consistently apply the shared creature identifier policy. Merged #434 protects fixture creatures across cast declarations, including partial updates.
Closed on GitHub. Preserve the recorded implementation evidence.
76
#80Cross-map teleport now deletes public and staged motion with the live entity.
Before #438, cross-map teleport removed staged motion and the live entity but left public motion behind. The merged cleanup removes both motion forms with the entity; the durable regression proves the result.
Before #438, module/src/world.rs removed staged motion but left the public motion row during cross-map teleport.
module/src/helpers.rs and module/src/creatures/tick/lifecycle.rs: the standard entity cleanup contract includes game_entity_motion and game_creature_spline.
Complete. PR #438 merged after the durable regression, all other checks and review passed.
77
#469Temporary summon lifetime callbacks collide with their retained unique row; a Binding quest poll also races corpse removal.
Report-only CI on current main captured a unique-key panic in expire_eventai_summon. This can interrupt recurring lifetime checks. The same run exposed a transient dead-entity assertion in the Binding fixture. Both have an isolated implementation owner.
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.
Done GPT-5.6 Sol, high effort, expiry regression cases; Codex final review
Closed after #470 merged. Preserve the mutation and durable regression evidence.
78
#399Replay 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.
Subscribed-table parity left other generated definitions unchecked. Merged #448 adds reproducible full binding generation and comparison, so CI now catches that drift.
Complete. Merged #448 generates and compares every Gateway binding file, with documented normalization. Its baseline contained 967 files.
82
#341Service 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.
Complete. CLI #57 is adopted by merged core pin #452.
83
#50Classify 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.
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.
Complete. CLI #57 is adopted by merged core pin #452.
86
#398Generated Package Deltas and Runtime Scripts now have accurate trust-review counts in the pinned CLI.
The old review counted source filenames and missed prebuilt Script Artifacts. Correct accounting also separates physical Delta artifacts from their Import Family memberships. This was more work than replacing the stale Datascript line.
Complete. CLI #56 and core pin #447 are merged; 701 CLI tests and all core checks passed.
87
#45The old question about per-Character AOI subscription cost no longer matches the event relay design, which now uses one stable event subscription per Shard and computes viewer audiences in Gateway memory.
PR #421 removed the fan-out pattern that motivated the table-collapse decision. Its 2,000-Character benchmark reduced queued jobs from 4,000,000 to 336,124 in the distributed case, so the proposed comparison would measure an obsolete architecture.
Closed with current-source evidence. See the GitHub triage comment.
88
#72SpellCastEvent has an explicit kind and preserves legacy decoding; the source change is complete.
PR #476 appends the default-zero kind, stamps typed constructors and dispatches explicitly while keeping legacy payload fields. It merged after human schema approval, independent review and all CI. Module-before-Gateway rollout remains an operational step.
Done GPT-5.6 Sol, high effort, Spell event implementer
Source complete; #72 closed. Publish the Module before starting the new Gateway during an authorized rollout.
89
#48The reported warm-handoff seam feel belongs to the retired region tier; the current Gateway has no seam state machine to tune.
The repository removed sub-map regions and mid-walk warm handoff. All recorded angle tests also passed before that removal, so further work on the old hysteresis design would target code that no longer exists.
Code fact: gateway/src/world/seam.rs is absent, and docs/architecture.md records the 2026-08-08 removal of the region tier and seam menu.
1
1
1
1.0
Done Codex
Closed with current-source evidence. See the GitHub triage comment.
90
#56The requested walkable-seam presentation polish has no active region seam after the region tier was retired.
Abrupt range-leave presentation and repeated crossings were properties of the removed Northshire-to-Elwynn region handoff. Current fixture Shard crossings are escrowed continent or instance transfers, not an overlapping walkable view merge. Keeping this issue open implies an active feature that the current topology deliberately removed.
Closed with current-source evidence. See the GitHub triage comment.
91
#49The seam operations console has no active region tier to operate; only the underlying load samples remain useful.
The fixture and production topology no longer activate region assignments. Current documentation explicitly retires the walkable region seam and keeps continental and instance routing. Building the requested editor now would put a large UI around inert topology data. Shard load telemetry can support a smaller future operations surface after #73 selects one.
Closed 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,
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.
fix(items): allocate GUIDs from durable Shard ranges
GPT-6 Astra, high effort, item GUID implementer
Merged after final CI and review
Source and design complete; #71 closed. Before deployment, an authorized Operator must audit legacy GUIDs and permanent ranges, then follow the coordinated rollout plan.
GPT-6 Astra, high effort, door collision implementer
All CI and independent review passed; human schema approval pending
Obtain the requested human schema approval before merge. The reviewed patch is unchanged after rebasing onto main 408f417. The implementer will use the next included CodeRabbit review and address any findings. Imported geometry, matching Package artifacts and canonical performance remain acceptance work.
fix(items): allocate GUIDs from durable Shard ranges
GPT-6 Astra, high effort, item GUID implementer
Merged after final CI and review
Source and design complete; #71 closed. Before deployment, an authorized Operator must audit legacy GUIDs and permanent ranges, then follow the coordinated rollout plan.
GPT-6 Astra, high effort, door collision implementer
Merged after schema approval, CI and resolved review
Source complete. Keep #113 open for canonical collision and sight-ray benchmarks and #114 open for imported FactoryDoor and sibling-instance acceptance.
Merged after CI and all review findings were resolved
Source complete. During an authorized rollout, regenerate imported navigation data and derived coverage, then complete client acceptance.
Ownership and updates
This report is the working dispatch list. Codex 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. Monitoring is active during this work session. Each implementer follows checks and actual CodeRabbit or human review through fixes; Codex handles final review and merge. No unattended scheduler is installed. The report and its repository source preserve the next actions between sessions.
+
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.
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
Both rebased schema PRs passed every CI job. Human approval remains pending. Independent report review verified all 66 open issue entries and found two stale sentences about the old door head and GUID revision; both are corrected. The door implementer will use the next included CodeRabbit review.
Completed the combined proof: Module 1508, Gateway 1448, all 13 new durable cases, all 995 bindings, formatting and strict workspace Clippy passed. Requested human schema review for #476 and #477 after their clean rebases. The next #84 design needs correction after adversarial review found receipt-retention and staging-authority failures.
Merged item GUID PR #473 as 408f417 after all final-head CI and review passed. Closed #71 because its source/design requirements and migration plan are complete; retained deployment audit and rollout in the report. Spell and door PRs are rebasing onto this main. The combined source already passes Module 1508, Gateway 1448 and all 13 new durable cases.
The GUID compatibility correction passed all 12 item durable cases and independent review. CodeRabbit completed its full review through fa64b46 without actionable findings. Final source c0ddfd0 rebases current main and is in CI; obsolete runs were canceled. Issue #84 now has a public progress note preserving the original incident acceptance and durable recovery design.
Durable CI exposed Character ID reuse after deletion before range installation in #473. A nonfatal Gateway provisioning path makes this a runtime compatibility case, now assigned for correction. Review also found missing pooled GameObject collider lifecycle hooks in #477. Re-scored the remaining #84 durable recovery work after its bounded retry fix merged.
Merged loot retry PR #474 after all CI and independent review passed; CodeRabbit was quota-limited and did not review it. Door PR #477 is published at 13adbb8 after all local proofs and two runtime reviews. Spell PR #476 passed every CI job. Item PR #473 at fa64b46 is in fresh full CodeRabbit review. Schema PRs will be checked against the combined main before human approval.
Merged report PR #475 after all CI checks and independent content review. Published Spell event PR #476 at 97678dd. Independent review of the revised item allocator found no blockers; its 11 new and 11 existing item durable cases passed. Corrected the loot retry comment in 2a11e7c after review, with no production logic change. CodeRabbit has not reviewed these current source heads.
Published the durable allocator revision of PR #473 at 8e6742e after reproducing foreign-Character allocator inflation. The revision includes that range Gate, crafting restoration and the old CodeRabbit wire-test finding. Door collision now reconciles Package spawn and template changes. Report PR #475 is under independent review after CodeRabbit skipped its data files.
PR #474 passed every CI job, including durable integration. Actual CodeRabbit review remains pending its rate limit. Coordinating review found a foreign-Character cleanup path that can consume another Shard's GUID Range; the #71 implementer is fixing it before the revised proof run.
Published loot retry PR #474 at a39fd62 after 1,444 Gateway tests, formatting and Gateway clippy passed. CodeRabbit posted a 51-minute rate limit at 05:31 UTC despite a green status, so actual review remains pending. Item GUID PR #473 stays a draft during the durable allocator revision.
Published item GUID PR #473. Implementer review caught same-transaction GUID reuse in crafting and quest rewards, so the PR is being revised to use existing durable GUID ranges before merge. Root limited #84 to safe retries while result events remain; longer recovery needs immutable settlement identity to avoid affecting later respawns.
Completed the current 67-issue audit. Removed closed historical blockers and retained Package #18 as an active Deadmines acceptance dependency. Assigned #113/#114 to GPT-6 Astra at high effort as one instance-scoped implementation. Spell event and collision edits have separate ownership within their isolated worktrees.
+
Recent updates
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.
All Abbey findings are resolved at 438ad8cd. CodeRabbit explicitly verified the foot-height correction and durable wall regression; independent review cleared the final delta. The implementer owns final CI and merge. Raised #84 remaining effort after the authority study exposed a separate group-mirror and disband-retirement dependency.
Independent review cleared the Abbey shared-edge correction at 6bb87b9. CodeRabbit found a separate extra height offset in the coarse movement ray, and Codex verified it against step_hit and los_hit. The implementer owns the fix and a movement regression before final merge.
Independent follow-up review reproduced a stair-boundary regression in Abbey head 72ef1d4. A 0.4-yard adjacent tread is classified as a ceiling when its boundary lies on a navigation sample. The test passes on 3e740bb. The active implementer owns correction and final merge; CodeRabbit review is also running.
The Abbey implementer pushed 72ef1d4 with the ceiling correction, captured-route replay and merged-door integration. Stopped the unpublished parallel candidate. Independent door integration review found no issues; floor/headroom review and final CI remain.
Merged door PR #477 as ef33da5 after all six final CI jobs passed, the user approved the schema, and CodeRabbit confirmed the fixture-data correction. Posted source-completion evidence to #113 and #114 while preserving their explicit benchmark and imported-door acceptance. Updated parent #103 and collision epic #39 accordingly.
Independent Abbey review reproduced a low-ceiling navigation regression: the test fails at 3e740bb and passes on main. Posted the finding and began an isolated candidate correction. The #84 design scope now preserves existing loot admission; it does not claim a fixed storage bound during unlimited unfinished work.
Detected the concurrent Abbey routing PR #479. Added it to the delivery list and assigned independent navigation and door-compatibility review. #477 remains first in merge order.
Door PR #477 at 37d1a1e fixes the actual CodeRabbit finding by rolling fixture row writes back after its success marker. The new preservation regression and independent review pass; fresh CI is running. Report snapshot #478 merged.
CodeRabbit completed its full door review and found that the public assertion fixture could delete existing GameObject and other rows. The implementer is adding rollback-on-success and existing-data preservation proof. The source PR stays held until this finding and fresh CI are complete.
The user approved both concrete schema changes. Merged Spell event PR #476 as 02a0662 and closed #72 with source evidence. Door PR #477 remains in full CodeRabbit review with all CI green. Its trial merge into the new main produces exactly the combined file tree already tested.
Both rebased schema PRs passed every CI job. Human approval remains pending. Independent report review verified all 66 open issue entries and found two stale sentences about the old door head and GUID revision; both are corrected. The door implementer will use the next included CodeRabbit review.