fabro/docs/public/changelog
Bryan Helmkamp a33d17c88d
feat(run): add managed branch controls (#243)
## Summary

Adds run-level controls for clone behavior, managed run branch
setup/pushes, and metadata branch writes/pushes so workflows can opt out
of Fabro-managed Git behavior without relying on provider-specific
`skip_clone` settings. This closes fabro-sh/fabro#240.

## What Changed

- Introduced `[run.clone]`, `[run.run_branch]`, and `[run.meta_branch]`
settings with defaults that preserve current behavior.
- Removed user-facing `skip_clone` from Docker/Daytona config while
mapping the new run-level clone setting into the internal sandbox
runtime options.
- Gated run branch setup/push, metadata branch writer creation/push, and
PR branch output on the new settings.
- Enforced invalid combinations: pull requests require an enabled pushed
run branch, and disabling the run branch also disables metadata branch
behavior.
- Updated OpenAPI, the generated TypeScript API client, frontend fixture
data, and docs for the new configuration shape.

## Testing

- `cargo nextest run -p fabro-config -p fabro-types -p fabro-workflow -p
fabro-server`
- `cargo build -p fabro-api`
- `cd lib/packages/fabro-api-client && bun run generate`
- `cd lib/packages/fabro-api-client && bun run typecheck`
- `cd apps/fabro-web && bun run typecheck`
- `cd apps/fabro-web && bun test`
- `cargo build --workspace`
- `cargo +nightly-2026-04-14 fmt --check --all`
- `cargo +nightly-2026-04-14 clippy --workspace --all-targets -- -D
warnings`
- `cargo insta pending-snapshots`
- `git diff --check`

## Post-Deploy Monitoring & Validation

- Validation window: first 24 hours after release; owner: release
owner/on-call engineer.
- Log queries/search terms: `run_branch`, `meta_branch`,
`clone.enabled`, `skip_clone`, `pull request requires an enabled pushed
run branch`, `metadata branch`.
- Healthy signals: runs without custom branch config continue creating
and pushing run/meta branches; runs with `[run.clone] enabled = false`
start provider sandboxes without cloning; runs with branch pushes
disabled complete without Git push errors.
- Failure signals: increased run startup failures for Docker/Daytona,
unexpected PR creation conflicts, missing metadata for default-config
runs, or validation errors for configurations that previously used
default settings.
- Mitigation trigger: if default-config runs stop producing expected
branch/metadata artifacts or sandbox startup failures increase, roll
back the release or temporarily restore previous defaults while
investigating the run-level setting resolution path.

---

[![Compound
Engineering](https://img.shields.io/badge/Compound_Engineering-6366f1)](https://github.com/EveryInc/compound-engineering-plugin)
🤖 Generated with GPT-5 via [Codex](https://openai.com/codex)

Co-authored-by: Haroldo Olivieri <6575718+haroldolivieri@users.noreply.github.com>
2026-05-12 12:00:30 -04:00
..
2026-02-23.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-02-24.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-02-25.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-02-26.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-02-27.mdx Add ACP backend support (#237) 2026-05-11 23:39:43 -04:00
2026-02-28.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-01.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-02.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-03.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-04.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-05.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-06.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-07.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-08.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-09.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-10.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-11.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-12.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-13.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-14.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-15.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-16.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-17.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-18.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-19.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-20.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-21.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-22.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-23.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-26.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-27.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-28.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-29.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-30.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-03-31.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-01.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-02.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-04.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-06.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-07.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-08.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-09.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-10.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-11.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-12.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-13.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-14.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-15.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-16.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-17.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-18.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-19.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-20.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-21.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-22.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-23.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-24.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
2026-04-25.mdx docs(changelog): refresh recent product changes 2026-04-30 08:11:08 -04:00
2026-04-26.mdx feat(run): add managed branch controls (#243) 2026-05-12 12:00:30 -04:00
2026-04-27.mdx docs(changelog): refresh recent product changes 2026-04-30 08:11:08 -04:00
2026-04-28.mdx docs(changelog): refresh recent product changes 2026-04-30 08:11:08 -04:00
2026-04-29.mdx docs(changelog): refresh recent product changes 2026-04-30 08:11:08 -04:00
2026-04-30.mdx docs(changelog): refresh recent product changes 2026-05-04 11:38:55 -04:00
2026-05-01.mdx docs(changelog): refresh recent product changes 2026-05-04 11:38:55 -04:00
2026-05-02.mdx docs(changelog): refresh recent product changes 2026-05-04 11:38:55 -04:00
2026-05-03.mdx docs(changelog): refresh recent product changes 2026-05-04 11:38:55 -04:00
2026-05-04.mdx docs(changelog): refresh recent product changes 2026-05-06 07:39:09 -04:00
2026-05-05.mdx docs(changelog): refresh recent product changes 2026-05-06 07:39:09 -04:00
2026-05-06.mdx docs(changelog): refresh recent product changes 2026-05-08 14:44:18 -07:00
2026-05-07.mdx docs(changelog): refresh recent product changes 2026-05-08 14:44:18 -07:00
2026-05-08.mdx docs(changelog): refresh recent product changes 2026-05-12 08:29:02 -04:00
2026-05-09.mdx docs(changelog): refresh recent product changes 2026-05-12 08:29:02 -04:00
2026-05-10.mdx docs(changelog): refresh recent product changes 2026-05-12 08:29:02 -04:00
2026-05-11.mdx docs(changelog): refresh recent product changes 2026-05-12 08:29:02 -04:00