docs: track superpowers working documents in git
The uups-bank-demo wave's SDD records (ledger, six task briefs and reports, review diffs) and the brainstorm design mockups were git-ignored, so they existed only on one sandbox VM and reached no remote — this repo had no remote at all until now. Removes `.superpowers/` from .gitignore and the `*` .gitignore the superpowers plugin writes inside .superpowers/sdd/; the second blocks the directory even with the first removed. Excluded as ephemeral local-server state, and now ignored by name: .last-port, .last-token (a 64-char session token for a brainstorm server on a port that is long gone), and the per-session state/ directories. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Fnwzj6McD6kSkXwjUKFKxe
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
### Task 2: Build the valueless six-decimal mock asset with TDD
|
||||
|
||||
**Files:**
|
||||
- Create: `src/MockUSDC.sol`
|
||||
- Create: `test/MockUSDC.t.sol`
|
||||
|
||||
**Interfaces:**
|
||||
- Produces `MockUSDC.mint(address,uint256)`, `decimals() == 6`, and standard ERC-20 behavior.
|
||||
- Consumed by the bank tests, deployment scripts, and dashboard ABI export.
|
||||
|
||||
- [ ] Write `test/MockUSDC.t.sol` first. Cover the exact name/symbol/decimals, owner-only mint, successful mint, transfer/approve behavior inherited from ERC-20, and zero initial supply. Use `vm.expectRevert(abi.encodeWithSelector(Ownable.OwnableUnauthorizedAccount.selector, stranger))` for non-owner minting.
|
||||
|
||||
- [ ] Run the focused test and observe red:
|
||||
|
||||
```bash
|
||||
forge test --match-path test/MockUSDC.t.sol -vvv --force
|
||||
```
|
||||
|
||||
Expected red: `src/MockUSDC.sol` is missing.
|
||||
|
||||
- [ ] Implement only the tested contract:
|
||||
|
||||
```solidity
|
||||
/// @notice Educational mock token with no monetary value. Never use as real USDC.
|
||||
contract MockUSDC is ERC20, Ownable {
|
||||
constructor(address initialOwner) ERC20("Mock USD Coin", "mUSDC") Ownable(initialOwner) {}
|
||||
|
||||
function decimals() public pure override returns (uint8) { return 6; }
|
||||
function mint(address to, uint256 amount) external onlyOwner { _mint(to, amount); }
|
||||
}
|
||||
```
|
||||
|
||||
Reject a zero `initialOwner` through OpenZeppelin’s `OwnableInvalidOwner` behavior. Do not add faucet, burn, permit, blacklist, proxy, or bank-specific logic.
|
||||
|
||||
- [ ] Run red-to-green verification:
|
||||
|
||||
```bash
|
||||
forge fmt
|
||||
forge test --match-path test/MockUSDC.t.sol -vvv --force
|
||||
```
|
||||
|
||||
Expected: all mock-token tests pass.
|
||||
|
||||
- [ ] Commit:
|
||||
|
||||
```bash
|
||||
git add src/MockUSDC.sol test/MockUSDC.t.sol
|
||||
git commit -m "feat: add valueless mock USDC"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user