# Status does not update inside the BlackGovernor leading to complete distribution of nudge functionality

BlackGovernor's execute() shadows the status variable, so MinterUpgradeable.nudge() always reads default state and tailEmissionRate never adjusts.

- Payout: Contest reward
- Severity: medium
- Program: Blackhole
- Credited: hakunamatata
- Disclosed: 2025-07-03
- Write-up quality: 6/10
- Original: https://code4rena.com/reports/2025-05-blackhole#m-18
- Library page: https://bugbountylibrary.com/r/c4%3A2025-05-blackhole%3AM-18
- Tags: domain:web3 impact:integrity kind:contest platform:code4rena sev:medium tech:evm tech:solidity technique:source-review vuln:accounting-error vuln:business-logic

**Target:** BlackGovernor / Governor.sol execute() and MinterUpgradeable.nudge()
**Root cause:** execute() declares a local `ProposalState status = state(proposalId)` that shadows the contract-level status variable, so the stored status is never written and nudge() always reads the default value.
**Steps:**
1. Deploy Blackhole stack (Black, VotingEscrow, MinterUpgradeable, GaugeManager, BlackGovernor) per PoC setUp.
2. Create lock and call `blackGovernor.propose([minter],[0],[abi.encodeWithSelector(IMinter.nudge.selector)],"Nudge proposal")`.
3. Skip votingDelay, `castVote(proposalId,1)`, skip votingPeriod.
4. Call `blackGovernor.execute(targets,values,calldatas,epochTimehash)`.
5. Observe `blackGovernor.status()` remains default; `minterUpgradeable.nudge()` falls to else branch setting tailEmissionRate=10000 instead of PROPOSAL_INCREASE.
**How found:** Code review of Governor.sol execute() spotted a local `status` declaration shadowing the contract state variable (noted via Solidity Visual Developer), then traced nudge()'s read of status() to confirm it never changes.
**Insight:** When a governance/emission contract reads a state variable set by another function, grep for local declarations of the same name in the setter path—Solidity shadowing silently no-ops the write and is easy to spot with compiler warnings or IDE shadowing hints.
