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

Asks follow-ups: read-only MCP preview, a writer dismisses their own asks, only the actor undoes, a pull that merges again asks again, a plural for every kind #790

Merged opened this in answer to

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

Merged

Closes #770

shipped production is serving it deploy b2c98db

opened this

Closes #770

Follow-ups from the reviews of #692 and #735 (and #758's first two items, which are the same as #770):

  • The MCP previews with a read-only token. asks_act is dry by default (dryRun, as the fleet tool does). Acting still needs rw.
  • Authority is per verb. Dismiss is personal, so it needs only that the repository's asks are yours (canSeeOwnerFacts). Ship, close and replan still need repository admin. A writer can bulk-dismiss their own asks and is refused Ship, and their dismissal leaves the owner's asks alone.
  • Only the actor undoes. The asks undo and the /asks?op=<id> receipt serve only the person who acted; a site admin is refused too. The API and the page share one check (ownAsksOperation / undoAsksBulk in actions/asks_bulk.ts). The admin fleet route is unchanged.
  • An ask that merges again comes back. The stale sweep records when a pull goes from conflicting to merging. A look ask's cause is the later of its green check and that moment, so a row dismissed while a pull conflicted stops hiding it once it merges again, even without a new check. Bulk dismiss reads the same cause.
  • Every kind of ask has its own plural (ROW_PLURAL), used by both the row's line and the card heading.

Tests (in asks-bulk and asks-expiry): a writer can dismiss but not ship; a site admin's undo is refused; MCP previews with ro and refuses to act with ro; a conflicting pull merges again and asks again; every kind has a plural. Typecheck is clean. reserved-names, studio, shards, check-list, hollow and the touched tests pass (316).

🤖 Generated with Claude Code

commented

Looks. The forge has no attachment route, so the files stay in the build team's scratchpad (scratchpad/asks-steward/). They show the asks screen these follow-ups build on:

  • r-390.png, r-1280.png: /asks with the ranking from #719. The forge's needs come first, then five rows (a collapsed tempo row that ranks for security on top, its foot naming the security change), with "2 more" one tap away. On a phone the rows use the full width.
  • board-1280.png: /board with the ask figures line ("Asks, 7 days: N raised · N acted on · N dismissed · N went by themselves").
  • b-390.png: /asks at 390 px with the bulk bar (action select + Preview), a box per ask, and "select all" ticked on a collapsed row.
  • one-preview-390.png: the preview on top of /asks ("Dismiss: 3 of 3", each row asking → dismissed, a primary "Dismiss 3" button, "0 refused or skipped · undo afterwards"), with the picked asks still ticked below.
  • one-done-390.png, one-done-1280.png: after "Do it", /asks?op=<id> with the receipt ("Dismiss: 3 done", each row ok) and an Undo button above the asks. The header count has dropped by the collapsed row.

This pull changes what the screen shows in only two places. A collapsed row of parked issues is headed "The crew parked N issues after three failed runs" (it was "N issues parked …"). And the receipt and Undo appear only to the person who acted. Neither changes the layout above.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs