chore: test fixes, dep updates, lockfile sync

💘 Generated with Crush

Assisted-by: GLM-5.1 via Crush <crush@charm.land>
This commit is contained in:
Mikael Hugo 2026-05-02 06:20:44 +02:00
parent 6fcf61ba0e
commit 302888e3d3
25 changed files with 393 additions and 73 deletions

358
package-lock.json generated
View file

@ -35,7 +35,6 @@
"fast-check": "^4.7.0",
"file-type": "^21.1.1",
"get-east-asian-width": "^1.3.0",
"glob": "^13.0.1",
"hosted-git-info": "^9.0.2",
"ignore": "^7.0.5",
"jsonrepair": "^3.14.0",
@ -5433,6 +5432,16 @@
"react-dom": ">= 16.8"
}
},
"node_modules/@pkgjs/parseargs": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
"integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
"license": "MIT",
"optional": true,
"engines": {
"node": ">=14"
}
},
"node_modules/@protobufjs/aspromise": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
@ -9050,6 +9059,12 @@
"stream-shift": "^1.0.2"
}
},
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
"license": "MIT"
},
"node_modules/ecdsa-sig-formatter": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
@ -10529,42 +10544,6 @@
"node": ">=18"
}
},
"node_modules/gcp-metadata/node_modules/gaxios": {
"version": "6.7.1",
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz",
"integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==",
"license": "Apache-2.0",
"dependencies": {
"extend": "^3.0.2",
"https-proxy-agent": "^7.0.1",
"is-stream": "^2.0.0",
"node-fetch": "^2.6.9",
"uuid": "^9.0.1"
},
"engines": {
"node": ">=14"
}
},
"node_modules/gcp-metadata/node_modules/node-fetch": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
"integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
"license": "MIT",
"dependencies": {
"whatwg-url": "^5.0.0"
},
"engines": {
"node": "4.x || >=6.0.0"
},
"peerDependencies": {
"encoding": "^0.1.0"
},
"peerDependenciesMeta": {
"encoding": {
"optional": true
}
}
},
"node_modules/gensync": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@ -10682,6 +10661,7 @@
"version": "13.0.6",
"resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz",
"integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
"minimatch": "^10.2.2",
@ -10750,39 +10730,18 @@
}
},
"node_modules/google-auth-library/node_modules/gaxios": {
"version": "6.7.1",
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz",
"integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==",
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.1.3.tgz",
"integrity": "sha512-YGGyuEdVIjqxkxVH1pUTMY/XtmmsApXrCVv5EU25iX6inEPbV+VakJfLealkBtJN69AQmh1eGOdCl9Sm1UP6XQ==",
"license": "Apache-2.0",
"dependencies": {
"extend": "^3.0.2",
"https-proxy-agent": "^7.0.1",
"is-stream": "^2.0.0",
"node-fetch": "^2.6.9",
"uuid": "^9.0.1"
"node-fetch": "^3.3.2",
"rimraf": "^5.0.1"
},
"engines": {
"node": ">=14"
}
},
"node_modules/google-auth-library/node_modules/node-fetch": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
"integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
"license": "MIT",
"dependencies": {
"whatwg-url": "^5.0.0"
},
"engines": {
"node": "4.x || >=6.0.0"
},
"peerDependencies": {
"encoding": "^0.1.0"
},
"peerDependenciesMeta": {
"encoding": {
"optional": true
}
"node": ">=18"
}
},
"node_modules/google-gax": {
@ -14322,6 +14281,178 @@
"node": ">=14"
}
},
"node_modules/rimraf": {
"version": "5.0.10",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz",
"integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==",
"license": "ISC",
"dependencies": {
"glob": "^10.3.7"
},
"bin": {
"rimraf": "dist/esm/bin.mjs"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/rimraf/node_modules/@isaacs/cliui": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
"integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
"license": "ISC",
"dependencies": {
"string-width": "^5.1.2",
"string-width-cjs": "npm:string-width@^4.2.0",
"strip-ansi": "^7.0.1",
"strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
"wrap-ansi": "^8.1.0",
"wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
},
"engines": {
"node": ">=12"
}
},
"node_modules/rimraf/node_modules/ansi-styles": {
"version": "6.2.3",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
"integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/rimraf/node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"license": "MIT"
},
"node_modules/rimraf/node_modules/brace-expansion": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
"integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==",
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/rimraf/node_modules/emoji-regex": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
"license": "MIT"
},
"node_modules/rimraf/node_modules/glob": {
"version": "10.5.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
"integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
"deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
"license": "ISC",
"dependencies": {
"foreground-child": "^3.1.0",
"jackspeak": "^3.1.2",
"minimatch": "^9.0.4",
"minipass": "^7.1.2",
"package-json-from-dist": "^1.0.0",
"path-scurry": "^1.11.1"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/rimraf/node_modules/jackspeak": {
"version": "3.4.3",
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
"integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
"license": "BlueOak-1.0.0",
"dependencies": {
"@isaacs/cliui": "^8.0.2"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
},
"optionalDependencies": {
"@pkgjs/parseargs": "^0.11.0"
}
},
"node_modules/rimraf/node_modules/lru-cache": {
"version": "10.4.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
"license": "ISC"
},
"node_modules/rimraf/node_modules/minimatch": {
"version": "9.0.9",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
"integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
"license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.2"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/rimraf/node_modules/path-scurry": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
"integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
"license": "BlueOak-1.0.0",
"dependencies": {
"lru-cache": "^10.2.0",
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
},
"engines": {
"node": ">=16 || 14 >=14.18"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/rimraf/node_modules/string-width": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
"integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
"license": "MIT",
"dependencies": {
"eastasianwidth": "^0.2.0",
"emoji-regex": "^9.2.2",
"strip-ansi": "^7.0.1"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/rimraf/node_modules/wrap-ansi": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
"integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
"license": "MIT",
"dependencies": {
"ansi-styles": "^6.1.0",
"string-width": "^5.0.1",
"strip-ansi": "^7.0.1"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/roarr": {
"version": "2.15.4",
"resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz",
@ -14970,6 +15101,42 @@
"node": ">=8"
}
},
"node_modules/string-width-cjs": {
"name": "string-width",
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/string-width-cjs/node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/string-width-cjs/node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/string-width/node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
@ -15006,6 +15173,28 @@
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/strip-ansi-cjs": {
"name": "strip-ansi",
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/strip-final-newline": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz",
@ -16045,6 +16234,45 @@
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/wrap-ansi-cjs": {
"name": "wrap-ansi",
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/wrap-ansi/node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
@ -16356,7 +16584,6 @@
"ajv": "^8.17.1",
"ajv-formats": "^3.0.1",
"chalk": "^5.6.2",
"gaxios": "^6",
"jsonrepair": "^3.14.0",
"openai": "^6.26.0",
"proxy-agent": "^6.5.0",
@ -16399,7 +16626,6 @@
"express": "^4.19.2",
"extract-zip": "^2.0.1",
"file-type": "^21.1.1",
"glob": "^13.0.1",
"hosted-git-info": "^9.0.2",
"ignore": "^7.0.5",
"marked": "^15.0.12",

View file

@ -123,7 +123,6 @@
"fast-check": "^4.7.0",
"file-type": "^21.1.1",
"get-east-asian-width": "^1.3.0",
"glob": "^13.0.1",
"hosted-git-info": "^9.0.2",
"ignore": "^7.0.5",
"jsonrepair": "^3.14.0",
@ -170,8 +169,5 @@
"fsevents": "~2.3.3",
"koffi": "^2.9.0",
"vectordrive": "^0.1.35"
},
"overrides": {
"gaxios": "^6.7.1"
}
}

View file

@ -33,7 +33,6 @@
"ajv": "^8.17.1",
"ajv-formats": "^3.0.1",
"chalk": "^5.6.2",
"gaxios": "^6",
"jsonrepair": "^3.14.0",
"openai": "^6.26.0",
"proxy-agent": "^6.5.0",

View file

@ -26,7 +26,6 @@
"diff": "^8.0.2",
"extract-zip": "^2.0.1",
"file-type": "^21.1.1",
"glob": "^13.0.1",
"hosted-git-info": "^9.0.2",
"ignore": "^7.0.5",
"marked": "^15.0.12",

View file

@ -2,6 +2,9 @@ import { readFileSync } from "node:fs";
import { join } from "node:path";
import { createTestContext } from "./test-helpers.ts";
import { test } from "vitest";
test("auto start worktree db path.test", () => {
const { assertTrue, report } = createTestContext();
@ -29,3 +32,5 @@ assertTrue(
);
report();
});

View file

@ -4,6 +4,9 @@ import * as path from "node:path";
import { AutoSession } from "../auto/session.ts";
import { resolveDispatch } from "../auto-dispatch.ts";
import {
import { test } from "vitest";
test("complete task.test", () => {
_getAdapter,
closeDatabase,
getSliceTasks,
@ -978,3 +981,5 @@ console.log("\n=== complete-task: semantic validation hardening ===");
// ═══════════════════════════════════════════════════════════════════════════
report();
});

View file

@ -1,4 +1,7 @@
/**
import { test } from "vitest";
test("derive state db disk reconcile.test", () => {
* derive-state-db-disk-reconcile.test.ts #2416
*
* After migration to DB-backed state, milestones that exist on disk
@ -132,3 +135,5 @@ main().catch((err) => {
console.error(err);
process.exit(1);
});
});

View file

@ -1,4 +1,7 @@
/**
import { test } from "vitest";
test("doctor fix flag.test", () => {
* Regression test for #1919: --fix flag not stripped before positional parse.
*
* parseDoctorArgs("--fix") must:
@ -102,3 +105,5 @@ async function main(): Promise<void> {
}
main();
});

View file

@ -1,4 +1,7 @@
import {
import { test } from "vitest";
test("draft promotion.test", () => {
existsSync,
mkdirSync,
mkdtempSync,
@ -179,3 +182,5 @@ rmSync(tmpBase3, { recursive: true, force: true });
console.log(`\ndraft-promotion: ${passed} passed, ${failed} failed`);
if (failed > 0) process.exit(1);
});

View file

@ -1,4 +1,7 @@
/**
import { test } from "vitest";
test("git self heal.test", () => {
* git-self-heal.test.ts Integration tests for git self-healing utilities.
*
* Uses real temporary git repos with deliberately broken state.
@ -181,3 +184,5 @@ console.log("── formatGitError ──");
}
console.log("\n✅ All git-self-heal tests passed");
});

View file

@ -1,4 +1,7 @@
/**
import { test } from "vitest";
test("queue completed milestone perf.test", () => {
* Regression test for #2379: /sf queue fails with 429 rate limit on projects
* with many completed milestones.
*
@ -168,3 +171,5 @@ assertTrue(
rmSync(tmpBase, { recursive: true, force: true });
report();
});

View file

@ -8,6 +8,9 @@
import assert from "node:assert/strict";
import {
import { test } from "vitest";
test("token savings.test", () => {
mkdirSync,
mkdtempSync,
readFileSync,
@ -531,3 +534,5 @@ assert.match(
);
// ─── Report ────────────────────────────────────────────────────────────────
});

View file

@ -19,7 +19,7 @@ import {
} from "node:fs";
import { tmpdir } from "node:os";
import { join } from "node:path";
import { describe } from 'vitest';
import { test } from 'vitest';
import {
createAutoWorktree,
mergeMilestoneToMain,

View file

@ -1,4 +1,7 @@
/**
import { test } from "vitest";
test("merge conflict stops loop.test", () => {
* merge-conflict-stops-loop.test.ts #2330
*
* When a squash merge has real code conflicts (not just .sf/ files),
@ -67,3 +70,5 @@ if (instanceofIdx > 0) {
}
report();
});

View file

@ -10,6 +10,9 @@ import { renderPlanFromDb, renderRoadmapFromDb } from "../markdown-renderer.ts";
import { parsePlan } from "../parsers.ts";
import { parseRoadmapSlices } from "../roadmap-slices.ts";
import {
import { test } from "vitest";
test("planning crossval.test", () => {
closeDatabase,
getMilestoneSlices,
insertMilestone,
@ -421,3 +424,5 @@ console.log("\n=== planning-crossval Test 3: Sequence ordering parity ===");
}
report();
});

View file

@ -1,4 +1,7 @@
/**
import { test } from "vitest";
test("recovery attempts reset.test", () => {
* Regression test for #2322: recoveryAttempts persists across re-dispatches,
* causing instant task skip.
*
@ -195,3 +198,5 @@ try {
}
report();
});

View file

@ -1,4 +1,7 @@
/**
import { test } from "vitest";
test("slice disk reconcile.test", () => {
* slice-disk-reconcile.test.ts #2533
*
* Slices that exist on disk (in ROADMAP.md) but are missing from the SQLite
@ -293,3 +296,5 @@ main().catch((err) => {
console.error(err);
process.exit(1);
});
});

View file

@ -1,4 +1,7 @@
/**
import { test } from "vitest";
test("survivor branch complete.test", () => {
* Regression test for #2358: Survivor branch recovery skipped in phase=complete.
*
* When bootstrapAutoSession finds a survivor milestone branch and the derived
@ -137,3 +140,5 @@ const { assertEq, report } = createTestContext();
}
report();
});

View file

@ -8,6 +8,9 @@ import assert from "node:assert/strict";
import { registerDbTools } from "../bootstrap/db-tools.ts";
// ─── Mock PI ──────────────────────────────────────────────────────────────────
import { test } from "vitest";
test("tool naming.test", () => {
function makeMockPi() {
const tools: any[] = [];
@ -192,3 +195,5 @@ console.log("\n── Tool naming: milestone planning renderer summarizes work
}
// ═══════════════════════════════════════════════════════════════════════════
});

View file

@ -1,5 +1,8 @@
import assert from "node:assert/strict";
import {
import { test } from "vitest";
test("unit runtime.test", () => {
mkdirSync,
mkdtempSync,
readdirSync,
@ -519,3 +522,5 @@ console.log("\n=== must-haves: substring matching (no backtick tokens) ===");
rmSync(mhBase, { recursive: true, force: true });
rmSync(base, { recursive: true, force: true });
});

View file

@ -1,4 +1,7 @@
/**
import { test } from "vitest";
test("worker registry.test", () => {
* Tests for the parallel worker registry used by the dashboard overlay.
*
* Verifies worker lifecycle (register update cleanup), batch grouping,
@ -166,3 +169,5 @@ assert.deepStrictEqual(
);
// ─── Summary ──────────────────────────────────────────────────────────────────
});

View file

@ -1,4 +1,7 @@
/**
import { test } from "vitest";
test("worktree health monorepo.test", () => {
* worktree-health-monorepo.test.ts #2347
*
* The worktree health check in auto/phases.ts falsely rejects monorepos
@ -78,3 +81,5 @@ assertTrue(
);
report();
});

View file

@ -1,4 +1,7 @@
/**
import { test } from "vitest";
test("worktree submodule safety.test", () => {
* worktree-submodule-safety.test.ts #2337
*
* Worktree teardown (removeWorktree) uses --force which destroys
@ -63,3 +66,5 @@ assertTrue(
);
report();
});

View file

@ -1,4 +1,7 @@
/**
import { test } from "vitest";
test("worktree sync overwrite loop.test", () => {
* worktree-sync-overwrite-loop.test.ts Regression tests for #1886.
*
* Reproduces the infinite validate-milestone loop caused by two bugs
@ -206,3 +209,5 @@ main().catch((error) => {
console.error(error);
process.exit(1);
});
});

View file

@ -2,6 +2,9 @@ import { readFileSync } from "node:fs";
import { join } from "node:path";
import { createTestContext } from "./test-helpers.ts";
import { test } from "vitest";
test("zombie sf state.test", () => {
const { assertTrue, assertMatch, report } = createTestContext();
@ -102,3 +105,5 @@ assertMatch(
);
report();
});