Files
institution/Wiki/justice/Classification.md
T
flan 3530100ed5 Aggregate the whole suite wiki onto the Institution page
Wiki/Home.md is the suite's front door; every layer's wiki now mirrors here
under Wiki/<layer>/ (core, contraband, justice, gangs, ward), so the whole
suite reads in one place with the index linking to the local pages. The
layer repos stay canonical -- Tools/sync-wiki.sh refreshes the aggregated
copy on demand. The README's main page points to it.
2026-07-15 20:30:38 +00:00

6.8 KiB
Raw Blame History

Classification

The intelligence layer over the wings you already build by hand.

You already build a minimum wing and a max block. You already put the psychopath behind steel and the teenage pickpocket behind a wooden door. Classification does not replace those walls, cells and locks — it answers the question vanilla never does: who belongs where. It reads the one shared CriminalRecord every module writes to and turns it into a single verdict, so the crime system, the search, the escape and the classifier all agree on how dangerous a pawn is, because they read the same number.

Grade drives everything downstream: search frequency, privileges, escape risk, and — critically — parole eligibility (Parole gates on grade).

The isolation toll of a max/solitary placement is Prisoner Realism's (good) sim. Justice only decides the placement.


The tiers

SecurityGrade is four bands, low to high — the tiers players already build, named:

Grade Risk score Reading
Minimum < 0.35 Barely a disposition, clean record. Open dorm, light watch.
Medium 0.35 – 0.79 A real record or a real nature. Proper cell, routine search. The parole ceiling.
Maximum 0.80 – 1.49 Repeat offender or proven flight risk. Steel, solitary door, frequent search.
Supermax ≥ 1.5 The headline cases. Escapes plus crimes plus a dark nature. Never let them near a wall.

Note the ceiling at Medium: Parole will only consider a pawn graded Medium or below. Grade is therefore not just a placement hint — it is the gate a pawn has to fall back through before they can be released.


The risk score

Risk is a 0..~3 number: baseline disposition plus everything on the record, minus reform earned.

risk = Nature(pawn) * 0.5              // who they are, before they have done anything
     + escapeAttempts * 0.35          // a proven flight risk is the headline
     + crimesCommitted * 0.20
     + timesCaught     * 0.15
     + contrabandMade  * 0.10
     - max(0, reform)  * 0.4          // genuine reform earns a downgrade
risk = max(0, risk)                   // never negative
Term Weight Why this weight
Nature (0..1) × 0.5 Disposition alone can carry a pawn to Medium (Nature 0.7+), but never past it on its own. Character is a suspicion, not a conviction.
escapeAttempts × 0.35 The heaviest per-event term. A pawn who runs is the one who ends up armed in your base. One attempt is worth nearly two crimes.
crimesCommitted × 0.20 The staple. Steady, cumulative.
timesCaught × 0.15 Caught contraband is worse than merely suspected.
contrabandMade × 0.10 The lightest term — making a shiv is common; escaping with one is not.
reform (if > 0) − 0.4 The only term that can lower the grade. At most −0.4 (reform capped at 1.0).

Two facts fall out of the numbers, and both matter for how you play:

  • timesSearched is not in the formula. Searching a pawn does not make them more dangerous — only finding something (timesCaught) does. Search freely; it costs the prisoner no grade.
  • Reform can shift at most 0.4 of risk. At reform = 1.0, the downgrade is −0.4. So a pawn whose record without reform already totals ≥ 1.2 can never fall to Medium (< 0.8) no matter how thoroughly they reform — and therefore can never be paroled. A prolific offender is a life sentence. You will hold them, work them, or execute them; you will not release them. This is a deliberate property of the weights, not an accident.

Worked example — grading a record

Bram, an Abrasive raider. Nature = 0.05 + 0.15 = 0.20. He has three crimes, one escape attempt, was caught twice, made two shivs, and has not been reformed (reform = 0).

risk = 0.20 * 0.5   = 0.100   (nature)
     + 1    * 0.35  = 0.350   (escape — the headline)
     + 3    * 0.20  = 0.600   (crimes)
     + 2    * 0.15  = 0.300   (caught)
     + 2    * 0.10  = 0.200   (contraband)
     - 0    * 0.4   = 0.000   (no reform)
                    ─────────
              total = 1.550   →  ≥ 1.5  →  SUPERMAX

Now treat him. Say patient handling and good conduct lift him to reform = 0.40:

risk = 1.550 - (0.40 * 0.4) = 1.550 - 0.160 = 1.390   →  MAXIMUM

He drops a band. But notice: his reform-less risk is 1.55, well above 1.2. Even at perfect reform = 1.0 he lands at 1.55 − 0.40 = 1.15 — still Maximum. Bram is beyond parole for the rest of his life. His record decided that, not his disposition.

Contrast Cass, a Kind pickpocket. Nature = clamp01(0.05 − 0.30) = 0. One crime, caught once, no escape, no contraband, reform = 0.

risk = 0 + 0 + (1*0.20) + (1*0.15) + 0 - 0 = 0.350   →  MEDIUM  (exactly on the line)

Give Cass the standard treatment to reform = 0.30:

risk = 0.350 - (0.30 * 0.4) = 0.350 - 0.120 = 0.230   →  MINIMUM

Cass is now Minimum, and — being Medium-or-below with reform ≥ 0.30 — paroleable. Same institution, two futures, and the record told you which was which before you had to guess.


How to play with grades

  • Segregate by grade, not by vibe. Sort your cells to the four bands and put a pawn where their score, not your hunch, says. The whole suite reads the record; you can too.
  • Escapes are the alarm. One escape attempt (+0.35) will jump a middling pawn a band. If a pawn crosses into Maximum after a break attempt, believe it — treat them as the flight risk the number says they are.
  • A clean nature is not a clean record. A Kind pawn who has escaped twice still grades Maximum; disposition is only half the score.
  • Watch the parole ceiling. If you intend to release someone, keep their reform-less risk under 1.2 — mostly that means limiting how deep their record gets before you start treating them. A pawn you let rack up escapes and catches has sentenced themselves.
  • Reform is the only lever that lowers a grade. See Discipline & Reform for how to move it, and Parole for where the grade gate lands.

For modders

SecurityGrade grade = Classification.Grade(pawn);   // the verdict
float score         = Classification.Risk(pawn);    // the raw 0..~3 number

Both are pure reads — Risk uses GameComponent_CriminalRecords.PeekFor and never creates a record. SecurityGrade is an ordered enum (Minimum < Medium < Maximum < Supermax), so grade <= Medium comparisons work as written. The type lives in the Contraband namespace (Justice was extracted from Institution: Contraband and kept the shared namespace).


Part of the Institution suite for RimWorld 1.6: Core · Contraband · Justice · Gangs. Developed with substantial assistance from Claude (Anthropic).