docs(selfhost): align release upgrade/rollback docs with deploy scripts - #3191
Conversation
…ts (#1829) The Upgrade flow and Rollback sections on the self-host releases doc described a generic docker compose pull/up cycle instead of the two deploy scripts the repo actually ships (deploy-selfhost-image.sh, deploy-selfhost-prebuilt.sh), which add input validation and a health-check wait loop a bare compose invocation skips. Rollback also didn't mention that migrations are forward-only, so reverting the app image after a migration has already run leaves the schema ahead of the code.
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
gittensory-ui | 81ce5ab | Commit Preview URL Branch Preview URL |
Jul 04 2026, 07:26 PM |
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
|
Warning 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 ⏸️ Gittensory review result - manual review recommendedReview updated: 2026-07-04 19:25:12 UTC
⏸️ Suggested Action - Manual Review
Review summary Nits — 5 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
honest slice of that issue, not the full audit — see "What remains" below.
apps/gittensory-ui/src/routes/docs.self-hosting-*.tsxpage (excludingdocs.self-hosting-rees-analyzers.tsx, tracked separately per the issue) againstdocker-compose.yml,.env.example,.env.selfhost.example,Dockerfile,.github/workflows/release-selfhost.yml,.github/workflows/selfhost.yml,scripts/deploy-selfhost-image.sh, andscripts/deploy-selfhost-prebuilt.sh. For every env var,confirmed its stated default/behavior against
.env.example's actual default and the exactprocess.env.NAMEread site insrc/. For every compose service/profile mentioned, confirmed itstill exists with the same name/behavior. For every release/deploy claim, confirmed it matches the
actual workflow steps and the two deploy scripts.
already has
scripts/check-docs-drift.mjsfrom docs(gittensory-ui): fix stale website docs and add a CI docs-drift check #3059/feat(ci): add a docs-drift check for GITTENSORY_REVIEW_* flags, @gittensory commands, and gate-mode dimensions #3047 catching flag/command/gate-field drift,and it's working). One confirmed, real gap found and fixed in
docs.self-hosting-releases.tsx.Docs accuracy checklist (drift found and fixed)
docs.self-hosting-releases.tsx— "Upgrade flow"docker compose pull gittensory && docker compose up -d gittensory, which returns as soon as the container startsscripts/deploy-selfhost-image.sh(pull +--no-depsrestart + health-check wait loop + input validation) andscripts/deploy-selfhost-prebuilt.sh(build-from-checkout equivalent), matching whatdocs.self-hosting-quickstart.tsxalready recommends for first boot; kept the raw compose command as a documented-but-inferior fallbackdocs.self-hosting-releases.tsx— "Rollback"scripts/implements one) and that rollback today means re-runningdeploy-selfhost-image.sh/deploy-selfhost-prebuilt.shpointed at an older tag/checkout; added an explicit callout that migrations are forward-only (confirmed: no down-migration convention inscripts/check-migrations.mjsormigrations/), so a rollback after a forward migration leaves the schema ahead of the reverted code — a real, previously-undocumented riskWhat remains for #1829
This PR only had one confirmed drift to fix — the other 11 self-hosting doc pages
(
ai-providers,backup-scaling,configuration,github-app,operations,quickstart,rag,release-checklist,security,troubleshooting,maintainer-self-hosting) checked out accurateagainst current
docker-compose.ymlprofiles/services,.env.exampledefaults, and the generatedSELFHOST_ENV_REFERENCE_MARKDOWNtable (regenerated locally vianode scripts/gen-selfhost-env-reference.mjs; zero diff, so it's not stale either). I did not findadditional drift to fix in this pass. If the issue intends a broader net (e.g. extending
check-docs-drift.mjs's automated coverage to catch this class of prose-vs-script drift goingforward, not just flag/command/gate-field drift), that is out of scope for this PR and would be a
good separate follow-up.
Scope
type(scope): short summaryConventional Commit format.CONTRIBUTING.md; nosite//CNAME/VitePress/Pages changes.Validation
git diff --checknpm run actionlint(N/A — no workflow files changed)npm run typecheck— passes (ran vianpm run ui:typecheck, the tsc project that covers this file; also confirmed the root install is current vianpm ci)npm run test:coverage(N/A — nosrc/**lines changed; docs-only change underapps/gittensory-ui/**, which is not Codecov-scored)npm run test:workers(N/A — no worker code changed)npm run build:mcp(N/A — no MCP code changed)npm run test:mcp-pack(N/A — no MCP code changed)npm run ui:openapi:check(N/A — no API/schema changes)npm run ui:lint— 0 errors (87 pre-existingreact-refresh/only-export-componentswarnings unrelated to this file, same baseline asmain)npm run ui:typecheck— passesnpm run ui:build— succeedsnpm run docs:drift-check— passes (15 feature flags, 19 commands, 11 gate-mode fields all documented; this page isn't covered by that script's specific extractors, but ran it as a sanity check since it's the repo's docs-drift regression guard)npm audit --audit-level=moderate(not re-run standalone;npm ciduring this session reported "found 0 vulnerabilities")If any required check was skipped, explain why:
.tsxroute file), so the backend-oriented checks(coverage/workers/mcp/openapi/actionlint) don't apply — matches the precedent in prior docs-only
PRs on this repo (e.g. docs(selfhost): clarify checkRunMode duplicates the required gate check #2742, docs(gittensory-ui): fix stale website docs and add a CI docs-drift check #3059).
Safety
ghcr.io/jsonbored/gittensory-selfhost:orb-v0.1.0, etc.) or references to script/file paths — no new example secrets were introduced.UI Evidencesection... (N/A — no visual/layout/component change, text-only edit to existing prose sections; see UI Evidence section below)CHANGELOG.mduntouched, per house rule).UI Evidence
Not applicable — this changes prose text inside two existing
<h2>sections (Upgrade flow,Rollback) on an existing docs page. No layout, component, or visual change. Confirmed via
npm run ui:buildthat the route still builds; the rendered page structure (headings, callouts,code blocks) is unchanged, only the text and one new
Calloutblock inside the existing contentflow.
Notes
session against the production self-host deployment, not re-derived here): the live deployment
runs
deploy-selfhost-prebuilt.shfrom a git checkout, and there is genuinely no rollback scriptin the repo today — this PR documents that gap honestly rather than implying a rollback command
exists.