Pillar: P4 Forge in a link (#590). One run. After #575 (pull #704).
Outcome. When a child forge has not been claimed within its link's 24 hours, the spawner (only the spawner) gets a fresh link in one action. The old link stops working at once.
The path: the owner, on the client list (#601) or through the MCP, sees "not claimed; link expired" next to a child. The primary action is New link. Next he sends the new link.
Acceptance.
[ ] POST /api/v1/forges/:name/claim-link (admin of the parent, rw token) and an MCP claim_link {name} tool mint a new link for an unclaimed child. They are refused when the child is claimed (it has an admin).
[ ] The new token replaces the old row in the child (mintClaim), so the old link answers "expired or replaced". The new one is shown once and kept only as a hash. It is never stored by the idempotency table (withoutShownOnce).
[ ] Refusing tests: not the spawner, an ro token, and a claimed child are each refused. The old token is dead after a re-issue.
[ ] Done means reachable: the button on the client list (or the forges page), the MCP tool, the tests, and a look.
Pillar: P4 Forge in a link (#590). One run. After #575 (pull #704).
Outcome. When a child forge has not been claimed within its link's 24 hours, the spawner (only the spawner) gets a fresh link in one action. The old link stops working at once.
The path: the owner, on the client list (#601) or through the MCP, sees "not claimed; link expired" next to a child. The primary action is New link. Next he sends the new link.
Acceptance.
POST /api/v1/forges/:name/claim-link(admin of the parent, rw token) and an MCPclaim_link {name}tool mint a new link for an unclaimed child. They are refused when the child is claimed (it has an admin).mintClaim), so the old link answers "expired or replaced". The new one is shown once and kept only as a hash. It is never stored by the idempotency table (withoutShownOnce).Start from: src/spawn/claim.ts, src/actions/spawn.ts, src/spawn/door.ts, src/http/api.ts, src/http/mcp.ts.
Must not touch: the release workflow, the chart.