fix(selfhost): recognize repoDocGeneration in the config-lint allowlist - #3364
Conversation
repoDocGeneration is a real, actively-parsed top-level manifest field (#3002), but was missing from config-lint.ts's TOP_LEVEL_FIELDS allowlist, so an operator using it got a false "unknown top-level field" warning even though the field works correctly. Also corrects the self-hosting-configuration docs page, which claimed blockedPaths is enforced via a manifest_blocked_path finding gated by gate.manifestPolicy: block — that finding code does not exist; path holds are enforced only via settings.hardGuardrailGlobs. Adds the missing repoDocGeneration doc section alongside the existing contentLane one.
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
gittensory-ui | f66bd18 | Commit Preview URL Branch Preview URL |
Jul 05 2026, 05:03 AM |
|
Warning 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 ⏸️ Gittensory review result - manual review recommendedReview updated: 2026-07-05 05:08:22 UTC
⏸️ Suggested Action - Manual Review
Review summary Nits — 3 non-blocking
Review context
Contributor next steps
Signal definitions
🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by Gittensory, a quiet PR intelligence layer for OSS maintainers.
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3364 +/- ##
=======================================
Coverage 93.88% 93.88%
=======================================
Files 281 281
Lines 30566 30566
Branches 11134 11134
=======================================
Hits 28698 28698
Misses 1211 1211
Partials 657 657
🚀 New features to boost your workflow:
|
…field (#5307) #5030 (the gittensor subnet plugin) added a real, actively-parsed experimental: top-level manifest block, but never updated this linter's TOP_LEVEL_FIELDS allowlist -- the same class of bug already fixed once in this file for repoDocGeneration (#3364). All 3 production self-host repo configs declare experimental: gittensor: true today; running the config-lint CLI against any of them produced a false "unknown top-level field" warning. Refs #5281
Summary
src/selfhost/config-lint.ts'sTOP_LEVEL_FIELDSallowlist (used to tell a self-host operator which.gittensory.ymltop-level keys are recognized vs. unknown) listsgate,settings,review,features,contentLane— but notrepoDocGeneration, even though it's a fully real, documented, actively-parsed top-level field (feat(config): add .gittensory.yml surface to enable/scope repo-doc generation #3002). An operator who setsrepoDocGeneration:got a false "Manifest contains unknown top-level field: repoDocGeneration" warning even though the field works correctly. Fix: add it to the allowlist.blockedPathsas enforced via amanifest_blocked_pathfinding gated bygate.manifestPolicy: block— that finding code does not exist anywhere in the codebase (confirmed by grep), andrules/advisory.ts's own comment states path holds are "intentionally separate and configured via hardGuardrailGlobs." Corrected that paragraph, and added the missingrepoDocGenerationdoc section (mirroring the existingcontentLaneone) since it wasn't documented on this page at all.Scope
type(scope): short summaryConventional Commit format, for examplefix(api): restore profile access checks.CONTRIBUTING.mdand does not reintroduce GitHub Pages, VitePress,site/, orCNAME.Validation
git diff --checknpm run typecheck(backend, clean)npx tsc --noEmitinapps/gittensory-ui(clean)npx eslint src/routes/docs.self-hosting-configuration.tsxinapps/gittensory-ui(only the pre-existing, repo-widereact-refresh/only-export-componentswarning shared by every doc route file; 0 errors)npx prettier --writeon the edited docs filenpx vitest run test/unit/selfhost-config-lint.test.ts(16/16 passing, including 2 new/updated cases)npm run test:workers/npm run build:mcp/npm run test:mcp-pack/npm run ui:openapi:check/npm run ui:build— not run individually this PR; no worker/MCP/OpenAPI/schema surface touched. Ran the fullnpm run test:cigate once already this session on the sibling PR fix(settings): authorize circuit-breaker hold labels via merge/close autonomy #3363 from the same branch point with no relevant failures; this PR's diff is strictly narrower (nosrc/settingsor executor changes).repoDocGeneration:alone, and extended the "recognizes every field" exhaustive test to include it.Safety
UI Evidencesection below. — Text-only docs copy edit on an existing page (no layout/component change), so no screenshot table; happy to add one if requested.Notes