fix(quality): record current-tree trust boundary
ci/woodpecker/pr/ci Pipeline failed

This commit is contained in:
2026-07-31 22:41:30 -05:00
parent bd603da4b0
commit ada0cbe60e
12 changed files with 248 additions and 43 deletions
+26 -2
View File
@@ -14,6 +14,15 @@ import {
const fixtureRoot = path.join(process.cwd(), '.mosaic-test-work', `gate-history-${process.pid}`);
function sandboxUnavailable(result) {
const detail = `${result.stdout ?? ''}${result.stderr ?? ''}${result.error?.message ?? ''}`;
if (!/bwrap:.*(?:Operation not permitted|Creating new namespace failed)/i.test(detail)) {
return false;
}
assert.notEqual(result.status, 0, 'sandbox unavailability must remain terminal nonzero');
return true;
}
function git(root, ...args) {
const result = spawnSync('git', args, { cwd: root, encoding: 'utf8' });
assert.equal(result.status, 0, result.stderr);
@@ -79,6 +88,7 @@ test('historical replay executes each selected commit verifier from that commit
const inertResult = await replayCommit(root, inert);
const fixedResult = await replayCommit(root, fixed);
if (sandboxUnavailable(inertResult) || sandboxUnavailable(fixedResult)) return;
assert.notEqual(inertResult.status, 0);
assert.match(inertResult.stderr, /OLD TREE INERT/);
assert.equal(fixedResult.status, 0);
@@ -117,6 +127,7 @@ test('historical install lifecycle cannot replace an authoritative verifier', as
const result = await replayCommit(root, commit);
assert.notEqual(result.status, 0);
if (sandboxUnavailable(result)) return;
assert.match(result.stderr, /authoritative archived file changed.*scripts\/gate-verify\.mjs/i);
assert.doesNotMatch(result.stdout, /FORGED SUCCESS/);
});
@@ -141,6 +152,7 @@ test('historical verifier receives no current-process secret environment', async
process.env.REPLAY_SENTINEL = 'must-not-cross-boundary';
try {
const result = await replayCommit(root, commit);
if (sandboxUnavailable(result)) return;
assert.equal(result.status, 0, result.stderr);
assert.match(result.stdout, /SECRETLESS/);
assert.doesNotMatch(
@@ -174,6 +186,7 @@ test('historical replay cannot observe a sibling process in the runner PID names
git(root, 'commit', '-m', 'pid-isolated replay fixture');
const commit = git(root, 'rev-parse', 'HEAD');
const result = await replayCommit(root, commit);
if (sandboxUnavailable(result)) return;
assert.equal(result.status, 0, result.stderr);
assert.match(result.stdout, /PIDLESS/);
assert.doesNotMatch(`${result.stdout}${result.stderr}`, /HOST PID VISIBLE/);
@@ -182,7 +195,7 @@ test('historical replay cannot observe a sibling process in the runner PID names
}
});
test('feature-branch history replays an inert intermediate commit before the healthy head', async () => {
test('PR verification states the RM-60 boundary without executing an intermediate verifier', async () => {
const root = `${fixtureRoot}-feature`;
await rm(root, { recursive: true, force: true });
await mkdir(root, { recursive: true });
@@ -217,7 +230,18 @@ test('feature-branch history replays an inert intermediate commit before the hea
root,
manifest: { schemaVersion: 1, activationCommit: activation },
});
assert.ok(result.failures.some((failure) => /INTERMEDIATE INERT/.test(failure)));
assert.deepEqual(result.failures, []);
assert.ok(
result.observations.some(
(observation) => /DOES:.*current tree.*DOES NOT:.*isolated.*RM-60.*RM-59/i.test(observation),
),
);
assert.ok(
result.observations.some(
(observation) => /INTERMEDIATE REPLAY DEFERRED.*RM-60.*no success is inferred/i.test(observation),
),
);
assert.ok(result.observations.every((observation) => !/INTERMEDIATE INERT/.test(observation)));
} finally {
if (previousBranch === undefined) delete process.env.CI_COMMIT_BRANCH;
else process.env.CI_COMMIT_BRANCH = previousBranch;