Skip to content

BW-185: skip mock-only deploys on a production DeployAll run - #102

Closed
0xGumpy wants to merge 1 commit into
mainfrom
bw-185-dry-run-fixes
Closed

0xGumpy wants to merge 1 commit into
mainfrom
bw-185-dry-run-fixes

Conversation

@0xGumpy

@0xGumpy 0xGumpy commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

Changes

Found by the BW-185 deploy rehearsal on a 4663 fork: DeployAll cannot complete a production run. deployYieldStrategies() and deployNFTMetadataGenerator() deploy test mocks and revert when IS_TEST and IS_TESTNET are both false; the 999 deploy got past this by hand-commenting the calls. This gates both calls on the mock modes inside DeployAll.run() instead, leaving the standalone scripts' reverts intact. Production SubConsols launch without a yield strategy and the LoanManager with a zero metadata generator, matching the live 999 stack.

Testing

  • Full fork rehearsal of DeployAll on Robinhood mainnet (anvil fork at block 64296698) completes with this change: 260 transactions, role audit clean, positional arrays verified, all 12 Chainlink oracles reading live prices.
  • forge test: 497 passed, 0 failed.

Reviewers:

@SocksNFlops

🤖 Generated with Claude Code

deployYieldStrategies() and deployNFTMetadataGenerator() deploy test mocks
and revert when IS_TEST and IS_TESTNET are both false, so DeployAll could
not complete a mainnet run. Gate both calls on the mock modes instead:
production SubConsols launch without a yield strategy and the LoanManager
with a zero metadata generator, matching the live 999 stack.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
File % Lines % Statements % Branches % Funcs
script/BaseScript.s.sol 81.48% (22/27) 88.89% (24/27) 75.00% (6/8) 60.00% (3/5)
script/CollateralSetup.s.sol 57.45% (27/47) 78.18% (43/55) 50.00% (3/6) 0.00% (0/9)
script/DeployAll.s.sol 97.92% (94/96) 99.00% (99/100) 72.73% (8/11) 85.71% (6/7)
script/DeployConsol.s.sol 59.38% (19/32) 77.14% (27/35) N/A (0/0) 0.00% (0/6)
script/DeployForfeitedAssetsPool.s.sol 50.00% (10/20) 76.19% (16/21) N/A (0/0) 0.00% (0/5)
script/DeployGeneralManager.s.sol 69.81% (37/53) 90.32% (56/62) 50.00% (2/4) 0.00% (0/10)
script/DeployInterestOracle.s.sol 25.00% (3/12) 44.44% (4/9) N/A (0/0) 0.00% (0/4)
script/DeployLoanManager.s.sol 40.00% (6/15) 61.54% (8/13) N/A (0/0) 0.00% (0/4)
script/DeployMockStockTokens.s.sol 0.00% (0/16) 0.00% (0/21) 0.00% (0/2) 0.00% (0/2)
script/DeployNFTMetadataGenerator.s.sol 23.08% (3/13) 33.33% (3/9) 50.00% (1/2) 0.00% (0/4)
script/DeployOrderPool.s.sol 59.09% (13/22) 78.26% (18/23) 100.00% (1/1) 0.00% (0/4)
script/DeployOriginationScheduler.s.sol 66.67% (22/33) 84.85% (28/33) N/A (0/0) 0.00% (0/6)
script/DeployPriceOracles.s.sol 64.00% (32/50) 82.14% (46/56) 50.00% (4/8) 20.00% (2/10)
script/DeployQueues.s.sol 65.38% (34/52) 86.44% (51/59) N/A (0/0) 0.00% (0/10)
script/DeploySimpleOracle.s.sol 90.38% (47/52) 96.61% (57/59) 68.75% (11/16) 57.14% (4/7)
script/DeploySubConsols.s.sol 62.16% (23/37) 85.42% (41/48) 50.00% (1/2) 0.00% (0/7)
script/DeployUSDX.s.sol 57.14% (12/21) 78.26% (18/23) N/A (0/0) 0.00% (0/4)
script/LocalhostSetupPart1.s.sol 100.00% (24/24) 100.00% (27/27) N/A (0/0) 100.00% (2/2)
script/LocalhostSetupPart2.s.sol 100.00% (42/42) 100.00% (49/49) N/A (0/0) 100.00% (3/3)
script/LocalhostSetupPart3.s.sol 100.00% (18/18) 100.00% (21/21) N/A (0/0) 100.00% (2/2)
script/RemoveUsdh.s.sol 0.00% (0/13) 0.00% (0/15) 0.00% (0/10) 0.00% (0/1)
src/ChainlinkPriceOracle.sol 100.00% (23/23) 100.00% (24/24) 100.00% (4/4) 100.00% (3/3)
src/Consol.sol 87.50% (28/32) 87.88% (29/33) 0.00% (0/4) 100.00% (6/6)
src/ConversionQueue.sol 94.52% (69/73) 95.92% (94/98) 69.23% (9/13) 100.00% (7/7)
src/ForfeitedAssetsPool.sol 90.70% (39/43) 95.35% (41/43) 85.71% (6/7) 90.00% (9/10)
src/ForfeitedAssetsQueue.sol 94.74% (18/19) 95.45% (21/22) 66.67% (2/3) 100.00% (2/2)
src/GeneralManager.sol 94.50% (309/327) 94.75% (307/324) 73.33% (33/45) 95.71% (67/70)
src/HyperCorePriceOracle.sol 100.00% (36/36) 100.00% (44/44) 100.00% (8/8) 100.00% (4/4)
src/LenderQueue.sol 89.36% (42/47) 93.88% (46/49) 75.00% (6/8) 90.00% (9/10)
src/LoanManager.sol 98.36% (120/122) 98.18% (108/110) 86.67% (13/15) 100.00% (27/27)
src/MortgageNFT.sol 100.00% (22/22) 100.00% (17/17) 100.00% (2/2) 100.00% (7/7)
src/MortgageQueue.sol 98.44% (63/64) 97.01% (65/67) 100.00% (21/21) 100.00% (8/8)
src/MultiTokenVault.sol 92.42% (61/66) 92.86% (65/70) 54.55% (6/11) 100.00% (15/15)
src/OrderPool.sol 96.77% (60/62) 96.77% (60/62) 81.82% (9/11) 100.00% (11/11)
src/OriginationPool.sol 100.00% (59/59) 98.39% (61/62) 100.00% (12/12) 100.00% (10/10)
src/OriginationPoolScheduler.sol 94.57% (122/129) 94.96% (132/139) 81.82% (9/11) 90.32% (28/31)
src/PythInterestRateOracle.sol 77.27% (17/22) 78.26% (18/23) 50.00% (4/8) 100.00% (2/2)
src/PythPriceOracle.sol 80.95% (17/21) 80.00% (16/20) 25.00% (1/4) 100.00% (3/3)
src/QueueProcesssor.sol 100.00% (4/4) 100.00% (2/2) N/A (0/0) 100.00% (2/2)
src/RebasingERC20.sol 95.65% (22/23) 100.00% (22/22) 100.00% (5/5) 83.33% (5/6)
src/SimpleOracle.sol 100.00% (39/39) 100.00% (37/37) 100.00% (6/6) 100.00% (8/8)
src/SimpleOraclePriceOracle.sol 100.00% (21/21) 100.00% (22/22) 100.00% (3/3) 100.00% (3/3)
src/StaticInterestRateOracle.sol 100.00% (7/7) 100.00% (8/8) 100.00% (1/1) 100.00% (2/2)
src/SubConsol.sol 100.00% (41/41) 100.00% (37/37) 100.00% (6/6) 100.00% (9/9)
src/USDX.sol 97.87% (46/47) 100.00% (64/64) 100.00% (5/5) 88.89% (8/9)
src/UsdxQueue.sol 94.74% (18/19) 95.45% (21/22) 66.67% (2/3) 100.00% (2/2)
src/libraries/MortgageMath.sol 96.89% (156/161) 97.74% (173/177) 91.18% (31/34) 96.30% (26/27)
src/libraries/SharesMath.sol 93.33% (14/15) 90.91% (20/22) 83.33% (5/6) 100.00% (3/3)
src/types/OPoolConfigId.sol 100.00% (2/2) 100.00% (2/2) N/A (0/0) 100.00% (1/1)
test/BaseTest.t.sol 72.13% (132/183) 69.40% (127/183) 60.00% (3/5) 93.33% (14/15)
test/SimpleOraclePriceOracle.t.sol 100.00% (7/7) 100.00% (4/4) N/A (0/0) 100.00% (3/3)
test/integration/10_complexHistory.t.sol 99.60% (500/502) 100.00% (529/529) 100.00% (2/2) 33.33% (1/3)
test/integration/11_conversionRefinance.t.sol 98.37% (181/184) 99.47% (186/187) 100.00% (1/1) 33.33% (1/3)
test/integration/12_compoundingHalfConvert.t.sol 98.60% (141/143) 100.00% (149/149) N/A (0/0) 33.33% (1/3)
test/integration/13_convertedWithPenalties.t.sol 97.78% (132/135) 99.28% (138/139) 100.00% (1/1) 33.33% (1/3)
test/integration/14_compoundingNoPlanConversion.t.sol 98.71% (153/155) 100.00% (159/159) N/A (0/0) 33.33% (1/3)
test/integration/15_halfConverted.t.sol 98.47% (129/131) 100.00% (135/135) N/A (0/0) 33.33% (1/3)
test/integration/16_redeemAndDequeue.t.sol 98.13% (105/107) 100.00% (110/110) N/A (0/0) 33.33% (1/3)
test/integration/17_forecloseAndDequeue.t.sol 98.15% (106/108) 100.00% (111/111) N/A (0/0) 33.33% (1/3)
test/integration/18_expandLowerConvert.t.sol 99.06% (210/212) 100.00% (220/220) N/A (0/0) 50.00% (2/4)
test/integration/19_enqueueAfterCreation.t.sol 97.89% (93/95) 100.00% (96/96) N/A (0/0) 33.33% (1/3)
test/integration/1_foreclosure.t.sol 98.36% (120/122) 100.00% (123/123) N/A (0/0) 33.33% (1/3)
test/integration/20_completeConversion.t.sol 98.48% (130/132) 100.00% (136/136) N/A (0/0) 33.33% (1/3)
test/integration/21_noRedeemDequeue.t.sol 97.92% (94/96) 100.00% (99/99) N/A (0/0) 33.33% (1/3)
test/integration/22_ogPoolDonation.t.sol 95.00% (38/40) 100.00% (37/37) N/A (0/0) 33.33% (1/3)
test/integration/23_requestWithGasFees.t.sol 96.00% (48/50) 100.00% (49/49) N/A (0/0) 33.33% (1/3)
test/integration/24_conversionSmallAmount.t.sol 98.26% (113/115) 100.00% (124/124) N/A (0/0) 33.33% (1/3)
test/integration/25_usdxQueueCancel.t.sol 95.12% (39/41) 100.00% (42/42) N/A (0/0) 33.33% (1/3)
test/integration/26_forfeitedAssetsQueueCancel.t.sol 97.65% (83/85) 100.00% (89/89) N/A (0/0) 33.33% (1/3)
test/integration/27_donationBeforeOrigination.sol 97.87% (92/94) 100.00% (95/95) N/A (0/0) 33.33% (1/3)
test/integration/28_partialConvertAndForeclosure.sol 98.35% (119/121) 100.00% (121/121) N/A (0/0) 33.33% (1/3)
test/integration/2_payAndRefinance.t.sol 98.43% (125/127) 100.00% (135/135) N/A (0/0) 33.33% (1/3)
test/integration/3_payAndPenaltyImposed.t.sol 98.47% (129/131) 100.00% (136/136) N/A (0/0) 33.33% (1/3)
test/integration/4_orderExpires.t.sol 97.44% (76/78) 100.00% (77/77) N/A (0/0) 33.33% (1/3)
test/integration/5_usdxMaximumCap.t.sol 97.92% (94/96) 100.00% (98/98) N/A (0/0) 33.33% (1/3)
test/integration/6_slowForeclosure.t.sol 97.62% (82/84) 100.00% (85/85) N/A (0/0) 33.33% (1/3)
test/integration/7_usdxDonation.t.sol 90.00% (18/20) 100.00% (17/17) N/A (0/0) 33.33% (1/3)
test/integration/8_consolDonation.t.sol 93.75% (30/32) 100.00% (31/31) N/A (0/0) 33.33% (1/3)
test/integration/9_usdxWithdraw.t.sol 96.55% (84/87) 98.90% (90/91) 100.00% (1/1) 33.33% (1/3)
test/mocks/MockAggregatorV3.sol 70.00% (14/20) 76.92% (10/13) N/A (0/0) 57.14% (4/7)
test/mocks/MockERC20.sol 75.00% (6/8) 75.00% (3/4) N/A (0/0) 75.00% (3/4)
test/mocks/MockGatedERC20.sol 0.00% (0/14) 0.00% (0/13) 0.00% (0/2) 0.00% (0/4)
test/mocks/MockHyperCorePrecompile.sol 100.00% (10/10) 100.00% (9/9) 100.00% (1/1) 100.00% (3/3)
test/mocks/MockLenderQueue.sol 88.24% (15/17) 90.00% (18/20) 33.33% (1/3) 100.00% (2/2)
test/mocks/MockMortgageQueue.sol 100.00% (7/7) 100.00% (4/4) N/A (0/0) 100.00% (4/4)
test/mocks/MockNFTMetadataGenerator.sol 100.00% (4/4) 100.00% (2/2) N/A (0/0) 100.00% (2/2)
test/mocks/MockOriginationPoolDeployCallback.sol 100.00% (7/7) 100.00% (5/5) N/A (0/0) 100.00% (3/3)
test/mocks/MockOriginationPoolSchedulerUpgraded.sol 100.00% (2/2) 100.00% (1/1) N/A (0/0) 100.00% (1/1)
test/mocks/MockRouter.sol 50.00% (34/68) 54.29% (38/70) 23.08% (3/13) 54.55% (6/11)
test/mocks/MockWrapper.sol 48.39% (15/31) 53.85% (14/26) 14.29% (1/7) 37.50% (3/8)
test/mocks/MockYieldStrategy.sol 80.00% (8/10) 71.43% (5/7) 0.00% (0/2) 100.00% (3/3)
test/script/DeployAllRoleInvariants.t.sol 94.12% (16/17) 90.48% (19/21) 100.00% (1/1) 100.00% (3/3)
test/script/DeploySimpleOracle.t.sol 100.00% (6/6) 100.00% (3/3) N/A (0/0) 100.00% (3/3)
Total 92.22% (5510/5975) 94.82% (5871/6192) 71.51% (261/365) 69.18% (395/571)

@0xGumpy

0xGumpy commented Sep 21, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by #103 (same change; recreated with a clean commit message and description).

@0xGumpy 0xGumpy closed this Sep 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants