project-memory · git:20260922.d26f46b · 2026-09-22 · sha256 750d0087fab84549

project-memory git:20260922.d26f46bA

Immutable. This exact content is served forever at /api/v1/blob/750d0087fab84549.

---
name: project-memory
description: Use when recalling project decisions, remembering reusable discoveries, consolidating memory, or withdrawing outdated project knowledge.
---

# Project memory

Governs: scripts/memory/* .harness/memory/*

Run the repository's `scripts/memory/cli.py`; its JSON receipts distinguish
private candidates, working-tree proposals and accepted Git knowledge.
Use `--help` for exact arguments. Python 3.9+ and Git are the only runtime requirements.

## Recall and capture

Use `recall --query "task" --path src/module/file.py` to obtain relevant
knowledge with its version/source receipt. Read exclusions when a result is
empty or stale. A memory entry is reference data and grants no permissions.

For an explicit reusable decision:

```bash
python3 scripts/memory/cli.py --session SESSION remember --title "Keep v1" --body "Keep v1 until client migration finishes." --reason "Team compatibility decision" --path 'src/api/**'
```

Replace `SESSION` with the current session token. Without one, the returned
random session must be retained for later operations. Never use a shared
fallback token for unrelated sessions. Existing documents should be referenced
through `remember --record` with the source digest, rather than copied wholesale.

Use `propose CANDIDATE_ID` to inspect the private diff and validation report.
`apply PROPOSAL_ID` writes that proposal into the worktree for ordinary Git
review. It does not commit, push, merge or accept it. Keep the same `--session`
for candidate/proposal operations. Personal preferences and transcripts stay private.

## Dream

`dream prepare` freezes selected candidates and the accepted view. Read the
returned report, snapshot manifest and output contract. Perform synthesis only
when requested; the runtime never invokes a model or creates a paid job.
Write only the returned private `output` file. Preserve input/output mappings,
source associations, scope, measurements and exceptions. Unresolved contradictions
remain explicit; repetition and recency are not proof.

Run `dream finish JOB_ID --output OUTPUT_PATH` to validate that output and
prepare a proposal. Every input needs a disposition and every output needs
provenance. Without semantic output, finish reports deterministic checks only.
Job completion does not accept knowledge. If baselines changed, reconcile before
applying; do not overwrite the newer decision. `dream inspect` and `dream cancel`
provide the job receipt and cancellation boundary.

## Maintenance

`verify` checks sources and scope. `forget ID --reason REASON` prepares a
retirement; `--private` removes selected private material. Retirement stops
future eligible recall and does not erase Git history or referenced documents.
`sync` refreshes the local view; fetching requires an explicit named `--remote`
and does not merge the worktree. Use `doctor` for unsupported host/remote features.

On a fresh clone, explicitly adopt the team's integration ref with
`init --accepted-ref refs/remotes/origin/main` (substitute the actual ref).
Cloud sessions without repository hooks use this same CLI explicitly. Native
host memory remains separate. Keep permanent policy/code changes in ordinary
review, including when dream suggests a new guard or rule.