A full-lifecycle audit found the gaps are missing CONNECTIONS, not features. Without them the suite is a linear pipeline; with them it is a cycle. The shared substrate (propensity stat + SecuredContextOf + CriminalRecord) must be built first -- everything reads it.
The Institution suite
A set of RimWorld 1.6 mods about what an institution does to the people inside it — and the crime, policing, and justice that put them there. Each mod stands alone and requires none of the others; together they form one system.
The thesis
Every pawn has a criminal propensity on a spectrum — nature (traits) × nurture (circumstance, mood, treatment) — and the colony can police it.
The suite is the two halves of that: colonists commit crimes and a policing layer catches them (pre-arrest), and prison / contraband / wards / secure areas hold and reform them (post-arrest). Arrest is the hinge. Nothing hard-codes "prisoner" — every held-person system keys off a secured context: prisoner, ward patient, slave, or secure-area occupant.
The mods
| Mod | What it is | Status |
|---|---|---|
| Foul Play | throw a container of something off a body; vessels + substances + the Piss Nuke flagship | shipping |
| Institution: Contraband | conceal / improvise / search / confiscate; intake, escape, secure areas | building |
| Institution: Ward | involuntary psychiatric commitment — the third pawn state, neither free nor guilty | shipping |
| Institution: Regime | daily schedule (vanilla Restrict) + modest needs + visitation | planned |
| Institution: Justice | the crime loop, the policing officer, parole / discharge / manumission | planned |
| Institution: Discipline | security classification, punishment-as-order, corruption | planned |
| Institution: Gangs | prisoner & colony gangs, rivalries, contraband networks | planned |
Principles
- Self-complete, dependency-free. Every mod works alone; none requires another suite mod or any
third-party mod. Integrations are always
MayRequire-soft — features light up if a mod is present and the loop still closes without it. - Coexist, don't duplicate. We test against the all-time most-subscribed Workshop mods and never rebuild what a genuinely good mod already does well — judged by quality, not sub count.
- Extend by capability, not by list. New content registers via
IsWeapon/IsDrug/ category, so modded items are covered without being named.
The plan
The full design, module scope, build order, and prior-art verdicts are in ROADMAP.md. Per-mod roadmaps live in each repo (e.g. Contraband's item build list).
Compatibility
The in-game harness (Tools/run-compat-test.sh in the Ward repo) boots a real headless RimWorld
with the suite plus the popular psych/prison mods and the all-time most-subscribed mods loaded
at once, and fails on any error naming our code. Combat Extended gets its own dedicated pass. It
needs a licensed RimWorld + xvfb, so it is a LOCAL step, not CI.
CI
Each code repo runs a Gitea Actions workflow (.gitea/workflows/ci.yml) on push: lint def XML
(catches malformed XML and relative-xpath silent no-ops) + dotnet build against the Krafs
RimWorld reference assemblies (no game install needed). Runs on the self-hosted truenas-runner
(host mode, label ubuntu-latest); .NET is provisioned per-run via setup-dotnet. Green across
Foul Play, Contraband, and Ward.
AI disclosure
Designed and built with substantial assistance from Claude (Anthropic).