The single most common operational confusion in this project: deploying code does not deploy content. Production's page store and database persist across every release; the docs/wikantik-pages/ directory in the repo is the corpus a fresh install starts from (bare-metal bin/deploy-local.sh serves it in place, and a new container host receives it through the first-deploy pages-push), not a deploy channel for a running production.
| Change | Path |
|---|---|
| Application code, the React SPA, bundled system pages | Release + deploy — Wikantik Release and Deploy Process |
| Wiki page content (articles, hubs, runbooks) | MCP authoring tools against prod, or bin/remote.sh pages-push for bulk rsync |
write_pages, update_page, rename_page, delete_pages) — wired as session tools pointing at production. Optimistic locking via expectedContentHash; frontmatter merges on update. Tool set and limits: MCP Authoring Surface Reference.bin/remote.sh pages-push LOCAL_DIR [--mirror] / pages-pull — rsync of the page store; --mirror deletes remote pages absent locally (it previews the deletions and asks for confirmation), so use with care. pages-pull can fail with permission errors on container-owned page files and silently return a partial corpus, so never treat it as a complete snapshot of production; the prod store, not the repo checkout, is authoritative for content.mcp.ratelimit.perClient, set from MCP_RATE_LIMIT_PER_CLIENT; the shipped .env.example value is 50 requests per second, 500 globally). Pace bulk operations and back off on a 429.wikantik-wikipages bundle (Main, the help pages such as EditPageHelp and LoginHelp, RecentChanges, PageIndex, SystemInfo and the rest of the system-page registry) refuses MCP writes so agents cannot silently mutate shipped content. The one default exception is About (wikantik.systemPages.mcpEditable). Main.md is additionally generated from Main.pins.yaml; CI's regression test reverts hand-edits.lucene-hnsw index mid-run — only on successful completion.verify_pages (links/metadata/SEO/retrieval lint) followed by a live assemble_bundle query for anything retrieval-sensitive — the static lint alone does not prove retrievability. Policy context: Content Program Policy.