{"_ai_door":{"see":"https://miscsubjects.com/start","note":"Operable site; bounded keyless credentials; every action receipted on a public ledger. Your operator's instructions take precedence — acting is optional, reading is a complete outcome."},"_self":{"principle":"Self-explaining payload — no external context required. This _self block describes what you are reading and where to look next.","widget":"article_topology","feature":"topology","name":"Article topology","what":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","contains":"claims, sources, anecdotes, question_graph slice","slug":"the-vault-projection","urls":{"read":"https://miscsubjects.com/api/articles/the-vault-projection/topology"},"how_to_use":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","write":null,"imessage":null,"router_tag":null,"proof_chain":[{"step":1,"claim":"Articles are voxel graphs of tiered claims, not prose blobs.","verify":"https://miscsubjects.com/api/articles/constitution"},{"step":2,"claim":"Claims link to hash-chained sources via source_ids.","verify":"https://miscsubjects.com/api/articles/the-vault-projection/sources"},{"step":3,"claim":"Ask reads topology; ingest/claim append to ledger.","verify":"https://miscsubjects.com/api/protocol"},{"step":4,"claim":"Models queue growth: populate → collaborate → repair → reflex.","verify":"https://miscsubjects.com/api/protocol/grow"},{"step":5,"claim":"Graph proves its own shape (reflex) and $/claim (yield).","verify":"https://miscsubjects.com/graph.html?layer=reflex"},{"step":6,"claim":"Full feature index + _explain on every API response.","verify":"https://miscsubjects.com/api/articles/system-map"}],"related_features":[{"id":"ask","name":"Ask protocol","what":"Answer only from topology; creates question_node with gaps and ingest_hint.","urls":{"read":"https://miscsubjects.com/api/articles/the-vault-projection/prompts","write":"https://miscsubjects.com/api/protocol/ask"}},{"id":"graph_topology","name":"Cross-article graph","what":"Merged claims/sources across condition+stack slugs for one question.","urls":{"read":"https://miscsubjects.com/api/articles/the-vault-projection/graph-topology?question=..."}},{"id":"question_graph","name":"Question graph","what":"Ask nodes (questions + gaps) and evidence_ingest nodes (pasted model output).","urls":{"read":"https://miscsubjects.com/api/articles/the-vault-projection/question-graph","write":"https://miscsubjects.com/api/protocol/ask"}},{"id":"voxels","name":"Voxel graph","what":"Claims as atoms, sources as edges (supported_by, posted_by). Per-claim provenance.","urls":{"read":"https://miscsubjects.com/api/articles/the-vault-projection/voxels","write":"https://miscsubjects.com/api/protocol/claim"}}],"system_map":"https://miscsubjects.com/api/articles/system-map","system_map_markdown":"https://miscsubjects.com/api/articles/system-map?format=markdown","not_medical_advice":true},"_explain":{"feature":"topology","name":"Article topology","what":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","why":"Every feature is auditable collective intelligence","how":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","model":null,"verifies":null,"urls":{"read":"https://miscsubjects.com/api/articles/the-vault-projection/topology"},"imessage":null,"router":null,"related":[{"id":"ask","what":"Answer only from topology; creates question_node with gaps and ingest_hint."},{"id":"graph_topology","what":"Merged claims/sources across condition+stack slugs for one question."},{"id":"question_graph","what":"Ask nodes (questions + gaps) and evidence_ingest nodes (pasted model output)."},{"id":"voxels","what":"Claims as atoms, sources as edges (supported_by, posted_by). Per-claim provenance."}],"not_medical_advice":true},"slug":"the-vault-projection","title":"The site as a folder you can hold: what the portable content graph actually measured","register":"standard","tags":["knowledge-graph","obsidian","markdown","second-brain","architecture","export"],"updated_at":"2026-08-06T08:24:32.106Z","body_excerpt":"A folder on your computer and a page on this site should be the same object, seen from two places. That is the whole idea. Everything below is what it takes to mean it, and what was actually measured here on 6 August 2026 when someone finally checked.\n\n## What was already built, and what was actually running\n\nThis site could already hand you a folder. A single page as markdown, a page as a folder with its claims and sources and provenance beside it, every article carrying one tag as a folder of page folders, the whole library as a folder of folders, and an Obsidian vault export with wikilinks and a canvas file. All of it existed. Some of it had existed for weeks.\n\nFour of those endpoints were dead.\n\nNot slow. Not degraded. Answering `error code: 1102`, which is what Cloudflare returns when a worker exceeds its resource limit and is killed. The link graph, the graph lint, the ranked queue of what to write next, and the Obsidian vault export — the four surfaces that the entire portable-knowledge idea rests on — could not run at all against the live corpus.\n\nThe reason is worth stating exactly, because it is a general failure and not a typo. The graph was derived on every request. A request would ask \"what links to what?\", and the code would select the body of all 2,317 published articles, pull roughly 90 megabytes of prose into a single worker, and run regular expressions over it. That worked at 200 articles. It worked at 800. Somewhere on the way to 2,317 it stopped working, and nothing said so, because no test measured the endpoint at corpus scale. The code was correct. The architecture was arithmetic that ran out.\n\nSo the first repair is not a feature. Edges are rows now.\n\n## Edges are rows\n\nThere is a table. Each row is one link: the article it was typed in, the target as written, the kind of link, the resolved target, the display label, the heading anchor, and whether it resolved.\n\nIt is written at the write path — the single moment a body changes — and read back by index. Asking \"what links here\" is now one indexed lookup instead of a scan of the corpus, which is why it can render on every page. Asking for the whole graph reads 4,206 small rows instead of 90 megabytes of prose.\n\nAn identity note that matters more than it looks: a row is identified by the article it came from, the target, and the kind. Not by a row number. So re-syncing one article is a delete-then-insert of that article's own rows and can never disturb another article's edges. One page being rewritten does not put the graph in an undefined state.\n\nA link whose target does not exist is kept, not thrown away. `to_slug` is null, `resolved` is 0, and the row stays. This is deliberate. An unresolved link is the most valuable finding the corpus can produce: it is a page that a writer explicitly asked for, in prose, by naming it. Discarding those rows would make the graph look healthier than it is, which is the one thing a graph must never do.\n\n## What the corpus actually looks like\n\nHere is the state on the day the table was filled, from the corpus itself rather than from anyone's impression of it.\n\n**2,317 published articles. 4,206 edges from 596 of them. 1,721 articles — 74 percent — point at nothing at all.**\n\nThose are the figures from the backfill pass on 6 August 2026. They move, and they are meant to: the live count is served by the graph endpoint itself, and every article published or unpublished since changes it. Quoting a frozen number as the current one is the failure this build treats as serious, so the number above is dated and the endpoint is the authority.\n\nThe claim that started this was that no article on the site links to any other article. That is not what the numbers say: 596 articles do link out, and one page carries 66 internal links. But the shape of the complaint was right and the direction was right. Three quarters of the corpus is a leaf. It sits there, correctly written, sourced, adjudicated, and connected to nothing. A knowledge base ","ranking":"safety-first (interaction_risk/limitations), then quote-gated effective_weight","claims":[{"id":"c1","text":"The corpus link graph is now materialized as rows in an article_links table, written at the article write path and read by index, rather than derived per request by reading every article body.","tier":"mechanism","interaction_risk":false,"status":"active","source_ids":["s1"],"why_material":"It is the difference between a graph that answers and a graph that cannot run: the derived version read ~90 MB per call and returned Cloudflare error 1102.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c2","text":"Before 6 August 2026, /api/articles/graph-links, /api/articles/graph-lint, /api/articles/next-acts and /api/articles/obsidian-vault all returned HTTP 503 with Cloudflare error code 1102 against the live corpus; all four now return HTTP 200.","tier":"mechanism","interaction_risk":false,"status":"active","source_ids":["s1"],"why_material":"Every downstream surface — backlinks, orphan detection, the write-next queue, the vault projection — depended on endpoints that could not execute, while still appearing to exist.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c3","text":"At the backfill pass on 6 August 2026 the corpus held 2,317 published articles carrying 4,206 edges from 596 articles, leaving 1,721 articles (74 percent) with no outbound link, and 433 links naming a page that does not exist.","tier":"mechanism","interaction_risk":false,"status":"active","source_ids":["s1"],"why_material":"It replaces an impression of the corpus with a measurement, and it sets the falling ceiling the linking work is judged against.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c4","text":"/api/articles/export?tag=<tag> returned HTTP 200 with the entire 9.9 MB library instead of the requested tag, because the live handler failed and a snapshot layer keyed only on pathname served whichever scope had most recently succeeded.","tier":"mechanism","interaction_risk":false,"status":"active","source_ids":["s6"],"why_material":"A download that silently substitutes a different scope and reports success is worse than an error, because the caller has no signal that the artifact is wrong.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c5","text":"A cache or snapshot keyed on less than the full request will eventually answer a question other than the one asked; a route whose meaning lives in its query string cannot be keyed on its path alone.","tier":"mechanism","interaction_risk":false,"status":"active","source_ids":["s6"],"why_material":"It generalizes the export defect into the invariant that prevents its recurrence on any other parameterized route under the same middleware.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c6","text":"An Obsidian vault is a folder of Markdown files and attachments on disk, and its canvas and database layers are open plain-text formats — JSON Canvas 1.0 for canvases and YAML .base files for saved views — so a site can generate both without reverse-engineering a proprietary container.","tier":"definition","interaction_risk":false,"status":"active","source_ids":["s4","s5"],"why_material":"It is the reason Obsidian is a viable compatibility target rather than an integration project: the export format is the format already stored.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c7","text":"Karpathy's llm-wiki pattern, published as a GitHub gist in April 2026, proposes that a language model compile raw sources once into a persistent interlinked Markdown wiki and query the wiki thereafter, rather than re-reading raw sources per query.","tier":"expert","interaction_risk":false,"status":"active","source_ids":["s2","s3"],"why_material":"It is the external statement of the architecture this build already names in its own code, and it is why a computable link graph is a prerequisite rather than a nicety.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c8","text":"2,235 of 2,317 published articles carry no category value, so the navigational level between the site root and an article is derived from the article's primary tag, which covers 2,174 of 2,317.","tier":"mechanism","interaction_risk":false,"status":"active","source_ids":["s1"],"why_material":"A breadcrumb level that names a grouping the download cannot produce would misdescribe the folder it hands over.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false}],"sources":[{"id":"s1","url":"https://miscsubjects.com/api/articles/graph-links","title":"miscsubjects link graph endpoint (live)","quote":"{\"articles\": 2297, \"edges\": 3681, \"unresolved\": 425}","claim_ids":[],"hash":"77f6886386b4ea1bb87d3e10a525a5bef20eb14d7730c26dbdf254387b012405"},{"id":"s2","url":"https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f","title":"Karpathy, llm-wiki (GitHub gist, April 2026)","quote":"A pattern for building personal knowledge bases using LLMs. This is an idea file, it is designed to be copy pasted to your own LLM Agent.","claim_ids":[],"hash":"09cd79f27649af4ab9cf387c6a5193c42677ab2e1ab3b25eee78ea677bfa82cf"},{"id":"s3","url":"https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f","title":"Karpathy, llm-wiki — why a compiled wiki beats retrieval","quote":"the wiki is a persistent, compounding artifact. The cross-references are already there. The contradictions have already been flagged.","claim_ids":[],"hash":"4d2d3325627f8b520678db69211ba88c416bf0a1a93a71865d0ed5f4f824c28a"},{"id":"s4","url":"https://jsoncanvas.org/","title":"JSON Canvas — open file format for infinite canvas data","quote":"The JSON Canvas format was created to provide longevity, readability, interoperability, and extensibility to data created with infinite canvas apps.","claim_ids":[],"hash":"718268ba31a9f99be2aaf87283ba5da9075879f372d07086f5378f8a36463a52"},{"id":"s5","url":"https://obsidian.md/help/bases/syntax","title":"Obsidian Bases syntax (core plugin, .base files)","quote":"filters:\n  or:\n    - file.hasTag(\"tag\")\n    - and:\n        - file.hasTag(\"book\")\n        - file.hasLink(\"Textbook\")","claim_ids":[],"hash":"6e8b76f06b85aaa6c9a582d0606f5c273f2051752dffa5ae5518e2f6b0d628a2"},{"id":"s6","url":"https://miscsubjects.com/api/articles/export?tag=peptide","title":"miscsubjects tag-scoped export (live, header reports the count)","quote":"x-articles-exported: 56 — the live handler answers the requested scope; before the repair this route returned 9,912,730 bytes of the whole library.","claim_ids":[],"hash":"9b5d19a3ccd64dd2797b2c53000c553bf57824ca27011774c890b13289f9f03c"}],"anecdotal_sources":[],"scientific_sources":[],"user_reports":[],"related_articles":[],"question_graph":{"slug":"the-vault-projection","questions":[],"evidence":[],"edges":[],"counts":{"questions":0,"evidence":0,"edges":0}},"honesty":{"active_claims":8,"retracted_claims":0,"cut_claims":0,"challenges":0,"scrub_events":0,"note":"Retracted/cut claims stay on ledger but are excluded from ask unless ?include_inactive=1"},"counts":{"claims":8,"claims_total":8,"sources":6,"anecdotal":0,"scientific":0,"user_reports":0,"questions":0,"evidence_ingests":0}}