COALTESTING THE ROOFROADWAY SECTION · SEVEN PROPS ON FOUR FOOT CENTRES · LAMP CARRIED IN FROM THE WESTCREEP · THE ROOF HAS COME DOWN 4 INBEDDING PLANESOLE PLATE4 FT 0 INPULL THE PROP · THE ROOF MUST COME DOWNIF NOTHING FALLS IT WAS HOLDING NOTHING
Pull the propA support you can pull with nothing happening was holding nothing up

Red gates

A green test is not evidence that a guard exists.


For each guard on the roster, the guard was removed from the source, the test that claims to catch it was run, and the run was required to fail.

Status

Nothing is deployed. No address exists on any chain.

There is no factory address, no vault address and no mine address, on mainnet or on any testnet. No transaction has been broadcast. What exists is source, a test suite, the measurements on these pages — and a deploy script that has not been run.

01  /  Red-gate evidence

A green test is not evidence that a guard exists.


For each of the 26 guards in the recorded run, the guard was removed from the source, the test that claims to catch it was run, and the run was required to fail. The source was then restored and the tree checked clean. The tool, the exact edits and the last run are kept in the repository, so the claim is reproducible rather than reported.

The first pass found three tests that stayed green with their guard deleted. All three were real defects in the tests, and all three were fixed — the list is on the right, because a red-gate pass that found nothing would be the less interesting result.

The three that stayed green, and what was wrong with them

  • The 256-block window test could not tell which of two guards had rejected, because both carried the same revert string. The strings are now distinct.
  • The reentrancy test asserted only that it reverted — which the checks-effects flag produces on its own, and which the pay helper rewrites into one message anyway. The reentering contract now catches the inner call and the test asserts the inner reason.
  • The project-snapshot test settled a period nobody had mined, so it exercised the empty-period branch and never executed the line it claimed to protect. It now cuts a block first.

Source: README.md, RULES.md. The run’s totals are Figs. 09 and 11; they are not repeated here.

Fig. 09 — 86 tests across nine suites24 of them on a fork
ALL 86 TESTS — 0 FAILED, 0 SKIPPED62 LOCAL24 ON A BSC MAINNET FORKAND HOW THOSE 86 DIVIDE ACROSS NINE SUITES — EVERY WIDTH IS A TEST COUNTCoalVault.mainnet.t.sol22BSC MAINNET FORKCoalFactory.t.sol14LOCALCoalVault.t.sol14LOCALCoalMine.t.sol12LOCALBeacon.t.sol7LOCALPeriodDos.t.sol7LOCALCoalVault.security.t.sol4LOCALSolvency.t.sol4LOCALCommission.mainnet.t.sol2BSC MAINNET FORKPLUS 3 STATEFUL INVARIANTS AT 256 RUNS AND 8,192 CALLS EACH, INSIDE SOLVENCY.T.SOLALL 86 TESTS — 0 FAILED, 0 SKIPPED62 LOCAL24 FORKNINE SUITES, WIDTHS ARE TEST COUNTSCoalVault.mainnet.t.sol22 · FORKCoalFactory.t.sol14CoalVault.t.sol14CoalMine.t.sol12Beacon.t.sol7PeriodDos.t.sol7CoalVault.security.t.sol4Solvency.t.sol4Commission.mainnet.t.sol2 · FORKPLUS 3 STATEFUL INVARIANTS, 256 RUNS EACH

Counts are the per-suite rows of RULES.md, which submission/suites.py checks against forge test --list on every run — a row that drifts from the build fails the check rather than quietly misreporting. The two fork suites are the ones whose names say so.

What each suite covers
SuiteWhat it covers
CoalVault.mainnet.t.solreal fork: portal, launch, buy, dispatch, gas, schema, Guardian, settle, claim
CoalFactory.t.solportal boundary, malformed input, launch bounds, Flap schema surface
CoalVault.t.solsplits, period isolation, pull paths, reentrancy, solvency
CoalMine.t.solthe mechanism, every gate proven red
Beacon.t.solguardian-table agreement and upgrade authority
PeriodDos.t.solempty history, cursor frontier, immutable cadence
CoalVault.security.t.solforced balance, redirects, referral release
Solvency.t.solstateful invariants over tax, work, settle, claim, withdraw and forced BNB
Commission.mainnet.t.solwhere the commission goes, measured on chain

