{
  "documents": [
    {
      "bytes": 1004,
      "fingerprint": "662c8283eb120e62d6ec4f4bfcebb119cc389680bb06d074bb85f193492351a7",
      "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 practise it and where it stops being useful.",
      "title": "FAQ"
    },
    {
      "bytes": 3476,
      "fingerprint": "9f80b6e97d06f0b32e62fbde128244318f7138a694366b7ab1b48e7045a28e24",
      "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": 2926,
      "fingerprint": "7750c565ece032255ac92be4f9b0a59e4e024cb7be560f94c515592a425091fd",
      "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": 2804,
      "fingerprint": "cf251a3dd705bbb594f9304d4b6a9cd28f646f6b6661e1219633ec05c04c67e9",
      "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": 3796,
      "fingerprint": "e04146fb15ebd1a44cfb072a4e6d1079c9e86935e9a84cbac60b1d8ee1d7e419",
      "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": 1186,
      "fingerprint": "e693ce90ed00e3fe95182003a5c558dfbd6f03ff4b5af114e9ee7fd5c32bf4e5",
      "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"
    }
  ],
  "faces": [
    {
      "bytes": 352771,
      "fingerprint": "78665a8c33a0bfb932fee4a5bfef0c2d38783be17f4dee5265cf2e33bc38325e",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/algo",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/algo.md",
      "ref": "api:records/algo",
      "summary": "451 records.",
      "title": "The algo face"
    },
    {
      "bytes": 303374,
      "fingerprint": "0b31f66bf62b6768c3497b16e5c1d680291eef645245f87413cbf273023f61ef",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/arch",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/arch.md",
      "ref": "api:records/arch",
      "summary": "446 records.",
      "title": "The arch face"
    },
    {
      "bytes": 10759,
      "fingerprint": "16b945b97f902d48c69a93e5ae1687fa6f830c43da5467ecde30284c52f969ed",
      "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": "The layer face"
    },
    {
      "bytes": 804982,
      "fingerprint": "975b665f3d770f97db5c43112a6db254cf8e3e2c13106f0523bbd18e1cdba690",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/lex",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/lex.md",
      "ref": "api:records/lex",
      "summary": "1357 records.",
      "title": "The lex face"
    },
    {
      "bytes": 146424,
      "fingerprint": "8eb9f94d61504eda8b032879e56c8ef56cbf54e529edfd9ddd6e238493231c65",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/reason",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/reason.md",
      "ref": "api:records/reason",
      "summary": "279 records.",
      "title": "The reason face"
    },
    {
      "bytes": 4375,
      "fingerprint": "0bdd9a6659e99cc34a70bb8869baea011ecc81981bec57aa4f57a6a25d83f7cc",
      "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": "The stage face"
    },
    {
      "bytes": 340416,
      "fingerprint": "6a2be3cfccbe02e426c58cdaec9483371a4e5ec10d21539b06e7b4b74f353173",
      "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": "395 records.",
      "title": "The tension face"
    },
    {
      "bytes": 10598,
      "fingerprint": "898db5bf7c6c0229a28763afc5d0fe508ac5868504795cdb3f0c024a657665c9",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/algo-domain",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/algo-domain.md",
      "ref": "api:records/algo-domain",
      "summary": "21 records.",
      "title": "The algo-domain face"
    },
    {
      "bytes": 16956,
      "fingerprint": "a9283417a895ffddf69ad6ec33ed8885737018bfa64789ac1d855009db092747",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/arch-category",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/arch-category.md",
      "ref": "api:records/arch-category",
      "summary": "29 records.",
      "title": "The arch-category face"
    },
    {
      "bytes": 9377,
      "fingerprint": "8c225576b0a7b7839de0eae56df2a23c0a1871397c2433067229febda0fbe8b7",
      "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": "The force face"
    },
    {
      "bytes": 7102,
      "fingerprint": "fa5a0e9c0008b49a99b3abfed9b34df373b1c5b1bae1cb2922e567268b930521",
      "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": "The kind face"
    },
    {
      "bytes": 17396,
      "fingerprint": "431d1521a0676d122c71ab8d2d3c656050c59335f3a92726cf36085555ed9bee",
      "href": null,
      "json": "https://banes-lab.com/json/api/records/lex-category",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/records/lex-category.md",
      "ref": "api:records/lex-category",
      "summary": "30 records.",
      "title": "The lex-category face"
    },
    {
      "bytes": 2419,
      "fingerprint": "0f19834169803cd294c053e95e4465dff5ed2637bc621683c03d072b0c1b1d41",
      "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": "The relation face"
    }
  ],
  "pages": [
    {
      "bytes": 211,
      "fingerprint": "16a2b2e06ef4bdb10305208d38091bcc4b8f421155ddd6030457d13a68d9a982",
      "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"
    },
    {
      "bytes": 4487,
      "fingerprint": "594c46b98d54aff0c855a6f77e2672f7b16b103403bcb9d729fe96c72b747a4f",
      "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": 4024,
      "fingerprint": "cb1aa693a8db772f90017818517fb242a628a11808e0c3a457b7b3d010fc91b3",
      "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": 3890,
      "fingerprint": "c305da33c6ac73eca500cc2f9e393254fc05891394fa6333013b26a3080f735e",
      "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": 3366,
      "fingerprint": "a8f0dd698782ff6c8275fcdf6383cd30f5757a58ef12aa85bf06814dd20a77d0",
      "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": 2466,
      "fingerprint": "b51dacfa4c9941b1b9b89bb2dbcb0fd8b8c3124f9954738144258d17899bca24",
      "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 client source of this site as it is on disk, parsed on every build, with every folder and file, its statistics, its syntax tree, its definitions and their calls, and the problems the parser found.",
      "title": "Anatomy"
    }
  ],
  "queries": [
    {
      "bytes": 55556,
      "fingerprint": "68cddc280fd1aefa078c5af2698a9317859ba7e4ef64a7a872ee10c4cca4744e",
      "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": 70837,
      "fingerprint": "52a8205b6800b3dabbc1cd38bac73df01db17775004e0aae33ebdf6cdb61f0a2",
      "href": null,
      "json": "https://banes-lab.com/json/api/search",
      "kind": "search",
      "markdown": null,
      "ref": "api:search",
      "summary": null,
      "title": "Search index"
    },
    {
      "bytes": 1337,
      "fingerprint": "bdf4cbc5d864364127ca3b4874728df8ceff2f03c4bf076b3c40ce472aaeb3b4",
      "href": null,
      "json": "https://banes-lab.com/json/api/resolve",
      "kind": "resolve",
      "markdown": null,
      "ref": "api:resolve",
      "summary": null,
      "title": "Name lookup"
    },
    {
      "bytes": 640,
      "fingerprint": "770fcefd8585b69c1c81eca4f92cd417bc6527de326c93dfe200b23767a5ee79",
      "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": 1960,
      "fingerprint": "fb7da0837f8885517a204733ec4086994699c30713ef2f62afbc6808c52e7dc9",
      "href": null,
      "json": "https://banes-lab.com/json/api/ids",
      "kind": "index",
      "markdown": null,
      "ref": "api:ids",
      "summary": null,
      "title": "Every published address"
    }
  ],
  "trees": [
    {
      "bytes": 272268,
      "fingerprint": "c92f3e3599f466f0c0852585bcda701081ca4442605e3532a9819a97189dee53",
      "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": "Site tree"
    },
    {
      "bytes": 53098,
      "fingerprint": "22d868afd936671285a1d4255cc8a9e462262ab33c36bfe91102718bf8ade406",
      "href": null,
      "json": "https://banes-lab.com/json/api/source/build",
      "kind": "index",
      "markdown": "https://banes-lab.com/api/source/build.md",
      "ref": "api:source/build",
      "summary": null,
      "title": "Build tree"
    },
    {
      "bytes": 218582,
      "fingerprint": "21940c4e09653dc8903ec617afa6307ff9bd5ca4fdb535adb8fd8b25a50c84f3",
      "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 tree"
    }
  ],
  "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": [
    {
      "json": "/json/api",
      "level": "The index of every page, ontology face and source tree",
      "markdown": "/api.md",
      "template": false
    },
    {
      "json": "/json/api/pages/{page}",
      "level": "The tabs of one page, or its sections when it has no tabs",
      "markdown": "/api/pages/{page}.md",
      "template": true
    },
    {
      "json": "/json/api/pages/{page}/{tab}",
      "level": "The sections of one tab, in reading order",
      "markdown": "/api/pages/{page}/{tab}.md",
      "template": true
    },
    {
      "json": "/json/{page}/{tab}/{section}",
      "level": "One section, with its place in the learning route",
      "markdown": "/{page}/{tab}/{section}.md",
      "template": true
    },
    {
      "json": "/json/api/records/{face}",
      "level": "The records of one ontology face, and the values their fields take",
      "markdown": "/api/records/{face}.md",
      "template": true
    },
    {
      "json": "/json/records/{face}/{id}",
      "level": "One ontology record, with the records it names and the records that name it",
      "markdown": "/records/{face}/{id}.md",
      "template": true
    },
    {
      "json": "/json/api/resolve/{slug}",
      "level": "The record, section or file that a name, acronym or alias refers to",
      "markdown": null,
      "template": true
    },
    {
      "json": "/json/api/resolve",
      "level": "Every name, acronym and alias with the record, section or file it refers to",
      "markdown": null,
      "template": false
    },
    {
      "json": "/json/api/source/{tree}",
      "level": "Every file of one source tree",
      "markdown": "/api/source/{tree}.md",
      "template": true
    },
    {
      "json": "/json/source/{tree}/{path}",
      "level": "One source file, with its definitions, their callers and callees, and its text",
      "markdown": "/source/{tree}/{path}.md",
      "template": true
    },
    {
      "json": "/json/api/route",
      "level": "The learning route, which puts the sections in the order the site teaches them",
      "markdown": "/api/route.md",
      "template": false
    },
    {
      "json": "/json/api/search",
      "level": "The search index, which lists for each word the sections that contain it",
      "markdown": null,
      "template": false
    },
    {
      "json": "/json/api/ids",
      "level": "Every address the site publishes, one row each",
      "markdown": null,
      "template": false
    },
    {
      "json": "/json/api/contact",
      "level": "The contact details of the company",
      "markdown": "/api/contact.md",
      "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"
}
