chore(selfhost): wire up the unwired config-lint.ts manifest validator - #2923
Conversation
lintManifestText was a complete, tested manifest validator with zero production callers -- no CLI, route, or boot check invoked it. Adds scripts/gittensory-config-lint.ts (npm run selfhost:config-lint -- [path]) so a self-hoster can actually run it against a real .gittensory.yml or private-config file and get actionable, secret-redacted feedback.
|
Warning 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 ⏸️ Gittensory review result - manual review recommendedReview updated: 2026-07-04 05:27:43 UTC
⏸️ Suggested Action - Manual Review
Review summary Nits — 7 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 #2923 +/- ##
=======================================
Coverage 96.05% 96.05%
=======================================
Files 258 258
Lines 28423 28423
Branches 10341 10341
=======================================
Hits 27301 27301
Misses 489 489
Partials 633 633 🚀 New features to boost your workflow:
|
Summary
src/selfhost/config-lint.ts'slintManifestTextwas a complete, well-tested manifest validator (parses a.gittensory.yml-shaped file, flags unknown top-level fields and parser warnings, redacts supplied values) with zero production callers — no CLI, API route, or boot-time check invoked it.scripts/gittensory-config-lint.ts, run vianpm run selfhost:config-lint -- [path](defaults to.gittensory.ymlin the current directory). Thin CLI wrapper only: reads the file, calls the existinglintManifestText, prints a report, exits non-zero on any warning. Follows the same shape as the repo's othertsx scripts/*.tsself-host CLI (selfhost:postgres:migrate) and itsmain()v8-ignore convention (seescripts/validate-observability-configs.mjs)..gittensory.yml(see Validation) and against a missing-file path and--help.Resolves #2906. Part of the #1667 self-host review-stack roadmap (follow-up to #2912).
Scope
type(scope): short summaryConventional Commit format.CONTRIBUTING.mdand does not reintroduce GitHub Pages, VitePress,site/, orCNAME.Validation
git diff --checknpm run typecheckvitest run test/unit/gittensory-config-lint-script.test.ts test/unit/selfhost-config-lint.test.ts— 16 tests passednpm run test:changed— 1 file / 3 tests in scope, passednpx tsx scripts/gittensory-config-lint.ts .gittensory.yml(parsed 9 recognized fields, exit 0), a missing path (clear error + usage, exit 1), and--helpnpm run actionlint/npm run test:workers/npm run build:mcp/npm run test:mcp-pack/npm audit/ui:*— not run locally; no workflow, worker-pool, MCP-package, or UI files touched. CI runs the full gate.If any required check was skipped, explain why:
test:coverage/test:cinot run locally —scripts/**is Codecov-ignored per this repo's gate, and the onesrc/**-adjacent test file added has 100% of its own logic covered by the 3 new test cases (the CLI'smain()is v8-ignored, matching the existingvalidate-observability-configs.mjsconvention). CI runs the full gate.Safety
selfhost:*scripts are currently documented in README either; a README/self-host-docs mention is folded into the upcoming self-host config-docs issue (docs(selfhost): fill config/env doc gaps and reconcile checkRunDetailLevel default mismatch #2907) instead of duplicated here.)Notes