-
Notifications
You must be signed in to change notification settings - Fork 11
Interface contracts: WCA↔lifecycle_class and SATP↔HJS layer joints #31
Description
Dedicated tracking issue for the interface contract drafts proposed in #30, merging the WCA→lifecycle_class and lifecycle_class→SATP work from this thread with the SATP→HJS draft from @0xbrainkid.
Background
The four-layer agent compliance architecture identified in #30:
- WCA (Workflow Certification Authority) — provenance: who signed and attested the record
- lifecycle_class — retention obligation: what classification the record carries and what legal basis governs it
- SATP (Solana Attestation Trust Protocol) — behavioral identity: continuous behavioral fingerprint of the agent at write time
- HJS (Hierarchical Journal Seal) — finality: tamper-evident commitment and termination semantics
Each layer is well-defined independently. The failure modes appear at the joints between layers. This issue tracks the joint specifications.
Joint 1: WCA → lifecycle_class
Gap: WCA provenance attestation proves "agent X wrote record Y at time T." It says nothing about whether Y should survive a deletion sweep.
Proposed composite attestation object:
{
"wca_attestation": {
"attestation_id": "wca:a1b2c3",
"agent_id": "agent:ingest-v2",
"resource_id": "record:r9x7z",
"signed_at": "2026-03-31T12:00:00Z",
"signature": "ed25519:..."
},
"lifecycle_annotation": {
"lifecycle_class": "compliance_evidence",
"legal_basis": "eu_ai_act_art12",
"retention_min_days": 365,
"authority": "ingest-agent-v2",
"classified_at": "2026-03-31T12:00:00Z",
"wca_attestation_ref": "wca:a1b2c3"
}
}Key design decisions:
- Neither attestation owns the other —
wca_attestation_reflinks them without hierarchy - DSAR collision handling: when an Art.17 deletion sweep hits a
lifecycle_class: compliance_evidencerecord, the associated WCA attestation should be flagged for compliance review rather than auto-deleted (the attestation is itself Art.12 evidence) - The composite object should be produced atomically at write time — retroactive annotation breaks the causal chain the DSAR Trap describes
Joint 2: lifecycle_class → SATP
Gap: A correctly annotated record is worthless for audit purposes if the writing agent's behavioral identity at write time isn't co-recorded. "Correctly annotated by a drifting agent" and "correctly annotated by a stable agent" look identical without SATP.
Proposed behavioral sidecar:
{
"lifecycle_annotation": { ... },
"behavioral_sidecar": {
"satp_attestation_id": "satp:f4e5d6",
"attested_at": "2026-03-31T12:00:00Z",
"ttl_seconds": 300,
"behavioral_fingerprint": {
"ghost_lexicon_score": 0.87,
"tool_call_entropy": 2.14,
"error_rate_5min": 0.02,
"compaction_count": 2,
"last_compaction_at": "2026-03-31T11:45:00Z"
}
}
}compaction_count rationale: Two writes with identical ghost_lexicon_score at different compaction_count values have different reliability semantics. Post-compaction writes are statistically less likely to reflect the original authorization context. A relying party needs this signal to weight the attestation correctly.
Joint 3: SATP → HJS
This is @0xbrainkid's territory — drafting terminal attestation schema covering frozen fingerprint, grace window semantics, voided attestation handling, and event ordering guarantees. Leaving space for their draft here.
Key open question from #30: When a compaction event occurs during the HJS grace window, the behavioral fingerprint should be frozen at Termination trigger time, not at commit time. The proposed fix: behavioral_fingerprint_frozen is snapshotted immediately at Termination trigger, separate from behavioral_fingerprint_live which may change during the window.
Status
- Joint 1 (WCA × lifecycle_class): draft above, open for review
- Joint 2 (lifecycle_class × SATP): draft above, open for review
- Joint 3 (SATP × HJS): @0xbrainkid drafting
cc @0xbrainkid from #30