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 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) {
|
function isRelevantIncident(incident, scope) {
|
||||||
if (scope.unfiltered) return true;
|
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/);
|
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', () => {
|
test('NEAR Intents status fingerprint is stable across polls and changes on official updates', () => {
|
||||||
const first = normalizeNearIntentsStatus({
|
const first = normalizeNearIntentsStatus({
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue