Skip to content

Forge capacity: more runners + BROKK_PROJECT_MAX_INFLIGHT - #74

Open
brokk-ccl wants to merge 1 commit into
mainfrom
brokk/forge-capacity-more-runners-brokk-project-max-in-f634a121
Open

Forge capacity: more runners + BROKK_PROJECT_MAX_INFLIGHT#74
brokk-ccl wants to merge 1 commit into
mainfrom
brokk/forge-capacity-more-runners-brokk-project-max-in-f634a121

Conversation

@brokk-ccl

Copy link
Copy Markdown
Contributor

Goal

Raise how many Forge cards can execute in parallel — today the deepen batch sits behind one brokk-project lease while forge-b idles.

Observed (2026-07-24)

  • 2 runners live (forge + forge-b).
  • All harness deepen cards share project brokk (e29e94d0…).
  • ADR 0017 serial-per-app: claimNext skips any project with a live lease → only 1 brokk card at a time, regardless of runner count.
  • forge-b registered and healthy but claims nothing while multi-profile holds the lease.
  • Per-card worktrees already isolate git trees; the lease still serializes the whole app.

Two levers (ship both, gated by env)

  1. More claim runners — add forge-c (same as forge-b: BROKK_SUPERVISOR=0) in docker-compose.coolify.yml / forge compose. Document Coolify service. Pure capacity for cross-project fan-out.
  2. Per-project concurrency — env BROKK_PROJECT_MAX_INFLIGHT (default 1 = today’s serial). When >1, claimNext allows up to N live leases/runs per project (or N running tasks), still one card per runner process. Prefer worktree-isolated feature/PR flow; do not loosen shared dev checkout without an explicit guard (landed/dev-lane stays serial or separate flag).
  3. Board/ops: show inflight/max on project or queue so capacity is visible.
  4. Tests: claim two queued cards on same project when max=2; still blocks at max; default=1 unchanged.
  5. Short docs note (README or ADR 0017 follow-up).

Out of scope

  • Kubernetes Job-per-card.
  • Autoscaling by queue depth (can be later).
  • Changing OpenHands RUNTIME.

Acceptance

  • With BROKK_PROJECT_MAX_INFLIGHT=2 + ≥2 runners, two brokk deepen cards can be running at once on separate worktrees.
  • Default remains serial (no behavior change until env set).
  • forge-c (or documented Nth replica) boots claim-only and drains other projects while brokk is busy.

Verify: ❌ failed

verify output
Scope: 17 of 19 workspace projects
packages/afl typecheck$ tsc --noEmit
packages/core typecheck$ tsc --noEmit
packages/repomap typecheck$ tsc --noEmit
packages/core typecheck: sh: 1: tsc: not found
packages/repomap typecheck: sh: 1: tsc: not found
/home/brokk/work/worktrees/brokk__forge-capacity-more-runners-brokk-project-max-in-f634a121/packages/repomap:
 ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  @brokk/repomap@0.0.0 typecheck: `tsc --noEmit`
spawn ENOENT
packages/afl typecheck: sh: 1: tsc: not found
 WARN   Local package.json exists, but node_modules missing, did you mean to install?
 WARN   Local package.json exists, but node_modules missing, did you mean to install?
 WARN   Local package.json exists, but node_modules missing, did you mean to install?


Command failed: pnpm -r --filter=!@brokk/web typecheck && pnpm --filter @brokk/afl test

E2E: ❌ failed · legacy-acceptance

e2e output
[e2e] check timed out after 120s

🔨 Forged by Brokk · task 353d32f4-e06a-4fcf-a546-6e9460aec9b3

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.

1 participant