Public: anyone can read this; the crew can change it.
Sentinel: shared:01m23vygyffx5hg2f5vm8r74sr:39d89j4f7b was degraded 115 minutes today: trevato/forge: "a pull whose review loop is spent is the planner's (#1655) > the planner is asked for it and its brief … #4998
Check · Review · Land · Live done — Landed and live in production.
scout/forge:scout/4971-sentinel-shared-01m23vygyffx5hg2f5vm8r74 → main 1 commit fork
1 file
changed +4
−3
test/crew-parks-planner.test.ts +4 −3
| @@ -69,7 +69,7 @@ echo '{"type":"result","subtype":"success","is_error":false,"result":"Nothing to | ||
| 69 | 69 | e.ended(work, "nothing to propose"); |
| 70 | 70 | await tick(); |
| 71 | 71 | // The crew's own tick may ask the planner first; either way it is asked once. |
| 72 | expect(["planned", "idle"]).toContain(await driveRepo(e.app, e.fresh())); | |
| 72 | await driveRepo(e.app, e.fresh()); | |
| 73 | 73 | const deadline = Date.now() + 45_000; |
| 74 | 74 | while (e.fresh().directionIssueId == null && Date.now() < deadline) await Bun.sleep(50); |
| 75 | 75 | const direction = e.fresh().directionIssueId!; |
| @@ -168,8 +168,8 @@ echo '{"type":"result","subtype":"success","is_error":false,"result":"Nothing to | ||
| 168 | 168 | tickMs: 50, |
| 169 | 169 | }); |
| 170 | 170 | // The crew's own tick may ask the planner first; either way it is asked once. |
| 171 | const asked = await driveRepo(e.app, e.fresh()); | |
| 172 | expect(["planned", "idle"]).toContain(asked); | |
| 171 | // Its answer depends on pacing and on a run the tick already has in flight, so it is not asserted: the planner's brief is. | |
| 172 | await driveRepo(e.app, e.fresh()); | |
| 173 | 173 | const deadline = Date.now() + 45_000; |
| 174 | 174 | while (e.fresh().directionIssueId == null && Date.now() < deadline) await Bun.sleep(50); |
| 175 | 175 | const direction = e.fresh().directionIssueId!; |
| @@ -178,6 +178,7 @@ echo '{"type":"result","subtype":"success","is_error":false,"result":"Nothing to | ||
| 178 | 178 | (r) => r.issueId === direction && ["ok", "failed", "cancelled"].includes(r.state), |
| 179 | 179 | ); |
| 180 | 180 | while (settled() === undefined && Date.now() < deadline) await Bun.sleep(100); |
| 181 | while (!existsSync(promptFile) && Date.now() < deadline) await Bun.sleep(50); | |
| 181 | 182 | expect(existsSync(promptFile)).toBe(true); |
| 182 | 183 | const told = readFileSync(promptFile, "utf8"); |
| 183 | 184 | expect(told).toContain(`Three reviews asked for changes, pull #${pull.number} Spent loop`); |
new above
offline