@rightkit/release 0.6.30 → 0.6.31
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/deterministic-scans.mjs +6 -2
- package/package.json +1 -1
- package/rightkit-versions.json +1 -1
- package/snapshot-git.mjs +10 -1
package/deterministic-scans.mjs
CHANGED
|
@@ -2432,7 +2432,10 @@ export function cargoReadTargetDir({ tmpRoot, roots }) {
|
|
|
2432
2432
|
export async function runScans(plan, options = {}) {
|
|
2433
2433
|
const deps = {
|
|
2434
2434
|
// Concurrent runs need a spawn that does not block the event loop.
|
|
2435
|
-
|
|
2435
|
+
// Always asynchronous (A9): a synchronous spawn holds the event loop, so no scan's time limit can fire while it runs. The 2026-11-02 runs
|
|
2436
|
+
// show it: every scan that finished at the same moment reported the same inflated time (shellcheck and actionlint 1,655 s, against a
|
|
2437
|
+
// 5 min limit), held by a synchronous broker call. One lane used the synchronous spawn, so a single-lane run had no working limit.
|
|
2438
|
+
spawn: defaultSpawnAsync,
|
|
2436
2439
|
// Locating a tool (rustfmt's `which`/`where` fallback) is synchronous whatever `spawn` is.
|
|
2437
2440
|
lookupSpawn: defaultSpawn, exists: fs.existsSync, readFile: (f) => fs.readFileSync(f, "utf8"), readdir: fs.readdirSync,
|
|
2438
2441
|
env: process.env, platform: process.platform, execPath: process.execPath,
|
|
@@ -2558,7 +2561,8 @@ export async function runScans(plan, options = {}) {
|
|
|
2558
2561
|
let row = await scanRow(s, extraEnv);
|
|
2559
2562
|
// rightkit#1459: a class A scan that timed out is run once more before it fails Class A (a hung tool, e.g. actionlint on 2026-11-02, ran
|
|
2560
2563
|
// 27 min and failed a run whose rerun passed in 1 s). Class B and carried scans are not retried: a compile that times out is a real failure.
|
|
2561
|
-
|
|
2564
|
+
// Test suites are not retried either: a slow test is a finding, not a hung tool.
|
|
2565
|
+
if (row.status === "fail" && row.code === "TIMEOUT" && s.class === SCAN_CLASS.A && s.kind !== "test" && !signal?.aborted) {
|
|
2562
2566
|
const first = row;
|
|
2563
2567
|
row = await scanRow(s, extraEnv);
|
|
2564
2568
|
row = { ...row, retried: { code: first.code, detail: first.detail } };
|
package/package.json
CHANGED
package/rightkit-versions.json
CHANGED
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"@rightkit/qa": "0.6.2",
|
|
50
50
|
"@rightkit/qa-chrome": "0.1.12",
|
|
51
51
|
"@rightkit/react-shell": "0.7.2",
|
|
52
|
-
"@rightkit/release": "0.6.
|
|
52
|
+
"@rightkit/release": "0.6.31",
|
|
53
53
|
"@rightkit/settings-ui": "0.7.0",
|
|
54
54
|
"@rightkit/social-ui": "0.1.0",
|
|
55
55
|
"@rightkit/system-ui": "0.1.0",
|
package/snapshot-git.mjs
CHANGED
|
@@ -133,9 +133,18 @@ function discoveryHome() {
|
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
/** git run in `cwd` against the checkout's own repository (found from `cwd`), under the sealed environment (no GIT_DIR, no index) plus GIT_NO_REPLACE_OBJECTS. Returns the spawn result. */
|
|
136
|
+
// The sealed environment hides the user's global git config, so the user's `safe.directory` never reaches git: a checkout owned by
|
|
137
|
+
// another account (on the Dell, D:\Claude\viewright and postright belong to BUILTIN\Administrators) was refused as "dubious ownership"
|
|
138
|
+
// from 0.6.9 on. The checkout itself is named on the command line (command-line config is protected configuration, which git accepts for
|
|
139
|
+
// safe.directory), forward slashes as git compares them, and fsmonitor stays off so the checkout's own config can start no program.
|
|
140
|
+
export function discoverySafeArgs(cwd, platform = process.platform) {
|
|
141
|
+
const dir = (platform === "win32" ? path.win32 : path).resolve(cwd);
|
|
142
|
+
return ["-c", `safe.directory=${platform === "win32" ? dir.replaceAll("\\", "/") : dir}`, "-c", "core.fsmonitor=false"];
|
|
143
|
+
}
|
|
144
|
+
|
|
136
145
|
export function discoveryRun(cwd, args, { platform = process.platform, input } = {}) {
|
|
137
146
|
const env = sealedEnv(discoveryHome(), { platform, gitDir: null, index: false });
|
|
138
|
-
return spawnSync("git", args, { cwd, env, input, encoding: "utf8", maxBuffer: MAX_BUFFER });
|
|
147
|
+
return spawnSync("git", [...discoverySafeArgs(cwd, platform), ...args], { cwd, env, input, encoding: "utf8", maxBuffer: MAX_BUFFER });
|
|
139
148
|
}
|
|
140
149
|
/** As discoveryRun, returning trimmed-by-caller stdout or throwing an Error naming the command. */
|
|
141
150
|
export function discoveryGit(cwd, args, options) {
|