Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
122 commits
Select commit Hold shift + click to select a range
580c585
[claude/terminal] docs(skills): codify Visible Dispatch (vc-frame) ac…
div0-space Jun 29, 2026
6cd54e7
[codex/terminal] test(runtime): RED state-parity test reproducing con…
div0-space Jun 29, 2026
9105256
[junie/runtime] fix(runtime): single control-plane state writer acros…
div0-space Jun 30, 2026
dcaf7ce
[claude/interactive] chore(deprivatize): neutralize home-path usernames
m-szymanska Jun 30, 2026
e500709
[claude/interactive] chore(deprivatize): collapse personal names to V…
m-szymanska Jun 30, 2026
3040b9d
[claude/interactive] chore(deprivatize): genericize private infra dep…
m-szymanska Jun 30, 2026
732411a
[claude/interactive] chore(deprivatize): drop camelCase brand spellings
m-szymanska Jun 30, 2026
0a93d03
[claude/interactive] chore(deprivatize): neutralize remaining home-pa…
m-szymanska Jun 30, 2026
5ccf497
[claude/interactive] chore(deprivatize): drop camelCase brand spellin…
m-szymanska Jun 30, 2026
a13110d
[claude/interactive] fix(test): restore shim leak-guard semantics aft…
m-szymanska Jun 30, 2026
19760d7
[claude/interactive] fix(deprivatize): lowercase Vetcoders in URLs an…
m-szymanska Jun 30, 2026
acbe4e3
[claude/interactive] fix(deprivatize): lowercase org/repo pair, keep …
m-szymanska Jun 30, 2026
84ac1ce
[junie/runtime] refactor(runtime): collapse sync/async supervisors to…
div0-space Jun 30, 2026
594695d
[claude/terminal] ci(security): pin Actions to SHAs + de-pipe curl in…
div0-space Jun 30, 2026
98675ce
[claude/terminal] test(runtime): execution-path state-parity gate + l…
div0-space Jun 30, 2026
54fb3fd
[junie/runtime] feat(runtime): truthful observe/await + report-on-dea…
div0-space Jun 30, 2026
3442f59
[claude/terminal] fix(runtime): junie stream events no longer render …
div0-space Jun 30, 2026
1c9bc38
[claude/interactive] chore(deprivatize): neutralize author footers, p…
m-szymanska Jul 1, 2026
8761e02
Merge remote-tracking branch 'origin/feat/runtime-cleanup' into chore…
m-szymanska Jul 1, 2026
f1d9bab
[claude/interactive] test(runtime): align operator-mode/resume assert…
m-szymanska Jul 1, 2026
6e2daec
[claude/terminal] fix(runtime): honour explicit operator session in v…
div0-space Jul 2, 2026
fbedbc3
[claude/workflow] chore(core): remove dead dispatch_contract twin sup…
div0-space Jul 2, 2026
fac8cc8
[claude/vc-ownership] fix(hooks): make [<agent>/<workflow>] prefix ma…
div0-space Jul 2, 2026
ed43a02
[claude/workflow] feat(core): surface worker-requested next_stage as …
div0-space Jul 2, 2026
6929dfd
[claude/workflow] feat(core): route every ship-stage workflow through…
div0-space Jul 2, 2026
202e61f
[claude/workflow] feat(core): hand the lifecycle baton to the next agent
div0-space Jul 2, 2026
8d941f9
[claude/workflow] feat(core): make lifecycle human_controls real oper…
div0-space Jul 2, 2026
1c130c2
[claude/workflow] fix(core): carry baton previous_reports across oper…
div0-space Jul 2, 2026
a1173e7
[claude/workflow] feat(core): make ZERO DoU index a measurable runtim…
div0-space Jul 2, 2026
beb8bf9
[claude/workflow] fix(core): gate approve on baton report validity
div0-space Jul 2, 2026
ba25377
[claude/interactive] fix(core): stop DEFAULT_SHIP_PROMPT from shadowi…
div0-space Jul 2, 2026
9757620
[codex/headless] feat(server): surface lifecycle runs
div0-space Jul 2, 2026
0ebb42f
[codex/headless] fix(server): show lifecycle controls
div0-space Jul 2, 2026
27b0c66
[codex/headless] fix(server): move profiles to workspace root
div0-space Jul 2, 2026
10af1e2
[codex/headless] fix(server): harden lifecycle path fallbacks
div0-space Jul 2, 2026
55989f2
[codex/headless] fix(server): quiet favicon probe
div0-space Jul 2, 2026
02104a9
[claude/interactive] feat(mcp): expose lifecycle operator verbs as MC…
div0-space Jul 2, 2026
84858c8
[codex/vc-marbles] fix(server): read lifecycle DoU from stage reports
div0-space Jul 2, 2026
6e6d2b3
[codex/vc-marbles] test(server): pin lifecycle control metrics in smoke
div0-space Jul 2, 2026
8ec60cf
[codex/vc-marbles] test(server): prove lifecycle detail dou state
div0-space Jul 2, 2026
688ac69
[codex/vc-polarize] chore(server): advertise lifecycle endpoints
div0-space Jul 2, 2026
8ed75fb
[codex/headless] docs(server): hydrate lifecycle API docs
div0-space Jul 2, 2026
a925276
[claude/interactive] chore(release): align core version to 3.3.0
div0-space Jul 3, 2026
fa45e31
[claude/interactive] test(tui): align frame-context asserts with W1-0…
div0-space Jul 3, 2026
8cadf4d
[claude/interactive] test(tui): teach spawn-direction fake vc-frame t…
div0-space Jul 3, 2026
6db03db
[codex/headless] feat(lifecycle): publish schema v1 contract
div0-space Jul 3, 2026
cf6f0bb
[codex/vc-marbles] test(lifecycle): validate schema after control mut…
div0-space Jul 3, 2026
2944696
[codex/vc-marbles] test(lifecycle): harden schema contract assertions
div0-space Jul 3, 2026
3f792a4
[codex/vc-polarize] test(lifecycle): validate accept-dou schema reload
div0-space Jul 3, 2026
c866ccb
[codex/hydrate] docs(lifecycle): add consumer proof packet
div0-space Jul 3, 2026
390bbd3
[claude/interactive] docs(runtime): seed the agent-ops canon with two…
div0-space Jul 3, 2026
e81bbbd
[claude/interactive] feat(core): make agent-ops failure-class prevent…
div0-space Jul 3, 2026
cf7495f
[claude/interactive] feat(core): dispatcher writes stage worker death…
div0-space Jul 3, 2026
e6eb47f
[claude/interactive] feat(skills): author the missing vc-ship meta-skill
div0-space Jul 5, 2026
1540d35
[claude/interactive] fix(core): vc-ship stage workers default to visi…
div0-space Jul 5, 2026
1f2ee86
[claude/interactive] feat(core): operator A-to-Z stage casting via mi…
div0-space Jul 5, 2026
a94f867
[claude/interactive] feat(core): ship await - lifecycle-level observa…
div0-space Jul 5, 2026
d315695
[claude/interactive] fix(core): make await the one trusted observabil…
div0-space Jul 6, 2026
33d7c8e
[claude/interactive] fix(core): report_delivered requires a gone worker
div0-space Jul 6, 2026
2aa36f2
[claude/interactive] fix(runtime): vc-resume accepts positional sessi…
div0-space Jul 6, 2026
5e60904
[codex/terminal] fix(core): make runtime receipts honest
div0-space Jul 6, 2026
76ab775
[codex/terminal] feat(core): pin lifecycle stage models
div0-space Jul 6, 2026
9dce409
[codex/terminal] fix(installer): ship skill rule files
div0-space Jul 6, 2026
9ce3735
[claude/interactive] fix(config): default_layout compact -> default f…
div0-space Jul 7, 2026
1cb0b18
[claude/interactive] test(tui): vc-ship is intended bundle surface
div0-space Jul 9, 2026
5aa89f5
[codex/workflow] docs(await): harden supervision doctrine
div0-space Jul 10, 2026
47df7bc
[codex/implement] fix(await): require dead-worker terminal evidence
div0-space Jul 10, 2026
899e67f
[codex/implement] feat(research): configure swarm runtime yaml
Jul 10, 2026
d82ac5d
[codex/vc-implement] fix(version): make installed version authoritative
div0-space Jul 11, 2026
66ac37e
[codex/vc-implement] feat(bundle): enforce one runtime payload manifest
div0-space Jul 11, 2026
cce39e1
[codex/vc-implement] build(bundle): make tarball contents provable
div0-space Jul 11, 2026
9fa28aa
[codex/vc-implement] fix(uninstall): remove every managed runtime root
div0-space Jul 11, 2026
9a0639c
[codex/vc-implement] fix(dispatch): emit honest terminal launch receipts
div0-space Jul 11, 2026
2f93191
[codex/vc-implement] fix(bundle): keep subtree migrations complete
div0-space Jul 11, 2026
b1091c2
[codex/vc-workflow] fix(polarize): preserve loop options through life…
div0-space Jul 12, 2026
e6d0bd2
[claude/interactive] style(tests): format test_launcher_surface
div0-space Jul 12, 2026
03c6626
[claude/interactive] style(docs): prettier-format submission forms an…
div0-space Jul 12, 2026
aaec58f
[claude/interactive] fix(runners): agy 1.1 print-as-value prompt cont…
div0-space Jul 12, 2026
eb56278
[grok/vc-implement] fix(runners): align grok lane with 0.2.97 contract
div0-space Jul 12, 2026
a0c22d5
[junie/vc-implement] fix(runners): junie JSON telemetry receipts
div0-space Jul 12, 2026
845548e
[codex/vc-workflow] fix(bundle): prove complete payload from clean trees
div0-space Jul 12, 2026
9c90518
[claude/interactive] fix(control-plane): cure global flock migraine a…
div0-space Jul 12, 2026
ccd15be
[claude/interactive] test(agy): fake agent reads prompt from --print …
div0-space Jul 12, 2026
7c69aff
[claude/interactive] fix(control-plane): take the emit path off the g…
div0-space Jul 12, 2026
d96cf47
[claude/interactive] test(control-plane): guard the lockless doctrine…
div0-space Jul 12, 2026
5fa6062
[claude/interactive] feat(dispatch): carry per-cut model pin from pla…
Jul 12, 2026
6f01a83
[claude/interactive] docs(vc-dispatch): require deliberate model pin …
Jul 12, 2026
3a67f8b
[claude/interactive] docs(vc-dispatch): mirror model-pin doctrine in …
Jul 12, 2026
974b3a1
[claude/interactive] docs(vc-dispatch): make model-tier wording vendo…
Jul 12, 2026
f11435f
Merge remote-tracking branch 'origin/main' into feat/sdk-preparation
Jul 12, 2026
6a905b3
[claude/claude-code] docs(vc-ship): add canonical orientation contrac…
Jul 12, 2026
6e0358c
[claude/claude-code] test(tui): align tokens_total assertion with hon…
Jul 12, 2026
d92ac3d
[claude/worker-basic] chore(deprivatize): collapse leftover author id…
Jul 12, 2026
72aad0c
[claude/worker-default] fix(installer): guard root-rule sync against …
Jul 12, 2026
8b06747
[claude/worker-basic] perf(manifest): prune excluded directories duri…
Jul 12, 2026
70210ff
[claude/worker-basic] docs(vc-review): repair broken markdown tables …
Jul 12, 2026
aebe135
[claude/worker-basic] docs(submission): repair markdown tables (PR #1…
Jul 12, 2026
02eb5eb
[claude/worker-basic] docs(vc-operator): translate EN leak in PL AWAI…
Jul 12, 2026
9e8b6e2
[claude/worker-basic] docs(vc-dispatch): translate EN leak in PL skil…
Jul 12, 2026
00c458a
[claude/worker-default] fix(runtime): honor dry-run in skills_sync rs…
Jul 12, 2026
c495295
[claude/worker-basic] fix(runtime): honor dry-run in skills_sync --wi…
Jul 12, 2026
d519b15
[codex/terminal] fix(review): preserve copy-ready pipes and dry-run p…
div0-space Jul 12, 2026
c164174
[codex/terminal] test(pytest): isolate duplicate module basenames
div0-space Jul 12, 2026
1ba98c2
[codex/terminal] test(runtime): lock review regressions into contracts
div0-space Jul 12, 2026
d789f45
[codex/terminal] release: set version truth to 3.5.0
div0-space Jul 12, 2026
0a6e656
[claude/worker-basic] test(portable): align sync dry-run smoke with p…
Jul 12, 2026
cc8b8fe
[claude/worker-default] test(tui): restore real-run coverage for skil…
Jul 12, 2026
a509f54
[claude/cli] style(docs): realign table padding after pipe entity swap
Jul 12, 2026
13b79ce
[codex/terminal] fix(runtime): restore model-aware cost telemetry
div0-space Jul 12, 2026
7ba3c38
[codex/terminal] test(runtime): pin reported cost regressions
div0-space Jul 12, 2026
961f577
[grok/workflow] Full Gemini CLI deprecation and Agy runtime rewire
div0-space Jul 12, 2026
be68f8a
[codex/terminal] test(pytest): force live source imports
div0-space Jul 12, 2026
dd88e2d
Merge branch 'main' into feat/sdk-preparation
div0-space Jul 12, 2026
d50115e
[grok/workflow] Full Gemini CLI deprecation + Agy rewire (completion,…
div0-space Jul 12, 2026
fcc36a4
[codex/terminal] fix(agy): close deprecation review fallout
div0-space Jul 12, 2026
48ae05d
[codex/terminal] fix(agy): align init and research surfaces
div0-space Jul 12, 2026
d6ea6e1
[codex/terminal] fix(runtime): make staged launches self-contained
div0-space Jul 12, 2026
32dfa2f
[codex/terminal] fix(runtime): decouple launch receipt from board sync
div0-space Jul 12, 2026
3a22a78
[codex/terminal] test(portable): isolate ambient runtime identity
div0-space Jul 12, 2026
1b0b66d
[codex/terminal] fix(research): complete agy default migration
div0-space Jul 12, 2026
8717c87
test(agy): align launcher help expectations
div0-space Jul 12, 2026
0e51192
docs(agy): correct remaining model guidance
div0-space Jul 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 1 addition & 19 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,25 +46,7 @@ jobs:
run: |
archive_name="vibecrafted-${{ steps.version.outputs.version }}"
mkdir -p dist
tar -czf "dist/${archive_name}.tar.gz" \
--exclude='./dist' \
--exclude='./vibecrafted-framework.plugin' \
--exclude='./.pytest_cache' \
--exclude='./presence' \
--exclude='./.github' \
--exclude='./.git' \
--exclude='./node_modules' \
--exclude='./output' \
--exclude='./.vibecrafted' \
--exclude='./.DS_Store' \
--exclude='./docs/index.html' \
--exclude='./docs/pl' \
--exclude='./docs/presence' \
--exclude='./docs/CNAME' \
--exclude='./docs/foundation' \
--exclude='./docs/playground' \
--exclude='./docs/install.sh' \
-C . .
uv run python3 scripts/distribution_manifest.py archive --source . --output "dist/${archive_name}.tar.gz" --root-name "$archive_name"
echo "archive=${archive_name}.tar.gz" >> "$GITHUB_OUTPUT"

- name: Sign release artifacts
Expand Down
23 changes: 15 additions & 8 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ tui-installer: init-hooks
# control plane matches the branded install surface; otherwise it falls
# back to the built-in inline HTML.
BUNDLE_DIR ?=
BUNDLE_VERSION := $(shell sed -n '1p' "$(VERSION_FILE)" 2>/dev/null | tr -d '[:space:]')
BUNDLE_ARCHIVE ?= $(SOURCE)/dist/vibecrafted-$(BUNDLE_VERSION).tar.gz

wizard: init-hooks
@if [ -n "$(BUNDLE_DIR)" ]; then \
Expand Down Expand Up @@ -246,18 +248,23 @@ list:

bundle:
@$(PYTHON) scripts/build_marketplace_bundle.py --output "$(SOURCE)/vibecrafted-framework.plugin"
@mkdir -p "$(dir $(BUNDLE_ARCHIVE))"
@$(PYTHON) scripts/distribution_manifest.py archive --source "$(SOURCE)" --output "$(BUNDLE_ARCHIVE)" --root-name "vibecrafted-$(BUNDLE_VERSION)"

bundle-check:
@tmp_root="$${TMPDIR:-/tmp}"; \
@set -e; \
tmp_root="$${TMPDIR:-/tmp}"; \
tmp_bundle="$$(mktemp "$$tmp_root/vibecrafted-bundle.XXXXXX")"; \
trap 'rm -f "$$tmp_bundle"' EXIT; \
tmp_runtime="$$(mktemp -d "$$tmp_root/vibecrafted-runtime.XXXXXX")"; \
tmp_archive="$$tmp_runtime/vibecrafted-$(BUNDLE_VERSION).tar.gz"; \
trap 'rm -f "$$tmp_bundle"; rm -rf "$$tmp_runtime"' EXIT; \
$(PYTHON) scripts/build_marketplace_bundle.py --output "$$tmp_bundle"; \
if cmp -s "$$tmp_bundle" "$(SOURCE)/vibecrafted-framework.plugin"; then \
echo "Bundle is current."; \
else \
echo "Bundle drift detected. Run 'make bundle'."; \
exit 1; \
fi
test -s "$$tmp_bundle" || { echo "Marketplace bundle generation produced an empty artifact."; exit 1; }; \
$(PYTHON) scripts/distribution_manifest.py archive --source "$(SOURCE)" --output "$$tmp_archive" --root-name "vibecrafted-$(BUNDLE_VERSION)"; \
mkdir -p "$$tmp_runtime/extracted"; \
tar -xzf "$$tmp_archive" -C "$$tmp_runtime/extracted"; \
$(PYTHON) scripts/distribution_manifest.py check --root "$$tmp_runtime/extracted/vibecrafted-$(BUNDLE_VERSION)"; \
echo "Marketplace bundle and runtime payload are valid."

version version-show:
@version="$$(sed -n '1p' "$(VERSION_FILE)" 2>/dev/null | tr -d '[:space:]')"; \
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.3.0
3.5.0
Comment thread
div0-space marked this conversation as resolved.
3 changes: 2 additions & 1 deletion config/vc-frame/config.kdl
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ theme "pastel"

// ─── Shell & Display ────────────────────────────────────────────────────────────
default_shell "zsh"
default_layout "compact"
// compact chowal rail SESSIONS z nowego default.kdl (2026-07-07)
default_layout "default"
copy_command "pbcopy"
mouse_mode true
pane_frames true
Expand Down
2 changes: 1 addition & 1 deletion docs/CONTRIBUTING-SKILLS.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ Optional but encouraged:
| Key | When to use |
| --------------- | ---------------------------------------------------------------------------------- |
| `requires:` | Foundation tools or sibling skills this depends on. |
| `agent_target:` | If the skill is biased toward one agent (claude / codex / gemini). |
| `agent_target:` | If the skill is biased toward one agent (claude / codex / agy). |
| `triggers:` | Explicit operator phrases as a YAML list, when the description prose is too dense. |

The smoke gate at `tests/skill_loader_smoke.sh` only checks structural
Expand Down
23 changes: 19 additions & 4 deletions docs/INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -294,12 +294,27 @@ See [`docs/DOCKER.md`](DOCKER.md) for the full container workflow.
## Uninstall

```bash
make uninstall # remove skills + shell helpers
make restore # undo last install/uninstall step
rm -rf "$HOME/.vibecrafted" # nuclear option (removes EVERYTHING)
vibecrafted uninstall
```

The installer leaves a transaction log at `~/.vibecrafted/install.log`.
Before consent, uninstall prints one inventory of every managed path it will
remove or edit and every path it will intentionally preserve. It removes staged
`vibecrafted-*` payloads, the `vibecrafted-current` link, launchers, managed
skills/views, helpers, shell lines, the start guide, and the installer log.
Unknown siblings in the runtime tools directory are retained.

The restore kit survives teardown under
`~/.vibecrafted/backups/installer/<timestamp>/`. The final receipt prints its
exact self-contained command, for example:

```bash
python3 ~/.vibecrafted/backups/installer/<timestamp>/restore.py
```

Runtime binaries and uv-owned tool environments are reported as preserved when
the installer cannot prove ownership; remove those separately with their named
owner if desired. Operator artifacts, control-plane history, and logs under
`~/.vibecrafted/` are retained intentionally and listed in the receipt.

---

Expand Down
13 changes: 13 additions & 0 deletions docs/QUICK_START.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,19 @@ vibecrafted tui
vibecrafted dispatch path/to/run.dispatch.toml --doctor
```

Inside a dispatch plan, pin a model per cut to match its class — the pin rides
the plan into the launcher, and an unpinned cut falls back to the account
default:

```toml
[[cuts]]
id = "refactor-parser"
agent = "codex"
workflow = "implement"
model = "gpt-5-codex" # pin the model to the cut's class; unset = account default
prompt = "..."
```

`gui`, `tui`, `dashboard`, `dispatch`, and telemetry commands are real runtime
surfaces. They are second-visit tools, not the first thing a new operator needs
to memorize.
Expand Down
6 changes: 3 additions & 3 deletions docs/SUBMISSION_FORMS.md
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@ Use these as the default copy/paste answers when a form asks for the common
launch fields:

| Field | Paste-ready answer |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Product name | `𝚅𝚒𝚋𝚎𝚌𝚛𝚊𝚏𝚝𝚎𝚍.` |
| Tagline | `Release engine for AI-built software.` |
| Secondary line | `Ship AI-built software without the vibe hangover.` |
Expand All @@ -299,8 +299,8 @@ launch fields:
| Docs | `https://vibecrafted.io/en/quickstart/` |
| Category | `Developer Tools`, `AI Agents`, `Release Engineering` |
| Pricing | `Free for personal use and startups. Enterprise licensing available.` |
| Primary CTA | `curl -fsSL https://vibecrafted.io/install.sh | bash -s -- --gui` |
| Backup CTA | `curl -fsSL https://vibecrafted.io/install.sh | bash` |
| Primary CTA | `curl -fsSL https://vibecrafted.io/install.sh &#124; bash -s -- --gui` |
| Backup CTA | `curl -fsSL https://vibecrafted.io/install.sh &#124; bash` |
| 160-char summary | `Vibecrafted hardens AI-generated repos through structural mapping, convergence loops, install audits, and launch-ready packaging.` |
| 300-char summary | `Vibecrafted is the release engine for AI-built software. It takes the repo your agents already produced and drives it through perception, verification, convergence loops, install truth, and launch-readiness work until the product is fit to ship.` |

Expand Down
21 changes: 16 additions & 5 deletions docs/operator/FLEET_DISPATCH_RUNBOOK.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ vibecrafted <workflow> <agent> --file briefs/<N>-<cut>_<slug>.md # e.g. vibecr
vibecrafted <workflow> <agent> --prompt '<inline intent>'
```

- `agent` ∈ {codex, claude, gemini, junie, agy, grok}. Pick via the **why-matrix**:
- `agent` ∈ {codex, claude, agy, junie, grok}. Pick via the **why-matrix** (gemini deprecated; agy for Google-family)
**codex = precision/surgery** (contract-gated refactors, exact edits), **claude = forensics/audit**
(deep unknowns, bug hunts), **gemini = radical reframing** (architecture leaps, simplification).
(deep unknowns, bug hunts), **agy = Google-family (antigravity rewire; gemini deprecated)** (architecture leaps, simplification).
- Headless (non-TTY agent bash) **degrades to in-repo dispatch automatically**. A launch receipt
prints `run_id` + report/transcript/meta paths — capture them.
- **Disjoint file-domains → safe parallel dispatch** (Living Tree). Overlapping domains → sequence them.
Expand All @@ -63,9 +63,20 @@ vibecrafted <workflow> <agent> --prompt '<inline intent>'

## 5. Observe (metadata-first, not pane-first)

- `vibecrafted <agent> await --run-id <id>` (or `--last`) waits on completion + prints the summary.
- Poll durable artifacts: `~/.vibecrafted/artifacts/<org>/<repo>/<date>/reports/*.meta.json` (status)
- `*.transcript.log` (live work). The fleet stays operable from artifacts even with no panes open.
- After dispatch, arm `vibecrafted <agent> await --run-id <id>` immediately,
supervisor-side. Control-plane JSON, report files, transcripts, panes, and
scheduled wakeups are diagnostic only, not wake signals. Hedging await with
ad-hoc pollers/watchers is a Class 3 violation; fix `control_plane.await_run`,
do not normalize the hedge. See `docs/runtime/AGENT_OPS.md`.
- Liveness is always 3-signal: await verdict, terminal run meta, worker pid
dead, plus promised report presence. Two agreeing signals are enough to act;
three are required to declare done. Any disagreement means treat as live and
re-arm await. Known skew: rc=0-on-live and meta stuck `active`/`stalled` after
real completion.
- Durable artifacts (`*.meta.json`, `*.transcript.log`, report paths) are
diagnostic drilldowns after await is armed. The fleet stays operable from
artifacts even with no panes open, but artifact polling does not replace the
canonical await.
- **Verify each cut** against its brief acceptance + run its gates (tests / clippy -D warnings /
`make check`). Confirm the agent **committed its round**; if it left work uncommitted, flag the
doctrine regression. **STOP is recovery, not surrender** — on stall/fail, issue a focused
Expand Down
Loading
Loading