Rename the shared code namespace Contraband -> Institution; add license

The suite's classes all lived in namespace Contraband -- a historical artifact from the original
Contraband monolith, which read oddly for a class in Corrections or Policing. Renamed to namespace
Institution across every layer (46 .cs, the XML Class= refs, RootNamespace, the aggregate shim). The
Contraband MODULE, its Contraband.dll assembly, and the Contraband-named classes (CompContraband,
MapComponent_Contraband, ContrabandUtility, ...) are unchanged. Harness-verified 45/0.

Also adds a CC-BY-NC-SA 4.0 LICENSE file.

Aggregate: the settings shim now writes Institution.InstitutionSettings; Assemblies re-vendored with
the renamed DLLs; ROADMAP status refreshed to the six-layer suite at 0.1.0.
This commit is contained in:
flan
2026-07-16 01:45:34 +00:00
parent e96ac23949
commit 3fc4ef7a1d
10 changed files with 46 additions and 19 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+24
View File
@@ -0,0 +1,24 @@
Institution
Copyright (c) 2026 flan
This work is licensed under the Creative Commons
Attribution-NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0).
To view a copy of this license, visit:
https://creativecommons.org/licenses/by-nc-sa/4.0/
Full legal text:
https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
You are free to:
- Share — copy and redistribute the material in any medium or format
- Adapt — remix, transform, and build upon the material
Under the following terms:
- Attribution — You must give appropriate credit, provide a link to the
license, and indicate if changes were made.
- NonCommercial — You may not use the material for commercial purposes.
- ShareAlike — If you remix, transform, or build upon the material, you
must distribute your contributions under the same license as the original.
No warranties are given. The license may not give you all of the permissions
necessary for your intended use (e.g. other rights such as publicity or privacy).
+16 -13
View File
@@ -4,20 +4,23 @@ A set of RimWorld mods about **what an institution does to the people inside it*
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 five-layer suite behind one install.** The monolith split into
> **Core** (propensity, criminal record, secured context, the shared treatment engine), **Contraband**
> (the physical smuggling loop), **Justice** (classification, deterrence, discipline, parole, regime,
> and **policing** — colony crime → a weighed arrest), **Gangs** (contraband economies), and **Ward**
> (psychiatric care), folded in from a former standalone sister mod. All five bundle into the single
> **Institution** mod with a toggle each while staying separate repos; **Foul Play** stands alone and
> bridges in. See the [README](README.md) for the current mod table.
> **Status (2026-07-16): a six-layer suite behind one install, at 0.1.0.** Along the separation of
> powers the suite is: **Core** (propensity, criminal record, secured context, the shared treatment
> engine, the deterrence seam), **Contraband** (the physical smuggling loop), **Policing** (colony
> crime → investigation → a weighed arrest → the deterrence feedback loop → riots), **Corrections**
> (classification, discipline & reform, parole, regime), **Gangs** (contraband economies), and **Ward**
> (psychiatric care). The former **Justice** module was split into **Policing** + **Corrections** and is
> deprecated/archived. All six bundle into the single **Institution** mod with a toggle each while
> staying separate repos; **Foul Play** stands alone and bridges in. See the [README](README.md) for the
> current mod table.
>
> The pre-arrest loop (crime → witnesses → investigate → weighed arrest) and the post-arrest
> corrections arc (rehabilitate → parole, discipline-as-order, classification enforcement, on the
> shared treatment engine) are **wired and harness-verified**. What remains is **Regime depth**
> (schedule / needs / visitation), **ideology-flavoured** release, and — above all — real
> **playtesting** to tune the numbers, none of which are play-tested yet. The design sections below
> predate the split in how they *group* modules, but the mechanics and north star are unchanged.
> The full loop crime → witnesses → investigate → weighed arrest → contraband/gangs → rehabilitate →
> parole, on the shared treatment engine — is **wired and harness-verified (45/0)**, and two audit→zero
> passes plus a headless tuning run are behind it. The shared code namespace is now `Institution` (was
> `Contraband`). A future **Judiciary** layer (a court: charge → trial → sentence) is reserved as a Core
> `sentence` seam — no dead code added. What remains before a real release is, above all, **playtesting**
> to tune the numbers (they are still first guesses) and the Steam Workshop upload. The design sections
> below predate the split in how they *group* modules, but the mechanics and north star are unchanged.
## North star
+6 -6
View File
@@ -7,7 +7,7 @@ namespace InstitutionSuite
/// The single player-facing mod. It bundles the Institution feature layers -- Contraband,
/// Justice, Gangs, Ward -- into one install with a checkbox per layer, and it owns NO gameplay code of
/// its own. All it does is read the player's choices and write them into Core's shared
/// <see cref="Contraband.InstitutionSettings"/>, which the feature assemblies (shipped alongside
/// <see cref="Institution.InstitutionSettings"/>, which the feature assemblies (shipped alongside
/// in this same mod) read at their entry points.
///
/// This is the whole "merge": a thin settings shim on top of the unchanged, still-separate feature
@@ -66,11 +66,11 @@ namespace InstitutionSuite
/// <summary>Mirror the choices into Core's shared flags that every feature reads.</summary>
public void Apply()
{
Contraband.InstitutionSettings.contraband = contraband;
Contraband.InstitutionSettings.corrections = corrections;
Contraband.InstitutionSettings.gangs = gangs;
Contraband.InstitutionSettings.policing = policing;
Contraband.InstitutionSettings.ward = ward;
Institution.InstitutionSettings.contraband = contraband;
Institution.InstitutionSettings.corrections = corrections;
Institution.InstitutionSettings.gangs = gangs;
Institution.InstitutionSettings.policing = policing;
Institution.InstitutionSettings.ward = ward;
}
public override void ExposeData()