Repository navigation
fix(protocol): handle Benilla requests and report missing gameplay - #643
Conversation
Code review: Standards and SpecReviewed at StandardsHard violations
Smells (judgement calls, P3)
SpecChecked and sound
(c) Implemented but looks wrong
(a) Missing or partial
(b) Not in the description (scope creep, P3) The following changes are reasonable, but the description should list them or they should move to their own PRs (see the Standards P1):
Some legacy rationale comments were deleted (the split anti-dupe note, Summary. Standards: 3 hard findings and 7 smells. The worst is P1: the PR bundles many unrelated changes into one commit. Spec: 8 findings and no blocker. The worst is P2: routine client requests (sitting, action bar toggles, tutorials) now post "not available" System Messages to chat. Generated by Claude Code |
|
Resolved the confirmed findings and rebased onto the Gateway Store family refactor in
The independent adversarial reviews also found defects outside the original comment. The fixes preserve accepted trade terms, refuse conflicting hand equipment, validate the exact innkeeper in the Module, and parse GM ticket framing without decompressing untrusted attachments. Scheduled crafts consume all reagents atomically before charging power. Automatic grants refresh changed trade offers and clear both acceptances; failed craft restoration sends the restored quantities. Regressions reproduced both partial reagent loss and a stale offer quantity before the fixes. I retained one PR because the requested change is complete compatibility with this pinned protocol target, including its verification and missing-system inventory. Benilla is the third-party dependency named and pinned in the compatibility notes. It introduces no new gameplay concept. The remaining naming and file-organization suggestions do not identify a behavior defect; the rebase uses the new Store family structure. The channel Relay's Gateway bindings expose only the primary-key accessor, so the Module's caster index is unavailable there. The scan runs only after the channel/caster gates. The exact movement comparison checks whether the stored projection still describes the same serialized values. Validation and the final independent Standards and Spec review results are recorded in the PR description. No production Realm was touched. |
|
Fixed the The unchanged random-property healing test expected 240 health but observed 242. A forced five-second pause reproduced the exact failure: scheduled regeneration raised health from 100 to 102 before the spell correctly added 140. The test now stops the creature tick in its private fixture before measuring the heal. The separate regeneration test still runs its tick, and production code is unchanged. The forced-delay reproduction passes with the fix. All four random-property durable tests, Module test Clippy and formatting passed after removing the temporary instrumentation. An independent adversarial review found no issue with the isolation or remaining coverage. |
|
Fixed the durable mount test failure in The untrained-mount refusal test compared power across two reads while scheduled rage decay was running. A temporary five-second delay reproduced the CI result exactly: power was already 950 instead of 1000 before The test now stops the creature tick in its private Module instance before taking the snapshots. The same delayed reproduction passes. All refusal, item, vitals and aura assertions remain. The temporary delay and logging are removed. All three durable mount tests, Clippy, formatting and an independent adversarial review passed. Production behavior is unchanged. |
What and why
Benilla exposed missing request handlers and 1.12.1 packet layouts that LyraCore's protocol dependency encodes differently. Some requests were silently ignored, and bag operations, channel cancellation and confirmation dialogs did not reach the existing gameplay correctly.
This change fixes those paths and adds Benilla as a pinned, independent Headless Client. All 277 requests in that revision now have a dispatch pattern or a reviewed raw route. Valid requests for missing gameplay return an explicit Refusal or System Message while in world. Automatic stand-state, action-bar and tutorial requests announce each missing feature once per World Session. The compatibility notes list the unavailable systems and the limits of this inventory.
What you verified
cargo test --locked --workspace --exclude lyracore-package-delta --features lyracore-module/debug_reducers: 4,376 passed.a6121982.mainatf09dafbdmigrated a private instance without clearing it. Character rows survived, and the appended XP field was readable.The unchanged package-delta quest tests still have two fixture failures because
WHOLE_QUEST_ROWomitsquest_type. Those failures are documented in the compatibility notes and are outside this change.What you did NOT verify
No graphical build-5875 client run. The request inventory does not certify every existing handler or all 346 outgoing opcode rows. Battlegrounds, pet stables, GM tickets and the other systems listed in the compatibility notes remain unavailable.
Risk
The change reaches Gateway packet handling and Module inventory and channel rules.
XpEvent.rested_bonusis appended with a zero default, andAuragains a caster index. Gateway bindings are regenerated. The binder Gateway Verb now carries the innkeeper guid, so the Gateway and Module must update together. A later deployment must republish every Shard for the schema change.Built with GPT-6 Astra in the Codex harness through T3 Code.