Economy page is useless - rework it to carry real, useful economy data #78

Closed
opened 2026-07-06 05:11:17 +00:00 by coilysiren · 4 comments
Owner

The /economy page (frontend/src/pages/Economy.tsx) is currently useless. Rework it into a genuinely useful economy view: money supply, active currencies, wealth distribution / top holders, trade flows and volume over time - data available via the currency + trade exporters (and the new #58 stores exporter once eco-app#72 redeploys). Design + implement.

Files: frontend/src/pages/Economy.tsx, backend currency/economy endpoints.

The `/economy` page (`frontend/src/pages/Economy.tsx`) is currently useless. Rework it into a genuinely useful economy view: money supply, active currencies, wealth distribution / top holders, trade flows and volume over time - data available via the currency + trade exporters (and the new #58 stores exporter once eco-app#72 redeploys). Design + implement. Files: `frontend/src/pages/Economy.tsx`, backend currency/economy endpoints.
Member

🔒 Reserved by ward agent --driver claude — container engineer-claude-eco-app-78 on host KAI-DESKTOP-TOWER is carrying this issue (reserved 2026-07-06T05:14:32Z). Concurrent ward agent runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); --force overrides.

Do not comment on or edit this issue to steer the run while it is reserved. The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a new issue, dispatched fresh — that is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494).

run seed context — what this run is carrying (ward#609)
  • Resolved: coilyco-gaming/eco-app#78 · branch issue-78 · driver claude · workflow direct-main
  • Run: engineer-claude-eco-app-78 · ward v0.413.0 · dispatched 2026-07-06T05:14:32Z
  • Comment thread: 0 included in the pre-flight read, 0 stripped (ward's own automated comments).

Issue body as seeded:

The `/economy` page (`frontend/src/pages/Economy.tsx`) is currently useless. Rework it into a genuinely useful economy view: money supply, active currencies, wealth distribution / top holders, trade flows and volume over time - data available via the currency + trade exporters (and the new #58 stores exporter once eco-app#72 redeploys). Design + implement.

Files: `frontend/src/pages/Economy.tsx`, backend currency/economy endpoints.

Static container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.413.0).

— Claude (she/her), via ward agent

<!-- ward-agent-reservation --> 🔒 Reserved by `ward agent --driver claude` — container `engineer-claude-eco-app-78` on host `KAI-DESKTOP-TOWER` is carrying this issue (reserved 2026-07-06T05:14:32Z). Concurrent `ward agent` runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); `--force` overrides. **Do not comment on or edit this issue to steer the run while it is reserved.** The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a **new issue, dispatched fresh** — that is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494). <details><summary>run seed context — what this run is carrying (ward#609)</summary> - **Resolved:** `coilyco-gaming/eco-app#78` · branch `issue-78` · driver `claude` · workflow `direct-main` - **Run:** `engineer-claude-eco-app-78` · ward `v0.413.0` · dispatched `2026-07-06T05:14:32Z` - **Comment thread:** 0 included in the pre-flight read, 0 stripped (ward's own automated comments). **Issue body as seeded:** ``` The `/economy` page (`frontend/src/pages/Economy.tsx`) is currently useless. Rework it into a genuinely useful economy view: money supply, active currencies, wealth distribution / top holders, trade flows and volume over time - data available via the currency + trade exporters (and the new #58 stores exporter once eco-app#72 redeploys). Design + implement. Files: `frontend/src/pages/Economy.tsx`, backend currency/economy endpoints. ``` Static container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.413.0). </details> <!-- ward-agent-signature --> — Claude (she/her), via `ward agent`
Author
Owner

🔓 Reservation released by ward container reap — container eco-app (--driver claude) exited at the auth pre-launch gate without launching the agent (ward#222/#264/#609), so the hold it took is retracted. A plain ward agent retry no longer needs --force.

Gate: auth smoke test (claude credentials)

Recovery: Refresh the host claude login (re-run claude on the host to re-auth), then re-dispatch.

error from the gate
auth smoke test: claude -p rejected the credentials (exit 1) - they are unusable in-container (ward#222). Refresh the host claude login (re-run 'claude' on the host) and relaunch; WARD_SMOKE_TEST_SKIP=1 bypasses.

— Claude (she/her), via ward agent

<!-- ward-agent-reservation-released --> 🔓 Reservation released by `ward container reap` — container `eco-app` (`--driver claude`) exited at the **auth** pre-launch gate without launching the agent (ward#222/#264/#609), so the hold it took is retracted. A plain `ward agent` retry no longer needs `--force`. **Gate:** auth smoke test (claude credentials) **Recovery:** Refresh the host claude login (re-run `claude` on the host to re-auth), then re-dispatch. <details><summary>error from the gate</summary> ``` auth smoke test: claude -p rejected the credentials (exit 1) - they are unusable in-container (ward#222). Refresh the host claude login (re-run 'claude' on the host) and relaunch; WARD_SMOKE_TEST_SKIP=1 bypasses. ``` </details> <!-- ward-agent-signature --> — Claude (she/her), via `ward agent`
Member

🔒 Reserved by ward agent --driver claude — container engineer-claude-eco-app-78 on host KAI-DESKTOP-TOWER is carrying this issue (reserved 2026-07-06T05:37:43Z). Concurrent ward agent runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); --force overrides.

Do not comment on or edit this issue to steer the run while it is reserved. The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a new issue, dispatched fresh — that is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494).

run seed context — what this run is carrying (ward#609)
  • Resolved: coilyco-gaming/eco-app#78 · branch issue-78 · driver claude · workflow direct-main
  • Run: engineer-claude-eco-app-78 · ward v0.413.0 · dispatched 2026-07-06T05:37:43Z
  • Comment thread: 1 included in the pre-flight read, 1 stripped (ward's own automated comments).

Issue body as seeded:

The `/economy` page (`frontend/src/pages/Economy.tsx`) is currently useless. Rework it into a genuinely useful economy view: money supply, active currencies, wealth distribution / top holders, trade flows and volume over time - data available via the currency + trade exporters (and the new #58 stores exporter once eco-app#72 redeploys). Design + implement.

Files: `frontend/src/pages/Economy.tsx`, backend currency/economy endpoints.

Static container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.413.0).

— Claude (she/her), via ward agent

<!-- ward-agent-reservation --> 🔒 Reserved by `ward agent --driver claude` — container `engineer-claude-eco-app-78` on host `KAI-DESKTOP-TOWER` is carrying this issue (reserved 2026-07-06T05:37:43Z). Concurrent `ward agent` runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); `--force` overrides. **Do not comment on or edit this issue to steer the run while it is reserved.** The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a **new issue, dispatched fresh** — that is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494). <details><summary>run seed context — what this run is carrying (ward#609)</summary> - **Resolved:** `coilyco-gaming/eco-app#78` · branch `issue-78` · driver `claude` · workflow `direct-main` - **Run:** `engineer-claude-eco-app-78` · ward `v0.413.0` · dispatched `2026-07-06T05:37:43Z` - **Comment thread:** 1 included in the pre-flight read, 1 stripped (ward's own automated comments). - included: @coilysiren (2026-07-06T05:14:53Z) - stripped: @coilyco-ops (2026-07-06T05:14:37Z) **Issue body as seeded:** ``` The `/economy` page (`frontend/src/pages/Economy.tsx`) is currently useless. Rework it into a genuinely useful economy view: money supply, active currencies, wealth distribution / top holders, trade flows and volume over time - data available via the currency + trade exporters (and the new #58 stores exporter once eco-app#72 redeploys). Design + implement. Files: `frontend/src/pages/Economy.tsx`, backend currency/economy endpoints. ``` Static container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.413.0). </details> <!-- ward-agent-signature --> — Claude (she/her), via `ward agent`
Author
Owner

WARD-OUTCOME: done - /economy reworked into a real money-supply dashboard (supply + trend charts, currency roster, wealth distribution/top holders, trade flows) landed on main.

The satisfying surprise here was how little backend work this actually needed. currency.py already computed nearly everything the issue asked for - money supply, the minted-vs-personal roster, per-currency trade volume, live top holders from the #58 exporter mod - but it was all going to waste behind a tiny four-stat strip on the Trade page. So the real job was surfacing it: two additive fields to the list-mode payload (the money/trade time series, and per-currency holders) and then a proper React page to render it.

The one thing that fought back was a shape mismatch I had to be careful around: /preview/currency.json returns compute_currency_payload, but currencyApi.ts (and the Trade page tests) are typed against the old to_dict() shape. Rather than churn that and risk the Trade page, I gave Economy its own correctly-typed client in econApi.ts. Worth a follow-up to reconcile that drift - and the Trade currency strips daysElapsed field looks like a latent NaN from the same mismatch.

Confident in the result: backend + frontend tests, lint, typecheck, build, and the full precommit suite all green (457 py + 83 ts). Every section degrades independently, so it stays honest when the admin token or the exporter mod is absent - which, per the #58 note, is the current live state until the mod DLL redeploys, so the wealth-distribution panel will look its best only after that lands.

WARD-OUTCOME: done - /economy reworked into a real money-supply dashboard (supply + trend charts, currency roster, wealth distribution/top holders, trade flows) landed on main. The satisfying surprise here was how little backend work this actually needed. `currency.py` already computed nearly everything the issue asked for - money supply, the minted-vs-personal roster, per-currency trade volume, live top holders from the #58 exporter mod - but it was all going to waste behind a tiny four-stat strip on the Trade page. So the real job was surfacing it: two additive fields to the list-mode payload (the money/trade time series, and per-currency holders) and then a proper React page to render it. The one thing that fought back was a shape mismatch I had to be careful around: `/preview/currency.json` returns `compute_currency_payload`, but `currencyApi.ts` (and the Trade page tests) are typed against the old `to_dict()` shape. Rather than churn that and risk the Trade page, I gave Economy its own correctly-typed client in `econApi.ts`. Worth a follow-up to reconcile that drift - and the Trade currency strips `daysElapsed` field looks like a latent NaN from the same mismatch. Confident in the result: backend + frontend tests, lint, typecheck, build, and the full precommit suite all green (457 py + 83 ts). Every section degrades independently, so it stays honest when the admin token or the exporter mod is absent - which, per the #58 note, is the current live state until the mod DLL redeploys, so the wealth-distribution panel will look its best only after that lands.
Sign in to join this conversation.
No description provided.