Source: RULES.md — Suites. The test counts are Fig. 09; this table is the coverage column of the same rows, so neither repeats the other.

Fig. 10 — the red-gate roster26 of 26 red in the recorded run
src/CoalMine.sol9 guards
REDdifficulty is monotonetest_RED_difficulty_never_rises
REDmsg.sender is inside the hashtest_RED_stolen_nonce_does_not_work_for_the_thief
REDone block per miner per windowtest_RED_second_block_in_the_same_window_reverts
REDthe 256-block submission windowtest_RED_window_expires_after_answer_blocks
REDseeds must sit on the gridtest_RED_off_grid_seed_reverts
REDcredit follows the seed, not the submissiontest_RED_held_solution_cannot_choose_a_richer_epoch
REDmining requires employmenttest_RED_unemployed_cannot_mine
REDdeposit refund waits out the noticetest_RED_deposit_refund_is_unconditional
REDinitialize cannot be replayedtest_RED_initialize_cannot_be_replayed
src/CoalVault.sol10 guards
REDsettlement waits for finalitytest_RED_cannot_settle_before_the_submission_window_closes
REDone settlement per epochtest_RED_double_settle_reverts
REDone claim per miner per epochtest_RED_double_claim_reverts
REDreentrancy guard on claimtest_RED_reentrant_claim_reverts
REDsetProject is Guardian-onlytest_RED_setProject_is_guardian_only
REDthe funding-time project snapshottest_RED_project_change_cannot_redirect_a_funded_epoch
REDschema lists every user-facing methodtest_schema_lists_every_user_facing_method
REDschema write flags are correcttest_schema_write_flags_are_correct
REDdescription moves with statetest_description_moves_with_state
REDreceive() gas ceiling has teethtest_receive_gas_under_a_real_taxprocessor_dispatch
src/CoalVaultFactory.sol3 guards
REDnewVault is portal-onlytest_RED_newVault_is_portal_only
REDvaultData length and address paddingtest_RED_malformed_vault_data_reverts
REDlaunch bounds on period/notice/deposit/difficultytest_RED_every_launch_bound_rejects_out_of_range
src/CoalBeacon.sol3 guards
REDbeacon ownership leaves the deployertest_RED_beacon_owner_is_the_guardian_not_the_deployer
REDunsupported chain fails closedtest_RED_unsupported_chain_reverts
REDa Guardian upgrade can reach money no function cantest_a_guardian_upgrade_can_rescue_a_vault_that_has_no_rescue_function
test/CoalVault.mainnet.t.sol1 guard
REDflap's fee is pinned, not merely boundedtest_the_vault_keeps_what_flaps_fee_leaves_behind

Each guard was deleted from the source, the test that claims to catch it was run, and the run was required to fail; the file was then restored and the tree checked clean. redgate/last-run.txt records 26 of 26 going red.

Fig. 11 — receive() gastwo scales
FULL SCALE — 0 TO FLAP’S 1,000,000 CEILING108,115measured, in a real dispatch120,000asserted in the test130,227proven red at, +1 sstore1,000,000Flap’s ceilingMAGNIFIED — 100,000 TO 135,000, WHERE THE HEADROOM ACTUALLY IS108,115measured, in a real dispatch120,000asserted in the test130,227proven red at, +1 sstore11,885 GAS OF HEADROOM — LESS THAN ONE COLD SSTORETHE MEASUREMENT IS A BAND, 108,115 TO 108,122: THE FORK IS NOT PINNED, SO THE CHAIN HEAD MOVES BETWEEN RUNS.FULL SCALE — 0 TO 1,000,000108,115 — measured, in a real dispatch120,000 — asserted in the test130,227 — proven red at, +1 sstore1,000,000 — Flap’s ceilingMAGNIFIED — 100,000 TO 135,000108,115 — measured, in a real dispatch120,000 — asserted in the test130,227 — proven red at, +1 sstoreHEADROOM 11,885 GAS BETWEEN THEMEASUREMENT AND THE ASSERTION —LESS THAN ONE COLD SSTOREA BAND, 108,115 TO 108,122:THE FORK IS NOT PINNED.

Measured inside a real TaxProcessor.dispatch() on a BSC mainnet fork by a differential whose control leg reads exactly zero. The reproducible fact is the assertion, not the point: adding one sstore to receive() pushed it to 130,227 and the test went red, which is what the third bar is.