{
  "schemaVersion": 1,
  "article": {
    "wpId": 6042,
    "permalink": "/archives/6042",
    "sourceIssue": 184
  },
  "checkedAt": "2026-08-31",
  "localFixture": {
    "externalRpc": false,
    "mainnetFork": false,
    "realWallet": false,
    "privateKey": false,
    "transactionBroadcast": false,
    "realAsset": false,
    "environment": {
      "foundry": "1.8.0",
      "foundryCommit": "61ae26af36320d4fa1020f7db53785885e29eeb5",
      "foundryArchiveSha256": "0599b28a19af97c3ae91fab12ad868a1922db7770c4adff6b6d26235862153d0",
      "solidity": "0.8.36",
      "evmVersion": "cancun",
      "fuzzRuns": 256,
      "seed": "0x6042604260426042604260426042604260426042604260426042604260426042"
    },
    "tests": {
      "status": "pass",
      "unitTestCount": 18,
      "unitTests": [
        "testMetadataBindsAddressDescriptionDecimalsAndRound",
        "testFreshEightDecimalPrimaryNormalizesToEighteenDecimals",
        "testStaleRoundIsRejected",
        "testZeroAnswerIsRejected",
        "testNegativeAnswerIsRejected",
        "testWrongDecimalsAreRejectedBeforeScaling",
        "testDescriptionMismatchIsRejected",
        "testIncompleteRoundIsRejected",
        "testOutlierIsRejectedByConfiguredRange",
        "testSequencerDownIsRejected",
        "testSequencerRecoveryInsideGracePeriodIsRejected",
        "testSequencerRecoveryAfterGracePeriodIsAccepted",
        "testFreshFallbackIsUsedWhenPrimaryIsStale",
        "testFallbackCannotBypassSequencerGate",
        "testCircuitBreakerRejectsDivergentValidSources",
        "testBothInvalidFeedsStopInsteadOfGuessing",
        "testSpotMovesImmediatelyButLongTwapDilutesShortManipulation",
        "testTwapWindowWithoutOldEnoughObservationReverts"
      ]
    },
    "feedPolicy": {
      "configuredDescription": "ETH / USD",
      "expectedDecimals": 8,
      "outputDecimals": 18,
      "maxStalenessSeconds": 3600,
      "minPriceE18": "1000000000000000000000",
      "maxPriceE18": "5000000000000000000000",
      "maxSourceDeviationBps": 500,
      "freshPrimaryAnswer": "250000000000",
      "freshPrimaryNormalizedE18": "2500000000000000000000",
      "freshFallbackNormalizedE18": "2510000000000000000000"
    },
    "sequencerPolicy": {
      "upAnswer": 0,
      "downAnswer": 1,
      "gracePeriodSeconds": 3600,
      "boundary": "timeSinceUp must be greater than gracePeriod",
      "fallbackBypassAllowed": false
    },
    "fallbackPolicy": {
      "primaryValid": "use primary after cross-source deviation check",
      "primaryInvalidFallbackValid": "use fallback and expose usedFallback=true",
      "bothInvalid": "revert BothFeedsInvalid",
      "bothValidButDivergent": "revert SourcesDiverge"
    },
    "ammObservation": {
      "initialSpotE18": "2000000000000000000000",
      "manipulatedSpotE18": "4000000000000000000000",
      "initialDurationSeconds": 900,
      "manipulatedDurationSeconds": 60,
      "shortWindowSeconds": 60,
      "shortWindowTwapE18": "4000000000000000000000",
      "longWindowSeconds": 960,
      "longWindowTwapE18": "2125000000000000000000",
      "insufficientWindow": "revert ObservationTooOld"
    },
    "failureBoundaries": [
      "feed call failed",
      "description mismatch",
      "wrong decimals",
      "zero or negative answer",
      "incomplete round",
      "missing or future updatedAt",
      "stale updatedAt",
      "scale overflow",
      "configured range outlier",
      "sequencer down",
      "sequencer recovery grace period",
      "both sources invalid",
      "valid sources diverge",
      "TWAP observation too old"
    ]
  },
  "publicReadOnlySnapshot": {
    "reusedFrom": "public/fixtures/ethereum-rpc-snapshot-6024.json",
    "checkedAt": "2026-08-30T18:46:35.912Z",
    "network": "Ethereum mainnet",
    "chainId": 1,
    "region": "JP",
    "accessPlan": "public unauthenticated; no account or API key",
    "feedAddress": "0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419",
    "configuredPair": "ETH / USD",
    "decimals": 8,
    "blockNumber": "25869830",
    "blockHash": "0x53d1375a96ad48b9a0f3e30152c0f01dc142fca8dce2f22ee95270a27b365294",
    "blockTimestamp": "1788113879",
    "roundId": "129127208515966894439",
    "answer": "250019228748",
    "startedAt": "1788110691",
    "updatedAt": "1788110771",
    "answeredInRound": "129127208515966894439",
    "normalizedPrice": "2500.19228748 USD per ETH",
    "crossCheckedBySecondEndpoint": true,
    "readOnly": true,
    "transactionBroadcast": false
  },
  "limits": [
    "The local fixture demonstrates failure policy and arithmetic; it is not production integration code or an audit.",
    "The AMM reserve update is a deterministic manipulation-equivalent observation, not a public Uniswap trade.",
    "Heartbeat and deviation values vary by feed, network and date; the consumer maxStaleness is an application policy.",
    "A fallback on the same L2 never bypasses the sequencer gate in this policy.",
    "The public snapshot is a fixed historical read and is not a current price or investment signal.",
    "No wallet, private key, signature, public transaction, liquidation or real asset is used."
  ]
}
