# Changelog

This file records notable public changes to Better Harness. Entries describe
observable behavior and compatibility, not every internal refactor.

## 0.5.0 - 2026-08-04

### Added

- `better-harness plugin status`, `plugin plan`, `plugin verify`, and
  `better-harness doctor` expose a read-only lifecycle control plane over eight
  host profiles and eleven host surfaces. Status reports installation,
  enablement, observed-version relation, and verification per surface from the
  public configured-asset inventory; `plugin plan` emits typed native argv or
  manual steps for install, update, and remove without executing them; `doctor`
  reports bounded runtime and host diagnostics with redacted authorized roots.
  Unknown, mixed, foreign, or unbound host state fails closed, `plugin apply`
  stays unregistered, and Kimi Code and Grok are rejected with `UNKNOWN_HOST`
  until their native lifecycle contracts are validated.

- Kimi Code is now a supported analysis-capable source-local host. The
  repository installs as a Kimi Code plugin (`/plugins install <repo>`)
  through a `.kimi-plugin/plugin.json` manifest, gains a Kimi configured-asset
  provider (user `~/.kimi-code/skills` and `mcp.json`, project
  `.kimi-code/skills` and `.kimi/skills`, and managed plugins from
  `plugins/installed.json` with `enabled` filtering and plugin-root path
  confinement) plus a Kimi session-evidence adapter that reads
  workspace-matching wire transcripts under
  `~/.kimi-code/sessions/<wd_*>/ses{sion}_*/agents/*/wire.jsonl`, resolving
  the workspace mapping through `workspaces.json` and `session_index.jsonl`
  with a `wd_<name>_*` prefix fallback that records a
  `kimi-workspace-index-absent` warning. The public npm package now ships
  seven host metadata roots; the Qoder runtime bundle remains Qoder-specific.

- A read-only native Learning Capture review contract can now screen ordinary
  Task Episodes for repeated exact repair routes, emit a bounded privacy-safe
  packet, validate evidence-bound `match` or `abstain` decisions, and project
  accepted `recurring-correction` opportunities through the existing Learning
  Loop candidate model without requiring adapter-supplied pattern labels.

### Fixed

- Portable HTML finding-bound fixes now record against the HTML report contract
  without requiring Qoder's `canvas.json`, and refresh `findings.json`,
  `report.md`, and `report.html` to the same repair revision. Qoder split reports
  retain their Canvas-sidecar validation boundary.

- Root CLI delegation failures now keep machine mode parseable: spawn errors,
  signal termination, and output-buffer exhaustion each emit one stable JSON
  error document, while normal child stdout, stderr, and numeric exit status
  remain capability-owned.

- Checkup plan/apply is provider-aware: only `provider=qoder` can emit or execute
  `qodercli` disable mutations. Other hosts keep candidates as `manual-review`
  until a provider-native apply contract exists. `provider-home` source
  resolution and fingerprints bind to the explicit host home (for example
  Codex uses `codexHome`, never Qoder home).

- Make `command describe` resolve exact registered leaf paths instead of
  returning the parent command metadata.

- The Portable HTML report route in `templates/reporting/routing.md` now
  lists WorkBuddy, so agents on WorkBuddy are routed to the self-contained
  HTML + Markdown output the 0.4.0 host adapter already ships. A derived
  support-declaration check now requires every adapter-matrix host claiming
  portable HTML output to appear in that routing row.

## 0.4.1 - 2026-08-04

### Fixed

- The published npm package identity is `@qoder-ai/better-harness`. The
  previously documented `@qoderai/better-harness` scope was never a valid
  registry name, so package metadata, the lockfile, the adapter matrices, and
  the documentation site now all reference the hyphenated scope.

- The repository `test` script runs the automated suite again, so the release
  workflow verifies tests before publishing instead of reporting success
  without running them.

## 0.4.0 - 2026-07-30

### Added

- WorkBuddy is now a supported analysis-capable source-local host. It gains a
  WorkBuddy configured-asset provider (user skills, marketplace plugins with
  `settings.json` enabled state, `mcp.json`/`.mcp.json` user and plugin MCP
  servers, the global
  `AGENTS.md` and identity context files) plus a WorkBuddy session-evidence
  adapter that reads workspace-matching JSONL transcripts under
  `~/.workbuddy/projects/`, including cwd-less 5.x transcripts from exact
  workspace-slug directories and sparse camelCase/snake_case usage, with a
  `WORKBUDDY_DIR` override. WorkBuddy has no
  install shell in this repository; the skill installs by copying it into
  `~/.workbuddy/skills`.
- Pi (pi.dev) is now a supported analysis-capable source-local host. The
  repository installs as a pi package (`pi install <repo>`) through a `pi`
  manifest in `package.json`, registers a `/better-harness` prompt template,
  and gains a Pi configured-asset provider (settings-declared pi packages,
  skills, prompt templates, extensions, and `AGENTS.md` context) plus a Pi
  session-evidence adapter that reads workspace-matching JSONL v3 transcripts
  under `~/.pi/agent/sessions/` with `PI_CODING_AGENT_DIR` and
  `PI_CODING_AGENT_SESSION_DIR` overrides. Pi's shell is the `pi` manifest in
  the existing `package.json`, so the public npm package still ships six host
  metadata roots and the Qoder runtime bundle remains Qoder-specific.

### Changed

- Cursor installed-plugin inventory now leaves unknown numeric or opaque IDs
  unmatched instead of assigning them to cached plugins by name/order. Direct
  manifest IDs and workspace project MCP hints remain supported.
- `harness record-fix-output` now resolves Home only for Global output, so a
  verified Project-only result remains recordable when Home is unavailable.
- The `harness analyze` platform gate now names the full supported set
  (`qoder, codex, claude, cursor, qwen, copilot, pi`) when it rejects an
  unsupported `--platform`, matching the session-analysis and asset-baseline
  gates. The existing error prefix and exit behavior are unchanged.
- Core Change Watch now requires framework-specific evidence before labeling
  Rails or FastAPI, exposes bounded root Just recipes as statically discovered
  unverified argv entrypoints, and keeps historical-only files out of current
  recommended reads and action targets.
- Evidence bundles now discover and privacy-filter one frozen Session population
  before either Session facts or lead analysis hydrates it. Versioned redacted
  bindings fail closed on population, selection, or admission contradictions
  while preserving bounded lead selection and explicit zero-signal filtering.
- Self-contained HTML reports now expose every fluency-dimension score track as
  a labeled progressbar with a zero-to-100 range and the displayed rounded
  score. Report validation rejects incomplete, duplicated, invalid, or
  score-mismatched dimension progressbar contracts.
- Chinese self-contained HTML reports now use standards-based language
  segmentation to keep bounded word-like phrases together while preserving
  normal wrapping around Latin text, paths, URLs, and longer content. Runtimes
  without segmentation support fall back to readable escaped text, and English
  reports remain unchanged.
- HTML Evidence cards now display machine-owned Task Episode coverage from a
  summary-facts companion, with legacy at-a-glance coverage retained only as a
  compatibility fallback.

## 0.3.0 - 2026-07-27

### Changed

- The public npm package now includes the Qoder, Claude Code, Codex, and Cursor
  plugin metadata roots with aligned public descriptions. The generated Qoder
  runtime bundle remains Qoder-specific.
- CI now follows the `main` branch, and repo-local Agent Skills use `SKILL.md`
  directly without a mirror sidecar contract.
- Claude Code now defaults `/better-harness` to a validated, self-contained
  HTML report with paired Markdown and findings artifacts. Explicit inline or
  no-files requests remain write-free.

### Removed

- Removed pre-public identity aliases, migration-only specifications, and local
  compatibility readers. Better Harness is now the only product, CLI, plugin,
  callback, report-root, and session-reference identity.
- Removed developer-specific paths and obsolete compatibility commands from the
  public terminal-demo documentation.
