Project Memory Guard
Validate every memory write against project and writeback rules. Prevent contamination and schema drift.
Input
Required fields:
raw_content— the content attempting to enter project memorycandidate_project_id— the project being written tomemory_type— type of memory: note, finding, task, summary, record, etc.source— where this came from: user message, paper, tool output, etc.timestamp— ISO-8601 timestamp of when the content was createdconfidence— confidence score 0.0–1.0 for project assignment
Output Schema
decision: "accept" | "reject" | "reroute"
destination: string | null # project_id or "inbox" or null
normalized_record: object | null # cleaned record if accepted/rerouted
contamination_risk: "none" | "low" | "medium" | "high"
missing_fields: string[] | null
reason: string
Hard Rules
| Condition | Decision |
|---|---|
Missing project_id | reject — never enter formal project memory |
Missing memory_type | reject — no formal writeback |
Missing timestamp | reject — no formal writeback |
| Confidence < 0.6 | reroute to inbox |
| Cross-project ambiguity | reroute to inbox or cleanup mode |
| All fields present + high confidence | accept |
Reroute Destinations
inbox— unverified content waiting for manual reviewcleanup— ambiguous content needing disambiguation- Specific project_id — when rerouting to a known project
Normalization
When decision is accept or reroute, normalize the record:
- Strip identifying metadata not in schema
- Add
validated_attimestamp - Add
guard_version= "1.0" - Preserve original
raw_contentinnormalized_record.raw
Failure Handling
If uncertain about any field:
- Do not guess project_id or memory_type
- Set
decision = "reroute"withdestination = "inbox" - List
missing_fieldsexplicitly - Explain in
reason
Never force acceptance when validation fails.