Skip to content

goal-batch/goalify/GOAL_COMMAND: resource hygiene for autonomous fan-out - #288

Merged
Brian Krabach (bkrabach) merged 1 commit into
mainfrom
goal-skills-resource-hygiene
Aug 30, 2026
Merged

goal-batch/goalify/GOAL_COMMAND: resource hygiene for autonomous fan-out#288
Brian Krabach (bkrabach) merged 1 commit into
mainfrom
goal-skills-resource-hygiene

Conversation

@bkrabach

Copy link
Copy Markdown
Collaborator

Why

Postmortem (2026-08-29) of a runaway autonomous fan-out: parallel work created 126 containers over 3 days with no teardown, no cumulative ledger, and no cap — the host hit 100% disk and stalled.

The gap is a pattern, not a one-off:

  • Parallel-work guidance cleans up its own orchestration artifacts (worktrees, branches, tmux sessions) but is blind to resources the work units create — containers, VMs, background servers, environments.
  • Per-unit bounds (turns, wall-clock) bound an agent's activity, not the cumulative resources that activity accumulates. A run can exit cleanly having stood up a hundred resources nothing ever reclaims.

This PR closes that gap across the three surfaces that shape autonomous runs.

What changed

amplifier_app_cli/data/skills/goal-batch/SKILL.md

  • Phase 1 — clarify the "no lane cap" rule governs lanes, not the resources lanes create. Those need a cumulative batch-wide ceiling tracked in an orchestrator-owned resource ledger, because each lane sees only its own usage, never the total.
  • Phase 3 — each lane's goal must enumerate any non-git resources it provisions (containers, VMs, background servers, environments) and include their teardown (or explicit handoff) in the lane's own DONE criteria; resources[] added to the DONE.json field list.
  • Phase 7 — lanes report what they created via resources[]; the orchestrator verifies teardown as part of landing, and the orphan sweep extends beyond tmux (docker ps / incus list / process list) for survivors tied to the batch.

amplifier_app_cli/data/skills/goalify/SKILL.md

  • New lint check L7: if a goal provisions infrastructure or long-lived resources, the stop condition must include teardown-complete (or explicit handoff) as part of DONE. A goal that ends with resources running and unowned is abandoned, not finished. Added to the lint table.

docs/GOAL_COMMAND.md

  • In "What the cap does NOT bound": turn and wall-clock caps do not bound the resources spawned by the work. Unattended runs that provision anything need an external resource ledger and cumulative ceiling, with teardown as part of the run.

Notes

  • Resource types are described generically; third-party command examples (docker, incus, tmux) are used for illustration only.
  • Docs/skill-only change — no code paths touched.

🤖 Generated with Amplifier

Parallel-work guidance cleans up its OWN orchestration artifacts
(worktrees/branches/tmux) but is blind to resources the work units CREATE
(containers, VMs, background servers, environments), and per-unit bounds
(turns/wall-clock) do not bound cumulative resource accumulation. Close that
gap across the three surfaces that shape autonomous runs.

goal-batch SKILL.md:
- Phase 1: clarify "no lane cap" governs LANES, not the resources lanes
  create; those need a cumulative batch-wide ceiling tracked in an
  orchestrator-owned ledger, since each lane sees only its own usage.
- Phase 3: each lane's goal must enumerate non-git resources it provisions
  and include teardown (or explicit handoff) in its own DONE criteria; add
  resources[] to the DONE.json field list.
- Phase 7: orchestrator verifies teardown as part of landing and extends the
  orphan sweep beyond tmux (docker ps / incus list / process list).

goalify SKILL.md:
- Add lint check L7: a goal that provisions infrastructure must include
  teardown-complete (or explicit handoff) in DONE; resources left running
  and unowned is abandoned, not finished.

docs/GOAL_COMMAND.md:
- In "What the cap does NOT bound": turn and wall-clock caps do not bound
  resources spawned by the work; unattended runs that provision anything
  need an external resource ledger and ceiling.

🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier)

Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
@bkrabach
Brian Krabach (bkrabach) merged commit f38048b into main Aug 30, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants