From 92ac5feea68fad712a95be5633439589d859cfa6 Mon Sep 17 00:00:00 2001 From: arpan Date: Mon, 14 Sep 2026 04:20:57 +0530 Subject: [PATCH] The assurance case fits the site's rules: description, SEO row, Next block, long-form Four tests the page failed once it was on main: a description over 155 characters, no row in SEO.md, no closing Next block with the Why and Get started links, and 1,816 words against a 900-word budget. The first three are fixed on the page. For the fourth the page joins the long-form list beside the threat model and the architecture: it argues every requirement with its evidence and is read by criterion, not in one sitting. Signed-off-by: arpan --- SEO.md | 1 + docs/security/assurance-case.mdx | 8 +++++++- tests/test_docs_site.py | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/SEO.md b/SEO.md index 9503bff..0da3066 100644 --- a/SEO.md +++ b/SEO.md @@ -107,6 +107,7 @@ that page's frontmatter, never here. | `docs/faq` | ctrlrun faq, and each question verbatim | The twelve questions that come up first, answered in under eighty words each. | | `docs/security/receipt-chain` | tamper evident audit log AI agent | The receipt chain is a hash chain over the evidence log. | | `docs/security/verify-guarantees` | ctrlrun verify guarantees | `ctrlrun verify` runs eleven guarantees against the configuration in front of it. | +| `docs/security/assurance-case` | ctrlrun assurance case security requirements | An assurance case is the argument, with its evidence, that a system meets its security requirements. | | `docs/security/disclosure` | ctrlrun security report | Report vulnerabilities privately to contact@arpanghoshal.com. | | `docs/how-this-is-built` | is ctrlrun trustworthy · how ctrlrun is tested | CTRLRun is built specification-first, every requirement in it is mutation-tested. | | `docs/reference/policy-yaml` | ctrlrun.yaml reference · ctrlrun policy schema | `ctrlrun.yaml` is one document: a `schema`, an `actions` map, and from v3 the `mode`, `environment` and `docs/authority` keys. | diff --git a/docs/security/assurance-case.mdx b/docs/security/assurance-case.mdx index 6d721f3..2dc71ed 100644 --- a/docs/security/assurance-case.mdx +++ b/docs/security/assurance-case.mdx @@ -1,6 +1,6 @@ --- title: "Assurance case" -description: "Why the three guarantees hold: the threat model and its trust boundary, the design principles the kernel applies, the implementation weaknesses it counters, and where the evidence for each one sits." +description: "Why the three guarantees hold: the threat model and its boundary, the design principles applied, the weaknesses countered, and where the evidence sits." --- An assurance case is the argument, with its evidence, that a system meets its security @@ -108,3 +108,9 @@ where a regression would be caught. - The argument is for the kernel. An adapter or a gateway deployment adds a boundary of its own. The adapter conformance kit checks an adapter's behaviour; `ctrlrun verify` checks only the kernel guarantees the configured policy, grants and store backend can exercise. + +## Next + +- [Threat model](/docs/THREAT_MODEL): what is defended and what is not, in full. +- [What verify guarantees](/docs/security/verify-guarantees): the eleven guarantees, replayed against your own configuration. +- [Get started](/docs/get-started/quickstart) · [Why](/docs/why). diff --git a/tests/test_docs_site.py b/tests/test_docs_site.py index bbdb7d8..b537ef6 100644 --- a/tests/test_docs_site.py +++ b/tests/test_docs_site.py @@ -59,6 +59,9 @@ def walk(node: object) -> None: { "ARCHITECTURE", "THREAT_MODEL", + # The assurance case argues every requirement with its evidence; it is read beside the + # threat model and cited by criterion, not in one sitting. + "security/assurance-case", "CLAIMS", "ROADMAP", "verify",