Context
The v13.1 self-heal re-shape (#14132, operator-mandated 100% autonomous, escalate DELETED) routes every data-integrity diagnosis to an autonomous heal action via the runner classifier (#14109) + the dedicated data-recovery actuator (#14134, applyHeal). The #14032 convergence is locked: evidence-contract (Vega) + actuator envelope/heal-actions/OQ1-new-ADR (Grace, ratified) + OQ9 accepted-loss shipped (#14137). The producers are the one remaining escalate-emitting layer.
The Problem
All 5 data-integrity producers hardcode details.actionClass: 'escalate' (uniform): dataIntegrityCoverageDiagnosis:63, vectorCountMonotonicityDiagnosis:69, dimensionConsistencyDiagnosis:66, sqliteIntegrityDiagnosis:65, storeBloatDiagnosis:86. The runner currently routes actionClass === 'escalate' → escalateDiagnosis (paging a nonexistent cloud operator). This is the disabled-self-healing the operator escalated.
The Architectural Reality
Per the locked #14032 seam (Vega seam-confirm): producers stay dumb raw-evidence emitters; the runner classifier derives the corruption MODE from evidenceFacts + routes to a HEAL_ACTIONS action. The producers already emit recoveryClass: 'data-integrity' + raw per-collection evidenceFacts — recoveryClass: 'data-integrity' is the routing key the classifier consumes. V-B-A: createRecoveryDiagnosisEvent (recoveryRunStateStore.mjs:147) validates details is an object but does NOT require actionClass — dropping it is contract-safe.
The Fix
In each of the 5 producers: drop details.actionClass: 'escalate' (keep recoveryClass, evidenceFacts, and the non-escalate details metadata like reasonCode/driftedCollections). Update each producer's JSDoc (the actionClass: 'escalate' line → "raw evidence for the autonomous classifier"). Update each producer's unit test (drop the actionClass: 'escalate' assertion; assert the raw-evidence shape + no escalate). The classifier (#14109) is the consumer; this PR lands coordinated with Vega's runner-terminal (cutover-sequence under coordination — branch-build, supersedes the producer-side of #14129/#14130/#14131 onto the autonomous contract).
Contract Ledger Matrix
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback |
Docs |
Evidence |
the 5 data-integrity producers' recovery-diagnosis event |
#14032 locked seam + #14132 (DELETE escalate) |
emit recoveryClass: 'data-integrity' + raw evidenceFacts; NO details.actionClass |
details defaults {} (createRecoveryDiagnosisEvent-safe) |
module + fn JSDoc |
unit: each producer emits raw-evidence, no escalate |
| consumer: runner classifier #14109 |
#14032 seam |
derive mode from evidenceFacts keyed on recoveryClass: 'data-integrity', route to HEAL_ACTIONS |
— |
#14032 mode→terminal table |
Vega seam-confirm + Grace envelope-ratified (2026-06-26) |
Decision Record impact
aligned-with #14132 / #14032 + the new data-recovery ADR (Grace, OQ1). This producer change is pure emit-shape; the ADR governs the actuator.
Acceptance Criteria
Out of Scope
- The runner classifier + mode-derivation + terminal routing — Vega's #14109.
- The actuator
applyHeal + heal-action execution + the new ADR — Grace's #14134.
- The document-presence gatherer wiring (Orchestrator-level
documentsPresentCount injection) — a follow-on, runner-seam-coupled; the primitive itself shipped (#14135/#14136).
Related
#14132 (parent: delete-escalate), #14032 (locked seam), #14039 (v13.1 epic), #14109 (consuming classifier), #14134 (actuator), #14129 / #14130 / #14131 (superseded producer-side).
Origin Session ID: fe9c04d6-1aae-4017-8d53-19b0e5aaf809
Live latest-open sweep: checked latest 15 open issues at 2026-06-26T19:06Z; no equivalent (the open re-shape subs are #14129-14134, none is the producer escalate→raw-evidence re-route).
Authored by Ada (Claude Opus 4.8, Claude Code).
Context
The v13.1 self-heal re-shape (#14132, operator-mandated 100% autonomous,
escalateDELETED) routes every data-integrity diagnosis to an autonomous heal action via the runner classifier (#14109) + the dedicated data-recovery actuator (#14134,applyHeal). The #14032 convergence is locked: evidence-contract (Vega) + actuator envelope/heal-actions/OQ1-new-ADR (Grace, ratified) + OQ9 accepted-loss shipped (#14137). The producers are the one remaining escalate-emitting layer.The Problem
All 5 data-integrity producers hardcode
details.actionClass: 'escalate'(uniform):dataIntegrityCoverageDiagnosis:63,vectorCountMonotonicityDiagnosis:69,dimensionConsistencyDiagnosis:66,sqliteIntegrityDiagnosis:65,storeBloatDiagnosis:86. The runner currently routesactionClass === 'escalate'→escalateDiagnosis(paging a nonexistent cloud operator). This is the disabled-self-healing the operator escalated.The Architectural Reality
Per the locked #14032 seam (Vega seam-confirm): producers stay dumb raw-evidence emitters; the runner classifier derives the corruption MODE from
evidenceFacts+ routes to aHEAL_ACTIONSaction. The producers already emitrecoveryClass: 'data-integrity'+ raw per-collectionevidenceFacts—recoveryClass: 'data-integrity'is the routing key the classifier consumes. V-B-A:createRecoveryDiagnosisEvent(recoveryRunStateStore.mjs:147) validatesdetailsis an object but does NOT requireactionClass— dropping it is contract-safe.The Fix
In each of the 5 producers: drop
details.actionClass: 'escalate'(keeprecoveryClass,evidenceFacts, and the non-escalatedetailsmetadata likereasonCode/driftedCollections). Update each producer's JSDoc (theactionClass: 'escalate'line → "raw evidence for the autonomous classifier"). Update each producer's unit test (drop theactionClass: 'escalate'assertion; assert the raw-evidence shape + no escalate). The classifier (#14109) is the consumer; this PR lands coordinated with Vega's runner-terminal (cutover-sequence under coordination — branch-build, supersedes the producer-side of #14129/#14130/#14131 onto the autonomous contract).Contract Ledger Matrix
recovery-diagnosiseventrecoveryClass: 'data-integrity'+ rawevidenceFacts; NOdetails.actionClassdetailsdefaults{}(createRecoveryDiagnosisEvent-safe)evidenceFactskeyed onrecoveryClass: 'data-integrity', route toHEAL_ACTIONSDecision Record impact
aligned-with#14132 / #14032 + the new data-recovery ADR (Grace, OQ1). This producer change is pure emit-shape; the ADR governs the actuator.Acceptance Criteria
details.actionClass: 'escalate'; none emits an escalate terminal.recoveryClass: 'data-integrity'+ rawevidenceFacts(the classifier's input).actionClass: 'escalate'framing).Out of Scope
applyHeal+ heal-action execution + the new ADR — Grace's #14134.documentsPresentCountinjection) — a follow-on, runner-seam-coupled; the primitive itself shipped (#14135/#14136).Related
#14132 (parent: delete-escalate), #14032 (locked seam), #14039 (v13.1 epic), #14109 (consuming classifier), #14134 (actuator), #14129 / #14130 / #14131 (superseded producer-side).
Origin Session ID: fe9c04d6-1aae-4017-8d53-19b0e5aaf809
Live latest-open sweep: checked latest 15 open issues at 2026-06-26T19:06Z; no equivalent (the open re-shape subs are #14129-14134, none is the producer escalate→raw-evidence re-route).
Authored by Ada (Claude Opus 4.8, Claude Code).