wip(rm-02): round-4 remediation held at RM-60 boundary

This commit is contained in:
2026-08-01 14:39:36 -05:00
parent fbb6191298
commit 9b7005d59b
23 changed files with 851 additions and 1442 deletions
+10 -8
View File
@@ -44,7 +44,6 @@ function baseManifest() {
{
id: 'meta-fixture',
source: 'gates/meta-fixture.sh',
evidenceSubject: 'meta-fixture',
invocation: ['gates/meta-fixture.sh'],
deployment: { kind: 'none', reason: 'test fixture only' },
inertMutation: {
@@ -61,6 +60,7 @@ function baseManifest() {
invocation: ['gates/meta-fixture.sh'],
required: { exitCode: 7 },
actual: { exitCode: 7 },
evidence: { subject: 'meta-fixture' },
reasonPattern: 'META_REJECT',
},
],
@@ -96,7 +96,6 @@ function verifyProductionStructure(root, extraArgs = []) {
root,
'--manifest',
'gates/gates.manifest.json',
'--skip-history',
'--structure-only',
...extraArgs,
],
@@ -143,6 +142,10 @@ test('anchored gate inventory and population criteria cannot shrink together', a
await readFile(path.join(process.cwd(), 'gates', 'gates.manifest.json'), 'utf8'),
);
const root = await fixture('shrunken-gate-population');
await copyFile(
path.join(process.cwd(), 'gates', 'required-gates.baseline.json'),
path.join(root, 'gates', 'required-gates.baseline.json'),
);
source.gates = source.gates.filter((gate) => gate.id !== 'hook-pre-push');
for (const criterion of source.criteria) {
if (criterion.gateRefs) {
@@ -156,7 +159,10 @@ test('anchored gate inventory and population criteria cannot shrink together', a
const result = verifyProductionStructure(root);
assert.notEqual(result.status, 0);
assert.match(output(result), /gates population is not anchored.*hook-pre-push/i);
assert.match(
output(result),
/independent required-gate baseline rejects manifest drift at hook-pre-push/i,
);
});
test('general population criteria cannot delete their gateRefs binding', async () => {
@@ -648,6 +654,7 @@ test('compatibility scenarios execute referenced conditions as one construction'
fixture: { writeFiles: [{ path: 'conditions/second', content: 'present\n' }] },
required: { exitCode: 7 },
actual: { exitCode: 7 },
evidence: { subject: 'meta-fixture' },
reasonPattern: 'SECOND_REASON',
environment: { SECOND_REASON: 'SECOND_REASON' },
});
@@ -761,10 +768,6 @@ test('deployment drift meta-control fails if the shared comparator is made inert
);
assert.notEqual(inertSource, verifierSource, 'shared deployment comparator mutation went stale');
await writeFile(path.join(alteredScripts, 'gate-verify.mjs'), inertSource);
await copyFile(
path.join(process.cwd(), 'scripts', 'gate-history.mjs'),
path.join(alteredScripts, 'gate-history.mjs'),
);
const result = spawnSync(
process.execPath,
@@ -774,7 +777,6 @@ test('deployment drift meta-control fails if the shared comparator is made inert
root,
'--manifest',
'gates/gates.manifest.json',
'--skip-history',
],
{ cwd: root, encoding: 'utf8', env: { ...process.env, HOME: os.homedir() } },
);