canvas
Generate the Blueprint Map: a JSON Canvas 1.0
.canvas file, the spatial counterpart to the index, opened in Obsidian’s Canvas
view.
It draws blueprints and the edges between them. The framework is the one thing it never draws.
How each collection draws
Section titled “How each collection draws”The way its framework declares, in the collection’s - **Canvas:** line:
| Declaration | Draws as |
|---|---|
file |
A full-file node — for prose meant to be read whole, like a frame. |
card |
A node embedding the blueprint. |
card from ## Section |
A node embedding just that section. |
| (absent) | A plain card. |
Structurally: each collection is its own group, and a grouped collection nests a group per sub-folder.
Each blueprint’s connects_to links become directed edges, this → target.
That’s the intentional map — what you’re asserting relates to what.
depends_on is off by default, and can be overlaid in a distinct colour. It
answers a different question (implementation dependency rather than conceptual
connection), and mixing the two produces a diagram that means nothing.
The distinction →
What you choose
Section titled “What you choose”Which collections to include. Top-level documents aren’t mapped.
The generated .canvas is itself a top-level document — register it in
## Top-Level in Framework.md.
Its default filename follows the naming convention: blueprint-map.canvas under
kebab-case, BlueprintMap.canvas under TitleCase, Blueprint Map.canvas under
Title Case. It only picks the name when you don’t pass --out, so an existing
canvas keeps its name until you regenerate without one.
How it runs
Section titled “How it runs”A build-canvas.py does the work where a shell is available; on a sandboxed host
it emits the JSON by hand. Regenerable, and it never gates.