# Changelog

## Unreleased

## 1.2.0 - 2026-06-10

### Added

- Added runtime event bridge and web console runtime event replay so CLI and
  web workflows can inspect parent/runtime activity with bounded history. See
  [GH-531](https://github.com/jterratsdev/open-orchestra/issues/531).
- Added role-scoped CLI capability discovery and a generated capabilities
  manifest contract for agent rules and packaged command validation. See
  [GH-532](https://github.com/jterratsdev/open-orchestra/issues/532).
- Added conversational capture command support and refreshed README positioning
  around governed Orchestra workflows. See
  [GH-535](https://github.com/jterratsdev/open-orchestra/issues/535).
- Added scoped MCP runtime diagnostics and coverage for spawned agent skill and
  QA evidence inheritance. See
  [GH-527](https://github.com/jterratsdev/open-orchestra/issues/527).

### Changed

- Hardened managed-work pre-run enforcement so external runtimes must register
  and run Orchestra workflow context before implementation work. See
  [GH-543](https://github.com/jterratsdev/open-orchestra/issues/543).
- Scheduled Dependabot CI updates monthly and hardened self-hosted runner
  policy to reduce Actions minute pressure while preserving release gates. See
  [GH-537](https://github.com/jterratsdev/open-orchestra/issues/537) and
  [GH-539](https://github.com/jterratsdev/open-orchestra/issues/539).
- Groomed the product E2E epic and added release E2E battery checks to the QA
  playbook. See [GH-533](https://github.com/jterratsdev/open-orchestra/issues/533)
  and [GH-525](https://github.com/jterratsdev/open-orchestra/issues/525).

### Fixed

- Fixed benchmark reporting so completed tasks without duration are counted
  separately from measured actuals. See
  [GH-538](https://github.com/jterratsdev/open-orchestra/issues/538).
- Hardened QA scenario evidence rules to require expected outcomes and real
  environment-aware proof instead of simulated handoff evidence. See
  [GH-538](https://github.com/jterratsdev/open-orchestra/issues/538).
- Added compiled-path renderer E2E coverage and cleared CI quality blockers for
  the current release candidate. See
  [GH-528](https://github.com/jterratsdev/open-orchestra/issues/528) and
  [GH-537](https://github.com/jterratsdev/open-orchestra/issues/537).

### Validation

- Release validation is tracked in
  [GH-552](https://github.com/jterratsdev/open-orchestra/issues/552).

## 1.0.18 - 2026-06-04

### Added

- Added a public model alias facade for the public API so `/api/v1/models`
  exposes Orchestra-owned aliases while server-side routing can swap Ollama,
  OpenAI, Anthropic, Gemini, or test providers without leaking provider
  details. See [GH-506](https://github.com/jterratsdev/open-orchestra/issues/506).

### Changed

- Active parent runtime is now declared by each agent through its
  `UserPromptSubmit` hook via `orchestra health --runtime <id> --json`, which
  persists the runtime to `.agent-workflow/active-runtime.json` (24h TTL).
  `orchestra init --target claude` and `--target cursor` configure the hook
  automatically; manual-setup guidance for Codex/VS Code/Windsurf documents the
  same pattern.
- `selectRuntimeExecutionAdapter` precedence: `--runtime` flag, `policy.byTask`,
  `policy.byRole`, `policy.defaults.executor` (when not `generic-runtime`),
  `.agent-workflow/active-runtime.json`, `OPEN_ORCHESTRA_ACTIVE_RUNTIME`,
  `generic-runtime`.

### Removed

- File-based runtime inference (`runtimeExecutorFromInstructionFiles`). Files
  like `AGENTS.md` and `CLAUDE.md` indicate which runtimes a project supports,
  not which one is active right now; using their `target=` attribute as a
  signal caused workflow phases to emit `codex-cli` parent actions inside
  Claude sessions whenever Codex's universal `AGENTS.md` coexisted with
  Claude's `CLAUDE.md`. See [GH-513](https://github.com/jterratsdev/open-orchestra/issues/513).
- Per-tool environment detection (`CLAUDECODE`, `CLAUDE_CODE`,
  `CODEX_THREAD_ID`, `CODEX_SANDBOX`, `CURSOR_TRACE_ID`, `CURSOR_AGENT`). These
  env vars can coexist in nested or inherited sessions and produced arbitrary
  precedence. The hook-driven `active-runtime.json` is now the truthful signal.

### Migration

- Re-run `orchestra init --target <runtime>` to refresh the hook command to
  include `--runtime <id>`.
- For CI or non-hook environments, export `OPEN_ORCHESTRA_ACTIVE_RUNTIME=<id>`
  or set `runtimePolicy.defaults.executor` in `.agent-workflow/config.json`.
- Workflows where the active runtime cannot be determined fall back to
  `generic-runtime` (parent-agent inline mode) instead of guessing from files.

## 1.0.15 - 2026-05-29

### Added

- Added Claude workspace initialization support that writes a
  `.claude/settings.json` `UserPromptSubmit` hook for recurring Orchestra
  preflight context.

### Changed

- Hardened release reviewer gates so impacted architecture and security
  reviews remain explicit before release approval.
- Updated Codex runtime bootstrap guidance to enforce recurring Orchestra
  preflight checks before each work block and after context shifts.

### Fixed

- Fixed workspace selection persistence so refreshes do not reset to the
  process current working directory.

### Validation

- `npm run build` passed.
- `node --test test/runtime-bootstrap.test.js test/orchestra.test.js test/workspace-claude-settings.test.js` passed with 195 tests.
- `ORCHESTRA_NODE_SCRIPT=/Users/polux/dev/open-orchestra/bin/orchestra.js npm run test:e2e:init` passed with 8 tests.

## 1.0.14 - 2026-05-22

### Added

- Added `context-index build` and `context-index status` commands for a local
  offline project index with manifest and files JSONL artifacts.
- Added safe default context-index exclusions for dependencies, generated
  outputs, workflow artifacts, and secret-sensitive files.

### Fixed

- Added CLI regression coverage for Claude runtime inference so
  `runtime spawn-request` does not fall back to `generic-runtime` when Claude is
  the active parent runtime.
- Added release no-go regression coverage so QA changes and Release Manager
  blocks keep workflows/tasks blocked unless Product Owner risk acceptance is
  recorded.

### Validation

- `npm run build` passed.
- `npm run typecheck` passed.
- `node --test test/context-index.test.js` passed.
- Focused runtime and workflow no-go regression tests passed.
- Broader command, runtime, and workflow suites passed with 112 tests.

## 1.0.13 - 2026-05-22

### Changed

- Runtime-native parent action dispatch now enforces delegation capacity before
  calling parent runtime tools. Dispatch is sequential, records structured
  `checked.capacity` metadata, and promotes queued actions only after lifecycle
  events free capacity.

### Fixed

- Fixed queued runtime-native subagent actions being able to flood the parent
  runtime when several squads or gates were pending at the same time.
- Fixed suspended runtime sessions opening new dispatch capacity before they
  were explicitly completed, canceled, timed out, failed, or closed.

### Validation

- `npm run build` passed.
- `npm run typecheck` passed.
- `node --test test/runtime-adapters.test.js` passed with 63 tests.
- `node --test test/autonomous-workflow-cli.test.js` passed with 43 tests.

## 1.0.12 - 2026-05-22

### Added

- Added context vault architecture documentation for workspace documents, SOWs,
  diagrams, audio/video, transcripts, provenance, sensitivity classification,
  redaction, and bounded context-pack consumption.
- Added the context vault guide to the docs-driven public site catalog.

### Changed

- Workflow task creation now materializes implicit required roles from the task
  owner so owner-only tasks do not silently fall back to the default full
  delivery workflow.
- Workflow run/list/gate/clarification commands now resolve their workspace
  from `--target-dir`, keeping workflow run state isolated to the requested
  workspace.
- Runtime documentation now clarifies that parent-runtime dispatch remains
  bounded, auditable, and separate from direct provider API calls.

### Fixed

- Fixed owner-only workflow tasks falling back to unrelated/default phase
  planning when no explicit `workflow.requiredRoles` were provided.
- Fixed `workflow run --target-dir` writing workflow run state to the current
  repo instead of the target workspace.

### Validation

- `npm run precommit` passed.
- Focused target-dir, autonomous workflow, task role, site content, and site
  build checks passed.

## 1.0.8 - 2026-05-19

### Added

- Added a release-blocking runtime manual queue E2E:
  `npm run test:e2e:runtime` now creates a temporary workspace, initializes
  Open Orchestra, starts two manual runtime sessions, and verifies a third
  manual `spawn-request` materializes as `queued` with lifecycle commands and
  session visibility.
- Added an E2E test battery catalog documenting P0, P1, and P2 validation
  surfaces for source quality, installed CLI, temporary workspaces, browser
  console, public site, runtime delegation, recovery, security, provider, Sonar,
  and package release dry-run coverage.

### Changed

- Runtime-native spawn requests are fully asynchronous by default: parent
  runtimes receive session ids, prompt artifacts, expected result artifacts,
  lifecycle commands, and quality warnings without waiting on child completion.
- Release matrix now includes `runtime-manual-queue-e2e` so queued runtime
  delegation behavior is part of the documented release validation surface.
- CLI routing and refresh helpers were split into smaller modules while keeping
  public command behavior stable.

### Fixed

- Manual `runtime spawn-request` now follows queue guardrails consistently:
  `limitAction=queue` returns a queued artifact/session instead of failing,
  while `limitAction=reject` still fails before creating a delegation artifact.

### Validation

- `npm run test:e2e:runtime` passed.
- `npm run test:e2e` passed.
- `ORCHESTRA_NODE_SCRIPT=/Users/polux/dev/open-orchestra/bin/orchestra.js npm run test:e2e:init`
  passed.
- `npm run precommit` passed.
- `npm pack --dry-run --json` produced `jterrats-open-orchestra-1.0.8.tgz`.
- `orchestra release check --json` passed and reported package version `1.0.8`
  ahead of latest tag `v1.0.7`, ready for CI-owned tag creation.

## 0.5.1 - 2026-05-11

### Changed

- Bumped the package version after the 0.5.0 documentation, public site,
  command-manifest, tracker fallback, and doc-sync work so CI/CD can publish a
  new package version.

### Validation

- `npm run precommit` passed for the version bump.

## 0.5.0 - 2026-05-11

### Added

- Public site migrated to React + Vite, including an interactive Mermaid-backed
  architecture viewer with zoom, pan, fullscreen, draggable nodes, and draggable
  grouped parent cards.
- Added `doc-sync` as a built-in skill for keeping architecture docs, changelog,
  onboarding, runbooks, public site copy, and prompt registries aligned.
- Added tracker fallback guidance for GitHub CLI and MCP-backed GitHub, Jira,
  Bitbucket, GitLab, Azure DevOps, Linear, or custom trackers.
- Added a core command surface guide and reproducible fake-provider end-to-end
  demo for onboarding.

### Changed

- Public onboarding now leads with the governed happy path instead of the full
  command catalog.
- Command manifest examples now render copyable installed-CLI commands without
  duplicating required flags.
- Task context budgeting trims skipped skill details before critical task,
  evidence, review, or decision fields.

### Fixed

- Architecture viewer group dragging now moves parent cards and their children
  together instead of panning the whole diagram.
- Site architecture layout stays aligned with the surrounding content container
  in desktop and mobile screenshots.

### Validation

- `npm run precommit` passed for the 0.5.0 documentation, site, skill, and
  command-manifest updates.
- `npm run site:build` and `npm run test:e2e -- e2e/project-site.spec.js`
  validated the React + Vite public site and architecture interactions.

## 0.4.1 - 2026-05-07

### Added

- Added runtime execution commands for CLI and IDE-hosted agents:
  `runtime brief`, `runtime delegate-plan`, `runtime handoff`, and
  `runtime bootstrap`.

### Changed

- Split CLI command handlers into focused domain modules while keeping the
  existing command facade stable.
- Split large autonomous workflow and benchmark test suites into
  behavior-focused files with shared helpers.
- Runtime documentation now clarifies local CLI/IDE delegation flows that do not
  require direct provider API calls.

### Validation

- `npm run precommit` passed after the release bump.

## 0.4.0 - 2026-05-07

### Added

- Provider-backed autonomous workflow phases can now execute through the shared
  `ModelProvider` contract instead of deterministic fake-only responses.
- Added OpenAI Responses API provider routing with `provider=openai`,
  `OPENAI_API_KEY`, optional HTTPS `OPENAI_BASE_URL`, JSON schema response
  formatting, usage normalization, and opt-in smoke coverage.
- Added Anthropic Claude Messages API provider routing with
  `provider=anthropic`, `ANTHROPIC_API_KEY`, optional HTTPS
  `ANTHROPIC_BASE_URL`, optional `ANTHROPIC_VERSION`, usage normalization, stop
  reason mapping, and opt-in smoke coverage.
- Added provider policy controls for allowed providers, blocked providers, and
  explicit cross-vendor fallback approval.
- Autonomous phase execution now records provider provenance and creates
  phase artifacts for provider-backed runs.

### Changed

- Runtime LLM documentation now covers OpenAI and Anthropic setup, env vars,
  JSON-mode behavior, and fallback policy limits.
- VS Code extension package version aligned with the CLI package.

### Validation

- `npm run precommit` passed with OpenAI and Anthropic mocked provider coverage;
  real provider smoke tests remain opt-in through env vars.

## 0.3.1 - 2026-05-06

### Fixed

- Moved `chart.js` from `dependencies` to `devDependencies`. It is bundled by esbuild into `dist/assets/web-console.js` at build time and does not need to be installed as a runtime dependency. This resolves an `ERR_INVALID_ARG_TYPE` crash in npm 11 / Node 25 arborist when installing the package.

## 0.3.0 - 2026-05-06

### Added

- **Autonomous workflow engine** (`workflow run`) executes a full story lifecycle as a governed multi-phase sequence: PM → PO → Architect → Developer → QA → Release. State is persisted in `.agent-workflow/workflow-runs.jsonl` (append-only).
- `--gates none|phase|all` controls how many human approval checkpoints are required. `phase` mode gates at `po→architect` and `qa→release`; `all` gates every transition; `none` runs fully autonomously.
- `--dry-run` prints the phase graph with gate annotations without creating any records.
- `--resume <run-id>` continues a paused or clarification-suspended run from the correct phase.
- **Architect sizing gate**: always enforced regardless of `--gates` mode. The architect must record a sizing decision (`xs/s/m/l/xl`) before the developer phase starts. If missing, the run fails with the exact `orchestra decision add` command to resolve it.
- `orchestra workflow runs` lists all runs with status and phase trace.
- **Clarification loop** (`workflow clarify`, `workflow clarify-respond`, `workflow clarify-list`): developer and QA phases can surface blocking questions to the PO or architect mid-phase. The active phase is suspended until the answer is recorded, then resumed with `--resume`. Records persisted in `.agent-workflow/clarifications.jsonl`.
- **Effectiveness benchmark** (`orchestra estimate` + `orchestra benchmark`): PM declares solo and AI-unguided baselines once at story start; actual cycle time is computed automatically from autonomous run timestamps after the release phase completes. `orchestra benchmark --summary` prints a sortable table across all stories.
- **Quality signals** automatically collected from the event log per story: review count, blocking reviews, evidence artifacts, gate blocks, lessons generated, model tokens, and estimated cost. Appear in `orchestra benchmark` output with no additional input.
- **Sprint burndown** (`orchestra burndown --sprint <task-ids-csv>`): computes ideal vs actual lines from story point estimates. Developer points take priority over architect sizing; falls back gracefully. ASCII chart + `--json` output.
- **Developer story point estimation**: developer records implementation effort via `orchestra decision add` with `actor=developer` and `metadata.points` — same pattern as architect sizing, distinguishable by `actor` field. Used as primary input for burndown; creates a calibration signal when both architect and developer estimates exist.
- **QA→Developer retry loop**: when a QA phase closes with `qa_fail`, the workflow routes back to the developer phase with failure notes as context. Each retry creates a numbered sub-task (`TASK-developer-<run-suffix>-retry1`). The `maxIterations` cap prevents infinite loops.
- **GitHub PR auto-creation** (`github.autoCreatePr: true` in config): after the release phase completes, automatically creates a PR via `gh pr create` with title and body generated from `pr-summary` data. PR URL is recorded as an evidence artifact. Failure is non-fatal — the run completes with a warning.
- **Enriched runtime bootstrap block**: `orchestra init` now injects an "Orchestra Workflow — Required for All Work" section into `CLAUDE.md`, `AGENTS.md`, Cursor rules, Windsurf rules, and VS Code files covering any work type: architecture decisions, stack definition, PO refinement, product strategy, implementation, QA, and release. Correct owner role guidance included per work type.

### Fixed

- `resumePhaseIndex` now scans past `gate_paused` phases instead of returning immediately, preventing re-execution of already-completed phases on runs with multiple sequential gates.
- `recordDecision` now extracts `sizing` and `points` from the `--decision` text for architect decisions (pattern: `"<xs|s|m|l|xl> [N points]"`), so the architect sizing gate reads them correctly via the standard CLI flow.
- Phase sub-task IDs are now run-scoped (`TASK-phase-<run-suffix>`) preventing collisions when multiple workflow runs target the same task.

### Documentation

- README rewritten to lead with the autonomous workflow feature, clarification loop, benchmark, and burndown sections.
- `docs/autonomous-workflow.md`: new reference page for the workflow engine, gate modes, sizing gate, clarification loop, and run/phase state reference.
- `docs/benchmark.md`: new reference page for estimate, benchmark, burndown, quality signals, and developer story points.
- `docs/orchestra-mvp.md` updated with all new sections, command examples, revised workflow files layout, and current scope.

### Validation

- Dogfooded using Orchestra itself: ORCH-017 and ORCH-022 were developed as autonomous workflow runs, surfacing and fixing the sizing extraction and task ID collision bugs during the process.

## 0.2.2 - 2026-05-06

### Changed

- Added `orchestra --version`, `orchestra -v`, and `orchestra version --json`
  for install and release verification.
- Release automation now creates GitHub Releases from CI-created tags.
- CI workflows use Node 24-compatible official GitHub Actions.

### Validation

- Validates the automated tag, GitHub Release, and npm publication chain.

## 0.2.1 - 2026-05-06

### Fixed

- Generated runtime bootstrap guidance now uses the portable installed
  executable form, `orchestra ...`, instead of repo-local
  `node bin/orchestra.js ...` examples.
- Skill render no longer creates partial `.agent-workflow/` state before
  `orchestra init`, preventing CI validation failures in freshly cloned repos.
- File-lock writes now create missing parent directories before locking, making
  event recording safer in new workspaces.
- Concurrent `evidence add` calls now create collision-resistant artifact
  filenames instead of overwriting evidence recorded in the same millisecond.

### Validation

- Added regression coverage for portable bootstrap command examples, missing
  lock parent directories, avoiding partial workflow state before init, and
  concurrent evidence artifact creation.

## 0.2.0 - 2026-05-06

### Added

- Runtime adapter catalog for `generic`, `claude`, `cursor`, `codex`, `vscode`,
  and `windsurf`.
- `orchestra runtime adapters --json` for clients and LLM runtimes that need
  stable adapter metadata.
- Target-specific init support with `orchestra init --target <csv>`.
- Advisory init support for explicit runtime targets without default root
  instruction writes.
- Workspace classification and runtime adapter visibility in the web console.
- Runtime adapter documentation covering Claude, Codex, Cursor, VS Code,
  Windsurf, and generic LLM flows.

### Changed

- Runtime bootstrap and subagent protocol guidance now read from the runtime
  adapter catalog instead of hardcoded target text.
- Workspace classification uses the adapter catalog for supported target lists.
- VS Code extension package version aligned with the CLI package.

### Security

- Extended workspace-local write guards to instruction apply/block paths.
- Continued blocking unsafe workspace roots before init writes.

### Validation

- Added tests for runtime adapters, target-specific init, advisory target init,
  workspace classification, and instruction path escape rejection.
