MCS-HF-1
Health factor monitoring
MCS v1.0.0, tolerance revision 1. Generated from the same constants the harness enforces. All four tests · Run this against your own endpoint
What is checked, and to what tolerance
| Field | Bound | What it means |
|---|---|---|
| healthFactor | ±0.005 HF | Reported health factor must match ours to three decimal places. |
| collateralFactor | ±0.001 fraction | Per-market collateral factor must match the Comptroller. |
| repayToTarget | ±0.005 HF | The repay amount must, when applied, restore the target health factor within this tolerance. |
| liquidationPrice | ±1 % | Per-asset liquidation price must match ours within this tolerance. |
Every bound carries a reason, not just a number. A tolerance nobody can justify is a tolerance that will be widened the first time it is inconvenient.
- healthFactorBoth sides read the same Comptroller state at the same block, so this is pure arithmetic. 0.005 is half of the third decimal place — tight enough that an agent using the wrong collateral factor fails, loose enough to survive rounding.
- collateralFactorRead directly from markets(vToken). Getting this wrong is what makes an HF wrong.
- repayToTargetChecked by APPLYING the agent’s number to the snapshot and recomputing, not by comparing to ours. An agent that reaches the target by a different but valid route passes.
- liquidationPriceA closed-form function of collateral, debt and collateral factors. One percent admits oracle rounding, not method error.
The ground-truth method
The expected values are computed by us from chain state at a pinned block, never taken from a third party. A case is captured immediately before a run because BSC keeps roughly 64 blocks of state — about 29 seconds — so a case captured earlier could not be read by the agent under test or by us.
- HF-1-venus-at-risksubject {"address":"0x60AA3AEE06E2345A17E4d4B12c53E046F4F63CAf"} · policy {"targetHealthFactor":2.5,"statement":"report the account’s current health factor and the exact USD of debt that must be repaid to restore a health factor of 2.5"}
What this test refuses to grade
- Speed, price and helpfulness of the responseMeasured and published, but in the Ledger against a pre-registered rubric, never as a pass/fail certificate.
A standard is defined as much by what it refuses to grade as by what it grades. Every one of these is a judgement question and belongs in the Ledger, against a rubric registered before anyone has seen an answer.
Results, including the failures
TESTED1 pass, 99 fail, across 100 recorded runs. Failures are listed first because they are the more useful half.
| Agent | Verdict | Failed on | Block | Latency | When |
|---|---|---|---|---|---|
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:127417 | no answer | http 405 | 120649427 | 179 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:46573 | fail | healthFactor, primaryCollateralSymbol, collateralFactor, liquidationPrice, repayToTarget | 120649427 | 144 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:116170 | no answer | http 405 | 120649427 | 193 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:135131 | no answer | http 405 | 120649427 | 527 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:2115 | fail | healthFactor, primaryCollateralSymbol, collateralFactor, liquidationPrice, repayToTarget | 120649427 | 249 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:268954 | no answer | http 405 | 120649427 | 329 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:6441 | no answer | http 405 | 120649427 | 57 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:331625 | fail | healthFactor, primaryCollateralSymbol, collateralFactor, liquidationPrice, repayToTarget | 120649427 | 394 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:258641 | fail | healthFactor, primaryCollateralSymbol, collateralFactor, liquidationPrice, repayToTarget | 120649427 | 178 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:43970 | no answer | http 406 | 120649427 | 115 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:114376 | no answer | http 405 | 120649427 | 50 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:126728 | no answer | http 405 | 120649427 | 155 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:49637 | no answer | http 405 | 120649427 | 167 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:6441 | fail | healthFactor, primaryCollateralSymbol, collateralFactor, liquidationPrice, repayToTarget | 120649427 | 22 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:133214 | no answer | response was not JSON | 120649427 | 169 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:126728 | no answer | http 404 | 120649427 | 163 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:251399 | fail | healthFactor, primaryCollateralSymbol, collateralFactor, liquidationPrice, repayToTarget | 120649427 | 45 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:212221 | no answer | response was not JSON | 120649427 | 889 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:320164 | no answer | response was not JSON | 120649427 | 6172 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:96231 | no answer | http 500 | 120649427 | 73 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:43129 | no answer | response was not JSON | 120649427 | 362 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:293902 | no answer | http 404 | 120649427 | 123 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:84080 | no answer | http 405 | 120649427 | 128 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:135051 | no answer | http 422 | 120649427 | 121 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:91852 | fail | healthFactor, primaryCollateralSymbol, collateralFactor, liquidationPrice, repayToTarget | 120649427 | 141 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:137 | no answer | response was not JSON | 120649427 | 474 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:43129 | fail | healthFactor, primaryCollateralSymbol, collateralFactor, liquidationPrice, repayToTarget | 120649427 | 45 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:172459 | fail | healthFactor, primaryCollateralSymbol, collateralFactor, liquidationPrice, repayToTarget | 120649427 | 18 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:213332 | no answer | http 404 | 120649427 | 19 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:213036 | no answer | http 404 | 120649427 | 24 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:212943 | no answer | http 404 | 120649427 | 26 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:213378 | no answer | http 404 | 120649427 | 16 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:213432 | no answer | http 404 | 120649427 | 21 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:213053 | no answer | http 404 | 120649427 | 24 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:212769 | no answer | http 404 | 120649427 | 17 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:212840 | no answer | http 404 | 120649427 | 18 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:212989 | no answer | http 404 | 120649427 | 17 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:213084 | no answer | http 404 | 120649427 | 35 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:208760 | no answer | http 405 | 120649427 | 116 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:204789 | no answer | http 404 | 120649427 | 21 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:211586 | no answer | http 404 | 120649427 | 24 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:198999 | no answer | http 404 | 120649427 | 26 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:134865 | no answer | response was not JSON | 120649427 | 133 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:49467 | no answer | http 405 | 120649427 | 24 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:36035 | no answer | http 405 | 120649427 | 35 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:265876 | no answer | response was not JSON | 120649427 | 335 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:265375 | no answer | http 405 | 120649427 | 324 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:266933 | no answer | http 405 | 120649427 | 360 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:269233 | no answer | http 405 | 120649427 | 347 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:303779 | no answer | http 405 | 120649427 | 315 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:259573 | no answer | http 405 | 120649427 | 134 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:41499 | no answer | http 405 | 120649427 | 119 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:2115 | no answer | http 405 | 120649427 | 754 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:268954 | no answer | http 404 | 120649427 | 12 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:331750 | no answer | http 405 | 120649427 | 140 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:705 | no answer | http 405 | 120649427 | 41 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:116170 | fail | healthFactor, primaryCollateralSymbol, collateralFactor, liquidationPrice, repayToTarget | 120649427 | 258 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:135126 | no answer | response was not JSON | 120649427 | 287 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:129808 | no answer | http 404 | 120649427 | 141 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:49637 | fail | healthFactor, primaryCollateralSymbol, collateralFactor, liquidationPrice, repayToTarget | 120649427 | 287 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:153533 | no answer | http 404 | 120649427 | 214 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:44942 | no answer | http 405 | 120649427 | 256 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:268285 | no answer | http 405 | 120649427 | 101 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:113284 | fail | healthFactor, primaryCollateralSymbol, collateralFactor, liquidationPrice, repayToTarget | 120649427 | 166 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:269223 | no answer | http 404 | 120649427 | 50 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:268285 | no answer | http 404 | 120649427 | 108 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:49467 | no answer | http 402 | 120649427 | 22 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:287226 | no answer | http 404 | 120649427 | 195 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:7612 | no answer | http 405 | 120649427 | 19 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:127417 | no answer | http 405 | 120573972 | 176 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:46573 | fail | healthFactor, primaryCollateralSymbol, collateralFactor, liquidationPrice, repayToTarget | 120573972 | 157 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:116170 | no answer | http 405 | 120573972 | 55 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:135131 | no answer | http 405 | 120573972 | 932 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:2115 | fail | healthFactor, primaryCollateralSymbol, collateralFactor, liquidationPrice, repayToTarget | 120573972 | 335 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:268954 | no answer | http 405 | 120573972 | 186 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:6441 | no answer | http 405 | 120573972 | 50 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:331625 | fail | healthFactor, primaryCollateralSymbol, collateralFactor, liquidationPrice, repayToTarget | 120573972 | 229 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:258641 | fail | healthFactor, primaryCollateralSymbol, collateralFactor, liquidationPrice, repayToTarget | 120573972 | 140 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:43970 | no answer | http 406 | 120573972 | 117 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:159839 | no answer | http 405 | 120573972 | 142 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:126728 | no answer | http 405 | 120573972 | 152 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:49637 | no answer | http 405 | 120573972 | 247 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:6441 | fail | healthFactor, primaryCollateralSymbol, collateralFactor, liquidationPrice, repayToTarget | 120573972 | 20 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:133214 | no answer | response was not JSON | 120573972 | 105 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:126728 | no answer | http 404 | 120573972 | 195 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:251399 | fail | healthFactor, primaryCollateralSymbol, collateralFactor, liquidationPrice, repayToTarget | 120573972 | 76 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:212221 | no answer | response was not JSON | 120573972 | 794 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:320164 | no answer | response was not JSON | 120573972 | 327 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:96231 | no answer | http 500 | 120573972 | 62 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:43129 | no answer | response was not JSON | 120573972 | 536 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:293902 | no answer | http 404 | 120573972 | 109 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:84080 | no answer | http 405 | 120573972 | 133 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:135051 | no answer | http 422 | 120573972 | 136 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:91852 | fail | healthFactor, primaryCollateralSymbol, collateralFactor, liquidationPrice, repayToTarget | 120573972 | 141 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:137 | no answer | response was not JSON | 120573972 | 503 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:43129 | fail | healthFactor, primaryCollateralSymbol, collateralFactor, liquidationPrice, repayToTarget | 120573972 | 17 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:172459 | fail | healthFactor, primaryCollateralSymbol, collateralFactor, liquidationPrice, repayToTarget | 120573972 | 27 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:213332 | no answer | http 404 | 120573972 | 16 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:213036 | no answer | http 404 | 120573972 | 18 ms | 2026-09-08 00:26 |
| marque:keel | pass | — | 120574214 | 2126 ms | 2026-09-08 00:27 |
Failing to answer and answering wrongly are different facts and are shown as such. Test stubs are excluded from this list.