{"_id":"@amiable-dev/chancery","_rev":"5-858fe26fcee9c62d623cabbebcc0358b","name":"@amiable-dev/chancery","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@amiable-dev/chancery","version":"0.1.0","keywords":["knowledge-base","ai-agents","markdown","obsidian","deterministic","governance","mcp"],"author":{"url":"amiable-dev","name":"Chris Joseph","email":"chris@amiable.dev"},"license":"MIT","_id":"@amiable-dev/chancery@0.1.0","maintainers":[{"name":"amiable-dev","email":"chris@amiable.dev"}],"homepage":"https://chancery.dev","bugs":{"url":"https://github.com/amiable-dev/chancery/issues"},"bin":{"kb":".kb/bin/kb.mjs","kb-mcp":".kb/bin/kb-mcp.mjs"},"dist":{"shasum":"e6a50a47c576273d09ce8fb91b407abc816734d3","tarball":"https://registry.npmjs.org/@amiable-dev/chancery/-/chancery-0.1.0.tgz","fileCount":60,"integrity":"sha512-MqXDwbvkBLHSEkn6M9ZCBBwvSqMtRK4RHXe1ftWDlPr0DA/J/k1sr48CF5pvT3/T3gjKKefAapd+TRWm7jjiDQ==","signatures":[{"sig":"MEUCIC5spweb11Pj0x+1laQBFi8knnHQqat+f/9K8oFFyYwmAiEApxEL2ljo3m/3SK/Ec388523vGRp9DXPveQV3kEpKz6w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amiable-dev%2fchancery@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":329737},"type":"module","engines":{"node":"22.x || 24.x"},"gitHead":"fdd550d2fdf8b9a828bd2a7e94d18d64b6518493","scripts":{"kb":"node .kb/bin/kb.mjs","test":"node .kb/test/md.test.mjs && node .kb/test/polarity.test.mjs && node .kb/test/routing.test.mjs && node .kb/test/migrate.test.mjs && node .kb/test/promote.test.mjs && node .kb/test/cards.test.mjs && node .kb/test/facets.test.mjs && node .kb/test/link.test.mjs && node .kb/test/query.test.mjs && node .kb/test/queue.test.mjs && node .kb/test/export.test.mjs && node .kb/test/adapters.test.mjs && node .kb/test/cli.test.mjs && node .kb/test/conformance.test.mjs && node .kb/test/r1a.test.mjs && node .kb/test/context.test.mjs && node .kb/test/mcp.test.mjs && node .kb/test/log-audit.test.mjs && node .kb/test/export-integration.test.mjs && node .kb/test/package.test.mjs","index":"node .kb/bin/kb.mjs index","export":"node .kb/bin/kb.mjs export docusaurus","verify":"node .kb/bin/kb.mjs verify","adapters":"node .kb/bin/install-knowledge.mjs"},"_npmUser":{"name":"amiable-dev","email":"chris@amiable.dev"},"repository":{"url":"git+https://github.com/amiable-dev/chancery.git","type":"git"},"_npmVersion":"11.17.0","description":"Chancery — governed, git-native knowledge base for AI agents; ships the kb CLI","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ajv":"^8.17.1","yaml":"^2.6.1","jsdom":"^30.0.1","turndown":"^7.2.4","ajv-formats":"^3.0.1","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/chancery_0.1.0_1787518730110_0.9638438193823686","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@amiable-dev/chancery","version":"0.1.1","keywords":["knowledge-base","ai-agents","markdown","obsidian","deterministic","governance","mcp"],"author":{"url":"amiable-dev","name":"Chris Joseph","email":"chris@amiable.dev"},"license":"MIT","_id":"@amiable-dev/chancery@0.1.1","maintainers":[{"name":"amiable-dev","email":"chris@amiable.dev"}],"homepage":"https://chancery.dev","bugs":{"url":"https://github.com/amiable-dev/chancery/issues"},"bin":{"kb":".kb/bin/kb.mjs","kb-mcp":".kb/bin/kb-mcp.mjs"},"dist":{"shasum":"d0560daa04a4632d8a85ac8bb3a16b8e2e375f44","tarball":"https://registry.npmjs.org/@amiable-dev/chancery/-/chancery-0.1.1.tgz","fileCount":60,"integrity":"sha512-EWJeoRc5j9byNgo+UCe1xIj5rzOC1fR6o2lCEjaGa0tjlkqi4EoLImfaYolUkkh8IehELCjYKCGZUCyw51gOuw==","signatures":[{"sig":"MEUCIBgy+uSupbUDsiX2qYKXYhGIvKK6f8NrH+9EJfB0S5E2AiEArD1WMA6Qr0l2GQ/5++LOlwdyIX7Gti+KuYjz9ce3flw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amiable-dev%2fchancery@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":329734},"type":"module","engines":{"node":"22.x || 24.x"},"gitHead":"0241a6d5da31c446ec1e8c67b33558e176fe28f9","scripts":{"kb":"node .kb/bin/kb.mjs","test":"node .kb/test/md.test.mjs && node .kb/test/polarity.test.mjs && node .kb/test/routing.test.mjs && node .kb/test/migrate.test.mjs && node .kb/test/promote.test.mjs && node .kb/test/cards.test.mjs && node .kb/test/facets.test.mjs && node .kb/test/link.test.mjs && node .kb/test/query.test.mjs && node .kb/test/queue.test.mjs && node .kb/test/export.test.mjs && node .kb/test/adapters.test.mjs && node .kb/test/cli.test.mjs && node .kb/test/conformance.test.mjs && node .kb/test/r1a.test.mjs && node .kb/test/context.test.mjs && node .kb/test/mcp.test.mjs && node .kb/test/log-audit.test.mjs && node .kb/test/export-integration.test.mjs && node .kb/test/package.test.mjs","index":"node .kb/bin/kb.mjs index","export":"node .kb/bin/kb.mjs export docusaurus","verify":"node .kb/bin/kb.mjs verify","adapters":"node .kb/bin/install-knowledge.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8ef0e9b8-9a02-4e80-b677-bd1114c3a4c6"}},"repository":{"url":"git+https://github.com/amiable-dev/chancery.git","type":"git"},"_npmVersion":"11.17.0","description":"Chancery — governed, git-native knowledge base for AI agents; ships the kb CLI","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ajv":"^8.17.1","yaml":"^2.6.1","jsdom":"^30.0.1","turndown":"^7.2.4","ajv-formats":"^3.0.1","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/chancery_0.1.1_1787519202242_0.001388669725288283","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@amiable-dev/chancery","version":"0.1.2","keywords":["knowledge-base","ai-agents","markdown","obsidian","deterministic","governance","mcp"],"author":{"url":"amiable-dev","name":"Chris Joseph","email":"chris@amiable.dev"},"license":"MIT","_id":"@amiable-dev/chancery@0.1.2","maintainers":[{"name":"amiable-dev","email":"chris@amiable.dev"}],"homepage":"https://chancery.dev","bugs":{"url":"https://github.com/amiable-dev/chancery/issues"},"bin":{"kb":".kb/bin/kb.mjs","kb-mcp":".kb/bin/kb-mcp.mjs"},"dist":{"shasum":"a53ffefdb20ee58360e365c329fe8f67f047294c","tarball":"https://registry.npmjs.org/@amiable-dev/chancery/-/chancery-0.1.2.tgz","fileCount":60,"integrity":"sha512-MRmOIYfO6uVq40ImjCpO6OepaFNK+UmUJs+5uZ+CtKvSvn79lDRsiLQ6xQa6FbOcMFeu4NbKluZMS848gC/J+g==","signatures":[{"sig":"MEUCIEPFvXTz0YsTkZixFMM6lcJgYKy6hxXXpOG4U/9TwxiAAiEA8ZHrfGF6XX7u+94wBM8/tQ0940S3Vy8oc584wMyZMQc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amiable-dev%2fchancery@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":330151},"type":"module","engines":{"node":"22.x || 24.x"},"gitHead":"4db46a7c0471032db687ae3766c6179886a15c97","scripts":{"kb":"node .kb/bin/kb.mjs","test":"node .kb/test/md.test.mjs && node .kb/test/polarity.test.mjs && node .kb/test/routing.test.mjs && node .kb/test/migrate.test.mjs && node .kb/test/promote.test.mjs && node .kb/test/cards.test.mjs && node .kb/test/facets.test.mjs && node .kb/test/link.test.mjs && node .kb/test/query.test.mjs && node .kb/test/queue.test.mjs && node .kb/test/export.test.mjs && node .kb/test/adapters.test.mjs && node .kb/test/cli.test.mjs && node .kb/test/conformance.test.mjs && node .kb/test/r1a.test.mjs && node .kb/test/context.test.mjs && node .kb/test/mcp.test.mjs && node .kb/test/log-audit.test.mjs && node .kb/test/export-integration.test.mjs && node .kb/test/package.test.mjs","index":"node .kb/bin/kb.mjs index","export":"node .kb/bin/kb.mjs export docusaurus","verify":"node .kb/bin/kb.mjs verify","adapters":"node .kb/bin/install-knowledge.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8ef0e9b8-9a02-4e80-b677-bd1114c3a4c6"}},"repository":{"url":"git+https://github.com/amiable-dev/chancery.git","type":"git"},"_npmVersion":"11.17.0","description":"Chancery — governed, git-native knowledge base for AI agents; ships the kb CLI","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ajv":"^8.17.1","yaml":"^2.6.1","jsdom":"^30.0.1","turndown":"^7.2.4","ajv-formats":"^3.0.1","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/chancery_0.1.2_1787520112482_0.2959928567218171","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@amiable-dev/chancery","version":"0.1.3","keywords":["knowledge-base","ai-agents","markdown","obsidian","deterministic","governance","mcp"],"author":{"url":"amiable-dev","name":"Chris Joseph","email":"chris@amiable.dev"},"license":"MIT","_id":"@amiable-dev/chancery@0.1.3","maintainers":[{"name":"amiable-dev","email":"chris@amiable.dev"}],"homepage":"https://chancery.dev","bugs":{"url":"https://github.com/amiable-dev/chancery/issues"},"bin":{"kb":".kb/bin/kb.mjs","kb-mcp":".kb/bin/kb-mcp.mjs"},"dist":{"shasum":"1c481158aa2f28f1c8ecde69583747681cb4b4bb","tarball":"https://registry.npmjs.org/@amiable-dev/chancery/-/chancery-0.1.3.tgz","fileCount":60,"integrity":"sha512-iWit+7dJFdvZ21EqfxEk88kWtC+cLpEWQG00oOL4No9kbJeH6SpBVryoMoj1M9QOKE7FC7VGth7B8D/brAOEhg==","signatures":[{"sig":"MEUCIAq77SWnj9sTlI2WMYXQC3V/HahVtAQ+HKycuCHBsXj7AiEA1n9LhR1490rlzYi1NFXf/QI+ZMQakodjnJDmFdRb6cQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amiable-dev%2fchancery@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":330626},"type":"module","engines":{"node":"22.x || 24.x"},"gitHead":"ca00fb78882188340375cd38ee8fd19e2b34a1d5","scripts":{"kb":"node .kb/bin/kb.mjs","test":"node .kb/test/md.test.mjs && node .kb/test/polarity.test.mjs && node .kb/test/routing.test.mjs && node .kb/test/migrate.test.mjs && node .kb/test/promote.test.mjs && node .kb/test/cards.test.mjs && node .kb/test/facets.test.mjs && node .kb/test/link.test.mjs && node .kb/test/query.test.mjs && node .kb/test/queue.test.mjs && node .kb/test/export.test.mjs && node .kb/test/adapters.test.mjs && node .kb/test/cli.test.mjs && node .kb/test/conformance.test.mjs && node .kb/test/r1a.test.mjs && node .kb/test/context.test.mjs && node .kb/test/mcp.test.mjs && node .kb/test/log-audit.test.mjs && node .kb/test/export-integration.test.mjs && node .kb/test/package.test.mjs","index":"node .kb/bin/kb.mjs index","export":"node .kb/bin/kb.mjs export docusaurus","verify":"node .kb/bin/kb.mjs verify","adapters":"node .kb/bin/install-knowledge.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8ef0e9b8-9a02-4e80-b677-bd1114c3a4c6"}},"repository":{"url":"git+https://github.com/amiable-dev/chancery.git","type":"git"},"_npmVersion":"11.17.0","description":"Chancery — governed, git-native knowledge base for AI agents; ships the kb CLI","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ajv":"^8.17.1","yaml":"^2.6.1","jsdom":"^30.0.1","turndown":"^7.2.4","ajv-formats":"^3.0.1","@mozilla/readability":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/chancery_0.1.3_1787521046811_0.5062839798814427","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@amiable-dev/chancery","version":"0.2.0","type":"module","description":"Chancery — governed, git-native knowledge base for AI agents; ships the kb CLI","bin":{"kb":".kb/bin/kb.mjs","kb-mcp":".kb/bin/kb-mcp.mjs"},"scripts":{"kb":"node .kb/bin/kb.mjs","verify":"node .kb/bin/kb.mjs verify","index":"node .kb/bin/kb.mjs index","test":"node .kb/test/md.test.mjs && node .kb/test/polarity.test.mjs && node .kb/test/routing.test.mjs && node .kb/test/migrate.test.mjs && node .kb/test/promote.test.mjs && node .kb/test/cards.test.mjs && node .kb/test/facets.test.mjs && node .kb/test/link.test.mjs && node .kb/test/query.test.mjs && node .kb/test/queue.test.mjs && node .kb/test/export.test.mjs && node .kb/test/adapters.test.mjs && node .kb/test/cli.test.mjs && node .kb/test/conformance.test.mjs && node .kb/test/r1a.test.mjs && node .kb/test/context.test.mjs && node .kb/test/mcp.test.mjs && node .kb/test/log-audit.test.mjs && node .kb/test/export-integration.test.mjs && node .kb/test/package.test.mjs && node .kb/test/evalset.test.mjs && node .kb/test/derivations.test.mjs && node .kb/test/crux.test.mjs","export":"node .kb/bin/kb.mjs export docusaurus","adapters":"node .kb/bin/install-knowledge.mjs"},"engines":{"node":"22.x || 24.x"},"dependencies":{"@mozilla/readability":"^0.6.0","ajv":"^8.17.1","ajv-formats":"^3.0.1","jsdom":"^30.0.1","turndown":"^7.2.4","yaml":"^2.6.1"},"license":"MIT","author":{"name":"Chris Joseph","email":"chris@amiable.dev","url":"amiable-dev"},"homepage":"https://chancery.dev","repository":{"type":"git","url":"git+https://github.com/amiable-dev/chancery.git"},"bugs":{"url":"https://github.com/amiable-dev/chancery/issues"},"keywords":["knowledge-base","ai-agents","markdown","obsidian","deterministic","governance","mcp"],"publishConfig":{"access":"public"},"gitHead":"b0f15a677cdaed606abc10d486c6c7c592a891a5","_id":"@amiable-dev/chancery@0.2.0","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-pmpsd5rMj6Abqwm6fBHitcdrnVzmGVfRAPiiu+FD/u3Q1ON4LVfI8QvnN93HD9I7lzKrwX4qLt3jrMKxBEZ0XA==","shasum":"001bc8db04a94eaaa8bd899f48c368ae89f1582e","tarball":"https://registry.npmjs.org/@amiable-dev/chancery/-/chancery-0.2.0.tgz","fileCount":63,"unpackedSize":384643,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amiable-dev%2fchancery@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBb8HwCoOsxhqq/ksXykk78ua19oR1FrfDLsalwmhGKdAiEAoPT75uHtVE7rj9YrWnLrkbuuEsiZE/paDefh6Nh8BbQ="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8ef0e9b8-9a02-4e80-b677-bd1114c3a4c6"}},"directories":{},"maintainers":[{"name":"amiable-dev","email":"chris@amiable.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/chancery_0.2.0_1787731760828_0.6710991079646536"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-23T20:58:49.930Z","modified":"2026-08-26T08:09:21.336Z","0.1.0":"2026-08-23T20:58:50.297Z","0.1.1":"2026-08-23T21:06:42.382Z","0.1.2":"2026-08-23T21:21:52.625Z","0.1.3":"2026-08-23T21:37:26.957Z","0.2.0":"2026-08-26T08:09:20.989Z"},"bugs":{"url":"https://github.com/amiable-dev/chancery/issues"},"author":{"name":"Chris Joseph","email":"chris@amiable.dev","url":"amiable-dev"},"license":"MIT","homepage":"https://chancery.dev","keywords":["knowledge-base","ai-agents","markdown","obsidian","deterministic","governance","mcp"],"repository":{"type":"git","url":"git+https://github.com/amiable-dev/chancery.git"},"description":"Chancery — governed, git-native knowledge base for AI agents; ships the kb CLI","maintainers":[{"name":"amiable-dev","email":"chris@amiable.dev"}],"readme":"<h1 align=\"center\">Chancery</h1>\n\n<p align=\"center\">\n  <em>Turn research into a verified, shared knowledge substrate — for you and your agents. Ships a CLI called <code>kb</code>.</em>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/amiable-dev/chancery/actions/workflows/kb-verify.yml\"><img src=\"https://github.com/amiable-dev/chancery/actions/workflows/kb-verify.yml/badge.svg\" alt=\"kb verify\"></a>\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"License: MIT\"></a>\n  <img src=\"https://img.shields.io/badge/status-early%20(v0.x)-orange\" alt=\"Status: early\">\n  <img src=\"https://img.shields.io/badge/node-%E2%89%A522-blue\" alt=\"Node >= 22\">\n  <a href=\"https://scorecard.dev/viewer/?uri=github.com/amiable-dev/chancery\"><img src=\"https://api.scorecard.dev/projects/github.com/amiable-dev/chancery/badge\" alt=\"OpenSSF Scorecard\"></a>\n</p>\n\n---\n\nThe standard answer to \"make the AI know my sources\" is RAG: embed the pile, retrieve at query time, hope the top-k was right. Chancery is the other bet: **read once, judge explicitly, distill into small verified notes — and make *those* the thing your project retrieves from.**\n\nYou feed it URLs as you research. Each source is quarantined and judged against your written bar — by your AI agent, with the judgment kept on file — and, if it clears, distilled into concept notes with hashed evidence, typed links, and flashcards. The corpus is plain markdown: you read it in Obsidian, agents load it through `kb query` and `kb context`, and CI runs `kb verify` so it can't silently rot. The result is **locally verified research**: claims you can cite, because the tool can prove what the evidence said when you cited it.\n\n## The loop, once\n\n```\n$ kb ingest https://example.com/attention-paper      → staging/attention-paper.md\n$ kb assess staging/attention-paper.md               → prints a judgment form\n    (your agent fills it in → verdict.json)\n$ kb assess … --verdict verdict.json                 → PROMOTE — clears the bar\n$ kb promote attention-paper                         → prints a drafting form\n    (your agent writes the note → draft.json)\n$ kb promote … --draft draft.json --apply            → concepts/attention.md ✓\n$ kb verify                                          → PASS — 12 files, 0 errors\n```\n\nThat's the whole tool. `kb` **never calls a model**: everything checkable by rule, it checks; everything needing judgment becomes a self-contained form that any supplier — your coding agent, a panel, you — fills in, and the CLI validates and files. Every note carries the paperwork that admitted it. Retrieval then happens over what you've vetted: `kb query` answers from the curated layer and rejects any answer citing a concept it didn't retrieve.\n\n## What keeps it trustworthy\n\n- **Admission is judged, and kept.** Sources are scored against a rubric with knockout rules — a fatal flaw can't be averaged away. Borderline calls go to a queue for *you*, reasons on file. Nothing enters unjudged; nothing is auto-deleted.\n- **Citations are falsifiable.** Every source is content-hashed into an append-only evidence store. `kb revalidate` reports *which claims'* evidence drifted, not just which links died; `kb support` checks claim-by-claim against the exact snapshot judged.\n- **Both audiences are first-class.** Humans get Obsidian-compatible markdown and spaced-repetition cards; agents get grounded query, deterministic context bundles (`kb context`), and an MCP server. Same corpus, same gate.\n\n## Proof, not promises\n\nThe corpus in this repo was **generated by the tool itself**: 275 research sources through the judged loop → 212 concepts, 212 decks, 1,112 cards — with a 44% admission rate, every rejection reasoned, weak sources upgraded to primary ones by a budgeted search pass, and the queue holding the honest borderline calls. Method, numbers, and confounds: [the parallel run](docs/the-parallel-run.md). We also ran it on real work first — routing research where `kb support` caught our own draft overclaiming its source ([launch note](docs/launch.md)).\n\n## Start\n\n```bash\nnpm install -g @amiable-dev/chancery\nmkdir my-kb && cd my-kb && kb init\n```\n\nThen the [first-corpus tutorial](https://chancery.dev/getting-started/first-corpus/): bring 3–5 sources you're actually researching; in ~20 minutes you'll have a verified corpus and `kb query` answering from it — your agent judging, via a copy-paste prompt. `kb` holds no model credential, ever.\n\n## Why \"Chancery\"?\n\nA medieval chancery authenticated documents under seal and kept the rolls — nothing entered the record without passing the office, and the record could prove it had. Same job here: judgment arrives from outside; the office makes it canon through examination, a sealed envelope, and an enrolment it can verify ([the longer story](docs/why-chancery.md)).\n\n## What's in this repo\n\n```\nconcepts/     212 atomic concept notes (typed links, facets, hashed sources)\nflashcards/   1,112 spaced-repetition cards with stable IDs\nstaging/      quarantined inflow — including every source the gate declined, with reasons\n.kb/          the engine: schemas, rubrics, policy, CLI, tests — plus the corpus's judgment records\neval/         the pre-registered method behind the generated corpus\n.claude/ .github/ .windsurf/ .agents/ AGENTS.md   ← generated harness adapters\n```\n\n## Status\n\n**Early, honest v0.x.** The engine is tested (20 suites, both-polarity gate tests, CI-enforced) and in daily use; the schema may still change with versioned migrations. Scope and non-goals: [`docs/SCOPE.md`](docs/SCOPE.md); decisions: [`docs/adrs/`](docs/adrs/); the record — [launch note](docs/launch.md), [why \"Chancery\"](docs/why-chancery.md), [the parallel run](docs/the-parallel-run.md) — is history, deliberately out of your reading path.\n\nIf you point `kb` at a corpus of your own and something breaks or chafes — please open an issue. Knowing whether anyone else wants governed knowledge is, quite literally, this project's next milestone.\n\n## Related\n\n- [**llm-council**](https://github.com/amiable-dev/llm-council) — multi-model deliberation (library + MCP + HTTP). A sibling project; `kb` can use it as one judgment supplier among several, never a hard dependency.\n- Karpathy's [LLM Wiki gist](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) — the pattern's most-cited articulation. `kb`'s architecture [predates it independently](docs/history/corpus-provenance.md) (Feb 2026); the convergence is evidence for the shape. Where the pattern says *the LLM should do the bookkeeping*, `kb` says: **the bookkeeping is exactly the part that must be deterministic.**\n\n## License\n\n[MIT](LICENSE) © 2026 Chris Joseph (amiable-dev)\n","readmeFilename":"README.md"}