fix(ci): verify retained Windows directory ownership

This commit is contained in:
morluto committed 2026-10-14 02:11:39 +08:00
1 parent d41f7963c8
commit 7b33314701
2 files changed
+8 -4

No files matched your search

+3 -2
View File
@@ -389,8 +389,9 @@ adds in-place reparse, breakaway, environment, and token observations.
The separate `scripts/verify-windows-native-inspection.mjs` lane uses the
`.cache/windows-native-inspection-fixture` artifact built on Linux with
`node scripts/build-windows-native.mjs --inspection-fixture`. Its controlled
first deletion failure checks retained NTFS ownership, later-query recovery,
successful-admission caching, and environment-teardown cleanup. It neither
first deletion failure checks retained NTFS ownership across a same-volume
rename, later-query handle-based recovery, successful-admission caching, and
environment-teardown cleanup. It neither
establishes the cause of the intermittent #1701 host failure nor replaces
verification with the shipped production artifact.
`npm run verify:ghidra:windows:package` additionally packs and installs REA into
+5 -2
View File
@@ -62,8 +62,11 @@ assert.equal(first.retryable,true);
assert.match(first.reason,/Delete owned object by handle failed.*Win32 5/s);
const [name,...extra]=readdirSync(temp);assert.ok(name);assert.equal(extra.length,0);
const path=join(temp,name);const identity=statSync(path,{bigint:true});
assert.throws(()=>renameSync(path,path+'-replacement'));
assert.equal(statSync(path,{bigint:true}).ino,identity.ino);
// This private directory permits rename while its retained handle still owns
// cleanup. Recovery must follow the object identity after its path changes.
const replacement=path+'-replacement';renameSync(path,replacement);
assert.equal(statSync(replacement,{bigint:true}).ino,identity.ino);
assert.equal(readdirSync(temp).length,1);
if(process.argv[2]!=='teardown'){
const second=systemWindowsNativeAuthority();assert.equal(second.available,true);
assert.equal(readdirSync(temp).length,0);