Strategic candidates — Shiv

0 candidate(s) · built 2026-08-25 16:52 UTC

A candidate is a comparison that survived sample size, shared feasible alternatives, pre-decision balance, precision, false-discovery-rate control, matching sensitivity, and patch compatibility. Surviving all of that makes it worth inspecting. It does not make it a proven cause, and nothing here feeds coaching output.

Matching health

DesignCohortsSample okFeasibleBalancedRateMedian NTotal NMedian spanWorst covariate
old phase (0-8 min bands)3,1361001002424%749,404261sdecision_time_s ×28, existing_spend ×25, team_soul_advantage ×16
fine phase (9 strata)3,2581031032423%739,239237sdecision_time_s ×25, existing_spend ×25, team_soul_advantage ×21
continuous +/-30s9,26199778%991,09030sdecision_time_s ×1, team_soul_advantage ×1
continuous +/-60s6,89723231252%752,36460steam_soul_advantage ×6, existing_spend ×2, net_worth ×2
continuous +/-90s5,72443431842%643,83289steam_soul_advantage ×9, decision_time_s ×7, existing_spend ×5

Judged before any outcome was inspected. A design that balances everything by shrinking every cohort below the sample gate has not improved comparability — both numbers are shown so the trade is visible. The old 0–8 minute band failed on decision_time_s; under time matching that covariate stops being the binding problem.

Evidence funnel

StageReachedLost hereRejected
observed270——
sample sufficient1987272
feasible shared1980—
balanced999999
precise584141
survives fdr05858
survives sensitivity00—
patch compatible00—
strategic candidate00—

Every candidate comparison is one cohort paired with one outcome metric. Each stage is a strict subset of the one above it, so a rejection lands in exactly one bucket and the counts subtract cleanly. A system that showed only its survivors could not tell you whether it found nothing or is quietly broken at one stage.

Strategic candidates

No strategic candidates
Nothing in the current dataset has survived every gate. That is a legitimate result and the expected one at this sample size — the funnel above shows exactly where the evidence was lost. No coaching recommendation is derived from anything on this page.

Balance eras

EraDatesVersionsMatchesDecisionsOpened by
h19-v6614Jul 03 – Jul 096614–6624 (4)30491first snapshot
h19-v6627Jul 09 – Jul 286627–6640 (11)4096,654item:Scourge value 2.6->2.5
h19-v6642Jul 28 – Jul 286642–6642 (1)00item:Frenzy css_class None->healing; item:Frenzy icon None->https://assets-bucket.deadlock
h19-v6643Jul 28 → now6643–6679 (20)2,95447,679item:Spiritual Overflow value 15->13; item:Spiritual Overflow value 32->30

A new era opens at any version carrying a change material to this hero: its own stats, its abilities, or an item its players actually buy. Materiality is relative to the research question on purpose — treating every numeric wobble across all 251 items as material would put each version in its own era and leave nothing poolable at all. 0 hydrated matches have no era (their client version was never snapshotted) and are excluded from era-controlled analysis rather than guessed at.

Patch and version history

Client versions known807 (latest 6684)
Versions snapshotted for this hero36
Patch notes indexed31 — labels only, not the diff source
Asset changes detected108
Material to this hero84 (hero 1, abilities 0, items 83)

Version-to-time comes from /v1/assets/steam-info/all, which carries a version_datetime per client version. Asset endpoints accept client_version and honour it. Hero stats live under starting_stats as {value, display_stat_name} pairs; there is no explicit dash-slot field, so dash charges are read from starting_stats.stamina.value. Abilities have no endpoint of their own — hero.items maps slot names to class names which resolve through /v1/assets/items/{class_name}.

Recent material changes

VersionKindEntityFieldChangeDirection
6643itemSpiritual Overflowvalue32 → 30decreased
6643itemSpiritual Overflowvalue15 → 13decreased
6642heroShivstamina_regen_per_second0.18181 → 0.166667decreased nerf
6642itemWeighted Shotsvalue40 → 30decreased
6642itemDecayscaling_stats[1]ETechPower → ETechRangechanged
6642itemDecayscaling_stats[0]ETechRange → ETechPowerchanged
6642itemCursed Relicvalue-14 → -25decreased
6642itemCursed Relictooltip_sectioninnate → activechanged
6642itemEthereal Shiftvalue35.0 → 37.0increased
6642itemScourgevalue17 → 20increased
6642itemScourgeusage_flags[0]None → ConditionallyAppliedchanged
6642itemScourgetooltip_sectioninnate → activechanged
6642itemScourgetooltip_is_importantFalse → Truechanged
6642itemScourgevalue2.5 → 2.3decreased
6642itemSpiritual OverflowvalueNone → 10changed
6642itemSpiritual Overflowusage_flags[0]None → IntrinsicallyProvidedInAbilitychanged
6642itemSpiritual Overflowtooltip_sectionNone → passivechanged
6642itemSpiritual Overflowtooltip_is_importantNone → Truechanged
6642itemSpiritual Overflowtooltip_is_elevatedNone → Falsechanged
6642itemSpiritual Overflowsubclass_nameNone → BonusSpiritLifesteal_scale_functionchanged
6642itemSpiritual Overflowspecific_stat_scale_typeNone → EHealingOutputchanged
6642itemSpiritual Overflowclass_nameNone → scale_function_single_statchanged
6642itemSpiritual Overflowprovided_property_typeNone → MODIFIER_VALUE_TECH_LIFESTEALchanged
6642itemSpiritual OverflowprefixNone → {s:sign}changed
6642itemSpiritual Overflowpostvalue_labelNone → Spirit Lifestealchanged
6642itemSpiritual OverflowpostfixNone → %changed
6642itemSpiritual OverflowlabelNone → Spirit Lifestealchanged
6642itemSpiritual OverflowiconNone → https://assets-bucket.deadlock-api.com/assets-api-res/icons/heal.svgchanged
6642itemSpiritual Overflowcss_classNone → healingchanged
6642itemRestorative Locketstat_scale0.32 → 0.5increased

Direction is neutral. A buff/nerf label appears only where the direction of benefit is unambiguous — more health is better, a lower cost is better. A larger radius or a longer duration can be either, so those carry no label rather than a guessed one.

Methodology versions

balance floor versionfloors-v1
balance versionbalance-v1
choice set versionchoiceset-v1
era versionera-v1
estimator versionestimator-v2
extraction versionext-v1
fdr versionfdr-v1
matching versionmatching-v2
outcome versionoutcome-v1
patch mapping versionpatchmap-v1
phase strata versionphase-v2
research schema versionschema-v2
sensitivity versionsens-v3
state versionstate-v1
time matching versiontimematch-v1
funnel versionfunnel-v1

A change to any of these invalidates results derived under the old one. Conclusions are never served under a methodology they were not computed with.

Matching specification time-cal60s_nw15_adv5k_spend30_rank3_era · gates: cohort ≥ 50, per choice ≥ 15, per metric ≥ 10 · sensitivity grid sens-v3 (12 specifications, fixed before the sweep ran).

← Dataset diagnostics · Match timeline library