M5.3, scope memory (L6.3), as agreed: project notes in folders, no architecture snapshot, and the closing pass flags documents left out of date.
Code
memory.py: a project's notes live in memory/nisse-dev/projects/<project>/, with their own index.md. The top-level index lists the general notes, then links each project's index.
Fix: links are now pages named from the vault's root ([[memory/nisse-dev/x]]), which is how SilverBullet names them. The bare [[x]] links from M5.2 wouldn't have resolved.
remember and forget take scope:
general;
or project, which always means the current item's project, so no item can write another project's notes;
a conversation has no project, and asking for one is refused.
A project note records project in its provenance.
Item start puts the general index and that project's index into the transcript, never another project's.
memory_done(summary, docs): when docs names repository documents the item left out of date, the harness posts "Docs to update in <repo>: …" in the thread and records it as a fact.
The prompt says the repository is the authority, a note that disagrees with it gets corrected, and the agent shouldn't remember what the repository already holds.
Decided with the operator
ARCHITECTURE.md isn't put into every item's context, because of its size. The driver still reads it as told.
The infrastructure world model waits for nisse-ops (Phase 7).
Repository documents stay the driver's job within milestones; the closing pass only flags them.
Docs
L6.3 and L6.4 updated.
The M5.3 entry.
Tests
test_memory.py: project folders and their indexes, the top index linking them, a snapshot per project, forgetting removes a project's index link, bad project names are refused.
test_loop_memory.py:
a project note goes to the item's own project, and the index at start shows this project's notes but not another's;
a bad scope is refused;
a conversation has no project scope;
documents left out of date are flagged.
The walk uses both scopes. A new check, project_notes_stay_with_their_project, confirms each project note's provenance names that project and an item of it.
Locally: the unit tier (743 tests) and the 48-seed walk pass.
M5.3, scope memory (L6.3), as agreed: project notes in folders, no architecture snapshot, and the closing pass flags documents left out of date.
## Code
- **`memory.py`:** a project's notes live in `memory/nisse-dev/projects/<project>/`, with their own `index.md`. The top-level index lists the general notes, then links each project's index.
- **Fix:** links are now pages named from the vault's root (`[[memory/nisse-dev/x]]`), which is how SilverBullet names them. The bare `[[x]]` links from M5.2 wouldn't have resolved.
- **`remember` and `forget` take `scope`:**
- `general`;
- or `project`, which always means the current item's project, so no item can write another project's notes;
- a conversation has no project, and asking for one is refused.
- A project note records `project` in its provenance.
- **Item start** puts the general index and that project's index into the transcript, never another project's.
- **`memory_done(summary, docs)`:** when `docs` names repository documents the item left out of date, the harness posts "Docs to update in \<repo\>: …" in the thread and records it as a fact.
- **The prompt** says the repository is the authority, a note that disagrees with it gets corrected, and the agent shouldn't remember what the repository already holds.
## Decided with the operator
- `ARCHITECTURE.md` isn't put into every item's context, because of its size. The driver still reads it as told.
- The infrastructure world model waits for nisse-ops (Phase 7).
- Repository documents stay the driver's job within milestones; the closing pass only flags them.
## Docs
- L6.3 and L6.4 updated.
- The M5.3 entry.
## Tests
- `test_memory.py`: project folders and their indexes, the top index linking them, a snapshot per project, forgetting removes a project's index link, bad project names are refused.
- `test_loop_memory.py`:
- a project note goes to the item's own project, and the index at start shows this project's notes but not another's;
- a bad scope is refused;
- a conversation has no project scope;
- documents left out of date are flagged.
- **The walk** uses both scopes. A new check, `project_notes_stay_with_their_project`, confirms each project note's provenance names that project and an item of it.
- **Locally:** the unit tier (743 tests) and the 48-seed walk pass.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01J5Utyfzw7gF7UhjRDEtjTk
A project's notes have their own folder, memory/nisse-dev/projects/<project>/,
with its own index; remember and forget take scope (general, or project:
always the current item's own, so no item writes another project's notes,
and a conversation has none). At an item's start the transcript gets the
general index and its project's, never another's. Index links are pages
from the vault's root, as SilverBullet names them.
The closing pass's memory_done can name repository documents the item left
out of date; the harness says so in the thread and records it. The prompt:
the repository is the authority, and a note that disagrees is corrected.
With the operator: ARCHITECTURE.md isn't put into every item's context (its
size); the infrastructure world model waits for nisse-ops. The walk writes
project notes and checks they come only from that project's items.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J5Utyfzw7gF7UhjRDEtjTk
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
M5.3, scope memory (L6.3), as agreed: project notes in folders, no architecture snapshot, and the closing pass flags documents left out of date.
Code
memory.py: a project's notes live inmemory/nisse-dev/projects/<project>/, with their ownindex.md. The top-level index lists the general notes, then links each project's index.[[memory/nisse-dev/x]]), which is how SilverBullet names them. The bare[[x]]links from M5.2 wouldn't have resolved.rememberandforgettakescope:general;project, which always means the current item's project, so no item can write another project's notes;projectin its provenance.memory_done(summary, docs): whendocsnames repository documents the item left out of date, the harness posts "Docs to update in <repo>: …" in the thread and records it as a fact.Decided with the operator
ARCHITECTURE.mdisn't put into every item's context, because of its size. The driver still reads it as told.Docs
Tests
test_memory.py: project folders and their indexes, the top index linking them, a snapshot per project, forgetting removes a project's index link, bad project names are refused.test_loop_memory.py:project_notes_stay_with_their_project, confirms each project note's provenance names that project and an item of it.🤖 Generated with Claude Code
https://claude.ai/code/session_01J5Utyfzw7gF7UhjRDEtjTk