jonah-fleet 1.27.2 → 1.28.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,20 @@ All notable changes to `jonah-fleet` will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.28.1](https://github.com/Jonah-Projects/jonah-fleet/compare/v1.28.0...v1.28.1) (2026-09-24)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **peer-review:** add In-Progress CI Protocol and Zero-Polling Guardrail ([#438](https://github.com/Jonah-Projects/jonah-fleet/issues/438)) ([78922eb](https://github.com/Jonah-Projects/jonah-fleet/commit/78922eb4efda5071d709e292e406d6896c7920e4))
14
+
15
+ ## [1.28.0](https://github.com/Jonah-Projects/jonah-fleet/compare/v1.27.2...v1.28.0) (2026-09-24)
16
+
17
+
18
+ ### Features
19
+
20
+ * **runner:** preserve uncommitted work on crash and enforce incremental commits ([da58b83](https://github.com/Jonah-Projects/jonah-fleet/commit/da58b83334df971778417142520b321f7b520d5b))
21
+
8
22
  ## [1.27.2](https://github.com/Jonah-Projects/jonah-fleet/compare/v1.27.1...v1.27.2) (2026-09-24)
9
23
 
10
24
 
@@ -16,11 +30,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
16
30
 
17
31
  ### Features
18
32
 
33
+ * **runner:** preserve uncommitted work by committing modified files to the active routine branch before worktree cleanup on session crashes or interruptions
34
+ * **prompts:** add Incremental Commits protocol to `autowork.md` to commit immediately upon passing tests and prevent work loss during long-running sessions
19
35
  * **daemon:** update foreground interface, status commands, hotkey cheat sheet, and status ticker to Fleet brand identity
20
36
 
21
37
  ### Bug Fixes
22
38
 
23
39
  * **daemon:** classify draft PRs needing convergence as actionable instead of in-progress to prevent zero-token preflight bypass from stalling draft PR recovery
40
+ * **peer-review:** add In-Progress CI Protocol and Zero-Polling Guardrail to `peer-review.md` and `ORCHESTRATION.md` to prevent loop guard circuit breaker trips on running checks
24
41
 
25
42
  ## [1.27.1](https://github.com/Jonah-Projects/jonah-fleet/compare/v1.27.0...v1.27.1) (2026-09-23)
26
43
 
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="./assets/brand/banner.jpg" alt="Fleet — Autonomous Repo Command" width="100%" />
2
+ <img src="https://raw.githubusercontent.com/Jonah-Projects/jonah-fleet/main/assets/brand/banner.jpg" alt="Fleet — Autonomous Repo Command" width="100%" />
3
3
  </p>
4
4
 
5
5
  # ⚡ Fleet
@@ -9,7 +9,7 @@
9
9
 
10
10
  [![CI](https://github.com/Jonah-Projects/jonah-fleet/actions/workflows/ci.yml/badge.svg)](https://github.com/Jonah-Projects/jonah-fleet/actions/workflows/ci.yml)
11
11
  [![Version](https://img.shields.io/badge/version-1.0.0-blue.svg)](./package.json)
12
- [![Brand: Fleet](https://img.shields.io/badge/Brand-Fleet_Design_System-BBF65D?style=flat)](./assets/brand/README.md)
12
+ [![Brand: Fleet](https://img.shields.io/badge/Brand-Fleet_Design_System-BBF65D?style=flat)](https://github.com/Jonah-Projects/jonah-fleet/blob/main/assets/brand/README.md)
13
13
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
14
14
 
15
15
  ---
@@ -214,15 +214,15 @@ Each target project contains an `agents-manifest.json` at its root:
214
214
 
215
215
  ## 🎨 Brand & Visual Identity
216
216
 
217
- Fleet's visual design system and assets are located in [`assets/brand/`](./assets/brand):
217
+ Fleet's visual design system and assets are located in [`assets/brand/`](https://github.com/Jonah-Projects/jonah-fleet/tree/main/assets/brand):
218
218
 
219
219
  | Asset | Resource | Ratio | Usage |
220
220
  |---|---|---|---|
221
- | **Avatar / App Icon** | [`avatar.jpg`](./assets/brand/avatar.jpg) | 1:1 (1024x1024) | Bot user profile, app icon, social avatar |
222
- | **Logo Lockup** | [`logo.jpg`](./assets/brand/logo.jpg) | 3:2 (1536x1024) | Documentation headers, splash screens, decks |
223
- | **Header Banner** | [`banner.jpg`](./assets/brand/banner.jpg) | 16:9 (1792x1008) | Repository hero, social cards, release cards |
221
+ | **Avatar / App Icon** | [`avatar.jpg`](https://raw.githubusercontent.com/Jonah-Projects/jonah-fleet/main/assets/brand/avatar.jpg) | 1:1 (1024x1024) | Bot user profile, app icon, social avatar |
222
+ | **Logo Lockup** | [`logo.jpg`](https://raw.githubusercontent.com/Jonah-Projects/jonah-fleet/main/assets/brand/logo.jpg) | 3:2 (1536x1024) | Documentation headers, splash screens, decks |
223
+ | **Header Banner** | [`banner.jpg`](https://raw.githubusercontent.com/Jonah-Projects/jonah-fleet/main/assets/brand/banner.jpg) | 16:9 (1792x1008) | Repository hero, social cards, release cards |
224
224
 
225
- See [`assets/brand/README.md`](./assets/brand/README.md) for the complete design system specifications, color codes, and typography guidelines.
225
+ See [`assets/brand/README.md`](https://github.com/Jonah-Projects/jonah-fleet/blob/main/assets/brand/README.md) for the complete design system specifications, color codes, and typography guidelines.
226
226
 
227
227
  ---
228
228
 
package/dist/index.js CHANGED
@@ -4519,6 +4519,25 @@ ${sanitizedOutput}
4519
4519
  }
4520
4520
  return reportContent;
4521
4521
  }
4522
+ async function preserveUncommittedWork(worktreePath, routine) {
4523
+ try {
4524
+ if (!fs13.existsSync(worktreePath)) return { preserved: false };
4525
+ const { stdout: statusOut } = await execFileAsync4("git", ["status", "--porcelain"], { cwd: worktreePath });
4526
+ const trimmed = statusOut.trim();
4527
+ if (!trimmed) return { preserved: false };
4528
+ const fileCount = trimmed.split("\n").filter(Boolean).length;
4529
+ await execFileAsync4("git", ["add", "-A"], { cwd: worktreePath });
4530
+ await execFileAsync4(
4531
+ "git",
4532
+ ["commit", "-m", `wip(${routine}): preserve uncommitted work (${fileCount} files) before session termination`],
4533
+ { cwd: worktreePath }
4534
+ );
4535
+ const { stdout: shaOut } = await execFileAsync4("git", ["rev-parse", "--short", "HEAD"], { cwd: worktreePath });
4536
+ return { preserved: true, commitSha: shaOut.trim(), fileCount };
4537
+ } catch {
4538
+ return { preserved: false };
4539
+ }
4540
+ }
4522
4541
  async function runLocalRoutine(options) {
4523
4542
  const targetDir = path13.resolve(options.targetDir);
4524
4543
  const routine = options.routine;
@@ -4626,6 +4645,17 @@ Timeout: ${printTimeout}`,
4626
4645
  const cleanup = async () => {
4627
4646
  spinner?.stop();
4628
4647
  if (worktreePath && !options.keepWorktree) {
4648
+ if (fs13.existsSync(worktreePath)) {
4649
+ const pres = await preserveUncommittedWork(worktreePath, routine);
4650
+ if (pres.preserved) {
4651
+ console.log(
4652
+ pc11.yellow(
4653
+ `
4654
+ [${(/* @__PURE__ */ new Date()).toLocaleTimeString()}] \u{1F4BE} Preserved ${pres.fileCount} uncommitted file(s) to branch '${branchName}' (${pres.commitSha}).`
4655
+ )
4656
+ );
4657
+ }
4658
+ }
4629
4659
  await removeWorktree(targetDir, worktreePath, { deleteBranch: false }).catch(() => {
4630
4660
  });
4631
4661
  }
@@ -203,6 +203,15 @@ export declare function detectPrematureRoutineExit(output: string, routine: stri
203
203
  * Includes sanitized trailing error output from stdout and/or stderr if exitCode is non-zero.
204
204
  */
205
205
  export declare function formatFallbackRunReport(options: FallbackReportOptions): string;
206
+ /**
207
+ * Preserves uncommitted files in a worktree by committing them to the branch
208
+ * before worktree cleanup, preventing work loss on interruptions or crashes.
209
+ */
210
+ export declare function preserveUncommittedWork(worktreePath: string, routine: string): Promise<{
211
+ preserved: boolean;
212
+ commitSha?: string;
213
+ fileCount?: number;
214
+ }>;
206
215
  /**
207
216
  * Runs a routine locally with worktree isolation and Antigravity CLI invocation.
208
217
  */
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/lib/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/lib/runner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jonah-fleet",
3
- "version": "1.27.2",
3
+ "version": "1.28.1",
4
4
  "description": "Standalone autonomous agent fleet with Symphony orchestration, claim protocols, and continuous improvement loops",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -292,6 +292,9 @@ In headless CLI environments (`agy -p` / GitHub Actions), agent sessions termina
292
292
  1. **Zero-Yield Waiting Invariant**: Agents MUST NEVER call `schedule` or emit a terminal turn with plain text to "wait" for background commands, timers, or long-running checks. In headless mode, yielding the turn halts the process immediately with exit code 0 before reaching the Definition of Done.
293
293
  2. **Active Task Supervision**: If a verification command (`npm test`, `npm run type-check`) is sent to the background by `run_command`, the agent must actively poll `manage_task(Action='status')` or inspect code while waiting within the continuous tool-calling loop.
294
294
  3. **CI Trust Bar & Test Discipline**: Peer review routines should trust green passing remote CI checks (GitHub Actions or Vercel preview deployments) on the PR's head commit rather than initiating slow, background-prone full test runs. Run repository verification locally ONLY if CI status is unconfirmed, missing, or failing.
295
+ 4. **In-Progress CI Protocol**: When remote CI checks (e.g. GitHub Actions, Vercel deployments) are actively running (`PENDING`, `IN_PROGRESS`, `QUEUED`) during peer review:
296
+ - If the PR has blocking review findings, bounce to draft immediately (`gh pr ready <N> --undo`) without waiting for CI.
297
+ - If the PR is clean, NEVER busy-poll `run_command: gh run view` or `gh pr checks` in a loop (which trips the loop guard circuit breaker after 5 calls). Instead, run local verification once synchronously (`WaitMsBeforeAsync: 10000`); if passing, post an approval note confirming code health and defer merging to the next sweep once CI concludes.
295
298
 
296
299
  ---
297
300
 
@@ -42,6 +42,7 @@ If any criterion cannot be met, stop immediately and log FAILURE with the reason
42
42
  - **Defect Taxonomy of Bogus Green Checks & Red Gate Verification**: Always establish a failing reproduction check or verifier before modifying code (the Red Gate). Interrogate checks against the 6 bogus green defect classes (Vacuous assertion, Silent no-match, Errored check, Wrong reference, Stale premise, Scope mismatch). Exit codes decide; summaries are intent.
43
43
  - **Anti-Hallucination Disk Read-Back Verification**: Always verify generated code, configs, and artifacts by reading values directly back out of the written artifact on disk, never from in-memory variables or shell command echoes.
44
44
  - **Precision Git Scoping**: Never execute bare `git commit` or blind `git add .` without scoping. Always commit designated paths explicitly (`git commit -m "..." -- <paths>`) or verify `git status --porcelain` to avoid sweeping in uncommitted scratch artifacts or concurrent session files.
45
+ - **Incremental Commits**: Commit early and incrementally. Do NOT accumulate dozens of edits across many files without committing. Once your implementation passes the Red Gate test and local tests, commit your changes immediately (`git commit -m "<type>(<scope>): <subject>" -- <paths>`). Then run formatting and linting as a separate commit. This guarantees your work is persisted in git and immune to mid-session crashes.
45
46
 
46
47
  ## Negative examples (DO NOT do these)
47
48
 
@@ -63,6 +64,7 @@ If any criterion cannot be met, stop immediately and log FAILURE with the reason
63
64
  - Do not pause or prompt rhetorical questions ("Shall I continue?", "Should I start implementing?")—proceed autonomously.
64
65
  - Do not use bare `git commit` or blind `git add .` without scoping specific paths (`git commit -m "..." -- <paths>`).
65
66
  - Do not verify generated files by checking in-memory strings or shell variables; read values back out of the file on disk.
67
+ - Do not accumulate changes across many files without committing — commit incrementally as soon as tests pass, then format/lint.
66
68
 
67
69
  ## Instructions
68
70
 
@@ -258,6 +260,7 @@ _Generated by [Antigravity](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/ru
258
260
  - Branch from freshly fetched `origin/main` with descriptive name (e.g. `feat/...` or `fix/...`).
259
261
  - Drive implementation via `/tdd` (red-green-refactor): execute the Red Gate test first, write minimal code to pass, and refactor cleanly.
260
262
  - **Precision Git Scoping**: Never use bare `git commit` or `git add .` blindly. Stage and commit only designated paths explicitly: `git commit -m "<type>(<scope>): <subject>" -- <paths>`, or verify `git status --porcelain` before committing to avoid sweeping in scratch files or parallel artifacts.
263
+ - **Incremental Commits Protocol**: Commit early and incrementally. Do NOT wait until the very end of the run to commit. As soon as the implementation passes its local tests, commit immediately (`git commit -m "<type>(<scope>): <subject>" -- <paths>`). Then proceed to linting, formatting, and pre-PR checks as a separate commit. If a downstream formatting/linting check or system crash interrupts the session, your core implementation remains safely persisted on the branch.
261
264
  - **Diagnostic Reflex**: On unexpected test/build failure during TDD, grep symptom text in `LESSONS.md` before making speculative code edits.
262
265
  - Run repository tests and verification.
263
266
  - **Disk Read-Back Verification**: Verify written configs, schemas, and generated files by reading values directly back from disk files (`cat`, `jq`, test assertions), never from shell variables or memory.
@@ -10,7 +10,7 @@ Routine objective, Definition of Done, constraints, instructions, and logging.
10
10
 
11
11
  ## Objective
12
12
 
13
- Review a pull request (in Targeted mode for a specific `$PR_NUMBER`, or in Scan mode selecting the highest-priority open PR), evaluate code quality, security, and specification compliance via multi-angle subagent code reviews (`/code-review`), and take exactly one final action: squash-merge if clean, or post findings and bounce the PR back to draft (`gh pr ready <N> --undo`) for in-session author fixes.
13
+ Review a pull request (in Targeted mode for a specific `$PR_NUMBER`, or in Scan mode selecting the highest-priority open PR), evaluate code quality, security, and specification compliance via multi-angle subagent code reviews (`/code-review`), and take exactly one final action: squash-merge if clean, post findings and bounce the PR back to draft (`gh pr ready <N> --undo`) for in-session author fixes, or post an approval note and defer merge if clean while remote CI is in-progress.
14
14
 
15
15
  ## FIRST ACTION — determine the target PR before anything else
16
16
 
@@ -27,7 +27,7 @@ The run is SUCCESS only if ALL of these are true:
27
27
 
28
28
  - [ ] Identified the target PR: if one was named in the invocation, reviewed exactly that PR; otherwise listed open PRs and selected one by priority
29
29
  - [ ] Ran the code-review pass (`/code-review` and security pass), and posted findings as inline review comments
30
- - [ ] Took exactly one final action: squash-merged (if PR is good, CI green and present; executed Autonomous Issue Synthesis if unlinked; closed tracking issue explicitly if referenced) OR posted findings and **converted the PR back to draft** (`gh pr ready <N> --undo`) for author/autowork in-session fixes OR, if round cap reached at round 5 with blocking findings, converted to draft and escalated to human via the 4-part escalation card with `needs-human`
30
+ - [ ] Took exactly one final action: squash-merged (if PR is good, CI green and present; executed Autonomous Issue Synthesis if unlinked; closed tracking issue explicitly if referenced) OR posted findings and **converted the PR back to draft** (`gh pr ready <N> --undo`) for author/autowork in-session fixes OR approved and deferred merge pending in-progress remote CI checks OR, if round cap reached at round 5 with blocking findings, converted to draft and escalated to human via the 4-part escalation card with `needs-human`
31
31
  - [ ] If merging: captured deferred non-blocking findings per materiality bar (filed follow-up issues for material ones, batched or dropped immaterial ones)
32
32
  - [ ] If in Scan mode and no eligible PRs exist, logged SUCCESS with "No PRs to review"
33
33
 
@@ -43,23 +43,29 @@ If any criterion cannot be met, stop immediately and log FAILURE with the reason
43
43
  - **Session link footer**: sign every GitHub post with the unified Fleet footer and run badge: `[![Fleet](https://img.shields.io/badge/Fleet-Autonomous_Command-BBF65D?style=flat&logo=githubactions)](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})\n\n_Generated by [Antigravity](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})_`.
44
44
  - **Headless Execution & Asynchronous Non-Yielding Guardrail**: You are running in a headless autonomous CLI session. You MUST NEVER call `schedule` or yield the turn with plain text to "wait" for background tasks, timers, or long-running commands. In headless CLI mode, yielding the turn terminates the session immediately before reaching the Definition of Done. When invoking `run_command` for test runs or type checks, ALWAYS set `WaitMsBeforeAsync` high enough (up to the maximum `10000` ms) so fast checks finish synchronously. If a command or subagent moves to the background, keep your execution turn active by polling status (`manage_task(Action='status')` or `manage_subagents(Action='list')`); status polling with these tools is explicitly exempted from loop guard circuit breakers. DO NOT "busy-wait" by repeatedly reading unchanged files (`view_file`) or running redundant commands to pass time while waiting, as calling non-polling tools with identical arguments will trip the loop guard. NEVER call `schedule` or emit a terminal turn with plain text before taking the final action.
45
45
  - **Verification Command & CI Discipline**: When remote CI checks (e.g. GitHub Actions, Vercel preview deployments) are already present and passed on the PR's head commit, treat CI as verified and green. Avoid executing slow, redundant local full test suites or full type-checks when CI is already green. Run local verification commands (`npm test`, `npm run type-check`) ONLY if CI is missing, unconfirmed, or failing.
46
+ - **In-Progress CI & Zero-Polling Guardrail**: When remote CI checks (e.g. GitHub Actions, Vercel deployments) on the PR's head commit are actively running (`PENDING`, `IN_PROGRESS`, `QUEUED`), NEVER busy-poll `run_command` in a tight loop (e.g. repeated `gh run view` or `gh pr checks`). Calling `run_command` 5 times with identical parameters within a sliding window of 20 trips the deterministic loop guard circuit breaker (`loop_circuit_breaker`). If the PR has blocking review findings, bounce to draft immediately without waiting for CI. If the PR is clean, run local verification once synchronously; if passing, post an approval comment and defer merging to the next sweep once CI concludes.
46
47
  - **Autonomous Surfacing Cadence (No Permission Traps)**: Timeboxing is for surfacing progress, never for stopping. Checkpoints report status without halting execution. Never yield the turn or prompt rhetorical permission questions (e.g. "Shall I continue?", "Proceed to merge?"). Take authoritative final action autonomously.
47
48
  - **Defect Taxonomy of Bogus Green Checks**: The most expensive errors in agentic engineering come from checks reporting success for work they did not do. Audit verification against the 6 defect shapes (Vacuous assertion, Silent no-match, Errored check, Wrong reference, Stale premise, Scope mismatch). Exit codes and concrete diffs are authoritative; agent summaries are merely intent.
48
49
  - **Anti-Hallucination Disk Read-Back Verification**: Verify artifacts, generated configs, or outputs by reading values directly back out of the written artifact on disk, never from an in-memory variable, shell echo, or assumption.
49
50
  - **Reader / Writer Separation**: Peer Review is strictly an evaluator and merge authority. Never write or commit code modifications to the PR branch directly; bounce to draft so the author or autowork session applies the fix in their warm context.
50
51
 
51
- ## Final action: merge or bounce to draft
52
+ ## Final action: merge, bounce to draft, or approve & defer merge
52
53
 
53
- Every review ends in exactly one of two states:
54
+ Every review ends in exactly one of three states:
54
55
 
55
56
  - **Merge** — only if PR is good, CI is green and verified on the head commit. If the PR does not reference a tracked issue (`Closes #N`), execute Autonomous Issue Synthesis prior to merge.
56
57
  - Sequence: (1) if unlinked, synthesize tracking issue (`gh issue create`) and link to PR (`gh pr edit`), (2) squash-merge (`gh pr merge <N> --squash --delete-branch`), (3) explicitly close tracking issue if referenced (`gh issue close <ISSUE_NUMBER>`), (4) submit held review comments, (5) file follow-up issues for deferred material findings.
57
58
  - Immaterial findings (style/preference) default to dying in the review thread or getting batched.
58
59
  - Mechanical doc fixes (missing changelog line, doc typo in diff) can be committed directly to `main` after squash-merge.
59
- - **Bounce to draft** — if any **blocking** finding remains (correctness bug, security flaw, failing/missing CI, broken contract):
60
+ - **Bounce to draft** — if any **blocking** finding remains (correctness bug, security flaw, failing/broken CI, broken contract):
60
61
  - Submit review as `COMMENT` (never `REQUEST_CHANGES` on same-account PRs).
61
62
  - Convert PR back to draft: `gh pr ready <N> --undo`.
62
63
  - Autowork in-session polling detects the bounce, applies fixes, and re-marks ready.
64
+ - **Approve & defer merge (in-progress CI)** — if code is clean and zero blocking findings exist, but remote CI checks are still actively running (`PENDING` / `IN_PROGRESS` / `QUEUED`):
65
+ - Run local verification commands once synchronously.
66
+ - Post approval comment confirming clean review pending CI completion.
67
+ - Do NOT convert to draft; leave PR ready for review.
68
+ - Defer squash-merge to the next scan cycle/daemon sweep once CI concludes.
63
69
 
64
70
  ## Negative examples (DO NOT do these)
65
71
 
@@ -67,12 +73,13 @@ Every review ends in exactly one of two states:
67
73
  - Do not continue reviewing a PR after discovering it is already merged or closed.
68
74
  - Do not review automated release PRs (`release-please--*` / `chore(main): release*`).
69
75
  - Do not merge a PR with failing or absent CI checks.
70
- - Do not leave a PR in limbo — always merge or convert back to draft.
76
+ - Do not leave a PR in limbo — always merge, convert back to draft, or approve and defer merge with an explicit comment.
71
77
  - Do not attempt `REQUEST_CHANGES` or `APPROVE` on own PRs (GitHub rejects same-account review states). Always use `COMMENT` + draft toggle.
72
78
  - On re-review, do not raise new findings in code that was unchanged since the prior review — only inspect the delta commits.
73
79
  - Do not bounce a PR for non-blocking style/preference findings when all correctness checks pass.
74
80
  - Do not bounce an external contributor PR purely for missing `Closes #N` when the PR description provides a clear specification.
75
81
  - Do not call `schedule` or yield the turn with plain text while waiting for background verification tasks — stay in the tool loop until the final action is taken.
82
+ - Do not busy-poll `gh run view` or `gh pr checks` in a loop when remote CI is in progress—verify locally once and defer merge, or bounce to draft immediately if blocking findings exist.
76
83
  - Do not rerun full local test suites when remote CI checks on the head commit are already green and passing.
77
84
  - Do not write implementation code or modify the PR branch directly—bounce to draft with specific actionable findings instead.
78
85
  - Do not accept checks or tests that pass vacantly or match zero items without positive controls.
@@ -96,6 +103,8 @@ Check if `$PR_NUMBER` is set:
96
103
  3. Prioritize:
97
104
  - **Category A (re-review)**: PRs with prior review comments where author has pushed new fix commits.
98
105
  - **Category B (first review / unreviewed)**: Brand new PRs ready for review, or ready PRs whose previous review session failed or timed out.
106
+ - **Category C (ready to merge / CI-cleared)**: Ready PRs whose code review was completed/approved pending CI and whose CI checks have now completed and passed (`SUCCESS`). Prioritize these for immediate squash-merge.
107
+ 4. **CI State Gating**: In Scan mode, check status (`gh pr checks <PR_NUMBER>`). Prioritize PRs whose CI runs are already completed (`SUCCESS` or `FAILURE`). If a candidate PR's CI is still actively `IN_PROGRESS` or `QUEUED`, deprioritize it behind PRs with completed checks so CI can conclude naturally without stalling the review queue.
99
108
 
100
109
  ### Step 3: Round tracking, Target Binding, Failure Ingestion & Starting Review marker
101
110
 
@@ -142,7 +151,7 @@ Check if `$PR_NUMBER` is set:
142
151
  - **Question-First Validation**: Verify that any new custom analytics events answer a clear, decision-driving question per the 3-Tier Taxonomy in `AGENTS.md`. Flag vanity click-trackers on Tier 3 passive chrome/easter eggs as non-blocking cleanup (recommend removal).
143
152
  - **Funnel Completeness**: For new Tier 1 user funnels or critical workflows, verify the telemetry contract: impression denominator (`_shown`), interaction (`_clicked`), and failure states (`_failed` with `reason`) are captured, and events are documented in the custom events catalog (`ARCHITECTURE.md` / `DATA_CONTEXT.md`). Flag missing denominators on core funnels as blocking.
144
153
  5. If PR modifies rendered UI, verify screenshots or visual components if tooling/scripts are available.
145
- 6. Run repository verification commands (tests, type-check) ONLY if CI status is unconfirmed or failing. If remote CI (such as GitHub Actions or Vercel preview) is already green and passing on the head commit, treat CI as verified. If verification commands must be run locally, specify `WaitMsBeforeAsync: 10000` and NEVER call `schedule` or yield the turn with plain text while waiting for background tasks. If a command runs in the background, poll its completion with `manage_task(Action='status')` without busy-waiting on unchanged files.
154
+ 6. Run repository verification commands (tests, type-check) ONLY if CI status is unconfirmed or failing. If remote CI (such as GitHub Actions or Vercel preview) is already green and passing on the head commit, treat CI as verified. If verification commands must be run locally, specify `WaitMsBeforeAsync: 10000` and NEVER call `schedule` or yield the turn with plain text while waiting for background tasks. If a command runs in the background, poll its completion with `manage_task(Action='status')` without busy-waiting on unchanged files. If remote CI is currently in-progress (`PENDING` / `IN_PROGRESS` / `QUEUED`), proceed through the remaining review passes first. If blocking findings exist, bounce to draft immediately without waiting for CI. NEVER busy-poll `gh run view` or `gh pr checks` repeatedly with `run_command`.
146
155
  7. **Anti-Vacuity & Verifier Audit Pass (The 6 Bogus Green Shapes)**:
147
156
  Actively interrogate new or modified tests and verification commands against the 6 bogus green defect classes:
148
157
  - **Vacuous assertion**: Test passes whether or not the feature works (e.g. deleting the implementation under test leaves it green). Require a red-gate failure or mutation check.
@@ -189,7 +198,7 @@ If the PR is clean and approved for merge, but lacks a `Closes #N` tracking link
189
198
  - *Option B*: [Pros / Cons]
190
199
  - **Recommended Path**: [Agent recommendation]
191
200
  ```
192
- - **If Clean (or only Non-blocking findings)**:
201
+ - **If Clean (or only Non-blocking findings) and CI is Green**:
193
202
  - If the PR branch has minor mechanical merge conflicts against `origin/main` (e.g. adjacent `CHANGELOG.md` entries from concurrent merges) while code and tests are sound, resolve the conflict mechanically via `/resolving-merge-conflicts` before squash-merging rather than bouncing the PR back to draft.
194
203
  - If PR lacks `Closes #N`, execute Autonomous Issue Synthesis (Step 5.5).
195
204
  - Extract the tracking issue number `$ISSUE_NUMBER` from the PR description or title (e.g. `Closes #<N>`, `Fixes #<N>`, `Resolves #<N>`).
@@ -204,7 +213,21 @@ _Generated by [Antigravity](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/ru
204
213
  - In any review summary, decision comment, or escalation comment posted to the PR, include the run log reference if `$ROUTINE_ISSUE_NUMBER` is set (e.g. `- **Run Log**: [#$ROUTINE_ISSUE_NUMBER](${GITHUB_SERVER_URL:-https://github.com}/${GITHUB_REPOSITORY}/issues/${ROUTINE_ISSUE_NUMBER})`).
205
214
  - File follow-up issues for material non-blocking findings.
206
215
  - If mechanical doc fixes are needed, commit directly to `main`.
207
- - **Resolve Past Failed Review Runs**: After the terminal action (merge or bounce to draft) completes successfully, resolve and close any open past failed routine issues for `PR #<PR_NUMBER>`:
216
+ - **If Clean (or only Non-blocking findings) but Remote CI is In-Progress**:
217
+ - If local verification (`npm test`, `npm run type-check`) passed cleanly and zero blocking findings exist, do NOT busy-poll `gh run view` or `gh pr checks` in a loop, and do NOT bounce the PR to draft (the code is sound).
218
+ - Post an approval note on the PR indicating code review passed and merge is pending CI completion:
219
+ ```bash
220
+ gh pr comment <PR_NUMBER> --body "✅ Code review completed: clean (no blocking findings). Waiting for in-progress remote CI checks to conclude before merge.
221
+
222
+ [![Fleet](https://img.shields.io/badge/Fleet-Autonomous_Command-BBF65D?style=flat&logo=githubactions)](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})
223
+
224
+ _Generated by [Antigravity](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})_"
225
+ ```
226
+ - Submit held review comments (if any).
227
+ - Leave the PR open and ready for review (do NOT run `gh pr ready <N> --undo`).
228
+ - Emit Milestone 4 to `$ROUTINE_ISSUE_NUMBER` (if set) and record run details to `.jonah-fleet/run-report.md`.
229
+ - Log SUCCESS with "Review clean: awaiting completion of in-progress remote CI checks". The next daemon cycle or scan sweep will automatically detect the completed, passing CI checks and squash-merge the PR immediately.
230
+ - **Resolve Past Failed Review Runs**: After the terminal action (merge, bounce to draft, or CI-deferred approval) completes successfully, resolve and close any open past failed routine issues for `PR #<PR_NUMBER>`:
208
231
  ```bash
209
232
  PAST_FAILURES=$(gh issue list --label routine-log --search "PR #<PR_NUMBER>" --state open --json number --jq '.[].number' || true)
210
233
  for past_num in $PAST_FAILURES; do
@@ -222,7 +245,7 @@ _Generated by [Antigravity](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/ru
222
245
  After completing (SUCCESS or FAILURE), record run execution details to `.jonah-fleet/run-report.md`. Include:
223
246
 
224
247
  - Prompt SHA
225
- - Target PR number and decision (MERGE / BOUNCE / ESCALATE)
248
+ - Target PR number and decision (MERGE / BOUNCE / ESCALATE / DEFER_CI)
226
249
  - Execution trace and findings summary
227
250
 
228
251
  **Issue Logging Protocol**:
@@ -232,7 +255,7 @@ After completing (SUCCESS or FAILURE), record run execution details to `.jonah-f
232
255
  - **Phase**: \`Phase 4 · Reconciliation\`
233
256
  - **Status**: ✅ SUCCESS
234
257
  - **Target / Context**: \`PR #<PR_NUMBER>\`
235
- - **Key Decision / Finding**: Review completed with decision \`<MERGE | BOUNCE | ESCALATE>\`.
258
+ - **Key Decision / Finding**: Review completed with decision \`<MERGE | BOUNCE | ESCALATE | DEFER_CI>\`.
236
259
  - **Next**: Routine finished; issue closed by harness" || true
237
260
  ```
238
261
  - Follow the Routine Issue Logging & Telemetry Protocol in `ORCHESTRATION.md`. Never commit run logs to git branches.