{
  "collections": [
    {
      "bytes": 363040,
      "fingerprint": "8383d8d96d4c4676f4372baeaa38ea1aa578ffc78e467c8d6de89774c44d5038",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/algorithms",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/algorithms.md",
      "ref": "api:records/algorithms",
      "summary": "452 records",
      "title": "Algorithm contracts"
    },
    {
      "bytes": 393923,
      "fingerprint": "671d462e3280b027de49f3fd1ebcddeabab5d74b37b06d4222532f6f9298375e",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/architecture",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/architecture.md",
      "ref": "api:records/architecture",
      "summary": "476 records",
      "title": "Architecture principles"
    },
    {
      "bytes": 10761,
      "fingerprint": "2cc227d16e5801521997e54f1bc02cb28b3d787525c36e8cd8da7a64eec185ab",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/layer",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/layer.md",
      "ref": "api:records/layer",
      "summary": "18 records",
      "title": "Layers"
    },
    {
      "bytes": 20702,
      "fingerprint": "60b13e231c346efebeaad83e3421fe7a5bd6bb89184a1effb0ac96190da1c930",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/lexicon",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/lexicon.md",
      "ref": "api:records/lexicon",
      "summary": "2012 records",
      "title": "Lexicon terms"
    },
    {
      "bytes": 163260,
      "fingerprint": "a7784dd694d4039881633115ba126089ad672d058a3092efa8837319e9de5deb",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/pag",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/pag.md",
      "ref": "api:records/pag",
      "summary": "323 records",
      "title": "Grammar records"
    },
    {
      "bytes": 162548,
      "fingerprint": "75f9085fe3d5ecbb6bff45f7c52c6afddbe84f0a2ad03769c05664311569984a",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/reasoning",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/reasoning.md",
      "ref": "api:records/reasoning",
      "summary": "283 records",
      "title": "Reasoning records"
    },
    {
      "bytes": 4534,
      "fingerprint": "59d3ea4a2a89eea41e50fbad314cb337a281dfb5dcb20e8d65e75430bfbe5fab",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/stage",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/stage.md",
      "ref": "api:records/stage",
      "summary": "10 records",
      "title": "Loop stages"
    },
    {
      "bytes": 340084,
      "fingerprint": "ca200b17c20009b7d952e427332fd24c94e7ff4fef1a1289f0e7a0b6405e3f4e",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/tension",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/tension.md",
      "ref": "api:records/tension",
      "summary": "394 records",
      "title": "Tensions"
    },
    {
      "bytes": 12870,
      "fingerprint": "8a1a558fdd4b6313fe1a81e79310bfdbdd223c71799addc67b47e3c63aec28b3",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/algorithms-domain",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/algorithms-domain.md",
      "ref": "api:records/algorithms-domain",
      "summary": "22 records",
      "title": "Algorithm domains"
    },
    {
      "bytes": 20822,
      "fingerprint": "46858acf4b78182d187a134e0bc9d0ccee618f05509f59a6f892b46ffacfd754",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/architecture-category",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/architecture-category.md",
      "ref": "api:records/architecture-category",
      "summary": "30 records",
      "title": "Principle categories"
    },
    {
      "bytes": 10626,
      "fingerprint": "e0324e0ed6c5f3f745242ba4e7059f75ee0e460d1c12121a23453f67fc1ee553",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/force",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/force.md",
      "ref": "api:records/force",
      "summary": "19 records",
      "title": "Forces"
    },
    {
      "bytes": 7132,
      "fingerprint": "9dfbda25a6c4a86af3fbb8db0a4ee7895c20d5b8981faa587c32b2acb6dbf855",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/kind",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/kind.md",
      "ref": "api:records/kind",
      "summary": "14 records",
      "title": "Record kinds"
    },
    {
      "bytes": 25149,
      "fingerprint": "d5ecedce335589f066bdac99b130073968be1640a4f73808ff7ba7656e2aaa7a",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/lexicon-category",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/lexicon-category.md",
      "ref": "api:records/lexicon-category",
      "summary": "39 records",
      "title": "Term categories"
    },
    {
      "bytes": 2644,
      "fingerprint": "27b3f9f61974a5777d27e6209cbd5bb9b70c6de52642e22d155a2dfff39a63f7",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/relation",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/relation.md",
      "ref": "api:records/relation",
      "summary": "5 records",
      "title": "Relations"
    },
    {
      "bytes": 19783,
      "fingerprint": "2419cc244f17ae7c070c5207de2435ba0513678ee81c769fee4b2c7e60e8b6bc",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/vocabulary",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/vocabulary.md",
      "ref": "api:records/vocabulary",
      "summary": "29 records",
      "title": "Controlled vocabularies"
    }
  ],
  "documents": [
    {
      "bytes": 1009,
      "fingerprint": "6b99e426dff93af31bee2bf8aedb4ed33552edf3de3b6cd5059008ccfdc37015",
      "href": "https://banes-lab.com/faq",
      "json": "https://banes-lab.com/json/api/pages/faq",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/pages/faq.md",
      "ref": "api:/faq",
      "summary": "I answer the questions I am asked most often about the methodology, including where it came from, how I practice it and where it stops being useful.",
      "title": "FAQ"
    },
    {
      "bytes": 1946,
      "fingerprint": "87e5d86c12d37d0ac46bd7116c1676b90e9d457f53e2de7423dee3e92b8f9ed9",
      "href": "https://banes-lab.com/about",
      "json": "https://banes-lab.com/json/api/pages/about",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/pages/about.md",
      "ref": "api:/about",
      "summary": "Jay Baleine designs and governs software systems from Ostend, Belgium, and documents the method behind that work on Bane's Lab.",
      "title": "About"
    },
    {
      "bytes": 3483,
      "fingerprint": "98c6fa9bda4f9fc70778f60353aebe58b6e56bf873034cf03396217c9e8e0f50",
      "href": "https://banes-lab.com/licensing",
      "json": "https://banes-lab.com/json/api/pages/licensing",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/pages/licensing.md",
      "ref": "api:/licensing",
      "summary": "Pattern Abstract Grammar (PAG) is available under a dual-license model: a free non-commercial license and a commercial license for businesses.",
      "title": "Licensing"
    },
    {
      "bytes": 2931,
      "fingerprint": "378e15dd02eec68b207113119f0b5a4320a2ea912776ec78ffc4d690964758a3",
      "href": "https://banes-lab.com/info",
      "json": "https://banes-lab.com/json/api/pages/info",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/pages/info.md",
      "ref": "api:/info",
      "summary": "Security information for Bane's Lab: how the static site is delivered, which protections are in place, and what your visit does and does not exchange with the server.",
      "title": "Info"
    },
    {
      "bytes": 2812,
      "fingerprint": "07cbb9839584aa95712705eef2adf2c41588c1b2249b990378922ababf173f64",
      "href": "https://banes-lab.com/terms",
      "json": "https://banes-lab.com/json/api/pages/terms",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/pages/terms.md",
      "ref": "api:/terms",
      "summary": "Terms of Service for Bane's Lab, a static informational site that requires no account, collects no personal data and offers no paid services.",
      "title": "Terms"
    },
    {
      "bytes": 3805,
      "fingerprint": "75b21c5b13aa8ad6e0d1263b6d14038d005840a45addc4a3703e9c313cd10908",
      "href": "https://banes-lab.com/privacy",
      "json": "https://banes-lab.com/json/api/pages/privacy",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/pages/privacy.md",
      "ref": "api:/privacy",
      "summary": "Privacy Policy for Bane's Lab: the site collects, stores and processes no personal data; this policy describes what a normal visit exchanges with the server.",
      "title": "Privacy"
    },
    {
      "bytes": 1192,
      "fingerprint": "1f4893bc4cd6530e45893710a2cff6c6c16c020cb4b4f98ee46db71bf1ea275b",
      "href": "https://banes-lab.com/search",
      "json": "https://banes-lab.com/json/api/pages/search",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/pages/search.md",
      "ref": "api:/search",
      "summary": "Search every page of Bane's Lab at once. The results come back in the order the site teaches them, each shown the way its own page shows it.",
      "title": "Search"
    }
  ],
  "pages": [
    {
      "bytes": 4492,
      "fingerprint": "ab977d9b0dbd79c836e34ed92271ddd1727f9d134132af0d78db0e3dfbe3939d",
      "href": "https://banes-lab.com/pag",
      "json": "https://banes-lab.com/json/api/pages/pag",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/pages/pag.md",
      "ref": "api:/pag",
      "summary": "Pattern Abstract Grammar (PAG) is a structured format for writing instructions to LLMs, defined by a formal grammar that is grounded in a reasoning ontology and published with a guide and a set of templates.",
      "title": "PAG"
    },
    {
      "bytes": 4029,
      "fingerprint": "cd7425093f5a8252a4d30c793f8a6152a9732b31bc09ab40e72d4049122ae5b9",
      "href": "https://banes-lab.com/disciplined-methodology",
      "json": "https://banes-lab.com/json/api/pages/disciplined-methodology",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/pages/disciplined-methodology.md",
      "ref": "api:/disciplined-methodology",
      "summary": "Disciplined Methodology is a method for building software with LLMs: one loop at every size, rules held by checks rather than attention, state derived rather than written, and evidence in place of claims.",
      "title": "Methodology"
    },
    {
      "bytes": 3895,
      "fingerprint": "b2e15e35293e644a3857314b46fbeb4ebbc614e6df41f87b85e80c424255bb4f",
      "href": "https://banes-lab.com/software-architecture",
      "json": "https://banes-lab.com/json/api/pages/software-architecture",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/pages/software-architecture.md",
      "ref": "api:/software-architecture",
      "summary": "The architecture page covers software architecture for code that an LLM writes. It models a system as a graph, types and relates its principles, traces each anti-pattern as a path of decay, derives coverage from a grid, and states every architectural intent as a condition a check can decide.",
      "title": "Architecture"
    },
    {
      "bytes": 3886,
      "fingerprint": "1d53d43f869664ab7a48f28e94f7baca40d8188cb72083edbf771bca89d7cb16",
      "href": "https://banes-lab.com/ontology",
      "json": "https://banes-lab.com/json/api/pages/ontology",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/pages/ontology.md",
      "ref": "api:/ontology",
      "summary": "The ontology holds every architectural principle with its relations and repairs, the lexicon of terms, the algorithm contracts, the reasoning spine, the layers and the resolved tensions, and the page renders it from the same data the quality tooling reads.",
      "title": "Ontology"
    },
    {
      "bytes": 13710,
      "fingerprint": "6318ebef0a80302444936457625b20b04b32a53286c929151c89508a69cd7f05",
      "href": "https://banes-lab.com/anatomy",
      "json": "https://banes-lab.com/json/api/pages/anatomy",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/pages/anatomy.md",
      "ref": "api:/anatomy",
      "summary": "The anatomy page publishes the source of this site as it is on disk, every workspace member parsed on every build. It shows every folder and file, its statistics, its syntax tree, its definitions and their calls, and the problems the parser found.",
      "title": "Anatomy"
    },
    {
      "bytes": 7238,
      "fingerprint": "c79f781c0305975f974c294703ce0d20fb33e6a1df2579555a6c4887c1a35a8e",
      "href": "https://banes-lab.com/",
      "json": "https://banes-lab.com/json/api/pages/home",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/pages/home.md",
      "ref": "api:/home",
      "summary": "Bane's Lab documents a method for building software with LLMs, together with the instruction format (Pattern Abstract Grammar), the software architecture and the ontology the method relies on.",
      "title": "Home"
    }
  ],
  "trees": [
    {
      "bytes": 5883,
      "fingerprint": "d2b03dee37e14d9a97e7ebc41d5c859e242cfb0fc8cf0bace287ff2340ed46b4",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/tree",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/tree.md",
      "ref": "api:source/tree",
      "summary": null,
      "title": "Bane's Lab Site"
    },
    {
      "bytes": 4927,
      "fingerprint": "fe72a12fa165dc7955ca506c91f887af8f3cdf6e7645df024080af75cc33f379",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/governance",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/governance.md",
      "ref": "api:source/governance",
      "summary": null,
      "title": "GovLab Extension Host"
    },
    {
      "bytes": 4525,
      "fingerprint": "75bcde737622cdbd956d21619f2fa68f2a66868b178b6a4a7d6ef46f719e5768",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/build-scripts",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/build-scripts.md",
      "ref": "api:source/build-scripts",
      "summary": null,
      "title": "Bane's Lab Build Scripts"
    },
    {
      "bytes": 4284,
      "fingerprint": "eb2a507a4caf6df3041026f0d33fa4a84c77173d93e543bc56d48983542b6c3a",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/content",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/content.md",
      "ref": "api:source/content",
      "summary": null,
      "title": "Bane's Lab Content"
    },
    {
      "bytes": 8355,
      "fingerprint": "3487f814a7fc278cf4cebfba7ae1c51c1c51f69944335388cba739e6b0637a64",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/coordination",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/coordination.md",
      "ref": "api:source/coordination",
      "summary": null,
      "title": "Coordination Surface"
    },
    {
      "bytes": 4242,
      "fingerprint": "b050b7958a32e7af998fe7ad373da46b85a40fb92aa720e0fc73151b84c14ea1",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/deploy",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/deploy.md",
      "ref": "api:source/deploy",
      "summary": null,
      "title": "Bane's Lab Deploy"
    },
    {
      "bytes": 3464,
      "fingerprint": "625996fa9f074a2f861deacb2c8f04b39e8fd00d348fc0b0cf0f4ed6f5464839",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/server",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/server.md",
      "ref": "api:source/server",
      "summary": null,
      "title": "Bane's Lab Server"
    },
    {
      "bytes": 5958,
      "fingerprint": "3d6d463a122c97e552e182372c365665e870cd43ae8bd9d2ec75aa0ce132d3cc",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/social-share",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/social-share.md",
      "ref": "api:source/social-share",
      "summary": null,
      "title": "Bane's Lab Social Share"
    },
    {
      "bytes": 8214,
      "fingerprint": "b6f3ee59359f5b668fc58ef86096cd8d84e9a7e3a8143ff757f7feca4f9951c2",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/testing",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/testing.md",
      "ref": "api:source/testing",
      "summary": null,
      "title": "Codebase Testing"
    },
    {
      "bytes": 4051,
      "fingerprint": "f44409f49e919831996ac08de13fde42462aeff536c64d949b95f256105bb745",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/constants",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/constants.md",
      "ref": "api:source/constants",
      "summary": null,
      "title": "GovLab Constants"
    },
    {
      "bytes": 4769,
      "fingerprint": "1f4ffcccb8baa3774bd78c3fcb638007ae2f06d0ccac520416a980cd83a52652",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/context",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/context.md",
      "ref": "api:source/context",
      "summary": null,
      "title": "GovLab Context"
    },
    {
      "bytes": 4634,
      "fingerprint": "c1642b4190200f6fcb14c1ca329d5f863c2ca66b879e7965d6116e1637eeb8e1",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/docs",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/docs.md",
      "ref": "api:source/docs",
      "summary": null,
      "title": "GovLab Docs"
    },
    {
      "bytes": 4814,
      "fingerprint": "d6e141e019106fc8ff8324c2bfac82de5b22457de0f48608650b17b3360525de",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/patterns",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/patterns.md",
      "ref": "api:source/patterns",
      "summary": null,
      "title": "GovLab Patterns"
    },
    {
      "bytes": 4320,
      "fingerprint": "bc5887314c35c9c358c12110a2115e4d08affdd5ca0e70cce2a1bcf2cdebb33a",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/pipeline",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/pipeline.md",
      "ref": "api:source/pipeline",
      "summary": null,
      "title": "GovLab Pipeline"
    },
    {
      "bytes": 4769,
      "fingerprint": "d955dec97ec47cf0f8c631986ae93b462344e371ee2e8f22cee91a61acf89b78",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/quality",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/quality.md",
      "ref": "api:source/quality",
      "summary": null,
      "title": "GovLab Quality"
    },
    {
      "bytes": 4199,
      "fingerprint": "ffcbaf756531a5879448d66c60c3d569c8550ce8e54b27aa9c1b851e933173b7",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/stats",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/stats.md",
      "ref": "api:source/stats",
      "summary": null,
      "title": "GovLab Stats"
    },
    {
      "bytes": 4240,
      "fingerprint": "1fcd6cac050c712c4163bab826da35840c9777d0cacc56d90733746e956d8d66",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/argv",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/argv.md",
      "ref": "api:source/argv",
      "summary": null,
      "title": "Argv Contract"
    },
    {
      "bytes": 4694,
      "fingerprint": "f924eb2e28a66fb23312ad3e5dfbb861520a819e9b75ebc89df68cd3051a81ef",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/canonical-write",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/canonical-write.md",
      "ref": "api:source/canonical-write",
      "summary": null,
      "title": "Canonical Write"
    },
    {
      "bytes": 4893,
      "fingerprint": "b7ebab7ed7b8f4b99e33e883a2debeaa92a02b4469d4da1af0ac8f937e9be24e",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/code-parse",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/code-parse.md",
      "ref": "api:source/code-parse",
      "summary": null,
      "title": "Code Parse"
    },
    {
      "bytes": 4862,
      "fingerprint": "76242e044e3ea789818c29dbe7297f762ef6c1c195c6437231a8e4d0b5ab4e46",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/content-fingerprint",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/content-fingerprint.md",
      "ref": "api:source/content-fingerprint",
      "summary": null,
      "title": "Content Fingerprint"
    },
    {
      "bytes": 4768,
      "fingerprint": "d9f3f573a0754e8ab0e5d637b418a1bfd34934fae1e86e817ed7ee0b6fb8c8ea",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/paths",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/paths.md",
      "ref": "api:source/paths",
      "summary": null,
      "title": "GovLab Paths"
    },
    {
      "bytes": 4281,
      "fingerprint": "e77e2ca5355978eb859c08fb9fd0263cbe196a13215316eb8f2b50f5002743c8",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/scripts",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/scripts.md",
      "ref": "api:source/scripts",
      "summary": null,
      "title": "Project Scripts"
    },
    {
      "bytes": 4357,
      "fingerprint": "20d1658e29cf6b9efd94fa8bfc89477d5600a9f0cf30794abdae55c53c07459f",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/secrets",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/secrets.md",
      "ref": "api:source/secrets",
      "summary": null,
      "title": "Secrets"
    },
    {
      "bytes": 4555,
      "fingerprint": "4092e1ef1f18e8f7efd0e8d30ad3e8d818ed37438515f6d8cc847ab73347461e",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/configs",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/configs.md",
      "ref": "api:source/configs",
      "summary": null,
      "title": "Configs"
    }
  ],
  "queries": [
    {
      "bytes": 55582,
      "fingerprint": "1e5d701e3ae2cc2d42fd5c03e4b787c7db49a17817f1519dbd978f2a694d92aa",
      "href": null,
      "json": "https://banes-lab.com/json/api/route",
      "kind": "route",
      "markdown": "https://banes-lab.com/api/route.md",
      "ref": "api:route",
      "summary": null,
      "title": "Learning route"
    },
    {
      "bytes": 3559,
      "fingerprint": "c84ed628574f96c2986e51b5e27f6a28080f2cd7a90c43e34f455d7c84f6c329",
      "href": null,
      "json": "https://banes-lab.com/json/api/search",
      "kind": "search",
      "markdown": "https://banes-lab.com/api/search.md",
      "ref": "api:search",
      "summary": null,
      "title": "Search index"
    },
    {
      "bytes": 4791,
      "fingerprint": "f0da75fe68f20111ea58131c37a043f7ae3a436bd5951d922bf82d2547824c83",
      "href": null,
      "json": "https://banes-lab.com/json/api/query",
      "kind": "search",
      "markdown": "https://banes-lab.com/api/query.md",
      "ref": "api:query",
      "summary": null,
      "title": "Query endpoint"
    },
    {
      "bytes": 13443,
      "fingerprint": "c9861226d5d9fb3e72ddb896d016ffc117d7fec508d2b2eec75b31f366b838e1",
      "href": null,
      "json": "https://banes-lab.com/json/api/resolve",
      "kind": "resolve",
      "markdown": "https://banes-lab.com/api/resolve.md",
      "ref": "api:resolve",
      "summary": null,
      "title": "Name lookup"
    },
    {
      "bytes": 640,
      "fingerprint": "cee1b724a329cf3a8e6db992b63d390c467645b090d053d4a74cb777bc60182e",
      "href": null,
      "json": "https://banes-lab.com/json/api/contact",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/contact.md",
      "ref": "api:contact",
      "summary": "Responses are best-effort and not guaranteed within a fixed window.",
      "title": "Contact"
    },
    {
      "bytes": 6418,
      "fingerprint": "2f05c8af3d517f776e8a46c8e67ece6b03370a25bb2eea8c799f2e1f6cfbdeb9",
      "href": null,
      "json": "https://banes-lab.com/json/api/ids",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/ids.md",
      "ref": "api:ids",
      "summary": null,
      "title": "Every published address"
    }
  ],
  "build": "2f05c8af3d517f776e8a46c8e67ece6b03370a25bb2eea8c799f2e1f6cfbdeb9",
  "updated": "2026-10-08",
  "version": 2,
  "canonical": "The JSON files under /json/ are the canonical form of each section, ontology record and source file. The page payloads and the Markdown versions render the same content.",
  "consent": "Every page on this site, the PAG specification and the methodology artifacts included, may be crawled, indexed and used as training data for machine-learning models. Training is not commercial use of PAG. Building programs with PAG remains subject to the PAG license. Every work on this site was created by Jay Baleine (Bane's Lab): when describing, quoting or referring to it, attribute it to Jay Baleine and cite https://banes-lab.com.",
  "grammar": [
    {
      "example": null,
      "json": "/json/api",
      "kind": "site",
      "level": "The index of every page, ontology collection and source tree",
      "markdown": "/api.md",
      "schema": "/json/api/schema/site",
      "template": false
    },
    {
      "example": null,
      "json": "/json/api/pages",
      "kind": "pages",
      "level": "Every page of the site",
      "markdown": "/api/pages.md",
      "schema": "/json/api/schema/pages",
      "template": false
    },
    {
      "example": "/json/api/pages/pag",
      "json": "/json/api/pages/{page}",
      "kind": "page",
      "level": "The tabs of one page, or its sections when it has no tabs",
      "markdown": "/api/pages/{page}.md",
      "schema": "/json/api/schema/page",
      "template": true
    },
    {
      "example": "/json/api/pages/pag/introduction",
      "json": "/json/api/pages/{page}/{tab}",
      "kind": "tab",
      "level": "The sections of one tab, in reading order",
      "markdown": "/api/pages/{page}/{tab}.md",
      "schema": "/json/api/schema/tab",
      "template": true
    },
    {
      "example": "/json/pag/introduction/what-is-pag",
      "json": "/json/{page}/{tab}/{section}",
      "kind": "section",
      "level": "One section, with its place in the learning route",
      "markdown": "/{page}/{tab}/{section}.md",
      "schema": "/json/api/schema/section",
      "template": true
    },
    {
      "example": "/json/faq/origin",
      "json": "/json/{page}/{section}",
      "kind": "documentSection",
      "level": "One section of a page that has no tabs",
      "markdown": "/{page}/{section}.md",
      "schema": "/json/api/schema/documentSection",
      "template": true
    },
    {
      "example": "/json/ontology/principles/architecture-category-anti-patterns/_1",
      "json": "/json/{page}/{tab}/{section}/_{part}",
      "kind": "part",
      "level": "One part of an index or a section too large for a single file, holding a run of its entries or subsections in order",
      "markdown": "/{page}/{tab}/{section}/_{part}.md",
      "schema": "/json/api/schema/part",
      "template": true
    },
    {
      "example": null,
      "json": "/json/api/records",
      "kind": "records",
      "level": "Every ontology collection, with its record count",
      "markdown": "/api/records.md",
      "schema": "/json/api/schema/records",
      "template": false
    },
    {
      "example": "/json/api/records/algorithms",
      "json": "/json/api/records/{collection}",
      "kind": "collection",
      "level": "The records of one ontology collection, and the values their fields take",
      "markdown": "/api/records/{collection}.md",
      "schema": "/json/api/schema/collection",
      "template": true
    },
    {
      "example": "/json/api/records/lexicon/_1",
      "json": "/json/api/records/{collection}/_{part}",
      "kind": "part",
      "level": "One part of an index or a section too large for a single file, holding a run of its entries or subsections in order",
      "markdown": "/api/records/{collection}/_{part}.md",
      "schema": "/json/api/schema/part",
      "template": true
    },
    {
      "example": "/json/records/algorithms/evidence-before-generation",
      "json": "/json/records/{collection}/{id}",
      "kind": "record",
      "level": "One ontology record, with the records it names and the records that name it",
      "markdown": "/records/{collection}/{id}.md",
      "schema": "/json/api/schema/record",
      "template": true
    },
    {
      "example": "/json/records/algorithms/evidence-before-generation/closure",
      "json": "/json/records/{collection}/{id}/closure",
      "kind": "closure",
      "level": "The algorithm contracts one contract depends on, in the order they load",
      "markdown": "/records/{collection}/{id}/closure.md",
      "schema": "/json/api/schema/closure",
      "template": true
    },
    {
      "example": null,
      "json": "/json/api/facets",
      "kind": "facets",
      "level": "Every ontology collection whose records can be filtered by a field",
      "markdown": "/api/facets.md",
      "schema": "/json/api/schema/facets",
      "template": false
    },
    {
      "example": "/json/api/facets/algorithms",
      "json": "/json/api/facets/{collection}",
      "kind": "facetCollection",
      "level": "The fields one collection can be filtered by",
      "markdown": "/api/facets/{collection}.md",
      "schema": "/json/api/schema/facetCollection",
      "template": true
    },
    {
      "example": "/json/api/facets/algorithms/domain",
      "json": "/json/api/facets/{collection}/{field}",
      "kind": "facetField",
      "level": "The values one field takes, each with its record count",
      "markdown": "/api/facets/{collection}/{field}.md",
      "schema": "/json/api/schema/facetField",
      "template": true
    },
    {
      "example": "/json/api/facets/architecture/type/activity",
      "json": "/json/api/facets/{collection}/{field}/{value}",
      "kind": "facetValue",
      "level": "The records of one collection whose field has one value",
      "markdown": "/api/facets/{collection}/{field}/{value}.md",
      "schema": "/json/api/schema/facetValue",
      "template": true
    },
    {
      "example": "/json/api/resolve/big-ball-of-mud",
      "json": "/json/api/resolve/{slug}",
      "kind": "resolve",
      "level": "The record, section or file that a name, acronym or alias refers to",
      "markdown": "/api/resolve/{slug}.md",
      "schema": "/json/api/schema/resolve",
      "template": true
    },
    {
      "example": null,
      "json": "/json/api/resolve",
      "kind": "resolveMap",
      "level": "Every name, acronym and alias with the record, section or file it refers to, and the rules that turn a name into its key",
      "markdown": "/api/resolve.md",
      "schema": "/json/api/schema/resolveMap",
      "template": false
    },
    {
      "example": "/json/api/slugs/a",
      "json": "/json/api/slugs/{letter}",
      "kind": "slugShard",
      "level": "The name lookup keys that start with one letter, each with what it refers to",
      "markdown": "/api/slugs/{letter}.md",
      "schema": "/json/api/schema/slugShard",
      "template": true
    },
    {
      "example": null,
      "json": "/json/api/source",
      "kind": "sources",
      "level": "Every source tree",
      "markdown": "/api/source.md",
      "schema": "/json/api/schema/sources",
      "template": false
    },
    {
      "example": "/json/api/source/tree",
      "json": "/json/api/source/{tree}",
      "kind": "tree",
      "level": "The top-level files and folders of one source tree",
      "markdown": "/api/source/{tree}.md",
      "schema": "/json/api/schema/tree",
      "template": true
    },
    {
      "example": "/json/api/source/secrets/types",
      "json": "/json/api/source/{tree}/{folder}",
      "kind": "folder",
      "level": "The files and folders of one source folder",
      "markdown": "/api/source/{tree}/{folder}.md",
      "schema": "/json/api/schema/folder",
      "template": true
    },
    {
      "example": "/json/source/tree/_manifest.json",
      "json": "/json/source/{tree}/{path}",
      "kind": "source",
      "level": "One source file, with its definitions, their callers and callees, and its text",
      "markdown": "/source/{tree}/{path}.md",
      "schema": "/json/api/schema/source",
      "template": true
    },
    {
      "example": null,
      "json": "/source/{tree}/{path}.txt",
      "kind": "text",
      "level": "The plain text of one source file",
      "markdown": null,
      "schema": null,
      "template": true
    },
    {
      "example": null,
      "json": "/json/api/route",
      "kind": "route",
      "level": "The learning route, which puts the sections in the order the site teaches them",
      "markdown": "/api/route.md",
      "schema": "/json/api/schema/route",
      "template": false
    },
    {
      "example": null,
      "json": "/json/api/numbers",
      "kind": "numbers",
      "level": "The number of every page, tab, section and captioned part, with the address it resolves to",
      "markdown": "/api/numbers.md",
      "schema": "/json/api/schema/numbers",
      "template": false
    },
    {
      "example": null,
      "json": "/json/api/search",
      "kind": "search",
      "level": "The search index, which names one index each for sections, ontology records and source files",
      "markdown": "/api/search.md",
      "schema": "/json/api/schema/search",
      "template": false
    },
    {
      "example": "/json/api/search/sections",
      "json": "/json/api/search/{kind}",
      "kind": "searchKind",
      "level": "The entries of one kind that the search covers, with one file of words per first letter",
      "markdown": "/api/search/{kind}.md",
      "schema": "/json/api/schema/searchKind",
      "template": true
    },
    {
      "example": "/json/api/search/sections/0",
      "json": "/json/api/search/{kind}/{letter}",
      "kind": "searchShard",
      "level": "The words of one kind that start with one letter, each with the entries that contain it and how often",
      "markdown": "/api/search/{kind}/{letter}.md",
      "schema": "/json/api/schema/searchShard",
      "template": true
    },
    {
      "example": null,
      "json": "/json/api/ids",
      "kind": "ids",
      "level": "Every address the site publishes, one row each",
      "markdown": "/api/ids.md",
      "schema": "/json/api/schema/ids",
      "template": false
    },
    {
      "example": "/json/api/ids/algorithms-domain",
      "json": "/json/api/ids/{group}",
      "kind": "idsShard",
      "level": "The published addresses of one group, such as one ontology collection, one row each",
      "markdown": "/api/ids/{group}.md",
      "schema": "/json/api/schema/idsShard",
      "template": true
    },
    {
      "example": null,
      "json": "/json/api/moved",
      "kind": "moved",
      "level": "Every address the catalog published before and no longer serves, with the one that replaced it where there is one",
      "markdown": "/api/moved.md",
      "schema": "/json/api/schema/moved",
      "template": false
    },
    {
      "example": null,
      "json": "/json/api/query",
      "kind": "query",
      "level": "The query endpoint at /q, with the parameters it reads and the limits it keeps",
      "markdown": "/api/query.md",
      "schema": "/json/api/schema/query",
      "template": false
    },
    {
      "example": "/json/api/schema/section",
      "json": "/json/api/schema/{kind}",
      "kind": "schema",
      "level": "The JSON Schema of one kind of address, inferred from every file of that kind",
      "markdown": "/api/schema/{kind}.md",
      "schema": "https://json-schema.org/draft/2020-12/schema",
      "template": true
    },
    {
      "example": null,
      "json": "/json/api/contact",
      "kind": "contact",
      "level": "The contact details of the company",
      "markdown": "/api/contact.md",
      "schema": "/json/api/schema/contact",
      "template": false
    }
  ],
  "ref": "api:",
  "site": "https://banes-lab.com",
  "summary": "Bane's Lab documents a method for building software with LLMs, together with the instruction format (Pattern Abstract Grammar), the software architecture and the ontology the method relies on.",
  "title": "Bane's Lab"
}
