Skip to content

EchoSpire — Class Mechanics, Faction Mechanics, Cards

Status: Point-in-time assessment, 2026-08-27. Not canon and not a plan. Provenance: written by Grok. Its code-level claims were spot-checked on 2026-08-27 and held — Overload is registered universally in CombatHandlerFactory, GildedSyphonPassive is 2 HP / +20% and shares EchoBurnBonusKey with EchoBurnEffect, and ConstructHandler.ResolveAutoTarget is as described. The §5 identity lock and the cover test are the usable parts.

One material error, found 2026-08-27 after publication: this document's inventory of the live card pool ("5 class cards + 1 shared faction card") was read off ProductionRiftContentCatalog.cs, which is a one-shot bootstrap seed, not the live catalogue. The authoritative source is data/content/cards.json: 584 published cards, 80 per class, 476 with effect payloads. The identity critique — the cover test, verb leakage, the §5 identity lock — still stands as design advice. The claim that you are "playtesting a different, worse game than you designed" does not. See docs/tech/ContentPipeline.md.> Path note (2026-08-27 reorganisation): paths cited in this document predate the documentation cleanup. The findings are unchanged; only locations moved. docs/gpt54/cards.mddocs/proposals/card-pack-gpt54/cards.md (and the Wave 1–3 CSVs alongside it) · EVALUATION-architecture-story-kickstarter.mddocs/evaluations/2026-08-27-architecture-story-kickstarter.md · docs/official/gameplay-reference.md and hero-progression-and-difficulty.md are unchanged.

Date: 2026-08-27 Companion to: EVALUATION-architecture-story-kickstarter.md Sources: Core handlers, ProductionRiftContentCatalog.cs (what actually plays), docs/gpt54/cards.md (the designed pack), Wave 1–3 sheets, GDD, gameplay-reference.md

This file is a new document. No other project files were changed.


How to read this

Three layers exist, and they do not agree.

Layer What it is Identity quality
Fantasy GDD + official gameplay reference Strong. Five classes, five Houses, each has a sentence you can say out loud.
Designed cards GPT-5.4 pack: 15 class + 5 faction starters, plus Waves 1–3 on paper Good. Conditional clauses, engines, upgrades. This is the pack you should be implementing.
Live catalog ProductionRiftContentCatalog: 5 class cards + 1 shared faction card Weak. Too many cards are "deal N" or "gain N Block" with the class name glued on.

A stranger playing the live 5-card cores will not feel five classes. They will feel Ironclad-with-a-stack, Silent-with-a-mark, Defect-lite, a summoner with one turret, and a randomizer. The designed 15-card packages would actually teach identity on turn one. The gap between those two is the whole problem.

The cover test (use this on every card): hide the class/House name. If a player cannot tell whose card it is, it is a generic STS verb wearing a costume. Those cards are the ones making everything feel like "something" instead of EchoSpire.


The identity contract (what "more class / more faction" should mean)

Class = how you spend a turn. A class mechanic is a resource you build, a question you ask every turn, and a way you can die to your own kit.

House = why that turn is a crime. A faction mechanic should change the price of the same class turn: what you sacrifice, what you steal, what you refuse to do. It should not be a second class.

Right now classes are trying to be both engines and flavors, and Houses are trying to be both passives and extra classes. That is why Aethari, Catalyst, and Conduit all feel like "hurt yourself for damage," and why Drifter and Syntacta both Scry.

One verb per identity. Everyone else may touch it; only one owner may be it.

Verb Owner Everyone else
Density / Vent / Counterweight Anchor Houses may reward clean Block. Nobody else stacks Density.
Echo-Lock / exact-five execute Drifter Houses may help you see the shot. Nobody else marks for 3×.
Overload / Burnout Conduit Overload as a keyword on other classes was a mistake. Walk it back.
Constructs / Overclock Machinist Salvari may scavenge wreckage. Nobody else deploys a grid.
Mutate / Anomaly Catalyst Aethari may pay HP for power. They do not replace cards with random legendaries.
Stasis (skip a turn) Valerii Others apply slow/Drag. Only Valerii freeze time.
Scry / exact sequence Syntacta (Axiom) Drifter may glance. Conduit should not Scry.
Self-harm for gold/shards/luxury Aethari (Syndicate) Catalyst self-harms to gamble, not to get paid.
Discard is a second hand Annalis (Censors) Salvari may steal one card. They do not archive.
Break your own gear for tempo Salvari Machinist loses constructs to enemies, not on purpose.

If a card violates this table, it is making the game less itself.


1. Class mechanics

Grades are for fantasy + live code + live cards together. Designed pack grades are noted separately when they differ.

Anchor — Density

Fantasy: Immovable industrial tank. Mass is a resource. You keep Block between turns, then Vent it into a crater.

What code does: - DensityHandler: retain Block equal to Density stacks (cap 10). At 10, set GRAV_LOCKED (hand size −1). - GAIN_DENSITY from cards. No automatic "gain Density when you fully block a hit." - Keyword.Counterweight on DealDamageEffect: add current Block to damage without spending Block. This is live on Dense Impact and it is the best Anchor idea in the repo. - Vent, Drag, Event Horizon, Grav-Lock innate (the double-Density panic button) are GDD, not a handler.

Live 5-card core:

Card What it actually does Cover test
Foundry Bulwark 6 Block + 1 Density Pass
Dense Impact 4 + Block (Counterweight) Pass loudly
Holdfast Array 8 Block Fail — any tank
Gravemass Advance 12 damage + 1 Density Weak pass
Sinkline Guard 4 Block + draw Fail

