docs(changelog): the third review remediation, decision 41's door line and the findings decision 42 defers
Review findings of S153; operator decisions 37 to 43. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
829da487ec
commit
ca9cb53e79
2 changed files with 93 additions and 6 deletions
|
|
@ -373,7 +373,7 @@ test('CHANGELOG: Known issues name the verdict gate, the engine payloads and ope
|
|||
assert.match(known, /\boperator\s+decision\s+25\b/, `Known issues name operator decision 25: ${JSON.stringify(known)}`);
|
||||
});
|
||||
|
||||
test('CHANGELOG: the intro names the second remediation\'s Step 8 commit, and no longer acd0e3d, 5b94952 or the Step 13 commit', () => {
|
||||
test('CHANGELOG: the intro names the third remediation\'s Step 2 commit with its measured suite, and no longer acd0e3d, 5b94952 or the Step 13 commit', () => {
|
||||
const body = unreleasedBody();
|
||||
const firstSub = body.search(/^### /m);
|
||||
const intro = firstSub < 0 ? body : body.slice(0, firstSub);
|
||||
|
|
@ -381,8 +381,14 @@ test('CHANGELOG: the intro names the second remediation\'s Step 8 commit, and no
|
|||
assert.ok(!intro.includes('5b94952'), `the intro no longer names 5b94952: ${JSON.stringify(intro)}`);
|
||||
assert.doesNotMatch(intro, /the\s+remediation's\s+Step\s+13\s+commit/,
|
||||
`the intro no longer names "the remediation's Step 13 commit": ${JSON.stringify(intro)}`);
|
||||
assert.match(intro, /the\s+second\s+remediation's\s+Step\s+8\s+commit/,
|
||||
`the intro names "the second remediation's Step 8 commit": ${JSON.stringify(intro)}`);
|
||||
assert.match(intro, /the\s+third\s+remediation's\s+Step\s+2\s+commit/,
|
||||
`the intro names "the third remediation's Step 2 commit": ${JSON.stringify(intro)}`);
|
||||
assert.doesNotMatch(intro, /the\s+second\s+remediation's\s+Step\s+8\s+commit/,
|
||||
`the intro no longer names "the second remediation's Step 8 commit": ${JSON.stringify(intro)}`);
|
||||
// Measured by `npm test` at 829da48, the third remediation's Step 2 commit.
|
||||
assert.match(intro, /Suite\s+2517\s+\(2515\s+pass,\s+0\s+fail,\s+2\s+skipped\)/,
|
||||
`the intro names the measured suite "Suite 2517 (2515 pass, 0 fail, 2 skipped)": ${JSON.stringify(intro)}`);
|
||||
assert.ok(intro.includes('(`829da48`)'), `the intro names the backticked short sha 829da48: ${JSON.stringify(intro)}`);
|
||||
});
|
||||
|
||||
// Second remediation, Step 9: the CHANGELOG records round 2. Door lines name
|
||||
|
|
@ -470,3 +476,48 @@ test('CHANGELOG: the old rerun wording is gone from the Unreleased section', ()
|
|||
assert.ok(!flat.includes(phrase), `the Unreleased section no longer says "${phrase}"`);
|
||||
}
|
||||
});
|
||||
|
||||
// Third remediation, Step 3: the CHANGELOG records round 3. A door line names
|
||||
// operator decision 41 (below 1.8 the helper's own files go to red proof); the
|
||||
// Fixed bullets name `703d87e1` and `7b3b59ed`; Known issues name each finding
|
||||
// operator decision 42 defers, and the accepted deviation of operator decision
|
||||
// 38. The Known-issues bullets are read from that slice only (knownIssues
|
||||
// above), so the round-1 Fixed bullet that names `4b6460e5` never counts.
|
||||
|
||||
// The Unreleased section's `### Fixed` body, up to the next heading.
|
||||
const fixedSlice = (body) => {
|
||||
const lines = body.split('\n');
|
||||
const start = lines.findIndex((l) => /^### Fixed\s*$/.test(l));
|
||||
assert.ok(start >= 0, 'the Unreleased section has a "### Fixed" heading');
|
||||
let end = lines.length;
|
||||
for (let i = start + 1; i < lines.length; i++) {
|
||||
if (/^###? /.test(lines[i])) { end = i; break; }
|
||||
}
|
||||
return lines.slice(start + 1, end).join('\n');
|
||||
};
|
||||
|
||||
test('CHANGELOG: round 3 — the decision-41 door line, two Fixed bullets and the findings deferred by decision 42', () => {
|
||||
const body = unreleasedBody();
|
||||
const d = releaseCheck.parseDoors(body);
|
||||
assert.deepEqual(d.bad, [], 'every top-level door line reads "- one-way: ..." or "- two-way: ..."');
|
||||
const texts = d.entries.map((e) => e.text);
|
||||
assert.ok(texts.some((t) => /\boperator decision 41\b/.test(t)),
|
||||
`a door line names operator decision 41: ${JSON.stringify(texts)}`);
|
||||
|
||||
const fixed = fixedSlice(body);
|
||||
const f703 = bullet(fixed, /703d87e1/, 'Fixed bullet 703d87e1');
|
||||
assert.ok(f703.includes('tests/helpers/timing.mjs'), `the 703d87e1 bullet names tests/helpers/timing.mjs: ${JSON.stringify(f703)}`);
|
||||
const f7b3 = bullet(fixed, /7b3b59ed/, 'Fixed bullet 7b3b59ed');
|
||||
assert.match(f7b3, /\boperator\s+decision\s+41\b/, `the 7b3b59ed bullet names operator decision 41: ${JSON.stringify(f7b3)}`);
|
||||
|
||||
const known = knownIssues(body);
|
||||
for (const id of ['2d624b54', 'c06d5385', '6ff82e75', '4b6460e5', '4e1607cb', '4f22b101']) {
|
||||
const b = bullet(known, new RegExp(id), `Known-issues bullet ${id}`);
|
||||
assert.match(b, /\boperator\s+decision\s+42\b/, `the ${id} Known-issues bullet names operator decision 42: ${JSON.stringify(b)}`);
|
||||
}
|
||||
const dev = bullet(known, /4dce7c74/, 'Known-issues bullet 4dce7c74');
|
||||
assert.match(dev, /\boperator\s+decision\s+38\b/, `the 4dce7c74 Known-issues bullet names operator decision 38: ${JSON.stringify(dev)}`);
|
||||
const c06 = bullet(known, /c06d5385/, 'Known-issues bullet c06d5385');
|
||||
assert.ok(c06.includes('e031a480'), `the c06d5385 bullet names e031a480: ${JSON.stringify(c06)}`);
|
||||
assert.ok(c06.includes('original_severity'), `the c06d5385 bullet names original_severity: ${JSON.stringify(c06)}`);
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue