* docs: fix checkable ux defects in docs/cli and docs/concepts
Works the subset of open `ux` audit findings for docs/cli/ and
docs/concepts/ where the finding names something objectively checkable
against the current tree or the source: a missing prerequisite, a
self-contradiction, an unstated default, or a step a reader cannot
execute as written. Stylistic rows ("add an intro paragraph", "this
section is dense", "consider a table") are left open.
Missing prerequisites and unexecutable steps:
- cli/voicecall: page says the plugin must be installed and enabled but
never gives the commands (r3-1260).
- cli/acp: the `acpx` section uses the external `acpx` npm CLI without
saying where it comes from, and the page also uses `acpx` for the
unrelated `@openclaw/acpx` Gateway plugin, which installs no binary
(r3-1236).
- concepts/memory-builtin: "Run interactive llama.cpp setup once" names
no command; it is `openclaw onboard` (r3-1445).
- concepts/memory-honcho: setup prompts for API credentials the page
never says how to obtain (r3-1476).
- concepts/personal-agent-benchmark-pack: the run command needs a source
checkout and OPENCLAW_ENABLE_PRIVATE_QA_CLI=1, neither stated
(r3-1481).
Contradictions:
- concepts/delegate-architecture: the bindings example configures the
same `delegate` agent with a weaker deny list than the tool-policy
section two screens up, dropping write/edit/apply_patch from an agent
the page says is locked down (r3-1453).
- cli/config vs cli/models: `config set` rejects a model reference it
cannot resolve, `models set` saves it with a warning. Both were
correct and neither said the other existed (r3-1178).
- concepts/typing-indicators: the Defaults list omits the
message-tool-only rule, which resolveTypingMode() applies ahead of the
group rules the list does give (r3-1494).
Missing elements and stale terms:
- concepts/main-session: names the default `all` visibility without
`tools.sessions.visibility` (r5-0010).
- cli/path: never links /plugins/oc-path (r3-1211).
- cli/agents: two Related lists that had drifted apart (r3-1282).
- cli/tasks: the only docs/cli title carrying literal backticks
(r3-1304).
- cli/worker: internal roadmap term "milestone-3 placement owner"
(r3-1268).
- concepts/delegate-architecture: Azure AD is now Microsoft Entra ID
(r3-1452).
- concepts/multi-agent: a JSON5 config example fenced as `js` while the
page's other two use `json5` (r3-1378).
No heading text changed, so no anchor id is added or dropped; verified
with parseDocsDocument over all 15 pages before and after. Adds the two
zh-CN glossary sources check-docs-i18n-glossary requires, each beside a
related existing entry rather than appended at the end.
* docs(models): scope the config-set validation comparison to text models
ClawSweeper P2 on docs/cli/models.md:38. The paragraph covers both
`models set` and `models set-image`, so "the same setting" implied that
`config set agents.defaults.imageModel.primary` also rejects an
unresolvable model. It does not: `pathMayAffectTextModelRefs` in
src/cli/config-model-validation.ts:52 returns true for
`agents.defaults` only when `path[2] === "model"`, so `imageModel` is
excluded and the config mutation validator never runs a model check on
it.
Names `agents.defaults.model` explicitly and says the check is
text-model only, rather than leaving readers to infer a validation
guarantee `config set` does not provide for image models.
* docs: correct verified accuracy defects in CLI, tools, and automation pages
Resolve the open `accuracy` audit findings for docs/cli/, docs/tools/ and
docs/automation/. Every claim was checked against the implementation before
the prose was touched; findings the source contradicted are left unchanged and
rebutted in the PR body.
Factual corrections (docs disagreed with code):
- onboard: Z.AI defaults are glm-5.3 (coding) and glm-5.2 (general), not
glm-5.2/glm-5.1 (extensions/zai/model-definitions.ts, openclaw.plugin.json).
- sessions: the cleanup --json example printed a sessions.json store path, but
both JSON exits map storePath through resolveSqliteTargetFromSessionStorePath
(src/commands/sessions-cleanup.ts, src/config/sessions/cleanup-result.ts).
- diffs: `plugins install diffs` resolved to an unrelated npm package; the
plugin is external, not bundled (extensions/diffs/package.json).
- ollama-search: a bare "OLLAMA_API_KEY" string is a literal key, not env
indirection (src/config/types.secrets.ts).
- minimax-search: the region list contradicted its own opening condition and
merged two tiers (extensions/minimax/src/minimax-web-search-provider.runtime.ts).
- imap: addressTokens is a per-account key (extensions/imap/src/config.ts).
- thinking: GLM-5.3 is a second Z.AI exception (extensions/zai/provider-policy-api.ts).
- video-generation: buffer-backed videoToVideo also covers fal reference-to-video
(src/video-generation/live-test-helpers.ts).
- slash-commands: the missing third source is skill commands
(src/auto-reply/commands-registry-list.ts).
- cron: `cron` is the registered command and `automations` its alias
(src/cli/cron-cli/register.ts).
- setup: add the real --classic and --agent-name flags to the Options table
(src/cli/program/register.setup.ts).
- path: file-slot wildcard rejection exits 2 (extensions/oc-path/src/cli.ts).
Version scope added only where a release could be cited: 2026.8.1 (heartbeat
task migration, inferred commitments, artifact-area staging), 2026.4.29 (owner
bootstrap), 2026.4.26 (Hunter Alpha), 2026.3.31 (nodes.run). Elsewhere the
time-relative wording is replaced with the verified current behaviour rather
than a guessed version.
* docs(swarm): keep the limits-and-roadmap anchor after the heading rename
docs/AGENTS.md requires existing published heading ids to stay stable. The
rename from 'Limits and roadmap' to 'Limits' changed the generated fragment,
so add an explicit <a id="limits-and-roadmap" /> stub above the heading.
parseDocsDocument now reports both ids with no collisions.
Keep dollar replacement tokens literal and reject incoming Markdown
insertion sentinel values before writes or dry-run previews. Share the
existing Markdown and JSON serializers, remove redundant Matrix context
branching, and use one ordered provider catalog auth selector.
Preserve complete selected auth results and synchronous unbound lookup.
The new private host export requires synchronized core/plugin release
preparation to advance compat.pluginApi; do not independently publish
these official plugins with the older floor.
* fix(oc-path): emit patches that preserve exact edit bytes
* test: reuse CLI fixtures and canonical recovery admission
* test(cli): retain the canonical main process test split
* ci: refresh checks against current main
Bound user-selected OcPath files before parsing so oversized and special files cannot consume unbounded memory or hang the CLI.
Reuse one descriptor snapshot across resolve, find, set, and emit while preserving the JSONC oversized-input diagnostic.
Co-authored-by: Ayaan Zaidi <hi@obviy.us>