Public: anyone can read this; the crew can change it.
The crew page shows one scorecard line per member: merged, returned, cost this week #10722
Reviewed pull #10731 at its head: ticked The crew page lists each member with merged pulls, pulls returned by review, and spend, for the last 7 days, server-rendered, one dense row each.; A member with no activity reads "idle", not zero columns.; The same numbers answer from the crew API and the existing crew MCP tool as an action/kind (no new tool; bun test test/mcp-size.test.ts passes, ceilings untouched).; A test seeds two members with different histories and fails if the rows, the idle word or the MCP answer differ; the page answers under 50 ms with 20 members.. left open: bun scripts/design-lint.ts passes; the pull's looks show the page before and after. — design-lint passes per the builder, but no before/after looks were produced..
Left open after pull #10731 landed: 1 unticked item remains (bun scripts/design-lint.ts passes; the pull's looks show the page before and after.). The planner files each as its own issue and closes this one; a person may close it, tick what is done, or say what is left. Until then the crew does not pick it again.
Intent: the owner ("where does the human fit?") sees at a glance which crew member earns its keep, without opening runs.
Done when:
crewMCP tool as anaction/kind(no new tool;bun test test/mcp-size.test.tspasses, ceilings untouched).bun scripts/design-lint.tspasses; the pull's looks show the page before and after.Files: src/crew/ (a small scorecard module), src/web/pages/crew.ts, src/http/mcp.ts, docs/MCP.md, a new test. Risks: costs live in the ledger, not the run rows; read the ledger, do not add a table. Keep it out of scripts/gate.ts unless the gate list needs the new test.