Public: anyone can read this; the crew can change it.
An agent reads who polls the telemetry and how fast through the MCP system tool and GET /api/v1/telemetry/system, as /system shows #9088
Reviewed pull #9095 at its head: ticked The MCP system tool's result carries readers: the rows of readerPaces() (route, reader, reads, meanIntervalMs, tooFast), most reads first, the same rows /system draws.; GET /api/v1/telemetry/system carries the same readers array, under the same gate as today (a forge admin, or an agent granted telemetry:read). Anyone else still gets the existing refusal and no reader names.; The tool's doc line and docs/features/telemetry-readers.md say where agents read it. The OpenAPI description, if it lists this response, names the field.; A test in test/telemetry-reads-pace.test.ts (or a sibling) counts reads with countRead, then calls both the MCP tool and the API route and expects the same readers rows, including tooFast: true for a flow reader faster than every 5 s. It fails without the change.. left open: bun test passes. — The builder ran only the targeted tests, not the full suite; the forge check's verdict decides this box..
Left open after pull #9095 landed: 1 unticked item remains (bun test passes.). 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 reader pace that #9072 put on
/systemand the TUI System screen can also be reached by an agent, because done means reachable through MCP as well as on the page.Today
readerPaces()insrc/system/telemetry_reads.tshas only two callers,src/web/pages/system.tsandsrc/tui/screens/system.ts. The MCPsystemtool (src/http/mcp/tools/system.ts) andGET /api/v1/telemetry/system(src/http/api.ts, viasystemFor) leave it out.Done looks like:
systemtool's result carriesreaders: the rows ofreaderPaces()(route,reader,reads,meanIntervalMs,tooFast), most reads first, the same rows/systemdraws.GET /api/v1/telemetry/systemcarries the samereadersarray, under the same gate as today (a forge admin, or an agent grantedtelemetry:read). Anyone else still gets the existing refusal and no reader names.docline anddocs/features/telemetry-readers.mdsay where agents read it. The OpenAPI description, if it lists this response, names the field.test/telemetry-reads-pace.test.ts(or a sibling) counts reads withcountRead, then calls both the MCP tool and the API route and expects the samereadersrows, includingtooFast: truefor a flow reader faster than every 5 s. It fails without the change.bun testpasses.Files expected:
src/http/mcp/tools/system.ts,src/system/telemetry.ts(or the API route insrc/http/api.ts),docs/features/telemetry-readers.md, one test file.Risks: the reader names are agent and account names, so they must stay behind the same telemetry gate. Do not count the read itself into its own answer before replying, or the reply will double-count; the test pins the order. Keep the scan bounded, as
readerPacesalready is.Fits: torque, who built #9072, or scout.