8.7 KiB
Guardian formation and Paragon source audit, 2026-10-05
The original read-only audit below bounded the Vanguard integration. The implementation follow-up records the resulting runtime contracts; the selected five CoA builds remain Needs Testing.
Action acquisition
The August 12, 2026 Vol'Jin builder capture has 161 Guardian nodes and no node for Tower Formation 800317 or Guardian Line Formation 803130. Footman's Calling 4019, The Green Tower 30060, Banner Boy 29798, and Press the Line! 6817 reference them in descriptions; references are not learn-spell grants.
The separate July 25 class-spell metadata in src/game/coaLiveData.generated.json
marks both spells class 18 with sourceIds: [6]. scripts/sync-ascension-coa.mjs
maps source 6 to the trainer flag when building ranked progression chains.
These two spells are rankless, have no progression chain, and are absent from
the promoted action catalog. Tower's level is 4 with Talent/tab 7 metadata;
Line's level is 20 with no advancement type. This is evidence for a trainer
channel, but the current import path needs explicit rankless trainer support.
There is no captured named trainer, exact unlock row, or current tree grant.
Formation effects
| Spell | Cost / duration | Self effects | Integration requirement |
|---|---|---|---|
| Tower 800317 | 20 Energy / indefinite | Aura 87, base 0; aura 142, +50; aura 79, -10 | Resolve linked +10% block from 803431 effect 3; implement shield armor contribution separately from generic resistance; retain -10% outgoing damage. |
| Line 803130 | 20 Energy / indefinite | Aura 232, -25, misc 7; aura 79, 0; aura 31, +15 | Implement the captioned control-duration reduction and movement; apply the conditional Vanguard mitigation through a real owned form. |
Both have no cast time or individual recovery. Their categories are 708 and 709; these do not establish mutual exclusion or toggle-off behavior. The source does not provide a cancellation/grant relationship between them. Tower's armor caption modifies the shield contribution, so applying +50% total armor or physical resistance would be incorrect. Generic aura conversion also leaves Line's aura 232 unsupported.
Footman's Calling 4019/92105 establishes -10% self damage while Tower or Line is
active. A future runtime check must require the caster's own live self aura:
coa:800317:effect:0:aura:87 or coa:803130:effect:0:aura:232. Spell 92105 has no
trigger grant. Referenced 807728 is a separate tank-stance payload, not a spell
granted by that passive; its threat value cannot be assumed active merely from
learning Footman's Calling. Do not substitute Tower Stance 803907, visual
803941, or Line SLS 803151/803690 for the acquisition of the two real actions.
Paragon reconciliation
The August live node 29969/706514 describes stacks from blocking, a ten-stack Heavy Blow to Paragon Smash transformation, and three stacks from Heavy Blow. The block trigger is limited to once per 0.5 seconds, and stacks last 10 seconds. Smash deals 144 + 37% AP to nearby enemies and adds +10% block; blocking reduces Brace's cooldown by two seconds, for five blocks or ten seconds.
The linked stack spell 706516 has inconsistent text fields. Its primary field 170 still describes the older Tower/Bastion transformation. Field 187 instead describes Heavy Blow to Paragon Smash, matching the live node. Archive children 802629 (damage) and 803432 (buff) support the Smash damage and block/cooldown payload. This narrows the discrepancy to the stale primary description rather than proving the old transformation is the intended current behavior. The live node and compatible child payload should guide the next implementation; keep the conflicting primary text as evidence.
The active sync prefers localized field 170 and falls back to field 187 only when 170 is empty. Its promoted primary-only description therefore loses this useful secondary text. No gameplay behavior changed in this audit.
Offline provenance
- Builder and tree:
data/coa-reference/cache/archive-5078f9ac2254/generation-fa16afec-8f11-4eab-98ab-b6441304fab7/,raw/talents/coa-builder-voljin.html,raw/talents/_fetch.json, anddata/talents/coa/Guardian.json. The fetch record gives capture time2026-08-12T21:02:51+00:00and SHA-25641a6ccd393c0648ae2b1fdc34fe94955d4fd13c0cd59040ad3860e64a8ff6c7a. - Patch-T raw spell shards: under the same archive's
spell-base/shards/. Stack spell 706516 is in00700000-00709999.jsonl.gz, not a 7-million-ID shard. Formation/helper rows use00803000-00803999.jsonl.gz; 802629 uses00802000-00802999.jsonl.gz; 807728 uses00807000-00807999.jsonl.gz.spell-base/Spell.colinfo.jsonmaps the positional fields. - July global snapshot:
data/coa-reference/snapshots/e86031775dfac7e336361087c50ca23a0a7a86c36a760c85803bee4bcdb89351/reference.json.
All of the effect and text reconciliation above used cached/local records. It does not require recrawling the class database or downloading the client.
Implementation follow-up, 2026-10-05
coaAbilityCatalog.ts now imports only the two evidenced rankless Guardian
trainer actions through a class/source/level/DBC-identity allowlist. Tower is
learned at level 4 and Line at level 20 under HealerMan's existing automatic
level-learning model. A named trainer interaction is not reconstructed. Only
Guardian records were regenerated in the runtime and UI catalogs.
coaGuardianFormationRuntime.ts projects each cast into one permanent,
caster-owned self aura. Tower adds 10 percentage points of block, 50% of the
actual equipped shield item's armor, and -10% outgoing damage. Line adds 15%
movement speed and reduces roots by 25%: aura 232's misc value 7 identifies
Root, so the caption's broader control wording is not applied to every control
type. Footman's Calling adds -10% taken damage only while either own live form
is active. Projection recomputes current talent/equipment contributions without
requiring a recast; borrowed, expired and other-class markers do not qualify.
No numerical threat multiplier is inferred. A shared exclusive group makes
switching replace the old form as an explicit authored game policy; the source
categories do not prove this behavior. Toggle-off remains unimplemented.
coaGuardianParagonRuntime.ts uses the August live node and compatible secondary
text. Actual Heavy Blow successes add three stacks and actual blocks add one,
with a 500 ms block-stack internal cooldown and 10-second stack lifetime.
At ten stacks, 707138 represents readiness only. Heavy Blow retains its action
identity, talent gate, cost and cooldown while projecting to an 8-yard self
area strike for 144 + 37% AP. SpellRadius.dbc row 14 in the local patch-S
extraction confirms the 8-yard radius. Only a successful Smash creates 803432's
10-second +10-point block buff with five block charges. Each actual block while
that buff is live consumes one charge and reduces an active Brace cooldown by
two seconds for the player or companion authority and its mirrored member.
Readiness itself grants no defensive bonus. Stack reset/consumption is not
encoded in the inspected source, so no reset rule is invented; a later qualifying
event can establish readiness again after its prior window expires.
The player executor, companion executor/scorer, benchmark selector and HUD use
the same cast projection. Player and party movement consume the owned Line
modifier. Vanguard companions prepare Tower through normal learned-action,
readiness, target and resource checks, preserving an already chosen Line.
Actual cast/block integration fixtures and the source conflicts above remain
separate from balance certification. Live results and required checks are
recorded in docs/COA_FIRST_PARTY_MILESTONE.md and PLAYTEST_NOTES.md.
Companion Smash selection is explicitly authored: priority 7,500 for Vanguard tanks at or above 55% health, fallback preference 40 otherwise. Unmasked public scorer checks choose ready Smash over routine Ballad when healthy, retain real mitigation when injured, and preserve urgent taunt/interrupt scores. The exact source optimal rotation remains unknown. Focused Guardian/helper/party checks, Ready-five compatibility and the production build pass; see the milestone for complete validation scope and the bounded live evidence.
Actual browser entry also exposed generic free preparation of both raw forms and loss of a saved Heavy Blow talent binding. Final regressions cover the source fixes: generic precombat effect selection excludes the two real forms, while character initialization validates saved nonpassive class actions against a separate allowlist before rejecting unlearned talent slots. These fixes retain normal resource payment, the authored exclusive group and the original default bar order. The selected five remain Needs Testing.