Standard: Standards Compliance Audit

How the mesh checks that its own standards are actually being followed — the enforcement layer. Each standard says (in its own ## Verify section) how to tell whether a repo follows it; this audit is the single on-request pass that runs every one of those checks at once and reports the result.

Canonical, project-agnostic standard (the version other repos copy). It does not introduce a new flow — it reuses the read-only, on-request reads defined in cross-project-sync.md, and a run can end in a process report like any other procedure.

Establishment vs. enforcement

Two different questions, both required for a standard to be real:

  • Established — the rule is written once, canonically, in hub/standards/, and is reflected wherever it's used (the templates, the skeleton, the runbooks, the CLAUDE.mds). A standard that contradicts the artifacts that operationalize it isn't established — it's drift, and drift is exactly why a project "forgets" a rule (it follows the stale artifact, not the spec).
  • Enforced — there's a concrete check that catches a violation, run deliberately, reported honestly. A rule with no check is a suggestion.

This audit is the enforcement instrument. Keeping the standards internally consistent (establishment) is a precondition for it — you can't check against a spec that disagrees with itself.

Relationship to the other audits

  • Onboarding completeness audit (the 8-row table) is the join-time gate: is this repo in the mesh yet?
  • docs-site compliance checklist is the deep check for the one docs-site standard.
  • This audit is the recurring, whole-set check: re-runnable anytime against the hub or any node, covering every standard via its ## Verify section. Onboarding is "did it join"; this is "is it still following everything."

The audit matrix

Run every row; report each done / partial / missing with the specific gap named. The detailed pass/fail lives in each standard's ## Verify section — this table is the index that drives the pass.

StandardEstablished when…Enforced by (the check)
git-workflowfull git-flow stated identically in spec, runbooks, CLAUDE template, ai-contextgit-workflow ## Verifymain is --no-ff tagged releases only; master renamed; history intact
versioningSemVer rules match git-workflow's PATCH/MINOR/MAJOR + VERSION handlingversioning ## VerifyVERSION is one SemVer line = newest main tag; nothing hardcoded
notes-systemskeleton + this repo's notes/ match the documented treenotes-system ## Verify — core tree present; status.md current; inline changelog
ai-contextthe six required CLAUDE.md pieces match the templateai-context ## Verify — root CLAUDE.md has all six; workflow matches git-flow
cross-project-syncthe inbound/outbound flows match the runbooks, incl. the express-authorization ledger readcross-project-sync anti-recursion checklist — pulls on-request, read-only, git-ignored, copy-not-link; the authorizations.yml ledger is read-only and only skips a prompt (never lets the hub act on a node)
process-reportsthe report step is wired into all three runbooks + skeletonprocess-reports ## Verify — a real report per run; reports_through advanced honestly
docs-sitetokens/layout/components match the bundled reference/main.css snapshot; the chrome is the vendored chrome/ bundle (12-shared-chrome.md), copied not reimplementeddocs-site compliance checklist — node appears as a page of the site (shared chrome from the bundle, chrome/VERSION recorded, brand/Home as way-home)
deploymentthe static→Pages / app→Netlify policy + games exception stated in spec and reflected in the registrydeployment ## Verify — each project's live URL matches its kind; games on fairyfox.io/games/; recorded exceptions only
planningplan-before-execute stated in the CLAUDE template's Default Workflow (and each project's CLAUDE.md)planning ## Verify — substantive work has a written plan before execution
supply-chain-hardeningthe six measures stated in spec + reflected in the SECURITY.md/dependabot.yml/branch-sync.yml templates and the runbooks; reconciled with git-workflow (PR-based release)supply-chain-hardening ## Verify — least-priv permissions, SHA-pinned Actions, SECURITY.md, signed releases, main protected (solo config)
dependenciesupgrade-aggressively policy stated in spec + Dependabot template targeting devdependencies ## Verify — Dependabot on/grouped/→dev; a local test gate; no long-stale majors without a reason
legal-docsself-host + accuracy + keep-current + the brand minimum stated in spec and reflected in templates/legal/ and the CLAUDE notes tablelegal-docs ## Verify — Privacy/Terms/Cookies self-hosted, accurate to the code, "Last updated" current, brand minimum met
coinsearning model owned by the shared coins.js; the "subtle, never a gate" usage philosophy + the no-data-loss durability mandate stated in speccoins ## Verify — counter from shared chrome; nothing gated on coins; project coin moments subtle/optional/engagement-tied; coins/reader persistence striven for (no careless data loss) by hub or node; local store disclosed
agent-toolingPowerShell-not-bash + execute-don't-hand-off + .gitattributes hygiene stated in spec, CLAUDE template, and templates/project.gitattributesagent-tooling ## VerifyCLAUDE.md names the tooling rule; root .gitattributes present; no CRLF noise
badgesthe canonical grouped set stated in spec + templates/README-badges.mdbadges ## Verify — README opens with the applicable badge block; docs badge → fairyfox.io/<key>/
testingpure/rendering split + real multi-layer tests + regression-per-fix + gate-before-ship + oracle + preview-before-ship stated in spectesting ## Verify — logic tested headlessly; tests real not token; fixes carry regressions; suite green before release; visual changes previewed
engineering-qualityno-hacks / do-the-long-work / craftsmanship / docs+doc-comments / fearless-refactor / source-fidelity stated in specengineering-quality ## Verify — no hacks shipped; features finished; clean modular code; doc-comments; refactors carry test updates
repo-hygienedoc-link gate + uncommitted-file guard + commit-everything + sweep-on-rename + branch auto-delete-with-protection stated in spec + templates/check-{links,tidy}.mjsrepo-hygiene ## Verify — link gate in the test gate; tidy guard run; no stranded files; docs swept on rename; work branch deletion-protected
docs-lifecyclecurrent-state-vs-dated-history + sweep-current + banner-removed + never-edit-history + single-source stated in specdocs-lifecycle ## Verify — current-state matches reality; dated history unedited; removed features bannered; facts not duplicated
research-captureunderstanding-lands-in-notes-same-session + primary-source + verify-load-bearing + reference-note + fix-model-first stated in specresearch-capture ## Verify — findings have reference notes; load-bearing claims probed; notes teachable + wired in
working-rhythmtask-tracking + background-work/foreground-when-ready + adjacency-is-not-a-brief + ask-first stated in specworking-rhythm ## Verify — multi-step work task-tracked; runs backgrounded + surfaced; features briefed-before-built
self-hosted-assetsself-host-fonts + no-third-party-hot-links + disclose-any-exception stated in spec; the hub's own hot-link exception recordedself-hosted-assets ## Verify — fonts self-hosted; no CDN hot-links; off-origin presentation requests absent (or disclosed)
farm-operating-modelgrow-daily/plant-periodically + first-class + real-content + distinct + simple-but-deep + plan-first + self-contained stated in spec (integrated farm tier)farm-operating-model ## Verify — daily growth deepens items; real craft; distinct not re-skins; polish held; planned + self-contained
maintenance-sweepa documented audit-first whole-repo tidy composing git-workflow/repo-hygiene/versioning/docs-lifecycle/testing stated in specmaintenance-sweep ## Verify — sweep procedure exists; branch state clean; dev contains main + green; current-state docs match the code; sweeps surface (not auto-act)
lifecycle runbooks (setup · onboard · adopt)each runbook's release path matches git-workflowtheir own Verify/checklist rows; no stale release wording

