Skip to content

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

Merged
mdheller merged 3 commits into
mainfrom
feat/rld-loaderfault-rdr-contracts
Aug 4, 2026
Merged

feat(schema): RLD loader/diagnostics contracts (LoaderFault + ResilientDiagnosticRecord) [E13/WS-A]#280
mdheller merged 3 commits 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

@mdheller
mdheller force-pushed the feat/rld-loaderfault-rdr-contracts branch from 3994881 to 6a21e9f Compare August 4, 2026 19:39
…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.
…silientDiagnosticRecord

contract-reconciliation CI requires the registry to be regenerated whenever a
schema is added; this PR's schemas were missing from it.
@mdheller
mdheller force-pushed the feat/rld-loaderfault-rdr-contracts branch from 7408630 to f470ade Compare August 4, 2026 19:47
A second conflict hunk (validate-multiverseal-twin-reference-impl vs
validate-rld-examples target blocks) was left unresolved after the previous
rebase, breaking make with 'missing separator'.
@mdheller
mdheller merged commit d48821f into main Aug 4, 2026
9 checks passed
@mdheller
mdheller deleted the feat/rld-loaderfault-rdr-contracts branch August 4, 2026 19:54
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