NoGoals verification report

A static site generator with proved route invariants and fail-closed build checks

13
Content slugs
26
Content routes
4
Report routes
49
Assets
57
Guarantees (all evidence)

The summary and the full report are reserved routes derived by the same path function as every other page, but their content is the post-gate evidence, so they are outside the proofs about the site's page set. The build keeps their paths from colliding with any other file and, under an audit profile, runs the same gates over them in a finalization pass.

✓ ALL CHECKS PASSED
33
Enforced by types and theorems
24
Runtime checks passed
0
Failed
0
Not run

Type Safety

ENFORCED (NoGoals.DSL.L (record with both ja and en fields))
Bilingual completeness for editorial content [NoGoals.DSL.L]
Every L leaf carries both JA and EN — enforced structurally by the L type; a page cannot ship with one language missing
ENFORCED (NoGoals.Verify.IsoDate.lit (elaboration-checked literal))
Dates are valid ISO calendar dates [NoGoals.Verify.IsoDate.lit]
Every article and page date is an `IsoDate`; the `IsoDate.lit` literal is parsed during elaboration, so a malformed date is a compile error
ENFORCED (Segment / Slug / AssetPath types + Route.outputPath)
Output paths cannot escape the root [NoGoals.Route.outputPath]
Every 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
ENFORCED (Fin nP + rendered_link_resolves)
Route closure: every internal href resolves to an emitted page (IR vocabulary)kernel renderer only [NoGoals.rendered_link_resolves]
In 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.
ENFORCED (AnchorIn subtype + rendered_fragment_declared)
Fragment closure: a link's #anchor is an id the target declares (IR vocabulary)kernel renderer only [NoGoals.rendered_fragment_declared]
A 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
ENFORCED (AssetId type witness)
No missing assets (IR vocabulary)kernel renderer only [NoGoals.AssetId]
AssetId carries proof that asset exists with correct kind
ENFORCED (AssetId n k A)
No asset type confusion (IR vocabulary)kernel renderer only [NoGoals.AssetId]
Cannot use JS file as image - kind is part of type
ENFORCED (NonEmptyStr type)
No empty alt text (IR vocabulary)kernel renderer only [NoGoals.NonEmptyStr]
Alt attributes require NonEmptyStr
ENFORCED (NonEmptyStr type)
No empty link labels (IR vocabulary)kernel renderer only [NoGoals.NonEmptyStr]
Link text requires NonEmptyStr
ENFORCED (Url.Safe ADT)
Safe external URLs only (IR vocabulary)kernel renderer only [NoGoals.Url.Safe]
External URLs must be https/http/data URIs
ENFORCED (NoGoals.Bridge.RefineOk (native_decide))
NoGoals.refine accepts this site [NoGoals.Bridge.RefineOk]
NoGoals.refine produces a verified SiteV 26 49 value at compile time
ENFORCED (PageId.all_complete + Data.pages := PageId.all.map staticPage)
Every static page is registered [KatayamaWebsite.PageId.all_complete]
Static pages are a closed enumeration (PageId); PageId.all is complete and Data.pages is built from it, so a link to an unregistered page is unrepresentable
ENFORCED (Data.PersonId.person (total by match))
Every person reference names a real person [KatayamaWebsite.Data.PersonId.person]
People are a closed enumeration generated from the canonical data (PersonId); the lookup is total, so a leadership card cannot name someone who does not exist

Theorems

ENFORCED (NoGoals.SiteV.roundTrip₁ (via NoGoals.Bridge.siteV))
Slug/(slug,lang) round-trip [NoGoals.Bridge.roundTrip₁]
For all i, indexOf (slug i) (lang i) = some i — on this site's SiteV 26 49
ENFORCED (NoGoals.SiteV.i18nComplete (via NoGoals.Bridge.siteV))
i18n completeness [NoGoals.Bridge.i18nComplete]
Every page slug exists in both languages — NoGoals theorem on this site's SiteV
ENFORCED (NoGoals.unique_paths (via NoGoals.Bridge.siteV))
No file collisions in build plan [NoGoals.Bridge.plan_unique_paths]
All 75 page and asset files in the NoGoals build plan have unique paths
ENFORCED (NoGoals.SiteV.disjointAssets (via NoGoals.Bridge.siteV))
Pages/assets path disjoint [NoGoals.Bridge.disjointAssets]
No route path collides with any of the 49 asset paths
ENFORCED (NoGoals.coverage (via NoGoals.Bridge.siteV))
Build covers all pages [NoGoals.Bridge.plan_covers_pages]
Every route in the verified site has a corresponding file in the build plan
ENFORCED (NoGoals.Bridge.AssetsUnique)
Asset path injectivity [NoGoals.Bridge.AssetsUnique]
All 49 asset paths are distinct (native_decide on the concrete list)
ENFORCED (sitemap_covers + sitemap_entry_count theorems)
Sitemap covers every route [NoGoals.Meta.sitemap_covers]
Every 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
ENFORCED (stage_headers_superset_prod theorem)
Stage headers ⊇ prod headers [NoGoals.Meta.stage_headers_superset_prod]
Staging security headers never weaken prod; stage only adds directives
ENFORCED (prod_robots_sitemap_consistent theorem)
Robots/sitemap URL consistent [NoGoals.Meta.prod_robots_sitemap_consistent]
Prod robots.txt Sitemap URL matches sitemap base URL — no drift
ENFORCED (hreflang_symmetric + alternates_complete theorems)
Canonical, hreflang and sitemap from one route set [NoGoals.Meta.hreflang_symmetric]
The <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)
ENFORCED (switcher_symmetric theorem)
Language switcher symmetric [NoGoals.Meta.switcher_symmetric]
The switcher offers a language iff the twin page's switcher offers the way back — a page you can switch into can always switch out
ENFORCED (NoGoals.refine → SiteV proof fields, this build)
Structural invariants proven for this build [NoGoals.refine]
NoGoals.refine constructed a verified SiteV for all 26 (page × language) routes of this site's page SKELETON (slugs, languages, output paths — bodies are the trusted shell's): (slug,lang) round-trip, i18n completeness across both languages, unique output paths
ENFORCED (NoGoals.SiteV.uniquePages (via NoGoals.Bridge.siteV))
No duplicate page paths [NoGoals.Bridge.uniquePages]
All 26 route paths in the verified site are distinct
ENFORCED (VerifyConfig.no_forbidden_strings (native_decide))
No forbidden strings in rendered output [KatayamaWebsite.VerifyConfig.no_forbidden_strings]
None of 8 retired brand/pseudonym/backstage patterns appear in any of the 26 rendered page bodies
ENFORCED (VerifyConfig.all_division_refs_valid (native_decide))
All division references valid [KatayamaWebsite.VerifyConfig.all_division_refs_valid]
Every divisionId on a news article or person record (8 refs) names one of the 5 declared divisions

