Spine split increment 3 (enemy phase) + offensive-parity de-risking findings#10
Merged
Conversation
#3/landing-order findings Spine split increment 3: extract the enemy-config phase (5/5a/5b — setup_enemy + config enemy-mod bucket + player-applied elemental exposure) into inject_enemy with explicit (session, build, options, enemy_tier, resolved_config) params. Pure grouping, zero behavior change. Also records two de-risking findings in the offensive-parity roadmap: - Fix #3 (Essence Drain): mod-dump confirms phantom hit (ChaosDamageMin/Max 62/115) and DoT (ChaosDot 179.56) come from separate stats → clean hit-only suppression possible; blocked on DealNoChaos gating both → needs pob2-oracle to confirm vendor mechanism. - Landing-order: Fix #2 (DistanceRamp) alone regresses the gate (flicker false-hit flips to a miss); must bundle with #1/#5/#8. Only #3 is standalone metric-improving. Verified: cargo test -p pobr-build = 272 passed/0 failed; fmt + clippy clean; parity zero-drift (def25 84.2 / defcore 91.7 / off 76.2 / dot 54.1 @5%).
This was referenced Jun 28, 2026
ackness
added a commit
that referenced
this pull request
Jul 17, 2026
- Baselines re-pinned to the post-#10 dashboard: offensive 76->78/80 @5% and @10% (deadeye AverageDamage+TotalDPS enter the band), dot 31->34 @5% / 34->36 @10% (deadeye ignite chain follows the Point Blank fix; smith/titan dot back in band after the local-adds leak removal). - POBR_ONLY_BUILD=<substring> filter for the ninja dashboard so POBR_DBG_* channels stay readable on a single build (never set in CI). - POBR_DBG_BASES now also dumps generic-bucket MORE contributions (POBR_POOL_MORE), symmetric with the existing INC dump.
ackness
added a commit
that referenced
this pull request
Jul 17, 2026
ackness
added a commit
that referenced
this pull request
Jul 18, 2026
What changed - item_rolled_defence: when the base item is known, all three defence components (armour/evasion/energy shield) are recomputed as round((base + localFlat) * (1 + localInc/100) * (1 + quality/100)) (Item.lua:1994-1996), instead of ES only. Display-line fallback remains for unknown bases. Why - titan Armour 0.985x: three 0.5.4b-buffed Runeforged bases whose item-text 'Armour:' lines lag the base DB (gloves 96 vs 101, helmet 192 vs 284, boots 58 vs 100; oracle ArmourOn<Slot> pins each; helmet recompute 169*1.40*1.20 = 284 exact). Same family as the earlier ES-only fix (c705fe4). Note the #10 'shield 1736 vs 1725' hypothesis was wrong - oracle armourData.Armour is exactly 1736. Validation - titan Armour 39545.68 vs 39546 (0.99x -> 1.00x), ES/ESRecoveryCap 55 exact, Phys/Fire/Cold/Light/Chaos MaxHit exact. Per-item round() also lands pathfinder Evasion 0.98x -> 1.00x and twister DeflectChance 0.97x -> 1.00x exact. No cell regresses fleet-wide.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Third spine-split increment + de-risking findings for the offensive-parity work.
Spine split — extract enemy phase (refactor, behavior-preserving)
Extract the enemy-config phase (5/5a/5b —
setup_enemy+ config enemy-mod bucket + player-applied elemental exposure) intoinject_enemywith explicit(session, build, options, enemy_tier, resolved_config)params. Pure grouping, zero behavior change. 8 injection phases now extracted across PR #8/#9/#10.Roadmap — record two de-risking findings (docs)
POBR_DBG_ALLMODSdump confirms the phantom hit (ChaosDamageMin/Max62/115) and the golden-exact DoT (ChaosDot179.56) come from separate stats → a clean hit-only suppression is possible. Blocked on PoBR'sDealNoChaosgating both hit+DoT → needstools/pob2-oracleto confirm the vendor mechanism before implementing.Verification
cargo fmt --check— cleancargo clippy -p pobr-build --all-targets -- -D warnings— cleancargo test -p pobr-build— 272 passed / 0 failed