Critique: zorg-zettel-vision-infographic.png¶
This diagram is the "vision" picture for the Zorg-flavored zettelkasten that SASE wants to consume as a curated memory
source. Per the epic plan (sdd/epics/202605/diagram_review.md row 10) it is intended to embed in docs/index.md and
the blog/series surfaces. There is no .prompt.md sidecar, so intent has to be inferred from
sdd/research/202605/zettel_sase_shared_memory.md (the most direct prior art in this repo) and from the user's ~/org
zorg notes (zorg_term.zo, zorg_ideas_2503.zo, zorg_ideas_2504.zo, zorg_v2_design.zo,
lit/system_for_writing.zo, lit/zettel_method.zo).
A grep across the repo confirms that as of 2026-05-10 no committed doc, blog post, or series page links the PNG. The
image exists in docs/images/ and is referenced only by sdd/beads/issues.jsonl and the epic plan itself. Whatever the
regen produces will essentially be greenfield — there is no inline prose to anchor the image against.
What the diagram currently shows¶
- Title bar: Zorg Zettel Vision.
- Left column CAPTURE with four pill rows:
Fleeting notes,Literature notes,Todos,Refs. - An arrow labeled develop running from the CAPTURE column into the central panel.
- Center panel Org Folder as Zettelkasten — a small node graph containing
@foo,@foo/bar,query,child,sibling,backlink, with the labelsfile zettel,dir zettel,note zettelunderneath. - An arrow labeled navigate running from the central panel into the right column.
- Right column USE & NAVIGATE with five rows:
Jumpers,Tree view,Backlinks,Query zettel,LSP actions. - Bottom strip of four pills:
Atomic ideas,Typed notes,Inherited links,Graph navigation.
Accuracy issues (graded against ~/org and the SASE research note)¶
A1. The diagram is silent about SASE — yet it lives in the SASE doc set¶
This is the single biggest accuracy problem. The image's whole reason to live in docs/ is that SASE wants to project a
curated zettelkasten into agent memory (sdd/research/202605/zettel_sase_shared_memory.md). None of that bridge is
shown: no projection arrow into memory/long/*.md, no keywords-frontmatter step, no inbox/promotion box, no
APPLIES: / TRIGGERS: / PROVENANCE: labels, no dynamic memory injection step. A reader of docs/index.md will
look at this and reasonably ask "why is the SASE site showing me a generic zettelkasten with no SASE in it?" The image
is currently a personal-tool vision picture, not a SASE doc-set asset.
A2. @foo/bar is presented as the canonical ID syntax, but zorg has two competing syntaxes¶
zorg_term.zo defines two ID kinds: FID (folgezettel IDs of the form 1.a7, three components) and ZID (YYMMDD#XX
create-date IDs). zorg_ideas_2503.zo line 65 ("Use @foo syntax instead of ID::foo...") is the proposal that
introduces @foo / ^bar and tags it as accepted but not yet shipped — it lives in zorg_v2_design as a v2 idea.
Treating @foo/bar as the unqualified canonical node label, with no FID/ZID alongside, overstates how settled the
syntax is. Either show both shapes, label the diagram as "v2 vision", or call out that @foo/bar is the proposed v2
path syntax and not what current ~/org files use.
A3. The four CAPTURE inputs are an idiosyncratic mix, not the documented zettel pipeline¶
lit/zettel_method.zo and lit/system_for_writing.zo describe the canonical pipeline as fleeting → literature →
permanent (main) → hub/structure, with todos and refs as cross-cutting concerns. The diagram instead shows Fleeting,
Literature, Todos, Refs as four peers feeding "develop", which conflates two orthogonal axes (note maturity vs.
note kind) and drops the "permanent / main" stage that is the point of the slip-box. A new reader cannot recover the
maturation pipeline from this picture.
A4. The center graph mixes node types and edge types as if they were peers¶
Inside Org Folder as Zettelkasten the labels @foo, @foo/bar, query, child, sibling, backlink are drawn as
graph elements at the same visual level, but @foo and @foo/bar are node IDs, query is a kind of zettel (per
zorg_query.zo and zorg_ideas_2503.zo), and child/sibling/backlink are edge kinds. The bottom-of-panel labels
file zettel, dir zettel, note zettel are node kinds. Five different ontological categories share one box with no
visual distinction. This is the part of the image a careful reader will spend the longest on, and it is the part most
likely to mislead.
A5. The child / sibling / backlink triple under-represents zorg's relation system¶
zorg_ideas_2504.zo enumerates jumpers across explicit, inherited, incoming, and Folgezettel-like relationships. The
research note (sdd/research/202605/zettel_sase_shared_memory.md §"Existing Tools to Learn From") and the local
folgezettel.zo notes treat Folgezettel as a first-class relation. The diagram surfaces only three relation labels
and then re-introduces Inherited links as a separate principle in the bottom strip — so inheritance is mentioned but
not drawn. Either drop the partial enumeration or extend it to (at least) child, sibling, backlink, inherited,
folgezettel, tag.
A6. LSP actions is aspirational, not present¶
zorg_ideas_2504.zo and the v2 design notes mention LSP-style navigation as a target. There is no shipped Zorg LSP
client in ~/org or sase-nvim today. Listing it next to Jumpers, Tree view, Backlinks, Query zettel (which
are working concepts in zorg today) flattens shipped vs. planned features into the same column. The infographic style
brief asks for "terminology-aligned with the target doc" — vision-only items should be visually marked or moved to a
"Planned" column.
A7. Typed notes in the bottom strip is unmoored¶
The research note proposes typed zettel — &fact, &howto, &gotcha, &decision, &episode, &source, &index,
&query — as the projection contract that makes zettel useful for SASE memory. The PNG includes a Typed notes
principle pill but never names the types. Since the whole SASE→zettel value proposition rests on those types, this is
an under-investment in the most load-bearing part of the vision.
A8. The bottom-strip pills mix principles, features, and a synonym¶
Atomic ideas is a principle (one idea per zettel — Luhmann, repeated through lit/system_for_writing.zo and
lit/zettel_method.zo). Typed notes is a schema choice. Inherited links is a relation kind already implied by
the center graph. Graph navigation is a feature already covered by the USE & NAVIGATE column (Jumpers / Tree view
/ Backlinks). So the strip stacks one principle, one schema, one relation, and one duplicated feature, with no
indication of which is which. A reader cannot tell what they are looking at.
A9. No provenance / inbox / trust boundary¶
Section "Memory poisoning is a real attack surface" of sdd/research/202605/zettel_sase_shared_memory.md makes
inbox-and-promotion the security-critical step in any human/agent shared memory. The image has no inbox, no promotion
arrow, no provenance box. For a "vision" diagram that sits in the SASE doc set, omitting this is the same mistake the
research note explicitly warns against (treating raw agent writes as canonical memory).
A10. Org Folder as Zettelkasten framing collides with the project's actual framing¶
zorg_term.zo line 25–26 is explicit: "in the context of zorg, we treat the ~/org directory as a Zettelkasten". The
image header says Org Folder as Zettelkasten, which is the right framing — but the rest of the picture (CAPTURE on the
left, USE on the right) makes the org folder look like a passive store between two columns. Per the same source note,
~/org is the Zettelkasten itself, not a middle layer. The center panel should be the diagram's hero, not the
sandwich filling.
Clarity issues (would a new user understand this?)¶
C1. No legend, no key, no scale¶
There is no legend explaining shapes (rounded pill vs. square node vs. circle), no key for color (the central panel uses
a different fill than the outer columns), and no indication that @foo is a placeholder ID rather than a literal name.
A reader who has never seen Zorg cannot bootstrap from the picture alone.
C2. The develop and navigate arrows are vague verbs¶
The two big perimeter arrows are labeled with single English verbs that do not say who develops or navigates. Compare
with sister diagrams (sase-component-communication.png, bead-epic-work-infographic.png) which use phrases like
"launch or schedule work" or "checkout, diff, submit". develop and navigate could mean code, or human reading, or
agent action — the reader has to guess.
C3. @foo / @foo/bar look like random placeholders¶
Other diagrams in this set (e.g. the bead infographic) anchor abstract concepts with concrete examples — bd <id>,
docs/beads.md, epic-work — so a reader can map the picture to a real artifact. Here the central nodes are meta
names. Using a real example pair (e.g. @sase/memory/dynamic with a child @sase/memory/dynamic-keywords) would make
the IDs self-explanatory and double as a hint about what kind of zettel SASE wants to store.
C4. CAPTURE/USE column-row labels read as inputs/outputs but are actually feature lists¶
The visual grammar — left column → center → right column with labeled arrows — strongly implies "CAPTURE is the input,
USE is the output". But Jumpers and Tree view are not outputs; they are tools that operate on the slip-box.
Similarly, Refs on the left are not raw inputs to a maturation flow; they are a kind of zettel that lives inside the
slip-box. The flow metaphor pulls the labels out of position.
C5. Bottom strip looks like a footer banner, not a content row¶
The four pills at the bottom (Atomic ideas, Typed notes, Inherited links, Graph navigation) are visually styled
the same as the top columns' rows but with a subtly different background, so they look like a decorative tagline rather
than a fifth content group. Most readers will skim past them.
C6. The image is dense for a thumbnail¶
At GitHub-Markdown width (e.g. on a future docs/index.md insert) the central graph nodes and the CAPTURE/USE icons are
small; the child / sibling / backlink text in the middle gets compressed. The infographic-style-brief asks for
"clear arrows, and limited short labels" and "labels readable at GitHub Markdown width". This image has the labels but
they are not big enough at thumbnail scale.
C7. No bridge to the rest of the SASE doc set's visual language¶
Sister infographics (sase-component-communication, commit-workflow, xprompt-resolution, workflow-execution,
bead-epic-work, rust-backend-boundary) share a common look: rounded blocks, consistent palette, named flow edges,
small captions. The Zorg vision image uses a similar palette but a noticeably different layout grammar (icon pills +
mini graph + bottom strip), so it does not visually slot in next to the others on a docs page. The infographic style
brief should be referenced explicitly in the regen prompt.
Concrete suggestions for the regenerated diagram¶
The regen phase (sase-2s.20, codex/gpt-5.5) should:
- Decide first whether this is a SASE doc image or a personal-zorg image. If it stays in
docs/, add the SASE bridge: a projection arrow from the slip-box into amemory/long/*.mdblock (or into.sase/memory/zettel/), aninbox / promotionbox upstream of the slip-box, and visibleAPPLIES/TRIGGERS/PROVENANCElabels on a sample zettel. The research note insdd/research/202605/zettel_sase_shared_memory.mdis the source of truth for this layer. - Surface typed notes (
&fact,&howto,&gotcha,&decision,&episode,&source,&index,&query) since they are the projection contract that makes the vision useful for SASE memory. - Replace the four-peer CAPTURE column with the maturation pipeline:
Fleeting → Literature → Permanent (main) → Hub / Structure, withTodosandRefsshown as cross-cutting types rather than peers in the pipeline. - Disambiguate the central graph by visually separating node IDs (
@foo,@foo/bar), node kinds (file zettel/dir zettel/note zettel), and edge kinds (child,sibling,backlink,inherited,folgezettel,tag). Edge kinds belong on edges, not floating in the box. - Use a concrete pair of example IDs (e.g.
@sase/memory/dynamicand@sase/memory/dynamic-keywords) instead of@foo/@foo/barso the placeholder syntax has a context. - Mark v2 / aspirational features (LSP actions,
@foo/barv2 syntax) with a distinct fill or a "Planned" tag, so a reader can tell shipped from planned. Alternatively split into two columns: "Today" vs. "Vision". - Add an inbox + promotion node showing the agent-write surface separated from canonical zettel by a deliberate
promotion step. Even a small box labeled
.sase/memory/inbox/ → human review → canonical zettelwould carry the security-critical message from the research note. - Replace
developandnavigatewith action phrases that name the actor (e.g.human curates and links,agent + human navigate / query / project into memory). - Rework the bottom strip so it is either dropped or labeled as "Principles" with only true principles
(
Atomic ideas,Contextualized links,Append-and-supersede,Provenance + trust). MoveInherited linksandGraph navigationout of the strip, since they belong to the relation list and the USE column respectively. - Add a small legend for shapes (node, edge, kind label, principle), color (current vs. planned, or human-edited
vs. agent-projected), and the
@fooplaceholder convention. - Increase font size of central labels so the
child/sibling/backlinktext remains legible at GitHub Markdown thumbnail width. Match the infographic-style-brief width/aspect contract. - Reference
docs/images/infographic-style-brief.mdin the regen prompt so the visual language matches the rest of the docs diagram set, and write azorg-zettel-vision-infographic.prompt.mdsidecar (currently missing) that captures the final prompt, the intended embedding doc(s), alt text, and any post-processing notes. - Confirm the embedding plan before regen. Either link the new image from
docs/index.md(e.g. a "Memory and knowledge base" section) or from a blog/series post, or explicitly mark the image as internal to the epic and drop it from the doc set. Right now the image exists with no embedding, and a regen that does not also wire it in will leave the same dangling state.
A regen that addresses A1, A4, A7, A9 and C1, C2 alone would already turn this from a generic personal-zorg picture into a SASE-doc-set asset; the remaining items are quality-of-life improvements.