diff --git a/docs/research/playerbots-execution.json b/docs/research/playerbots-execution.json index 1b0cd9e4b..726361224 100644 --- a/docs/research/playerbots-execution.json +++ b/docs/research/playerbots-execution.json @@ -103,8 +103,9 @@ "prs": [ { "url": "https://github.com/LyraCoreProject/LyraCore/pull/481", - "label": "Execution report #481", - "status": "open" + "label": "Execution report #481 merged", + "status": "merged", + "merge_commit": "f32fad66caefa499757f794310744302914e4dd5" } ] }, @@ -155,22 +156,114 @@ "model": "gpt-6-astra", "effort": "high", "estimated_tokens": 180000, - "status": "implementing", + "status": "complete", "repo_scope": [ "LyraCore Module action and navigation contracts", "Official Package Collection playerbots fixture", "Local durable integration tests" ], "owner": "PB-001 implementer", - "prs": [], + "prs": [ + { + "url": "https://github.com/LyraCoreProject/LyraCore/pull/482", + "label": "Core #482", + "status": "merged", + "head_commit": "fe9caef6eb0d132c45a5d151827ab6fe64925f79", + "merge_commit": "be3fa67d0f0c24749230560544a3e8e8b577f61d" + }, + { + "url": "https://github.com/LyraCoreProject/packages/pull/25", + "label": "Package #25", + "status": "merged", + "head_commit": "0781d7e5c8831fd3cec9235bfbdb84dc2cd0537c", + "merge_commit": "5724de1660a2628e88320914bdd5abb0c69da517" + } + ], "evidence": [ - "Baseline on core 95e6ad8 and Package c32b2fb: both ignored personality durable tests passed in a private loopback Standalone. This proves the existing Package fixture, not the new outcome contract." + "Baseline on core 95e6ad8 and Package c32b2fb: both ignored personality durable tests passed in a private loopback Standalone. This proves the existing Package fixture, not the new outcome contract.", + "Final local union passed 1,621 Module unit tests normally, 1,622 with debug reducers, and 32 durable cases. Default-core SpacetimeDB 2.7.1 generation matched all 995 committed Gateway binding files. Independent standards findings are resolved or explicitly accepted; Spec review found no confirmed defects.", + "The final Package CI run passed all 16 strengthened fixtures against core fe9caef6. Repeated interaction setup now clears only its reserved target and quest rows, including stale movement and engagement. Evidence: https://github.com/LyraCoreProject/packages/actions/runs/34229152446/job/102070649535", + "Core #482 merged as be3fa67d0f0c24749230560544a3e8e8b577f61d after all checks passed, including the full durable job: https://github.com/LyraCoreProject/LyraCore/actions/runs/34229150494/job/102070610422", + "Final Package checks against merged core main passed, including all 16 durable fixtures in 167.90 seconds. Package #25 merged as 5724de1660a2628e88320914bdd5abb0c69da517. CI: https://github.com/LyraCoreProject/packages/actions/runs/34230810246/job/102076215519" ], "notes": [ - "The implementer owns the isolated core and Package worktrees and the serialized build slot. The orchestrator owns independent review and merge order.", - "One helper owns the two navigation files in an isolated core worktree. The tracer owner integrates that commit with casts, actor operations, Package changes, durable fixtures, and PRs." - ], - "acceptance_evidence": [] + "All eight source acceptance criteria have reviewed evidence. Core #482 and Package #25 are merged.", + "Package CI was restored to core main after the core merge. All final checks passed before the Package merge.", + "Both full CodeRabbit reviews completed. The repeated-setup finding is fixed; the core CI coverage question is resolved by the paired Package durable job. Final incremental automated review was rate limited. Independent review covered the final fixture changes. All core checks passed.", + "The flat observation row remains intentional for SQL diagnosis. Action-specific request functions and a private recorder own production writes; PB-002 owns typed runner candidates and foreground control.", + "The nullable quest-credit initialization fixture preserves an existing stall. A full older-Wasm upgrade was not claimed. The new Package schema remains subject to the repository human review requirement before shipping." + ], + "acceptance_evidence": [ + { + "criterion": "The fixture records pinned core and Package commits plus the actual content and geometry input revisions, labels seeded and client-derived provenance separately, records unavailable inputs, and reproduces the same initial state and outcome.", + "reviewer": "Codex orchestrator with independent GPT-6 Astra Spec review", + "evidence": [ + "All 16 final CI input records name clean core fe9caef6eb0d132c45a5d151827ab6fe64925f79 and GitHub tested Package merge 744732b50cc8135d3a06e598e07e26aa8633a434, whose parents are main c32b2fb and reviewed Package c97464f6be211525a3b36a2ee3824cf259edbdd1. Content is playerbots-seeded-actions-v1; geometry is playerbots-synthetic-nav-v1. Imported content and client geometry are explicitly unavailable.", + "CI Module BLAKE3: a4e921d874c49ada97f9893b4c9b41847ffdb994c670dcd3ea5673f0fab466fd. Package BLAKE3: 1b4de3cdafc56407264c216a3accda917117277914b2deffb4fbd0c3efaf29f6. The local focused Module has a different installed inventory; byte equality across those builds is not claimed.", + "Input manifest: https://github.com/LyraCoreProject/packages/blob/c97464f6be211525a3b36a2ee3824cf259edbdd1/playerbots/fixtures/actions.json", + "CI input and outcome artifacts: https://github.com/LyraCoreProject/packages/actions/runs/34229152446", + "The final run against merged core be3fa67d also records 16 clean input and outcome pairs. Tested Package merge b451105562bbb5deab45ceff9919b9e002aa240d has parents c32b2fb and reviewed head 0781d7e5. Module and Package identities match the preceding CI run. Artifacts: https://github.com/LyraCoreProject/packages/actions/runs/34230810246" + ] + }, + { + "criterion": "The fixture loads and runs the real Module with the real Package; it does not substitute a simulated gameplay engine.", + "reviewer": "Codex orchestrator with independent GPT-6 Astra Spec review", + "evidence": [ + "The local fixture passed all 16 cases through compiled Module Wasm, the real Package, and private SpacetimeDB 2.7.1 Standalone nodes. The final CI run below also includes the later repeated-setup checks.", + "The same behavior passed in Package CI: https://github.com/LyraCoreProject/packages/actions/runs/34226546164/job/102061988209", + "Final fixture changes also passed all 16 cases in 166.26 seconds: https://github.com/LyraCoreProject/packages/actions/runs/34229152446/job/102070649535", + "The same 16 fixtures passed against merged core main before the Package merge: https://github.com/LyraCoreProject/packages/actions/runs/34230810246/job/102076215519" + ] + }, + { + "criterion": "Attack acceptance is distinct from damage and quest progress, and an attempted attack with no hit cannot clear a quest progress clock.", + "reviewer": "Codex orchestrator with independent GPT-6 Astra Spec review", + "evidence": [ + "playerbots_an_accepted_attack_without_a_hit_does_not_clear_quest_stall observes accepted engagement, full target health, zero quest credit, and an unchanged stall clock behind a synthetic wall. Its positive phase uses the real lethal-hit pipeline to award credit; it does not claim that the bot hit through the wall.", + "https://github.com/LyraCoreProject/LyraCore/blob/fe9caef6eb0d132c45a5d151827ab6fe64925f79/module/tests/playerbots_rewrite.rs" + ] + }, + { + "criterion": "Movement reports complete, safe partial, blocked, or explicit unknown-coverage evidence with route or waypoint advancement where applicable.", + "reviewer": "Codex orchestrator with independent GPT-6 Astra Spec review", + "evidence": [ + "The complete-route and partial-route cases distinguish a proposed leg from observed arrival, retain a waypoint and search-work count, and record Unknown coverage. The blocked-target case holds position. Shared navigation tests passed 34 cases; VerifiedCells only attests consulted derived rows.", + "https://github.com/LyraCoreProject/LyraCore/blob/fe9caef6eb0d132c45a5d151827ab6fe64925f79/module/tests/playerbots_rewrite.rs" + ] + }, + { + "criterion": "Interaction and cast-start return typed success, waiting, Refusal, cancellation, and expiry outcomes supported by their owning operations.", + "reviewer": "Codex orchestrator with independent GPT-6 Astra Spec review", + "evidence": [ + "The fixture covers typed cast start/wait/resolve/refusal/cancel/expire outcomes, synchronous quest completion/refusal, full-inventory and invalid-choice atomicity, source-item refusal, and dead-attacker refusal. All 16 final cases passed.", + "https://github.com/LyraCoreProject/LyraCore/blob/fe9caef6eb0d132c45a5d151827ab6fe64925f79/module/tests/playerbots_rewrite.rs" + ] + }, + { + "criterion": "A long bot cast uses the normal core cast lifecycle and completes once without restart on later decision ticks.", + "reviewer": "Codex orchestrator with independent GPT-6 Astra Spec review", + "evidence": [ + "playerbots_a_long_bot_cast_waits_for_core_completion retains one five-second cast through repeated requests and normal decision ticks, observes one START and one GO, and verifies the heal. The owning begin operation returns its exact result directly.", + "https://github.com/LyraCoreProject/LyraCore/blob/fe9caef6eb0d132c45a5d151827ab6fe64925f79/module/tests/playerbots_rewrite.rs" + ] + }, + { + "criterion": "The blocked target and poor-range heal cases have reproducible inputs, observed outcomes, and enough evidence to compare later runner behavior.", + "reviewer": "Codex orchestrator with independent GPT-6 Astra Spec review", + "evidence": [ + "The blocked-target scenario and playerbots_an_out_of_range_heal_reports_the_owning_cast_gate record reproducible inputs and typed observations. The poor-range target starts at x=1400 while the bot starts at x=1200. Actions retain target, route, clipping, coverage, cast identity, and Refusal.", + "https://github.com/LyraCoreProject/LyraCore/blob/fe9caef6eb0d132c45a5d151827ab6fe64925f79/module/tests/playerbots_rewrite.rs" + ] + }, + { + "criterion": "A written extraction comparison chooses the smaller total implementation and records why the full AzerothCore runtime is not used.", + "reviewer": "Codex orchestrator with independent GPT-6 Astra Spec review", + "evidence": [ + "The extraction comparison in the Package README chooses typed Rust decisions and existing Module operations. It compares the 2,967-line selection-kernel inventory with the 243,560-line C++ runtime and records host-pointer, packet, and WotLK dependencies. https://github.com/LyraCoreProject/packages/blob/c97464f6be211525a3b36a2ee3824cf259edbdd1/playerbots/README.md", + "https://github.com/LyraCoreProject/LyraCore/pull/482#issuecomment-5585257477" + ] + } + ] }, { "id": "PB-002", @@ -194,16 +287,20 @@ "model": "gpt-6-astra", "effort": "high", "estimated_tokens": 180000, - "status": "ready", + "status": "implementing", "repo_scope": [ "Official Package Collection decision and durable state", "LyraCore Module scheduling and diagnostics", "Pure decision and durable integration tests" ], - "owner": "Unassigned", + "owner": "PB-002 implementer", "prs": [], "evidence": [], - "notes": [], + "notes": [ + "SpacetimeDB 2.7.1 allows appended enum variants only when old variants stay compatible and storage size and alignment stay unchanged. Prove populated-state migration for the runner schema. Planner source: https://github.com/clockworklabs/SpacetimeDB/blob/v2.7.1/crates/schema/src/auto_migrate.rs#L826-L895", + "Direct damage can delay a pending cast while retaining its scheduled identity. Observe its current due time before deciding that completion is late; the objective deadline is a separate policy limit.", + "Record-only means no gameplay actions from either runner for the selected bot. Freeze must stop retained foreground work. Verify both through the normal Package tick entry." + ], "acceptance_evidence": [] }, { @@ -236,7 +333,8 @@ "prs": [], "evidence": [], "notes": [ - "PB-001 found no existing line-of-sight Gate in targeted cast admission. Add the appropriate shared Gate with supported exemptions and client/bot parity coverage so the movement prerequisite responds to a real typed Refusal. Channel actions remain unsupported until their running lifecycle is correlated." + "PB-001 found no existing line-of-sight Gate in targeted cast admission. Add the appropriate shared Gate with supported exemptions and client/bot parity coverage so the movement prerequisite responds to a real typed Refusal. Channel actions remain unsupported until their running lifecycle is correlated.", + "The historical Actor cast bypasses the player spellbook check. PB-003 owns the appropriate shared Gate for the new runner and must coordinate with provisioning in PB-005. An unlearned heal must refuse without cast, power, or cooldown changes." ], "acceptance_evidence": [] }, @@ -555,6 +653,6 @@ "observations": {} } ], - "updated_at": "2026-09-08 11:19 UTC", - "summary": "PB-001 reproduced the immediate-heal defect and passed the first real timed-cast fixture. Cast and navigation work is underway. The report PR passed independent review; imported-world and client acceptance remain pending." + "updated_at": "2026-09-08 13:20 UTC", + "summary": "PB-001 is complete. Core #482 and Package #25 are merged with reviewed evidence for all eight criteria and passing final CI. PB-002 is implementing the durable decision runner. One of 12 implementation tickets is complete; imported-world and attended-client release evidence remains pending." } diff --git a/docs/research/playerbots-rewrite.html b/docs/research/playerbots-rewrite.html index c8329e68e..650c76801 100644 --- a/docs/research/playerbots-rewrite.html +++ b/docs/research/playerbots-rewrite.html @@ -37,7 +37,7 @@
The spec and tickets below drive implementation. Expand a title for the behavior, acceptance criteria, and recorded evidence. Parent totals include every child. Completion requires reviewed evidence for every criterion and merged PRs. The final ticket also requires imported-world and attended-client observation records.
-Updated 2026-09-08 11:19 UTC. PB-001 reproduced the immediate-heal defect and passed the first real timed-cast fixture. Cast and navigation work is underway. The report PR passed independent review; imported-world and client acceptance remain pending.
+Updated 2026-09-08 13:20 UTC. PB-001 is complete. Core #482 and Package #25 are merged with reviewed evidence for all eight criteria and passing final CI. PB-002 is implementing the durable decision runner. One of 12 implementation tickets is complete; imported-world and attended-client release evidence remains pending.
Ready to start: No unassigned work is ready.. The orchestrator republishes progress to this URL. Filters operate on this published snapshot.
12 tickets
-| Identifier | Spec and ticket hierarchy | Status | Owner | Blocked by | Pull requests |
|---|---|---|---|---|---|
PBSpec | Rewrite playerbots around durable objectives and typed action outcomesProblem statementThe current playerbots Package can accept an action without proving that the action completed, loses route results, treats attempted combat as quest progress, bypasses the normal cast lifecycle, and retains too little purpose across interruption, restart, and Transfer. Bots can therefore stall, repeat work, choose an obsolete target, or abandon useful intent without explaining why. The current tests also do not prove the Package and core together against real actor operations, imported content, navigation, protocol transitions, and sustained load. SolutionReplace the behavior control flow with one typed Rust decision runner shared by autonomous bots and human-led companions. The runner observes bounded facts, composes supported Strategies, ranks target-bearing candidates deterministically, executes actions through core operations, records typed outcomes, and retains one durable objective with bounded failure memory. Build the rewrite through a pinned real Module and Package fixture, then prove companion behavior, provisioning, seeded quest loops, recovery, commands, restart, Transfer, load, cutover, and attended client behavior before deleting the displaced implementation. User stories
Implementation decisions
Testing decisions
Out of scope
Further notes
| 0/12 complete | Orchestrator | None | Execution report #481 |
S1Workstream | Typed action foundation and durable runnerTyped action foundation and durable runner | 0/2 complete | Orchestrator | None | Pending |
PB-001Ticket | Prove typed outcomes in a real pinned fixtureCreate the first tracer through a reproducible pinned Module and Package fixture. Drive attack, interaction, movement, and cast-start through real core operations, return typed outcomes to the Package, and capture the blocked-target and out-of-range-heal failures that the rewrite must fix. Acceptance criteria
Verified criteria: 0/8. Execution model: gpt-6-astra, high effort. Repositories: LyraCore Module action and navigation contracts, Official Package Collection playerbots fixture, Local durable integration tests. Recorded evidence
Current notes
| implementing | PB-001 implementer | None | Pending |
PB-002Ticket | Run one durable objective through bounded decisionsBuild the shared decision runner around typed facts and outcomes. Retain one objective, arbitrate one foreground action, schedule bots in stable bounded batches, and explain each meaningful choice through the Package's normal entry point. Acceptance criteria
Verified criteria: 0/9. Execution model: gpt-6-astra, high effort. Repositories: Official Package Collection decision and durable state, LyraCore Module scheduling and diagnostics, Pure decision and durable integration tests. | planned | Unassigned | PB-001 | Pending |
S2Workstream | Companions and provisioningCompanions and provisioning | 0/3 complete | Orchestrator | None | Pending |
PB-003Ticket | Make a Priest follow, heal, and resumeComplete the first human-led companion loop. A Priest follows its party leader, retains an injured ally as the heal target, repairs range or line of sight, casts through the real lifecycle, handles interruption, and resumes following. Acceptance criteria
Verified criteria: 0/7. Execution model: gpt-5.6-sol, high effort. Repositories: Official Package Collection companion support behavior, LyraCore Module cast and party fact reads, Durable companion scenarios. Current notes
| planned | Unassigned | PB-002 | Pending |
PB-004Ticket | Complete starter roles, target choice, and crowd controlAdd Warrior tank and Mage damage behavior beside the Priest healer on the shared runner. Make explicit durable roles, vanilla class capabilities, chosen-target assistance, controlled-enemy avoidance, death, rest, and regrouping work through repeated party pulls. Acceptance criteria
Verified criteria: 0/8. Execution model: gpt-5.6-sol, high effort. Repositories: Official Package Collection starter class and role behavior, LyraCore Module combat and capability facts, Durable repeated-pull party scenarios. | planned | Unassigned | PB-003 | Pending |
PB-005Ticket | Provision playable bots without duplicating progressReconcile the supported bot's skills, spells, vanilla talents, equipment, bags, food, potions, ammo, reagents, and bounded supplies on spawn and level-up through real core operations. Make each action idempotent and explain it by provisioning profile and revision. Acceptance criteria
Verified criteria: 0/8. Execution model: gpt-5.6-sol, high effort. Repositories: Official Package Collection provisioning policy, LyraCore Module skill, spell, talent, item, inventory, and equipment operations, Durable idempotency scenarios. | planned | Unassigned | PB-002 | Pending |
S3Workstream | Autonomous questing and recoveryAutonomous questing and recovery | 0/3 complete | Orchestrator | None | Pending |
PB-006Ticket | Admit supported quests from a seeded catalogBuild a versioned quest catalog for the initial Northshire and Elwynn proof from imported relations, objectives, spawns, loot sources, and actual enders. Admit a quest only when every required objective has a supported executor, and retain the chosen objective and destination. Acceptance criteria
Verified criteria: 0/7. Execution model: gpt-5.6-sol, high effort. Repositories: Official Package Collection quest catalog and admission, LyraCore imported quest and world relations, Seeded durable catalog scenarios. Current notes
| planned | Unassigned | PB-002 | Pending |
PB-007Ticket | Finish supported autonomous quest loopsComplete supported kill, collect, talk-only, and simple GameObject quest loops. The bot accepts the quest, retains its objective, travels through real navigation, executes the required gameplay, earns ordinary credit and XP, turns in to the actual ender, and selects the next supported work. Acceptance criteria
Verified criteria: 0/10. Execution model: gpt-5.6-sol, high effort. Repositories: Official Package Collection autonomous quest behavior, LyraCore Module quest, combat, loot, inventory, and navigation operations, Seeded durable quest scenarios. | planned | Unassigned | PB-005, PB-006 | Pending |
PB-008Ticket | Recover from blocked travel and stalled quest workTurn typed failure and progress evidence into finite recovery for both autonomous bots and companions. Change approach, defer destinations, invalidate stale targets, and explain waits without erasing the retained objective. Acceptance criteria
Verified criteria: 0/8. Execution model: gpt-6-astra, high effort. Repositories: Official Package Collection travel and recovery behavior, LyraCore Module navigation evidence, Durable blocked-route and stalled-work scenarios. | planned | Unassigned | PB-004, PB-007 | Pending |
S4Workstream | Commands, Transfer, and restartCommands, Transfer, and restart | 0/2 complete | Orchestrator | None | Pending |
PB-009Ticket | Honor durable follow, stay, assist, and target ordersComplete the companion command contract through the existing command transport. Persist follow, stay, assist, and designated-target orders, apply them with party authority, and resume valid solo work when human-led control ends. Acceptance criteria
Verified criteria: 0/8. Execution model: gpt-5.6-sol, high effort. Repositories: Official Package Collection commands and control state, LyraCore Gateway command transport and Module party reads, Durable join and leave scenarios. | planned | Unassigned | PB-004 | Pending |
PB-010Ticket | Preserve one controller through restart and TransferDefine and prove the lifecycle of every new bot row across Character deletion, Module restart, Gateway restart, party changes, and Transfer. Suspend local actions while Transfer is pending, rebuild transient observations on arrival, and prevent stale work from acting. Acceptance criteria
Verified criteria: 0/8. Execution model: gpt-6-astra, high effort. Repositories: Official Package Collection bot row lifecycle, LyraCore Module, Gateway, Realm-core, Transfer, and Group Intent integration, Durable restart and Transfer scenarios. | planned | Unassigned | PB-008, PB-009 | Pending |
S5Workstream | Release evidence and retirementRelease evidence and retirement | 0/2 complete | Orchestrator | None | Pending |
PB-011Ticket | Pass autonomous, companion, and load acceptanceRun the complete automated release suites on the pinned core, Package, imported content, and geometry. Prove seeded autonomous work, the fixed human-led companion route, restart and Transfer behavior, bounded recovery, scheduler fairness, and measured 10, 25, and 100 bot load. Acceptance criteria
Verified criteria: 0/9. Execution model: gpt-6-astra, xhigh effort. Repositories: LyraCore and Official Package Collection acceptance suites, Headless Client protocol and world-transition scenarios, Disposable imported-world load fixture and measurement report. | planned | Unassigned | PB-005, PB-007, PB-008, PB-010 | Pending |
PB-012Ticket | Cut over, observe, and retire the old behaviorComplete the additive state cutover with one durable controller selector, compare record-only decisions, activate a small cohort, gather imported-world and attended client evidence, then delete the displaced behavior source, obsolete tests, and active old state path. Leave old table retirement as its separately reviewed migration when required by repository rules. Acceptance criteria
Verified criteria: 0/10. Imported world observationPending. Required before completion. Attended client observationPending. Required before completion. Execution model: gpt-6-astra, xhigh effort. Repositories: Official Package Collection controller cutover and source retirement, LyraCore additive state migration and architecture checks, Imported-world observation and attended client evidence. | planned | Unassigned | PB-011 | Pending |
| Identifier | Spec and ticket hierarchy | Status | Owner | Blocked by | Pull requests |
|---|---|---|---|---|---|
PBSpec | Rewrite playerbots around durable objectives and typed action outcomesProblem statementThe current playerbots Package can accept an action without proving that the action completed, loses route results, treats attempted combat as quest progress, bypasses the normal cast lifecycle, and retains too little purpose across interruption, restart, and Transfer. Bots can therefore stall, repeat work, choose an obsolete target, or abandon useful intent without explaining why. The current tests also do not prove the Package and core together against real actor operations, imported content, navigation, protocol transitions, and sustained load. SolutionReplace the behavior control flow with one typed Rust decision runner shared by autonomous bots and human-led companions. The runner observes bounded facts, composes supported Strategies, ranks target-bearing candidates deterministically, executes actions through core operations, records typed outcomes, and retains one durable objective with bounded failure memory. Build the rewrite through a pinned real Module and Package fixture, then prove companion behavior, provisioning, seeded quest loops, recovery, commands, restart, Transfer, load, cutover, and attended client behavior before deleting the displaced implementation. User stories
Implementation decisions
Testing decisions
Out of scope
Further notes
| 1/12 complete | Orchestrator | None | Execution report #481 merged |
S1Workstream | Typed action foundation and durable runnerTyped action foundation and durable runner | 1/2 complete | Orchestrator | None | Pending |
PB-001Ticket | Prove typed outcomes in a real pinned fixtureCreate the first tracer through a reproducible pinned Module and Package fixture. Drive attack, interaction, movement, and cast-start through real core operations, return typed outcomes to the Package, and capture the blocked-target and out-of-range-heal failures that the rewrite must fix. Acceptance criteria
Verified criteria: 8/8. The fixture records pinned core and Package commits plus the actual content and geometry input revisions, labels seeded and client-derived provenance separately, records unavailable inputs, and reproduces the same initial state and outcome. Reviewed by Codex orchestrator with independent GPT-6 Astra Spec review.
The fixture loads and runs the real Module with the real Package; it does not substitute a simulated gameplay engine. Reviewed by Codex orchestrator with independent GPT-6 Astra Spec review.
Attack acceptance is distinct from damage and quest progress, and an attempted attack with no hit cannot clear a quest progress clock. Reviewed by Codex orchestrator with independent GPT-6 Astra Spec review.
Movement reports complete, safe partial, blocked, or explicit unknown-coverage evidence with route or waypoint advancement where applicable. Reviewed by Codex orchestrator with independent GPT-6 Astra Spec review.
Interaction and cast-start return typed success, waiting, Refusal, cancellation, and expiry outcomes supported by their owning operations. Reviewed by Codex orchestrator with independent GPT-6 Astra Spec review.
A long bot cast uses the normal core cast lifecycle and completes once without restart on later decision ticks. Reviewed by Codex orchestrator with independent GPT-6 Astra Spec review.
The blocked target and poor-range heal cases have reproducible inputs, observed outcomes, and enough evidence to compare later runner behavior. Reviewed by Codex orchestrator with independent GPT-6 Astra Spec review.
A written extraction comparison chooses the smaller total implementation and records why the full AzerothCore runtime is not used. Reviewed by Codex orchestrator with independent GPT-6 Astra Spec review.
Execution model: gpt-6-astra, high effort. Repositories: LyraCore Module action and navigation contracts, Official Package Collection playerbots fixture, Local durable integration tests. Recorded evidence
Current notes
| complete | PB-001 implementer | None | Core #482 Package #25 |
PB-002Ticket | Run one durable objective through bounded decisionsBuild the shared decision runner around typed facts and outcomes. Retain one objective, arbitrate one foreground action, schedule bots in stable bounded batches, and explain each meaningful choice through the Package's normal entry point. Acceptance criteria
Verified criteria: 0/9. Execution model: gpt-6-astra, high effort. Repositories: Official Package Collection decision and durable state, LyraCore Module scheduling and diagnostics, Pure decision and durable integration tests. Current notes
| implementing | PB-002 implementer | PB-001 | Pending |
S2Workstream | Companions and provisioningCompanions and provisioning | 0/3 complete | Orchestrator | None | Pending |
PB-003Ticket | Make a Priest follow, heal, and resumeComplete the first human-led companion loop. A Priest follows its party leader, retains an injured ally as the heal target, repairs range or line of sight, casts through the real lifecycle, handles interruption, and resumes following. Acceptance criteria
Verified criteria: 0/7. Execution model: gpt-5.6-sol, high effort. Repositories: Official Package Collection companion support behavior, LyraCore Module cast and party fact reads, Durable companion scenarios. Current notes
| planned | Unassigned | PB-002 | Pending |
PB-004Ticket | Complete starter roles, target choice, and crowd controlAdd Warrior tank and Mage damage behavior beside the Priest healer on the shared runner. Make explicit durable roles, vanilla class capabilities, chosen-target assistance, controlled-enemy avoidance, death, rest, and regrouping work through repeated party pulls. Acceptance criteria
Verified criteria: 0/8. Execution model: gpt-5.6-sol, high effort. Repositories: Official Package Collection starter class and role behavior, LyraCore Module combat and capability facts, Durable repeated-pull party scenarios. | planned | Unassigned | PB-003 | Pending |
PB-005Ticket | Provision playable bots without duplicating progressReconcile the supported bot's skills, spells, vanilla talents, equipment, bags, food, potions, ammo, reagents, and bounded supplies on spawn and level-up through real core operations. Make each action idempotent and explain it by provisioning profile and revision. Acceptance criteria
Verified criteria: 0/8. Execution model: gpt-5.6-sol, high effort. Repositories: Official Package Collection provisioning policy, LyraCore Module skill, spell, talent, item, inventory, and equipment operations, Durable idempotency scenarios. | planned | Unassigned | PB-002 | Pending |
S3Workstream | Autonomous questing and recoveryAutonomous questing and recovery | 0/3 complete | Orchestrator | None | Pending |
PB-006Ticket | Admit supported quests from a seeded catalogBuild a versioned quest catalog for the initial Northshire and Elwynn proof from imported relations, objectives, spawns, loot sources, and actual enders. Admit a quest only when every required objective has a supported executor, and retain the chosen objective and destination. Acceptance criteria
Verified criteria: 0/7. Execution model: gpt-5.6-sol, high effort. Repositories: Official Package Collection quest catalog and admission, LyraCore imported quest and world relations, Seeded durable catalog scenarios. Current notes
| planned | Unassigned | PB-002 | Pending |
PB-007Ticket | Finish supported autonomous quest loopsComplete supported kill, collect, talk-only, and simple GameObject quest loops. The bot accepts the quest, retains its objective, travels through real navigation, executes the required gameplay, earns ordinary credit and XP, turns in to the actual ender, and selects the next supported work. Acceptance criteria
Verified criteria: 0/10. Execution model: gpt-5.6-sol, high effort. Repositories: Official Package Collection autonomous quest behavior, LyraCore Module quest, combat, loot, inventory, and navigation operations, Seeded durable quest scenarios. | planned | Unassigned | PB-005, PB-006 | Pending |
PB-008Ticket | Recover from blocked travel and stalled quest workTurn typed failure and progress evidence into finite recovery for both autonomous bots and companions. Change approach, defer destinations, invalidate stale targets, and explain waits without erasing the retained objective. Acceptance criteria
Verified criteria: 0/8. Execution model: gpt-6-astra, high effort. Repositories: Official Package Collection travel and recovery behavior, LyraCore Module navigation evidence, Durable blocked-route and stalled-work scenarios. | planned | Unassigned | PB-004, PB-007 | Pending |
S4Workstream | Commands, Transfer, and restartCommands, Transfer, and restart | 0/2 complete | Orchestrator | None | Pending |
PB-009Ticket | Honor durable follow, stay, assist, and target ordersComplete the companion command contract through the existing command transport. Persist follow, stay, assist, and designated-target orders, apply them with party authority, and resume valid solo work when human-led control ends. Acceptance criteria
Verified criteria: 0/8. Execution model: gpt-5.6-sol, high effort. Repositories: Official Package Collection commands and control state, LyraCore Gateway command transport and Module party reads, Durable join and leave scenarios. | planned | Unassigned | PB-004 | Pending |
PB-010Ticket | Preserve one controller through restart and TransferDefine and prove the lifecycle of every new bot row across Character deletion, Module restart, Gateway restart, party changes, and Transfer. Suspend local actions while Transfer is pending, rebuild transient observations on arrival, and prevent stale work from acting. Acceptance criteria
Verified criteria: 0/8. Execution model: gpt-6-astra, high effort. Repositories: Official Package Collection bot row lifecycle, LyraCore Module, Gateway, Realm-core, Transfer, and Group Intent integration, Durable restart and Transfer scenarios. | planned | Unassigned | PB-008, PB-009 | Pending |
S5Workstream | Release evidence and retirementRelease evidence and retirement | 0/2 complete | Orchestrator | None | Pending |
PB-011Ticket | Pass autonomous, companion, and load acceptanceRun the complete automated release suites on the pinned core, Package, imported content, and geometry. Prove seeded autonomous work, the fixed human-led companion route, restart and Transfer behavior, bounded recovery, scheduler fairness, and measured 10, 25, and 100 bot load. Acceptance criteria
Verified criteria: 0/9. Execution model: gpt-6-astra, xhigh effort. Repositories: LyraCore and Official Package Collection acceptance suites, Headless Client protocol and world-transition scenarios, Disposable imported-world load fixture and measurement report. | planned | Unassigned | PB-005, PB-007, PB-008, PB-010 | Pending |
PB-012Ticket | Cut over, observe, and retire the old behaviorComplete the additive state cutover with one durable controller selector, compare record-only decisions, activate a small cohort, gather imported-world and attended client evidence, then delete the displaced behavior source, obsolete tests, and active old state path. Leave old table retirement as its separately reviewed migration when required by repository rules. Acceptance criteria
Verified criteria: 0/10. Imported world observationPending. Required before completion. Attended client observationPending. Required before completion. Execution model: gpt-6-astra, xhigh effort. Repositories: Official Package Collection controller cutover and source retirement, LyraCore additive state migration and architecture checks, Imported-world observation and attended client evidence. | planned | Unassigned | PB-011 | Pending |