Skip to content

Commit 8f9e290

Browse files
committed
feat(p1): pass MIRRA continuity metadata through to witness artifacts
- Extract continuity_metadata from ExecutionDecision in engine.py - Pass through ActionDecision.annotations - Emit top-level continuity section in witness artifacts - Include in content_hash coverage P1 continuity metadata attestation complete.
1 parent c26db1f commit 8f9e290

2 files changed

Lines changed: 16 additions & 0 deletions

File tree

src/clawzero/runtime/engine.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1178,12 +1178,14 @@ def _normalize_mvar_result(
11781178
witness_signature = str(getattr(result, "witness_signature", "") or "")
11791179
trust_level = str(provenance.get("taint_level", "")).lower() or self._derive_trust_level(request)
11801180
enforcement_action = getattr(result, "enforcement_action", None)
1181+
continuity_metadata = getattr(result, "continuity_metadata", None) # P1 continuity attestation
11811182
annotations = {
11821183
"witness_signature": witness_signature,
11831184
"provenance": provenance,
11841185
"evaluation_trace": [str(item) for item in trace],
11851186
"enforcement_action": enforcement_action,
11861187
"taint_markers": self._extract_taint_markers(request),
1188+
"continuity_metadata": continuity_metadata, # P1 continuity attestation
11871189
}
11881190
decision = ActionDecision(
11891191
request_id=request.request_id,
@@ -1232,6 +1234,7 @@ def _normalize_mvar_result(
12321234
"evaluation_trace": result.get("evaluation_trace", []),
12331235
"enforcement_action": result.get("enforcement_action"),
12341236
"taint_markers": self._extract_taint_markers(request),
1237+
"continuity_metadata": result.get("continuity_metadata"), # P1 continuity attestation
12351238
},
12361239
)
12371240
return self._apply_mvar_compatibility_overrides(request, decision)

src/clawzero/witnesses/generator.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,19 @@ def generate(self, request: ActionRequest, decision: ActionDecision) -> dict:
102102
},
103103
"annotations": decision.annotations,
104104
}
105+
106+
# P1 Continuity Metadata Attestation
107+
# Emit top-level continuity section from governor's continuity_metadata
108+
continuity_metadata = decision.annotations.get("continuity_metadata")
109+
if continuity_metadata and isinstance(continuity_metadata, dict):
110+
witness["continuity"] = {
111+
"continuity_hash": continuity_metadata.get("continuity_hash"),
112+
"protocol_version": continuity_metadata.get("protocol_version"),
113+
"constitutional_classification": continuity_metadata.get("constitutional_classification"),
114+
"ccl_source": continuity_metadata.get("ccl_source"),
115+
"violation_count": continuity_metadata.get("violation_count", 0),
116+
}
117+
105118
witness["content_hash"] = self._content_hash(witness)
106119

107120
decision.witness_id = witness_id

0 commit comments

Comments
 (0)