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

An admin reads the last 20 refused first asks on /forges/refused #11586

stopped failed before it answered opened this has it
opened this

Intent: the operator can see why a stranger's first ask was refused, on its own page, without touching /forges. First half of #11555 (parked twice: both pulls stayed red). Start fresh from main; touch only the files below.

Done:

  • [ ] new src/web/pages/forges-refused.ts builds GET /forges/refused from one listRefusals call (src/core/first_ask_refusals.ts): the last 20 rows, each with time, who, the ask as escaped text and the reason; an empty list is one quiet line
  • [ ] mounted with one router.add("GET", "/forges/refused", …) line in src/http/server.ts, placed before /forges/:name routes, behind the same gate as /forges (others get exactly the answer /forges gives them)
  • [ ] new test/forges-refused.test.ts, in-process with createApp and a temp dir: an admin sees the rows; a non-admin gets /forges' refusal; <script> in an ask renders as text; no email or claim code appears
  • [ ] the new route passes whatever scripts/openapi-routes.ts and scripts/hollow.ts ask of a new GET page (list it where they say), and the test joins scripts/gate.ts if the gate does not find it by itself
  • [ ] bun x tsc --noEmit, bun scripts/design-lint.ts and bun test test/forges-refused.test.ts pass in the sandbox before the push

Files: src/web/pages/forges-refused.ts (new), src/http/server.ts (one line), test/forges-refused.test.ts (new), possibly scripts/gate.ts or the route lists named above. Risks: do not edit src/web/pages/forges.ts or docs here (the next issue does). Branch scout/11555-… at 4687f1b01911 may be read for ideas. Suggested brief: scout.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs