# Correctness work plan

Review snapshot: `4235b6feda425a82e76f1af741fa61e87dcabcc8`.

## Evidence and version boundary

The [Blizzard Hunter/Druid deep dive](https://news.blizzard.com/en-us/article/24301515/world-of-warcraft-forever-class-deep-dives-hunter-and-druid), published September 30, 2026, was read in full. Its 147 list points were classified individually: 3 navigation/headings and 144 feature points. The local audit distinguishes broad behavior from exact rank, coefficient and script validation. Captured client tables currently extend to build `1.60.1.70009`.

The article explicitly places Shifting Power, Improved Shifting Power and the Shredding Attacks row move in **next week's build**, not the current beta. They must not silently replace current talent strings or Tiger's Fury. Their exact active spell IDs, mana costs, talent ranks and migration need the new client data.

The current client and the article disagree on Savage Strikes, Faerie Fire's cost/cooldown, and part of the Feral talent naming/layout. These are recorded contradictions, not permission to combine both versions' benefits.

Recent evidence also identifies armor-debuff stacking, instant Shaman swing handling and Paladin hit-family defects. Private messages, identifying references, logs and attachments remain outside the repository.

## 1. Corrections with direct reproductions

These are the first implementation batch. A row is not complete merely because its source has been found.

**Fixed locally, not yet published:**

- Armor-debuff exclusivity, first-dodge Mongoose activation, full-damage Improved Moonfire, separate fire/frost trap timers and exact Thick Hide rank coefficients.
- Instant Lightning Bolt/Chain Lightning swing preservation. Partial/full casts still reset swings and prohibit melee; Nature's Swiftness and five-stack Lightning Bolt preserve them. Classic behavior and Chain Lightning's Maelstrom non-consumption are retained.
- Lacerate uses existing stacks. The first direct hit does zero damage but adds the bleed; five-stack refresh and avoided-hit cost/refund controls pass.
- Furor caps combined carryover/regeneration by rank, excludes Bear time and clears/restarts saved history on Bear entry/exit. Rank and iteration-reset controls pass.
- Endurance Training includes Armor; Intimidation includes spell crit and is consumed by a successful Lightning Breath, not a miss. Aimed Shot rank one reports level 20.
- Direct ordinary-bomb casts are rejected in Cat, Bear and Moonkin without silently cancelling the form. Explicit unshift permits them; Sapper's five-yard restriction remains.
- A further resource regression found free, avoided Clearcasting Lacerates granting 12 Rage. Forever refunds now use the paid cost; free/reduced/full costs and Classic controls pass. This is a cost-accounting correction, not a new rage-generation formula.

- Divine Precision uses its sourced spell family, including melee Holy Strike, rather than the entire Holy school. All three ranks, unrelated Holy abilities and an independent dodge control pass.
- Holy Strike scales player SP by the rank's weapon percentage. Target-side Holy damage retains its full coefficient. All eight ranks pass separate player/target controls. This follows observed beta behavior, not an assertion about the intended final formula; Seal of Command's already-correct split is unchanged.
- Cat/Bear weapons now use equipped weapon DPS at one/2.5-second intervals, including flat stones and bonus weapon DPS, without changing AP scaling. Form changes and weapon swaps preserve that representation before swap-effect callbacks. The equipped weapon's relative damage range is retained as an explicit, unverified variance convention; the mean DPS is sourced. Classic paw weapons remain unchanged.
- Forever form attacks support Elemental Stone, Shadow Oil and Frost Oil instead of silently excluding them. Existing proc-rate assumptions are not newly verified. Flat stones are retained once when ordinary weapons are reconstructed/swapped as well.
- Wrack amplifies owned Corruption/Agony only, not Doom or drains; cancellation removes the bonus. Its Forever acquisition metadata is level 40. Improved Imp now scales full Firebolt damage, including SP, once; its separate timing dummy remains unresolved.

- Crusader now returns its sourced 75–125 Health on a proc, including refreshes, and its Strength formula cannot exceed 100 below level 60. Lifestealing returns the actual damage dealt as Health. Existing proc-rate assumptions and healing-threat/multiplier questions remain open; health returns are not outgoing damage.
- Ret Aura uses its sourced rank-five base 30 in Forever, preserving Classic's 20. This does not supply the unresolved provider-SP coefficient.
- Blood Pact has no Improved Imp bonus in Forever. Enabled owned Imps and separately selected external coverage provide one non-stacking 54-Stamina effect. Dismissal/sacrifice, multiple providers, party isolation, reset ordering and initial Health controls pass. The Forever web control offers one rank; Classic retains its improved option.
- Independent confirmation guards now compare complete iteration-seed intervals, not just distinct starting seeds. Overlapping historical research pools retain their raw results but receive a conservative error aggregation and an explicit independence flag instead of unjustified standard-error reduction.

- Striking enchants (+1/+2/+3/+4/+5) now follow the equipped weapon in Forever. Cat/Bear form changes and swaps retain the correct bonus once. A swap weapon's enchant no longer leaks into the initial ordinary weapon; all five amounts and differing swap enchants pass. Classic's existing handling is retained.
- Vindication now supplies its missing target AP reduction: 68/136/204 at the supported level 60, from [child 440667](https://www.wowhead.com/forever/spell=440667/vindication) and the rank/3 talent formula. It uses strongest-only AP reduction, restores on expiry and reduces controlled incoming weapon damage without changing the owner AP bonus. This max-level amount is not a validated low-level formula.
- Consecrated Ground now limits owned Holy damage amplification to four stationary targets, rather than every enemy. Physical damage and post-expiry damage are unchanged. Encounter order represents the first four entrants; movement and changing entry order remain outside this representation.
- Current Hot Streak talent text now shows the sourced/runtime 20-second duration. Historical 15-second video metadata is preserved; projectile/consumption-order questions remain open. Vindication's current level-60 talent display also matches its corrected values.

- Owned Power Infusion now resolves the selected friendly player for all three Priest specs. An omitted target remains self; explicit unassigned/invalid targets disable the owned cooldown. Its cost and cooldown stay on the Priest, while one non-stacking 20% magic-damage/healing effect belongs to the recipient. Existing external PI blocks a paid overlapping cast. Native targeting/cost/overlap controls and the raid/standalone assignment type check pass.
- Light's Vigil's three enemy ranks are now selectable (40/50/60; 730/1000/1340 Mana; 1.5-second cast, six-second shared cooldown, 30-second mark). One owned enemy mark can trigger its sourced damage child at 0.429 SP and refund 75% of the paid mark cost. The consuming landed Holy Shock starts no new cooldown; an existing Shock cooldown is still required to finish first. Target changes, one consumption, rank metadata, refund and cooldown controls pass. Damage children reject manual casts. The party-healing branch remains unsupported, and linked server-script/hit sequencing still needs a level-40+ check.
- Native Paladin tree metadata now reports 17 Retribution talents, matching the current tree and proto after Crusade's removal. This last-tree count correction does not reorder current allocations.

- Defender's Grip Stabilizer now provides its outside-city 8% Block buff for 15 seconds, with a six-minute item cooldown. Client item category 1141 shares the existing stat-trinket timer; a defensive label does not create a separate use category. Native amount, expiry, cooldown/category and Classic exclusion controls pass. Stronghold/City doubling remains outside the raid representation.
- Spell pushback now uses the **casting spell's** resistance rather than the incoming attack's resistance. Both reversed cases were reproduced: protected casts were delayed, while protected attackers made unprotected casts immune. Controlled own/incoming resistance checks pass. This fixes the shared casting engine; it does not invent a new pushback timing formula.
- Barkskin now registers for Cat and Moonkin as well as Bear in Forever. Its level-44 metadata, free Nature-school 1.5-second base GCD, 15-second physical-only mitigation and full pushback protection follow the captured client. Instant use no longer resets melee swings. Form, mitigation, immunity, expiry and swing controls pass; it remains a survival cooldown, not a promoted damage action.

- Generic all-school shields now consume a finite pool on actual damage delivery, after mitigation, rather than merely logging generated capacity. Direct/periodic hits, partial/full depletion, overwrite, expiry and iteration cleanup pass. Native/raw/web accounting separates generated capacity, damage absorbed and unused capacity; only absorbed damage contributes to healing throughput. Overlapping pools currently use application order as an explicit, unverified convention; shield threat remains unresolved.
- Templar's Bulwark was reproduced depleting during damage-only calculations. It now uses the finite pool on actual delivery, preserving its cost, cooldown, duration, Forbearance and maximum-Health amount. Dry probes leave it intact; a controlled over-pool hit removes only the unabsorbed remainder from Health. Native absorption/damage accounting and the web type check pass.

- The captured Savage Strikes crit modifier now covers its complete registered melee family, including Wing Clip and Lacerating Strikes. Raptor Strike, Mongoose Bite and Strider Kick retain exactly one bonus. Ranged/trap exclusions and both talent ranks pass. The article's newer damage redesign remains a version conflict; no damage bonus was invented or combined with the captured crit bonus.
- Forever's pet-family configuration now gives Demoralizing Screech to Carrion Birds, not Bats. Active ability ranks replace teaching IDs. The rank-four attack deals single-target damage and applies the sourced 204-AP reduction to the nearby stationary enemy cluster for 30 seconds, costing 20 Focus on its 10-second cooldown. Family, rank, primary-versus-area effects and expiry checks pass. Lower-rank AP rounding, linked-area avoidance and the reported strongest-provider stacking rule remain qualified; missing Sonic Blast/Mine! abilities are not marked complete.

- Manual cast/channel/multidot/multishield APL actions now enforce the existing player-castable spell flag. Imported actions could previously invoke internal/proc spells hidden by the UI. Read-only proc references and legitimate engine-triggered casting remain supported; all four action paths and active-spell controls pass.
- Invalid multidot actions without a DoT and multishield actions on self-only shields no longer index empty arrays and crash. They produce validation warnings instead; ordinary self-shield casts remain available.
- Expose Prey now requires the casting Hunter's own active mark, not permanent external support or another Hunter's mark. Hunter's Mark is registered from captured learned ranks with mana/GCD/duration and one-owned-target handling. Two-Hunter ownership, legal attack masks, and native melee-Hunter default cast/refresh checks pass. Survival/Pet-Melee source presets now maintain the owned mark instead of taking free external support. Captured rank three has more RAP than rank four; those literal values are disclosed as a source anomaly, not extrapolated or optimized.

Forty-five correction groups have passing focused checks. Instant Poison now includes its sourced 0.005 AP direct-hit term under Forever; the AP-delta regression passes with Classic unchanged. Deadly's per-tick/per-stack placement remains unresolved. The additional groups correct Hunter's Careful Aim/Lethal Attacks talent decoding, invalid legacy healer/Elemental presets and menu labels, and obsolete metadata/landing-page regression contracts. Five focused metadata checks and TypeScript pass; the Holy allocation is legal, not a validated healing optimum. Principal tests are `tools/forever_bench/evidence_corrections_test.go`, `TestShamanCastSwingResetAndInstantExemption`, `TestShamanConsecutiveHardcastsDoNotWeaveMelee`, `TestFuror*`, `TestThickHideFollowsFormAndDefense`, `TestForeverBossArmorShred`, `TestForeverRageRefundUsesPaidCost`, `TestFlatWeaponStonesSurviveWeaponConstruction` and `TestClassicFormWeaponsRemainFixed`. Blood Pact's native controls and the web type check pass. The seed guard and historical-summary regression pass. The weapon-enchant, Vindication and Consecrated Ground reproductions pass, as do current metadata assertions and the web type check. Other follow-ups below remain pending. Published requests/results have not been replaced.

| Work | Defect and required correction | Completion evidence |
|---|---|---|
| Armor debuff exclusivity | Forever Curse of Recklessness and Faerie Fire currently subtract armor separately. Put the supported non-stacking reductions in one strongest-effect category; preserve Classic stacking and other curse effects. Do not extend the rule to every debuff without evidence. | Both activation orders, removal/replacement, remaining armor and Classic control. |
| Instant Lightning Bolt/Chain Lightning | Client attribute `0x02000000` says instant casts do not reset the swing timer. Keep normal hard-cast restrictions, including partially reduced casts; exempt genuinely zero-time casts. Maelstrom still affects Lightning Bolt only. | Instant/partial/full casts, Nature's Swiftness and the five-stack case. |
| Divine Precision | School-only hit does not reach melee-resolved Holy Strike. Apply the sourced hit modifier to its actual spell family, not every Holy spell. | Holy Strike and affected spells gain hit; unrelated Holy abilities and dodge rules do not. |
| Holy Strike scaling | Current beta observations and public corroboration indicate player SP is multiplied by the rank's weapon percentage, while target-side Holy damage remains separate. Reproduce both terms and record the beta evidence status before changing them. | Fixed-weapon, player-SP and target-bonus controls; retain the already-correct Seal of Command split. |
| Cat/Bear weapon DPS | Fixed Classic paw damage ignores the equipped weapon. Rebase form weapons at their 1/2.5-second intervals, preserving AP contribution and legal weapon bonuses. | Two different weapon DPS/speeds, Cat/Bear, form changes, bonus damage and swaps. Record any unverified damage-range convention. |
| Lacerate direct damage | Direct damage counts the stack being added. Use **existing** stacks: zero before the first application, then 10% weapon damage per existing stack. | Stack sequence, miss/refund and five-stack refresh; bleed behavior remains separate. |
| Furor | Carryover cap is applied in the wrong place, Bear time is counted, and entering Bear does not invalidate saved Energy. | Partial/full ranks, elapsed humanoid time, Bear entry/exit and iteration reset. |
| Rage cost refunds | An avoided free Clearcasting Lacerate grants an undiscounted 12-Rage refund. Use actual paid cost in Forever, as for Energy/Focus refunds. | Free/reduced/full cost controls, a real avoided Clearcasting cast and unchanged Classic control; generation formulas untouched. |
| Thick Hide | `0.67 × points` gives 1.34/2.01 rather than sourced 1.33/2.00. | All three ranks and dynamic Defense in each applicable form. |
| Improved Moonfire | Damage bonus affects base damage but not the SP component. | Direct/tick damage with zero and nonzero SP; no duplicate modifier. |
| Hunter trap timers | Fire and frost traps currently receive one shared timer. Separate the two categories in Forever. | Fire-fire exclusion, fire-frost independence and Classic shared timer. |
| Mongoose Bite | An inactive eligibility aura cannot observe the first dodge that activates it. | First dodge activates the window; misses and non-dodges do not; expiry/consumption still work. |
| Hunter pet talents | Endurance Training omits Armor. Intimidation's crit bonus omits spell-resolved pet attacks. | Sourced rank curve; Health/Armor and physical/spell attack controls; one successful attack consumes Intimidation. |
| Aimed Shot learning | Rank one reports required level zero rather than 20. | Learning boundary and preservation of higher ranks and current shot timing. |
| Form-safe consumes | Ordinary bombs must be rejected through direct APL casts, not only automatic cooldown selection. Flat weapon stones currently skip animal-form weapons. | Direct casts in/out of form, potions/Tea preservation and sourced stone contribution without duplication. |

## 2. Existing source-ready follow-ups

These remain tracked by their existing IDs in [the canonical register](uncertainties.md). They are not new questions or evidence of completed implementation.

| Register ID | Implementation work |
|---|---|
| DATA-006 | **Fixed locally:** Crusader health return/Strength clamp and Lifestealing health return. Proc-rate, healing multiplier and threat questions remain separate. |
| DATA-008 | **Partly fixed locally:** Defender's outside-city Block use, cooldown and shared category pass. Finite absorb infrastructure now passes; Adaptive Combat Assistant still needs its script sequence confirmed; its early-expiration trigger and Totem of the Storm's proc normalization need evidence. |
| SCEN-006 | **Fixed locally:** obsolete Improved Imp bonus removed; owned Imp lifetime, external coverage, party isolation and one-provider accounting pass. |
| SCEN-013 | **Fixed locally:** selected-player plumbing, Priest-owned mana/cooldown, healing/damage and one-provider coverage pass. Explicit unassigned disables owned PI; missing target defaults to self. |
| SCEN-014 | **Fixed locally:** current rank fixtures, protobuf declaration order, legal selectable presets, the review-portal redirect and current fallback menus pass five targeted checks. The Hunter decode swap found by this check also requires affected-result refresh. Unsupported healing-model coverage remains separate. |
| SCEN-016 | **Fixed locally:** full-interval guards and historical confidence qualification pass. Generated historical summaries still require reconciliation; no raw evidence is deleted. |
| HUN-009 | **Partly fixed locally:** Carrion-only assignment, active rank lookup and AP reduction pass. Keep linked-area avoidance, lower-level rounding and higher-level strongest-provider confirmation qualified. |
| MAG-004 | **Fixed locally:** current duration text is 20 seconds. Projectile/charge order remains open. |
| WL-003 | **Fixed locally:** sourced Corruption/Agony family, owner isolation, cancellation and level-40 metadata pass. |
| WL-008 | **Fixed locally:** full Firebolt damage and SP controls pass at all three talent ranks. |
| PAL-008 | **Fixed locally:** level-60 target AP reduction, strongest-effect rules, incoming-damage and owner-gain controls pass. Lower-level evaluation remains qualified. |
| PAL-013 | **Fixed locally:** ranked enemy branch, one owned enemy mark, refund and linked Shock cooldown controls pass. Party healing is unsupported; the linked dummy/proc sequence retains a launch test. |
| PAL-009 | **Fixed locally:** owned Holy damage is amplified on four stationary targets, not all enemies; no physical or mitigation bonus. |
| PAL-010 | **Fixed locally:** Ret Aura base amount. Provider-SP coefficients for Ret Aura/Thorns remain open. |
| DRU-002 / DRU-004 / DRU-007 / HUN-008 | Covered by the first batch above; close only after passing reproductions. |
| SCEN-005 | **Partly fixed locally:** finite all-school pools and generated/absorbed/unused native/web accounting pass. Bulwark's damage-probe depletion is corrected. Application-order overlap is a disclosed convention, not a verified game rule; shielding threat remains unresolved. |
| DATA-010 / DATA-011 | Raw-haste representation and item-picker EP are separate import/valuation work, not changes to combat haste or generic crit in this batch. |

### Raid support comparison

- Compare **Flametongue Totem + Grace of Air** against **Windfury Totem** on a representative melee profile, with fixed gear, talents/APL, consumes and encounter. Flametongue currently has no active implementation or selection in the simulator, so a comparison would otherwise be false. Captured rank-four summon 16387 alone does not establish the totem's buff/proc rules. Join the learned ranks, creature/child buff and proc data. The [September 24 official notes](https://us.forums.blizzard.com/en/wow/t/wow-forever-beta-development-notes-updated-september-24/2360696) explicitly exclude Flametongue from stacking with Windfury Totem or Flametongue Weapon, and remove its lingering/stacked buff. Thus the comparison is Flametongue + Grace against Windfury, not both damage totems together. Captured proc 16389 is a dummy effect, so its 1363 base-point field alone does not establish a damage formula or SP coefficient. No twisting or duplicate Air totems. Preserve complete requests/results and matched seeds; a win on one build is not a universal melee default.

## 3. Coverage and source reconciliation

The [post-fix coverage ledger](../artifacts/question_review/correctness_followup.json) accounts for all 144 feature points and 20 recent findings. Article dispositions are 52 already correct, 11 corrected, 15 metadata checked, 2 registered-scope checks completed, 37 known coverage gaps, 13 partial-coverage points, 4 partial models, 3 source conflicts, 2 numeric source gaps, 4 announced-not-shipped points and 1 stationary-scenario exclusion. This is complete review coverage, not complete spellbook/pet support.

- **Hunter pets:** Carrion-only Screech and its active rank/AP metadata are corrected locally; many other unique abilities remain missing. Blizzard explicitly assigns Screech only to Carrion Birds. Active ranks 24423/24577/24578/24579 are distinct from teaching records; the client separates single-target damage from the nearby AP debuff. A [current beta report](https://us.forums.blizzard.com/en/wow/t/hunter-general-feedback/2357584) reports non-stacking with Demoralizing Shout, but is not a controlled level-60 test. Inventory every supported family against active teaching/ability records, including Fox, basic attacks and movement abilities. Add damage/mitigation abilities where ranks, costs, cooldowns and scaling are sourced; retain linked-effect hit and low-level rounding qualifications.
- **Summon Hawk:** one refreshing DoT is not two concurrent guardians. Resolve the guardian's damage/stat/proc behavior and behavior at the two-Hawk cap before presenting it as complete. Existing Pet/Melee Hunter results retain this limitation.
- **Savage Strikes:** the article says melee damage; client effect 696821 says family-specific crit chance. The registered crit family is corrected locally and its targeted checks pass. Keep the version conflict explicit pending newer client evidence; no concurrent damage modifier was added.
- **Moonfury / Vengeance:** captured effect 694153 explicitly limits Moonfury to Arcane/Nature, matching the current school modifier. Vengeance effect 694004 matches the registered Wrath/Starfire/Moonfire/Insect Swarm/Hurricane family; it is not a physical-attack crit multiplier. Raw family matches also include Roots and Starfall records: Roots is a separate damage-spell coverage gap, while NPC/obsolete Starfall records are not automatically learnable (20687 has no captured player skill-line teaching row). No current registered-family discrepancy found; retain the broader article wording as a source qualification.
- **Hunter's Mark / Expose Prey:** owner-specific auras and learned casts are implemented locally; external/foreign marks do not grant Expose Prey. Native and source web melee-Hunter presets cast before combat and refresh at five seconds remaining, with external Mark disabled. All 16 generated melee-Hunter ranking rotations now maintain their own Mark, and refreshed requests disable the external provider; equipment and talents are unchanged. The captured rank-three 98-RAP versus rank-four 71-RAP anomaly remains a source question; no alternative-rank optimization is claimed.
- **Rapid Killing:** implement target-death-triggered behavior only with an encounter that actually has qualifying deaths. It cannot improve the current no-adds reference before its final event.
- **Druid Omen:** Wrath non-consumption is already correct. Blizzard confirms doubled proc chance in Moonkin, but the base server chance is not established by the client's 100%-chance wrapper. Do not emulate doubling by halving its ICD.
- **Form weapon bonuses:** striking enchant reconstruction now passes, as do stones and bonus DPS. This does not establish every conditional enchant, ranged scope, proc-rate or swap interaction.
- **Druid damage talent scopes:** join Vengeance/Moonfury family and school masks before interpreting “all damaging spells” as every physical ability.
- **Barkskin:** Cat/Moonkin/Bear registration, sourced timing, mitigation and pushback protection now pass locally. It is level 44 and therefore cannot be validated in the level-20/30 beta. No automatic damage-rotation promotion is included.
- **Swipe and reactive auras:** AP scaling for Swipe and caster-SP scaling for Thorns/Ret Aura are confirmed intentions, not numerical coefficients. Find script/test evidence; retain explicit source gaps if none exists.
- **New Feral tree:** stage Shifting Power, Improved Shifting Power, the row move and naming/field migration after the next build. Reconcile Wolfshead and Tier interactions rather than inventing them.
- **Utility/healer coverage:** list missing abilities separately from errors in supported damage/tank paths. Doors, travel and pet Dash/Dive do not alter a stationary uptime benchmark. Missing healing/taunt/movement support is not silently claimed to exist.
- **Other recent reports:** ranged racial crit suppression, Revelation exploits, Mage low-level Spirit curves and temporary pet-stat inheritance remain qualified evidence leads, not automatic patches to generic crit or level-60 resources. Several reported Seal and racial interactions are already correctly implemented.

## 4. Integration and closure

1. Save pre-correction requests/results and establish the affected profile list from each actual change.
2. Keep equipment, talents/APLs, pet choices, ordinary MP5 and encounter/support constraints fixed except necessary legality/correctness changes. No new general optimization campaign.
3. Run focused mechanics checks as each implementation changes; then refresh affected baseline/Tier-off/+10%/+50% evidence and exact native/web defaults. Do not relabel old numbers as corrected.
4. Verify native/WASM and browser profile replay, resource/damage/threat/survival accounting and relevant icon/picker paths.
5. Reconcile canonical uncertainty entries with verified fixes and partial answers, preserving stable IDs, contradictions and remaining prerequisites. This is the single outstanding-questions list; this document is the implementation sequence.
6. Build, commit and publish once the corrected evidence and controls are ready; verify live content before calling the release complete.

The [correctness review](correctness_release.md) records the regenerated 804 scenarios, 201 exact defaults and 68 matched tank checks. The separate native/WASM/browser release gate and live deployment verification determine publication readiness.
