Files
uupl-smart-contract/.superpowers/brainstorm/10582-1786998923/content/architecture-terminal-orchestrated.html
T
golemandClaude Opus 5 fa36215def 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
2026-08-20 14:38:00 -06:00

98 lines
5.2 KiB
HTML

<div class="label">Design review · Section 1 of 4</div>
<h2>Terminal-orchestrated architecture</h2>
<p class="subtitle">All state-changing demo actions originate in auditable Foundry scripts. The operations console is a read-only window into the chain.</p>
<div class="mockup" style="margin-top:22px">
<div class="mockup-header">System boundaries and data flow</div>
<div class="mockup-body" style="padding:22px;background:#f6f8fb;color:#172033">
<div style="display:grid;grid-template-columns:1fr 42px 1.1fr 42px 1.35fr;align-items:center;gap:5px">
<div style="display:grid;gap:12px">
<div style="padding:16px;border:2px solid #59677e;border-radius:12px;background:white">
<div class="label">Codex + presenter</div>
<strong>Foundry terminal</strong>
<div style="font-size:12px;margin-top:8px;line-height:1.7;color:#596477">
DeployV1.s.sol<br>
SeedDemo.s.sol<br>
UpgradeV2.s.sol<br>
forge test / inspect
</div>
<div style="margin-top:9px;padding:7px 9px;background:#edf2f8;border-radius:7px;font-size:11px">Only state-changing control plane</div>
</div>
<div style="padding:16px;border:2px solid #5e806c;border-radius:12px;background:white">
<div class="label">Audience view</div>
<strong>React operations console</strong>
<div style="font-size:12px;margin-top:8px;line-height:1.7;color:#596477">
Balances + total liabilities<br>
USDC reserves + reserve ratio<br>
Proxy / implementation / version<br>
Event-driven activity timeline
</div>
<div style="margin-top:9px;padding:7px 9px;background:#ebf5ef;border-radius:7px;font-size:11px">Read-only via viem</div>
</div>
</div>
<div style="text-align:center;color:#65728a;font-size:25px">
<div title="JSON-RPC writes"></div>
<div style="height:118px"></div>
<div title="JSON-RPC reads"></div>
</div>
<div style="padding:18px;border:2px solid #7f6caf;border-radius:14px;background:#f0ecf9;text-align:center">
<div class="label">Same interface, selectable target</div>
<strong style="font-size:18px">Ethereum JSON-RPC</strong>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:16px">
<div style="padding:13px 8px;background:white;border-radius:9px;border:1px solid #cfc5e4">
<strong>Anvil</strong><br><small>Default live demo<br>fast + deterministic</small>
</div>
<div style="padding:13px 8px;background:white;border-radius:9px;border:1px solid #cfc5e4">
<strong>Base Sepolia</strong><br><small>Optional public proof<br>same scripts</small>
</div>
</div>
<div style="margin-top:13px;font-size:11px;color:#625879">Network config supplies RPC URL, chain ID, and deployed addresses.</div>
</div>
<div style="text-align:center;color:#65728a;font-size:25px"></div>
<div style="display:grid;gap:11px">
<div style="padding:15px;border:2px solid #23536a;border-radius:12px;background:white">
<div class="label">Stable public address</div>
<strong>ERC1967 Proxy</strong>
<div style="margin-top:8px;font-size:11px;color:#526170">Owns all bank storage: owner, asset, paused flag, balances, total liabilities.</div>
</div>
<div style="text-align:center;color:#23536a;font-size:18px">delegatecall ↓</div>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:8px">
<div style="padding:13px;border:2px solid #83909f;border-radius:10px;background:white">
<strong>Bank V1</strong><br><small>deposit<br>withdraw<br>pause</small>
</div>
<div style="padding:13px;border:2px solid #269064;border-radius:10px;background:#eaf7f0">
<strong>Bank V2</strong><br><small>V1 behavior<br>+ internal transfer</small>
</div>
</div>
<div style="padding:13px;border:2px solid #2772a5;border-radius:10px;background:#eaf4fb">
<strong>MockUSDC</strong><br><small>The proxy holds reserves; liabilities must never exceed its token balance.</small>
</div>
</div>
</div>
<div style="margin-top:20px;padding:13px 16px;background:#152239;color:white;border-radius:10px;display:flex;justify-content:space-between;gap:18px;font-size:12px">
<span><strong>V1 prepared:</strong> deploy, seed accounts, deposit, withdraw</span>
<span></span>
<span><strong>Codex live:</strong> implement + test V2</span>
<span></span>
<span><strong>Reveal:</strong> upgrade, transfer, prove preserved state</span>
</div>
</div>
</div>
<div class="options" style="margin-top:22px">
<div class="option" data-choice="architecture-approved" onclick="toggleSelect(this)">
<div class="letter"></div>
<div class="content"><h3>Architecture approved</h3><p>Continue to contract responsibilities and invariants.</p></div>
</div>
<div class="option" data-choice="architecture-changes" onclick="toggleSelect(this)">
<div class="letter"></div>
<div class="content"><h3>Needs changes</h3><p>Select this and describe the adjustment in the terminal.</p></div>
</div>
</div>