diff --git a/scripts/seed-energy-disruptions.mjs b/scripts/seed-energy-disruptions.mjs index daf7157b1..322c9f740 100644 --- a/scripts/seed-energy-disruptions.mjs +++ b/scripts/seed-energy-disruptions.mjs @@ -25,6 +25,9 @@ if (isMain) { declareRecords, schemaVersion: 1, maxStaleMin: MAX_STALE_MIN, + // See seed-pipelines-gas.mjs for rationale — strict validation failure + // must leave seed-meta stale so the bundle retries every tick. + emptyDataIsFailure: true, }).catch((err) => { const cause = err.cause ? ` (cause: ${err.cause.message || err.cause.code || err.cause})` : ''; console.error('FATAL:', (err.message || err) + cause); diff --git a/scripts/seed-fuel-shortages.mjs b/scripts/seed-fuel-shortages.mjs index 421733768..d0d0760c8 100644 --- a/scripts/seed-fuel-shortages.mjs +++ b/scripts/seed-fuel-shortages.mjs @@ -28,6 +28,9 @@ if (isMain) { declareRecords, schemaVersion: 1, maxStaleMin: MAX_STALE_MIN, + // See seed-pipelines-gas.mjs for rationale — strict validation failure + // must leave seed-meta stale so the bundle retries every tick. + emptyDataIsFailure: true, }).catch((err) => { const cause = err.cause ? ` (cause: ${err.cause.message || err.cause.code || err.cause})` : ''; console.error('FATAL:', (err.message || err) + cause); diff --git a/scripts/seed-pipelines-gas.mjs b/scripts/seed-pipelines-gas.mjs index f2fb0d2bb..04f0867e9 100644 --- a/scripts/seed-pipelines-gas.mjs +++ b/scripts/seed-pipelines-gas.mjs @@ -31,6 +31,12 @@ if (isMain) { declareRecords, schemaVersion: 1, maxStaleMin: MAX_STALE_MIN, + // File-read-and-validate seeder: if the container can't load/validate the + // registry (stale image, missing data file, shape regression), fail LOUDLY + // rather than refreshing seed-meta with recordCount=0. Without this, the + // bundle's interval gate silently locks the seeder out for ~7 days after + // a single transient validation failure. + emptyDataIsFailure: true, }).catch((err) => { const cause = err.cause ? ` (cause: ${err.cause.message || err.cause.code || err.cause})` : ''; console.error('FATAL:', (err.message || err) + cause); diff --git a/scripts/seed-pipelines-oil.mjs b/scripts/seed-pipelines-oil.mjs index 2fd5bfbfd..176245b65 100644 --- a/scripts/seed-pipelines-oil.mjs +++ b/scripts/seed-pipelines-oil.mjs @@ -30,6 +30,9 @@ if (isMain) { declareRecords, schemaVersion: 1, maxStaleMin: MAX_STALE_MIN, + // See seed-pipelines-gas.mjs for rationale — strict validation failure + // must leave seed-meta stale so the bundle retries every tick. + emptyDataIsFailure: true, }).catch((err) => { const cause = err.cause ? ` (cause: ${err.cause.message || err.cause.code || err.cause})` : ''; console.error('FATAL:', (err.message || err) + cause); diff --git a/scripts/seed-storage-facilities.mjs b/scripts/seed-storage-facilities.mjs index 0d7679035..f7e671e23 100644 --- a/scripts/seed-storage-facilities.mjs +++ b/scripts/seed-storage-facilities.mjs @@ -29,6 +29,12 @@ if (isMain) { declareRecords, schemaVersion: 1, maxStaleMin: MAX_STALE_MIN, + // File-read-and-validate seeder: if the container can't load/validate the + // registry (stale image, missing data file, shape regression), fail LOUDLY + // rather than refreshing seed-meta with recordCount=0. Without this, the + // bundle gate silently locks the seeder out for ~5.5 days after a single + // validation hiccup. See seed-pipelines-gas.mjs for the canonical incident. + emptyDataIsFailure: true, }).catch((err) => { const cause = err.cause ? ` (cause: ${err.cause.message || err.cause.code || err.cause})` : ''; console.error('FATAL:', (err.message || err) + cause);