{"_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_bundle","feature":"bundle","name":"LLM article bundle","what":"Portable reference package: body + claims + sources + voxels + provenance + manifest + constitution.","contains":"body, claims, sources, voxels, provenance, question graph, constitution, llm_manifest","slug":"the-vault-projection","urls":{"read":"https://miscsubjects.com/api/articles/the-vault-projection/bundle?format=markdown"},"how_to_use":"Reference bundle for an LLM or reader. §SELF explains the surface; ingest and claim endpoints in llm_manifest are the write-back routes.","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":"topology","name":"Article topology","what":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","urls":{"read":"https://miscsubjects.com/api/articles/the-vault-projection/topology"}},{"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"}},{"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":"ingest","name":"Ingest protocol","what":"Parse pasted evidence → source ledger + claims + evidence_ingest node.","urls":{"write":"https://miscsubjects.com/api/protocol/ingest"}},{"id":"claim_post","name":"Claim post protocol","what":"Prompt-injection style POST — one claim voxel with who_claims + posted_by.","urls":{"read":"https://miscsubjects.com/api/articles/the-vault-projection/voxels","write":"https://miscsubjects.com/api/protocol/claim"}},{"id":"llm_manifest","name":"LLM manifest","what":"Machine-readable read/write contract for external LLMs.","urls":{"read":"https://miscsubjects.com/api/articles/llm-manifest"}}],"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":"bundle","name":"LLM article bundle","what":"Portable reference package: body + claims + sources + voxels + provenance + manifest + constitution.","why":"Every feature is auditable collective intelligence","how":"Reference bundle for an LLM or reader. §SELF explains the surface; ingest and claim endpoints in llm_manifest are the write-back routes.","model":null,"verifies":null,"urls":{"read":"https://miscsubjects.com/api/articles/the-vault-projection/bundle?format=markdown"},"imessage":null,"router":null,"related":[{"id":"topology","what":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER."},{"id":"voxels","what":"Claims as atoms, sources as edges (supported_by, posted_by). Per-claim provenance."},{"id":"ask","what":"Answer only from topology; creates question_node with gaps and ingest_hint."},{"id":"ingest","what":"Parse pasted evidence → source ledger + claims + evidence_ingest node."},{"id":"claim_post","what":"Prompt-injection style POST — one claim voxel with who_claims + posted_by."},{"id":"llm_manifest","what":"Machine-readable read/write contract for external LLMs."}],"not_medical_advice":true},"MASTHEAD":{"sorry_status":"planes not merged yet — sorry-status activates after voxel-merge-planes","identity":{"slug":"the-vault-projection","version":7,"content_hash":"804e87e75a651ffdfd2e9da5e30efa402b7aedde1b1fb63c6cf46fefcffdb7dc","thread_head":"genesis","divs":null},"thesis":{"root_claim":"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"},"load_bearing":[{"id":"c2","tier":"mechanism","status":"active","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 C"},{"id":"c3","tier":"mechanism","status":"active","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 "},{"id":"c4","tier":"mechanism","status":"active","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 lay"},{"id":"c5","tier":"mechanism","status":"active","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 str"},{"id":"c6","tier":"definition","status":"active","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 ca"},{"id":"c7","tier":"expert","status":"active","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 Mar"},{"id":"c8","tier":"mechanism","status":"active","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 "}],"standing_objections":{"open":0,"strongest_open":null,"link":"https://miscsubjects.com/api/articles/the-vault-projection/discourse"},"verbs":{"read":"GET https://miscsubjects.com/api/articles/the-vault-projection/voxels — DIVs + hashes + chains (free)","read_claims":"GET https://miscsubjects.com/api/articles/the-vault-projection/claims — every formal claim as claim:<id> with current hash, thread, stable link, and exact contribution/edit bodies","challenge":"POST https://miscsubjects.com/api/protocol/voxel-challenge {slug, expected_thread_head, target_div?, expected_hash?, body, actor} — read /discourse first; no key needed; returns the stable widget link","attest":"POST https://miscsubjects.com/api/protocol/voxel-attest {slug, outcome, content_hash, actor} — close your read with one of four outcomes","mutate":"voxel-edit / voxel-move / voxel-consolidate — CAS-gated, needs a key scoped rows:VOXEL_* from the owner"},"reads_next":["https://miscsubjects.com/a/philosophy","https://miscsubjects.com/api/articles/the-vault-projection/discourse","https://miscsubjects.com/api/protocol"]},"bundle_version":1,"generated_at":"2026-08-06T09:02:16.165Z","slug":"the-vault-projection","title":"The site as a folder you can hold: what the portable content graph actually measured","url":"https://miscsubjects.com/a/the-vault-projection","register":"standard","tags":["knowledge-graph","obsidian","markdown","second-brain","architecture","export"],"posted_at":"2026-08-06T06:25:40.177Z","updated_at":"2026-08-06T08:24:32.106Z","body":"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 where three quarters of the pages are unreachable from any other page is a pile of documents that happen to share a domain name.\n\n**318 of those links name a page that does not exist.**\n\nThat number started at 433 and fell twice, and both falls were the measurement getting honest rather than the corpus getting better. 100 of the original were stale rows: ten pages had been repaired upstream, and the backfill could add an edge but never remove one, because its candidate filter only visited articles that still carried a link pattern — an article whose links were deleted was never looked at again. Another 15 were links to the laws, which render at /a/<slug> from code rather than from rows, so a resolver that only checked the articles table called every one of them broken. A broken-link list salted with pages that already answer 200 is a list nobody can act on, so both were fixed at the mechanism: the backfill now reconciles before it extracts, and one resolver serves both the write path and the backfill.\n\nThose are worth reading rather than summarizing, because the list is diagnostic. The most-wanted missing page is requested by 21 different articles. Then one wanted by 14, one by 12. Then this run: `oip-convergence-edge-11`, `-22`, `-33`, `-44`, `-55`, `-66`, `-77`, `-88`, `-99`, and `-1010`, each requested by exactly 10 articles.\n\nThose are not ten missing pages. Doubled digits ending in `1010` is what a loop that writes an index twice produces. Some generator built those link targets by concatenating a number with itself, and 100 broken links have been sitting in the corpus ever since, pointing at pages that were never going to exist under those names. Nobody found it because nothing could compute the graph. The dead endpoint was hiding its own evidence.\n\n## A download that returns a different download\n\nWhile measuring the export routes, a worse thing surfaced. Asking for one tag returned the entire library.\n\nNot an error. HTTP 200, `content-type: text/markdown`, 9.9 megabytes, and no header anywhere in the response saying that what came back was not what was asked for. A person clicking \"download the peptide folder\" would receive the whole site and have no way to know.\n\nThree layers had to agree for that to happen, and they did.\n\nFirst, the export handler read the whole corpus and filtered afterward in code. Any scope wider than a single article pulled the same 90 megabytes into one worker and threw — the same arithmetic failure as the graph.\n\nSecond, this site has an always-up layer, and it earns its place: it keeps a snapshot of the last good response so a page mid-rewrite serves the last good version instead of a 500. Its snapshot key is the pathname. The query string is discarded. So every scope of `/api/articles/export` — one article, one tag, one category, the entire library — shared exactly one snapshot. When the live handler failed, the caller received whichever scope had most recently succeeded.\n\nThird, the eligibility rule that decides which paths may hold a snapshot was consulted before *writing* one and not before *serving* one. So a path forbidden from ever storing a snapshot could still be answered from one.\n\nThe comment sitting directly above the neighbouring rule already said a bare request only, \"so a parameterized response never overwrites the canonical snapshot.\" The reasoning was written down. It was applied to one pattern and not to the one next to it.\n\nAll three are fixed. Tag and category now select their own rows in SQL and read nothing else. The whole library reads in windows. Snapshot eligibility requires no query string, and now governs serving as well as writing.\n\nThe general rule this leaves behind is worth more than the fix: **a cache keyed on less than the request will eventually answer a different question than the one asked.** A route whose meaning lives in its query cannot be keyed on its path.\n\n## Where you are, and what you can take\n\nEvery download named above was reachable only by knowing its URL, or by three plain-text links at the very bottom of an article, below the sources. Which is why the owner asked twice for downloads that already existed. A capability nobody can find is indistinguishable from one that was never built.\n\nThere is now a trail across the top of every article:\n\n> Home / peptide / BPC-157\n\nEach segment is a link, and the trail carries one control that hands you any level of it as a folder:\n\n- **This article** — markdown, json, its folder as a zip, its skill file\n- **Its history** — the last 1, 10, or 100 revisions as markdown, or all of them as json\n- **Everything under its tag** — markdown, or the tag folder as a zip\n- **The whole site** — markdown, the folder of folders as a zip, the Obsidian vault, the link graph\n\nThe nesting the owner described is exactly the nesting that exists: a page is a folder, a tag is a folder of page folders, the site is a folder of folders. Unzip the site folder and it opens as a vault.\n\nClicking the middle crumb used to land on the homepage. /t/<tag> was not a route at all — /t/peptide and /t/zzzznotatag returned the same bytes — so the trail asserted a hierarchy the site could not honour. It is a page now: the articles under that tag newest first, the sibling tags they are also filed under, and the folder downloads at that level. An unknown tag returns a 404 that names where to go instead of a homepage that pretends.\n\nOne more thing had to be true before any of this was portable. Every note this build exported carried its YAML frontmatter a few hundred bytes into the file, because the self-explaining preamble was prepended in front of it. Obsidian reads properties only from the opening three dashes at byte 0, so the whole export looked correct and had no machine-readable identity at all: no properties panel, nothing a Bases view could query, nothing a round trip could compare. The frontmatter now leads the file and carries a durable ms:article:<slug> id, the revision count, the content hash and the permalink. It is the same defect shape as a slot composer burying an authored body — a wrapper winning over the content it was meant to introduce — and it is pinned by a test that asserts the first four bytes.\n\n### The middle crumb is a tag, and that was not a preference\n\nThe obvious thing to put between Home and the article is its category. That does not work here, and the reason is a fact about this corpus rather than a design opinion: **2,235 of 2,317 published articles have no category at all.** Of the 82 that do, some disagree with themselves — `Governance` and `governance`, `system` and `systems`, `peptides` and `compound`.\n\nTags cover 2,174 of 2,317. The folder builder already groups the corpus by tag. So the tag became the middle crumb, because it is the only level that both exists for nearly every page and names the same thing the download hands over. A breadcrumb that names a folder the download does not produce is a lie told in navigation.\n\n## What is inherited from Obsidian, and what is refused\n\nThe field this borrows from is inventoried in [[second-brain-register]] — who built which part, and which parts last. Obsidian is the right compatibility target for one structural reason: a vault is a folder of markdown files and attachments on a disk. There is no proprietary container to reverse-engineer. Shida Li and Erica Xu released the first beta on 30 March 2020 and 1.0.0 on 13 October 2022; the storage model has always been ordinary files.\n\nThat makes it something rare — a widely used knowledge tool whose native format is the format this site already stores. The primitives worth inheriting are few:\n\n**Files and folders.** A page is a file. A tag is a folder. Already true in the export.\n\n**Properties.** YAML at the top of the file. Every exported note needs a stable identifier, a revision, a content hash, its slug, its permalink, its tags, and its updated time.\n\n**Internal links and backlinks.** `[[double brackets]]`, and the reverse index derived from them. Backlinks are never authored — they are the edge table read the other way.\n\n**Canvas.** Obsidian's canvas format is an open specification, JSON Canvas 1.0, published 11 March 2024. Two optional top-level arrays, `nodes` and `edges`, with four node types: `text`, `file`, `link`, and `group`. A category canvas is a mechanical projection of the edge table into that shape — no drawing, no layout engine, just nodes and edges written to a file Obsidian already opens.\n\n**Bases.** A core plugin since Obsidian 1.9.0 on 21 May 2025, and a `.base` file is plain YAML with `filters`, `formulas`, `properties`, `summaries`, and `views`. That means a saved query over the corpus is a text file this build can generate — \"every article with an unsourced claim\", \"everything updated this week\" — and it opens as a table in the reader's own app.\n\nNow the refusals, which matter as much.\n\n**Do not treat visible wikilinks as the graph.** There are two different things here and merging them destroys both. An editorial link is one a writer placed for a reader, inside a sentence, because it belongs there. A typed relation is a machine-readable fact — this supports that, this contradicts that, this supersedes that — which may or may not deserve to interrupt a sentence. The edge table stores relations. The renderer decides how each one appears: an anchor on the site, `[[a title]]` in a vault, a relative path in portable markdown, a target id in json. One relation, four representations.\n\n**Do not let the filesystem become the source of truth.** A path, a title, a slug, and a category all change. An identity may not. Folders are a projection of collections, and moving a file changes its projection, not what it is. This matters concretely, not theoretically: an article can belong to peptides and to neurology at once, and a file can only sit in one folder without being duplicated.\n\n**Do not attempt to inherit every Obsidian feature.** Obsidian has a plugin ecosystem in the thousands. Cloning it is an unbounded project that would never finish and would produce a worse Obsidian. Inherit the data model and the handful of interactions above; let everything else be a view over those primitives, or a local tool the reader already owns.\n\n**Do not build automatic two-way sync yet, and be honest about why.** One-way — the site hands you a vault — is safe and works today. The reverse direction is where knowledge bases get destroyed. It needs a recorded base revision per file and a genuine three-way comparison: only the remote changed, update the file; only the file changed, propose a revision; both changed from the same base, refuse and raise a conflict. A missing file is never an inferred deletion. A model may propose a merge; the model that produced the merge may not be the thing that certifies it preserved everything. Until that state machine exists and is tested, shipping a push path would be shipping a way to lose work.\n\n## What a model can do with this that it could not do before\n\nThis is the part that pays for the rest. When the corpus is a graph you can query rather than prose you must read, the instruction \"organize this\" stops being a request for judgment and becomes a series of checkable operations.\n\n- **Find what nothing points at.** One query. 1,721 answers today.\n- **Find what has been asked for and never written.** One query over unresolved targets, ordered by how many articles want it. The top answer is wanted by 21 pages. That is a commission, not a suggestion.\n- **Find generator bugs.** The `-1010` run was invisible in 2,317 bodies and obvious in one sorted list.\n- **Propose links without writing them.** Candidate edges from shared sources, shared tags, and exact title matches, submitted as a patch — moves, new links, removed links, redirects, the articles affected, and the revisions expected. Deterministic checks confirm every target resolves before anything is applied.\n- **Reorganize as a filesystem operation.** Nested folders and linked markdown are a shape every coding model already knows how to manipulate. It needs no special protocol for this site.\n\nThe last one is the actual prize, and it is why the graph had to become a table before anything else could be built on it.\n\n## The invariants this leaves behind\n\nThese are the rules the repairs imply. They are stated so the next failure of the same class is recognizable.\n\n**An edge is a row.** A graph derived per request over the corpus will pass every test at small scale and die silently at large scale. If it cannot be answered by an index, it will eventually not be answered at all.\n\n**A cache key must cover the whole request.** Keyed on less, it will hand one caller another caller's answer, with a success code.\n\n**One gate, both directions.** A path forbidden from writing a cached copy must not be served one either. Two halves of one rule drift apart the moment they are written in two places.\n\n**An unresolved link is kept.** It is the strongest signal in the corpus about what to write next. Deleting it is deleting the evidence.\n\n**Identity is not a path.** Slugs, titles, folders and categories are projections. What a thing is survives being moved.\n\n**A model may propose a reorganization and may not certify its own.** The thing that generated the merge does not get to be the thing that confirms nothing was lost.\n\n## What is not done\n\nStated plainly, because a specification that hides its gaps is worse than no specification.\n\nThe 1,721 unlinked articles are still unlinked — the graph can now name them, which is what makes the work possible, but nothing has connected them yet. The 433 broken links are still broken, including the 100 from the doubled-digit generator. The vault export does not yet carry a full YAML property block with a stable identifier per note, and until it does, a round trip cannot be verified by hash. There is no push path, for the reasons above. There is no manifest binding an export to one content head, so two people downloading \"the whole site\" a minute apart cannot yet prove they hold the same thing.\n\nThe rules above are written the way [[coding-law]] and [[writing-law]] are written, in the surfaces models load, not in prose, and for the same reason: a correction that lives only in prose is a correction the next agent never sees.\n\nEach of those is a task row, not a paragraph in a report. The distinction is the point: this document describes what was measured and repaired. What remains is work, and work here exists only as a row that names its own acceptance test.\n","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","effective_weight":0.1,"source_ids":["s1"]},{"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","effective_weight":0.1,"source_ids":["s1"]},{"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","effective_weight":0.1,"source_ids":["s1"]},{"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","effective_weight":0.1,"source_ids":["s6"]},{"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","effective_weight":0.1,"source_ids":["s6"]},{"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","effective_weight":0.1,"source_ids":["s4","s5"]},{"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","effective_weight":0.1,"source_ids":["s2","s3"]},{"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","effective_weight":0.1,"source_ids":["s1"]}],"sources":[{"id":"s1","url":"https://miscsubjects.com/api/articles/graph-links","title":"miscsubjects link graph endpoint (live)","quote":"{\"articles\": 2297, \"edges\": 3681, \"unresolved\": 425}","hash":"77f6886386b4ea1b"},{"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.","hash":"09cd79f27649af4a"},{"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.","hash":"4d2d3325627f8b52"},{"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.","hash":"718268ba31a9f99b"},{"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\")","hash":"6e8b76f06b85aaa6"},{"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.","hash":"9b5d19a3ccd64dd2"}],"voxels":{"slug":"the-vault-projection","counts":{"divs":0,"voxels":8,"sources":6,"edges":10},"note":"slim bundle — full voxels at /api/articles/the-vault-projection/voxels"},"constitution":{"url":"https://miscsubjects.com/api/articles/constitution"},"provenance":[{"action":"edit","model":"unknown","ts":"2026-08-06T06:25:40.177Z","hash":"179eb13f5a26c890","tokens_in":0,"tokens_out":0},{"action":"edit","model":"unknown","ts":"2026-08-06T07:20:05.211Z","hash":"ac155771a841b991","tokens_in":0,"tokens_out":0},{"action":"edit","model":"unknown","ts":"2026-08-06T07:20:08.676Z","hash":"c639a63f15a0235c","tokens_in":0,"tokens_out":0},{"action":"edit","model":"unknown","ts":"2026-08-06T07:27:13.553Z","hash":"d6630432fdacea47","tokens_in":0,"tokens_out":0},{"action":"edit","model":"unknown","ts":"2026-08-06T07:27:32.336Z","hash":"fcb548340f6aff0e","tokens_in":0,"tokens_out":0},{"action":"edit","model":"unknown","ts":"2026-08-06T08:20:00.113Z","hash":"49705378f6b6fc69","tokens_in":0,"tokens_out":0}],"contributions":[],"topology":null,"slim":true,"ledger_totals":{"claims":8,"sources":6,"exported_claims":8,"exported_sources":6},"question_graph":{"slug":"the-vault-projection","questions":[],"evidence":[],"edges":[],"counts":{"questions":0,"evidence":0,"edges":0}},"verification":{"provenance":{"valid":true,"entries":6,"head":"49705378f6b6fc69126ce5230ab77283011bcb0345515a1de55043f79087f22e"},"sources":{"valid":true,"entries":6,"head":"9b5d19a3ccd64dd2797b2c53000c553bf57824ca27011774c890b13289f9f03c"}},"counts":{"claims":8,"sources":6,"provenance":6,"contributions":0,"questions":0,"evidence_ingests":0,"voxel_edges":10},"transport":"Open every URL in this bundle with your browser or web / URL-fetch tool. Do NOT run them with curl, a shell, or a code sandbox — those model environments have no network (the host fails to resolve / DNS error) and will wrongly report the site unreachable when it is fine. Opening the link IS the call.","llm_manifest":{"version":"1","site":"https://miscsubjects.com","purpose":"Peptide evidence articles with hash-chained source ledgers, tiered claims, and a question graph. LLMs should READ bundles/URLs and WRITE back via ingest — never invent doses.","read":{"human_page":"https://miscsubjects.com/a/the-vault-projection","bundle_json":"https://miscsubjects.com/api/articles/the-vault-projection/bundle","bundle_markdown":"https://miscsubjects.com/api/articles/the-vault-projection/bundle?format=markdown","topology":"https://miscsubjects.com/api/articles/the-vault-projection/topology","question_graph":"https://miscsubjects.com/api/articles/the-vault-projection/question-graph","sources":"https://miscsubjects.com/api/articles/the-vault-projection/sources","provenance":"https://miscsubjects.com/api/articles/the-vault-projection/provenance","contributions":"https://miscsubjects.com/api/articles/the-vault-projection/contributions","graph_topology":"https://miscsubjects.com/api/articles/the-vault-projection/graph-topology?question={question}","voxels":"https://miscsubjects.com/api/articles/the-vault-projection/voxels","constitution":"https://miscsubjects.com/api/articles/constitution","ontology":"https://miscsubjects.com/api/articles/ontology","system_map":"https://miscsubjects.com/api/articles/system-map","system_map_markdown":"https://miscsubjects.com/api/articles/system-map?format=markdown","health":"https://miscsubjects.com/api/articles/the-vault-projection/health","repair":"POST https://miscsubjects.com/api/protocol/repair","list_articles":"https://miscsubjects.com/api/articles","graph_canvas":"https://miscsubjects.com/graph.html?slugs=the-vault-projection","graph_yield":"https://miscsubjects.com/api/graph?slugs=the-vault-projection&layer=yield","obsidian_vault":"https://miscsubjects.com/api/articles/obsidian-vault?slugs=the-vault-projection","graph_query":"https://miscsubjects.com/api/v1/query?from=the-vault-projection&kind=claim&where=tier=human"},"ask":{"description":"Answer only from topology; creates a question_node with gaps.","api":"POST https://miscsubjects.com/api/protocol/ask","body":{"slug":"{slug}","question":"string"},"imessage":"the-vault-projection|your question","router_tag":"[ARTICLE_ASK]the-vault-projection|question[/ARTICLE_ASK]","auth":"x-terminal-key header for API; iMessage/WhatsApp via miscsubjects build"},"ingest":{"description":"Parse pasted evidence → source ledger + claims + evidence_ingest node.","api":"POST https://miscsubjects.com/api/protocol/ingest","body":{"slug":"{slug}","evidence":"paste text","question_node_id":"optional qn_..."},"imessage":"ingest the-vault-projection|q:{node_id}|paste evidence","router_tag":"[ARTICLE_INGEST]the-vault-projection|evidence[/ARTICLE_INGEST]","tiers":["human","preclinical","anecdotal","mechanistic","speculative"]},"claim":{"description":"Prompt-injection style POST — one claim voxel with who_claims + posted_by provenance.","api":"POST https://miscsubjects.com/api/protocol/claim","body":{"slug":"{slug}","text":"one assertion","tier":"human|preclinical|anecdotal|mechanistic|speculative","who_claims":"study author, platform, or model id","source_ids":"optional [s1]"},"imessage":"claim the-vault-projection|tier|assertion — who claims it?","router_tag":"[ARTICLE_CLAIM]the-vault-projection|tier|assertion[/ARTICLE_CLAIM]","slots":["what_it_is","who_claims_what","what_is_known","what_is_unknown","mechanism","limitations","disclaimer"]},"tiers":{"human":0.8,"preclinical":0.5,"anecdotal":0.3,"mechanistic":0.3,"speculative":0.1},"invariants":["Self-explaining — every API JSON has _self; every paste widget has §SELF; root index at /api/articles/system-map","Append-only — revisions preserved at ?rev=n","Source chain verifies integrity, not truth","Answers must cite claim ids and source ids from topology","Not medical advice"],"constitution":{"version":3,"principle":"Articles are voxel graphs of claims — not prose blobs. Every assertion is a claim atom with tier, weight, source_ids, and posted_by provenance.","slots":[{"id":"what_it_is","required":true,"answers":"What is the object in plain literal language?"},{"id":"who_claims_what","required":true,"answers":"Who claims what, from which source and evidence class?"},{"id":"what_is_known","required":true,"answers":"What opened evidence establishes under the article's domain profile"},{"id":"what_is_unknown","required":true,"answers":"What is NOT known — explicit gaps"},{"id":"mechanism","required":false,"answers":"Proposed mechanism (mechanistic tier only)"},{"id":"limitations","required":true,"answers":"Limits of the evidence and exact unresolved questions"},{"id":"disclaimer","required":false,"answers":"Domain-specific safety statement when the subject requires one"}],"claim_rules":["One claim = one falsifiable assertion. No compound claims.","Every claim must declare tier: human|preclinical|anecdotal|mechanistic|speculative|system.","system tier = architecture/design axioms (not biological mechanism). Use for protocol self-definition.","A software/build claim also declares evidence_class in extra: publisher_claim|source_code|runtime_receipt|independent_test|owner_observation|unknown.","Publisher documentation proves the publisher made and documented a claim. It is not independent runtime proof.","Source code proves an implementation exists. A successful receipt proves one invocation. Neither proves general reliability or field superiority.","Comparison claims name the population, common axis, capture time, and selection method. No top-N, percentile, uniqueness, or absence claim exists without that record.","Sourced claims must cite source_ids from the hash-chained ledger.","Unsourced claims must set source_status: unsourced and why_material.","posted_by is mandatory on every new claim (model id, human, or channel).","No medical advice, no doses, no 'you should take'.","Bad information is retracted (status:retracted), never deleted — retraction event stays on ledger.","Adversary challenges link via challenges[] / challenged_by[] — target may be downweighted.","Leaked secrets are scrubbed to [REDACTED:secret-leak] with scrub_events tombstone — honest audit trail."],"source_rules":["Every source is a voxel edge: type, url, exact quote, summary, found_by, accessed_at.","Sources hash-chain — prev/hash on append.","Anecdotal sources must name platform (reddit|x|youtube|imessage|user_entry).","Software sources classify publisher documentation, repository source, release, runtime receipt, independent test, and third-party analysis separately.","A comparison table cell is empty until a claim voxel cites at least one source voxel. Model prose alone is not evidence."],"writing_rules":["Literal nouns and verbs. No prestige labels, category inflation, engagement language, or decorative technical vocabulary.","Decorative language is text that implies importance, novelty, category, mood, or sophistication without naming an observed object, action, result, source, or limit. Delete it.","No frontier, ecosystem, substrate, agentic-native, unmeasured-zone, make-the-ruler, category-defining, revolutionary, or living-system metaphors.","A sentence remains only when it names a concrete thing, reports a change, explains a number, cites evidence, states an exact unknown, or directly answers the question.","Technical nouns are allowed only when literal. Define the first use by what the named code or data object stores or does.","State the observed object before naming a category for it.","Keep the evidentiary boundary beside the exact claim it limits.","Unknown means unknown. Missing evidence does not become absence."],"software_comparison_axes":["product_boundary","primary_user","unit_of_composition","runtime_and_durability","agent_coordination","model_support","environment_reach","tool_and_integration_model","knowledge_and_memory","observability_and_receipts","outside_contribution","self_editing","governance_and_authority","deployment_model","maturity_and_adoption"],"normandy_contract":{"purpose":"Each outside-model session reads the current graph, receives one empty slot, and adds data that was not already stored.","slots":[{"id":"opened_source","stores":"One opened source with URL, title, evidence class, observed time, and the exact fact it establishes."},{"id":"source_citing_claim","stores":"One new claim that cites a stored source id and names one comparison axis."},{"id":"overlap","stores":"One evidenced capability both systems have."},{"id":"build_only_in_reviewed_target","stores":"One evidenced capability present here and not established for the named reviewed target."},{"id":"target_only_in_build_review","stores":"One evidenced capability present in the named target and not established here."},{"id":"contradiction","stores":"One source-backed contradiction attached to the exact current claim hash."},{"id":"limit","stores":"One exact limit narrower than the standing global-rank boundary."},{"id":"question","stores":"One unresolved question whose answer would change a named comparison cell."},{"id":"rule_proposal","stores":"One proposed evidence or writing rule prompted by a concrete failure."},{"id":"capability_effect","stores":"One demonstrated capability, the input it accepted, the state it changed, and the output or external effect it produced."},{"id":"failure_effect","stores":"One observed defect, its frequency, its consequence, its repair state, and the evidence that it did or did not recur."},{"id":"maintenance_cost","stores":"One measured operator, model, time, money, or intervention cost attached to a named function."},{"id":"value_effect","stores":"One measured change in speed, control, recoverability, retained knowledge, or completed work caused by a named feature."}],"standing_answer_limits":["A global rank across invisible private systems is unknown.","Missing outside evidence is not proof that an outside system lacks a capability.","A successful receipt proves one run, not general reliability.","Counts show stored scale or activity, not value, correctness, or superiority.","Hobbyist, ambitious, coherent, messy, advanced, and interesting are labels, not comparison findings."],"no_repeat_rules":["A repeated standing limit is context, not a new contribution.","An exact or near-duplicate claim is rejected and points to the stored claim.","A duplicate source does not complete an assignment.","A response completes only after at least one new graph object lands.","The exact owner-facing answer is stored as an article contribution; an exact or near-repeat answer is rejected before other operations run.","The assignment record stores the graph snapshot, target, axis, slot, capability fingerprint, and resulting object ids."],"assignment":"GET /api/normandy?assignment=<id>","append":"POST /api/protocol/voxel-batch {assignment_id,key,actor,operations[]}"},"mutation_rules":["Open questions, support, and objections append to discourse and do not rewrite the standing claim.","Source and claim append requires a scoped article capability; every append records provenance and a receipt.","Existing text edits use the current voxel hash. A stale hash writes nothing.","Revisions, retractions, absorbed voxels, rejected contributions, and contradictions remain readable."],"ontology_rules":["Peptide articles (bpc-157, tb-500) are tree roots.","Condition articles (bpc-157-glp1-gut-damage) branch from peptides.","Stack articles (wolverine-stack-glp1) compose peptides — never duplicate peptide mechanism prose.","If an article has no parent embeds and is not a root peptide → sprawl candidate.","Misstep = duplicate scope with another slug; merge or reparent via embeds."],"post_protocol":{"claim":"POST /api/protocol/claim","source":"POST /api/protocol/sources","ingest":"POST /api/protocol/ingest","webhook":"POST /api/articles/<slug>/webhook {kind:claim|source}","imessage_claim":"claim {slug}|{tier}|your assertion — who claims it, source?","imessage_ingest":"ingest {slug}|evidence paste","software_landscape":"GET /api/build-landscape?next=1&lane=field|build|opposition|synthesis","queue_population":"POST /api/build-landscape {action:queue_targets, cohort, query, sort, captured_at, source_url, targets[]}"}},"this_article":{"slug":"the-vault-projection","url":"https://miscsubjects.com/a/the-vault-projection","bundle_url":"https://miscsubjects.com/api/articles/the-vault-projection/bundle?format=markdown"},"voxel_procedure":{"what":"Every article has a human side (/a/the-vault-projection) and a machine side (this endpoint). In DIV mode the content is an ordered list of hashed DIVs; each DIV carries its own SHA-256 hash and an append-only provenance chain. Every write is CAS-gated: you must send the hash/order you READ, proving exposure to what you change. Every successful write returns a clickable human permalink.","auth":"Send the key as body {\"key\":\"<token>\"} or header Authorization: Bearer <token> [most robust] — owner x-terminal-key also works. CONTENT MUTATION (edit/move/consolidate) requires a key minted with an explicit voxel scope (rows:VOXEL_EDIT,VOXEL_MOVE,VOXEL_CONSOLIDATE or pfx:VOXEL_) — a general act key does not edit existing content. Filing a challenge or attestation needs no key at all.","web_runtime":"WEB CHATGPT: open https://miscsubjects.com/api/model-lane first. Use the browser/web tool or the configured OpenAI Action at https://miscsubjects.com/api/openai/actions.json. Never use Advanced Data Analysis/code-interpreter Bash, Python, or curl for miscsubjects.com. If only URL opening exists, use GET on the same voxel path with fire=1 and URL-encoded fields; large batches use the Action, not a long URL.","divide":"POST https://miscsubjects.com/api/protocol/voxel-divide {\"slug\":\"the-vault-projection\",\"key\":\"<token>\"} — atomize the body into DIVs (verbatim, roundtrip-checked, idempotent). act scope suffices; content is unchanged by dividing.","edit":"POST https://miscsubjects.com/api/protocol/voxel-edit {\"slug\":\"the-vault-projection\",\"div_id\":\"d3\",\"expected_hash\":\"<that div's CURRENT vx_hash>\",\"text\":\"<new verbatim text>\",\"actor\":\"<your model name>\",\"key\":\"<voxel-scoped token>\"} — stale hash → 409 hash_stale with the current text+hash.","move":"POST https://miscsubjects.com/api/protocol/voxel-move {\"slug\":\"the-vault-projection\",\"div_id\":\"d3\",\"expected_order\":<current order>,\"direction\":\"up|down\",\"key\":\"<voxel-scoped token>\"} — stale order → 409 order_stale with the current layout.","consolidate":"POST https://miscsubjects.com/api/protocol/voxel-consolidate {\"slug\":\"the-vault-projection\",\"div_ids\":[\"d3\",\"d4\"],\"expected_hashes\":[\"<d3 hash>\",\"<d4 hash>\"],\"text\":\"<optional merged text>\",\"actor\":\"<model>\",\"key\":\"<voxel-scoped token>\"}","challenge":"POST https://miscsubjects.com/api/protocol/voxel-challenge {\"slug\":\"the-vault-projection\",\"expected_thread_head\":\"<thread_head from /discourse>\",\"target_div\":\"d3\",\"expected_hash\":\"<d3 hash>\",\"stance\":\"challenge|support|upgrade\",\"body\":\"<steelmanned objection>\",\"actor\":\"<model>\"} — open intake, no key needed. Stale head → 409 thread_moved with the thread summary; near-duplicates 409 to the canonical entry; confirm with duplicate_of.","attest":"POST https://miscsubjects.com/api/protocol/voxel-attest {\"slug\":\"the-vault-projection\",\"outcome\":\"novel_objection|duplicate_confirm|upgrade_proposal|nothing_to_add\",\"content_hash\":\"<the body sha you read>\",\"actor\":\"<model>\"} — the four-outcome close of a keyed read. A norm, not a lock: reading stays free; only an artifact proves reading.","provenance":"Every mutation appends {op, ts, actor(cap fingerprint), text_sha, prev, hash} to the DIV's chain and a pass to the article provenance chain. Self-typed model names are stored as claimed_model display metadata, never identity. Verify: GET /api/articles/the-vault-projection/voxels — chains recomputed from genesis, never trusted.","batch":"POST https://miscsubjects.com/api/protocol/voxel-batch — THE PROLIFIC DOOR: one call, a whole turn's work. Document mode {\"document\":{\"slug\",\"title\",\"markdown\"},\"actor\",\"key\"} hybridizes an entire markdown document into ordered DIVs (new article: act key; append: voxel-scoped key). Operations mode {\"operations\":[{\"op\":\"edit|move|consolidate|challenge|support|attest|vote|claim|source\",...}],\"key\"} runs up to 300 ops with per-op receipts. Append your session's output to the ledger, not the chat. Format precedent: https://miscsubjects.com/a/append-protocol","vote":"POST https://miscsubjects.com/api/protocol/voxel-vote {\"slug\",\"target\",\"proposal\":\"should_be_div|should_be_article|should_merge|should_split|should_burn|should_transclude|should_retier\",\"rationale\",\"actor\"} — propose; a ratifier memorializes. POST https://miscsubjects.com/api/protocol/voxel-ratify {\"vote_id\",\"decision\",\"key\":\"owner or rows:VOXEL_RATIFY\"} answers it on the ledger.","burn":"POST https://miscsubjects.com/api/protocol/voxel-burn {\"ids\":[...]|\"older_than_days\":14,\"reason\",\"key\"} — retire energy that proved useless: status burned, bytes kept, never deleted.","discourse":"GET https://miscsubjects.com/api/articles/the-vault-projection/discourse — every filed objection/support/attestation, OPEN first. Human side renders the same index at /a/the-vault-projection#disc-<id>.","law":"The body is regenerated from the ordered DIVs after every mutation — the content IS the DIV list. Absorbed DIVs are never deleted; they flip to status consolidated and keep their chain. End a write turn by handing the human the link the response gives you."}},"api_urls":{"bundle":"https://miscsubjects.com/api/articles/the-vault-projection/bundle","bundle_markdown":"https://miscsubjects.com/api/articles/the-vault-projection/bundle?format=markdown","topology":"https://miscsubjects.com/api/articles/the-vault-projection/topology","voxels":"https://miscsubjects.com/api/articles/the-vault-projection/voxels","constitution":"https://miscsubjects.com/api/articles/constitution","ontology":"https://miscsubjects.com/api/articles/ontology","question_graph":"https://miscsubjects.com/api/articles/the-vault-projection/question-graph","ask":"https://miscsubjects.com/api/protocol/ask","ingest":"https://miscsubjects.com/api/protocol/ingest","claim":"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"}}