Make local sandbox execution direct by removing the public worktree mode and in-place controls from CLI, config, run state, API surfaces, docs, and UI. Keep worktree support only for internal parallel-node isolation.
Project workflows now resolve from the discovered .fabro directory instead of honoring project.directory. Keep the legacy field parse-only while removing it from resolved settings and API/client shapes.
## Summary
Removes Fabro's automatic retro generation stage so workflow runs go
directly from execution to finalization and optional PR creation. This
drops the retro-specific crate, events, projection fields, config/API
knobs, and user-facing docs in favor of the existing durable run
observability surfaces.
## What Changed
- Deleted the `fabro-retro` crate and the workflow `retro` pipeline
phase, with finalization now consuming `Executed` state directly.
- Removed retro configuration and API surface area, including
`--no-retro`, `[run.execution].retros`, manifest `no_retro`,
`features.retros`, and run projection `retro*` fields.
- Retired typed `retro.*` events while keeping historical event logs
readable by deserializing retired retro event names as `Unknown`.
- Stopped appending retro sections to generated PR bodies and updated
docs, marketing copy, screenshots, and navigation to point users toward
observability/event-stream inspection.
## Testing
Not run during PR creation; this branch already contained the
implementation commit.
---
[](https://github.com/EveryInc/compound-engineering-plugin)
🤖 Generated with GPT-5 (unknown context, reasoning unspecified) via
[Codex](https://openai.com/codex)
Emit local sandbox stop events so CLI follow and event-history tests can observe terminal cleanup under run-owned sandbox lifecycle. Fall back to stored file diffs when completed runs no longer have an active sandbox.
Create run-owned sandbox lifecycle operations so terminal runs stop by default, resumes attach and start persisted sandboxes, and run deletion deletes or hands off provider resources according to preserve settings.
Add InlineMarkdown component that tokenizes titles via marked's
Lexer.lexInline and renders code, strong, and em. Block syntax, links,
images, and raw HTML degrade to safe text — no dangerouslySetInnerHTML.
Applied to the run detail h2 heading and the run list row titles. Title
metadata, search, and the API/server data model are unchanged.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Make the file tree's background transparent and zero out its inline
padding so the tree sits flush on the page instead of inside a styled
sidebar surface.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Keep invalid terminal answers local to attach prompts instead of treating them as interrupted interviews, and accept No for confirmation answers to match documented yes/no behavior.
Drop the always-on branch/PR icon to the left of the repo name on the
runs board. When the run has a PR, render a right-aligned PR icon plus
"#number" on the top row, colored to match the column status. Move
additions/deletions to a dedicated bottom row that renders only when at
least one value is present and non-zero.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Prompt-shape stages (prompt, fan_in) only emit `prompt.completed` for
their response, so the Transcript tab showed the input but never the
output. Add the event to STAGE_ACTIVITY_EVENT_TYPES and to the
eventsToActivity reducer, suppressing it when a prior agent.message
already streamed the same content (agent stages).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Keep attach reading run events while a local interview prompt is active so answers from the web UI or API can resolve the prompt and let the CLI advance.
Replace the loose interview answer request payload with a discriminated OpenAPI union so generated clients enforce the wire contract. Surface structured HTTP error details in the web client and update browser, CLI, and server answer submission paths to use the typed variants.
Surfaces session info from useAuthMe (name, avatar, username, email,
IdP issuer/subject, profile URL) on a new /profile route, structured as
Basics + Identity panels matching the Settings page layout. Adds a
Profile link to the desktop dropdown and mobile menu.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Human/interview stages had no renderer and silently fell back to the
empty agent transcript. Stages without an explicit renderer now show
the Debug view (with the event-type filter and search) and no mode
picker.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Emit agent.interrupt.injected when run interrupts reach active agent sessions, persist the stage/session fields, and refresh/render those rows in the Transcript tab.
Introduces /runs/:id/events showing all events for a run with the same
look as the stage Debug tab — toolbar with category filter and search,
plus a row-by-row list with an expandable details panel. Extracts the
shared event-list primitives from run-stages.tsx into a new
event-debug.tsx module so both views stay in sync.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Always request encrypted reasoning content for Responses API requests with store:false so GPT-5.5 reasoning items can be sent back on later turns without relying on server-side item persistence.
The Steer modal was replaced by the steer bar on the run detail page,
so the per-card Watch and Steer actions are no longer needed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Expand the OpenAPI contract for frontend auth and workflow routes, regenerate the TypeScript Axios client, and route web API calls through generated client classes while preserving SSE and install exceptions.
The hide-non-billable filter introduced in 77e5d06c4 also hid actively
running stages because they haven't accrued tokens or spend yet. Exempt
in-flight rows from the filter so live stages stay visible while users
are watching the run.
Updates the two RunBilling unit tests that were asserting the
pre-77e5d06c4 behavior of showing completed non-LLM rows.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>