# 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`, and `data/talents/coa/Guardian.json`. The fetch record gives capture time `2026-08-12T21:02:51+00:00` and SHA-256 `41a6ccd393c0648ae2b1fdc34fe94955d4fd13c0cd59040ad3860e64a8ff6c7a`. - Patch-T raw spell shards: under the same archive's `spell-base/shards/`. Stack spell 706516 is in `00700000-00709999.jsonl.gz`, not a 7-million-ID shard. Formation/helper rows use `00803000-00803999.jsonl.gz`; 802629 uses `00802000-00802999.jsonl.gz`; 807728 uses `00807000-00807999.jsonl.gz`. `spell-base/Spell.colinfo.json` maps 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.