Designed 15-pack is much better: Compression Step, Anchor Spike (Vent), Event-Line Breaker (spend all Block as damage), Brace the Hull (Density if you were clean last turn), Core Compression (Power: Block-from-card → Density).

Strengths - The fantasy is the most photographable class you have. Kickstarter can show this. - Counterweight is a rule-breaker, not a number. Keep it. Make it the class tell. - Density-as-retention is instantly readable and distinct from Ironclad's Barricade (Barricade is a rare Power; Density is the class). - Grav-Locked is a real downside. Classes without a downside all collapse into "stack number, win."

Weaknesses - Live core is 60% generic Block. You will not feel like an Anchor until you draw the two Density cards. - GDD promised Density from absorbing hits. Code only gets Density from cards. That is a worse loop: you play a Density card instead of playing well. - No Vent in the live core. A resource you only gain and never spend is Ironclad Strength with extra steps. - Grav-Locked is applied at 10 and I found no live Vent that clears it. Punishment without a valve is not a trade-off, it is a trap. - Innate Grav-Lock and Event Horizon are paper.

Make it more Anchor, not more tank

  1. Passive (implement Mass Memory): first fully-blocked hit each turn → 1 Density. Now the class rewards the thing the fantasy claims.
  2. Every starter Attack must mention Density, Block, Vent, Drag, or Counterweight. Holdfast Array and Sinkline Guard fail this. Replace or add the clause.
  3. Put one Vent card in the 5-card core. Pressure Vent or a cheaper Anchor Spike. Without a sink, Density is a buff, not a machine.
  4. Counterweight is the poster verb. One more Counterweight card in Wave 1, not five more "gain Block."
  5. Grav-Locked clears when you Vent below 10. Otherwise it is a brick.
  6. Specializations already in hero-progression-and-difficulty.md (Bulwark vs Cataclysm) are the right split. Do not invent a third.

Grade: Fantasy A- · Designed pack A- · Live C+ One-word push: more mass, less shield.


Drifter — Echo-Lock

Fantasy: Phase-sniper. You do not tank. You mark a timeline and fire when the count is exact.

What code does: - ApplyEchoLockEffect caps at 5. - EchoLockHandler triggers on Attack if stacks ≥ 5 (not exactly 5 — the cap makes this equivalent). 3× damage, ignore Block, reset to 0. - No Phase-Slip innate. No Timeline Erasure. No miss/evade as a first-class status — evasion is "gain Block" on cards.

Live 5-card core:

Card What it actually does Cover test
Phase Strike 7 damage + 1 Echo-Lock Pass
Flicker Jab 4 damage twice Fail
Dimensional Slip 6 Block + draw Fail
Echo Mark Apply 2 Echo-Lock Pass
Tempo Burst 12 damage Fail — no lock clause

Designed 15-pack is the class you wanted: Edge Survey, Crossfade (move locks between enemies), Zero-Noise Shot (payoff at exactly 5), Kill-Box Drift, Failsafe Phase (prevention, not Block).

Strengths - Exact-five execute is a puzzle, not a stat. That is rare and good. - Ignore-Block on the execute is the correct rule-break. Defect's Focus doesn't do this; Silent's mark doesn't do this. - Crossfade / "only enemy with Echo-Lock" cards (designed, not live) would make multi-enemy fights a real skill test.

Weaknesses - Live core has two cards that mention Echo-Lock. A Drifter can play a whole fight as a generic attacker. - Fantasy is "evade, do not tank." Live cards grant Block. That teaches the wrong reflex. - 5 stacks at 1–2 per card, 3 energy, 5-card hand: the execute is slow unless Echo Mark is drawn. First-fight feeling will be "I did 7." - GDD "exactly 5" vs overcap: Apply effect caps at 5, so overstacking cannot fail. That removes a skill-expressive fail state the GDD wanted. Fine — but then stop writing "exactly 5" as if it were a trap. It is a threshold. - Scry leaked onto designed Drifter cards (Recon Throughline, Premonition Slice). That is Syntacta's verb.

Make it more Drifter, not more Silent

  1. Evasion is a verb: Phase, not Block. At least two starter skills should prevent or miss a hit. Dimensional Slip should not exist as "6 Block, draw 1."
  2. Every Attack in the core either applies Echo-Lock or pays Echo-Lock. Tempo Burst and Flicker Jab must gain a lock clause or leave the core.
  3. Teach the five-count in the first combat. Echo Mark (2) + Phase Strike (1) + something is not enough if the player doesn't know 5 is the number. Put the number on the card: "Echo-Lock (execute at 5)."
  4. Give them a 0-cost marker. Designed Edge Survey is the right card. Without a 0-cost setup, the class feels starved.
  5. Multi-target is the class's hard mode. One designed card that moves or focuses lock (Crossfade) belongs in the core, not Wave 3.
  6. Do not Scry. If you want "I see the shot," it is Echo-Lock on the enemy, not the draw pile.

Grade: Fantasy A · Designed pack A · Live C One-word push: more aim, less poke.


Conduit — Overload

Fantasy: Living reactor. Play cards you cannot afford. Pay the debt next turn, or Burnout eats your HP.

What code does: - CardResolver: Keyword.Overload lets you play a card into energy deficit; deficit becomes OVERLOAD stacks. - OverloadHandler is registered for every class, not just Conduit. Next turn: subtract stacks from energy; excess is unblockable self-damage. - Designed "Residual Charge" passive (ping an enemy if you ended Overloaded) is not in code. - Emergency Siphon / Resonance Cascade are paper.

Live 5-card core: Arc Discharge (9 dmg), Volt Siphon (6 + energy), Insulation Field (7 Block), Plasma Lash (5 dmg), Flux Tap (4 Block + energy).

None of those five is tagged Overload. The class mechanic is invisible in the live starter.

