| AI_MEMORY_REQUIRE_AGENT_ATTESTATION (required by default on HTTP direct-write only; =0 opts out everywhere) |
Surface-scoped since v1.0.0 (#1985, correcting #1751): an unsigned HTTP direct write (POST /api/v1/memories(+/bulk)) is refused 403 ATTESTATION_FAILED; MCP memory_store and CLI store are operator-as-actor and stay permissive, landing claimed. =1 forces strict on every surface; =0 restores the permissive posture everywhere. |
unsigned write → 403 ATTESTATION_FAILED |
PASS — unsigned write → 403 ATTESTATION_FAILED |
| AI_MEMORY_FED_REQUIRE_SIG=1 |
/sync/push requires a valid per-message Ed25519 signature. |
missing / invalid signature → 401 |
PASS — 401 on missing / invalid X-Memory-Sig |
| AI_MEMORY_FED_REQUIRE_NONCE=1 |
Per-message nonce freshness; byte-for-byte replays are rejected. |
forged sig+nonce push refused on repeat → 401 |
PASS — 401 on nonce replay |
| AI_MEMORY_FED_REQUIRE_PEER_ENROLLMENT=1 |
Receivers fail closed on any unenrolled peer-id (zero-touch CA trust). |
unenrolled peer on /sync/since → 401 peer_not_enrolled |
PASS — 401 peer_not_enrolled for unenrolled peers |
| AI_MEMORY_PERMISSIONS_MODE=enforce |
K3/K9 governance gate enforced (not advisory). |
admin endpoint as non-admin → 403 |
PASS — PERMISSIONS_MODE=enforce live |
| AI_MEMORY_GOVERNANCE_FAIL_OPEN_ON_ERROR=0 |
Governance fails closed — a rule-consultation error blocks the write. |
fail-closed posture asserted in capabilities envelope |
PASS — GOVERNANCE_FAIL_OPEN_ON_ERROR=0 (fail-closed) |
| Form 5 — confidence (AUTO / SHADOW / DECAY) |
Auto-confidence calibration, shadow-mode scoring, freshness decay; curator sweeps on every peer. |
curator daemon active + decay sweep observed |
PASS — AUTO_CONFIDENCE / SHADOW / DECAY set + curator daemon running on all 9 peers |
| Form 2 / Form 6 — namespace policy |
Synchronous atomise-before-embed (Form 2) + MemoryKind auto-classify (Form 6) via namespace standard. |
namespace standard present; auto-classify backfill observed |
PASS — namespace batman-policy standard bound (Form 2 sync-atomise + Form 6 auto-classify) |
| Form 7 — signed rules R001–R004 |
Operator-signed governance seed rules (sqlite-substrate-scoped). On the postgres peers of this hive the live governance is the env battery above. |
rules list → 4 enabled, attest_level=operator_signed (sqlite substrate) |
PARTIAL — Form-7 signed-rules (R001–R004) are sqlite-substrate-scoped; on postgres peers the env-battery controls above are the live governance (tracked #1536, out-of-NSA-scope) |
| V-4 signed-events hash chain |
Append-only, tamper-evident cross-row SHA-256 audit chain. |
per-peer verify-signed-events-chain exits 0 |
PASS — MCP/L4 signed_events tamper-evident chain verified (the postgres normal-write append is a separate storage-layer item #1542, out-of-NSA-scope) |