jonah-fleet 1.27.1 → 1.28.0
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 +26 -1
- package/README.md +7 -7
- package/dist/commands/daemon.d.ts.map +1 -1
- package/dist/index.js +180 -51
- package/dist/lib/daemon.d.ts +16 -12
- package/dist/lib/daemon.d.ts.map +1 -1
- package/dist/lib/runner.d.ts +9 -0
- package/dist/lib/runner.d.ts.map +1 -1
- package/package.json +1 -1
- package/templates/prompts/autowork.md +4 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,8 +5,33 @@ 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.
|
|
8
|
+
## [1.28.0](https://github.com/Jonah-Projects/jonah-fleet/compare/v1.27.2...v1.28.0) (2026-09-24)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **runner:** preserve uncommitted work on crash and enforce incremental commits ([da58b83](https://github.com/Jonah-Projects/jonah-fleet/commit/da58b83334df971778417142520b321f7b520d5b))
|
|
14
|
+
|
|
15
|
+
## [1.27.2](https://github.com/Jonah-Projects/jonah-fleet/compare/v1.27.1...v1.27.2) (2026-09-24)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* **daemon:** classify draft PRs needing convergence as actionable ([#430](https://github.com/Jonah-Projects/jonah-fleet/issues/430)) ([4d407fb](https://github.com/Jonah-Projects/jonah-fleet/commit/4d407fbb34ac8853b512094b5078bc9b8c1b9f53))
|
|
9
21
|
|
|
22
|
+
## [Unreleased]
|
|
23
|
+
|
|
24
|
+
### Features
|
|
25
|
+
|
|
26
|
+
* **runner:** preserve uncommitted work by committing modified files to the active routine branch before worktree cleanup on session crashes or interruptions
|
|
27
|
+
* **prompts:** add Incremental Commits protocol to `autowork.md` to commit immediately upon passing tests and prevent work loss during long-running sessions
|
|
28
|
+
* **daemon:** update foreground interface, status commands, hotkey cheat sheet, and status ticker to Fleet brand identity
|
|
29
|
+
|
|
30
|
+
### Bug Fixes
|
|
31
|
+
|
|
32
|
+
* **daemon:** classify draft PRs needing convergence as actionable instead of in-progress to prevent zero-token preflight bypass from stalling draft PR recovery
|
|
33
|
+
|
|
34
|
+
## [1.27.1](https://github.com/Jonah-Projects/jonah-fleet/compare/v1.27.0...v1.27.1) (2026-09-23)
|
|
10
35
|
|
|
11
36
|
### Bug Fixes
|
|
12
37
|
|
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="
|
|
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
|
[](https://github.com/Jonah-Projects/jonah-fleet/actions/workflows/ci.yml)
|
|
11
11
|
[](./package.json)
|
|
12
|
-
[](
|
|
12
|
+
[](https://github.com/Jonah-Projects/jonah-fleet/blob/main/assets/brand/README.md)
|
|
13
13
|
[](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/`](
|
|
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`](
|
|
222
|
-
| **Logo Lockup** | [`logo.jpg`](
|
|
223
|
-
| **Header Banner** | [`banner.jpg`](
|
|
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`](
|
|
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
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/commands/daemon.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/commands/daemon.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0IzG"}
|
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
|
}
|
|
@@ -5257,9 +5287,9 @@ function printDaemonLogTail(repoRoot, linesCount = 20) {
|
|
|
5257
5287
|
const lines = getDaemonLogTail(repoRoot, linesCount);
|
|
5258
5288
|
const logPath = path14.join(repoRoot, ".jonah-fleet", "daemon.log");
|
|
5259
5289
|
const relativePath = path14.relative(repoRoot, logPath) || logPath;
|
|
5260
|
-
console.log(pc13.cyan(`
|
|
5261
|
-
\
|
|
5262
|
-
`));
|
|
5290
|
+
console.log(pc13.bold(pc13.cyan(`
|
|
5291
|
+
\u26A1 Tail of ${relativePath} (last ${linesCount} lines):
|
|
5292
|
+
`)));
|
|
5263
5293
|
if (lines.length === 0) {
|
|
5264
5294
|
console.log(pc13.dim(` (Log file is empty or does not exist yet at ${relativePath})
|
|
5265
5295
|
`));
|
|
@@ -5276,9 +5306,9 @@ async function inspectAndCleanWorktrees(repoRoot) {
|
|
|
5276
5306
|
return { active, cleaned };
|
|
5277
5307
|
}
|
|
5278
5308
|
function printWorktreesInspection(result) {
|
|
5279
|
-
console.log(pc13.cyan(`
|
|
5280
|
-
\
|
|
5281
|
-
`));
|
|
5309
|
+
console.log(pc13.bold(pc13.cyan(`
|
|
5310
|
+
\u26A1 Jonah Fleet Worktree Inspection & Maintenance
|
|
5311
|
+
`)));
|
|
5282
5312
|
console.log(` Active Worktrees: ${result.active.length}`);
|
|
5283
5313
|
if (result.active.length === 0) {
|
|
5284
5314
|
console.log(pc13.dim(` (No active routine worktrees found)`));
|
|
@@ -5293,28 +5323,28 @@ function printWorktreesInspection(result) {
|
|
|
5293
5323
|
console.log("");
|
|
5294
5324
|
}
|
|
5295
5325
|
function printKeybindingCheatSheet() {
|
|
5296
|
-
console.log(pc13.cyan(`
|
|
5297
|
-
\
|
|
5298
|
-
`));
|
|
5299
|
-
console.log(` ${pc13.bold("r")} Trigger peer-review scan immediately`);
|
|
5300
|
-
console.log(` ${pc13.bold("R")} Prompt for PR # and run targeted peer-review`);
|
|
5301
|
-
console.log(` ${pc13.bold("a")} Trigger autowork backlog scan immediately`);
|
|
5302
|
-
console.log(` ${pc13.bold("A")} Prompt for Issue # and run targeted autowork`);
|
|
5303
|
-
console.log(` ${pc13.bold("p")} Pause / resume automated polling intervals`);
|
|
5304
|
-
console.log(` ${pc13.bold("s")} Print current daemon status summary card`);
|
|
5305
|
-
console.log(` ${pc13.bold("v")} Toggle verbose streaming logging live`);
|
|
5306
|
-
console.log(` ${pc13.bold("l")} Tail recent lines from .jonah-fleet/daemon.log`);
|
|
5307
|
-
console.log(` ${pc13.bold("w")} Inspect active worktrees and clean stale ones`);
|
|
5308
|
-
console.log(` ${pc13.bold("q")} Graceful shutdown (waits for active routine to finish)`);
|
|
5309
|
-
console.log(` ${pc13.bold("Ctrl+C")} Immediate force abort`);
|
|
5310
|
-
console.log(` ${pc13.bold("?")} / ${pc13.bold("h")} Show this keybindings cheat-sheet
|
|
5326
|
+
console.log(pc13.bold(pc13.cyan(`
|
|
5327
|
+
\u26A1 Jonah Fleet Daemon Keybindings // Command Reference
|
|
5328
|
+
`)));
|
|
5329
|
+
console.log(` ${pc13.bold(pc13.green("r"))} Trigger peer-review scan immediately`);
|
|
5330
|
+
console.log(` ${pc13.bold(pc13.green("R"))} Prompt for PR # and run targeted peer-review`);
|
|
5331
|
+
console.log(` ${pc13.bold(pc13.green("a"))} Trigger autowork backlog scan immediately`);
|
|
5332
|
+
console.log(` ${pc13.bold(pc13.green("A"))} Prompt for Issue # and run targeted autowork`);
|
|
5333
|
+
console.log(` ${pc13.bold(pc13.green("p"))} Pause / resume automated polling intervals`);
|
|
5334
|
+
console.log(` ${pc13.bold(pc13.green("s"))} Print current daemon status summary card`);
|
|
5335
|
+
console.log(` ${pc13.bold(pc13.green("v"))} Toggle verbose streaming logging live`);
|
|
5336
|
+
console.log(` ${pc13.bold(pc13.green("l"))} Tail recent lines from .jonah-fleet/daemon.log`);
|
|
5337
|
+
console.log(` ${pc13.bold(pc13.green("w"))} Inspect active worktrees and clean stale ones`);
|
|
5338
|
+
console.log(` ${pc13.bold(pc13.green("q"))} Graceful shutdown (waits for active routine to finish)`);
|
|
5339
|
+
console.log(` ${pc13.bold(pc13.red("Ctrl+C"))} Immediate force abort`);
|
|
5340
|
+
console.log(` ${pc13.bold(pc13.green("?"))} / ${pc13.bold(pc13.green("h"))} Show this keybindings cheat-sheet
|
|
5311
5341
|
`);
|
|
5312
5342
|
}
|
|
5313
5343
|
function printDaemonStatusSummary(options) {
|
|
5314
5344
|
const { state, pendingRoutine, activeWorktrees = [], verbose } = options;
|
|
5315
|
-
console.log(pc13.cyan(`
|
|
5316
|
-
\
|
|
5317
|
-
`));
|
|
5345
|
+
console.log(pc13.bold(pc13.cyan(`
|
|
5346
|
+
\u26A1 Jonah Fleet Daemon Status Readout
|
|
5347
|
+
`)));
|
|
5318
5348
|
if (state) {
|
|
5319
5349
|
let statusText;
|
|
5320
5350
|
if (state.status === "working") {
|
|
@@ -5397,7 +5427,7 @@ function formatDaemonStatusLine(options = {}) {
|
|
|
5397
5427
|
let core;
|
|
5398
5428
|
if (options.isPaused) {
|
|
5399
5429
|
const queueStr = options.pendingRoutine ? pc13.cyan(` [Queued: ${options.pendingRoutine}]`) : "";
|
|
5400
|
-
core = `${pc13.dim("[" + timeString + "]")} \u23F8
|
|
5430
|
+
core = `${pc13.dim("[" + timeString + "]")} \u23F8 ${pc13.yellow("PAUSED")}${queueStr}`;
|
|
5401
5431
|
} else {
|
|
5402
5432
|
const nextCheck = options.nextCheckTime !== void 0 ? options.nextCheckTime : nowMs;
|
|
5403
5433
|
const diffMs = Math.max(0, nextCheck - nowMs);
|
|
@@ -5407,7 +5437,7 @@ function formatDaemonStatusLine(options = {}) {
|
|
|
5407
5437
|
const timeStr = `${mins}m ${secs < 10 ? "0" : ""}${secs}s`;
|
|
5408
5438
|
const prStr = options.lastOpenPRCount !== void 0 ? ` (${options.lastOpenPRCount} ready PRs)` : "";
|
|
5409
5439
|
const queueStr = options.pendingRoutine ? pc13.cyan(` [Queued: ${options.pendingRoutine}]`) : "";
|
|
5410
|
-
core = `${pc13.dim("[" + timeString + "]")} \
|
|
5440
|
+
core = `${pc13.dim("[" + timeString + "]")} \u26A1 ${pc13.dim("Watchdog Idle \xB7 Next check in " + timeStr + prStr)}${queueStr}`;
|
|
5411
5441
|
}
|
|
5412
5442
|
if (!includeTip) {
|
|
5413
5443
|
return truncateAnsi(core, maxCols);
|
|
@@ -5493,16 +5523,57 @@ function classifyBacklogIssues(issues, openPRs = []) {
|
|
|
5493
5523
|
const awaitingInfo = [];
|
|
5494
5524
|
const guardrails = [];
|
|
5495
5525
|
const routineLogs = [];
|
|
5496
|
-
const
|
|
5526
|
+
const readyPRReferencedIssues = /* @__PURE__ */ new Set();
|
|
5527
|
+
const draftPRReferencedIssues = /* @__PURE__ */ new Set();
|
|
5528
|
+
const gatedDraftPRReferencedIssues = /* @__PURE__ */ new Set();
|
|
5529
|
+
const humanAssignedDraftPRReferencedIssues = /* @__PURE__ */ new Set();
|
|
5530
|
+
const standaloneActionableDraftPRs = [];
|
|
5531
|
+
const standaloneGatedDraftPRs = [];
|
|
5532
|
+
const standaloneHumanDraftPRs = [];
|
|
5533
|
+
const knownIssueNumbers = new Set(issues.map((i) => i.number));
|
|
5497
5534
|
for (const pr of openPRs) {
|
|
5535
|
+
if (pr.headRefName?.startsWith("release-please--") || pr.title?.startsWith("chore(main): release")) {
|
|
5536
|
+
continue;
|
|
5537
|
+
}
|
|
5498
5538
|
const textToScan = `${pr.title || ""} ${pr.body || ""} ${pr.headRefName || ""}`;
|
|
5499
5539
|
const matches = textToScan.matchAll(/#(\d+)\b/g);
|
|
5540
|
+
const referencedIssues = /* @__PURE__ */ new Set();
|
|
5500
5541
|
for (const m of matches) {
|
|
5501
|
-
|
|
5542
|
+
referencedIssues.add(parseInt(m[1], 10));
|
|
5502
5543
|
}
|
|
5503
5544
|
const branchMatch = (pr.headRefName || "").match(/(?:^|[-_/])(\d+)(?:[-_/]|$)/);
|
|
5504
5545
|
if (branchMatch) {
|
|
5505
|
-
|
|
5546
|
+
referencedIssues.add(parseInt(branchMatch[1], 10));
|
|
5547
|
+
}
|
|
5548
|
+
const isDraft = Boolean(pr.isDraft);
|
|
5549
|
+
const prLabelNames = (pr.labels || []).map(
|
|
5550
|
+
(l) => (typeof l === "string" ? l : l.name).toLowerCase()
|
|
5551
|
+
);
|
|
5552
|
+
const hasNeedsHuman = prLabelNames.includes("needs-human");
|
|
5553
|
+
const hasHumanAssignee = (pr.assignees || []).some((a) => !isBotLogin(a.login));
|
|
5554
|
+
let hasKnownIssue = false;
|
|
5555
|
+
for (const issueNum of referencedIssues) {
|
|
5556
|
+
if (knownIssueNumbers.has(issueNum)) {
|
|
5557
|
+
hasKnownIssue = true;
|
|
5558
|
+
}
|
|
5559
|
+
if (!isDraft) {
|
|
5560
|
+
readyPRReferencedIssues.add(issueNum);
|
|
5561
|
+
} else if (hasNeedsHuman) {
|
|
5562
|
+
gatedDraftPRReferencedIssues.add(issueNum);
|
|
5563
|
+
} else if (hasHumanAssignee) {
|
|
5564
|
+
humanAssignedDraftPRReferencedIssues.add(issueNum);
|
|
5565
|
+
} else {
|
|
5566
|
+
draftPRReferencedIssues.add(issueNum);
|
|
5567
|
+
}
|
|
5568
|
+
}
|
|
5569
|
+
if (isDraft && !hasKnownIssue) {
|
|
5570
|
+
if (hasNeedsHuman) {
|
|
5571
|
+
standaloneGatedDraftPRs.push(pr);
|
|
5572
|
+
} else if (hasHumanAssignee) {
|
|
5573
|
+
standaloneHumanDraftPRs.push(pr);
|
|
5574
|
+
} else {
|
|
5575
|
+
standaloneActionableDraftPRs.push(pr);
|
|
5576
|
+
}
|
|
5506
5577
|
}
|
|
5507
5578
|
}
|
|
5508
5579
|
for (const issue of issues) {
|
|
@@ -5513,7 +5584,7 @@ function classifyBacklogIssues(issues, openPRs = []) {
|
|
|
5513
5584
|
routineLogs.push(issue);
|
|
5514
5585
|
continue;
|
|
5515
5586
|
}
|
|
5516
|
-
if (labelNames.includes("needs-human")) {
|
|
5587
|
+
if (labelNames.includes("needs-human") || gatedDraftPRReferencedIssues.has(issue.number)) {
|
|
5517
5588
|
gatedHuman.push(issue);
|
|
5518
5589
|
continue;
|
|
5519
5590
|
}
|
|
@@ -5525,14 +5596,42 @@ function classifyBacklogIssues(issues, openPRs = []) {
|
|
|
5525
5596
|
guardrails.push(issue);
|
|
5526
5597
|
continue;
|
|
5527
5598
|
}
|
|
5528
|
-
const hasMatchingPR = prReferencedIssues.has(issue.number);
|
|
5529
5599
|
const hasHumanAssignee = (issue.assignees || []).some((a) => !isBotLogin(a.login));
|
|
5530
|
-
|
|
5600
|
+
const hasReadyPR = readyPRReferencedIssues.has(issue.number);
|
|
5601
|
+
const hasHumanDraftPR = humanAssignedDraftPRReferencedIssues.has(issue.number);
|
|
5602
|
+
if (hasReadyPR || hasHumanAssignee || hasHumanDraftPR) {
|
|
5531
5603
|
inProgress.push(issue);
|
|
5532
5604
|
continue;
|
|
5533
5605
|
}
|
|
5534
5606
|
actionable.push(issue);
|
|
5535
5607
|
}
|
|
5608
|
+
for (const pr of standaloneActionableDraftPRs) {
|
|
5609
|
+
actionable.push({
|
|
5610
|
+
number: pr.number,
|
|
5611
|
+
title: pr.title || `PR #${pr.number}`,
|
|
5612
|
+
labels: (pr.labels || []).map((l) => typeof l === "string" ? { name: l } : l),
|
|
5613
|
+
assignees: pr.assignees,
|
|
5614
|
+
url: pr.url
|
|
5615
|
+
});
|
|
5616
|
+
}
|
|
5617
|
+
for (const pr of standaloneGatedDraftPRs) {
|
|
5618
|
+
gatedHuman.push({
|
|
5619
|
+
number: pr.number,
|
|
5620
|
+
title: pr.title || `PR #${pr.number}`,
|
|
5621
|
+
labels: (pr.labels || []).map((l) => typeof l === "string" ? { name: l } : l),
|
|
5622
|
+
assignees: pr.assignees,
|
|
5623
|
+
url: pr.url
|
|
5624
|
+
});
|
|
5625
|
+
}
|
|
5626
|
+
for (const pr of standaloneHumanDraftPRs) {
|
|
5627
|
+
inProgress.push({
|
|
5628
|
+
number: pr.number,
|
|
5629
|
+
title: pr.title || `PR #${pr.number}`,
|
|
5630
|
+
labels: (pr.labels || []).map((l) => typeof l === "string" ? { name: l } : l),
|
|
5631
|
+
assignees: pr.assignees,
|
|
5632
|
+
url: pr.url
|
|
5633
|
+
});
|
|
5634
|
+
}
|
|
5536
5635
|
return {
|
|
5537
5636
|
actionable,
|
|
5538
5637
|
inProgress,
|
|
@@ -5540,7 +5639,7 @@ function classifyBacklogIssues(issues, openPRs = []) {
|
|
|
5540
5639
|
awaitingInfo,
|
|
5541
5640
|
guardrails,
|
|
5542
5641
|
routineLogs,
|
|
5543
|
-
total: issues.length
|
|
5642
|
+
total: issues.length + standaloneActionableDraftPRs.length + standaloneGatedDraftPRs.length + standaloneHumanDraftPRs.length
|
|
5544
5643
|
};
|
|
5545
5644
|
}
|
|
5546
5645
|
async function getBacklogIssues(repoRoot) {
|
|
@@ -5559,7 +5658,7 @@ async function getOpenPRsForBacklog(repoRoot) {
|
|
|
5559
5658
|
try {
|
|
5560
5659
|
const { stdout } = await execFileAsync5(
|
|
5561
5660
|
"gh",
|
|
5562
|
-
["pr", "list", "--state", "open", "--json", "number,title,body,headRefName", "--limit", "
|
|
5661
|
+
["pr", "list", "--state", "open", "--json", "number,title,body,headRefName,isDraft,labels,assignees,url", "--limit", "50"],
|
|
5563
5662
|
{ cwd: repoRoot, timeout: 5e3 }
|
|
5564
5663
|
);
|
|
5565
5664
|
return JSON.parse(stdout || "[]");
|
|
@@ -5935,14 +6034,23 @@ async function runDaemonLoop(repoRoot, options = {}) {
|
|
|
5935
6034
|
status: "idle"
|
|
5936
6035
|
};
|
|
5937
6036
|
writeDaemonState(repoRoot, state);
|
|
5938
|
-
console.log(
|
|
5939
|
-
|
|
5940
|
-
|
|
5941
|
-
|
|
5942
|
-
|
|
5943
|
-
|
|
5944
|
-
|
|
5945
|
-
`
|
|
6037
|
+
console.log(
|
|
6038
|
+
renderFleetBanner({
|
|
6039
|
+
command: "DAEMON",
|
|
6040
|
+
subtitle: "LOCAL MULTI-CADENCE RUNNER",
|
|
6041
|
+
details: [
|
|
6042
|
+
{ label: "PID", value: String(process.pid) },
|
|
6043
|
+
{ label: "Review Watchdog", value: `Every ${reviewInterval}m (zero-token preflight)` },
|
|
6044
|
+
{ label: "Autowork Scan", value: `Every ${autoworkInterval}m` },
|
|
6045
|
+
{ label: "Routines", value: routines.join(", ") },
|
|
6046
|
+
{ label: "Target", value: repoRoot },
|
|
6047
|
+
{ label: "Hotkeys", value: "'r' review \xB7 'a' autowork \xB7 'p' pause \xB7 's' status \xB7 '?' help" }
|
|
6048
|
+
]
|
|
6049
|
+
})
|
|
6050
|
+
);
|
|
6051
|
+
console.log(pc14.bold(pc14.cyan(`
|
|
6052
|
+
\u26A1 Jonah Fleet Local Agent Daemon Active (PID: ${process.pid})
|
|
6053
|
+
`)));
|
|
5946
6054
|
let isStopping = false;
|
|
5947
6055
|
let isGracefulStopping = false;
|
|
5948
6056
|
let isWorking = false;
|
|
@@ -6542,14 +6650,23 @@ async function runDaemonCommand(action, options = {}) {
|
|
|
6542
6650
|
}
|
|
6543
6651
|
try {
|
|
6544
6652
|
const state2 = await startBackgroundDaemon(cwd, daemonOpts);
|
|
6653
|
+
console.log(
|
|
6654
|
+
renderFleetBanner({
|
|
6655
|
+
command: "DAEMON",
|
|
6656
|
+
subtitle: "BACKGROUND RUNNER STARTED",
|
|
6657
|
+
details: [
|
|
6658
|
+
{ label: "PID", value: String(state2.pid) },
|
|
6659
|
+
{ label: "Review Watchdog", value: `Every ${state2.reviewIntervalMinutes}m (zero-token preflight)` },
|
|
6660
|
+
{ label: "Autowork Scan", value: `Every ${state2.autoworkIntervalMinutes}m` },
|
|
6661
|
+
{ label: "Routines", value: state2.routines.join(", ") },
|
|
6662
|
+
{ label: "Log", value: ".jonah-fleet/daemon.log" }
|
|
6663
|
+
]
|
|
6664
|
+
})
|
|
6665
|
+
);
|
|
6545
6666
|
console.log(pc15.green(`
|
|
6546
6667
|
\u2713 Background agent daemon started successfully.`));
|
|
6547
|
-
console.log(pc15.dim(`
|
|
6548
|
-
|
|
6549
|
-
console.log(pc15.dim(` Autowork Backlog Scan: Every ${state2.autoworkIntervalMinutes} minutes`));
|
|
6550
|
-
console.log(pc15.dim(` Routines: ${state2.routines.join(", ")}`));
|
|
6551
|
-
console.log(pc15.dim(` Log file: .jonah-fleet/daemon.log`));
|
|
6552
|
-
console.log(pc15.dim(` Run 'jonah-fleet daemon status' or 'jonah-fleet daemon stop' to manage.`));
|
|
6668
|
+
console.log(pc15.dim(` Run 'jonah-fleet daemon status' or 'jonah-fleet daemon stop' to manage.
|
|
6669
|
+
`));
|
|
6553
6670
|
} catch (err) {
|
|
6554
6671
|
console.error(pc15.red(`
|
|
6555
6672
|
\u2717 Failed to start daemon: ${err.message}`));
|
|
@@ -6588,9 +6705,21 @@ Stopping background agent daemon (PID ${state2?.pid})...`));
|
|
|
6588
6705
|
const running = isDaemonRunning(cwd);
|
|
6589
6706
|
const state = readDaemonState(cwd);
|
|
6590
6707
|
const activeWorktrees = await listActiveWorktrees(cwd);
|
|
6591
|
-
|
|
6592
|
-
|
|
6593
|
-
|
|
6708
|
+
const statusSubtitle = running && state ? state.status === "working" ? "LOCAL RUNNER WORKING" : state.status === "paused" ? "LOCAL RUNNER PAUSED" : "LOCAL RUNNER IDLE" : "LOCAL RUNNER STOPPED";
|
|
6709
|
+
console.log(
|
|
6710
|
+
renderFleetBanner({
|
|
6711
|
+
command: "DAEMON",
|
|
6712
|
+
subtitle: statusSubtitle,
|
|
6713
|
+
details: [
|
|
6714
|
+
{ label: "Status", value: running && state ? state.status.toUpperCase() : "STOPPED" },
|
|
6715
|
+
...running && state ? [{ label: "PID", value: String(state.pid) }] : [],
|
|
6716
|
+
{ label: "Target", value: cwd }
|
|
6717
|
+
]
|
|
6718
|
+
})
|
|
6719
|
+
);
|
|
6720
|
+
console.log(pc15.bold(pc15.cyan(`
|
|
6721
|
+
\u26A1 Jonah Fleet Local Daemon Status
|
|
6722
|
+
`)));
|
|
6594
6723
|
if (running && state) {
|
|
6595
6724
|
console.log(` Status: ${pc15.green(pc15.bold("RUNNING"))}`);
|
|
6596
6725
|
console.log(` PID: ${state.pid}`);
|
package/dist/lib/daemon.d.ts
CHANGED
|
@@ -58,28 +58,32 @@ export declare function countOpenReadyPRs(repoRoot: string): Promise<number>;
|
|
|
58
58
|
* Checks if a GitHub user login corresponds to a bot account or designated agent persona.
|
|
59
59
|
*/
|
|
60
60
|
export declare function isBotLogin(login?: string | null): boolean;
|
|
61
|
-
|
|
62
|
-
* Classifies a list of open GitHub issues according to the Autowork backlog taxonomy.
|
|
63
|
-
*/
|
|
64
|
-
export declare function classifyBacklogIssues(issues: BacklogIssue[], openPRs?: Array<{
|
|
61
|
+
export interface BacklogPR {
|
|
65
62
|
number: number;
|
|
66
63
|
title?: string;
|
|
67
64
|
body?: string;
|
|
68
65
|
headRefName?: string;
|
|
69
|
-
|
|
66
|
+
isDraft?: boolean;
|
|
67
|
+
labels?: Array<{
|
|
68
|
+
name: string;
|
|
69
|
+
} | string>;
|
|
70
|
+
assignees?: Array<{
|
|
71
|
+
login: string;
|
|
72
|
+
}>;
|
|
73
|
+
url?: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Classifies a list of open GitHub issues and pull requests according to the Autowork backlog taxonomy.
|
|
77
|
+
*/
|
|
78
|
+
export declare function classifyBacklogIssues(issues: BacklogIssue[], openPRs?: BacklogPR[]): BacklogTriageReport;
|
|
70
79
|
/**
|
|
71
80
|
* Fast GitHub CLI query for open issues in ~150ms with 0 token cost.
|
|
72
81
|
*/
|
|
73
82
|
export declare function getBacklogIssues(repoRoot: string): Promise<BacklogIssue[]>;
|
|
74
83
|
/**
|
|
75
|
-
* Fast GitHub CLI query for open pull requests with titles and
|
|
84
|
+
* Fast GitHub CLI query for open pull requests with titles, bodies, and draft status.
|
|
76
85
|
*/
|
|
77
|
-
export declare function getOpenPRsForBacklog(repoRoot: string): Promise<
|
|
78
|
-
number: number;
|
|
79
|
-
title?: string;
|
|
80
|
-
body?: string;
|
|
81
|
-
headRefName?: string;
|
|
82
|
-
}>>;
|
|
86
|
+
export declare function getOpenPRsForBacklog(repoRoot: string): Promise<BacklogPR[]>;
|
|
83
87
|
/**
|
|
84
88
|
* Preflight query and classification for the full repository backlog with 0 token cost.
|
|
85
89
|
*/
|
package/dist/lib/daemon.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/lib/daemon.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/lib/daemon.ts"],"names":[],"mappings":"AAwBA,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AAI5B,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAC5C,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACvD,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAChE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9E;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAQpE;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAI3E;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CASvD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAYzD;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAQvE;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAYpF;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGzE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAezD;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC,CAAC;IAC1C,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EAAE,EACtB,OAAO,GAAE,SAAS,EAAO,GACxB,mBAAmB,CAkKrB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAWhF;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,EAAE,CAAC,CAWtB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAM3F;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAsD/G;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAanE;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IACzG,YAAY,CAAC,EAAE,CACb,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,MAAM,KACb,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB;AAED,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAWtE;AAED;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,iBAAiB,EAAE,MAAM,GAAG,4BAA4B,GACvD,OAAO,CAAC,MAAM,CAAC,CA0FjB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACvD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7E,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,YAAY,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuH3F;AAGD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACvD,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAChE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7E,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,0BAA0B,GACtC,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgGjD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwnBhG"}
|
package/dist/lib/runner.d.ts
CHANGED
|
@@ -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
|
*/
|
package/dist/lib/runner.d.ts.map
CHANGED
|
@@ -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
|
@@ -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
|
|
|
@@ -87,7 +89,7 @@ a. **Read the target issue and check eligibility.** Eligible = open, unassigned
|
|
|
87
89
|
|
|
88
90
|
### Phase 1: Converge on open work (Scan mode; skipped in Targeted mode)
|
|
89
91
|
|
|
90
|
-
1. List all open PRs
|
|
92
|
+
1. List all open PRs needing attention (specifically draft PRs bounced back by peer review or open PRs with review comments: `gh pr list --state open --json number,title,isDraft,headRefName,assignees,labels,author`, excluding automated release PRs `release-please--*` / `chore(main): release*`).
|
|
91
93
|
1a. **PR Claim Protocol (Single-Flight PR Convergence)**:
|
|
92
94
|
- For each open PR needing attention (bounced to draft with actionable findings, or open with unaddressed review comments):
|
|
93
95
|
- **Check eligibility**: re-read candidate PR (`gh pr view <PR> --json assignees,comments`). Skip PRs currently assigned to another live runner or carrying an active claim comment posted within the last 2 hours (unless stale claim per `ORCHESTRATION.md`).
|
|
@@ -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.
|