Designed 15-pack is the real class: Flash Conduit and Faultline Beam (Overload Allowed), Surge Borrow, Dissipation Loop, Grid Spike (bonus if this card caused Overload), Cooling Veil, Cascade Primer.

Strengths - Borrowing the future is the best class fantasy after Density. It is also the most STS-distinct: nobody else makes next turn's energy the resource. - Burnout as unblockable HP is a real fear. Keep it. - AoE-as-identity fits the "living surge protector" lore.

Weaknesses - The live core does not teach Overload. This is the worst live-vs-design gap of the five classes. - Registering Overload globally so faction cards can use it steals the class. If Salvari or Aethari can Overload, Conduit is a keyword, not a person. - Designed pack still leaks Scry (Voltaic Forecast) and self-damage that is Aethari's beat (Emergency Ground, Static Diet). - "Overload Allowed" as a keyword on a 3-cost 20-damage beam is correct. "Gain 1 Overload" as a rider on a normal 1-cost is weaker and easy to ignore. Prefer the former in the core. - No visible debt UI is implied by the handler (just a counter). If the player cannot see the bill, they will not feel clever for paying it.

Make it more Conduit, not more Defect

  1. At least two of the five core cards must have Keyword.Overload. Flash Conduit + Faultline Beam or Terminal Flash. Otherwise the class is "caster with Block."
  2. Unregister Overload as a universal handler. Put it back on Conduit only. If a House wants debt, they get it by being Conduit, not by a faction card.
  3. Show the debt on the HUD. "Next turn: −2 Energy" is the class. Hide it and you have a gotcha.
  4. One cooler and one burner in the core. Dissipation Loop (pay down) + a card that wants you Overloaded. The skill is the toggle, not the nuke.
  5. AoE is Conduit's spatial identity. One all-enemies card in the core (designed Ion Splitter / Coil Feast). Drifter is single-target; Conduit is the room.
  6. No Scry. No gold. Self-damage only as Burnout, not as a Catalyst/Aethari tax.

Grade: Fantasy A · Designed pack A- · Live D+ One-word push: more debt, less spark.


Machinist — Constructs

Fantasy: Combat engineer. You spend early turns building a grid that plays without you. Enemies can shoot the machines. Overclock them and they scream.

What code does: - DeployConstructEffect: named construct, HP, auto-effect, slot. Silent no-op if grid is full. - ConstructHandler: on TurnStarted, each construct fires its auto-effect. Dead ones are removed; destroy count is tracked. - OverclockConstructEffect exists. Innate Overclock / Kill Box are paper. - Designed Grid Discipline (first construct extra HP + immediate trigger) is not in code.

Live 5-card core:

Card What it actually does Cover test
Repair Drone Bay Deploy 6 HP drone, +3 Block/turn Pass
Rivet Burst 8 damage Fail
Field Plating 8 Block Fail
Caliber Shot 12 damage Fail
Diagnostic Pulse 4 Block + draw Fail

Four of five cards do not mention a Construct. You can play a Machinist fight and never build the board.

Designed 15-pack is the class: Sentry Stub, Barrier Pylon, Scraploader, Redirect Fire, Kill Switch Array, Field Repair, Grease the Rails.

Strengths - This is the only class that changes the board. Kickstarter gameplay trailer gold. - Constructs as targetable HP is the right downside. Summoner classes that cannot lose their summons are solitaire. - Kill Switch / Overclock give you a reason to spend the board, not just turtle behind it. - Salvari pairing is the intended love affair (junk turrets). That should stay.

Weaknesses - Live core is a tank with one pet. - Silent fail on full grid is a feel-bad. UI must block the play or bounce the card. - Auto-target AllEnemies currently hits Enemies[0] only (ConstructHandler.ResolveAutoTarget). AoE constructs do not AoE. That will make designed cards lie. - Three-slot cap is correct. The live pool does not pressure the cap because you barely deploy. - Repair as a whole card type is good; it is not in the live five.

Make it more Machinist, not more defender-with-a-drone

  1. Two deploys in the five-card core. Repair Drone Bay + Sentry Stub (damage). One shield machine, one gun. That is the class.
  2. At least one card that cares if a construct exists (designed Rivet Gun Sweep / Guardian Spindle). Generic 8-damage Rivet Burst is a defect.
  3. Redirect Fire or equivalent in the core. "The hit goes to the machine" is the fantasy of standing behind your work.
  4. Fix AllEnemies targeting. Until that is true, do not print "deal to all enemies" on a construct.
  5. Destroyed constructs must feel like loot or pain, not a log line. Salvari will hook this; Machinist itself should at least draw or refund on death of your board so a wipe is a turn, not a brick.
  6. Do not put Drag on Machinist (designed Ram Plate). Drag is Anchor's crowd-control.

Grade: Fantasy A · Designed pack A · Live C- One-word push: more grid, less gun.


Catalyst — Mutation

Fantasy: Reality gambler. You corrupt a reliable card into a one-use Anomaly. Power now, deck thinner forever (this combat).

What code does: - MutateCardEffect: replace a hand card with a random Anomaly from a 5-card pool, force Exhaust. If no index, pick at random. - MutationHandler only counts mutations for an ultimate that is not implemented. - Anomaly pool in catalog: Volatile Surge, Frenzied Strike, Null Collapse, Reactive Shell, Chaos Flood. Five legendaries. That is a slot machine, not a class.

Live 5-card core:

Card What it actually does Cover test
Unstable Slash 7 damage + Mutate Pass
Mutagenic Strike 10 damage Fail
Adaptive Plating 7 Block Fail
Wildcard Compound 5 Block + Mutate Pass
Chaotic Draw Draw 2 Fail

