docs(sdlc): content-sized columns in Word, trace record with test cases, PSRs presented at minuted meetings
This commit is contained in:
@@ -90,7 +90,9 @@ export function hindsightErrors(docs, root) {
|
||||
const where = `Minutes Of Meeting ${m.date}`;
|
||||
const latest = lagged(m.date);
|
||||
if (weekend(m.date)) errors.push(`${where}: held on a weekend`);
|
||||
if (m.next && !(m.next.date > m.date && !weekend(m.next.date))) errors.push(`${where}: next meeting ${m.next.date} is not a later working day`);
|
||||
// The next meeting named in minutes is the next meeting that has minutes.
|
||||
const following = MEETINGS.find((x) => x.date > m.date)?.date ?? null;
|
||||
if ((m.next?.date ?? null) !== following) errors.push(`${where}: next meeting ${m.next?.date ?? 'none'} should be ${following ?? 'none'}`);
|
||||
const text = JSON.stringify(m);
|
||||
const hashes = new Set([...text.matchAll(/(?<![\w/.-])([0-9a-f]{7,40})(?![\w/.-])/g)].map((x) => x[1]));
|
||||
const range = taskById(m.taskId)[9].match(/\bGit (\w+)(?:–(\w+))?/);
|
||||
@@ -103,9 +105,20 @@ export function hindsightErrors(docs, root) {
|
||||
if (corrected.get(id) > latest) errors.push(`${where}: confirms ${id} corrected ${corrected.get(id)}, less than ${MEETING_LAG} days before`);
|
||||
}
|
||||
}
|
||||
for (const [date, , , no, , , , next] of PERIODS) {
|
||||
if (weekend(date)) errors.push(`Progress Status Record ${no} (${date}): dated on a weekend`);
|
||||
if (next && !(next.date > date && !weekend(next.date))) errors.push(`Progress Status Record ${no} (${date}): next meeting ${next.date} is not a later working day`);
|
||||
}
|
||||
// Every Progress Status Record is presented at a meeting that has minutes: the one
|
||||
// its "Next Meeting" names, held MEETING_LAG days or more after the period's last commit.
|
||||
// Only the closing record has no next meeting; the closing meeting presents it.
|
||||
const meetingDates = new Set(MEETINGS.map((m) => m.date));
|
||||
PERIODS.forEach(([date, from, to, no, , , , next], i) => {
|
||||
const where = `Progress Status Record ${no} (${date})`;
|
||||
if (weekend(date)) errors.push(`${where}: dated on a weekend`);
|
||||
if (!next) {
|
||||
if (i !== PERIODS.length - 1) errors.push(`${where}: names no next meeting`);
|
||||
return;
|
||||
}
|
||||
if (!(next.date > date && meetingDates.has(next.date))) errors.push(`${where}: next meeting ${next.date} has no minutes`);
|
||||
const last = hasGit ? git(root, ['log', 'main', '-1', '--format=%ad', '--date=short', `--since=${from} 00:00`, `--until=${to} 23:59:59`]) : null;
|
||||
if (last && last > lagged(next.date)) errors.push(`${where}: next meeting ${next.date} is less than ${MEETING_LAG} days after commit on ${last}`);
|
||||
});
|
||||
return [...new Set(errors)];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user