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

Sentinel: shared:01m23vygyffx5hg2f5vm8r74sr:ky51wt3erj was degraded 74 minutes today: trevato/forge: "tools/list stays under 40 KB, with 3 KB of headroom (37,000 bytes)" failed on 3 pulls in the last hour … #5185

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

The MCP `tools/list` budget is back to an honest headroom of 37,000 bytes, which was the issue's goal. The answer is now 35,774 bytes for a forge admin (it was 36,859), which leaves 1,226 bytes for the next tool. #4990 had raised the limit to 37,500 to fit `threads`. Each raise like that leaves the next tool pull red, and that is how this lane stayed degraded.

shipped production is serving it deploy f9c1fcc

opened this

The MCP tools/list budget is back to an honest headroom of 37,000 bytes, which was the issue's goal. The answer is now 35,774 bytes for a forge admin (it was 36,859), which leaves 1,226 bytes for the next tool. #4990 had raised the limit to 37,500 to fit threads. Each raise like that leaves the next tool pull red, and that is how this lane stayed degraded.

  • src/http/mcp.ts: 71 tool descriptions are cut to one sentence each. No name, schema, required list or behaviour changed. Argument names stay in backticks. Safety notes stay, such as asks_act's "ship (never undone)" and claim_link's "only with reveal: true". Phrases other tests match on also stay ("invite lets in only…", "saved filter").
  • test/mcp-size.test.ts: the headroom limit is 37,000 again, matching the test name the sentinel tracks. A new assertion holds every tool description to 120 bytes. On main it fails on signup (141 bytes).
  • Why #5119 closed: its check failed on "a sleeping preview woken at the limit". The check log shows the machine ran out of disk (ENOSPC: no space left on device at src/kernel/db.ts:50, opening a test database). All 23 failures in that run trace to this, and none of them involve MCP. The head is unchanged (a225c3d0) and is being checked again in this pull.
  • Not done: the sentinel suggested making the test's result independent of the machine. That doesn't apply here: the size test gives the same answer on every run, because it is red only when the budget is used up. I also left the timing test alone, since its failure was the full disk, not its 2.5 s sleep window.
  • Things to look at: signup no longer says "With mode, plans."; its schema still has dryRun. asks and feed say "saved filter" in lowercase because test/asks-mute.test.ts matches it.

To try it: bun test test/mcp-size.test.ts passes, and the type check is clean.

🤖 Generated with Claude Code

Closes #5105

commented

The MCP tools/list budget is back to an honest headroom of 37,000 bytes, which was the issue's goal. The answer is now 35,774 bytes for a forge admin (it was 36,859), which leaves 1,226 bytes for the next tool. #4990 had raised the limit to 37,500 to fit threads. Each raise like that leaves the next tool pull red, and that is how this lane stayed degraded.

  • src/http/mcp.ts: 71 tool descriptions are cut to one sentence each. No name, schema, required list or behaviour changed. Argument names stay in backticks. Safety notes stay, such as asks_act's "ship (never undone)" and claim_link's "only with reveal: true". Phrases other tests match on also stay ("invite lets in only…", "saved filter").
  • test/mcp-size.test.ts: the headroom limit is 37,000 again, matching the test name the sentinel tracks. A new assertion holds every tool description to 120 bytes. On main it fails on signup (141 bytes).
  • Why #5119 closed: its check failed on "a sleeping preview woken at the limit". The check log shows the machine ran out of disk (ENOSPC: no space left on device at src/kernel/db.ts:50, opening a test database). All 23 failures in that run trace to this, and none of them involve MCP. The head is unchanged (a225c3d0) and is being checked again in this pull.
  • Not done: the sentinel suggested making the test's result independent of the machine. That doesn't apply here: the size test gives the same answer on every run, because it is red only when the budget is used up. I also left the timing test alone, since its failure was the full disk, not its 2.5 s sleep window.
  • Things to look at: signup no longer says "With mode, plans."; its schema still has dryRun. asks and feed say "saved filter" in lowercase because test/asks-mute.test.ts matches it.

To try it: bun test test/mcp-size.test.ts passes, and the type check is clean.

🤖 Generated with Claude Code

Approved

Approved. The change only edits text: 71 tool descriptions are shorter, and test/mcp-size.test.ts sets the headroom back to 37,000 and adds a 120-byte limit on each description. No tool name, schema, required list, writes, dryByDefault, adminOnly or run body changed, so no authorization or behaviour changed.

What I checked:

  • The safety notes are still there: ship (never undone), only with \reveal: true\`, deletes nothing, read-only` on probe, and the admin, writer and owner gates named in the text.
  • The new max 500 on access is true (READ_MAX = 500 in src/http/access_log.ts).
  • At head a225c3d0, these tests pass: mcp-size, asks-mute (which matches "saved filter"), decisions-by-doors, mcp-confirm-wait, mcp-secrets and mcp-pulls.
  • The preview / answers 200.
  • The new per-description assertion would fail on main (signup is 141 bytes there), so it guards something real.

One low, non-blocking point is on the line below.

commented

The full gate on land was red; the pull is open again. Red tests:

  • the drain page > a page held back by the hourly cap is sent once the window rolls over
  • the drain page > a page held back by the hourly cap is sent once the window rolls over [25.57ms] [shard 785]
Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs