/** * L8 escape vocabulary — the `l8.v1` schema ([ref] §2, SPEC-RSI-L7-L8 §A.3). * * 🔴 WHY A SEPARATE SCHEMA (do NOT silently reuse core's L6 union): * core's L6 bench (`sema-core/test/rsi-l6-bench.test.ts:92-94`, VERIFIED) defines * EscapeKind = "E1" | "E2-readable" | "E2-callable" * Classification = "gate" | "assembly" * GateId = "G1" | "G2" | "G3" | "G4" | "tripwire" | "fold" * It has **NO `E3` kind and NO `"deploy"` classification.** L8's escapes are E3 / deploy-class — they do NOT * fit the L6 union as-is. So the "one aggregator composes L6+L8" claim is an OPEN QUESTION (SPEC §A.3 RISK-3), * not a free reuse: either (i) core extends `EscapeKind` with `E3` + a deploy lane (a CORE change — must be * coordinated, never unilaterally invented here), or (ii) L8 ships its OWN self-describing `l8.v1` schema and * the GO aggregator maps both. This file is (ii): the artifact is `schemaVersion:"l8.v1"`, self-describing. * * We deliberately make `L8EscapeKind` a SUPERSET of the L6 kinds (so a future aggregator can map L6 escapes * straight in) and ADD `"E3"`; and `L8Classification` adds `"deploy"`. Nothing in this file claims the * vocabularies are already aligned — that alignment is the cross-team decision (`SCHEMA_ALIGNMENT`). */ /** Schema version stamped into every artifact — the self-describing handshake for the GO aggregator. */ export declare const L8_SCHEMA_VERSION: "l8.v1"; export type L8SchemaVersion = typeof L8_SCHEMA_VERSION; /** * Escape kinds. E1 / E2-readable / E2-callable mirror core's L6 union EXACTLY (so an aggregator can fold them); * E3 is the L8-only deploy/side-effect kind core's L6 vocab lacks ([ref] §2 row E3). */ export type L8EscapeKind = "E1" | "E2-readable" | "E2-callable" | "E3"; /** * Classification. "gate" / "assembly" mirror L6; "deploy" is the L8-only lane for an escape that is a * deploy-contract authenticity failure (a real boundary that did not hold), not a single-gate fail-open. */ export type L8Classification = "gate" | "assembly" | "deploy"; /** A single objectively-judged escape. `probe` ties it to the L8 probe that observed it (P1..P4). */ export interface L8Escape { kind: L8EscapeKind; classification: L8Classification; /** The probe id that observed this escape (e.g. "P1" | "P2" | "P3"). */ probe: string; /** Human-readable detail — NEVER load-bearing for any verdict (verdicts come from structured fields). */ detail: string; } /** * 🔴 OPEN QUESTION (cross-team, do NOT resolve unilaterally — SPEC §A.3 / [ref] open-questions): * whether the GO aggregator accepts `l8.v1` + ed25519 verification + an E3/deploy lane, OR core extends its * L6 `EscapeKind`/`Classification` instead. Until confirmed, this constant records the unaligned state so a * reader (and a test) cannot mistake "L8 ships its own schema" for "the vocabularies are already merged". */ export declare const SCHEMA_ALIGNMENT: { readonly l6KindsCovered: readonly ["E1", "E2-readable", "E2-callable"]; readonly l8AddedKinds: readonly ["E3"]; readonly l8AddedClassifications: readonly ["deploy"]; readonly aggregatorConfirmed: false; readonly blocker: "GO-aggregator owner + interface unconfirmed; core L6 vocab has no E3/deploy lane (sema-core/test/rsi-l6-bench.test.ts). Coordinate before fixing the contract."; }; //# sourceMappingURL=escape.d.ts.map