diff --git a/apps/gittensory-ui/src/routes/docs.self-hosting-configuration.tsx b/apps/gittensory-ui/src/routes/docs.self-hosting-configuration.tsx
index 501d4a1af6..6f8302c993 100644
--- a/apps/gittensory-ui/src/routes/docs.self-hosting-configuration.tsx
+++ b/apps/gittensory-ui/src/routes/docs.self-hosting-configuration.tsx
@@ -480,10 +480,16 @@ features:
regardless of this setting. Default false.
- blockedPaths (top-level, alongside wantedPaths) — globs off-limits
- to contributors. Touching one yields a manifest_blocked_path finding,
- enforceable when gate.manifestPolicy: block is set. Default []{" "}
- (nothing blocked).
+ blockedPaths (top-level, alongside wantedPaths) is{" "}
+ contributor-facing guidance only — it never blocks, holds, or produces a
+ gate finding. A touched path surfaces in contributor onboarding guidance and in
+ gittensory's own risk-reason commentary, but the gate itself never enforces it.{" "}
+ The only mechanism that actually holds a PR for a touched path is{" "}
+ settings.hardGuardrailGlobs (config-as-code only, described above) — a
+ would-merge PR that touches a configured guardrail glob is held for manual review regardless
+ of blockedPaths. A legacy top-level blockedPaths that once acted
+ as an enforcement mechanism is retired; setting it produces a migration warning pointing at{" "}
+ settings.hardGuardrailGlobs. Default [] (nothing listed).
+ Lets gittensory open a pull request that refreshes this repo's own{" "}
+ AGENTS.md/CLAUDE.md (and, additively, a skill file) on a schedule
+ — never a direct commit. Disabled by default: an unconfigured repo, or an explicit{" "}
+ enabled: false, means no repo-doc refresh ever runs for it.
+
SELFHOST_DEPLOYMENT_MODE forces write suppression for the whole instance,
diff --git a/src/selfhost/config-lint.ts b/src/selfhost/config-lint.ts
index 989f824263..2ff0af08ef 100644
--- a/src/selfhost/config-lint.ts
+++ b/src/selfhost/config-lint.ts
@@ -15,6 +15,7 @@ const TOP_LEVEL_FIELDS = [
"review",
"features",
"contentLane",
+ "repoDocGeneration",
] as const;
const TOP_LEVEL_FIELD_SET = new Set