Ignore scoped HOT bridge quoting incidents
Some checks failed
deploy / deploy (push) Failing after 45s
Some checks failed
deploy / deploy (push) Failing after 45s
Proof: npm test; npm run operator-dashboard:build; live NEAR Intents status-page payload normalizes to operational for tracked BTC/Gnosis assets while 1Click still returns a EURe-to-nBTC dry quote. Assumptions: Generic partial quoting or bridge-maintenance wording is not enough to pause our BTC/Gnosis path unless the incident names a core Intents component, protocol-wide swap outage, or our tracked chains/assets. Still fake: Status-page relevance is still text/service scoped because the upstream status API does not expose a per-asset machine-readable impact matrix.
This commit is contained in:
parent
754a95c6d2
commit
5425152ed9
2 changed files with 52 additions and 1 deletions
|
|
@ -188,7 +188,7 @@ function buildDecisiveReason({
|
|||
}
|
||||
|
||||
const CORE_INTENTS_SERVICE_PATTERN = /\b(1click|solver|message bus)\b/i;
|
||||
const GLOBAL_INTENTS_DISRUPTION_PATTERN = /\b(1click|quoting|solver|message bus|protocol is paused|swaps are paused|all swaps)\b/i;
|
||||
const GLOBAL_INTENTS_DISRUPTION_PATTERN = /\b(1click|solver|message bus|protocol is paused|swaps are paused|all swaps|all quoting)\b/i;
|
||||
|
||||
function isRelevantIncident(incident, scope) {
|
||||
if (scope.unfiltered) return true;
|
||||
|
|
|
|||
|
|
@ -131,6 +131,57 @@ test('scoped NEAR Intents status ignores unrelated paused destination chains', (
|
|||
assert.match(normalized.decisive_reason, /BSC, TON, XML/);
|
||||
});
|
||||
|
||||
test('scoped NEAR Intents status ignores HOT-chain quoting and partial bridge maintenance incidents', () => {
|
||||
const normalized = normalizeNearIntentsStatus({
|
||||
observedAt: '2026-05-11T18:58:30.605Z',
|
||||
servicesResponse,
|
||||
postEnumsResponse,
|
||||
trackedAssets,
|
||||
postsResponse: {
|
||||
posts: [
|
||||
{
|
||||
id: 'PIX3ZX5',
|
||||
title: 'Quoting is temporarily paused for the HOT bridge chains',
|
||||
post_type: 'incident',
|
||||
latest_update: {
|
||||
status_id: 'PSCS3IV',
|
||||
severity_id: 'P187122',
|
||||
reported_at: 1778510700000,
|
||||
impacts: [{ service_id: 'PNEJBRE', severity_id: 'PCIGMKW' }],
|
||||
message: '<p>This is the list of chains we rely on the Hot Bridge: BSC, MONAD, XLAYER, PLASMA, POL, TON, OP, AVAX, STELLAR, ADI</p>',
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'PJ0GZ74',
|
||||
title: 'Bridge maintenance',
|
||||
post_type: 'maintenance',
|
||||
latest_update: {
|
||||
status_id: 'PSCS3IV',
|
||||
severity_id: 'P187122',
|
||||
reported_at: 1778497153000,
|
||||
impacts: [{ service_id: 'PXQFSY1', severity_id: 'PCIGMKW' }],
|
||||
message: '<p>We will perform a bridge maintenance, some of the quoting will be temporarily disabled.</p>',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
|
||||
assert.equal(normalized.status, 'operational');
|
||||
assert.equal(normalized.label, 'operational');
|
||||
assert.equal(normalized.current_incident_count, 0);
|
||||
assert.equal(normalized.observed_incident_count, 2);
|
||||
assert.equal(normalized.unrelated_incident_count, 2);
|
||||
assert.equal(normalized.quoting_stopped, false);
|
||||
assert.deepEqual(normalized.affected_services, []);
|
||||
assert.deepEqual(
|
||||
normalized.observed_affected_services,
|
||||
['Other Blockchains', 'Cross-Chain Bridging'],
|
||||
);
|
||||
assert.match(normalized.decisive_reason, /none match this deployment scope/);
|
||||
assert.match(normalized.decisive_reason, /HOT bridge chains/);
|
||||
});
|
||||
|
||||
|
||||
test('NEAR Intents status fingerprint is stable across polls and changes on official updates', () => {
|
||||
const first = normalizeNearIntentsStatus({
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue