systems/INTEGRITY_DELTA_MAP.md
ILLUSTRATIVE under the Phase-5M tuning firewall. The CLASS RANGES on this page are canon
(T1_Integrity_Paths_Worldstates_Master [ACTIVE v2.1] §5.1). The integer point-picks are
ILLUSTRATIVE tuning, not canon — they exist so the Q3.4 fork/integrity dispatcher has a
deterministic number to run today, and any of them may be re-tuned without a canon change so
long as it stays inside its class's own canonical band. Authorized by Josh's 2026-07-23c ruling
("the delta map is DIRECTOR-DERIVED from T1_Integrity_Paths' band ranges, ILLUSTRATIVE under the
tuning firewall"), recorded in docs/spine/DECISIONS_PENDING_JOSH.md (the ✅ 2026-07-23c block).
Machine copy:build/integrity_delta_map.json. Regenerate withscratchpad/gen_delta_map.py
(reads build/spine_rows/*/fork_options.csv).
The spine's fork options tag each branch with a bounded qualitative magnitude token in the
delta_class_bounded column (for example +Substantial, −Accumulative, ~0). The runtime
fork/integrity dispatcher (Q3.4) needs an integer delta per option. This map is the one place the
qualitative token becomes an integer, so no two consumers pick differently. The map covers the
token vocabulary ACTUALLY in use — every distinct delta_class_bounded value observed across the
63 fork files that carry the column, plus the direction-only polarity tokens carried by the 11
path-bucket-locked terminal-fork files.
The class ranges are canon and are quoted verbatim from `T1_Integrity_Paths_Worldstates_Master
[ACTIVE v2.1]` §5.1. §5.5.3 confirms the assimilation mechanic "introduces no new band," and §5.5
"invents no new magnitude band and no numerical canon" — the four classes below are the closed set.
to chapter-anchor beats. They may shift integrity by ten to twenty-five points." Range 10 to 25.
The canonical anchor list is the §5.4 Foundational-beat catalog.
per-chapter primary boss encounters, trade master encounters, and named-NPC relationship beats.
They may shift integrity by three to ten points." Range 3 to 10.
to per-encounter dialogue selections, combat approaches, and environmental interactions. They may
shift integrity by half a point to three points each." Range 0.5 to 3. This band canonically
tolerates half-point increments; the map still picks a single integer per token for the
dispatcher.
to engage an antagonist operative with lethal force shifts integrity differently for a Truly Good
path protagonist (small negative...) than for an Evil path protagonist (small positive...)."
Signature is the one class §5 gives NO numeric range — its magnitude is "small" and its sign is
path-dependent, so it is unranged by design and no fork currently emits it as a bounded token
(see §5). It is documented here for completeness only.
Every observed token parses as SIGN, then CLASS, then an optional MODIFIER. The rule:
+ or generative is positive (+1); − or ASCII - or corrosive is negative (−1); ~, ~0, or neutral is zero.
by construction lands inside the canonical band: Foundational midpoint 17.5 rounds to 18;
Substantial midpoint 6.5 rounds to 7; Accumulative midpoint 1.75 rounds to 2.
partial, light, tempered, or guarded picks thefloor-side interior point, round-half-up of (low + midpoint) / 2: Foundational 14, Substantial 5,
Accumulative 1. Still inside the canonical band.
(terminal-band texture) or (terminal texture) tag is an HL_0010intermediate-bands-are-texture presentation note and does NOT change the integer; a trailing
-generative or -corrosive is a redundant valence tag (the sign already carries it) and does
NOT change the integer.
Every pick is clamped to its class's own canonical [low, high]; the map never emits a number
outside a §5 band. Which point inside the band is chosen is the tuning that the firewall covers.
~0 — value 0.Every distinct delta_class_bounded value in use, with the class it resolves to, the sign, the
derived integer, the canonical range that bounds it, the observed count, and any note. All 22
tokens resolve cleanly to a §5 class; none required an invented class.
| Observed token | Class | Sign | Value | Canonical range | Count | Note |
|---|---|---|---|---|---|---|
~0 | neutral | 0 | 0 | [0, 0] | 69 | zero/neutral |
+Substantial | Substantial | + | +7 | [3, 10] | 68 | base |
−Substantial | Substantial | − | −7 | [3, 10] | 59 | base |
+Accumulative | Accumulative | + | +2 | [0.5, 3] | 24 | base |
−Accumulative | Accumulative | − | −2 | [0.5, 3] | 8 | base |
-Substantial (ASCII hyphen) | Substantial | − | −7 | [3, 10] | 6 | base; hyphen normalized to minus |
+Substantial (partial) | Substantial | + | +5 | [3, 10] | 3 | reduced modifier |
+Substantial-partial | Substantial | + | +5 | [3, 10] | 3 | reduced modifier |
−Substantial (terminal-band texture) | Substantial | − | −7 | [3, 10] | 2 | terminal-band texture, magnitude unchanged |
+Substantial-generative | Substantial | + | +7 | [3, 10] | 2 | redundant valence tag |
+Foundational | Foundational | + | +18 | [10, 25] | 2 | base |
ws.integrity_score ~0 (path-invariant; the manner rides the Ch-65-locked band) | neutral | 0 | 0 | [0, 0] | 2 | normalized from a leaked ws_writes string |
−Substantial (terminal texture) | Substantial | − | −7 | [3, 10] | 1 | terminal-band texture, magnitude unchanged |
−Substantial-corrosive | Substantial | − | −7 | [3, 10] | 1 | redundant valence tag |
+Substantial (tempered — the kept edge softens it) | Substantial | + | +5 | [3, 10] | 1 | reduced modifier |
+Substantial(guarded) | Substantial | + | +5 | [3, 10] | 1 | reduced modifier |
−Substantial-partial | Substantial | − | −5 | [3, 10] | 1 | reduced modifier |
+Accumulative (full) | Accumulative | + | +2 | [0.5, 3] | 1 | base (full is the midpoint) |
+Accumulative (light) | Accumulative | + | +1 | [0.5, 3] | 1 | reduced modifier |
−Foundational | Foundational | − | −18 | [10, 25] | 1 | base |
-Accumulative (ASCII hyphen) | Accumulative | − | −2 | [0.5, 3] | 1 | base; hyphen normalized to minus |
−Foundational (terminal-band texture) | Foundational | − | −18 | [10, 25] | 1 | terminal-band texture, magnitude unchanged |
Eleven fork files carry path_bucket_locked and variant columns instead of delta_class_bounded,
with the polarity in the direction column: generative (15), corrosive (15), neutral (17).
These are the post-Ch-65 terminal forks whose magnitude is not assigned per fork — it rides the
§3.4 path lock-in band. The dispatcher applies the sign only (generative +1, corrosive −1,
neutral 0) and adds no independent integer, because the locked band already reflects the path. They
are keyed in the machine copy as direction:generative, direction:corrosive, direction:neutral
with a null value.
None. All 22 distinct delta_class_bounded tokens and all three direction polarity tokens resolve
to a §5.1 class or to the neutral zero. No [DECISION NEEDED - JOSH] flag was raised and no class
was invented. If a future fork introduces a token that does not reduce to Foundational, Substantial,
Accumulative, or neutral, the generator leaves it out of the map and lists it under
_meta.decision_needed in the JSON for Josh, rather than inventing a band.
docs/spine/DECISIONS_PENDING_JOSH.md (the ✅ 2026-07-23cblock, "the delta map is DIRECTOR-DERIVED... ILLUSTRATIVE under the tuning firewall").
_source/01_Tier_1_Foundation/T1_Integrity_Paths_Worldstates_Master [ACTIVE v2.1].md §5.1 (lines 165, 167, 169, 171), with §5.5.3 confirming no new band.build/spine_rows/*/fork_options.csv, delta_class_bounded and direction columns.build/integrity_delta_map.json. Generator: scratchpad/gen_delta_map.py (deterministic; re-run to refresh).