AI Orchestra
Sign inGet started
Changelog

What shipped, and what made it necessary

Entries name the live finding that caused them. If a fix has no finding behind it, it usually did not need to ship.

UnreleasedIn progressIn progress

Make the chat findable the way other chat extensions are

Ctrl+Alt+O (Cmd+Alt+O) focuses the panel, a status-bar AI Orchestra button opens it, "AI Orchestra: Open Chat" joins the Command Palette, and a Getting Started walkthrough — open chat, keys, seats, first session — shows on install. The Activity Bar icon and the @orchestra participant are unchanged.

Add the gremlin matrix

npm run test:matrix runs a scenario runner inside a real Extension Host: every slash command, the three modes, the four tasks, the four permission modes, all nine roles, hand-raise pause / admit / merge / dismissed-silence, contract enforcement, freeze refusals, Brainstorm pause-and-resume, and the Gate Run, with scripted seats. The report quotes the host verbatim for every failing scenario.

0.3.72026-08-25

Keep Markdown files whole

An untagged ``` example inside a file block is treated as an inner fence, not a close, and a fence opening on a heading or comment sentence is content rather than an "unsafe file path" refusal. Live finding: the packaged build lost "## Risks" and "## Roles" to a bare CLI example and refused the tail.

Let unanimous Brainstorm rooms close

The round envelope now states that a confirmation is not a question, and that a room ends only when every seat returns empty questions and challenges. After a unanimous round, seats are told their own open questions are what keeps the room going, and the Leader sees a chat line saying so. Live finding: rooms unanimous from round five ended on caps, never on "converged".

Merge near-duplicate hand-raises

A raise making the same point as one already pending to the same target folds into it — one queue entry naming every voice (reviewer + indexer → drafter), urgency escalated to the higher of the two, and a raise.merge audit event. A dismissed point stays dismissed when re-raised reworded. Live finding: three seats, one missing row, three BLOCKER modals.

0.3.62026-08-21

Add the Full Journey runner

npm run test:journey drives the real extension through all eight phases in a fresh git workspace and an isolated Extension Host, answering native modals by recorded policy and writing a pass/fail record under memory/journeys/. --packaged <vsix> cold-installs a build and --live uses real vendors.

Write plans at one artifact base

File blocks, the system prompt and /freeze now agree on the loaded project folder (else the workspace root). /freeze previously hard-coded the workspace root, so a drafter-authored plan inside a loaded project could never be frozen.

Write a Brainstorm session record

Synthesis writes memory/brainstorm-<timestamp>.md through the WriteGate, so the quarantine branch carries a real artifact for the ADOPT / ABANDON decision.

Serialize the timed Brainstorm lifecycle

Plus composer attachments with a bounded local pipeline, multimodal provider payloads, and the native @orchestra chat participant. VS Code floor moves 1.85 → 1.91.

Tell seats what they could not guess

The pen-holder prompt states the path-marker file-block convention, and every seat sees the PLAN.md schema /freeze validates while the Plan task is active.