Note Quality Checklist
When writing or editing Basic Memory notes, apply these rules to prevent the
"fourth-wall anti-pattern" — self-referential content that references the
knowledge graph, the enrichment process, or the state of personal knowledge
sources instead of focusing on the note's subject.
Root cause: Task-boundary collapse. When an agent evaluates whether a topic
fits the graph AND writes the note, the evaluation leaks into the content. The
fix is a firewall: discard graph-fitting analysis before writing.
Diagnostic question: "If this note were exported and read by someone who
knew nothing about the enrichment session and had never heard of Basic Memory,
would every sentence make sense?" If no — it is harmful self-reference.
Rules
Subject test. Every sentence — including frontmatter prose fields like
description — must be about the note's declared subject. Content about the
knowledge graph, the enrichment session, or personal knowledge sources must
be deleted before writing.
No inventory claims. Never write "X has zero presence in
Raindrop/Readwise/Basic Memory." Coverage state is ephemeral and becomes
false immediately. It belongs in session notes, not permanent knowledge notes.
No significance rankings. Never write "this is the most significant gap"
or "this is the most important connection." These are editorial judgments
about the session, not facts about the subject.
Firewall graph-fitting analysis. If you assessed whether a topic fills a
graph gap before writing, discard that analysis entirely. The note is not a
report on the assessment; it is knowledge about the subject.
[gap] means subject gap, not coverage gap. A [gap] observation
records something unknown about the subject itself (e.g., "The mechanism by
which X spread to Y is undocumented"). It never records that the subject was
absent from Raindrop or Readwise.
[raindrop] and [readwise] must cite artifacts. Only add these
observations if you have a specific bookmark URL, title, or highlight text.
"No Raindrop bookmarks exist" is not a valid observation. Prefer [quote],
[source], [pattern], or [connection] for the insight itself — use
[raindrop]/[readwise] only when the provenance IS the point.
No self-referential sections. Headings must describe aspects of the
subject. Sections named "Connection to the Knowledge Graph," "Graph
Coverage," "Significance to the Graph," or "Why This Note Exists" are
forbidden.
Export test. Read the overview paragraph as if to someone who has never
heard of Basic Memory. If it would not make sense without knowing you are
building a knowledge graph, rewrite it.
Lede paragraph is subject-first. The first sentence must state what the
subject is, not what the graph lacks. Write "Scandinavian Participatory
Design is a tradition originating in 1970s Scandinavia..." not "This topic
is completely absent from all personal knowledge sources."
Session observations go in session notes. Insights about the enrichment
session itself (which topics cluster, what the session revealed about the
graph's shape) belong in a separate session summary note, not embedded in
the subject notes created during the session.
Relation types describe subject relationships. Types like depends_on,
relates_to, extends, maintained_by describe how subjects relate.
Types like fills_gap_in, adds_coverage_for, or documents_gap_in
describe graph topology and are fourth-wall violations. Replace with a
subject-appropriate relation type.
No session-boundary references. Never reference the note-creation
session boundary — phrases like "prior to this session" or "prior to this
note" describe when the note was written, not the subject. State the
subject fact directly, with a date if the timing matters.
Rule Registry
The rules above are the human-readable form of the canonical registry in
lib/fourth-wall-rules.mjs; each carries a stable fw-* id. Rules marked
deterministic have a grep-able detect pattern in the registry (the basis
of the "Red Flags" scan below and the knowledge-gardener Step 10 audit); the
rest require judgment. npm run check:fourthwall asserts this checklist
documents every registry id and that each detect pattern catches a planted
violation on a fixture.
| Rule |
ID |
Detection |
| 1. Subject test |
fw-subject-test |
judgment |
| 2. No inventory claims |
fw-inventory-claim |
deterministic |
| 3. No significance rankings |
fw-significance-ranking |
deterministic |
| 4. Firewall graph-fitting analysis |
fw-graph-fitting |
judgment |
5. [gap] means subject gap |
fw-gap-is-subject |
judgment |
6. [raindrop]/[readwise] must cite artifacts |
fw-provenance-cite |
judgment |
| 7. No self-referential sections |
fw-self-ref-section |
deterministic |
| 8. Export test |
fw-export-test |
judgment |
| 9. Lede is subject-first |
fw-lede-subject-first |
judgment |
| 10. Session observations go in session notes |
fw-session-obs |
judgment |
| 11. Relation types describe subject relationships |
fw-relation-type |
deterministic |
| 12. No session-boundary references |
fw-session-boundary |
deterministic |
Exception: Meta-Notes
These rules apply to subject-domain notes — people, patterns, history,
packages, tools, projects. Notes whose subject IS the knowledge graph itself
(axioms, conventions, tool catalogs, engineering/agents/* methodology notes)
may reference Basic Memory, Raindrop, and Readwise freely — that is their
subject matter.
Red Flags (Scan Targets)
When auditing existing notes, search for these phrases:
- "zero presence in"
- "absent from the knowledge graph"
- "prior to this session" / "prior to this note"
- "most significant gap" / "most important connection"
- "Connection to the Knowledge Graph" (section header)
- "Significance to the Graph" (section header)
- "not yet in Basic Memory"
- "no presence in Raindrop"
fills_gap_in / adds_coverage_for / documents_gap_in (relation type)
Enforcement Guidance
For the knowledge-maintainer (write agent):
- Before every
edit_note call on a subject-domain note, re-read the content
you are about to write and apply the diagnostic question.
- If you find a violation in a note you are editing, queue a rewrite as a
confirmation item (content-level change — requires user approval).
- When delegating to
/intel, the skill output
should already conform — but verify the result before moving on.
For the knowledge-gardener (read-only auditor):
- In the fourth-wall audit step, use
search_notes with red-flag phrases.
- Classify violations by severity: (A) section-level, (B) paragraph-level,
(C) observation-level, (D) relation-level.
- Report in Warning tier with the specific offending sentence quoted.
- Do not attempt to fix — that is the maintainer's job.
1---2name: vp-note-quality3description: Reference checklist for Basic Memory note quality — rules preventing self-referential content in subject-domain notes (the fourth-wall anti-pattern). Preloaded into knowledge-maintainer and knowledge-gardener agents via the skills frontmatter field.4---56# Note Quality Checklist78When writing or editing Basic Memory notes, apply these rules to prevent the9"fourth-wall anti-pattern" — self-referential content that references the10knowledge graph, the enrichment process, or the state of personal knowledge11sources instead of focusing on the note's subject.1213**Root cause:** Task-boundary collapse. When an agent evaluates whether a topic14fits the graph AND writes the note, the evaluation leaks into the content. The15fix is a firewall: discard graph-fitting analysis before writing.1617**Diagnostic question:** "If this note were exported and read by someone who18knew nothing about the enrichment session and had never heard of Basic Memory,19would every sentence make sense?" If no — it is harmful self-reference.2021## Rules22231. **Subject test.** Every sentence — including frontmatter prose fields like24 `description` — must be about the note's declared subject. Content about the25 knowledge graph, the enrichment session, or personal knowledge sources must26 be deleted before writing.27282. **No inventory claims.** Never write "X has zero presence in29 Raindrop/Readwise/Basic Memory." Coverage state is ephemeral and becomes30 false immediately. It belongs in session notes, not permanent knowledge notes.31323. **No significance rankings.** Never write "this is the most significant gap"33 or "this is the most important connection." These are editorial judgments34 about the session, not facts about the subject.35364. **Firewall graph-fitting analysis.** If you assessed whether a topic fills a37 graph gap before writing, discard that analysis entirely. The note is not a38 report on the assessment; it is knowledge about the subject.39405. **`[gap]` means subject gap, not coverage gap.** A `[gap]` observation41 records something unknown about the subject itself (e.g., "The mechanism by42 which X spread to Y is undocumented"). It never records that the subject was43 absent from Raindrop or Readwise.44456. **`[raindrop]` and `[readwise]` must cite artifacts.** Only add these46 observations if you have a specific bookmark URL, title, or highlight text.47 "No Raindrop bookmarks exist" is not a valid observation. Prefer `[quote]`,48 `[source]`, `[pattern]`, or `[connection]` for the insight itself — use49 `[raindrop]`/`[readwise]` only when the provenance IS the point.50517. **No self-referential sections.** Headings must describe aspects of the52 subject. Sections named "Connection to the Knowledge Graph," "Graph53 Coverage," "Significance to the Graph," or "Why This Note Exists" are54 forbidden.55568. **Export test.** Read the overview paragraph as if to someone who has never57 heard of Basic Memory. If it would not make sense without knowing you are58 building a knowledge graph, rewrite it.59609. **Lede paragraph is subject-first.** The first sentence must state what the61 subject is, not what the graph lacks. Write "Scandinavian Participatory62 Design is a tradition originating in 1970s Scandinavia..." not "This topic63 is completely absent from all personal knowledge sources."646510. **Session observations go in session notes.** Insights about the enrichment66 session itself (which topics cluster, what the session revealed about the67 graph's shape) belong in a separate session summary note, not embedded in68 the subject notes created during the session.697011. **Relation types describe subject relationships.** Types like `depends_on`,71 `relates_to`, `extends`, `maintained_by` describe how subjects relate.72 Types like `fills_gap_in`, `adds_coverage_for`, or `documents_gap_in`73 describe graph topology and are fourth-wall violations. Replace with a74 subject-appropriate relation type.757612. **No session-boundary references.** Never reference the note-creation77 session boundary — phrases like "prior to this session" or "prior to this78 note" describe when the note was written, not the subject. State the79 subject fact directly, with a date if the timing matters.8081## Rule Registry8283The rules above are the human-readable form of the canonical registry in84`lib/fourth-wall-rules.mjs`; each carries a stable `fw-*` id. Rules marked85**deterministic** have a grep-able `detect` pattern in the registry (the basis86of the "Red Flags" scan below and the knowledge-gardener Step 10 audit); the87rest require judgment. `npm run check:fourthwall` asserts this checklist88documents every registry id and that each `detect` pattern catches a planted89violation on a fixture.9091| Rule | ID | Detection |92|------|----|-----------|93| 1. Subject test | `fw-subject-test` | judgment |94| 2. No inventory claims | `fw-inventory-claim` | deterministic |95| 3. No significance rankings | `fw-significance-ranking` | deterministic |96| 4. Firewall graph-fitting analysis | `fw-graph-fitting` | judgment |97| 5. `[gap]` means subject gap | `fw-gap-is-subject` | judgment |98| 6. `[raindrop]`/`[readwise]` must cite artifacts | `fw-provenance-cite` | judgment |99| 7. No self-referential sections | `fw-self-ref-section` | deterministic |100| 8. Export test | `fw-export-test` | judgment |101| 9. Lede is subject-first | `fw-lede-subject-first` | judgment |102| 10. Session observations go in session notes | `fw-session-obs` | judgment |103| 11. Relation types describe subject relationships | `fw-relation-type` | deterministic |104| 12. No session-boundary references | `fw-session-boundary` | deterministic |105106## Exception: Meta-Notes107108These rules apply to **subject-domain notes** — people, patterns, history,109packages, tools, projects. Notes whose subject IS the knowledge graph itself110(axioms, conventions, tool catalogs, `engineering/agents/*` methodology notes)111may reference Basic Memory, Raindrop, and Readwise freely — that is their112subject matter.113114## Red Flags (Scan Targets)115116When auditing existing notes, search for these phrases:117118- "zero presence in"119- "absent from the knowledge graph"120- "prior to this session" / "prior to this note"121- "most significant gap" / "most important connection"122- "Connection to the Knowledge Graph" (section header)123- "Significance to the Graph" (section header)124- "not yet in Basic Memory"125- "no presence in Raindrop"126- `fills_gap_in` / `adds_coverage_for` / `documents_gap_in` (relation type)127128## Enforcement Guidance129130**For the knowledge-maintainer (write agent):**131- Before every `edit_note` call on a subject-domain note, re-read the content132 you are about to write and apply the diagnostic question.133- If you find a violation in a note you are editing, queue a rewrite as a134 confirmation item (content-level change — requires user approval).135- When delegating to `/intel`, the skill output136 should already conform — but verify the result before moving on.137138**For the knowledge-gardener (read-only auditor):**139- In the fourth-wall audit step, use `search_notes` with red-flag phrases.140- Classify violations by severity: (A) section-level, (B) paragraph-level,141 (C) observation-level, (D) relation-level.142- Report in Warning tier with the specific offending sentence quoted.143- Do not attempt to fix — that is the maintainer's job.