Files
healer-man/docs/WEAPON_PARITY_FOLLOWUP_2026-10-05.md
2026-10-06 22:25:34 -04:00

9.5 KiB
Raw Permalink Blame History

Weapon parity follow-up — 2026-10-05

This pass connects source-bound Disarm contributions for players and generated party members, adds verified native RoM unarmed inputs, imports intrinsic enemy offhand flags, and records actual hand results between route checkpoints. The level cap remains 80. Loot and readiness policies are unchanged.

Runtime ownership

  • enemyDisarmRuntime.ts selects source spell weapon channels and projects equipped-weapon aura and damage contributions. combatStore.ts exposes effectiveActorAuras; the player and party paths consume that view. Passive weapon auras stay in authoritative storage and resume when Disarm expires. Nonpassive aura storage and other usable hands remain intact. Feral forms retain their weapon-independent behavior. Original gear and nonweapon stats remain available to attribute/AP derivation.
  • romNativeCombatAmount.ts supplies the verified native main-hand profile: source base Level * 2, native speed 30 (3 seconds), residual nonweapon damage, and the tracked physical damage multiplier. Main-hand-consuming direct and periodic formulas accept this profile; ranged fields remain independent. Player and party schedulers consume the actor's native snapshot. See the native source audit for source hashes, neutral unmodeled rate channels, custom-gear limits, and cast prerequisites.
  • enemyAutomaticOffhand.ts reads the pinned creature flags_extra 0x800. Five generated templates carry the flag; their capability survives encounter lifecycle resets and their hand clocks rearm on engagement. Native enemies, summons, and character defenders stay outside this creature contract. The item-class AUTO predicate is available, but equipment mappings are not bound: the backup tables do not match the pinned world source. See the offhand audit.
  • combatEvents.ts retains attackHand and extraAttackSourceSpellId on actual supported enemy swing results. Ordinary main-hand, offhand, and queued Thrash results are distinguishable; unrelated special melee abilities and periodic ticks do not receive invented hand labels. Player, party, summon, and online recipient event writers share the same source classifier.
  • scripts/weapon-evidence-recorder.cjs subscribes read-only to committed combat state. It copies events, weapon state changes, and global source utility aura changes, including party debuffs. It audits event-ID gaps and capacity loss. This is a committed-state recorder, not a guarantee that uncommitted transient state is visible. The existing bounded HUD history remains unchanged.

Source limits

The WoW source contract does not invent native item eligibility or unknown ability channels. Native custom equipment provenance, seven unmodeled weapon rate channels, broader proc-specific formulas, and unsourced cast prerequisites remain explicit boundaries. The source Thrash fallback cadence remains simulator policy. The mismatched equipment backup is evidence for an unresolved import requirement, not an equipment mapping used by combat.

Validation

The final 17-file focused run passes 102 Vitest checks, covering the source helpers, actual player and party Disarm paths, aura projection, weapon AP/DPS contributions, native direct/periodic resolution, enemy hands/queues, and event subscriptions. The selected files are enemyWeaponEvents.integration, enemyExtraAttacks.integration, enemyAutomaticOffhand, enemyAutomaticOffhand.integration, enemyDisarmRuntime, enemyDisarmRuntime.integration, enemyDisarmApplication.integration, enemyWeaponDebuffs, playerDisarmContributions.integration, romNativeDisarm, romNativeCombatAmount.integration, romNativeDamage, romNativePeriodicDamage, romNativeCombatResolution.integration, partyAbilityAi, combatAuras, and combatEventsSubscription, all under src/game with .test.ts suffixes.

npm run test:ready-five passes 7 Vitest and 20 Python checks. Avatar validation passes all 56 checks. The recorder's Node tests pass 3 checks; syntax and the transformed wrapper's --prepare-only check pass. No full suite or all-class balance sweep was run. The non-Ready shaman/feral fixtures are isolated source exception checks; native active-five diagnostics do not promote readiness.

