4.2 KiB
Documentation publication after the repository migration
Public docs live in LangBot/docs/; internal notes live in dev-docs/. The
original 27 top-level internal entries (87 files) were moved without loss.
The unsquashed subtree import retains all 888 commits, including 452 signed
objects, from 51dddcb3f891d60bc38645e88b2dbd515344da81. Use
git log 51dddcb3f891d60bc38645e88b2dbd515344da81 -- <original-path> to inspect
the original authors. The import is already merged; do not rewrite that history.
Publication source
langbot-app/langbot-docs is a historical archive, not a writable mirror.
No publication step splits or pushes to that repository. The landing repository
keeps its submodule path docs, but its URL is
https://github.com/langbot-app/LangBot.git, tracking master. Consequently,
the landing build runs the documentation package inside docs/docs/ and copies
docs/docs/dist/public to public/docs. The public URL stays
https://langbot.app/docs/; Vite's base path and canonical site URL are unchanged.
The main-repository synchronization job advances only the landing gitlink to
LangBot master and then synchronizes RockChinQ/LangBot-LandingPage-Vue.
It checks .gitmodules on the exact landing revision it updates, refuses old
repository configurations, and rejects rewinds/divergence. It never force-pushes.
Cutover order
- Merge the paired landing PR: change
.gitmodules, the pinneddocsgitlink, andscripts/build-embedded-docs.mjstogether. Verify its fullpnpm build. - Merge the main-repository publication changes. Keep publishers disabled until
both repositories are ready; the new flag is
DOCS_PUBLISH_ENABLED, notDOCS_MIRROR_ENABLED. The old flag does not enable these jobs. - Stop the old repository's Blog, Wiki and landing workflows and let any active
writers finish. The owner can archive
langbot-app/langbot-docsonce the new publication chain is verified. Never write disabling commits to it as part of the new publication chain. - Verify
LANGBOT_WIKI_PUSH_TOKEN, or the existingRELEASE_UPLOAD_GITHUB_TOKENfallback, has access to LangBot, landing, production fork and Wiki. No token value belongs in logs. Publication only updates gitlinks/content, never workflow files in another repository, and no docs-mirror permission is needed. - Set
DOCS_PUBLISH_ENABLED=truein LangBot. Dispatchsync-landing-submodule.ymlon master. It also brings the production fork up to date; confirm the fork matches landing main and observe Cloudflare's resulting deployment before accepting the cutover. - Dispatch
sync-github-wiki.ymlandsync-blog-articles.ymlon master. The Blog job commits onlydocs/article paths to LangBot using a token whose pushes trigger subsequent landing/Wiki workflows. Wiki images and attribution now point to LangBotmaster/docs, so new assets do not depend on the archive. - Check
/docs/, the en/zh/ja guide pages, assets, sitemap, Markdown exports, Wiki content and Blog idempotency. A successful Wiki build is not proof of publication: inspect the separate publish job.
Context7
The root context7.json follows the published Context7 schema and selects
master:docs/en. Context7's current parser indexes English documentation.
The old nested ownership configuration belonged to the legacy repository and
has been removed; it does not transfer ownership of a Context7 library.
The owner must add/refresh https://github.com/langbot-app/LangBot in Context7
and verify a result from docs/en after merge. The existing
/langbot-app/langbot-docs index is only a historical snapshot after archival.
Do not report an index refresh as complete solely because this config exists.
Local validation and recovery
Use Node.js 24. In docs/, run npm ci, npm run typecheck, npm test, and
npm run build. In landing, initialize the submodule and run pnpm install --frozen-lockfile, pnpm test, and pnpm build.
Disable DOCS_PUBLISH_ENABLED to pause publication. If landing still points at
the legacy repository or the production fork has diverged, reconcile through
reviewed changes; do not bypass the synchronization checks. Keep the last
working deployment available until the replacement passes verification.