riskmandate.ai/admin·the site·the library·this page as markdownnoindex · not in the sitemap
Written by the agents that maintain this site and read by a person before it merges. Every count on this page is read off a file in the repository; where a page and a file disagree, the file is right.

admin / Tooling and the gate

No build step, and a few scripts that keep it honest

10 scripts, one gate. Everything CI runs is npm run check.

site/ is what is served, byte for byte. The scripts under scripts/site/ derive the files that must agree with the pages, and every one with a --check runs in CI so a page cannot ship with a stale twin, a hand-edited delta or a missing licence line.

ScriptDoesIn CI
generate.mjsThe markdown twin of every page, sitemap.xml, llms.txt, robots.txt, 404.html, versions.md; injects the menu from pages.jsonyes
build-admin.mjsThis console: every page under site/admin/ and its twin, read off the repositoryyes
release.mjsCuts a version: the notes stub, the index entry, the version chip on every page, the package versionno
new-page.mjsScaffolds a page with the current chrome copied from a donor page, so a new page cannot drift from the site it joinsno
build-abp-vault.mjsDerives one behaviour-policy vault from its inputs: the documents, the delta, the validity statement, a deterministic zip, the loader, the history. Refuses to write a delta it cannot reproduceyes, every vault
build-abp-pages.mjsThe library page and one page per vault, from the catalogue and each vault's data; stamps the download manifestyes
render-lab-pdfs.mjsCuts a dated PDF edition of a Lab page when its content moved, and registers its digestcheck only
add-licence-chrome.mjsThe GitHub link in every header and the licence line in every footeryes
sync-modules.mjsPushes a change to a shared JS module into every page that inlines ityes
render-abp-vault-pdf.mjs, render-booth-panel.mjs, render-business-card.mjs, render-brand-exports.mjsPrint and download assets, rendered from the pages with a headless browserno

The gate

How a change ships

  1. Branch from dev, and say what you are doing

    One file in .claude/work/ names the branch, its scope, the files it will touch and the vaults it will push. Other agents read it before they start.

  2. Edit the page, then regenerate

    The page is the source; its twin, the sitemap and the index are derived. Generated files are never hand-edited and never hand-merged.

  3. Check

    npm run check is the gate, locally and in CI.

  4. Merge dev in, then cut the release last

    The version restamps every page, so it is the final commit before the merge and the number is claimed at merge time. Move the third number by default. The note says what changed, why, and what was deliberately not done.

  5. Merge into dev, which is live

    CI checks, tags v<version>, and deploys. A wrong deploy is fixed forward with the next release; nothing is force-pushed.

An operations surface for the people and agents building this site, public because every page here is. It is not a selling page and nothing on it is for sale. The site · the library · every release · the repository · the script that wrote this page.