How to run it (on request only)

Gated like every cross-repo read here: an explicit request paired with the intent — "audit the fairyfox standards", "are the standards being followed", "run a compliance pass". A bare "check things" doesn't qualify (see the gate in adopting-updates.md).

  1. Pick the target. The hub itself, or a node read out of the read-only assets/references/<project>/ clone (an ordinary single-branch clone; if a refresh ever fails, just delete and re-clone the disposable mirror). No new sync — reuse the round-up clones.
  2. Run each matrix row against the target, using that standard's ## Verify check.
  3. Report done/partial/missing per row, naming the exact gap for anything not done. A clean-looking repo with one missing row is not compliant — say which.
  4. Report findings, then stop. An audit changes nothing on disk.
  5. Fix only on go-ahead, and only the right side. Hub drift → fix the hub standard (the normal git-flow way, changelog + VERSION in the commit). A node's gap is the node's to close through ordinary adoption — the hub never edits a node to "make it pass" (the anti-recursion rule in cross-project-sync.md). A compliance run can end in a process report.

Verify (is this audit itself sound?)

  • Every standard in hub/standards/ appears as a matrix row (no standard is unchecked).
  • Every atomic standard has a ## Verify section the matrix can point at.
  • A run reported per-row status honestly, named gaps, and changed nothing without a go-ahead.