What is checked
Each guarantee and build-time check is listed with its basis.
Sources and scope
This page reads NoGoals's built-in guarantee and gate definitions directly from the code at build time, keeping the list consistent with the implementation.
A build's report uses these definitions. It restates theorems proved by the site as claims about that site and records the results of the gates that ran. The verification page contains the evidence for this build.
The label on the right identifies each guarantee's scope. kernel applies to content routed through the verified renderer. chrome applies to the typed frame around every page. artifact applies to the files emitted by the build.
This build's verification pageVerification results for this site
Guarantees enforced by types
Bilingual completeness for editorial content
artifactEvery L leaf carries both JA and EN — enforced structurally by the L type; a page cannot ship with one language missing
NoGoals.DSL.L (record with both ja and en fields)Dates are valid ISO calendar dates
artifactEvery article and page date is an `IsoDate`; the `IsoDate.lit` literal is parsed during elaboration, so a malformed date is a compile error
NoGoals.Verify.IsoDate.lit (elaboration-checked literal)Output paths cannot escape the root
artifactEvery page path is derived from a Route whose slug is a list of validated [a-z0-9-] segments, and every asset path from validated [a-z0-9._-] segments that are never `.` or `..`; a name that could escape the output root or collide across case is unrepresentable — a compile error at the literal
Segment / Slug / AssetPath types + Route.outputPathRoute closure: every internal href resolves to an emitted page (IR vocabulary)
kernelIn the kernel IR, link targets are Fin nP (unrepresentable otherwise); rendered_link_resolves proves the emitted href, resolved as a browser and the host resolve it from any source page, is a file in the build plan. Body links of the shipped site are covered separately by the artifact-level link gate.
Fin nP + rendered_link_resolvesFragment closure: a link's #anchor is an id the target declares (IR vocabulary)
kernelA link's anchor is a member of the target page's anchor schema (AnchorIn); anchors_sound + body_ids_emitted prove the target's rendered tree carries that id
AnchorIn subtype + rendered_fragment_declaredNo missing assets (IR vocabulary)
kernelAssetId carries proof that asset exists with correct kind
AssetId type witnessNo asset type confusion (IR vocabulary)
kernelCannot use JS file as image - kind is part of type
AssetId n k ANo empty alt text (IR vocabulary)
kernelAlt attributes require NonEmptyStr
NonEmptyStr typeNo empty link labels (IR vocabulary)
kernelLink text requires NonEmptyStr
NonEmptyStr typeSafe external URLs only (IR vocabulary)
kernelExternal URLs must be https/http/data URIs
Url.Safe ADT
Guarantees proved by theorems
Slug/index round-trip (IR)
kernelindexOf (slug i) (lang i) = some i for all pages of a refined SiteV
roundTrip₁ theoremi18n completeness (IR)
kernelEvery slug exists in every language, for a refined SiteV (the language set is closed: ja, en)
i18nComplete theoremNo file collisions (IR plan)
kernelAll output paths of a refined SiteV's build plan are unique - no overwrites
unique_paths theoremPages/assets path disjoint (IR)
kernelPage paths never collide with asset paths in a refined SiteV
disjointAssets theoremBuild covers all content (IR plan)
kernelEvery page and asset of a refined SiteV appears in its build plan
coverage theoremAsset path injectivity (IR)
kernelDifferent assets have different paths
Assets.path_injectiveSitemap covers every route
artifactEvery route of an indexed page (page × language) is the loc of an entry that is a member of the generated sitemap, and the sitemap has exactly one entry per such route — no page dropped, none invented
sitemap_covers + sitemap_entry_count theoremsStage headers ⊇ prod headers
artifactStaging security headers never weaken prod; stage only adds directives
stage_headers_superset_prod theoremRobots/sitemap URL consistent
artifactProd robots.txt Sitemap URL matches sitemap base URL — no drift
prod_robots_sitemap_consistent theoremCanonical, hreflang and sitemap from one route set
artifactThe <head> canonical link, the <head> hreflang alternates, the sitemap alternates and the switcher are all Route.href of the same route set through one alternatesFor function: the JA and EN entries of a slug carry the identical alternate set (hreflang_symmetric) and every set names ja, en and x-default (alternates_complete)
hreflang_symmetric + alternates_complete theoremsLanguage switcher symmetric
chromeThe switcher offers a language iff the twin page's switcher offers the way back — a page you can switch into can always switch out
switcher_symmetric theorem
Security
This section lists escaping theorems and a typed delivery policy. Each entry states its basis.
Escaping correct where applied (typed tree)
chromeText and attribute content routed through the typed tree renderer is escaped; htmlEscape_no_specials proves the output contains no < > " ' for ANY input. Raw slot content is NOT covered by this theorem — each raw node is a named trust obligation checked by the runtime validators.
htmlEscape_no_specials theoremCSP forbids inline styles and scripts (typed policy)
artifactThe typed HeadersPolicy ships style-src 'self' and script-src without 'unsafe-inline'; the emitted _headers file is rendered from it. Whether the emitted PAGES honor the policy is the CSP audit gate's claim, reported separately from its actual run.
typed HeadersPolicyXML injection impossible (sitemap/feeds)
artifactxmlEscape is the charwise htmlEscape; xmlEscape_no_specials proves sitemap and feed text/attribute content contains no < > " ' for ANY input
xmlEscape_no_specials theoremChrome structure well-formed (slots trusted)
chromeEvery content page is one typed HTML tree: kernel chrome (head, nav, hero, footer) around the site's typed slots; chrome_tree_wellFormed proves the chrome adds no imbalance whenever the slot trees are well-formed, and render_wf_mod promotes that to the rendered bytes modulo the listed raw slots — the fragment grammar plus void/normal tag classes, not HTML element semantics (html-validate remains the authority for those). The report pages use their own constructors and are checked well-formed (no raw node) before they are written.
chrome_tree_wellFormed + render_wf_mod theoremsWell-formed markup (kernel renderer)
kernelThe kernel renderer factors through a typed HTML tree; render_wf proves every raw-free tree renders to properly nested tags whose text and attribute values cannot open or close an element, with void elements never given children — balanced markup is a grammar theorem, not a validator's opinion
render_wf grammar theorem
What is checked at build time
Gates run under --audit and check the candidate artifact and the data the site declared. The HTML gates read the emitted files through a parser. A site can add its own. If any gate fails, no files are copied to the output directory.
External link liveness
artifactEvery external URL the site embeds answers a liveness check (same-origin redirects followed)
gate.externalHTML validity (every emitted page)
artifacthtml-validate (pinned) runs over every emitted HTML file, including the verification pages
gate.html-validateParser facts available
artifactA browser-grade parser (parse5, pinned) produced facts for every emitted HTML file; the gates below read them
gate.html-factsCSP ↔ content consistency
artifactEvery HTML-declared resource use on every page is allowed by the typed production CSP; inline script/style, event handlers and unmodelled elements fail
gate.cspInternal reference closure
artifactEvery internal href/src/srcset/poster/action on every page resolves (browser + host semantics) to an emitted file or a declared endpoint, and every fragment to an id the target declares
gate.linksSEO coherence
artifactEvery route page's canonical link, hreflang alternates, og:url and og:locale equal the values its route predicts
gate.seoMetadata completeness
artifactEvery route page declares its document language, one title, one non-empty description, og:title/description/type, and og:locale:alternate for the other languages
gate.metadataNo CJK leaks on English pages
artifactJapanese text on EN pages only where deliberately allowed (visible text and human-facing attributes)
gate.i18n-cjkCSS contract
artifactEvery class on every page is styled or a declared semantic hook
gate.css-contractNo double-escaped entities
artifactNo double escaping in any page's visible text: an entity that was escaped twice shows up as literal entity text
gate.escapingClick-path reachability
artifactEvery page is reachable from a declared root (pages declared redirect-reached and the not-found pages aside)
gate.reachabilityStylesheet asset reality
artifactEvery url(/assets/…) reference in the declared stylesheets exists in the candidate artifact
gate.assetsNews invariants
artifactArticles sorted newest-first; none future-dated vs the wall clock
gate.newsFeed entries are emitted routes
artifactEvery Atom entry route is a route this build emitted
gate.feedsPermalink permanence
artifactEvery previously published URL obligation is live or typed-redirected; `_redirects` is rendered from the same map
gate.permalinks