The final npm run build passes the standard prebuild, 8GB TypeScript, Vite, precompression and release-bundle verification. Existing chunk-size and mixed static/dynamic-import warnings remain. Review found and corrected a disabled offhand/ranged default-speed AP contribution before this final build; its new regression preserves independent scripted AP while removing that speed term.

The corrected build freeze is artifacts/weapon-parity-followup-2026-10-05/corrected-build-20261006-035420760: build SHA-256 fcdde36bbd63ac711453a57562a38d7a1aa7ff2e8cafd4acb0e65a7a4dc27efe. It reuses the unchanged isolated content copy from frozen-20261006-034444784/content, manifest SHA-256 ac0fa2a867ba0a495c172de2b89532d69b32d56d032482b26020ce2d189f074b. That original freeze copied and verified all 27,571 referenced objects (6,489,632,021 bytes; 21,597 logical files). The corrected freeze rechecked both content manifests and hashed the complete source/copied build before and after; it records the original object-verification evidence rather than claiming to rehash every unchanged object a second time. The live wrapper separately verifies the objects actually served.

The first-build route playtest-artifacts/stockade-weapon-utilities/20261006-034834217 cleared Bazil Thredd (1716) and recorded 740 post-baseline events, 44 source main-hand results, one offhand result, positive hand timers, party Disarm and Infected Wound. The recorder had zero gaps, errors, or capacity loss. This is historical first-build evidence: the corrected build receives a separate final run below. Source/helper diagnostics are recorded in the linked worker audits.

Corrected-build Cellblock Rush

playtest-artifacts/stockade-weapon-utilities/20261006-035524177 completes the one-boss variant with seeded Hamhock, entry 1717, live actor creature-79098, run ID b40105fb-bf4e-435b-9c08-00d3f9feda75. The native results screenshot shows Hamhock defeated, 1/1 bosses and 03:15.1. This is Cellblock Rush completion, not a five-boss Stockade campaign. The route uses a normal offline Discipline Priest and four Ready NPCs. The UI-created profile receives isolated pre-entry level-30 progression preparation; gameplay uses ordinary controls and read-only telemetry, with no combat state seeding or forced utility casts.

The recorder retains 842 consecutive post-baseline events (IDs 9–850), with zero gaps, sampling errors or retention loss. It identifies 73 actual source NPC main-hand results, 528 combined weapon-state observations, and source Bloodlust, Disarm and Infected Wound aura snapshots (15, 3 and 49 respectively). Targets include player-party NPCs and source enemies. No offhand or queued Thrash result is observed in this seeded route. Those paths have deterministic runtime tests; the earlier Bazil first-build route additionally contains one blocked offhand result. Absence here does not establish that the capability never operates. Coverage describes committed post-baseline state, not every uncommitted instant. The route has no player/party hand-tagged events, so it does not directly prove outgoing Disarm suppression; focused player/party runtime tests establish that consumer behavior separately.

The run record verifies unchanged complete build/content fingerprints and manifest-backed objects actually loaded. Page/route console error arrays are empty; the outer browser log contains only a favicon 404. Root inspected the final-build roster, entrance/equipment, mid-route and results screenshots: player and several party bodies and staff/shield/weapon silhouettes are visible. Clustering limits a complete per-companion equipment audit. The results UI is readable and agrees with the seeded boss identity.

The independent audit rehashes all 2,124 loaded content object paths (77,019,550 bytes), all 185 observed asset URLs (69 frozen build files and 116 manifest-backed logical assets), and all seven critical loaded build chunks, with zero failures. It verifies backing immutable source bytes; complete HTTP response body digests were not captured for every asset request.

Evidence:

The final npm run release:check passes, including untracked files. Separate game/vault diffs and vault text hygiene are reviewed; no stage, commit or deploy. The root audit is retained with the run. The task began October 5 and completed October 6 local time. Source equipment mappings and native limits above remain open; this pass makes no loot, level-cap or readiness promotion.