Documentation

Operations Runbook

This runbook covers the public site, docs, local preview, and integration evidence for AgentHub. It is intentionally secret-free: production host paths, rollback commands, keys, and private logs belong in the private operator workspace.

Daily Checks

CheckCommand or routeExpected result
Public homehttps://hub.vectorcontrol.tech/zh and /enCurrent homepage, no old hero copy, no old purple accent
Docs entry/zh/docs and /en/docsStyled docs page with sidebar, TOC, and body content
Deep docs/zh/docs/workflows, /en/docs/desktop, /zh/docs/hub-edgeCorrect body, localized navigation, no 404
Discovery/robots.txt, /sitemap.xml, /llms.txtNew routes present and free of secrets
Login entry/zh/login or nav login buttonRedirects to TokenDance ID rather than implementing a separate product login

Use cache-busting when validating a recent deploy:

powershell
curl.exe -I "https://hub.vectorcontrol.tech/zh/docs/desktop?v=YYYYMMDDTHHMMSS"
curl.exe "https://hub.vectorcontrol.tech/llms.txt?v=YYYYMMDDTHHMMSS"

Local Build Gate

Run these from the registered release source worktree:

powershell
pnpm build
pnpm test
pnpm lint

Expected result:

  • the static export exists in out/;
  • localized docs pages export to both out/en/docs/... and out/zh/docs/...;
  • tests cover the docs registry, i18n routes, search index, nav, footer, and hero behavior;
  • lint reports no new warnings.

Docs Release Gate

Every new docs route must update:

File or systemRequired update
English MDXsrc/content/docs/<slug>.mdx
Chinese MDXsrc/content/docs/zh/<slug>.mdx
Navigationsrc/lib/docs-data.ts groups and labels
TOCPAGE_HEADINGS and PAGE_HEADINGS_ZH
Searchsrc/lib/search-index.ts body text
Discoverypublic/sitemap.xml and public/llms.txt
Reader docsREADME Documentation IA and changelog
TestsDocs registry/search assertions where useful

If any of these are missing, the route may render, but search, sidebar, prev/next, crawler discovery, or zh/en parity will drift.

Visual QA Gate

For UI or docs layout changes, check:

  • desktop viewport around 1440 x 900;
  • mobile viewport around 390 x 844;
  • /zh, /en, /zh/docs, /en/docs;
  • the changed docs route;
  • theme toggle state when the page includes the Desktop mock;
  • language switch state when mock copy is visible.

Look for:

  • text wrapping or overflowing inside pills, buttons, nav, or footer;
  • stale purple accents instead of TokenDance Blue;
  • hard black footer backgrounds;
  • excessive hover shadows on the Desktop mock;
  • focus rectangles inside the non-interactive mock preview;
  • old docs body missing styles.

Product Runtime Signals

When validating AgentHub product behavior rather than only the public site, record public-safe signals instead of private logs:

AreaSignalHealthy shape
Hub sessionauth/session checkTokenDance ID subject maps to a Hub-local session; denied actions have request ids
Project routingtask target selectiontarget Edge is authorized before work is queued
Edge presenceheartbeat or health shapeEdge reports reachable state, version, workspace policy, and runtime inventory
Run lifecycleevent streamcreated -> preparing -> running -> completed/failed/cancelled with monotonic events
Runtime adapteradapter readinessmock passes first; real CLI reports installed/authenticated/available or a clear runtime_unavailable
Artifacts and diffreview surfacesrelative paths, base/target metadata, approval id, and no private absolute paths
Queue/integrationasync workwebhook/card path acknowledges quickly and slow work moves to a queue/retry state
Auditaction recordactor, project, target, run id, action, result, timestamp, and redacted failure reason

Use this table for smoke reports and issue triage. Do not paste full prompts, raw provider output, private file content, access tokens, or host-specific logs into public docs.

Live Smoke Shape

A live smoke result should record:

Text
site: hub.vectorcontrol.tech
version: cache-busting timestamp
routes: /zh, /en, /zh/docs, /en/docs, changed deep docs route
checks: body keyword, status code, discovery files, no stale old hero
result: pass/fail

Public changelog entries should describe what changed, not where the server files live.

Failure Triage

FailureFirst action
Old homepage still visibleCheck the deploy source, CDN/browser cache, and whether the wrong worktree was built
Docs page empty or plain textConfirm MDX export, static route, CSS assets, and browser cache
New docs page missing from sidebarUpdate src/lib/docs-data.ts and tests
Search cannot find the new pageUpdate src/lib/search-index.ts
Sitemap misses a routeUpdate public/sitemap.xml and rerun public-surface checks
llms.txt staleUpdate key links and the current status text
Login page looks standaloneKeep the static site login as a TokenDance ID redirect shell only
Web route cannot reach an Edge targetCheck Hub authorization, Edge presence, target id, and audit denial before changing the Web UI
Event stream stops mid-runCheck run state, queue backlog, adapter process state, and schema validation failures
unauthorized_targetConfirm user/project membership and device target binding
workspace_outside_allowlistConfirm the workspace is registered for the selected Edge
runtime_unavailableVerify the mock runtime first, then local CLI install/auth/profile compatibility
Real runtime failsReproduce with the mock first, then inspect local CLI auth and Edge adapter logs

Runtime Incident Triage

Use this table when product behavior fails after the public site itself is healthy.

SymptomSeverityFirst checkOwnerPublic-safe evidencePrivate evidence
Edge unreachableHighEdge health URL from the selected targetEdge Serverstatus code, request id, target idlocal process logs and host details
Web target unauthorizedHighHub audit/request id for the target routeHub Servererror code, request id, project id placeholderauthorization trace and member records
Workspace rejectedMediumselected workspace against Edge allowlistEdge Serverworkspace_outside_allowlist, target idlocal allowlist and path details
Runtime unavailableMediummock runtime first, then CLI install/auth stateEdge adapterruntime_unavailable, adapter idlocal CLI output and credential state
Event stream stallsMediumlast monotonic event and queue/run stateEdge + Hubrun id, last event type, request idadapter logs and queue traces
Feishu/Lark callback slowHighcallback acknowledgement latencyIntegration Gatewayevent type, action id, latency bucketraw provider payload and retry logs
Audit missingHighHub action record for the task/runHub Serveractor placeholder, run id, action, resultfull audit row and internal correlation ids

Public issues should stop at the error code, request id, route class, and redacted identifiers. Private evidence can include local logs, host paths, queue names, callback payloads, and raw runtime output only inside the operator workspace.

Status Words

Use conservative language:

WordMeaning
LivePublic site or route is reachable
Preview-readyWorks in local or controlled preview with clear evidence
Contract shapedInterface is documented but the public SDK/package may still change
In progressImplementation exists or is actively being integrated
In developmentPlanned or partially implemented; do not sell as available

When unsure, choose the more conservative word and link to the roadmap or changelog.