# OpenClerk v0.2.6

This patch release fixes optional module manifest verification from non-release-tree working directories while preserving the v0.2 runner contract and the database-backed runtime configuration pattern.

## Changed

- Fixed `openclerk module` registration and verification so semantic and OCR module manifests resolve once at install time, store a private resolved manifest path in SQLite `runtime_config`, and continue to verify from any later working directory.
- Added install-time `module.manifest_root` support for callers that provide repo-relative module manifests from a separate release-tree context; explicit manifest roots are authoritative and do not silently fall back to the process working directory.
- Kept public module JSON stable by preserving caller-supplied `manifest_path`, `manifest_sha256`, verified/redacted module state, and provider config while omitting machine-absolute resolved manifest paths from normal `list_modules` output and committed reports.
- Preserved legacy module registrations that only stored `manifest_path` and `manifest_sha256` by falling back to the existing relative-path resolver when no private resolved path is present.
- Applied the shared manifest resolver to all current module kinds, including Ollama and Gemini semantic modules plus the Tesseract OCR module, so future module verification uses one path-resolution boundary.
- Improved manifest-resolution failures so missing or stale manifest roots report that the manifest could not be resolved instead of surfacing confusing manifest-read or digest-style failures.
- 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.6`.
- 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 module cwd-sensitivity coverage is committed in `internal/runclient/modules_test.go`, `cmd/openclerk/main_test.go`, and `internal/tools/validateliveinstallsmoke/main.go`.
- Targeted workflow-action evidence remains 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`, covering the promoted narrow workflow-action surfaces with acceptable natural-row UX.
- 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`.
