Files
command-center/agent/managed-skills/bounding-subagent-runtime/SKILL.md
T

2.7 KiB

name, description
name description
bounding-subagent-runtime Cap and diagnose runaway or hung omp subagents: task.maxRuntimeMs, softRequestBudget, maxConcurrency, maxRecursionDepth (the 0-trap), per-provider in-flight ceilings.

When

Subagent runs long, fan out too wide, or you must (re)declare the fleet's subagent limit policy. Also when asked "what limits can subagents have".

Read first

  • Repo KB page omp-docs/pi/subagent-limits.md — the live policy of record (values + rationale + deliberately-not-set list). Do not re-derive; read it.
  • cfg://task and cfg://providers/maxInFlightRequests — effective values, not the stock defaults.

The knobs (cfg:// writes; /save suffix persists)

Knob Effect Gotcha
task.maxConcurrency session semaphore; excess queues stock default 32 — "2" is not a default
task.maxRecursionDepth nesting cap predicate is depth < n; 1 = children cannot spawn (correct for "no nesting"); 0 disables spawning for the MAIN session too — never reach for 0; negative = unlimited
task.maxRuntimeMs hard wall clock, overrun = aborted default 0 = off
task.softRequestBudget wrap-up notice at N, force-yield at 1.5N scout/sonic may impose lower built-ins
task.agentIdleTtlMs park idle finished agents <= 0 disables parking
providers.maxInFlightRequests concurrent LLM requests per provider id keys are the quoted block labels from agent/models.yml (e.g. "llamacpp (dankclaw-3090)"), flat map lookup; absent/≤0 = unlimited; scope = this machine's config root only — other workstations and non-omp clients are NOT counted; excess queues
tools.maxTimeout ceiling on any agent-requested tool timeout kills timeout: 0 runaways
task.isolation.enabled makes per-spawn isolated flag available opt-in per spawn, not a blanket sandbox; needs git repo; off in plan mode
task.completionProbe periodic completeness side-requests token sink on shared endpoints

Verify semantics from the bundle, not the label

Setting descriptions lie by omission. ~/.bun/install/global/node_modules/@oh-my-pi/pi-coding-agent/dist/cli.js:

  • depth gate: grep -o '.\{130\}xC\b.\{130\}' finds U_(n,s); grep -o 'function U_(e,t){.\{0,60\}' → e<0||t<e (n=cap, s=taskDepth).
  • in-flight lookup: grep -o '.\{150\}axInFlightRequests.\{200\}' → flat [providerId] lookup, non-number/≤0 = unlimited, clamp ≥1.

Landing a policy change

cfg /save writes persist immediately; agent/config.yml is machine-live tier (heartbeat commits it). Human-facing policy changes land as an omp-docs page update via branch → PR (docs tier), git worktree add from origin/main if the current checkout is branch-locked by workspace policy.