|
| 1 | +# L0 Genesis Covenant — the source-canon discipline the schemas enforce |
| 2 | + |
| 3 | +This document is the **doctrinal source** for the Phase-0 schema pack. It records *why* |
| 4 | +the schemas carry the constraints they carry. The verse references below are cited as a |
| 5 | +**source of engineering doctrine and provenance — not as executable scripture**. Nothing |
| 6 | +here runs; the enforcement lives in `schemas/*.schema.json` and `tools/validate.py`. |
| 7 | + |
| 8 | +The through-line: a governed system must be **honest about what it knows, immutable about |
| 9 | +what it has recorded, and closed when unsure**. Five disciplines make that concrete. |
| 10 | + |
| 11 | +## The disciplines |
| 12 | + |
| 13 | +### 1. Dual witness — a matter is established by two |
| 14 | +A single attestation is not enough to make a world-changing claim true. Every |
| 15 | +`ArtifactRecord`, and every world-changing `PolicyDecision` = `ALLOW`, must carry **two |
| 16 | +witnesses of different kind**: a **chart** witness (a signer / identity attestation) AND |
| 17 | +a **method** witness (a validator / verification attestation). One signer alone, or two |
| 18 | +validators alone, does not establish the matter. |
| 19 | +Enforced by: `common.schema.json#/$defs/WitnessesDualType` (`minItems: 2` + `contains` |
| 20 | +chart + `contains` method), required on `ArtifactRecord.witnesses`. |
| 21 | + |
| 22 | +### 2. Boundary stones — do not move the landmark |
| 23 | +Content-address fields are immutable boundary markers. `digest` and `provenance_root` |
| 24 | +must be real content hashes: `^(sha256|sha3-256):[0-9a-f]{64}$`. A record whose boundary |
| 25 | +stone is malformed is rejected — you cannot quietly re-draw the line later. |
| 26 | +Enforced by: `common.schema.json#/$defs/ContentHash`. |
| 27 | + |
| 28 | +### 3. Weights and measures — a just weight states its terms |
| 29 | +No naked numbers. Any metric/measurement declares `sample_size`, `snr` (a number, or an |
| 30 | +explicit `"n/a"` when signal-to-noise does not apply), and `units`. A measurement that |
| 31 | +hides its sample size or units is a false balance. |
| 32 | +Enforced by: `common.schema.json#/$defs/Measurement`, used wherever metrics appear. |
| 33 | + |
| 34 | +### 4. Fail-closed verdicts — absence of proof is denial |
| 35 | +The policy plane's verdict enum is `ALLOW | DENY | REQUIRE_APPROVAL`; there is no |
| 36 | +implicit allow. A `Twin` MUST NOT reach `READY` without `identity` + `policy_refs` + |
| 37 | +`memory_refs` present and non-empty — it cannot go live blind. When in doubt, the system |
| 38 | +denies or escalates. |
| 39 | +Enforced by: `twin.schema.json` (`allOf` / `if READY then required + non-empty`), |
| 40 | +`policy_decision.schema.json` (verdict enum + world-changing-ALLOW dual-witness gate). |
| 41 | + |
| 42 | +### 5. Plumb-line — measure against the line, always |
| 43 | +The schemas are the plumb-line; `tools/validate.py selftest` is the act of holding every |
| 44 | +object against it in CI. Valids must validate and invalids must be rejected — teeth both |
| 45 | +ways. Drift in names or shapes is caught at the gate, not discovered in production. |
| 46 | +Enforced by: `.github/workflows/ci.yml` running the selftest on every push/PR. |
| 47 | + |
| 48 | +## Never weaponize |
| 49 | +This covenant governs **restraint**, not aggression. The disciplines exist to make the |
| 50 | +platform auditable and fail-closed toward its own operators — to refuse unproven, |
| 51 | +unwitnessed, or unbounded acts. They are not to be repurposed as offensive capability, |
| 52 | +surveillance beyond declared purpose, or a pretext to bypass a human approval gate. A |
| 53 | +Twin's power is bounded by its seed, its policy envelope, and these witnesses; that |
| 54 | +boundary is the point. |
| 55 | + |
| 56 | +## Verse → rule (condensed; doctrinal source, not executable scripture) |
| 57 | + |
| 58 | +| Source (doctrine) | Principle | Schema rule enforced | |
| 59 | +| ------------------------ | --------------------- | --------------------------------------------------------------- | |
| 60 | +| Deut 19:15 | Two-or-three witness | `witnesses[]` `minItems: 2`, chart + method (`WitnessesDualType`) | |
| 61 | +| Deut 19:14 / Prov 22:28 | Do not move landmarks | `ContentHash` on `digest` / `provenance_root` | |
| 62 | +| Lev 19:35-36 / Prov 11:1 | Just weights & measures | `Measurement` requires `sample_size`, `snr`, `units` | |
| 63 | +| (fail-closed governance) | No implicit allow | verdict enum; `Twin` READY requires identity+policy+memory | |
| 64 | +| Amos 7:7-8 | The plumb-line | `validate.py selftest` as CI baseline | |
| 65 | +| (never-weaponize) | Restraint, not force | bounded by seed + policy envelope + witnesses | |
| 66 | + |
| 67 | +The rows are a **map from doctrine to mechanism**. The mechanism is the schema; the |
| 68 | +doctrine is why. If a future change loosens a rule, it must be argued against this table. |
0 commit comments