Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions docs/guides/pipeline-health-monitoring.md
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,7 @@ Tripwire thresholds are configurable in `PipelineConfig`:
| `overseer_heartbeat_failures_before_restart` | `3` | Consecutive heartbeat failures before the overseer triggers an agent restart (default: 3) |
| `overseer_nudge_timeout_before_restart_minutes` | `5` | Minutes to wait after sending a nudge with no response before triggering an agent restart |
| `overseer_advisor_model` | `"opus"` | LLM model used by the Tier-2 advisor when Haiku flags an anomaly that intersects with a Tier-1 health alert. The default is the canonical `opus` alias (resolved by `shared/egg_harness/config.py` to the latest pinned Opus ID, currently Opus 4.6) so cost telemetry resolves correctly. See [Advisor Gate](#advisor-gate). |
| `overseer_advisor_recent_log_bytes_cap` | `256000` | Byte cap for the `recent_log_lines` block in the advisor prompt (issue #2120). When the joined block exceeds the cap, the prompt-builder drops oldest lines first so the most-recent lines (highest signal) survive, and prepends a marker so the advisor knows truncation happened. Set to `0` to disable (not recommended — leaves the prompt open to pathological log payloads). |
| `overseer_auto_file_issues_mode` | `"shadow"` | Auto-issue-filing mode: `shadow` surfaces the advisor's `recommendation=file_issue` as an `OVERSEER_ALERT` + HITL decision (the human approves before any `gh issue create` runs); `live` runs the same HITL flow but allows the CLI verb to file once approval lands. The HITL approval is *never* bypassed. To disable issue filing entirely, set `overseer_enabled=false`. |
| `overseer_owns_host_detection` | `false` | Calibration-window flag for the host → overseer migration. While `false` (the default), the `/sdlc` host skill keeps its stall / silent-agent / NACK / long-running-phase / stuck-pipeline rescue detectors live. While `true`, those host detectors short-circuit and the overseer is the sole source of these alerts. See [Host Detector Migration](#host-detector-migration). |
| `overseer_stuck_phase_transition_seconds` | `180` | Threshold (seconds) for the existing overseer `stuck-phase-transition` trigger (orchestrator-level signal). Raised from the previous hardcoded ~60s default per operator feedback during long phase transitions. |
Expand Down
2 changes: 1 addition & 1 deletion docs/reference/orchestrator-cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Run `egg-orch --help` for full usage. All commands support `--json` for machine-
| `egg-orch message send [<id>] --to <role\|all> --type <type> --subject "..." --body "..."` | Send directed or broadcast message. Types: `HANDOFF`, `STATUS`, `PROGRESS`, `HEARTBEAT`. (`QUESTION` was removed in [#1897](https://github.com/jwbron/egg/issues/1897).) |
| `egg-orch overseer alert [<id>] --anomaly <type> --priority <low\|medium\|high> --summary "..." [--detail "..."] [--recommend "..."] [--recommendation file_issue] [--recommendation-payload-file <path>]` | Broadcast `OVERSEER_ALERT` to human operator (overseer use only — always sets `message_type=OVERSEER_ALERT` and `to_role=all`). `--recommendation file_issue` attaches a structured advisor verdict; requires `--recommendation-payload-file` (JSON path with `issue_title`/`issue_body`/`priority`/`anomaly_signature`). |
| `egg-orch overseer file-issue [<id>] --anomaly-type <type> --priority <p0\|p1\|p2\|p3> --agent-role <role> --anomaly-signature <hex16> --issue-title-file <path> --issue-body-file <path> [--parent-alert-message-id <id>] [--dry-run] [--json]` | File a GitHub issue from the overseer role (advisor-gated). Checks `filed-issues.jsonl` + `gh issue list` for deduplication; skips filing if a matching open issue exists. Default stdout is plain text (`Filed issue #N (...)` or `Existing issue #N already covers ...`); with `--json`, prints JSON `{"issue_number": int, "filed": bool, "dedup_match": int\|null}`; with `--dry-run` (no `gh` invocation either way): if a dedup match is found, prints the same `--json` shape (with `issue_number`/`dedup_match` populated); otherwise prints `{"issue_number": null, "filed": false, "dedup_match": null, "dry_run": true, "argv": [...], "title": str, "body_bytes": int}`. Requires `EGG_PIPELINE_REPO` env var. |
| `egg-orch overseer consult-advisor [<id>] --inputs-file <path> [--output-file <path>] [--json]` | Consult the Opus advisor for a structured `AdvisorVerdict` (sandbox-side LLM call). Reads a JSON inputs file with `classification`, `health_alerts`, `progress_events`, and `recent_log_lines`. Returns `decision` (`alert`\|`file_issue`\|`watch`), `priority`, `alert_summary`, `alert_detail`, `issue_title`, `issue_body`, and `reasoning`. Without `--output-file`, the JSON verdict is written to stdout; with `--output-file`, the verdict is written to that path and stdout shows a confirmation message (pass `--json` to additionally echo the verdict to stdout). |
| `egg-orch overseer consult-advisor [<id>] --inputs-file <path> [--output-file <path>] [--recent-log-bytes-cap <n>] [--json]` | Consult the Opus advisor for a structured `AdvisorVerdict` (sandbox-side LLM call). Reads a JSON inputs file with `classification`, `health_alerts`, `progress_events`, and `recent_log_lines`. Returns `decision` (`alert`\|`file_issue`\|`watch`), `priority`, `alert_summary`, `alert_detail`, `issue_title`, `issue_body`, and `reasoning`. Without `--output-file`, the JSON verdict is written to stdout; with `--output-file`, the verdict is written to that path and stdout shows a confirmation message (pass `--json` to additionally echo the verdict to stdout). `--recent-log-bytes-cap` overrides the `PipelineConfig.overseer_advisor_recent_log_bytes_cap` value (default 256 KiB); oldest lines are dropped first when the block exceeds the cap. `0` disables the cap. |
| `egg-orch message poll [<id>] [--since <id>] [--limit <n>]` | Poll for messages from other agents (concurrent mode) |
| `egg-orch message wait [<id>] --for <TYPE>... [--timeout N] [--since <id>]` | Block until a **new** typed BRC event arrives (cursor-less calls start at stream tip — already-seen events are skipped). Pass `--since <id>` for zero-drop send→wait semantics. Exit 0 = matched, 1 = timeout, 2 = transient (retry-safe), 3 = permanent. See [Agent Wait Patterns §3](agent-wait-patterns.md#3-exit-code-contract-for-egg-orch-message-wait) |
| `egg-orch message wait-loop [<id>] --for <TYPE>... [--since <id>]` | **Canonical STAY ALIVE idiom** — loops `message wait` server-side until a new matching event arrives (defaults to stream-tip; pass `--since <id>` for zero-drop send→wait). Do not wrap in an outer shell loop. See [Agent Wait Patterns §1](agent-wait-patterns.md#1-the-canonical-idiom) |
Expand Down
Loading