Skip to content

Site review

route audit, ownership of site facts, validation performed

Rendered from docs/SITE_REVIEW.md — the same Markdown GitHub shows.

Produced during the page-by-page review of the public site on 2026-09-04. It records what every route is for, where its content comes from, what was changed and why, and how the result was validated. Counts here are written by hand and will rot; the commands to recompute them are given.

Route audit

routepurposeaudiencesourceprimary actionaction taken
/recognise the problem, see the control model, install, know what is guaranteedcurious developer, leadREADME sections, marketing.toml, generated dataInstall MajordomusIMPROVE: pain-first hero; failure-mode flow with "who checks?"; boundary statement (refused acceptance, not runtime prevention); before/with; one primary CTA; profiles, principles, nine-responsibility cards and site pipeline moved to their pages
/why/, /why/<slug>/the five moments a team recognises, each explained and boundedcurious developersite/content-src/why/read the case, then the commandsKEEP (added earlier tonight); each links responsibilities, commands, claims
/getting-started/smallest truthful path to a supervised repositorydeveloperproject.json, policy.jsonrun the commandsKEEP
/supervises/, /supervises/<slug>/the nine responsibilities and the ten principlesevaluatorREADME rows, claims by keywordread a responsibilityIMPROVE: principles moved here from the homepage
/commands/, /commands/<name>/one page per command from the CLI referenceexisting userdocs/CLI.md sectionsread the commandKEEP; command pages list the claims they implement
/profiles/, /profiles/<slug>/every field of every profileevaluator, existing userprofiles.jsonpick a profileKEEP; advisory claims linked
/policy/the canonical policy as structure and as textexisting userpolicy.jsonedit the policyKEEP; claims defined by the policy linked
/guarantees/the full claims matrixskeptical engineercapabilities.jsonverify a rowKEEP; every row links to its page
/guarantees/<status>/one status at a timeskeptical engineercapabilities.jsonpick a claimKEEP
/guarantees/<id>/detailed claim: meaning, mechanism, how to see it, limits, evidence, provenance, test command, where usedskeptical engineerdocs/claims/<id>.md, capabilities.jsonrun the testIMPROVE: detail documents added for all claims
/limitations/what v0.1 does not doevaluatorREADME "Limitations"read the roadmapGENERATE (new)
/roadmap/what comes next, gatedevaluatorREADME "Roadmap"read planned claimsGENERATE (new)
/architecture/how the site is derivedmaintainercontent-src/architecture.md, source.jsonread the architecture docKEEP
/docs/, /docs/<doc>/the long-form documents as GitHub shows themcontributor, evaluatordocs/*.mdreadKEEP; each lists the claims it defines
/concepts/pointer to the vocabulary documentstubREMOVE (nav points at /docs/concepts/)
/render-test/rendering reference for validationmaintainercontent-src/render-test.mdKEEP, noindex
404.htmlnot foundanyonetemplateback to startKEEP

Recompute: find site/public -name index.html | wc -l after scripts/site-build.

Enforcement-boundary statements

Every public sentence using prevent / block / enforce / refuse / detect / verify was listed (grep over marketing.toml, content-src, docs/claims, templates) and classified. None claims runtime prevention. The contract stated on the homepage and on the finish-related claim pages is: Majordomus declares scope up front, detects a file outside it at check and finish, and refuses to accept the work as completed; hooks that run doctor and finish --check block a commit or push only where the repository has wired them, which doctor itself verifies. Profile-related claims say in their own text that they are advisory.

Canonical ownership of site facts

factcanonical homereaches the site through
version, commands, exit codesbin/majordomusproject.json, commands.json
tagline, problem evidence, what it does, what it is not, limitations, roadmapREADME.md by headingreadme.json
profilesshare/skeleton/profiles/*.yamlprofiles.json
policyshare/skeleton/policy.yamlpolicy.json
the ten principlesshare/standard/majordomus/rules/principle-*.mdlifecycle.json
outcomeslib/finish.shlifecycle.json
claims and their statusdocs/CLAIMS.yamlcapabilities.json, docs/SITE_CLAIMS.md
claim detaildocs/claims/<id>.mdclaim page bodies
long-form documentsdocs/*.md via docs/README.mddocs.json, content/docs/
case studies and their hookssite/content-src/why/*.mdthe why section
navigationsite/data/nav.tomlnavbar
marketing copysite/data/marketing.tomlhomepage leads

Nothing on the site is parsed from CLAUDE.md or AGENTS.md; those are themselves projections of the seeded workflows under share/skeleton/ai/repo/workflows/.

Validation performed

bash test/run.sh                    every case in test/cases, each in a disposable repository
scripts/generate-site-data --check  derived data matches canonical inputs
scripts/site-build                  Zola + Tailwind + vendored JS
scripts/site-check                  sync, schema, promo budget, routes, prefix, links, assets,
                                    dark CSS scoping, offline, JS hooks, Mermaid runtime,
                                    mobile lint, private paths, secrets, docs coverage, tiles,
                                    navigation, claim links, claim count
scripts/site-probe                  every route × {320, 390, 1280} px in headless Chrome:
                                    scrollWidth == clientWidth; Mermaid rendered; mobile menu,
                                    dropdown and theme toggle exercised

Before / after

Before: fourteen homepage sections; nine equal-weight navigation links; the README's problem prose repeated under a hook that already said it; claims mentioned as plain text; no pages for limitations or roadmap; a /concepts/ stub that only pointed elsewhere; responsiveness verified by hand.

After: eight homepage sections in funnel order with one primary action; five navigation intents with dropdowns; a failure-mode flow and an explicit statement of the enforcement boundary; every claim mention a link to a detailed page; limitations and roadmap generated from the README; the stub removed; a browser probe in CI.

Remaining limitations

  • Accessibility was reviewed by reading the markup and exercising controls in headless Chrome; no screen-reader or automated a11y scanner run.
  • Mermaid is loaded on pages that carry diagrams; the bundle is large and is loaded only there.
  • The responsibility→claim cross-links use a keyword map in the generator; a new claim whose text uses none of the keywords will not appear on a responsibility page until the map is extended.