Files
institution/README.md
T
flan 094f531ca0 Update the suite map for the four-mod split
Core / Contraband / Justice / Gangs replace the old monolith-plus-planned
layout: adds Institution: Core, slims Contraband to the physical smuggling
loop, and promotes Justice (with Regime/Discipline folded in) and Gangs from
planned to shipping. Updates the dependency notes and the standalone-vs-Core
principle to match the real topology.
2026-07-15 07:56:03 +00:00

70 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 is a separate install built on a small
shared **Core**; 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 | Needs | Status |
|---|---|---|---|
| [Institution: Core](https://git.onetick.ninja/flan/rimworld-core) | the shared engine — **propensity** (nature × nurture), the **criminal record**, the **secured-context** predicate. Invisible on its own | — | shipping |
| [Institution: Contraband](https://git.onetick.ninja/flan/rimworld-contraband) | the physical smuggling loop — conceal / improvise shivs / Prison-Architect tunnels / warden search / corruption | Core | shipping |
| [Institution: Justice](https://git.onetick.ninja/flan/rimworld-justice) | corrections & policing — classification, deterrence, discipline, parole, regime (a policing/cops layer is planned here) | Core, Harmony | shipping |
| [Institution: Gangs](https://git.onetick.ninja/flan/rimworld-gangs) | gangs as **contraband economies** — joining by disposition, smuggling networks, rivalry, fights-as-crime | Core, Contraband, Justice | shipping |
| [Institution: Ward](https://git.onetick.ninja/flan/rimworld-ward) | involuntary psychiatric commitment — the third pawn state, neither free nor guilty; also carries the suite's in-game test harness | — | shipping |
| [Foul Play](https://git.onetick.ninja/flan/rimworld-foulplay) | throw a container of something off a body; a Noita-flasks liquid framework (vessels + substances) with the **Piss Nuke** flagship; bridges to the suite | standalone | shipping |
The original monolith split along its natural seams in 2026-07: the substrate became **Core**, the
corrections/justice systems became **Justice**, and the gang layer became **Gangs**, leaving
**Contraband** as the physical smuggling loop. Regime (prisoner recreation) folded into Justice; a
policing/cops layer is where Justice grows next.
## Principles
- **One shared engine, then build up.** The suite runs on a small **Core** (propensity, record,
secured context) so every mod agrees about who is dangerous instead of each guessing. Contraband
and Justice build on Core; Gangs, the capstone, needs Core + Contraband + Justice. Foul Play stands
fully alone and merely *bridges* to the suite when it is present. Cross-mod integrations that
aren't hard dependencies stay soft — features light up if a mod is present and the loop still
closes without it (e.g. Core's deterrence seam is neutral until Justice fills 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](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; the split-out **Core**, **Justice**, and **Gangs** build clean and
are exercised by the full-stack harness, with per-repo CI workflows still to be added.
## AI disclosure
Designed and built with substantial assistance from Claude (Anthropic).