Designed 15-pack is closer: Splice Nerve (mutate, cost −1 this turn), Bloom Error (add Anomaly), Apex Contagion (self-mutates in combat), Contaminate (Volatile keyword), Distill the Risk (sacrifice).

Strengths - The idea of mutating your own deck mid-fight is the most EchoSpire class. It is the Reality Bleed as a verb. - Exhaust-on-Anomaly is the correct tax. Infinite mutate would be a combo bug, not a class. - Restriction matrix (only Aethari + Salvari) is thematically earned. Do not un-ban them to "give Catalyst more Houses." Starvation is the point.

Weaknesses - Random replacement is the lazy version of the fantasy. "I mutated Strike into a 24-damage Exhaust" is luck. "I chose to corrupt this Strike knowing it becomes a specific Anomaly line" is skill. - Five-anomaly pool is too small to feel like a class and too random to plan. 5 outcomes × 5 cards = a gacha. - Live core has two mutate cards and three generics. Same disease as Machinist/Drifter. - Self-damage on designed Catalyst cards (Hazard Sip, Echo Bile, Fracture Feast) collides with Aethari. When the only legal Houses are Aethari and Salvari, Catalyst+Aethari becomes "lose HP twice for two different meters." - Ultimate "mutate whole hand, Anomalies cost 0 and don't Exhaust" is a one-turn god mode. Fine as a rare panic button. Not a personality.

Make it more Catalyst, not more RNG Defect

  1. Mutate should be a known transformation, or a small chosen set. Best version: each card has an authored Anomaly face (Strike → Glass Gospel). Second best: mutate offers 2 Anomalies, pick 1. Worst (current): random from 5.
  2. If you keep a shared Anomaly pool, grow it to ~15 and tag them (burst / draw / block / curse-y) so Splice Nerve can say "Mutate: Attack" instead of "Mutate: whatever."
  3. Two mutate cards in the core, zero generic 10-damage. Mutagenic Strike either mutates or leaves.
  4. Self-damage is Aethari's bill. Catalyst's bill is the card you lost. Hazard Sip (lose 2 HP, draw 2) is a Defect card. Cut it from the identity.
  5. Show the Anomaly you will roll before confirm, even if random. Hidden gacha in a turn-based game feels like the game is laughing.
  6. Instability Bias (first mutate each turn, draw 1) is a good class passive. Implement that before the unnamed ultimate.

Grade: Fantasy A- · Designed pack B+ · Live C One-word push: more choice, less dice.


Class comparison (at a glance)

Class Fantasy Live teaching Distinct vs STS Downside is real? Priority
Anchor A C+ High (Counterweight, Density) Grav-Locked: incomplete Finish Vent + Mass Memory
Drifter A C High (exact-five) Fragility: not taught Replace Block with Phase
Conduit A D+ Highest (debt) Burnout: yes, if they ever Overload Put Overload on the core
Machinist A C- Highest (board) Constructs die: yes, if they exist Two deploys in the five
Catalyst A- C High if authored; low if gacha Exhaust: yes Authored Anomaly faces

STS mapping you should lean away from: - Anchor ≠ Ironclad. Ironclad Strength-scales. You retain Block and hit with the Block. - Drifter ≠ Silent. Silent is poison/discard. You are a sniper with a countdown. - Conduit ≠ Defect. Defect is orbs. You are a loan shark. - Machinist ≠ Defect orbs either. Orbs are not targetable HP. - Catalyst ≠ color-changing. You are destroying the card's identity.


2. Faction (House) mechanics

GDD, GPT pack, and code tell three different stories for several Houses. Until you pick one, cards cannot be "more faction."

Valerii — Stasis Lock

Fantasy: Compliance. Clean turns. Freeze what you cannot permit.

Code passive: If you took no HP damage last turn, gain 3 Block. Turn 1 always grants it.

Code system: StasisHandler is global: Stasis on an enemy skips their action and keeps their Block; Stasis on the player skips your card-play and keeps all Block. This is a hard CC.

Designed cards: Edict of Stillness (apply Stasis), Shield Tax, Iron Decree (bonus vs Stasis/Drag), Checkpoint Siren (reduce incoming 25%), Aegis Anchor (Power: clean-turn Block).

Live faction card: Valerii Shieldwall — 6 Block + 1 Stasis. This one actually passes the cover test.

Strengths - "Did you stay untouched?" is a moral and a mechanic. Matches the House. - Stasis as skip-a-turn is scarier than Weak. Keep it rare. - Clean-turn Block stacks with Anchor in a way that feels like doctrine, not a buff.

Weaknesses - The passive is just Ironclad's "have Block." 3 Block is a number, not an ideology. - Stasis on the player is a hard lock with no stated counterplay. Fine as an enemy mechanic; terrifying if it leaks onto player via events. - Designed Aegis Anchor Power duplicates the passive. Two clean-turn Block engines is the same sentence twice. - Drag is split between Anchor class and Valerii House. Pick: Drag is Valerii crowd-control that Anchor uses well, or Drag is Anchor gravity. I would give Drag to Valerii (compliance, reduced options) and keep Vent/Counterweight on Anchor. Then Valerii Drifter being banned makes more sense: you cannot phase if the House forbids motion.

Make it more Valerii

  1. Passive should be Stasis-flavored, not Block-flavored. Example: "If you took no HP last turn, apply 1 Drag to the enemy that intended to attack you" or "clean turn: the first enemy action this round loses 25%." 3 Block is a class crumb.
  2. Faction cards apply Stasis, punish Stasis, or tax people who moved. Shield Tax is the right joke ("if you already have Block, the House extracts a surplus").
  3. Do not print generic 8-damage attacks in this color.

