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

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

SchemaRole
LoaderFaulttyped 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.
ResilientDiagnosticRecordroot-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
mdhellerforce-pushed the feat/rld-loaderfault-rdr-contracts branch from 3994881 to 6a21e9fCompareAugust 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
mdhellerforce-pushed the feat/rld-loaderfault-rdr-contracts branch from 7408630 to f470adeCompareAugust 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 mainAug 4, 2026
9 checks passed
@mdheller
mdheller deleted the feat/rld-loaderfault-rdr-contracts branch August 4, 2026 19:54
Sign up for freeto 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

@mdheller