Docs updates: reorder nav, rename DOT Language, simplify dark factory, add fork/upgrade/asset docs

- Move Comparison link below Troubleshooting in nav
- Rename "DOT Language" page to "Fabro Language"
- Remove five-tier table from dark factory page, keep link to Dan Shapiro's post
- Add fork command docs and checkpoints section
- Add upgrade, asset list, asset cp command docs
- Add upgrade_check config reference
- Add retros feature flag to server config

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Bryan Helmkamp 2026-03-15 20:13:23 -04:00
parent cea079a4b6
commit aee3de78a2
8 changed files with 115 additions and 15 deletions

View file

@ -1 +1 @@
ec0a612ea531fcf53383afb15ad23561a7bbe6ae
49379f08d0f26d38c25f036738c4a85cddd7a323

View file

@ -102,7 +102,6 @@
"group": "Reference",
"icon": "book",
"pages": [
"getting-started/comparison",
"reference/dot-language",
"reference/cli",
"reference/cli-configuration",
@ -110,6 +109,7 @@
"reference/architecture",
"administration/server-configuration",
"administration/troubleshooting",
"getting-started/comparison",
"administration/security",
"reference/acknowledgements"
]

View file

@ -168,6 +168,25 @@ fabro run --run-branch fabro/run/<RUN_ID>
See [`fabro rewind`](/reference/cli#fabro-rewind) for the full command reference.
## Forking a run
If you want to explore an alternate path from a checkpoint without losing the original run's history, use `fabro fork` instead of `fabro rewind`. Fork creates a new independent run branching from the target checkpoint — the original run stays intact.
```bash
# List checkpoints
fabro fork <RUN_ID> --list
# Fork from a specific checkpoint
fabro fork <RUN_ID> plan@2
# Resume the forked run
fabro run --run-branch fabro/run/<NEW_RUN_ID>
```
Use **rewind** when you want to redo a run from an earlier point (destructive — resets the original). Use **fork** when you want to try a different approach while keeping the original run as a reference.
See [`fabro fork`](/reference/cli#fabro-fork) for the full command reference.
## When checkpointing is active
Git checkpointing activates automatically when:

View file

@ -11,18 +11,7 @@ This is an aspirational concept, and getting there is iterative.
## From coding to orchestrating
Dan Shapiro's [five-level framework](https://www.danshapiro.com/blog/2026/01/the-five-levels-from-spicy-autocomplete-to-the-software-factory/) describes the progression from AI-assisted coding to autonomous software production:
| Level | Name | Human role |
|-------|------|------------|
| 0 | Spicy Autocomplete | Copy/paste from chat |
| 1 | Coding Intern | AI writes boilerplate; human reviews everything |
| 2 | Junior Developer | Pair programming with AI |
| 3 | Developer | Most code is AI-generated; human is a full-time reviewer |
| 4 | Engineering Team | Human manages specs and plans; agents do the work |
| 5 | Dark Software Factory | Specs go in, software comes out |
Most teams today operate at Level 23: AI writes code, humans review it line by line. The transition from Level 3 to Level 4 is the hardest — it requires replacing ad-hoc human review with structured, repeatable verification that you actually trust.
Most teams today have AI writing code while humans review it line by line. The hardest transition is moving beyond that — replacing ad-hoc human review with structured, repeatable verification that you actually trust. Dan Shapiro's [five-level framework](https://www.danshapiro.com/blog/2026/01/the-five-levels-from-spicy-autocomplete-to-the-software-factory/) describes this progression well.
## What makes it work

View file

@ -21,6 +21,7 @@ CLI flags always take the highest priority:
```toml title="cli.toml"
verbose = true
upgrade_check = true
mode = "server"
[server]
@ -69,6 +70,17 @@ Authorization = "Bearer sk-xxx"
All fields are optional. You can include just the sections and keys you want to override.
## `upgrade_check`
Controls whether Fabro runs a daily background check for new releases. The check runs during `run`, `exec`, `init`, and `install` commands and prints a notice to stderr when a newer version is available.
| Value | Description |
|---|---|
| `true` | Check for new releases (default) |
| `false` | Disable automatic upgrade checks |
The `--no-upgrade-check` CLI flag overrides this for a single invocation. See [`fabro upgrade`](/reference/cli#fabro-upgrade) for manual upgrades.
## `verbose`
Enable verbose output by default for `fabro run start` and `fabro doctor`, without passing `-v` every time.

View file

@ -10,6 +10,7 @@ These flags apply to all subcommands:
| Flag | Description |
|---|---|
| `--debug` | Enable DEBUG-level logging (default is INFO) |
| `--no-upgrade-check` | Skip the automatic background upgrade check |
| `-h, --help` | Print help |
| `-V, --version` | Print version |
@ -424,6 +425,30 @@ fabro run --run-branch fabro/run/<RUN_ID>
See [Checkpoints](/execution/checkpoints#rewinding-to-an-earlier-checkpoint) for background on how checkpointing works.
## `fabro fork`
Fork a new run from an existing run's checkpoint. Unlike `fabro rewind`, which resets the original run in place, `fabro fork` creates an independent copy — the original run stays intact.
```bash
fabro fork <RUN_ID> [TARGET]
fabro fork <RUN_ID> --list
```
| Argument / Flag | Description |
|---|---|
| `<RUN_ID>` | Run ID or unambiguous prefix (required) |
| `[TARGET]` | Checkpoint to fork from: node name, `node@visit`, or `@ordinal` (1-based). Omit to fork from the latest checkpoint. |
| `--list` | Show the checkpoint timeline instead of forking |
| `--no-push` | Skip pushing new branches to the remote |
Target formats are the same as [`fabro rewind`](#fabro-rewind). After forking, resume the new run:
```bash
fabro run --run-branch fabro/run/<NEW_RUN_ID>
```
See [Checkpoints — Forking a run](/execution/checkpoints#forking-a-run) for when to use fork vs. rewind.
## `fabro logs`
View the event log of a workflow run. Runs can be referenced by ID prefix or workflow name (uses the most recent run).
@ -595,6 +620,58 @@ fabro doctor --dry-run
| `-v, --verbose` | Show detailed information for each check |
| `--dry-run` | Skip live service probes (LLM, sandbox, API, web, Brave Search) |
## `fabro upgrade`
Download and install a newer version of Fabro from GitHub releases. Verifies the download with SHA256 checksums and atomically replaces the binary.
```bash
fabro upgrade
fabro upgrade --dry-run
fabro upgrade --version 0.6.0
```
| Flag | Description |
|---|---|
| `--version <VERSION>` | Target version (e.g. `0.5.0` or `v0.5.0`). Defaults to the latest release. |
| `--force` | Upgrade even if already on the target version |
| `--dry-run` | Preview what would happen without making changes |
Fabro refuses to downgrade unless you specify an explicit `--version`. A daily background check notifies you when a new version is available — disable it with `upgrade_check = false` in [`cli.toml`](/reference/cli-configuration#upgrade_check) or the `--no-upgrade-check` global flag.
## `fabro asset list`
List assets (screenshots, test reports, traces) collected from a workflow run.
```bash
fabro asset list <RUN_ID>
fabro asset list <RUN_ID> --node verify --json
```
| Argument / Flag | Description |
|---|---|
| `<RUN_ID>` | Run ID or unambiguous prefix (required) |
| `--node <NODE>` | Filter to assets from a specific node |
| `--json` | Output as JSON |
## `fabro asset cp`
Copy assets from a workflow run to the local filesystem.
```bash
fabro asset cp <RUN_ID> ./output # all assets, flat
fabro asset cp <RUN_ID> ./output --tree # preserve directory structure
fabro asset cp <RUN_ID>:report.html ./output # specific file
```
| Argument / Flag | Description |
|---|---|
| `<SOURCE>` | `RUN_ID` (all assets) or `RUN_ID:path` (specific file) |
| `[DEST]` | Destination directory (defaults to `.`) |
| `--node <NODE>` | Filter to assets from a specific node |
| `--tree` | Preserve `{node}/{retry}/` directory structure |
When copying all assets in flat mode, filenames must be unique across nodes. Use `--tree` or `--node` to disambiguate.
## `fabro install`
Interactive setup wizard that walks you through configuring API keys and validating your environment. Runs `fabro doctor` with live probes after setup to validate the configuration.

View file

@ -1,5 +1,5 @@
---
title: "DOT Language"
title: "Fabro Language"
description: "Complete reference for Fabro's DOT workflow language"
---

View file

@ -118,6 +118,9 @@ impl Default for WebConfig {
pub struct Features {
#[serde(default)]
pub session_sandboxes: bool,
/// Experimental: enable automatic retro generation after workflow runs.
#[serde(default)]
pub retros: bool,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]