# The Institution suite — master roadmap A set of RimWorld mods about **what an institution does to the people inside it** — and the crime, policing, and justice that put them there. Each mod is a separate install on a shared **Core**; together they form one system. > **Status (2026-07-15): shipped as a four-mod split.** The monolith split along its seams — the > substrate became **Institution: Core** (propensity, criminal record, secured context), the > corrections systems became **Institution: Justice** (classification, deterrence, discipline, > parole, regime), the gang layer became **Institution: Gangs**, and **Institution: Contraband** is > now the physical smuggling loop. **Foul Play** stands alone and bridges in. See the > [README](README.md) for the current mod table and dependencies. The design sections further down > predate the split in how they *group* modules, but the mechanics and the north star are unchanged; > a policing/cops layer (pre-arrest) is where **Justice** grows next. ## North star > **Every pawn has a criminal propensity on a spectrum — nature (traits) × nurture (circumstance, > mood, treatment) — and the colony can police it.** The same seeded disposition engine that drives the piss spree (`WouldFoulPeople` = disposition × circumstance, fixed per pawn), generalized. The suite is the two halves of that: - **Pre-arrest** — colonists commit crimes on a spectrum; a policing layer discovers, investigates, and catches them. Arrest is the hinge. - **Post-arrest** — prison, contraband, improvised weapons, escape, wards, secure areas, the daily life of the held, and the path back out (parole / discharge / manumission). ## The load-bearing principle: SECURED CONTEXT, not "prisoner" Nothing hard-codes "prisoner." The subject of every held-person system is a **secured context** — a pawn held in a controlled space, subject to search, following a regime: | Context | Members | Authority | Release path | |---|---|---|---| | Prison | prisoners | warden | **parole** | | Psych ward (Ward mod) | committed patients | orderly / warden | **discharge** (when treated) | | Slavery (Ideology) | slaves | overseer | **manumission** (Ideology) | | Secure area | anyone inside a zone | assigned guard | leave the zone | A committed patient rides the vanilla prisoner rail (Ward's `Ward_PsychiatricCare` mode), so contraband, search, schedule, needs, and visitation **already apply to ward patients for free** — and to slaves via a small Ideology-gated extension. Every system below reads `SecuredContextOf(pawn)`, never `IsPrisonerOfColony` directly. Build prisoner-first, against the predicate, and ward + slave + secure-area fall out without a rewrite. Design tone: **standards are low on the rim.** Needs and expectations for the held are modest — a prisoner does not expect a spa. Don't over-model comfort; a little goes a long way. --- ## System wiring — the four connections that make it a system, not a pipeline A full-lifecycle audit (propensity → crime → policing → prison → release → back) found the gaps are not missing *features* — they are missing *connections*. Without these four, the suite is a linear pipeline of modules; with them, it is a living system. Build them as first-class, not afterthoughts. - **A. A shared substrate (build FIRST).** One implementation, in Contraband (the central framework), that every module reads and writes: a **propensity** stat (nature × nurture, the `Disposition` engine generalized). **Cross-mod merge shipped 2026-07-15:** Foul Play answers "how disposed is this pawn" through a `Disposition.Source` seam that defaults to its own light read; when Contraband is present, the bridge repoints it at Contraband's full nature×nurture, so the two mods never disagree about the same person (harness: `FPBRIDGE propensity.merged = True`). This is the substrate principle applied ACROSS mods, not just within one. Also the **`SecuredContextOf(pawn)`** predicate (prisoner/ward/slave/zone), and a per-pawn **`CriminalRecord`** (crimes committed, escapes, contraband made, reform progress). Without this, each module reinvents "how criminal is this pawn" and they disagree — the crime system thinks a pawn is dangerous while classification thinks they are docile. Everything downstream keys off the substrate. - **B. Crime has real effects.** Theft actually removes the goods; assault actually injures; sabotage actually damages the building; targets are chosen via vanilla relationships. Without real, detectable harm, crime is a flag with nothing for an investigation to find (no missing goods = no evidence). - **C. Deterrence feedback closes the loop.** Catching and punishing crime feeds back into the propensity engine: **visible justice deters** (others' propensity drops), **unpunished crime spreads** (propensity rises when it pays), **visible cruelty radicalizes** (over-harsh punishment breeds resentment → more crime). This is what makes policing *govern* rather than merely clean up, and it is the connection that turns the pipeline into a cycle. - **D. Reintegration.** A caught → imprisoned → reformed → released colonist carries their record back: distrust from those they wronged, or a genuine clean slate if truly reformed (ideology-flavoured). Closes the colonist-crime cycle instead of leaving it dangling. A/B/C are load-bearing; D rounds it out. These are the *wiring*; everything in the module table below is the *features* that hang off it. **Design constraint (2026-07-15): defer the depth, never the payoff.** The propensity → contraband → detection → record *spine* is entirely ours and is self-complete without any third-party mod — it is what the suite is *about*, and deferring PR's prisoner-behaviour sims (recidivism, riot, solitary-toll, institutionalization, mood-contagion) leaves no hole in it, because none of those sit *on* that spine. The one place the deferral could ring hollow solo is the RESPONSE side: Discipline and Parole. So each response action must carry its **own minimal self-complete effect** — parole gives an immediate faction-goodwill / relationship nudge; discipline revokes privileges with a modest mood/record consequence — rather than borrowing PR's deeper toll. That is *not* a rebuild of PR (no returning raiders, no 3-tier solitary): it is our own decision having an immediate payoff, which PR then *enriches* when present. The test of a healthy deferral: with PR absent the loop still *closes* (the decision has an effect); with PR present the effect gets *deeper*, never doubled. ## Suite modules | Mod | Scope | Status | |---|---|---| | **Foul Play** | throw a container of something off a body; vessels + substances + Piss Nuke flagship | built | | **Institution: Contraband** | conceal / improvise / search / confiscate / intake / escape / secure-areas | building | | **Institution: Ward** | involuntary psychiatric commitment — the third pawn state | built | | **Institution: Regime** | daily schedule (vanilla Restrict) + modest needs + visitation, for every secured context | planned | | **Institution: Justice** | the crime loop (commit → discover → investigate → attribute → arrest), policing officer, parole/discharge/manumission | planned | | **Institution: Discipline** | security classification / segregation, punishment-as-order, corruption | planned | | **Institution: Gangs** | prisoner & colony gangs, rivalries, contraband networks | planned | Seven mods is the ceiling. Prefer folding a slot into an existing module over minting a new one. --- ## Regime — daily life of the held ### Schedule (use vanilla, don't reinvent) RimWorld already has `Pawn_TimetableTracker` + `TimeAssignmentDef` and the Restrict tab. **Extend that to secured pawns** rather than building a new regime UI. Prison Labor (`1899474310`, 176k) already puts force-to-work prisoners in the Restrict grid — build on that pattern, don't fight it. - Give secured pawns a timetable; surface it in the Restrict tab. - Two new `TimeAssignmentDef`s cover the prison-specific blocks vanilla lacks: **Yard** (go to a designated yard/commons — ties to Prison Commons) and **Lockup** (confined to cell). Eat/Sleep/ Work/Joy map to existing assignments. - A think-tree branch makes secured pawns honour their timetable (they already have a prisoner think-tree branch to hook). - Ward routine and slave work-schedule are the same machinery, different default timetables. ### Needs (modest — standards are low) Do NOT build a full Prison Architect needs sim. One or two low-stakes needs, keyed to the schedule: - **Yard / open air** — satisfied by the Yard block. Vanilla already has the Outdoors need; check whether it applies to secured pawns and lean on it before adding one. - **Safety** — a modest mood factor from feeling safe (few violent cellmates, guards present). - Recreation is already covered by Prisoner Recreation (`815726158`) — don't rebuild. Keep the magnitudes small. A satisfied schedule = a quiet wing; neglect = the disposition engine tips more pawns over the edge (feeding contraband, breaks, gang recruitment). ### Visitation Off-map visitors and related pawns visit the held. A genuine greenfield gap — Hospitality is guests only and never touches prisons. - A **visitation room** role; scheduled visiting hours (a schedule block). - A prisoner/patient with family or faction ties gets visits; the warden/orderly supervises. - Feeds a modest Family/social mood boost. **Thematically strongest for the ward** — a committed patient's family visiting is exactly right — and it is a supply route for contraband (a visitor smuggles something in → Contraband's conceal system). --- ## Justice — the crime loop (the missing middle) The heart. Without discovery + investigation, "crime" is just a random bad event, not something you police. The loop: **commit → discover → investigate → attribute → arrest → (held) → release** - **Commit.** A colonist acts on their propensity (nature: traits incl. VTE `2296404655` 646k kleptomaniac/pyromaniac — *integrate as inputs, don't rebuild*; nurture: our stat). Crimes: theft, contraband possession, sabotage, arson, assault, at the serious end murder. - **Discover.** The colony learns a crime happened: missing goods, a body, damage, filth, or a **witness**. Discovery is not automatic — a crime in an unwatched place may go unnoticed. - **Witnesses / informants.** A colonist near the act may witness it → report, be intimidated into silence, or inform for favour. The cheap, characterful detection layer. - **Investigate.** A policing officer works the scene: evidence, opportunity, the stolen goods in someone's concealed stash (ties to Contraband search!), narrowing suspects. - **Attribute.** Evidence points to a pawn. Confidence, not certainty — wrongful accusation is a possible, dramatic failure. - **Arrest.** Vanilla's one law verb. The hinge into the held systems. ### Policing officer Guarding is owned (Guards For Me `1855885448`, 88k — patrol/bodyguard, external threats only), the *catching* is not. Build the officer who investigates and arrests criminal colonists; **lean on Guards For Me's guard role** where present rather than reinventing patrol. ### Parole / discharge / manumission — release, driven by IDEOLOGY The payoff that makes Ward's treatment and good behaviour *mean* something. Release is not a flat timer — the colony's **Ideology precepts** decide the policy (`MayRequire` Ideology; a vanilla fallback for non-Ideology games): - A harsh / execution-favouring ideoligion rarely paroles (executes or works-to-death instead). - A rehabilitative / lenient ideoligion paroles readily on reform + good behaviour. - **Parole** (prisoner), **discharge** (ward patient, when treated — the Ward analog), **manumission** (slave, Ideology's own freeing) are one mechanism with three faces. - A released, reformed pawn has **reduced recidivism** — integrate with Prisoner Realism's recidivism (`3760196312`) rather than duplicate it: our reform lowers its return chance. Sentencing timers exist (Prisoner Sentencing `3736998871`) — defer to it; add only the ideology-driven *decision*, not another timer. --- ## Discipline — control - **Classification / segregation — make the wings players already build MEAN something.** Players already hand-build min / medium / max / solitary blocks with zones, cells and locks. RimWorld just has no notion of *who belongs where* or *whether they are correctly placed*. We do not replace the building — we add the intelligence layer on top of it, and it becomes the **router** that connects the whole suite: - **Grade (information).** Each secured pawn gets a risk grade computed from disposition × traits × history (escape attempts, contraband made, guards attacked, murder on record). The player stops guessing who is dangerous — the game tells them "this one is max." - **Assignment + misplacement flag (enforcement).** Tag a wing's grade; the system routes prisoners to the matching wing and **warns** when a max-grade pawn sits in a min cell. Vanilla gives zero feedback here today. - **Dynamic re-classification (dynamics).** Grade moves with behaviour: an escape attempt or a shanking **upgrades** them; Ward treatment + good conduct + time **downgrades** them. This wires classification straight into the behaviour loop. - **Grade gates the other systems (the payoff).** Grade drives search frequency (Contraband — max = frisked often), privileges (Regime — yard/visitation/recreation restricted by grade), escape risk (a dangerous pawn in a weak cell escapes more), and reform eligibility (Justice). - **The tension that makes it a decision.** Over-classify (everyone in max/solitary) = safe but mood craters, reform fails, ideology frowns on cruelty, and warden-hours explode. Under-classify (everyone min) = cheap and happy but they walk out. Classifying *correctly* is the game; we supply the information and the consequences that make it one. No mod auto-classifies (manual wing-building is emergent player behaviour, not a mod), so the *system* is an uncontested gap even though the physical tiers are common. - **Punishment as a player order.** Issue solitary / lockdown / privilege-revocation as a discipline *action*. Distinct from Prisoner Realism's *passive* solitary toll — we add the order and its interface; defer the mood consequence to Realism where present. - **Warden personality & corruption (expanded 2026-07-15).** A search is only as thorough as the warden running it. Diligence is a function of the warden's **personality** (traits: a Kind or Lazy warden frisks gently; an Abrasive or dutiful one turns the cell over) and **circumstance** (mood, their relationship to the prisoner, how run-down the prison is). Three faces of the same guard-integrity axis, all reading the same warden→prisoner state: - **Search intensity.** Personality + circumstance scale find-chance and how often a warden bothers — the lax warden misses what the hard-ass finds. (Extends `WorkGiver_Warden_Search` + `JobDriver_SearchPawn`'s find roll, which already take Social skill; add the warden's disposition.) - **Forgiveness.** A warden may *deliberately overlook* certain items — a sympathetic guard ignores a prisoner's smokeleaf, a jar of hooch, a family photo. Per-warden tolerance, per-item, so the same contraband survives one guard and not another. - **Bent wardens smuggle IN.** A corrupt/bribed/romantically-entangled warden becomes a **supply route** — they hand contraband TO a prisoner (the `Conceal` door already noted in Contraband as "a bent warden"). This is the corruption payoff and the thing that feeds a Gang's network. - **Secure zones are the counter-play.** A search-zone checkpoint frisks *anyone* passing through, **guards included** — so a bent warden carrying contraband in can be caught at the door. This wires corruption ↔ secure zones (the generalized secure-area search) ↔ the search loop: the same `JobDriver_SearchPawn` that turns over a prisoner turns over a guard at a checkpoint. Self-complete (reads vanilla traits/mood/relationships); no dependency. This is where the contraband loop stops being "the game vs. the player" and becomes "the player's own guards, who each have their own angle." --- ## Gangs — as contraband economies (NOT mood) Re-scoped 2026-07-15: Prisoner Realism's **Ringleader** already owns mood contagion from a dominant prisoner, and it is good — so we do not touch mood. Our gap is the **contraband network**: prisoners (and colonists) form factions that *move contraband* — a supply chain with a supplier, runners, and a tax, where segregating rivals (Classification) starves a network and a bent warden (Corruption) feeds one. Ties to disposition (who joins), contraband (what they move, the one system PR has nothing like), and classification (segregate rivals). The richest, latest module — build after the loop works. --- ## Build order (fills the meta-gap: don't build it all at once) 1. **The crime loop core** — discover + witnesses + investigate + attribute, applied to **free colonists** (the uncontested gap: vanilla+PR already handle prisoner arrest). Without it the whole crime thesis is inert. Build *before* individual crime types. 2. **Regime** — schedule (vanilla Restrict) + one or two modest needs. Cheap, high-value, and it feeds the disposition engine (neglect → crime). 3. **Visitation** — greenfield, thematically strong for the ward, doubles as a contraband route. 4. **Parole / discharge / manumission** — the *release decision*, ideology-driven, PLUS its substrate-native payoffs: **prisonization** (the regime reshapes propensity over the sentence) and **reintegrated-reoffending** (a parolee who joins the colony carries their record and may reoffend). PR's departed-raider return layers on top when present. Gives Ward and good behaviour a real payoff. 5. **Classification** (a router that reads the record + propensity and assigns a tier), then **punishment-orders**, then **corruption**. 6. **Gangs** as contraband economies — last; needs the rest in place. Deferred to Prisoner Realism on 2026-07-15 (it owns them, and it is good), as MECHANICS we do not rebuild: the isolation toll, mood-contagion gangs, and the departed-prisoner return. We still own the substrate-native, differently-axised versions of institutionalization (prisonization) and recidivism (reintegrated-reoffending) — the namesake themes — because only our propensity/record engine can. Already in flight (Contraband/Foul Play): hooch, improvised weapons, fire-starter, escape tools, intake search, secure areas. See [Contraband ROADMAP](https://git.onetick.ninja/flan/rimworld-contraband). Intake shipped **Harmony-free** (2026-07-15): rather than the planned patch on the contested `SetGuestStatus`, it polls from the MapComponent tick that already visits every held pawn — a pawn not yet processed is one newly in custody. Keeps Contraband's zero-Harmony core intact and steers clear of the method Hospitality/Prison Labor already stack three patches on. ### Foul Play — substance system, expanded (2026-07-15) The chosen "finish substances" work grew into a full **substance-cocktail** system. Three parts, built on the existing `SubstanceDef` (data) + `CompVessel` (delivery) + `CompFerment` split: - **Hooch.** A fermentable substance whose harm is **incendiary** — set its `damageDef` to a flame def and the framework's own `GenExplosion` splash starts fires (a Molotov), no splash-code change. Fermentation makes a *ripe* (high-alcohol) hooch a stronger firebomb — the harm-vs-time axis, but running the other way. Also **drinkable** as alcohol (share vanilla `Chemical_Alcohol` if cheap). - **Ferment in any liquid-holding furniture, not just toilets.** Generalise to a capability: a fermentation SITE is any *building that can hold liquid* — a DBH toilet/tub/sink, a vanilla `FermentingBarrel`, a modded vat. Detected by recognizable identity (defName/label vocabulary: toilet, barrel, tub, sink, tank, vat, trough, cistern, latrine, urinal, basin) + known vanilla defs, **dependency-free**. Hooch *requires* a site (pruno needs a vessel); piss can *use* one for a bigger/faster batch but still brews from the body. Fits Foul Play's standing "works with all containers" rule. - **Mixing — combine any substances.** A vessel's contents become a **blend** of `SubstanceDef`s (piss + feces + semen + …), and `SubstanceSplash` applies each one's effects together — caustic + disease + humiliation in one throw. "Mix everything": the blend is a runtime list on the vessel, defaulting to the def's single substance when unmixed, so every existing vessel still works. **Universality principle (2026-07-15): Foul Play is for EVERY pawn; Contraband is the prison lens.** Filling a vessel, fermenting it, throwing it, drinking it, and addicting to it are behaviours of *any* pawn — colonist, prisoner, slave, raider, visitor — gated by **disposition (propensity)**, never by prisoner status. "Not just prisoners fill vessels; any pawn can and will." That is the propensity engine (already universal) driving substance behaviour, and it is the mechanics-level expression of the whole thesis: every pawn on a spectrum. The prisoner-only concept is **concealment/search**, which is Contraband's held-pawn overlay: a prisoner *hides* the vessel they filled as a secret; a free colonist just has it. So the prisoner gate lives ONLY on the conceal path (`AcquireWorker`), never on the fill/ferment/throw/drink behaviours. A universal "a disposed pawn fills a vessel" job is its own piece, separate from the contraband brew that hides the result. **Reframed 2026-07-15 (user directive): vessels are GENERIC, contents are RUNTIME.** Hooch is not a bespoke item — it 1:1 models piss *except it is flammable*. A vessel is a generic container; what is in it (piss, hooch, feces, a blend) is instance state that can be **filled, fermented, poured between vessels, drunk, and mixed**. So there is no `FP_Weapon_Hooch`; there is `FP_Hooch` (a substance with a `Flame` damageDef) and a `CompVessel` whose `substance` is now runtime. Any fluid is **drinkable with different consequences** — a substance carries a *drink outcome* (hooch → alcohol, piss → sickness, feces → disease) alongside its *throw* outcome. Staged, each green, piss harness guarding throughout: 1. **Runtime substance on `CompVessel`** — instance field (default = def's substance), scribed; throw/splash/label read it. Vessels become substance-agnostic. (Def names kept to avoid a breaking rename; label shows contents at runtime — "jar of hooch".) 2. **Drink any fluid, with different consequences** — `SubstanceDef.drinkOutcome`; vessels ingestible, applying the current substance's consequence (hooch → alcohol high, piss → sickness, feces → gut rot, **blood** → nutrition + a disturbing thought / possible disease). Every fluid is a valid drink, just a worse or better idea. **Blood is a substance too** — a liquid like any other, drinkable and throwable. And **any drink can breed addiction like a drug**: each `SubstanceDef` carries an addiction *rarity* (hooch common, most fluids extremely rare), and the per-drink roll is modified by mental health + circumstances (a despairing, mistreated pawn addicts to things a content one never would) — same nature×nurture spine as propensity. 3. **Contraband content tag** — a concealed vessel carries a generic content tag (Contraband stays ignorant of `SubstanceDef`; the bridge interprets it), so "a hidden jar of hooch" redeems correctly. 4. **Pour between vessels + mixing** — a blend is a weighted amount-table; splash and drink apply every constituent scaled by its share. **Container physics (user spec, 2026-07-15):** vessels have a **capacity**; you can only mix into one with **headroom**, and a pour takes only up to that (a 50%-full jar of piss + cum poured in = 50/50, filled and no more). `CompVessel.Pour` moves liquid between carryable vessels in their current ratios, the destination reacting. STILL TO BUILD (the next layer): **furniture containers hold liquid too** (a DBH toilet, a barrel of wort) — but a fixed fixture cannot be *tipped*, so you **dip** a small vessel into it (fill the carryable from the fixture) rather than pour it out; and **the one pawn action is pouring** — a pawn-driven pour/dip job (uses the `Pour` primitive), which is what makes mixing happen in the world instead of only in code. This subsumes "ferment in a toilet": a fixture is just a big container you dip into. 5. **Fermentation-model overhaul** — age + top-up dilution + sealed/open + temperature (mirror `CompRottable`) + spoil threshold; applies to every vessel, piss included. **[SHIPPED]** **Potency model (corrected 2026-07-15): age + storage, NOT container size.** A liquid's potency is a function of how long it has fermented and how it is stored (a *sealed* vessel ripens and holds; an *open* one ferments differently and loses to evaporation) — never of how big the container is. Size already only drives fill-time and blast (VesselProfile), so `CompFerment.Potency` stays age-driven; the correction is that **topping up dilutes age**. A shared bucket/carboy that several prisoners keep using stays *fresh* (each fresh addition pulls the volume-weighted average age down), while a jar one prisoner fills once and hides *ages to full potency*. So "a jar of old piss and a bucket of fresh" both make sense — it is the usage pattern, not the vessel, that decides. Implementation: track age as a volume-weighted average, diluted on each add; sealed/open scales the ripen rate. **Temperature + spoilage (2026-07-15): mirror vanilla food rot.** Fermentation is temperature-driven, exactly like meat — warm speeds it, a freezer nearly halts it, and past a point it **spoils** (goes from potent to ruined/maximally foul). Rather than invent this, reuse the vanilla mechanic: `CompRottable` already tracks temperature-weighted rot progress for food. The ferment model should lean on that same curve (or `GenTemperature`-driven accumulation) so "spoils like meat" is literally the meat code path — a prisoner's stash left in a hot cell turns fast, one in a cold one keeps. This makes the whole substance model a **fermentation-model overhaul** of `CompFerment` (age + dilution + sealed/open + temperature + spoil threshold), sequenced AFTER the hooch item ships, since it applies to every vessel — piss included — not just hooch. ## Compatibility — the non-negotiable The suite must load and run cleanly alongside the **all-time most-subscribed Workshop mods**, not just prison-adjacent ones — that is the load order most players actually run. The harness (`Tools/run-compat-test.sh` in the Ward repo) boots a real headless RimWorld with the suite plus this stack loaded at once and fails on any error naming our code. Baseline stack (all 1.6, verified subs): - **Frameworks:** Harmony (3.2M) · HugsLib (2.5M) · Vanilla Expanded Framework (2.0M) · Humanoid Alien Races (1.1M). - **Ubiquitous gameplay/AI:** Pick Up And Haul (1.7M) · Common Sense (1.05M) · Simple Sidearms (954k) · Vanilla Furniture Expanded (1.08M) · EdB Prepare Carefully (1.67M). - **UI (load-order neighbours):** RimHUD (1.5M) · Allow Tool (1.36M) · Interaction Bubbles (1.15M) · Camera+ (997k). - **Weapon/our-domain risk:** Vanilla Weapons Expanded (985k) · VFE Furniture Security (865k) · Vanilla Brewing Expanded (589k) · Hospitality (798k). - **Prison-adjacent (design overlap):** Prison Labor · Prison Commons · Locks · Restraints · Custom Prisoner Interactions · Prisoner Realism · Prisoner Recreation · Dubs Bad Hygiene · Psychology · Rim Disorders · More Mental Breaks. **Combat Extended** (387k, 1.6) gets its OWN dedicated pass, not the mixed stack: it overhauls verbs, projectiles, damage and armour — exactly our thrown-weapon surface — so an ambiguous failure in a 25-mod stack would be useless. Loading-clean-under-CE is a must-have; a tuned CE armour-penetration patch (`MayRequire`) is a strongly-recommended follow-up, not a release blocker. How the suite earns this: zero-Harmony cores, Contraband optional via a `LoadFolders` bridge, every DLC/mod tie-in `MayRequire`-gated, and new content registered by capability (`IsWeapon`, `IsDrug`, category) rather than hard-coded lists — so modded weapons, drugs and races are covered without being named. ## Self-complete, dependency-free — the standing rule Two rules, and the second is the sharper one: 1. **Judge by QUALITY, not sub count. If an incumbent is actually good, keep it.** A genuinely good mod — even a small one — is worth coexisting with rather than rebuilding: don't waste effort duplicating something done well (Prisoner Realism at 11k is a *good* deep sim → keep it). Only build our own where the incumbent is **thin, absent, or mediocre** on one of our crucial loops (Prisoner Recreation just flips vanilla Joy → trivially ours; the 334-sub crime mod is niche → the slot is open). Sub count is a hint, not the test. 2. **No hard dependencies. Every crucial loop is self-complete.** The suite must be a whole, working system on its own. Third-party mods are **coexistence targets that ENHANCE**, never requirements. Where we integrate (Ideology precepts, Prisoner Realism's recidivism, Prison Labor's regime), it is always `MayRequire`-soft: the feature lights up if the mod is present and the loop still closes without it. What this changes vs. a naive "defer to whoever got there first": - **Recreation is ours to enable.** Prisoner Recreation (38k) and Prisoner Realism (11k) ship no custom need — they just flip on the *vanilla Joy need* for prisoners. We do the same in our needs system: idempotent, coexists, zero dependency, no citing. - **Recidivism → split by population, don't defer wholesale.** (Revised twice: first "build modest", then "defer entirely", now corrected — see the namesake correction in the deep scan below.) PR's Recidivism handles the pawns who **leave** (released/escaped → return ally-or-raider by treatment); that is good and we do not rebuild it. We own the **mirror**: the paroled pawn who **stays**, joins the colony, and can reoffend inside it (their `CriminalRecord` + residual propensity → wiring gap D). Different population, no overlap. The release *decision* stays self-complete (ideology-driven); the *reintegrated-reoffending* is ours; the *departed-return* is PR's. - **Solitary / isolation toll → DEFER to Prisoner Realism.** PR's Solitary is a full 3-tier deterioration hediff with a Ringleader counterplay. Our Classification module does NOT reimplement the toll; it is a **router** — it reads the shared record + propensity and *assigns* the security tier (including whether to isolate). PR (or vanilla) then supplies the consequence of that assignment. Routing is the gap; the isolation sim is not. - **Escape** is self-complete: vanilla mental-break breaks + our disposition-driven arming + our **contraband-tool wall-cut**, which is scoped precisely to the pawns PR's break system does NOT move — chiefly ward patients (never "mood prisoners") and pawns too low-skill to pick a lock. PR owns the skilled-lockpick-a-DOOR-during-a-break path; we own the slow-file-through-a-WALL path for the calmly-committed. Complementary, not overlapping. Genuinely leave alone (giant + redundant + not a gap in our loops): forced labor (Prison Labor 176k), hygiene (Dubs Bad Hygiene 632k), crime *traits* (Vanilla Traits Expanded 646k — we consume them as nature inputs), guest hosting (Hospitality 798k). Coexist with all; depend on none. ### Prisoner Realism deep scan (2026-07-15) — the big incumbent, mapped feature-by-feature Prisoner Realism (Steam `3760196312`, **11,286 subs / 1,090 favs / 5-star**, published 2026-07-07) is the one incumbent large enough to reshape our roadmap. It is a *good* mod (clean documented C#, multi-factor balance, defers to other mods where they overlap), so the standing rule says keep it and cut our overlaps. Its 20 features and our verdicts: | PR feature | What it does | Institution verdict | |---|---|---| | PrisonBreak rework | MTB scaled by mood/relation/captor/strength | Defer. Our arming rides vanilla/PR breaks. | | No-mining / melee breakout | strips sapper-dig; escapees bash doors | Defer. Our wall-cut is a *tool* route, additive. | | Keys / Lockpick | skilled prisoner picks a DOOR, fast, no item | Defer. We own file-through-a-WALL for non-break pawns. | | Recidivism | released/escaped return ally-or-raider by treatment | Defer PR's mechanic; own the MIRROR — the reintegrated who STAY and reoffend (see below). | | Institutionalized | expectation/mood decay + reintegration struggle | Defer the mood axis; own the PROPENSITY axis — prisonization (see below). | | Solitary | 3-tier isolation deterioration | Defer the toll; Classification only *routes* to it. | | Ringleader | mood contagion from dominant prisoner | Defer. Re-scopes our Gangs to contraband-networks. | | Riot | securely-caged-but-miserable → lash out | Defer. | | ArrestGrace / ArrestHere | in-place arrest, no immediate bolt | Defer. Our intake (keep-inventory + search) coexists. | | Recreation | flips on vanilla Joy for prisoners | We enable the same idempotently (no citing). | | Surrender, ForceFeed, RecruitOffer, Despair, Turrets, Cleaning, Carry, BedOwner, Surgery, Commons, AssistedBreak | assorted prisoner-behavior sims | Defer all; coexist. | Net effect: **two modules re-scoped** (Classification → pure router; Gangs → contraband economy, not mood) and the reintegration module **re-founded on our substrate** (see next). What remains is Institution's uncontested core: hidden-contraband + search, propensity across *all* pawns, Ward, Foul Play, classification-as-router, and the standout nobody touches — **policing free colonists**. #### Namesake correction (2026-07-15): institutionalization & recidivism ARE ours — on a different axis "Defer entirely" was an over-correction: in a suite named **Institution**, these are the namesake, and our substrate lets us build them on an axis PR structurally cannot, so it is complementary, not a rebuild. The rule: **don't duplicate PR's mechanic; own the substrate-native version only we can.** - **Institutionalization → prisonization, and it is NOT a new system (2026-07-15).** The lean form: `Propensity.Nurture` *already* raises criminal disposition for a badly-kept held pawn, dynamically. The only thing incarceration adds is PERMANENCE — an effect that outlasts the sentence — and we already have the field for it: `CriminalRecord.reform` (signed: harsh regime → negative/prisonized → propensity up; rehabilitative → positive/reformed → propensity down). So prisonization = have the EXISTING Nurture read that ONE existing field, which Discipline/Parole write. No parallel mechanic, no new stat. And we do **not** patch PR's institutionalization (that would make us depend on a one-week-old, fast-moving mod): when PR is present we *soft-read* its hediff as one more Nurture input (`MayRequire`, reflective, no patch) — the same additive-not-override posture as the tunnel. - **Recidivism → the reintegrated who STAY (not the departed who leave).** PR returns released/escaped pawns as allies-or-raiders. We own the mirror population: a paroled pawn who *joins the colony* carries their `CriminalRecord` + residual propensity and can **reoffend inside your own walls** — wiring gap D, closing the colonist-crime cycle. PR handles who left; we handle who stayed. No overlap. These two are also the **self-complete payoffs** for Discipline and Parole (per the "defer the depth, never the payoff" constraint above): the regime you run visibly reshapes people, and a badly-reformed parolee bites you later — both work with PR absent, and PR's departed-raider return deepens it when present. ### Prior-art sweeps done (2026-07-14/15) Uncontested gaps, safe to build clean: contraband/search, improvised weapons, keep-inventory intake, secure-area search, nurture criminality stat, investigating officer, patient escape, visitation, classification, punishment-order, gangs, corruption. Partial (build the uncovered slice only): prisoner timetable, yard/safety/privacy needs, evidence/forensics investigation, active snitch/informant, reform-and-ideology-driven parole. The only prior art in the crime/parole space (Rimworld Law and Order, 334 subs) fails the *popular* bar, so that slot is open — build it without duplicating that niche mod exactly. ## Architecture already honors rule 2 Zero hard dependencies anywhere: Foul Play stands alone, Contraband is optional to it (the `LoadFolders` bridge loads only when both are present), Ward stands alone, and every DLC/mod tie-in is `MayRequire`. No suite mod requires another suite mod or any third-party mod. ## AI disclosure Designed and built with substantial assistance from Claude (Anthropic).