Brain · Memory
Memory: did the lesson change anything?
Memory lists every case in the repository scope, open or closed, and opens each on its Prevention section: the lesson drafted from the confirmed cause, its review, where each version was delivered, whether a guard ran, and whether the defect came back. Every line is a receipt. A saved lesson is not proof that it prevented anything, and the page never shows a prevented count.
For: the engineer who owns a repository's lessons, and the reviewer who decides whether a lesson is admitted
What it does, and why it helps
The page asks one question: did the memory change anything? Under the heading, the readiness line says how old the page's prepared read is (30 minutes is its window). The queue shows open and closed cases, overdue first, then by severity, with the count line N of M, overdue first, then by severity. Opening a case keeps you on the page and lands on its Prevention section.
The Prevention section reads: Lesson (trigger, what went wrong, fix, author), Guard (its kind and pattern, and its last replay), and Guard receipts. No executable guard attached. A lesson without a guard is advice, not prevention. A lesson is drafted from a confirmed cause and a verified remedy, and admitted only on a person's review: the Review the lesson form offers draft from the confirmed cause, admit, reject and mark for revision, and an admission that lacks what it needs says not admissible: missing and names it. Recurrence after resolution lists the decisions recorded against the case's versioned signature. Decide a recurrence takes a sighting and compares it with the case's signature and scope: it records reopen, link-new or no-match with the reason. A reopen moves a resolved case back to investigating, keeps the prior resolution on the record, and marks an admitted lesson for revision. Delivery counts the receipts by kind (delivered, retrieved, acknowledged, used, guard ran) and the guard outcomes (ran-caught, ran-missed, did-not-run, not-applicable, unavailable, execution-error), and Record a receipt adds one by hand. Drafting and admitting make no model call.
Below the queue the page shows what this machine holds. Delivery and outcome per lesson, and Installation, acknowledgement, loading and review per version, count what devices reported for each lesson and version. Integrity and signatures, Drift, conflicts and expiry, Exact effective guidance and Selected, excluded and truncated context say which version reached a session and which were staged and not loaded. Prevention packages on this device gives five read-only views: Review (what awaits whom), Version comparison, Rollout (which targets are in which state), Manifest (what this device installed) and Outcome (what was retrieved, used or guarded). None of them is a prevented incident.
Prevention summary: reproducible denominators answers of the eligible opportunities in each cohort, how many did the control catch? by task, repository, assistant, model and control version. Every cell carries its numerator, its denominator, its similarity version and its control version, or one of four states instead: unassessed, capture gap, zero eligible, or inconclusive (fewer than five assessed opportunities). Unavailable records are counted beside the denominator, never inside it. Assess now runs one assessment pass; the server also runs one every hour. Export the records gives an outside reviewer what they need to recompute every number. When a staged package does not name the attempt that produced its incident, the first eligibility test reads unknown and the cell shows a capture gap rather than a rate; nothing guesses the attempt.
Delivering guidance to the right agent
A reviewed lesson travels as a signed prevention package, targeted by agent, version, configuration, repository and channel. Delivery uses a signed delta and a device manifest, and every attempt gets its own four-way record: installed, delivered, exposed and used, each with its own timestamp or an explicit null and reason. A parent session does not credit a child: the child is credited only by its own hook and citation receipts. Curated instruction blocks, start-hook context, skills and plugins are separate channels, and a target that cannot carry the chosen channel reads cannot carry instead of installed. A file present in a repository is not proof of use, and a hook that emitted context proves exposure, not that a model read or followed it. On the desktop this is the Prevention rollout, the manifest and Exact effective guidance on this page; on the hosted case it is the Prevention section and the delivery acknowledgments (GET /api/prevention-packages/delta).
Assessing recurrence
The outcome pipeline keeps the six guard outcomes apart and creates one eligible-opportunity record per origin attempt and channel. The summary partitions by task, repository, assistant, model and control version, so a changed assistant, model, similarity rule or control stays its own cohort rather than being merged into another. A capture gap, zero eligible, unassessed and inconclusive are states, never a zero recurrence: no denominator, no prevention claim. Each cell exposes its numerator, denominator, similarity version, control version and the source event ids, so a reviewer can recount it from the export. Retire a control only after reviewing its zero-eligible or stale-version evidence. The assessment runs on POST /api/prevention/assess and hourly.
Above the queue, five links open the Memory views in one click: Brain library, Ask with citations (Ask the brain), Review proposals (Brain reflection), Delivery (the prevention views on this page) and Knowledge health (Brain health). The Brain library, also a sub-tab of Memory, groups the repository's brain documents by kind: Architecture, Service and dependency maps, Runbooks, Decisions, Known errors, Incident histories and Patterns. Each row shows the repository, the owner or not recorded, the last verified date marked frontmatter when the page records one or last commit when it comes from git (a commit is not a review), the sources the page lists or cites, the review state (reviewed means a person recorded a review of the text the page holds now, and the row names who and when; a commit is not a review, a page edited after its review reads unreviewed, a review older than 90 days reads stale, and a proposal is a file under proposed/ or one never committed) and any conflicting or unknown fact the page marks, plus broken citations from the last citation-rot scan. Each row that is not a proposal has Review this revision: it records your name (or this repository's git user.name), the time, the revision and the date as last verified in the page's frontmatter, and the owner when you name one. Commit that change with the page. A row opens the document in the full-page reader. The count line names every state and how many brain pages are not one of these kinds. On a case, the Prevention section's Brain documents row lists the documents that name the case, or says none does.
On the hosted dashboard, Memory opens repoops.ai/team/brain: shared lessons with search, Lessons with a case (Case, Lesson, Delivered, Caught, Missed, Did not run, Other, Came back, where a case that came back sorts first and did not run is its own column), Learned this week and the Team wiki. A row opens the case in place on its Prevention section. The lens sits open on the page; the shared lessons, Learned this week and the Team wiki stay in one disclosure below it, and the specialist readers are one closed All tools list in the aside. The hosted page reads only the redacted lessons bound desktops published while team sharing was on. Below the lens, the Memory home cells (delivery and outcome per lesson, integrity, drift and the reference tables) read the cases in your scope, and the coverage strip's Inspect collection gap opens that inspector on Today. The same five Memory views sit under its heading, and repoops.ai/team/brain-library lists the brain pages published for the repositories you can see. The hosted store keeps no commit history, so a row whose page records no verified date reads unknown with its publish date beside it; a page reads reviewed only when the review recorded on the desktop names the revision published now, whether the page came from GitHub or from a desktop. Broken citations are flagged on the desktop only. A hosted case lists the published pages of its repository that name it.
The pain. A lesson gets written and the team moves on. Months later nobody can say whether the next session loaded it, whether its guard ever ran, or whether the defect came back anyway, so a quiet month reads as proof it worked.
The point of view. Memory should keep the lesson with its evidence and count only what was observed. A guard behind a disabled hook is not a clean run, and no recurrence over no eligible attempts is not a result.
What gets easier. Answering whether a lesson did anything. The case shows who admitted it, the receipts show where it went, and the summary shows the numerator and the denominator together.
When it helps. After a case is resolved and its cause confirmed, when a lesson is drafted and reviewed, and when the same defect is seen again.
Its limits. It never reports a count of prevented incidents. A lesson is admitted only by a person. Guard outcomes other than ran-caught arrive only from what devices reported or what a person records; no guard runner reports misses on its own yet. Where the origin attempt of a package is unknown, the summary reads capture gap. The Brain library shows an owner or a verification date only where the page records one, and flags a conflict only where the page marks one; the hosted library has no commit dates and no citation check.
Understand it in 30 seconds
Read the narration
- 0:00 A lesson was written months ago. Did it change anything?
- 0:06 Open the case on its Prevention section.
- 0:08 Each delivery, use and guard run is a receipt.
- 0:13 The summary shows caught over assessed, with the control version.
- 0:17 Too few attempts reads inconclusive, not a rate.
- 0:23 If the defect comes back, the case reopens,
- 0:26 and the lesson is marked for revision.
Synthetic example. Read the guide
Where to find it
- Desktop: Memory, the sixth primary page in the sidebar.
- Hosted: repoops.ai/team/brain, under Memory in the sidebar; the old repoops.ai/team/memory-brain address redirects there.
- API:
/api/ai-incidents?open=0, /api/prevention/views, /api/prevention/summary
When to use it
Admitting a lesson from a fixed case
Situation. A case's cause is confirmed and its fix merged. The Prevention section reads Lesson review: not recorded.
What you do. Open the case from the queue. In Review the lesson choose draft from the confirmed cause and press Record, read the draft, then choose admit.
What you see. Lesson review reads admitted with the version, who, when and the lesson id. If a fact is missing, the row says not admissible: missing and names it, and nothing is written.
What it establishes. The lesson is in the lessons store with its evidence pointers. Nothing here claims it prevented anything yet.
The same defect is seen again
Situation. After the fix merged, a later session trips the same pattern in the same repository.
What you do. Open the original case. In Decide a recurrence enter the signature pattern and version, the sighting id, its repository and pattern, and press Decide.
What you see. Recurrence after resolution reads reopen on the sighting with the reason. The case is investigating again, the lesson review reads marked for revision, and on the hosted Lessons with a case table the row is marked Came back and sorts first.
What it establishes. The lesson is revised before it is admitted again. A sighting that matches another scope records link-new instead, for a distinct case.
Tracing guidance to a child attempt
Situation. A published package should have reached a subagent, and nobody can say whether it did.
What you do. Open the package rollout and select the child attempt's target record.
What you see. Installed, delivered, exposed and used carry their own timestamps or an explicit null with its reason.
What it establishes. The child is credited only by its own hook and citation receipts, never by its parent's.
Reviewing a recurrence cohort
Situation. A package has been delivered and later comparable work has happened.
What you do. Open the Prevention summary and select one task, repository, assistant, model and control-version cell.
What you see. The cell shows its numerator, denominator, similarity version, control version and source event ids.
What it establishes. A reviewer can reproduce the result and find capture gaps without reading a zero as success.
Before you start
- Supported versions
- Read against origin/main at 6e044539b, after v0.3.2.
- Where it runs
- Local: Memory, with the queue, the home cells, the five views and the summary. The scope bar's repository applies; the summary and the views need one repository selected. Hosted: Memory opens repoops.ai/team/brain, where Lessons with a case lists the cases and opens each in place, with the home cells below it; repoops.ai/team/memory-brain redirects there.
- Permissions
- Recording a lesson review, a recurrence decision, a receipt or an assessment is a local write behind the server's same-origin gate. The hosted page is narrowed to the repositories your role can see.
- Connections
- A tracked repository with cases. The delivery and outcome counts need sessions that report receipts. The hosted page needs a bound desktop with team sharing on.
- Plan
- No plan gate on the local page. The hosted page follows the hosted dashboard tiers.
Configure it
- Pick one repository.
The views and the summary read one repository's stores; with none selected they say No repository selected.
- Open a case and review its lesson.
The queue opens each case on its Prevention section. Draft, then admit, reject or mark for revision. Only a person admits.
- Record what you observed.
Record a receipt adds a delivery, retrieval, acknowledgment, use or guard run with its outcome. A ran-caught outcome needs a sighting pointer.
- Read the summary, then export it.
Press Assess now for a fresh pass. Read each cell with its denominator and state. Export the records for anyone who should recompute it.
| Setting | Where | A sensible choice | Why it matters |
|---|---|---|---|
REPOOPS_PREVENTION_SYNC_HOURS | the data directory's .env | 6 (the default) | How often a bound device stages the team's packages and pushes its outcome receipts. |
REPOOPS_PREVENTION_ASSESS | the data directory's .env | leave unset | Set to 0 to stop the hourly assessment pass; Assess now still runs one on request. |
What you should see
A lesson with receipts
Configuration. An admitted lesson whose version reached two sessions, one guard run that caught the pattern.
Expect. Delivery reads delivered 2 and guard outcomes ran-caught 1. The summary's control version cell shows a numerator over a denominator with its similarity and control versions.
Verify. Export the records and recompute the cell by hand: the denominator counts ran-caught, ran-missed, did-not-run and execution-error events only.
Too little evidence for a rate
Configuration. Three assessed opportunities for a control version.
Expect. The cell reads inconclusive, because fewer than five assessed opportunities is below the minimum. No percentage is shown.
Verify. The Why column names the reason. Assess again after more sessions; nothing rounds three events into a rate.
The origin attempt is unknown
Configuration. A staged package that does not name the attempt that produced its incident.
Expect. The cell reads capture gap: the eligibility of each attempt cannot be computed, so the denominator would be a guess.
Verify. Unavailable is counted beside the denominator in the figures, not inside it.
Data and cost
- What is captured
- Cases in the repository brain's incidents/cases/ store, lessons in the lessons store, delivery and outcome receipts under the brain's prevention directory, and the assessment's stage log beside the capture store (agent-capture/opportunity-stages.jsonl).
- Who can see it
- Local by default. On a device bound to a team, the prevention sync (every 6 hours by default) stages the team's packages and pushes the unpushed outcome receipts to the team's ledger. Lessons reach the hosted page only when team sharing is on, and only in redacted form.
- How long it is kept
- The page sets no retention of its own; it reads the stores above. Case files are read over a 24-month window.
- What leaves the machine
- Reading the page makes no model call and no network call. The prevention sync reaches repoops.ai only for a bound device.
- What it costs
- No model spend. The hourly assessment is a local pass over files already on disk.
When the result differs
| Symptom | Likely cause | Next action |
|---|---|---|
| Nothing to open on this lens. No case in this repository scope yet. | No case exists for the repository in view. | Cases open on Today, Attribution, AI Security or Remediation; resolved ones stay listed here with their receipts. |
| No package version is staged on this device. | No sync tick has staged a prevention package for this repository. | The team's review queue is on the hosted case page; a version appears here once a sync tick stages it. |
| Every summary cell reads capture gap. | Unavailable records are at least as many as the assessed ones, most often because no package names its origin attempt. | Nothing to fix on this machine. Read the figures for how many records were unavailable. |
| The summary could not be read. | The stage log read failed. | Use Refresh to retry. This is not an empty stage log. |
| Every Brain library row reads not recorded and last commit. | The brain pages carry no owner or last_verified line in their frontmatter, so the date is the last commit that touched each file. | Add owner: and last_verified: to a page's frontmatter and commit it; its row then shows both, marked frontmatter. |
| A package is installed but not exposed. | The agent version or configuration cannot carry the selected context channel. | Read the cannot carry reason and choose a supported channel. A file on disk is not use. |
| A summary cell reads zero eligible. | No opportunity matched that exact versioned cohort. | Check the origin attempt and the similarity version. Do not merge another model or control version into the cell. |
| Admit is refused with not admissible: missing. | An admission needs a confirmed cause, a verified remedy, a repository and a reviewer, and the case lacks one of them. | Record the missing verification on the case's Fix section, then review the lesson again. |
- Disable
- REPOOPS_PREVENTION_ASSESS=0 stops the hourly pass. There is nothing else running on this page.
- Roll back
- Mark for revision or reject records a new review state; the earlier ones stay on the case timeline.
- Revoke access
- Unbinding the device stops the push to the team. Turning team sharing off stops new lessons reaching the hosted page; lessons already published stay there.
- Delete
- Not provided in the app. The receipts and the stage log are files under the repository brain and the capture store.
Related tasks
Maintenance evidence
- Feature id
memory(spine leafteam-brain)- Owner
- Prevention and memory (PKT-D11-D, PKT-D13-B, LDG-0690, LDG-0697; the pillar landing LDG-0688). Guide: LDG-0988.
- Supported product version
- RepoOps main at 6e044539b (after v0.3.2)
- Last verified
- 2026-09-26, the Brain library, the five Memory views and the case's Brain documents row written against the LDG-1007 change and opened on an isolated local instance; the hosted library and case row written against website/lib/brain-library.ts and checked by its PGlite tests, not opened on a deployed instance. Earlier the same day, read against origin/main at 6e044539b: public/lib/pillar-landing.js, public/lib/case-sections.js, public/lib/prevention-views.js, public/lib/prevention-summary.js, lib/prevention-summary.mjs, lib/prevention-stage-log.mjs, lib/routes/ai-incidents.mjs, lib/home-content.mjs and the hosted brain page; not opened on a running instance.
- Example fixtures
- No fixture file; inline cases in lib/prevention-summary.test.mjs, lib/routes/prevention.test.mjs, public/lib/pillar-landing.test.mjs and lib/home-content.test.mjs.
- Source references
public/memory-brain.html,public/brain-library.html,public/lib/brain-library.js,lib/brain-library/classify.mjs,lib/brain-library/read.mjs,website/lib/brain-library.ts,website/app/team/(home)/brain-library/page.tsx,public/lib/pillar-landing.js,public/lib/case-sections.js,public/lib/prevention-views.js,public/lib/prevention-summary.js,lib/prevention-summary.mjs,lib/prevention-stage-log.mjs,lib/routes/prevention.mjs,lib/routes/ai-incidents.mjs,lib/home-content.mjs,website/app/team/(home)/brain/page.tsx,lib/prevention/package-sync.mjs,lib/prevention/context-manifest.mjs,lib/prevention/delivery-targets.mjs,lib/prevention/device-report.mjs,website/lib/ai-incident-cases/package-delivery.ts,website/lib/ai-incident-cases/outcome-ledger.ts- Documentation review
- Written 2026-09-26 by the authoring agent against the code (LDG-0988); on 2026-10-05 the Agent guidance delivery and Recurrence assessment guides were folded in as two sections, and their old addresses redirect here (LDG-0691). Independent review not yet recorded.
- Video review
- Narrated story rendered and published 2026-09-26 (render e3ffdf7ea8bf, LDG-0988), beside the desktop navigation with Memory selected; it shows no prevented count. Six frames, the captions and the transcript were reviewed by the authoring agent, not an independent reviewer; the audio was not listened to by a person. Narration is the provisional Windows voice until LDG-0721.
Last updated