Grade: Fantasy A- · Passive C · Cards (designed) B+ · Live card B Push: more compliance, less armor.


Syntacta (Axiom) — Calibration Protocol

Fantasy: The universe is an equation. You do not guess. You arrange.

Code passive: At turn start, set SCRY_AVAILABLE=1, SCRY_COUNT=min(2, draw pile). Comment says Scry 2. GPT pack says Scry 1. Headless mode does not reorder — the passive does nothing in sim.

Designed cards: Predictive Branch (Scry 2), Logic Cut (first Attack draws), Recursive Filter (draw 2, bottom-deck 1), Error Budget (Block if you Scryed), Solved Sequence (Power: play exactly 3 cards → draw + Block).

Live faction card: Syntacta Analysis — draw 1 + Logic Stream 2. Cover test: pass, if Logic Stream is a real UI.

Strengths - Scry-as-identity is correct for this House. - "Play exactly 3" (Solved Sequence) is the first card that feels like math, not "draw extra." - Pairs with Drifter (line up the execute) and Conduit (pay the debt on the predicted turn) on paper.

Weaknesses - A passive that only sets a UI flag is not a passive in simulation, and not a feeling if the UI is a skippable overlay. - Scry leaked into Drifter and Conduit designed cards. If everyone Scrys, Syntacta is wallpaper. - Logic Stream vs Scry vs Calibration vs Predictive Branch: four names for "look at the top." Pick one player-facing word. Recommendation: Scry in UI (genre-readable), Calibration only in lore. - No "I already knew" payoff in the live single card beyond draw. The House should reward being right, not looking.

