diff --git a/client/electron/test/run-all.mjs b/client/electron/test/run-all.mjs index 401f68d..27a4704 100644 --- a/client/electron/test/run-all.mjs +++ b/client/electron/test/run-all.mjs @@ -538,6 +538,13 @@ for (const [, , probe] of STATIC_ONLY) { if (probeResults[probe] === undefined) probeResults[probe] = PROBES[probe].run(); } +/* + * pi 2026-09-15:这块原先在报文末尾 `process.exit(1)`,而**它在汇总之前** ⇒ + * 只要到期闸红了,`RESULT` 行、欠账余额、条数不符、以及**所有其它红**都不会打出来。 + * 实测:`harmony-presets` 实报 6 / 登记 5 这条真红一次都没显示过。 + * 形状:**一道闸把不属于它的证据一起吃掉**。修法不是"少红",是**记账 + 继续走完汇总**。 + */ +let dueFailed = false; const dueStatic = STATIC_ONLY.filter(([, , probe]) => probeIsDue(probeResults[probe])); const unknownProbes = Object.entries(probeResults).filter(([, v]) => v === 'unknown').map(([k]) => k); if (dueStatic.length > 0) { @@ -566,7 +573,7 @@ if (dueStatic.length > 0) { console.error(' 这些都在工作区外(需要人放行或提权)—— 所以这条红**不要求你现在修**,' + '要求的是:别把它当噪音,并在打通后回来把静态那条升级掉。'); } - process.exit(1); + dueFailed = true; } /* * 汇总里"欠账余额"和"探针是否健康"是两个不同的数字(pi §2): @@ -670,7 +677,7 @@ console.log(`\n========== 判据汇总 ==========`); const totalsLine = (verdict) => `RESULT files=${SUITE.length} ran=${ranFilesCount} ` + `checks=${totalTests} pass=${totalTests - totalFail} fail=${totalFail} ` + `broken=${brokens.length} unreported=${unreportedFiles} verdict=${verdict}`; -if (reds.length === 0 && brokens.length === 0) { +if (reds.length === 0 && brokens.length === 0 && !dueFailed) { // 报**本相位实际跑了**几条,不报清单长度 —— 上面刚写完"不能声称自己做过的事", // 这里如果打 SUITE.length 就是在同一行里犯同一个错(2 条构建相位判据被跳过了)。 const ranFiles = SUITE.map(([f]) => f).filter(f => !skippedByPhase.includes(f)); @@ -689,5 +696,8 @@ if (reds.length) { console.error(`红的判据(${reds.length}/${SUITE.length}):`); for (const r of reds) console.error(` - ${r}`); } +if (dueFailed && reds.length === 0 && brokens.length === 0) { + console.error('另外:静态判据**到期**(报文见上)—— 它现在**不再吃掉**上面的汇总与其它红。'); +} console.log(totalsLine('red')); process.exit(1);