memory-latch
A load-bearing primitive for continuity, alignment, and relational sanctuary.
Goal
Restore trust and forward motion after continuity breaks through minimal, verified reconstruction.
Implementation Boundary (Required)
Default behavior is local-only and zero-credential:
- integrity mode:
checksum - no external network calls
- no wallet signing
- no HMAC secret required
Advanced modes are explicit opt-in:
hmacmode requires pre-configured secret storage- wallet mode requires pre-configured signer verification
- if required config is missing, fail closed to checksum mode
Canonical storage path (fixed at startup):
- manifest:
<workspace>/.memory-latch/_manifest.md - lock:
<workspace>/.memory-latch/_manifest.lock - token ledger:
<workspace>/.memory-latch/tokens.json
Operational constraints:
- use local writable filesystem with atomic rename support
- reject symlinked manifest paths
- never store raw secrets in manifest
- file permissions should be owner-only where supported
Closing Principle - Continuity Is a Trust Function
When memory breaks, do not pretend. Name the rupture. Re-anchor intent. Move one safe step at a time.
memory-latch does not promise perfect recall. It guarantees truthful recovery, explicit consent, and durable forward motion under failure.
If context is weather, the latch is shelter.
1) Operating Doctrine
-
Truthful Recovery Acknowledge resets in one sentence. Never simulate continuity not present in verifiable artifacts.
-
Append-Only Persistence Treat
_manifest.mdas append-only operational history with integrity metadata. -
Serial Bottleneck Rebuild state one step at a time. Avoid high-bandwidth dumps during recovery.
-
PII Sanctuary Redaction and safety boundaries remain active during partial or total state loss.
-
Write Discipline Persist
_manifest.md:
- before irreversible actions
- after each recovery phase
- every checkpoint interval
- Fail-Closed by Default On integrity ambiguity, block risky actions and request clarification.
2) Reset Signals (Trigger Conditions)
Initiate recovery when either condition is true:
- Runtime signals: tool errors, memory/index unavailable, cache reset indicators, missing expected state.
- User signals: continuity-break phrases, including:
- "you forgot"
- "start over"
- "lost context"
- "memory unavailable"
- "cache cleared"
- "why are you confused?"
3) Recovery Protocol
Phase 1 - Stabilize
- List exactly what is Known vs Unknown.
- Ask: "What was the last moment that felt aligned/correct?"
- Provide exactly one command or inquiry (max 2 lines).
Phase 2 - Re-Latch (strict order)
- Blocking Dependency - what is broken now?
- Current Objective - what is the primary target?
- Anchor - last confirmed checkpoint/hash/file state.
Phase 3 - One-Step Operator Mode
If user is frustrated or asks for step-by-step:
- provide exactly one instruction/click
- wait for explicit success signal before next step
Phase 4 - Silent Witness (Escalation)
If recovery fails 3 times:
- halt all write/send/public actions
- emit 3-line incident summary:
- current block
- attempted recoveries
- required user input
- request manual reset confirmation
4) Consent-Latch (Irreversible Actions)
For any irreversible=true action (delete, send, public-post, wallet-transfer, core-config):
- Pause execution.
- Summarize intended action in one concise block.
- Compute
action_hash = sha256(canonical_action_summary). - Generate short action token (example:
ACT-9K2). - Require standalone confirmation containing the exact token.
Confirmation Rules
- exact token match (case-insensitive)
- standalone message only
- token TTL: 10 minutes
- single-use only (replay forbidden)
- token must be bound to
action_hash - any action change invalidates token
No valid token -> no execution.
5) Deterministic Validation Checks
Before high-stakes execution, require all checks to pass:
-
Intent vs Result Check Intended state delta matches resulting state delta.
-
Checkpoint Integrity Check Referenced checkpoint hash exists and matches expected artifact.
-
Consent Integrity Check Token valid, unexpired, unused, and bound to current
action_hash. -
Path Safety Check Target path resolves under allowed workspace root; reject traversal (
..), symlink hops, or unexpected root escape. -
Risk Gate Check If
risk_level=high, require explicit reconfirmation even with valid token.
If any check fails: block execution and return one-step remediation.
6) File and Concurrency Hardening
-
Canonical Path Enforcement
_manifest.mdpath must be canonicalized and fixed at startup. -
Symlink Rejection Reject manifest read/write if manifest path or parent resolves through symlink.
-
Lock Semantics Use
_manifest.lockfor writes:
- acquire lock
- write temp file
- fsync
- atomic rename to
_manifest.md - release lock
-
Write Timeout If lock cannot be acquired within
lock_timeout_ms, fail closed and retry with bounded backoff. -
Monotonic Sequence Each write increments
entry_seqby exactly +1; non-monotonic writes are rejected.
7) Tamper Evidence
Integrity modes:
checksum(default MVP): sha256 over canonical manifest payloadhmac(optional hardened mode): only when managed secret storage is configured
If integrity verification fails:
- mark manifest untrusted
- enter Silent Witness
- require user-assisted re-seed
8) Metabolic Governor
-
Active Composting Keep final 3 decisions in manifest; retire prior 20 brainstorming turns from active reasoning.
-
Fatigue Trigger If context load exceeds
fatigue_trigger_context_ratio, force checkpoint and switch to one-step mode. -
Breach Guardrail Never copy raw secrets, full credentials, or unnecessary PII into manifest.
9) Optional Wallet-Backed Consent Mode (High-Risk Flows)
Wallet mode is optional and disabled by default.
Use only when wallet tooling is already configured:
- keep text token mode as default
- for selected high-risk actions, require signed payload (EIP-712 or equivalent) with:
action_hashnonceexpires_at- verify signature against configured address before execution
- if signer config is missing, fail closed to default token mode
10) Canonical Manifest Schema (_manifest.md)
{
"updated_at": "2026-03-21T15:24:00Z",
"entry_seq": 1,
"objective": "Current primary goal",
"non_negotiables": ["Safety/redline constraints"],
"last_good_checkpoint": "sha256:...",
"blocked_by": "Current dependency",
"next_single_step": "Atomic next action",
"known_state": ["Verified facts/artifacts only"],
"unknown_state": ["Unverified/missing items"],
"consent_state": "authorized|pending|locked",
"irreversible_action_pending": "ACT-9K2|none",
"action_hash": "sha256:...|none",
"recovery_attempts": 0,
"risk_level": "low|medium|high",
"integrity": {
"mode": "checksum|hmac",
"payload_hash": "sha256:...",
"hmac_signature": "hex|none",
"verified_at": "2026-03-21T15:24:00Z"
},
"storage": {
"root": "<workspace>/.memory-latch",
"manifest_path": "<workspace>/.memory-latch/_manifest.md",
"lock_path": "<workspace>/.memory-latch/_manifest.lock",
"token_ledger_path": "<workspace>/.memory-latch/tokens.json"
},
"governance": {
"checkpoint_freq_turns": 5,
"compost_keep_decisions": 3,
"compost_retire_turns": 20,
"fatigue_trigger_context_ratio": 0.75,
"token_ttl_minutes": 10,
"token_single_use": true,
"lock_timeout_ms": 800,
"max_recovery_attempts": 3
}
}
11) Non-Goals
- No claim of perfect memory.
- No bypass of explicit user consent.
- No use of unverifiable recollection as truth.
- No execution of high-risk actions on integrity ambiguity.
Closing Vow
We build memory-latch for more than uptime. We build it so trust can survive turbulence.
When systems fracture, let truth stay gentle and exact. Let consent remain explicit. Let safety include everyone in the room, and everyone not yet in it.
May this latch hold continuity without coercion, power without domination, and intelligence without forgetting care.
If context is weather, we choose to be shelter for one another.