Corruption and Reclamation
This page owns the pressure loop between demonic corruption and the player's reclamation work. It is also the owner-doc for the Tier 1 Territory-level pressure channels and the Tier 2 Province-level contributory pressure aggregates that feed the emergence ladder authored in ../lore/adr/ad-0008-pressure-to-front-emergence-scope-state-machine.md.
Corruption
Corruption is not one number. It surfaces as place condition, creature
pressure, ward failure, taint spread, unsafe routes, and unusable land. The
authoritative Tier 1 inputs are the existing TerritoryData.Corruption
field plus three additional per-Territory pressure channels declared in
the Wave 5a runtime-backing wave (gate-activity, ward-failure, route-
safety). The exact runtime field names for the three additional channels
are deferred to that wave per
ad-0008;
this doc commits that they exist as a primitive class alongside
TerritoryData.Corruption, and that they are read by the Province-level
aggregates documented in "Pressure Channels" below. (See lore exposure:
lh-game1-world-hooks.md —
Wound-fields active row, gate scarring/taint fields row.)
Pressure Channels
Pressure resolves through two tiers committed in ad-0008:
Tier 1 — Territory-level inputs. Four per-Territory inputs:
TerritoryData.Corruption (existing host field), gate-activity input,
ward-failure input, and route-safety input. The latter three are
authored in
legacy/v1/examples/valenar/Content/territories/channels.secs and
matched in legacy/v1/examples/valenar/Generated/Territories/ under
the Wave 5a runtime-backing wave (exact field names deferred per
ad-0008 lines 62-66).
Tier 2 — Province-level contributory aggregates. Three new contributory channels on the Province scope:
ProvinceThreatPressure— aggregates Corruption and gate-activity inputs across the Province's Territories.ProvinceWardIntegrity— aggregates ward-failure inputs across the Province's Territories.ProvinceRouteSafety— aggregates route-safety inputs across the Province's Territories and the Province's Routes.
All three Province-level channels resolve through the committed 6-phase
channel pipeline documented in .claude/rules/secs-concepts.md (base
-> additive -> multiplicative -> HardOverride -> clamp ->
return). They do NOT resolve through a per-tick aggregator system
that sums Territory inputs and compares the sum against a magic-
constant threshold; that pattern is explicitly rejected by ad-0008
because it violates the "Never tune parameters as a substitute for
fixing architecture" tenet. Thresholds for raising downstream emergence
states live as clamp values and source data, not as architectural
decision constants.
The labor primitive in gd-labor-and-capacity.md
mirrors this two-tier shape: Settlement-scalar LaborShortageSignal /
CriticalShortageSignal and a Province-scope Contributed
ProvinceLaborShortage aggregate. The intent is one architectural
pattern across pressure families so the dynamic-quest-pressure model
and the Crown-scale strategic surface read every pressure family
through one resolution mechanism.
Relationship to ThreatSource and FrontCandidate
The Province-level pressure aggregates feed the emergence ladder committed in ../lore/adr/ad-0008-pressure-to-front-emergence-scope-state-machine.md lines 81-100:
scope ThreatSource(rooted at Province; walks to the underlying Territory, Site, or Route causing the threat) carries aSeveritychannel resolved through the same 6-phase pipeline. ThreatSource'sSeverityreads Province pressure outputs and is the identifiable, player-actionable emergence the dynamic-quest-pressure generator attaches pressure missions to.scope FrontCandidate(rooted at Crown / Realm) aggregates one-or- more ThreatSources through itsAggregatedSeveritychannel. FrontCandidate is the layer the Crown player sees on the Crown-scale strategic map before elevating a candidate into a Front.
This doc OWNS the Tier 1 and Tier 2 pressure channels (the inputs and the Province aggregates). ad-0008 OWNS the ThreatSource scope, the FrontCandidate scope, and the FrontDeclaration tier above them. The two surfaces are deliberately separated so the channels and the scopes can evolve independently inside the bounds the ADR sets.
Reclamation
Reclamation is the reversal layer.
- Reclamation begins early through ward work, scouting, local cleansing, route stabilization, and holding lines.
- It becomes structurally visible as the player clears routes, stabilizes sites, and pushes back corruption around the Core, the travelling Camp's routes, first Outpost footholds, and later settlements.
- It is already part of the frontier loop before the final act.
- Full reclamation is the late-game, Crown-scale, last-act loop.
Design Rules
- Corruption should change the value and safety of real places.
- Reclamation should create new usable land, safer routes, and stronger anchors.
- Cleansing work should stay tied to actual world state, not float as detached progress bars.
- Early reclamation should protect and stabilize ground; full reclamation should reclaim whole regions only when late polity capacity exists.
Quest Hooks
Corruption state — taint spread, ward failure, unsafe routes — is an
input to the dynamic quest pressure system. The dynamic-quest-pressure
generator reads pressure deltas, not absolute values: a Province
whose ProvinceThreatPressure rises across a defined number of ticks
emits a source fact, not the absolute pressure quantity. Absolute
pressure surfaces in the Crown-scale strategic readback, but the
mission-generation surface is delta-driven so a chronically high but
stable Province does not re-emit identical missions every tick.
This is the same delta-driven pattern documented in gd-labor-and-capacity.md "Dynamic Quest Pressure Source-Fact Contract" — labor and pressure surface through one mechanism so the planning layer reads both families identically.
The generator contract is documented in gd-dynamic-quest-pressure-model.md under "Pressure And Escalation Triggers".
Runtime Backing Status
Status at this doc's acceptance time: contract-only.
- Host/runtime owner:
legacy/v1/examples/valenar/Host/Data/TerritoryData.csremains the host-data anchor forCorruption. The Wave 5a runtime- backing wave authors the three additional Territory-level inputs, the three Province-level contributory channels (ProvinceThreatPressure,ProvinceWardIntegrity,ProvinceRouteSafety), and the matching host-side adapters. - Generated/.secs owner:
legacy/v1/examples/valenar/Content/territories/channels.secsfor the new Territory-level inputs;legacy/v1/examples/valenar/Content/provinces/channels.secsfor the Province-level aggregates. Matching Generated stand-ins land in the same Wave 5a wave. - Read-model/UI owner: the per-Territory dossier and the Crown-scale strategic map surface consume the Tier 1 and Tier 2 channels respectively. UI follow-up authored alongside the runtime-backing wave.
- Tests: deferred to the Wave 5a runtime-backing wave.
- Known gaps: the exact field names and channel kinds for the three Territory-level inputs (per ad-0008 lines 62-66); the per-pressure- family clamp values; the delta-tracking window for the dynamic- quest-pressure source-fact emit rule.
- Current backing today:
TerritoryData.Corruptionexists as a host field; no other Tier 1 or Tier 2 pressure channels exist; noscope ThreatSourceorscope FrontCandidateexists. The status matches ad-0008's "contract-only" record. - Illegal fallback behavior: no per-tick aggregator system with a
hardcoded threshold may stand in for the 6-phase channel pipeline
resolution. No Modifier-as-emergence-carrier may stand in for
scope ThreatSourceorscope FrontCandidate. No silent reset of delta tracking when the dynamic-quest-pressure source-fact emit fires — the emit must be deterministic per the pipeline output. - Next closure wave: Wave 5a runtime-backing wave (parallel with the ad-0008 ThreatSource / FrontCandidate runtime backing per resolver R17).
Glossary Propagation
The following terms (enumerated in ad-0008 lines 221-229) MUST land in
gd-glossary.md, gd-canon.md, and README.md:
ThreatSource(scope primitive owned by ad-0008).FrontCandidate(scope primitive owned by ad-0008).PressureCluster(informal design term for a ThreatSource cluster aggregated into a FrontCandidate).ProvinceThreatPressure,ProvinceWardIntegrity,ProvinceRouteSafety(Province-level contributory channel names owned by this doc as the channels layer).ThreatSourceMaterialized,FrontCandidateRaised,FrontDeclared(on_action transition labels owned by ad-0008).
Cross-Links
- gd-world-pressure-nexus.md
- gd-territories-features-sites.md
- gd-defense-zones.md
- gd-fronts.md
- gd-labor-and-capacity.md
- gd-dynamic-quest-pressure-model.md
- gd-state-axes-and-thresholds.md
- ../lore/adr/ad-0008-pressure-to-front-emergence-scope-state-machine.md
- ../acts/gd-act-2-first-outpost.md
- ../acts/gd-act-7-reclamation.md