reliability injector: the catch-up step's flag no longer shadows the process list

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 2efe419521)
This commit is contained in:
igneum-labs 2026-10-07 11:32:15 +00:00
parent 164dc99413
commit 1506f6c003

View file

@ -129,12 +129,12 @@ S['catch-up'] = async () => {
const synced = await until((st) => st.node.synced, 120000, 'node synced');
const tSynced = Date.now();
// 120 s: no worker starts, the card waits on the executed tip, the node is not restarted
let started = false, nodeRestarts = 0, waitedForTip = false;
let workerStarted = false, nodeRestarts = 0, waitedForTip = false;
const end = Date.now() + 120000;
while (Date.now() < end) {
const st = await poll(); if (!st) break;
const c = card(st);
if (c.pid > 0 || c.state === 'mining' || c.state === 'starting') started = true;
if (c.pid > 0 || c.state === 'mining' || c.state === 'starting') workerStarted = true;
if (/execute the tip/.test(c.message || '')) waitedForTip = true;
nodeRestarts = Math.max(nodeRestarts, (st.node.starts || 1) - 1);
await sleep(1000);
@ -151,7 +151,7 @@ S['catch-up'] = async () => {
const gatedCalls = engineLogLines(/holds no record yet/);
verdict('catch-up', [
{ ok: !!synced, what: 'the private node read synced' },
{ ok: !started, what: 'no worker started while the execution layer held no record (120 s)' },
{ ok: !workerStarted, what: 'no worker started while the execution layer held no record (120 s)' },
{ ok: waitedForTip, what: 'the card said it waits for the executed tip' },
{ ok: nodeRestarts === 0, what: `the node watchdog did not restart the node during the catch-up (restarts ${nodeRestarts})` },
{ ok: readyLines.length >= 1, what: 'the engine logged the executed tip when it appeared' },