Structure

PASSED
Every page has a body
All 26 (page × language) body slots carry visible content — no blank page can ship
PASSED
Page trees well-formed (modulo raw slots) [NoGoals.Render.Tree.render_wf_mod]
All 26 page trees are well-formed under the fragment grammar with void/normal tag classes; 2 raw slot(s) on 2 page(s) (careers (ja), careers (en)) are outside the grammar and covered by html-validate. render_wf_mod is conditional on those slots.

Security

ENFORCED (htmlEscape_no_specials theorem)
Escaping correct where applied (typed tree) [NoGoals.htmlEscape_no_specials]
Text 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.
ENFORCED (typed HeadersPolicy)
CSP forbids inline styles and scripts (typed policy) [NoGoals.Meta.prodHeaders]
The 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.
ENFORCED (xmlEscape_no_specials theorem)
XML injection impossible (sitemap/feeds) [NoGoals.Meta.xmlEscape_no_specials]
xmlEscape is the charwise htmlEscape; xmlEscape_no_specials proves sitemap and feed text/attribute content contains no < > " ' for ANY input
ENFORCED (chrome_tree_wellFormed + render_wf_mod theorems)
Chrome structure well-formed (slots trusted) [NoGoals.Render.Tree.render_wf_mod]
Every 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.
ENFORCED (render_wf grammar theorem)
Well-formed markup (kernel renderer)kernel renderer only [NoGoals.Render.Tree.render_wf]
The 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

Runtime

PASSED
Navigation links resolve
Every page link in the main and footer navigation names a page of this site
PASSED
Unique page slugs
All 13 page slugs are distinct
PASSED
Unique division IDs
All 5 division IDs are distinct
PASSED
Unique person IDs
All 9 person IDs are distinct
PASSED
People reference existing divisions
Every division reference on a person record (4) names a declared division
PASSED
External link liveness
All 1 external URLs in the emitted HTML answered the liveness check
PASSED
HTML validity (every emitted page)
html-validate: 28 pages, 0 errors (verification pages checked in the finalization pass)
PASSED
Parser facts available
parse5 produced facts for all 28 pages (verification pages: finalization pass)
PASSED
CSP ↔ content consistency
28 pages: every HTML-declared resource use allowed by the typed production CSP; no inline script/style/handlers
PASSED
Internal reference closure
Every internal reference on 28 pages resolves to an emitted file or a declared endpoint ([/api/careers]); every fragment to a declared id
PASSED
SEO coherence
All 26 route pages carry the canonical, hreflang (+x-default), og:url and og:locale their route predicts
PASSED
Metadata completeness
All 26 route pages declare their language, one title, one description and the OpenGraph basics
PASSED
No CJK leaks on English pages
No undeclared Japanese text on 13 EN pages (2 declared allowances beyond the chrome's own labels)
PASSED
CSS contract
Every class on 28 pages is styled or one of 1 declared semantic hooks
PASSED
No double-escaped entities
No double-escaped entities in the visible text of 28 pages
PASSED
Click-path reachability
All 28 pages reachable from a declared root (1 roots; 2 pages declared redirect-reached and 2 not-found pages exempt)
PASSED
Stylesheet asset reality
All 14 url(/assets/…) references in 2 stylesheets exist in the candidate
PASSED
News invariants
5 articles sorted newest-first, none future-dated as of 2026-10-08
PASSED
Feed entries are emitted routes
All 10 Atom entry routes are routes this build emitted
PASSED
Permalink permanence
All 93 previously published URL obligations live or typed-redirected; 4 redirect(s) rendered into _redirects
PASSED
Prose provenance
All 42 attested news and people strings carry an attestation at least as new as their last edit (16 awaiting human sign-off)
PASSED
Dossier reviews fresh
All 9 dossier review attestations are within 365 days as of 2026-10-08 (wall clock)

Control Tests

PASSED
Positive Control
All checks passed as expected
PASSED
Negative Control
Detected 3 expected violations
✓ CONTROL TESTS PASSED