Operations and runbooks
Purpose-based landing page for every current operational runbook in the repository.
Use this page to choose a runbook. The linked files under docs/runbooks/ are the canonical procedures; this page explains when each one applies and which verification signal closes the operation.
Development and test environments
| Need | Runbook | Use it for |
|---|---|---|
| Boot or troubleshoot the local stack | Local development | Docker-backed services, demo tenant, app ports, logs, reset and smoke checks |
| Isolate concurrent branch stacks | Parallel worktrees | pnpm worktree:env, per-worktree ports/database names, safe teardown |
| Boot migrated Basenet-shaped tenant data | Real-tenant fixture | pnpm dev:tenant, fixture purity and expected counts |
| Acquire and use provider test credentials | Vendor sandbox | Named sandbox variables, ownership, evidence, and clean skip behavior |
Stop condition: the intended isolated environment is reachable, its documented smoke check passes, and no duplicate server/container remains running.
Tenant and identity lifecycle
| Need | Runbook | Use it for |
|---|---|---|
| Create a tenant | Tenant provisioning | Database, realm, storage, search, seed, residency and activation steps |
| Operate realms and staff login | Identity | Tenant realm/client setup, admin and staff login diagnosis |
| Rotate migrated credentials | Credential rotation | Rotation sequence, tenant-scoped resource eviction and migration controls |
Stop condition: the control plane reports the expected tenant state, identity checks succeed for the intended realm, and no credential value appears in logs or command arguments.
Microsoft 365 and Office
| Need | Runbook | Use it for |
|---|---|---|
| Connect delegated user mailboxes | Microsoft 365 delegated mail | Entra app, delegated OAuth grants, callback and doctor checks |
| Connect matter document sync | Microsoft 365 documents | Separate documents app registration, permissions and folder-sync validation |
| Configure Outlook add-in SSO | Outlook add-in SSO | Entra administrator checklist and Office SSO/OBO path |
| Configure Word add-in SSO | Word add-in SSO | The Word-specific half: a second Application ID URI on the shared Entra registration, and manifest generation |
| Configure Office preview/edit | WOPI setup | WOPI discovery, allowlists, proof keys and host integration |
Stop condition: the exact delegated or app-only flow named by the runbook succeeds against its intended environment; a mock success is never reported as live Graph/WOPI proof.
Documentation surfaces
| Need | Runbook | Use it for |
|---|---|---|
| Understand OpenWiki, Blume and Scalar ownership | Docs surfaces | Source/artifact flow and local/public endpoints |
| Update NL/EN customer manuals | Handleiding refresh | Drift inventory, page pairing, screenshots/video and content checks |
| Build/deploy partner + developer docs | Partner docs Pages | Blume build, GitHub Pages and OpenAPI symlink verification |
| Refresh generated repository wiki | OpenWiki | Safe heap/exclude wrapper; never bare openwiki --update |
Stop condition: the relevant docs build/check is green, internal links resolve, and user-visible instructions include inspected visual evidence when required.
Deterministic docs gates
Two scripts turn drift in the customer manual into machine-checkable findings instead of relying on someone re-reading every page:
- Label-currency ratchet —
scripts/handleiding-check.mjscross-checks every**Bold**on-screen label quoted incontent/handleiding/andcontent/guides/against the i18n catalogs. Unmatched labels found on a normal run are warnings; passing--strict-labels(as CI does) turns them into failures, but only for labels not already listed inscripts/handleiding-labels-baseline.json. That baseline is a ratchet, not a suppression list — it freezes today’s known noise so the check is useful from day one instead of failing on a pre-existing 500-line backlog, and it shrinks over time via--update-baselineas entries get fixed or reclassified. It never grows silently: a genuinely new mismatched label fails CI even with the baseline present. - Capture manifest —
scripts/write-capture-manifest.mjsruns at the end ofpnpm docs:capture/docs:capture:guidesand stampsapps/docs/public/media/.capture-manifest.jsonwith the capture timestamp and theapps/webcommit SHA the screenshots/video were taken against.handleiding-check.mjsreads that manifest to warn (not fail) whenapps/web/srchas changed since the manifest’s SHA — a cheap signal that the manual’s screenshots may now be stale, without asserting pixel-level drift the script can’t actually detect.
Both checks run inside pnpm docs:handleiding-check; CI additionally passes --strict-labels.
Deploy, continuity, and incident response
| Need | Runbook | Use it for |
|---|---|---|
| Deploy application components | Deploy | Images, migrations, Helm/Cloud Foundry release and smoke checks |
| Cut over from legacy Basenet | Cutover | Freeze, extract/load, verification, switch and rollback decision points |
| Respond to a production incident | Incident response | Triage, containment, communication, recovery and follow-up |
| Restore tenant/control-plane data | Backup and restore | Restore procedure, integrity checks and automated restore verification |
Stop condition: the runbook’s post-operation health and data-integrity checks pass on the exact deployed version/tenant; otherwise follow its rollback or escalation boundary.
Cross-cutting operational invariants
- Resolve the exact environment, tenant, commit/image, and migration state before mutation.
- Production schema changes run deliberately; deployed workers honor
SKIP_MIGRATE=1and do not advance schemas at boot. - Never place passwords or service tokens in argv, docs, screenshots, or logs.
- Provider evidence names the tier: mock, sandbox, or real.
- Tenant routing and current
activestatus are rechecked at request/job execution time. - A runbook is incomplete until its verification and cleanup/rollback steps have been evaluated.
Focused validation
pnpm --filter @blinqx/docs test
pnpm --filter @blinqx/docs build
pnpm docs:handleiding-check
pnpm docs:openwiki -- --preflight
Choose the narrower check for the surface changed; run the docs build before publishing this site. See Testing for repository-wide gates.
Source anchors
- Canonical procedures:
docs/runbooks/*.md(all current files are surfaced above) - Docs scripts:
package.json,apps/docs/package.json,scripts/handleiding-check.mjs,scripts/openwiki-update.mjs - Runtime composition:
scripts/dev.mjs,apps/workers/src/main.ts,apps/control-plane/src/cli.ts
See also: Setup and checks · Tenant isolation · Public API and docs