Make it more Syntacta

  1. One name. One UI. Scry. Calibration Protocol = start-of-turn Scry 1 (not 2 — 2 is a class's whole turn).
  2. Payoff for prediction: "If this card is the one you left on top, it costs 0" or "if you play the card you Scryed, draw 1." That is ideology. Extra Scry is not.
  3. Ban Scry on other class packs except a single Drifter glance if you must.
  4. Solved Sequence belongs in the five faction cards, not Wave 2. It is the House in one Power.

Grade: Fantasy A · Passive C (implementation) · Designed cards B+ · Live B- Push: more certainty, less cantrip.


Aethari (Syndicate) — Gilded Syphon / Echo Burn / Chaos Shards

This House currently has three mechanics. That is the problem.

Source Mechanic
GDD / Architecture.md Echo Burn: self-damage for +20% damage
GPT pack recommended passive First HP damage to an enemy each turn → 1 Gold
Code GildedSyphonPassive Every turn: lose 2 HP (unblockable), +20% damage that turn
Code EchoBurnEffect Card: lose X HP, +Y% on next Attack, then consume
Code GAIN_CHAOS_SHARD Third currency. Comment even says "Aethari class mechanic" — it is not a class
Live cards Aethari Ignition (splash + Echo Burn), Echo Flare (lose 2, deal 9, +1 shard), Crystal Veil (Block, extra if you lost HP)

Strengths - Greed as a combat verb is the most distinctive House fantasy. Gold-in-combat (GPT version) would be unique in the genre. - Crystal Veil ("if you lost HP this turn, extra Block") is a good designed-feeling live card. - Splash on Ignition photographs well.

Weaknesses - You cannot have Echo Burn + Gilded Gold + Chaos Shards. Players will not track three Aethari meters plus a class meter. Catalyst+Aethari becomes a spreadsheet of self-harm. - Code passive (2 HP every turn, always) is not a choice. Greed without a purchase is just a bleed. Baroness Lux chooses to over-harvest. The minesweeper Anchor mini-game understood this better than the combat passive. - EchoBurnEffect consumes the bonus on the next Attack (DealDamageEffect removes the key). The passive sets a turn-long 20% via the same key. Those two will fight: first Attack eats the House's whole buff. - Naming: Gilded Syphon vs Echo Burn vs Chaos Shards vs Lux Speculation. Pick two words for players.

Make it more Aethari

Lock this House to one sentence: You may pay life to buy power, and the receipt is gold.

  1. Passive = GPT version, not the code version. First time you deal HP damage each turn, gain 1 Gold. Optional: you may pay 2 HP at turn start for +20% this turn (a toggle, not a tax). Forced 2 HP/turn is Catalyst-adjacent and not luxurious.
  2. Kill Chaos Shards as a combat resource or make them the same thing as Gold (shards are just the diegetic name for in-run currency). A third counter is a design bug.
  3. Faction cards: pay HP, get Gold, get burst, get a bigger next hit. Liquid Dividend (0: lose 2 HP, +1 Energy) is the perfect House cantrip.
  4. Crystal Veil stays — luxury that appears after you cut yourself is very Aethari.
  5. Do not let Catalyst steal this bill. Catalyst mutates cards; Aethari invoices blood.

Grade: Fantasy A · Passive D (too many, and they collide) · Designed cards A- · Live B- Push: more invoice, less bleed.


Annalis (Censors) — Temporal Echo / Echo Recall

Fantasy: The discard pile is the true record. The present is noise.

Code passive: If discard is non-empty, set ECHO_RECALL_AVAILABLE. In headless with RNG, copy a random discard card into hand at +1 cost. (A copy — original stays or is removed? Code Removes from discard then constructs a new Card. So it is a costly retrieve, not a copy. Comments disagree with each other.)

GPT pack passive: End of turn, if discard ≥ 5, add a random copy of one discarded card to hand.

Designed cards: Citation of Ash, Prime Witness (bonus if created/copied), Memorial Veil, Redact, Archive Surge (Power: first recall each turn costs 1 less).

Live extras: Living Data Power (discard ≥ 5 → +1 Energy) — this is a good House engine. Record Eater is an enemy that eats the archive, which is the right villain for this House.

Strengths - Discard-as-canon is the best story-to-system weld in the game. The Censors' crime is the mechanic. - Redact (instead of Exile) is the right word. Keep it. - Living Data + Record Eater shows you already know the House should fight over the discard pile. - Pairs with Drifter (replay setup) and Anchor (replay the fat Block cards).

Weaknesses - GPT vs code vs comments: copy vs retrieve, start vs end of turn, +1 cost vs free, 5-card threshold vs any discard. Pick one. - Random costly copy every turn can loop and also can brick (you get a 3-cost at 4 energy). A choice (UI picker is already signaled) is the House: you decide which record is true. - +1 cost fights Archive Surge (−1 cost). They cancel. One tax, or one discount, not both. - Name pile: Temporal Echo, Echo Recall, Living Data, Citation, Archive, Redact. Player-facing: Recall and Redact. Everything else is flavor text.

Make it more Annalis

  1. Passive: each turn, choose one card in discard. Put it in hand. It costs +1 this turn. Threshold none. Random none. That is Canon: you retrieve a record, and it is slightly harder to use than the original moment.
  2. Redact is the House's violence: remove a record so it cannot return. At least one starter does this.
  3. Copied/created cards should be stamped (keyword Record) so Prime Witness and Living Data can see them without heuristics.
  4. Do not overlap Salvari recursion. Annalis retrieves on purpose, from history. Salvari yanks whatever is on the floor.

Grade: Fantasy A · Passive B- (good idea, three implementations) · Designed cards A- · Live B Push: more archive, less draw-a-card.


Salvari — Scrap Protocol

Fantasy: Jury-rig. Break it, spend the pieces, nobody thanks you.

Code passive: When you exhaust a card, gain 1 Energy (capped at MaxEnergy).

GPT pack passive: When a friendly Block pool is broken or a Construct is destroyed, draw 1.

Designed cards: Cut the Wrong Wire (lose all Block, draw 2), Back-Alley Patch, Lifted Credentials (steal a faction card copy), Loose Panel Ambush (bonus if no Block), Chore List.

Live faction card: Salvari Salvage (not fully quoted above; Wave 1 cards are the better identity: Grease Debt, Breaker's Dividend).

Strengths - "Lose all Block on purpose" is the opposite of Valerii. That opposition is the campaign. - Exhaust→Energy (code) pairs with Catalyst Anomalies (they Exhaust) — the one legal Catalyst House that isn't Aethari. That pairing is juicy: mutate, exhaust, get paid in Energy. - Construct-dies→draw (GPT) pairs with Machinist, the other intended love affair. - Lifted Credentials is the only faction card that steals other Houses. That is the Salvari thesis. It should be famous.

Weaknesses - Code and GPT are different games. Exhaust-energy makes you want Exhaust cards. Block-break-draw makes you want to get hit (or Cut the Wrong Wire). Both are Salvari. Both at once is two Houses. - Energy-on-exhaust is strong with Catalyst and weak with Anchor (who does not Exhaust). House identity should not depend on which class you brought that hard — or it should, but then say so. - Cap at MaxEnergy means you cannot Overload off scrap. Good (Overload is Conduit). Also means the passive does nothing if you are already at 3. Often a dead trigger. - Machinist is restricted from Annalis/Aethari, legal for Salvari — good. Conduit is banned from Salvari — GDD says the wiring would explode. Honor that; don't sneak Overload onto Salvari cards.

Make it more Salvari

Lock the sentence: When something of yours breaks, you get paid.

  1. Passive = GPT version. Block broken or Construct destroyed → draw 1 (or 1 Energy if you insist, not both). Exhaust-on-Anomaly can remain a Catalyst synergy via cards, not the House passive.
  2. Cut the Wrong Wire in the core five. It is the House in one 0-cost.
  3. Lifted Credentials is a Kickstarter card. Players will talk about stealing a Valerii Edict. Print it early.
  4. Do not become "the Exhaust House." That is a keyword tribe, not a culture.

Grade: Fantasy A · Passive B (two versions) · Designed cards A · Live incomplete Push: more break, less keyword-Exhaust.


Faction comparison

House Fantasy Passive as coded Distinct? Collides with Lock to
Valerii A- 3 Block if clean Medium Anchor Block Stasis / Drag / clean-turn control
Syntacta A Scry flag Low if others Scry Drifter, Conduit Scry + "I was right"
Aethari A 2 HP + 20% High, but crowded Catalyst, Conduit Burnout Pay HP, get Gold
Annalis A Recall copy +1 High Salvari recursion Choose a record
Salvari A Exhaust → Energy Medium Catalyst Exhaust, Machinist Break → pay

3. Combinations — where identity is won or lost

Official matrix (keep it; do not "fix" Catalyst's two Houses).

Valerii Syntacta Aethari Annalis Salvari
Anchor Wall of law. Best poster combo. Density + clean-turn. Risk: just "more Block." Needs Vent so it still hits. Legal, underwritten. Should feel like calculated mass, not missing Drag. Legal. Counterweight + self-harm is a brick of gold that bleeds. Easy to make too strong. Impossible persistence. Recall the fat Block cards. This should feel unfair and ghostly. Legal. Break-your-own-shield vs Density is a contradiction — lean into it (vent by shattering).
Drifter Banned. Keep banned. Premeditated execute. The combo the designed pack was written for. Do not let both Scry. Legal. 3× execute × 20% burn is a one-shot machine. Cap this with HP cost, not with weaker lock. Replay the marks. Best "I already killed you last turn" fantasy. Legal. Messy sniper. Weakest on paper; needs a dirty 0-cost mark.
Conduit Legal. Freeze the room, pay the debt on the frozen turn. Good. Legal. Predict the Burnout turn. Scry must stay House-only. Beautiful financial crime. Designed pack's own example. Highest damage, highest self-kill. Needs HUD. Legal. Recall the cooler / recall the beam. Banned. Keep banned.
Machinist Legal. Turrets + Stasis = boring if it only turtles. Need Kill Switch. Legal. Sequence the deploy turn. Fine, not iconic. Banned. Keep banned. Banned. Keep banned. Junkyard. The combo that should be in the trailer. Passive must care about destroyed constructs.
Catalyst Banned. Keep. Banned. Keep. Two self-harm meters. Currently the worst identity collision. Split the bills (mutate vs gold). Banned. Keep. Gacha that pays Energy on Exhaust. Fun, dirty. Make mutate authored so it is not just slots.

If you only polish three combos for Kickstarter: Valerii Anchor, Syntacta Drifter, Salvari Machinist. They are three different games. Aethari Conduit is the fourth if you want a "this might kill me" clip.


4. Cards — the pool as a product

What exists

  • Designed starters: 15 × 5 classes + 5 × 5 Houses = 100 cards, one upgrade each. This is a real game's Act 1.
  • Waves 1–3 (paper): audit claims a full 350 (250 class + 100 House) is specified. Implementation and sim are "remaining work."
  • Live catalog: 5 × 5 class + ~1–3 House + tutorial extras + 5 Anomalies. Most live cards are flatter than their Wave-1 namesakes (Holdfast Array in Wave 1 CSV is "7 Block, if you already have Block gain Density"; live Holdfast Array is "Gain 8 Block").
  • Art: ~290 jpg/json pairs, including generator variants of the same card. Combat currently does not display them (see architecture eval).

What the designed pack does well

  • Conditional clauses ("if you have Block," "if exactly 5 Echo-Lock," "if this caused Overload") are how identity is taught.
  • Faction packs are short and pointed. Five House cards can change a class if they are not 8-damage.
  • Upgrade rule (one axis) is correct. Several starters still violate it; Wave 1 normalized. Follow Wave 1.
  • Role labels in the CSV (Output, Defense, Card flow, Scaling) are how you keep a 50-card class from becoming 50 attacks.

What goes wrong

  1. Live cores are 5 generic verbs. The 15-packs never made it into ProductionRiftContentCatalog except as names/art keys. You are playtesting a different, worse game than you designed.
  2. Cover-test failures are concentrated in the live five. Holdfast Array, Sinkline Guard, Flicker Jab, Tempo Burst, Insulation Field, Rivet Burst, Field Plating, Caliber Shot, Mutagenic Strike, Adaptive Plating, Chaotic Draw. Those eleven cards are why classes feel samey.
  3. Verb leakage. Scry on three classes. Drag on Anchor and Machinist and Valerii. Self-damage on Aethari, Catalyst, Conduit. Exhaust as Salvari and Catalyst. Echo Burn key shared by passive and card.
  4. Powers that reprint passives. Aegis Anchor ≈ Stasis Lock. Don't.
  5. Too many names for one action. Logic Stream / Scry / Calibration / Predictive Branch. Echo Burn / Gilded Syphon / Chaos Shard. Temporal Echo / Echo Recall / Living Data.
  6. Anomalies are a pool of 5 legendaries. That cannot support a class.
  7. Upgrades that add new verbs. GPT already flagged Brace the Hull, Tether Mark, Event-Line Breaker, etc. Do not implement those upgrades as written.
  8. Card names vs art keys vs Wave-1 names are already drifting (Valerii Shieldwall art-keyed to edict-shield; Repair Drone Bay art-keyed to weld-choir). Pick the designed name as canon and stop generating new titles.

Rule for a class card: it is illegal if it still makes sense with the mechanic deleted.

  • Anchor without Density/Block/Vent/Counterweight/Drag → illegal.
  • Drifter without Echo-Lock or Phase → illegal.
  • Conduit without Overload, Burnout, or "if Overloaded" → illegal.
  • Machinist without Construct, Repair, Overclock, or Redirect → illegal.
  • Catalyst without Mutate, Anomaly, or Volatile → illegal.

Apply this to the live five this week. You do not need 50 cards. You need 5 that pass.

Rule for a House card: it is illegal if it would be printed as a class common.

House cards should change the economy of the turn: - Valerii: freeze, tax, punish motion. - Syntacta: look, reorder, payoff for exact play. - Aethari: pay HP, take Gold, take a larger next hit. - Annalis: Recall, Redact, copies. - Salvari: break Block, steal a card, leftover parts.

A House Attack that is "deal 8" is a wasted slot. Iron Decree (deal 8, +4 if frozen) is a House Attack.

Also: 15 class + 5 House is the right split. Do not grow House to 20 by adding more 8-damage. Grow it by making the five more radioactive, then add 5, then 5.

Make cards more something else (pick one, not all)

If the goal is more readable (Kickstarter / first hour): - Numbers on the card, not in a glossary. "Echo-Lock 2/5." "Overload: play unpaid; bill next turn." - Kill synonym piles. - 5-card cores that are the 15-pack's spine, not a different game.

If the goal is more EchoSpire, less STS: - Counterweight, exact-five, energy-debt, targetable constructs, authored mutate, gold-for-blood, Recall, break-your-own-Block. Those eight verbs are the game. Print them on the first ten cards the player sees. - Stop printing "Gain 8 Block" and "Deal 8." STS already won that fight.

If the goal is more skill-expressive: - Catalyst: choose the Anomaly. - Annalis: choose the record. - Syntacta: payoff for the card you left on top. - Drifter: Crossfade / overcap-as-fail or commit to threshold (current). - Conduit: visible debt, one cooler, one burner.

If the goal is more lethal / less pillow-fight: - Live cores are padded with Block+draw. Replace half of those with the class's threat card (Anchor Spike, Zero-Noise Shot, Faultline Beam, Kill Switch, Apex Contagion). - Valerii Stasis should make the next turn a murder, not a nap (Zero-Tolerance Drill).

If the goal is more story-aligned: - House cards should be jobs: Edict, Invoice, Citation, Chore List, Calibration. You already named some of them well. Do not rename them to "Shieldwall" and "Analysis." - Lifted Credentials and Chore List are story. Insulation Field is not.


Write this on a sticky note. If a new card fights it, the card is wrong.

Classes 1. Anchor — keep Block, hit with Block, Vent Density, Grav-Locked is the cap. 2. Drifter — mark to 5, execute, Phase instead of Block. 3. Conduit — unpaid cards, bill next turn, Burnout if you can't pay. Nobody else Overloads. 4. Machinist — 3-slot grid, machines have HP, Overclock/Kill Switch spend them. 5. Catalyst — corrupt a known card into an Anomaly, Exhaust is the tax. Not a HP class.

Houses 1. Valerii — Stasis/Drag/clean-turn control. Not +3 Block. 2. Syntacta — Scry 1 and "I was right." 3. Aethari — pay HP, get Gold (and optional burst). No shards meter. 4. Annalis — each turn, choose a discard to Recall at +1. Redact is the knife. 5. Salvari — when your Block or Construct breaks, you get paid. Steal other Houses' cards.

Shared rules - One player-facing name per verb. - Live 5-card core is a subset of the designed 15, not a parallel set. - Cover test on every common. - Innates/Ultimates wait until the five cores teach the mechanic. They are not the identity; they are garnish.


6. Priority changes (highest leverage first)

  1. Replace the live 5-card cores with the spine of the GPT-5.4 15-packs. Same names as the art keys where possible. This is not new design. It is shipping the design you already paid for.
  2. Delete or clause-up the cover-test failures listed in §4. Eleven cards.
  3. Conduit: two Overload cards in the core. Un-register Overload as a global keyword.
  4. Aethari: one economy. Gold-for-blood. Merge shards into gold. Fix Echo Burn vs passive sharing one counter.
  5. Catalyst: authored Anomaly faces or a 2-pick. Stop the 5-card slot machine.
  6. Machinist: second deploy + one "if you control a Construct" card. Fix AllEnemies.
  7. Anchor: Mass Memory passive + one Vent in the core + Grav-Locked clears on Vent.
  8. Drifter: 0-cost mark + Phase skill; Tempo Burst/Flicker Jab gain lock clauses.
  9. Passives: implement the locked sentences in §5. Stop running three versions of Annalis and two of Salvari.
  10. Then, and only then, add Wave 1. Do not add 75 cards onto a core that does not teach the class.

7. Direct answers

Are the class mechanics good? As fantasies, yes — better than most STS-likes. As live loops, only Density and Echo-Lock even exist, and the cards do not force you to use them. Conduit's mechanic is implemented and then omitted from its own starter. Machinist and Catalyst are one-card classes.

Are the faction mechanics good? As fantasies, yes, and they map onto the story. As code, they are the weaker half: +3 Block, a Scry flag, a forced bleed, a confused Recall, and Exhaust-energy. The designed House packs are the version that would make 15+5 feel like a different game per combo.

Are the cards good? The designed pack is a B+/A- foundation. The live catalog is a C- tutorial deck that hides the designed pack's personality. Waves 1–3 on paper are fine as a content roadmap and dangerous as a production plan until the cores pass the cover test.

How do I make them more class-related? Illegal-if-the-mechanic-can-be-deleted. Five cores, five verbs, no generic 8s.

How do I make them more faction-related? Houses change the price of the class turn, not the class. One verb per House. Five radioactive cards, not twenty mild ones.

How do I make them more "something"? If you have to pick one something: more EchoSpire, less STS. That means printing Counterweight, exact-five, energy-debt, the grid, authored mutate, gold-for-blood, Recall, and break-your-own-Block on the first screen the player sees — and starving everything else until those eight are felt.


Appendix — evidence

Claim Where
Density retains Block, Grav-Locked at 10 src/EchoSpire.Core/Combat/Handlers/DensityHandler.cs
Echo-Lock ≥5 → 3× ignore Block EchoLockHandler.cs, cap in ApplyEchoLockEffect.cs
Overload is global, not Conduit-only CombatHandlerFactory.cs comments + CardResolver.cs
Mutation = random Anomaly + Exhaust MutateCardEffect.cs
Constructs; AllEnemies hits Enemies[0] ConstructHandler.ResolveAutoTarget
Valerii passive = +3 Block if clean StasisLockPassive.cs
Syntacta passive = Scry flag 2 CalibrationProtocolPassive.cs
Aethari passive = −2 HP and +20% GildedSyphonPassive.cs
Echo Burn consumed on next Attack DealDamageEffect.cs
Chaos Shards mislabeled as class GainChaosShardsEffect.cs
Annalis Recall copy +1 cost TemporalEchoPassive.cs
Salvari Exhaust → Energy ScrapProtocolPassive.cs
Designed 15+5 packs docs/gpt54/cards.md
Wave 1 clauses vs live flattening CSV vs ProductionRiftContentCatalog.cs (Holdfast Array, Rivet Burst, etc.)
Legal matrix docs/official/gameplay-reference.md
Specialization flavors docs/official/hero-progression-and-difficulty.md