docs(self-hosting): document backpressure, orb, and config-as-code gaps - #3297
Conversation
Fills real self-hosting documentation gaps found by audit: undocumented env vars (maintenance/installation backpressure, foreground liveness, OTEL, Orb collector overrides, per-provider base URLs, Discord/Slack PR notifications, Sentry server name, PGVECTOR_ENABLED, PORT) and .gittensory.yml blocks with zero website coverage (gate.checkMode, the CLA/expectedCiContexts/rebase-window gate fields, the anti-abuse settings cluster, contentLane, closeOwnerAuthors/blockedPaths, and the features: 3-state fallback). Adds explicit config precedence and a link to .gittensory.yml.example on the configuration page, cross-links it with the tuning page in both directions, and names SELFHOST_DEPLOYMENT_MODE explicitly for the instance-wide write switches it actually controls.
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
gittensory-ui | 87d12e2 | Commit Preview URL Branch Preview URL |
Jul 05 2026, 01:06 AM |
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
|
Warning 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 ⏸️ Gittensory review result - manual review recommendedReview updated: 2026-07-05 01:09:45 UTC
⏸️ Suggested Action - Manual Review
Review summary Nits — 6 non-blocking
Concerns raised — review before merging
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.
|
Summary
docs.self-hosting-configuration.tsxanddocs.tuning.tsx, plus the pages those gaps point at (docs.self-hosting-github-app.tsx,docs.self-hosting-ai-providers.tsx,docs.self-hosting-rag.tsx,docs.self-hosting-operations.tsx).FOREGROUND_LIVENESS_*,OTEL_*,MIGRATIONS_DIR/REVIEW_AUDIT_DIR/CODEX_HOME,PORT,ORB_ANONYMIZE/ORB_COLLECTOR_URL/ORB_COLLECTOR_TOKEN/ORB_APP_ID, per-provider AI base-URL siblings (OPENAI_AI_*,OLLAMA_AI_*,ANTHROPIC_AI_BASE_URL,AI_EMBED_API_KEY),PGVECTOR_ENABLED,SENTRY_SERVER_NAME, and the per-PRDISCORD_WEBHOOK_URL/DISCORD_REPO_WEBHOOKS/SLACK_WEBHOOK_URLnotification webhooks (explicitly distinguished from the existing Alertmanager infra-alert Discord/Slack wiring)..gittensory.ymlblocks that had zero website coverage anywhere:gate.checkMode, thegate.clasub-object,gate.expectedCiContexts,gate.premergeContentRecheck,gate.requireFreshRebaseWindow,gate.dryRun,gate.firstTimeContributorGrace,settings.closeOwnerAuthors, top-levelblockedPaths, the ~20-field anti-abusesettingscluster, thefeatures:3-state (true/false/omitted) fallback semantics, and the entirecontentLane:block..gittensory.yml> per-repo DB settings > built-in defaults, with thegate:alias overridingsettings:for the same fields) and a link to.gittensory.yml.exampleas the authoritative reference, plus two-way cross-links betweendocs.self-hosting-configuration.tsxanddocs.tuning.tsx(previously zero links existed between them despitedocs.tuning.tsxholding the bestgate:/settings:field explanations).SELFHOST_DEPLOYMENT_MODEexplicitly (verified live atsrc/github/client.ts:613-631,src/env.d.ts:148)..env.examplecomment) — for exampleORB_APP_IDhad zero prior mention anywhere; readingsrc/selfhost/orb-collector.ts:59shows it overrides the seed used to derive a brokered instance's stable anonymousinstance_id, which is what's documented here.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 actionlint— not applicable, no workflow changes.npm run typecheck— n/a tosrc/**(no backend changes); rannpm run ui:typecheckinstead (clean).npm run test:coverage— not applicable: docs-only change underapps/gittensory-ui/**, which Codecov does not measure (nosrc/**touched).npm run test:workers— not applicable, no backend/worker code changed.npm run build:mcp/npm run test:mcp-pack— not applicable, no MCP package changes.npm run ui:openapi:check— not applicable, no API/schema changes.npm run ui:lint(clean; rannpm --workspace @jsonbored/gittensory-ui run formatfirst to fix prose line-wrap formatting)npm run ui:typechecknpm run ui:buildnpm run docs:drift-checknpm audit --audit-level=moderate— not run standalone; no dependency changes in this PR.src/**behavior changed.If any required check was skipped, explain why:
apps/gittensory-ui/src/routes/docs.*.tsx. Nosrc/**, workflow, MCP, OpenAPI, or dependency files changed, so the Codecov/coverage/worker/MCP/audit checks above don't apply. Ran the docs-specific gate instead:ui:lint,ui:typecheck,ui:build,docs:drift-check, all green.Safety
UI Evidencesection below — see note below.UI Evidence
This is prose-only content added inside existing, already-styled doc pages, using only components already in use throughout those same pages (
Callout,CodeBlock,FeatureRow,Link) — no new visual components, layout, or styling. The local preview tooling in this environment resolved to a different worktree's unmodified files, so rather than capture a screenshot of the wrong content, verification was done directly against this branch's production build output:The same check was repeated for all six touched pages, confirming every new string (
ORB_ANONYMIZE,ORB_APP_ID,OLLAMA_AI_BASE_URL,PGVECTOR_ENABLED,SENTRY_SERVER_NAME,DISCORD_REPO_WEBHOOKS, etc.) compiles into the correct route's client bundle.Notes
docs.self-hosting-configuration.tsxanddocs.tuning.tsxper the audit, plus the specific named cross-links intodocs.self-hosting-github-app.tsx,docs.self-hosting-ai-providers.tsx,docs.self-hosting-rag.tsx, anddocs.self-hosting-operations.tsxwhere the audit called out exact existing sections to extend.OBSERVABILITY_SMOKE_POLL_MS,OBSERVABILITY_SMOKE_TIMEOUT_MS,SELFHOST_SERVICE(smoke-test-script-only),SELFHOST_BUNDLE_ALL, andHOME— none are real operator configuration surfaces.