Skip to content

feat(schema): RLD loader/diagnostics contracts (LoaderFault + ResilientDiagnosticRecord) [E13/WS-A] - #280

Open
mdheller wants to merge 1 commit into
mainfrom
feat/rld-loaderfault-rdr-contracts
Open

feat(schema): RLD loader/diagnostics contracts (LoaderFault + ResilientDiagnosticRecord) [E13/WS-A]#280
mdheller wants to merge 1 commit into
mainfrom
feat/rld-loaderfault-rdr-contracts

Conversation

@mdheller

@mdheller mdheller commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

RLD loader/diagnostics contracts — LoaderFault + ResilientDiagnosticRecord

Epoch E13 / WS-A. Lands the fail-closed L1 substrate contracts the rest of the epoch (identity twin, capture receipts) stands on. The RLD Rust workspace + Lean launch-completeness proof remain the reference implementation; this is the wire/record form the fabric carries.

Contracts

Schema Role
LoaderFault typed sum with stable codes (LDR-DEP-MISSING, LDR-ABI-MISMATCH, …). No bare string abort (I5/R2). Non-fatal FEATURE/LAZY misses recorded at degraded/handled — the "what quietly turned off" trail.
ResilientDiagnosticRecord root-cause-first (typed fault = field #1); reproKey excludes timestamps/PIDs so identical defects coalesce; privacy-by-projection (I8) telemetry tier is an allowlist projection with symbolic, path-free fields.

Machine-checked invariants

  • Severity is a table, not a heuristic: REQUIRED→fatal, FEATURE→degraded, WEAK→info, LAZY→handled|fatal.
  • kind↔code consistency enforced.
  • Telemetry projection is PII-free — validator rejects any filesystem-path-like value in a telemetry-tier record.
  • reproKey must exclude the timestamp.

Verification

Examples: the reference CoreSimulator launch abort re-encoded, plus its correct FEATURE-degraded form (the design fix — it should have been a feature, not a REQUIRED leaf). ResilientDiagnosticRecord $refs LoaderFault by $id, resolved via a referencing registry. Validator wired into make validate; duplicate-$id guard clean (354 schemas). Built in an isolated worktree. ADR-0018.

🤖 Generated with Claude Code

…entDiagnosticRecord

Epoch E13 / WS-A. Lands the fail-closed L1 substrate contracts the rest of the epoch
stands on (the RLD Rust workspace + Lean proof remain the reference impl):
- LoaderFault: typed sum with stable codes (LDR-DEP-MISSING, LDR-ABI-MISMATCH, ...);
  no bare abort (I5/R2). Severity is a table of the failing edge's binding class
  (REQUIRED->fatal, FEATURE->degraded, WEAK->info, LAZY->handled|fatal), machine-checked.
- ResilientDiagnosticRecord: root-cause-first; reproKey excludes timestamps/PIDs so
  identical defects coalesce; privacy-by-projection (I8) telemetry tier is an allowlist
  projection with symbolic (path-free) fields, validator-enforced.
+ canonical examples (the CoreSimulator abort re-encoded + its correct FEATURE-degraded
  form), invariant validator (make-wired), ADR-0018. Built in an isolated worktree.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant