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:
golem
2026-08-20 14:38:00 -06:00
co-authored by Claude Opus 5
parent 14980e6083
commit fa36215def
28 changed files with 9368 additions and 1 deletions
@@ -0,0 +1,133 @@
# Task 2 Report: Valueless Six-Decimal Mock Asset
## Implementation
Added `MockUSDC`, an educational ERC-20 mock with no monetary value. It uses OpenZeppelin `ERC20` and `Ownable`, initializes the token as `Mock USD Coin` (`mUSDC`), overrides `decimals()` to return `6`, and permits `mint(address,uint256)` only to the configured owner. OpenZeppelin rejects `address(0)` as the initial owner via `OwnableInvalidOwner`.
## Changed Files
- `src/MockUSDC.sol` (new): minimal six-decimal owner-mintable ERC-20 mock.
- `test/MockUSDC.t.sol` (new): focused tests for metadata, zero supply, authorized/unauthorized minting, transfer, approval, and zero-owner rejection.
## TDD Evidence
Before writing production code, the test suite was added. The production change that each test guards was identified as a missing or incorrect ERC-20 observable behavior: metadata/decimals, initial supply, owner authorization and mint balances, transfer balance movement, approval allowance, or constructor owner validation.
### RED
Command:
```bash
PATH=/home/golem/.foundry/bin:$PATH forge test --match-path test/MockUSDC.t.sol -vvv --force
```
Relevant output:
```text
Error (6275): Source "src/MockUSDC.sol" not found: File not found.
--> test/MockUSDC.t.sol:6:1:
Error: Compilation failed
```
This was the expected RED result: the test imports the intentionally absent `src/MockUSDC.sol`; it failed because the requested feature did not yet exist, not because of a test typo or unrelated failure.
### GREEN
Commands:
```bash
PATH=/home/golem/.foundry/bin:$PATH forge fmt
PATH=/home/golem/.foundry/bin:$PATH forge test --match-path test/MockUSDC.t.sol -vvv --force
```
Relevant output:
```text
Ran 7 tests for test/MockUSDC.t.sol:MockUSDCTest
Suite result: ok. 7 passed; 0 failed; 0 skipped
```
## Full Relevant Suite
Command:
```bash
PATH=/home/golem/.foundry/bin:$PATH forge test -vvv
```
Result:
```text
Ran 1 test suite: 7 tests passed, 0 failed, 0 skipped (7 total tests)
```
`git diff --check` also completed without reporting whitespace errors.
## Self-Review
- Implementation contains only the briefed `ERC20`, `Ownable`, `decimals`, and owner-only `mint` behavior; no faucet, burn, permit, blacklist, proxy, or bank-specific logic was added.
- Tests exercise the deployed contract's observable state and OpenZeppelin's real authorization behavior; no mocks were used.
- The non-owner case uses the required exact `Ownable.OwnableUnauthorizedAccount` selector and `stranger` address.
- Mutations such as changing metadata/decimals, allowing arbitrary minting, omitting minting, misrouting transfers, failing to set allowance, or accepting a zero owner are covered by at least one test.
## Concerns
None. The report itself is intentionally left uncommitted because the task required committing only `src/MockUSDC.sol` and `test/MockUSDC.t.sol`.
## Fix Round 1: Literal Command Evidence
Foundry was placed on `PATH` before each command session with a separate shell environment setup step. The commands below were then executed literally, with no inline `PATH` prefix.
### Isolated RED Reproduction
An isolated temporary filesystem copy of the complete worktree (including the already-installed pinned dependencies) was created under `/tmp`, and only `src/MockUSDC.sol` was removed from that copy. This keeps the real committed worktree untouched while preserving the same test file and dependency graph.
Covering test file: `test/MockUSDC.t.sol`
Literal command:
```bash
forge test --match-path test/MockUSDC.t.sol -vvv --force
```
Relevant output:
```text
Error (6275): Source "src/MockUSDC.sol" not found: File not found.
--> test/MockUSDC.t.sol:6:1:
Error: Compilation failed
```
This RED result is correct because the isolated state retains the new test but deliberately lacks the production contract it imports. The failure is therefore the expected feature-missing failure, rather than a dependency, compiler, or test error.
### Real-Worktree GREEN
Literal commands:
```bash
forge fmt
forge test --match-path test/MockUSDC.t.sol -vvv --force
```
Relevant output:
```text
Ran 7 tests for test/MockUSDC.t.sol:MockUSDCTest
Suite result: ok. 7 passed; 0 failed; 0 skipped
```
### Full Relevant Suite
Literal command:
```bash
forge test -vvv
```
Result:
```text
Ran 1 test suite: 7 tests passed, 0 failed, 0 skipped (7 total tests)
```
No tracked implementation or test file changed during this correction, so no tracked commit was needed. Commit `1f4175b feat: add valueless mock USDC` remains the sole task commit.