Skip to content

feat(milestones): POST /:id/close — close + refund the unspent balance - #682

Closed
yggdrasilworld wants to merge 3 commits into
MergeFi:mainfrom
yggdrasilworld:fix/milestone-close-587
Closed

yggdrasilworld wants to merge 3 commits into
MergeFi:mainfrom
yggdrasilworld:fix/milestone-close-587

Conversation

@yggdrasilworld

@yggdrasilworld yggdrasilworld commented Oct 14, 2026 •

Copy link
Copy Markdown

What

MilestoneStatus.CLOSED existed and the state machine allowed (OPEN|FUNDED|IN_PROGRESS)->CLOSED, but no service/controller reached it — a sponsor couldn't reclaim an unspent budget.

Fix

Sponsor-only POST /milestones/:id/close — asserts the transition + refunds the remaining escrow.

Resolves #587

Payment: Base USDC 0xD40Df5c27cEa7dd78A3c345401995c319589334e

MilestoneStatus.CLOSED existed and the state machine allowed
(OPEN|FUNDED|IN_PROGRESS)->CLOSED, but no endpoint reached it — a sponsor
had no way to reclaim an unspent milestone budget. Sponsor-only close:
asserts the transition and refunds the remaining escrow.

Resolves MergeFi#587
@vercel

vercel Bot commented Oct 14, 2026

Copy link
Copy Markdown

@yggdrasilworld is attempting to deploy a commit to the chonilius' projects Team on Vercel.

A member of the Team first needs to authorize it.

The shared base carried half-written merge artifacts: an orphaned
invokeOnLockedEscrow block in escrow.service.ts, duplicated returns plus
a dead parsePagination in sponsors.controller.ts, and missing
describe/it closers in github-webhooks.service.spec.ts. Aligned each
with the intended form so the branch typechecks and its specs load.
Ports the same spec repairs as the sibling branch (callerUserId call
sites, tx-manager arg on releasePartial, IdempotencyKey provider,
transition-error contract) and adds the missing close() describe:
sponsor-only, escrow refund, CLOSED status, no-escrow skip.
@yggdrasilworld
yggdrasilworld deleted the fix/milestone-close-587 branch October 19, 2026 02:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

There is no way to close a milestone or refund its unspent budget

1 participant