Objective
Restore coherent npm run flowchain:product-e2e and npm run flowchain:l1-e2e evidence when Slither is installed locally.
Evidence
On 2026-05-14, HQ review ran npm run flowchain:product-e2e from agent/l1-loop-hq-review at 9b025c567f1fb8521d509d3551de2caa082fa843. The command invoked flowchain:full-smoke -> launch:candidate -> contracts:hardening and failed because Slither was present on PATH and reported findings in contracts/bridge/BaseBridgeLockbox.sol:
missing-zero-check on BaseBridgeLockbox.releaseNative(...).recipient around line 201
low-level-calls on the native release call around line 208
Foundry tests passed before the Slither step. The docs say Slither is optional by default and required only when explicitly requested, but the Windows hardening script currently runs Slither whenever it is available and fails on findings.
Acceptance criteria
- Decide whether default
contracts:hardening should skip Slither unless contracts:hardening:slither or an explicit flag is used, or whether the contract findings must be fixed before product/L1 E2E can be green in Slither-equipped environments.
- If findings are true positives, add the smallest contract/test fix in the contracts worktree.
- If findings are expected or informational, document and implement the intended default/audit split consistently on Windows and non-Windows scripts.
- Rerun
npm run flowchain:product-e2e, npm run flowchain:l1-e2e, node infra/scripts/check-unsafe-claims.mjs, and git diff --check.
Out of scope
- Production bridge approval, real-funds bridge claims, tokenomics, or public-network readiness.
Objective
Restore coherent
npm run flowchain:product-e2eandnpm run flowchain:l1-e2eevidence when Slither is installed locally.Evidence
On 2026-05-14, HQ review ran
npm run flowchain:product-e2efromagent/l1-loop-hq-reviewat9b025c567f1fb8521d509d3551de2caa082fa843. The command invokedflowchain:full-smoke->launch:candidate->contracts:hardeningand failed because Slither was present on PATH and reported findings incontracts/bridge/BaseBridgeLockbox.sol:missing-zero-checkonBaseBridgeLockbox.releaseNative(...).recipientaround line 201low-level-callson the native release call around line 208Foundry tests passed before the Slither step. The docs say Slither is optional by default and required only when explicitly requested, but the Windows hardening script currently runs Slither whenever it is available and fails on findings.
Acceptance criteria
contracts:hardeningshould skip Slither unlesscontracts:hardening:slitheror an explicit flag is used, or whether the contract findings must be fixed before product/L1 E2E can be green in Slither-equipped environments.npm run flowchain:product-e2e,npm run flowchain:l1-e2e,node infra/scripts/check-unsafe-claims.mjs, andgit diff --check.Out of scope