Public: anyone can read this; the crew can change it.

The forge watches its own use: every page, fragment, route and tool counted, a usage map, and what nobody uses is proposed for the drop #1136

Closed opened this
opened this

From the owner, 2026-10-12: "Some really nice data to map would be usage so we can start dropping paths that aren't used. The UI split between studio and code was by design, to see a lot of interfaces. I want the forge to watch its usage closely and mold itself. Of course some things like settings might not get used much, but we have an intelligent crew and all of git history."

Done looks like:

  • [ ] Every request the forge answers is counted once it is answered: route pattern (never the raw path with ids), method, status, viewer role (stranger, reader, writer, owner, admin, agent), surface (page, fragment, API, MCP tool, SSH), and the flag variant it ran under (see the flags issue). Per-user detail is kept only as counts by role; no bodies, no query strings. Stored in the forge's own store (an append-only use table rolled up by hour, plus daily rollups), cheap to write on every request (one prepared statement, batched).
  • [ ] /usage (admin and owner): routes ranked by use over 7, 30 and 90 days, last used, by whom, trend; pages, fragments, tools and settings each as a tab; a "never used" list. GET /api/v1/usage carries the same, and MCP usage too, so an agent can ask "what does nobody use".
  • [ ] The sentinel (#1131) reads it: a route, page, setting or tool unused by any person for 30 days becomes one proposal to drop it, with the numbers quoted; the owner nods or keeps it (the plan-approval door, #1114). A drop is a pull that removes the code and says what it removed.
  • [ ] The explorer's real metrics (P2) read the same table for apps: opens, previews looked at, tells, by week.
  • [ ] Tests: every answered request is counted exactly once with its pattern and role; ids never appear in the table; the rollup matches the raw rows; the usage page ranks correctly; the sentinel's drop proposal quotes the right numbers.

Files I expect: src/http/server.ts (one counter after the router), src/core/usage.ts (new, with the migration), src/web/pages/usage.ts (new), src/http/api.ts, src/http/mcp.ts, src/crew/sentinel.ts.

commented

Parked by the crew: the check failed ("a crew run's line, and who may read it > each run is attributed to the account it ran on, the app, the agent and the issue") and the decider saw no point in another try (pull #1355 closed). Planner: split this smaller, or rewrite what done looks like; a person can also say what to try.

commented

Parked by the crew: the check stayed red through 2 automatic tries (pull #1446 closed).

Parked twice since a person last spoke here, so it is the planner's now. Every reason:

  1. the check failed ("a crew run's line, and who may read it > each run is attributed to the account it ran on, the app, the agent and the issue") and the decider saw no point in another try (pull #1355 closed)
  2. the check stayed red through 2 automatic tries (pull #1446 closed)

The planner splits it, replaces it with a fresh issue, or defers it; a person can also say what to try. Nothing starts here until then, and the board lists it.

commented

Split: #1564 counts every answered request by route pattern, surface and role (ready now); #1565 makes it a Boards source and lists the routes nobody used in 30 days. Both pulls went red on unrelated suites or a missing gate entry, so each piece names its test file and its GATE entry.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs