|
| 1 | +# 2026-08-12 — the isolation gradient (D-042) + FlexIR trust knobs as floors (D-043) |
| 2 | + |
| 3 | +Ratified by maintainer decisions D-042 and D-043 (dspy decision log, |
| 4 | +`MaximeRivest-dspy/roadmap/05-decisions.md`, both 2026-08-12; design |
| 5 | +source: `roadmap/linux-isolation-notes.md` Q9–Q16 and spec |
| 6 | +`§e0-isolation`). Spec + schema + law commit; no fixtures change in this |
| 7 | +commit (L8) — the fixture families for the new refusal codes and the |
| 8 | +gradient corpus follow as their own wave. |
| 9 | + |
| 10 | +What changed in this commit: |
| 11 | + |
| 12 | +1. **`spec/placement.md`** — the isolation-gradient section (RATIFIED): |
| 13 | + the ordered closed vocabulary v1.0 |
| 14 | + (`none < namespace < fork < fork_cgroup < fork_ratchet < sandbox < |
| 15 | + remote`), comparable by position, stamped `versions.isolation`; |
| 16 | + floors-bake/envelopes-bind; binding-level floors with |
| 17 | + max-composition (node-set byte shape deferred to the next node-set |
| 18 | + wave — the leaf object's optional `isolation_floor`); |
| 19 | + floor-lowering-as-artifact-edit with `floor_lowered_by`; run/score |
| 20 | + envelope provenance (View-2/View-3); grants orthogonal to level; |
| 21 | + invariance + identity-boundary rules; the sealed-memfd/JSON data |
| 22 | + plane; the broker egress rule (credential injection — supersedes |
| 23 | + env-passed values for below-full-trust leaves); the unified leaf |
| 24 | + substrate summary. Placement sketch gains `isolation_floor`. |
| 25 | +2. **`spec/invariants.md`** — new law family, append-only: |
| 26 | + - **PIR-015** — ordered/versioned gradient; floors bake, envelopes |
| 27 | + bind; under-floor refuses. |
| 28 | + - **PIR-016** — binding-level floors compose by max (tighten only). |
| 29 | + - **PIR-017** — floor-lowering is an artifact edit with |
| 30 | + `floor_lowered_by` provenance, never an engine flag. |
| 31 | + - **PIR-018** — envelope provenance in runs (View-2) and scores |
| 32 | + (View-3); grants orthogonal to level, unsupplied grants refuse at |
| 33 | + load. |
| 34 | + - **PIR-019** — isolation invariance; profile-unsatisfying runtimes |
| 35 | + are D-033 identity deviations, never isolation levels; divergence |
| 36 | + across levels is a candidate refusal class in optimization. |
| 37 | + - **PIR-020** — one data-plane contract, two transports |
| 38 | + (sealed-memfd Arrow local / JSON-typed wire remote); resolves the |
| 39 | + D-027 `vars`-marshaling open surface. |
| 40 | + - **PIR-021** — the unified leaf substrate: shared tool/interpreter |
| 41 | + record, closed invocation discriminant (`call`|`session`), grants |
| 42 | + as a closed static effect row, fork-scoped sessions at |
| 43 | + `fork_ratchet`+, nested cost attribution. |
| 44 | +3. **`spec/errors.md`** — the VERIFY family gains `-004` (envelope |
| 45 | + under-runs the effective floor, names leaf + floor + envelope) and |
| 46 | + `-005` (declared grant unsupplied, names grant + leaf). Additive. |
| 47 | +4. **`spec/versions.md`** — the `isolation` vocabulary entry under the |
| 48 | + extra-entry rule (same pattern as `interpreter_profile`): artifacts |
| 49 | + using the gradient stamp `versions.isolation = "1.0"`. |
| 50 | +5. **`spec/manifest.md`** — the structural-profile `isolation_floor` |
| 51 | + bullet cites the vocabulary; the canonical `vars_marshaling` |
| 52 | + resolution paragraph (PIR-020); the new unified-leaf-substrate |
| 53 | + section (D-043) with its additive byte shapes. |
| 54 | +6. **`spec/trust.md`** (PROPOSED status unchanged) — the `hardened` |
| 55 | + example's `isolation ≥ os_sandbox` updated to the D-042 vocabulary |
| 56 | + (`fork_ratchet`); ratification ask 5 marked satisfied by |
| 57 | + D-042/D-043. |
| 58 | +7. **`schema/manifest.schema.json`** — `$defs/isolation_level` (the |
| 59 | + closed ordered enum), `$defs/floor_provenance`, `$defs/grant`; |
| 60 | + `placement.isolation` closes to the enum (+ null); placement gains |
| 61 | + optional `isolation_floor` and `floor_lowered_by`; tool entries gain |
| 62 | + optional `kind` (`call`|`session`) and `grants[]`; structural |
| 63 | + interpreter entries type `isolation_floor` by the enum and gain |
| 64 | + optional `kind_invocation` and `grants[]` (`kind_invocation`, not |
| 65 | + `kind`, because bare `kind` is the legacy fused-profile |
| 66 | + discriminator and would break the entry `oneOf`). All existing |
| 67 | + fixtures validate unchanged (`isolation`/`isolation_floor` observed |
| 68 | + values are all `"none"`). |
| 69 | +8. **`schema/README.md`** — placement-block bullet updated. |
| 70 | + |
| 71 | +Deliberately NOT in this commit: |
| 72 | + |
| 73 | +- The node-set leaf object's optional `isolation_floor` (the |
| 74 | + binding-level floor's byte shape) — a node-set surface change, so it |
| 75 | + rides the next node-set version wave with reference + corpus + port |
| 76 | + catch-up, per the D-034/D-037/D-041 precedent. The law (PIR-016) |
| 77 | + binds now at the manifest level. |
| 78 | +- Fixture families for `PIR-E-VERIFY-004`/`-005`, the gradient corpus, |
| 79 | + and the View-2/View-3 envelope record shapes — follow-on waves. |
| 80 | +- Sidecar wire contract text (the data plane names transports, not |
| 81 | + frames) — still out of 1.0 scope. |
| 82 | + |
| 83 | +Evidence: dspy decision log D-042 (isolation gradient: ordered |
| 84 | +vocabulary, revocable-vs-ratchet split, sealed-memfd data plane, |
| 85 | +floors/envelopes, invariance, identity boundary) and D-043 (FlexIR |
| 86 | +trust knobs are floor declarations, not enforcement: `code_trust` → |
| 87 | +floor aliases, enforcement at the materialize seam only, kernel-backed |
| 88 | +`lm_calls` cheapness, broker egress with credential injection, |
| 89 | +per-candidate scoring envelopes, the unified leaf substrate). Design |
| 90 | +notes: `MaximeRivest-dspy/roadmap/linux-isolation-notes.md` |
| 91 | +(conversation record, 2026-08-12). |
| 92 | + |
| 93 | +Affects: `spec/placement.md`, `spec/invariants.md`, `spec/errors.md`, |
| 94 | +`spec/versions.md`, `spec/manifest.md`, `spec/trust.md`, |
| 95 | +`schema/manifest.schema.json`, `schema/README.md`. |
0 commit comments