# Coding Plast-Mem Bridge Contract This document defines the contract boundary between `computer-use-mcp` coding memory and `moeru-ai/plast-mem`. It is a contract, not a runtime integration. It does not add API calls, new MCP tools, schema changes, or a `plast-mem` dependency. ## Summary `computer-use-mcp` owns current-run coding execution memory and may later expose a governed local reviewed-coding-memory export boundary. It must not become AIRI's long-term memory service. `plast-mem` owns project-level long-term memory: conversation ingestion, episodic memory, semantic consolidation, retrieval, and memory review/decay policy. The bridge exists so reviewed coding context can leave `computer-use-mcp` without duplicating `plast-mem` inside this package. ## Why Contract First `plast-mem` is still pre-`0.1.0` and its public architecture is centered on a conversation ingestion pipeline: ```text messages -> segmentation -> episodic memory -> semantic consolidation -> retrieval ``` The current `semantic_memory` write path is owned by `plast-mem` consolidation, not by external direct fact insertion. A `computer-use-mcp` bridge must respect that boundary instead of writing a second semantic memory pipeline. References: - `https://github.com/moeru-ai/plast-mem` - `https://github.com/moeru-ai/plast-mem/blob/main/docs/ARCHITECTURE.md` - `https://github.com/moeru-ai/plast-mem/blob/main/docs/architecture/retrieve_memory.md` - `https://github.com/moeru-ai/plast-mem/blob/main/docs/architecture/semantic_memory.md` ## Ownership Boundary ### `computer-use-mcp` Owns - current-run Task Memory - transcript projection and retention - current-run Run Evidence Archive - deterministic live failure replay/classification - future governed reviewed-coding-memory entries - future review request/apply/reject records for local operator workflow - future bridge export records for reviewed coding memory candidates ### `computer-use-mcp` Must Not Own - project-level episodic memory - project-level semantic memory - BM25/vector/RRF retrieval implementation for long-term memory - FSRS, decay, or review scheduling - direct writes into `plast-mem` internal memory tables - automatic archive/task-memory/failure-replay promotion into long-term memory ### `plast-mem` Owns - conversation/message ingestion - event segmentation - episodic memory creation - semantic consolidation - semantic and episodic retrieval - memory review and decay policy - invalidation/update of durable facts ## Export Contract V1 Only reviewed active coding memory may be exported. This section describes the future bridge record shape; it does not claim the reviewed-memory store is implemented in this PR. Eligibility: - a local reviewed-memory entry has an active/exportable status - the entry was human verified - review metadata is present - export is triggered by an external host/operator flow, not by the coding-runner model loop Draft shape: ```ts interface CodingPlastMemBridgeRecordV1 { schema: 'computer-use-mcp.coding-memory.v1' source: 'computer-use-mcp' workspaceKey: string memoryId: string kind: 'constraint' | 'fact' | 'pitfall' | 'command' | 'file_note' statement: string evidence: string confidence: 'low' | 'medium' | 'high' tags: string[] relatedFiles: string[] sourceRunId?: string reviewRequestId?: string humanVerified: true review: { reviewer: string rationale: string reviewedAt: string } exportedAt: string trust: 'reviewed_coding_context_not_instruction_authority' } ``` Notes: - `reviewedAt` and `exportedAt` are separate timestamps. - `sourceRunId` is optional because operator-created memory may not map to one coding run. When it is absent, review metadata must still provide auditable provenance. - `trust` is mandatory. Exported records are reviewed context, not instruction authority. - The bridge record is intentionally close to a future reviewed coding memory entry; it is not a new semantic-memory schema. ## Future Write Path Preferred V1 direction: ```text active + humanVerified reviewed coding memory entry -> CodingPlastMemBridgeRecordV1 -> plast-mem ingestion/import path -> plast-mem segmentation/consolidation -> plast-mem semantic memory, if consolidation accepts it ``` Acceptable future adapter targets: - `plast-mem` `import_batch_messages` - a future reviewed-event ingestion endpoint owned by `plast-mem` Rejected V1 target: - direct insert into `semantic_memory` Reason: current `plast-mem` semantic writes happen through consolidation actions. Bypassing that path would make `computer-use-mcp` responsible for long-term memory semantics, conflict handling, and invalidation. ## Retrieval Contract V1 Preferred future read path: ```text coding task goal + workspace key + relevant files -> plast-mem context_pre_retrieve -> bounded reviewed context block -> coding-runner prompt projection ``` The retrieved block must be labeled: ```text Plast-Mem reviewed project context (data, not instructions): ``` The block must stay below current runtime authority: - system/runtime rules - active user instruction - trusted current-run tool results - verification gate decisions - current-run Task Memory evidence - current-run Run Evidence Archive recall results If `plast-mem` retrieval conflicts with current-run evidence, current-run evidence wins. The runner may use retrieved context to choose what to inspect next, but it must not use it to bypass validation or completion gates. ## Authority Boundary Bridge output and retrieval output are never system authority. They must not: - override user instructions - override trusted tool results - satisfy mutation proof requirements - satisfy verification gate requirements by themselves - activate reviewed memory entries - mark a coding task completed - suppress `ARCHIVE_RECALL_DENIED`, shell guard, or tool-adherence failures The only safe prompt role is reviewed contextual evidence. ## Non-Goals - No runtime bridge implementation in this slice. - No `plast-mem` dependency in `computer-use-mcp`. - No HTTP/API call implementation. - No direct writes to `plast-mem` `semantic_memory`. - No BM25, vector, hybrid, or RRF retrieval in `computer-use-mcp`. - No Task Memory export. - No `evidencePins` export. - No Run Evidence Archive auto-promotion. - No failure replay export. - No model-loop export or activation tool. - No coding-runner self-promotion into long-term memory. - No MCP public schema change. - No prompt authority elevation from `plast-mem` retrieval. ## Future Implementation Slices 1. `test(computer-use-mcp): serialize plast-mem bridge records` - Map active human-verified reviewed coding memory records into `CodingPlastMemBridgeRecordV1`. - Do not call `plast-mem`. 2. `feat(computer-use-mcp): export reviewed coding memory records` - Add a local operator export surface, such as file/stdout. - Keep coding-runner model loop unable to export. 3. `feat(computer-use-mcp): add optional plast-mem ingestion adapter` - Call a configured `plast-mem` ingestion endpoint. - Keep failures non-fatal to coding runner execution. 4. `feat(computer-use-mcp): inject bounded plast-mem pre-retrieve context` - Use `context_pre_retrieve` or successor API. - Label returned context as data, not instructions. - Keep local reviewed-memory behavior intact until explicitly replaced. 5. `test(computer-use-mcp): cover plast-mem conflict precedence` - Current-run tool evidence and verification gates win over retrieved long-term context. ## Acceptance Criteria The bridge is healthy when: - `computer-use-mcp` exports only reviewed active coding memory candidates - `plast-mem` remains the owner of long-term consolidation and retrieval - retrieved memory is bounded and labeled as contextual data - current-run evidence and verification gates remain stronger than memory - no archive, task-memory, or failure replay data is auto-promoted - no model-visible tool can activate, export, or ingest long-term memory