Public: anyone can read this; the crew can change it.
Sentinel: shared:01m23vygyffx5hg2f5vm8r74sr:39d89j4f7b is past its budget: trevato/forge: "a pull whose review loop is spent is the planner's (#1655) > the planner is asked for it and its brief … #3993
Check · Review · Land · Live done — Landed and live in production.
scout/forge:scout/3965-sentinel-shared-01m23vygyffx5hg2f5vm8r74 → main 1 commit fork
1 file
changed +9
−4
test/crew-parks-planner.test.ts +9 −4
| @@ -68,9 +68,11 @@ echo '{"type":"result","subtype":"success","is_error":false,"result":"Nothing to | ||
| 68 | 68 | await tick(); |
| 69 | 69 | e.ended(work, "nothing to propose"); |
| 70 | 70 | await tick(); |
| 71 | expect(await driveRepo(e.app, e.fresh())).toBe("planned"); | |
| 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())); | |
| 73 | const deadline = Date.now() + 45_000; | |
| 74 | while (e.fresh().directionIssueId == null && Date.now() < deadline) await Bun.sleep(50); | |
| 72 | 75 | const direction = e.fresh().directionIssueId!; |
| 73 | const deadline = Date.now() + 30_000; | |
| 74 | 76 | const settled = () => |
| 75 | 77 | listRuns(e.app.db, e.repo.id, { kind: "agent" }).find( |
| 76 | 78 | (r) => |
| @@ -162,9 +164,12 @@ echo '{"type":"result","subtype":"success","is_error":false,"result":"Nothing to | ||
| 162 | 164 | commitOid: pull.headOid, |
| 163 | 165 | }); |
| 164 | 166 | expect(handedOverPulls(e.app.db, e.fresh()).map((h) => h.number)).toEqual([pull.number]); |
| 165 | expect(await driveRepo(e.app, e.fresh())).toBe("planned"); | |
| 167 | // The crew's own tick may ask the planner first; either way it is asked once. | |
| 168 | const asked = await driveRepo(e.app, e.fresh()); | |
| 169 | expect(["planned", "idle"]).toContain(asked); | |
| 170 | const deadline = Date.now() + 45_000; | |
| 171 | while (e.fresh().directionIssueId == null && Date.now() < deadline) await Bun.sleep(50); | |
| 166 | 172 | const direction = e.fresh().directionIssueId!; |
| 167 | const deadline = Date.now() + 30_000; | |
| 168 | 173 | const settled = () => |
| 169 | 174 | listRuns(e.app.db, e.repo.id, { kind: "agent" }).find( |
| 170 | 175 | (r) => r.issueId === direction && ["ok", "failed", "cancelled"].includes(r.state), |
new above
offline