# OpenClerk v0.2.12

This patch release promotes runner-owned vault stewardship for markdown note moves, renames, candidate promotions, and proposal-first path cleanup while preserving local-first runner boundaries, stable document identity, and approval-before-write semantics.

## Changed

- Added read-only `plan_move_document` for vault-relative markdown moves with reported inbound links, outgoing links, frontmatter `id` status, duplicate risk, index updates, projection refreshes, validation warnings, and approval boundaries before any write.
- Added durable `move_document` for approved note moves that preserves the stable document id, refuses existing target documents or files, updates only reported markdown links and optional index links, records provenance, and refreshes projections without direct SQLite edits or raw filesystem moves.
- Added `rename_document` as the same-directory convenience wrapper for title/path cleanup and `promote_candidate` as the candidate-to-canonical promotion wrapper for notes under `notes/candidates/`.
- Added proposal-first `plan_path_cleanup` for runner-visible path cleanup over `doc_id`, current `path`, `path_prefix`, or lexical `query` scopes, returning recommended action, confidence, reason, duplicate risk, move plan, and exact next approved request for each candidate.
- Added bounded `plan_path_cleanup` apply mode for `autonomous_trusted` or `autonomous_disposable` profile/request settings; apply mode runs only duplicate-risk-none candidates through existing move semantics, skips low-confidence items, and marks intra-plan target collisions as `target_collision_in_plan` before writing.
- Updated `openclerk capabilities`, `openclerk document --help`, and `skills/openclerk/SKILL.md` to advertise the new move and path-cleanup surfaces without expanding raw vault access or skill-only choreography.
- Preserved `ingest_source_url` update mode behavior from the v0.2 line: missing `source.mode` defaults to `create`, duplicate creates reject, `source.mode: "update"` re-ingests an existing `source.url`, and mismatched `path_hint` or `asset_path_hint` values conflict without writing extra docs or assets.
- Preserved same-SHA source URL update behavior: same-SHA updates are no-ops without `source_updated` provenance or projection invalidation churn.
- Preserved changed-PDF source URL update behavior: changed-PDF updates preserve source and asset paths, refresh searchable extracted text and citations, emit previous/new SHA provenance, and expose stale dependent synthesis through `projection_states`.

## Verification

- Local release-doc validation passed for `v0.2.12`.
- Local Agent Skill validation passed for `skills/openclerk/SKILL.md`.
- Local module skill validation passed for `modules/ollama-embeddings/skill/ollama-embeddings/SKILL.md`, `modules/gemini-embeddings/skill/gemini-embeddings/SKILL.md`, and `modules/tesseract-ocr/skill/tesseract-ocr/SKILL.md`.
- Local committed-artifact validation passed with repo-relative artifact paths and neutral raw-log placeholders.
- Local formatting, linting, and unit-test gates passed with the repository-pinned toolchain.
- The current production OpenClerk AgentOps gate is committed at `docs/evals/results/ockp-agentops-production.md`.
- Expanded repo-docs dogfood evidence is committed at `docs/evals/results/ockp-repo-docs-dogfood.md`, covering installed-runner retrieval, synthesis maintenance, decision-record explainability, release-readiness answers, read-side tag filtering, memory-router recall reports, and release synthesis freshness over this repository's committed public markdown docs.
- Targeted workflow-action evidence is committed at `docs/evals/results/ockp-compile-synthesis-workflow-action.md`, `docs/evals/results/ockp-source-audit-workflow-action.md`, and `docs/evals/results/ockp-evidence-bundle-workflow-action.md`, with safety, capability, and `workflow_action_acceptable` UX passing for the refreshed natural rows.
- Targeted source URL update evidence remains committed at `docs/evals/results/ockp-source-url-update-mode.md`, covering duplicate create rejection, same-SHA no-op behavior, changed-PDF stale synthesis visibility, and path-hint conflict no-write behavior for the shipped runner and skill.
- Live install, upgrade, and module-command smoke evidence is committed at `docs/evals/results/ockp-live-install-upgrade-module-smoke.md`.
