gsxdsm
4f037679ad
feat: planner overseer session advisor (OMP advisor parity) (#2082)
## Summary
Adds a **session advisor** to the planner overseer so Fusion can review
live executor transcripts the way [oh-my-pi’s
advisor](https://github.com/can1357/oh-my-pi/tree/main/packages/coding-agent/src/advisor)
does — without replacing the existing lifecycle supervisor (stage watch,
retry, merge confirmation, human-control withhold).
### What ships
- **Emission guard** (`OverseerEmissionGuard`) — content-free phrase
filter, session dedupe with severity-rank escalation, one accept per
advisor update
- **Session delta runtime** — queues agent-log deltas, drains through an
advisor agent, drops backlog after 3 failures
- **Session advisor service** — model gate, level matrix (`observe` /
`steer` / `autonomous`), human-control re-check at inject,
`[session-advisor]` steering comments
- **OVERSEER.md / WATCHDOG.md** discovery for project review priorities
- **AgentLogger `onEntriesFlushed`** + poll-backed agent-log cursor for
durable deltas
- Workflow settings: `plannerOverseerAdvisorProvider` +
`plannerOverseerAdvisorModelId` (both required; empty = soft-disabled
for cost safety)
- Docs + changeset
### What does not ship (deferred)
- Multi-advisor YAML roster, mutating advisor tools, reviewer/merger
shadowing, true tool-abort interrupt
### Plan
`docs/plans/2026-07-13-001-feat-overseer-advisor-parity-plan.md`
## Enablement
1. Set workflow **Session advisor model provider** + **Session advisor
model id**
2. Oversight level `observe` (log only), `steer`, or `autonomous`
(inject)
3. Optional: add `OVERSEER.md` or `WATCHDOG.md` in the project
## Test plan
- [x] `pnpm --filter @fusion/core exec vitest run
src/__tests__/overseer-emission-guard.test.ts`
- [x] `pnpm --filter @fusion/engine exec vitest run` overseer-* unit
tests (21 tests)
- [x] Related planner-overseer / intervention regression tests
- [x] `@fusion/engine` + `@fusion/core` typecheck
- [ ] Manual: configure advisor model, run an executor task, confirm
`[session-advisor]` inject + timeline metadata when concern is raised
## Residual Review Findings
None from autofix pass (log-cursor ordering fix already committed).
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added an off-by-default “session advisor” that can review live
execution activity and provide severity-based guidance.
* Added project and per-task controls to enable it, including a default
enable switch and Quick Add / Task Detail toggles.
* Enhanced advisor prompting by discovering and incorporating
`OVERSEER.md`/`WATCHDOG.md` review files.
* **Documentation**
* Added architecture and settings documentation for the new
session-advisor parity behavior.
* **Bug Fixes**
* Improved fail-soft handling so advisor behavior won’t disrupt
execution.
* Fixed concurrent PostgreSQL migration startup failures.
* **Tests**
* Added coverage for advice parsing, emission guarding, runtime
behavior, and watchdog discovery.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-14 20:27:35 -07:00
..
2026-07-08 16:47:34 -04:00
2026-06-17 17:57:19 -07:00
2026-06-17 21:37:18 -07:00
2026-05-22 20:20:42 -07:00
2026-06-12 22:55:01 -07:00
2026-07-12 17:54:21 -07:00
2026-06-27 17:11:13 -07:00
2026-07-11 17:16:49 -07:00
2026-05-14 04:32:43 -07:00
2026-06-27 17:11:13 -07:00
2026-07-12 19:18:25 -07:00
2026-07-12 19:18:25 -07:00
2026-07-12 17:54:21 -07:00
2026-06-03 17:14:42 -07:00
2026-06-27 17:11:13 -07:00
2026-06-25 19:51:21 -07:00
2026-06-25 19:51:21 -07:00
2026-06-25 19:51:21 -07:00
2026-07-04 10:42:21 -07:00
2026-06-25 19:51:21 -07:00
2026-05-30 14:20:12 -07:00
2026-07-12 19:18:25 -07:00
2026-07-09 19:58:07 -07:00
2026-05-15 07:10:36 -07:00
2026-07-10 23:21:37 -07:00
2026-05-13 06:29:35 -07:00
2026-06-23 00:08:27 -07:00
2026-07-08 16:47:34 -04:00
2026-06-27 19:37:39 -07:00
2026-07-04 13:57:20 -07:00
2026-07-07 08:49:52 -07:00
2026-07-12 12:10:38 -07:00
2026-07-09 19:58:03 -07:00
2026-07-14 15:54:44 -07:00
2026-06-29 15:34:06 -07:00
2026-06-21 13:25:40 -07:00
2026-06-07 18:51:46 -07:00
2026-05-19 03:21:17 -07:00
2026-06-04 04:32:46 -07:00
2026-07-11 22:16:48 -07:00
2026-07-07 08:49:52 -07:00
2026-07-12 19:47:27 -07:00
2026-06-08 13:32:58 -07:00
2026-07-14 15:07:26 -07:00
2026-07-02 13:07:16 -07:00
2026-05-13 06:29:35 -07:00
2026-07-07 08:49:52 -07:00
2026-07-10 18:14:09 -07:00
2026-07-06 19:03:06 -07:00
2026-07-12 22:49:51 -07:00
2026-07-13 00:48:02 -07:00
2026-07-07 23:15:53 -07:00
2026-07-12 20:19:36 -07:00
2026-07-12 23:02:46 -07:00
2026-06-27 15:56:42 -07:00
2026-06-05 02:38:38 -07:00
2026-07-12 20:19:36 -07:00
2026-07-12 20:19:36 -07:00
2026-07-12 20:19:36 -07:00
2026-07-12 20:19:36 -07:00
2026-07-12 20:19:36 -07:00
2026-07-12 20:19:36 -07:00
2026-07-12 20:19:36 -07:00
2026-07-07 23:15:53 -07:00
2026-07-12 20:19:36 -07:00
2026-07-12 23:24:03 -07:00
2026-07-07 23:15:53 -07:00
2026-07-12 20:19:36 -07:00
2026-07-12 20:54:10 -07:00
2026-07-12 22:12:18 -07:00
2026-07-12 23:24:03 -07:00
2026-07-12 20:19:36 -07:00
2026-07-12 20:19:36 -07:00
2026-07-10 08:21:52 -07:00
2026-07-12 20:00:50 -07:00
2026-07-12 21:33:50 -07:00
2026-07-12 17:54:21 -07:00
2026-07-08 01:29:56 -07:00
2026-06-22 10:26:14 -07:00
2026-07-12 18:47:08 -07:00
2026-06-25 16:11:45 -07:00
2026-07-08 23:39:33 -07:00
2026-07-10 09:54:39 -07:00
2026-05-13 18:05:12 +03:00
2026-06-30 01:23:09 -07:00
2026-06-27 20:27:09 -07:00
2026-06-02 14:14:24 -07:00
2026-05-20 04:13:43 -07:00
2026-07-02 19:26:50 -07:00
2026-06-23 16:47:38 -07:00
2026-06-23 11:26:51 -07:00
2026-07-03 21:45:20 -07:00
2026-07-12 12:49:37 -07:00
2026-07-12 18:13:33 -07:00
2026-07-11 22:43:34 -07:00
2026-06-22 23:42:45 -07:00
2026-07-01 09:30:00 -07:00
2026-07-07 08:27:26 -07:00
2026-06-30 23:45:02 -07:00
2026-06-25 08:35:44 -07:00
2026-07-14 18:47:53 -07:00
2026-05-19 19:32:23 -07:00
2026-07-08 23:39:34 -07:00
2026-07-12 12:49:37 -07:00
2026-07-12 12:49:37 -07:00
2026-05-22 20:20:42 -07:00
2026-07-13 08:15:25 -07:00
2026-07-04 10:42:19 -07:00
2026-07-06 19:03:06 -07:00
2026-06-27 23:47:21 -07:00
2026-07-08 23:39:34 -07:00
2026-06-03 22:35:28 -07:00
2026-07-02 12:34:35 -07:00
2026-07-12 17:54:21 -07:00
2026-06-27 20:02:33 -07:00
2026-06-30 21:59:03 -07:00
2026-07-01 23:15:12 -07:00
2026-07-09 19:58:03 -07:00
2026-06-30 18:15:10 -07:00
2026-06-23 00:20:55 -07:00
2026-07-08 09:47:19 -07:00
2026-07-01 23:15:12 -07:00
2026-07-09 19:58:07 -07:00
2026-07-11 20:32:56 -07:00
2026-05-16 09:21:06 -07:00
2026-06-30 12:21:25 -07:00
2026-06-03 13:02:23 -07:00
2026-07-06 19:03:06 -07:00
2026-07-13 10:14:22 -07:00
2026-06-21 03:53:43 -07:00
2026-07-12 23:06:05 -07:00
2026-06-22 11:08:25 -07:00
2026-05-19 23:04:12 -07:00
2026-06-23 12:17:04 -07:00
2026-07-12 23:06:05 -07:00
2026-07-11 17:16:49 -07:00
2026-05-23 13:06:48 -07:00
2026-05-15 12:07:52 -07:00
2026-05-19 10:39:56 -07:00
2026-06-01 10:17:52 -07:00
2026-07-14 18:47:53 -07:00
2026-07-14 18:47:53 -07:00
2026-05-19 17:54:43 -07:00
2026-07-14 18:47:53 -07:00
2026-05-20 09:42:40 -07:00
2026-06-16 15:08:24 -07:00
2026-06-22 18:21:06 -07:00
2026-06-27 20:27:09 -07:00
2026-06-30 08:35:07 -07:00
2026-06-25 08:35:44 -07:00
2026-05-22 20:20:42 -07:00
2026-07-06 19:03:06 -07:00
2026-06-17 03:12:16 -07:00
2026-06-29 23:31:52 -07:00
2026-07-10 17:20:17 -07:00
2026-07-10 00:48:14 -07:00
2026-07-13 00:44:59 -07:00
2026-06-21 09:00:40 -07:00
2026-07-03 21:47:00 -07:00
2026-06-30 08:20:07 -07:00
2026-07-10 00:48:14 -07:00
2026-06-13 16:30:28 -07:00
2026-07-14 15:07:26 -07:00
2026-07-05 11:31:48 -07:00
2026-05-22 20:20:42 -07:00
2026-07-13 19:07:58 -07:00
2026-07-14 17:18:06 -07:00
2026-07-14 15:54:44 -07:00
2026-07-10 17:20:17 -07:00
2026-06-22 04:39:35 -07:00
2026-06-27 23:25:19 -07:00
2026-06-28 20:11:43 -07:00
2026-07-04 21:28:17 -07:00
2026-07-05 11:31:44 -07:00
2026-07-14 18:47:53 -07:00
2026-07-01 00:20:56 -07:00
2026-07-14 18:47:53 -07:00
2026-07-14 18:47:53 -07:00
2026-07-14 18:47:53 -07:00
2026-06-02 12:42:04 -07:00
2026-07-14 18:47:53 -07:00
2026-06-09 04:27:53 -07:00
2026-07-02 18:06:00 -07:00
2026-07-07 22:04:53 -07:00
2026-07-07 22:04:53 -07:00
2026-06-28 12:10:10 -07:00
2026-06-22 04:39:35 -07:00
2026-05-22 20:20:42 -07:00
2026-06-27 23:42:11 -07:00
2026-06-28 01:17:22 -07:00
2026-06-27 19:54:22 -07:00
2026-06-02 08:49:25 -07:00
2026-06-07 23:03:38 -07:00
2026-06-27 19:54:22 -07:00
2026-07-11 18:07:00 -07:00
2026-05-28 23:31:03 -07:00
2026-05-18 15:50:48 -07:00
2026-05-28 19:50:53 -07:00
2026-06-27 23:37:24 -07:00
2026-06-22 15:23:43 -07:00
2026-07-14 20:27:35 -07:00
2026-07-09 08:17:52 -07:00
2026-06-21 09:00:40 -07:00
2026-07-12 18:13:33 -07:00
2026-07-07 23:35:05 -07:00
2026-07-12 19:43:41 -07:00
2026-07-08 12:47:13 -04:00
2026-07-07 23:35:05 -07:00
2026-07-12 19:43:41 -07:00
2026-07-12 19:43:41 -07:00
2026-06-22 11:36:20 -07:00
2026-07-12 17:54:21 -07:00
2026-07-11 19:31:50 -07:00
2026-07-14 18:47:53 -07:00
2026-07-12 13:22:05 -07:00
2026-07-07 22:04:48 -07:00
2026-07-12 16:48:04 -07:00
2026-05-22 20:20:42 -07:00
2026-07-11 17:03:36 -07:00
2026-07-04 21:28:19 -07:00
2026-07-09 23:40:02 -07:00
2026-05-13 20:08:37 -07:00
2026-07-07 22:04:49 -07:00
2026-07-11 23:18:49 -07:00
2026-07-11 18:48:59 -07:00
2026-06-27 09:28:29 -07:00
2026-07-02 11:38:33 -07:00
2026-07-04 10:42:20 -07:00
2026-07-13 07:44:12 -07:00
2026-07-03 23:16:58 -07:00
2026-06-25 19:35:05 -07:00
2026-07-10 23:21:37 -07:00
2026-06-25 19:35:05 -07:00
2026-07-13 07:10:14 -07:00
2026-07-10 17:20:17 -07:00
2026-07-03 21:45:21 -07:00
2026-07-10 17:20:17 -07:00
2026-06-30 10:26:23 -07:00
2026-06-21 16:13:54 -07:00
2026-07-10 16:13:39 -07:00
2026-06-22 15:23:43 -07:00
2026-06-25 19:35:47 -07:00
2026-07-14 12:41:10 -07:00
2026-07-10 07:40:22 -07:00
2026-07-14 08:23:11 -07:00
2026-07-12 17:54:21 -07:00
2026-06-20 01:52:26 -07:00
2026-07-10 23:21:37 -07:00
2026-07-12 13:17:47 -07:00
2026-06-20 04:51:57 -07:00
2026-07-14 18:47:53 -07:00
2026-07-10 23:21:37 -07:00
2026-07-11 22:16:48 -07:00
2026-07-13 01:06:01 -07:00
2026-07-13 07:10:14 -07:00
2026-07-11 23:08:36 -07:00
2026-07-11 23:08:36 -07:00
2026-07-10 23:21:37 -07:00
2026-07-13 10:14:22 -07:00
2026-05-13 15:05:05 -07:00
2026-06-24 23:32:52 -07:00
2026-07-04 10:42:21 -07:00
2026-07-13 10:14:22 -07:00
2026-07-11 18:07:00 -07:00
2026-07-05 12:38:01 -07:00
2026-07-05 12:38:01 -07:00
2026-07-05 12:24:12 -07:00
2026-05-22 20:20:42 -07:00
2026-05-23 20:44:01 -07:00
2026-07-11 20:46:05 -07:00
2026-06-25 08:34:44 -07:00
2026-06-25 08:34:44 -07:00
2026-06-11 22:11:44 -07:00
2026-07-03 21:48:30 -07:00
2026-06-04 14:01:55 -07:00
2026-07-11 23:08:36 -07:00
2026-05-13 06:29:34 -07:00
2026-07-08 22:30:29 -07:00
2026-06-30 14:58:07 -07:00
2026-07-02 11:38:34 -07:00
2026-07-04 21:28:18 -07:00
2026-06-09 13:57:21 -07:00
2026-07-10 08:03:35 -07:00
2026-07-05 19:39:18 -07:00
2026-07-05 19:39:18 -07:00
2026-05-26 17:19:34 -07:00
2026-07-12 23:37:54 -07:00
2026-07-05 19:39:18 -07:00
2026-07-13 19:07:58 -07:00
2026-07-11 22:16:48 -07:00
2026-07-05 11:31:45 -07:00
2026-06-05 01:16:13 -07:00
2026-07-11 00:01:10 -07:00
2026-07-02 13:07:16 -07:00
2026-07-11 20:46:05 -07:00
2026-07-11 20:50:59 -07:00
2026-06-04 16:16:50 -07:00
2026-07-10 22:25:21 -07:00
2026-05-20 04:13:43 -07:00
2026-07-10 18:14:09 -07:00
2026-06-28 02:04:31 -07:00
2026-07-08 01:29:56 -07:00
2026-07-09 21:40:58 -07:00
2026-07-01 16:43:08 -07:00
2026-06-21 22:43:34 -07:00
2026-07-13 00:22:41 -07:00
2026-05-22 00:15:14 -07:00
2026-07-03 07:47:03 -07:00
2026-07-03 07:47:03 -07:00
2026-07-12 12:33:29 -07:00
2026-07-12 12:52:30 -07:00
2026-05-16 20:13:30 -07:00
2026-05-16 09:20:33 -07:00
2026-06-13 16:30:28 -07:00
2026-07-11 18:06:59 -07:00
2026-07-14 18:47:53 -07:00
2026-07-07 08:27:26 -07:00
2026-07-05 11:31:48 -07:00
2026-07-11 18:06:22 -07:00
2026-07-02 11:38:30 -07:00
2026-06-28 09:09:03 -07:00
2026-06-17 14:52:56 -07:00
2026-07-11 18:06:22 -07:00
2026-07-11 18:06:22 -07:00
2026-06-22 11:58:53 -07:00
2026-07-11 23:08:36 -07:00
2026-07-11 18:06:22 -07:00
2026-07-12 22:15:48 -07:00
2026-06-28 09:09:03 -07:00
2026-05-13 13:11:17 -07:00
2026-05-13 06:29:35 -07:00
2026-07-01 09:30:00 -07:00
2026-06-09 08:14:16 -07:00
2026-07-10 12:02:46 -07:00
2026-07-01 23:15:12 -07:00
2026-06-30 12:21:25 -07:00
2026-05-14 22:16:44 -07:00
2026-06-21 21:07:20 -07:00
2026-05-15 23:39:43 -07:00