NEC-146: Starting over leaves a solely owned organisation's subscription billing, with no warning #205

Merged
nectenda-agent merged 2 commits from worktree-nec-146-starting-over-leaves-a-solely-owned-orga into main 2026-09-28 20:04:26 +01:00
Collaborator

Task: NEC-146 — https://projectron.nerchure.com/tasks/154

Starting over left a solely owned organisation's paid subscription charging with the tombstoned identity, where the new account could not see or manage it. Support can now list what a released identity left billing (GET /api/admin/users/:id/subscriptions) and move an order to an organisation the same person owns now (POST /api/admin/billing/orders/:id/move). The old organisation is sent free first, the order is re-pointed only after its shard confirms, and every check is repeated inside the re-point transaction so a webhook, tick or second move during the drop refuses rather than leaving a paid plan behind or billing twice. The completion email and release-completed audit row name what is still billing, and the Start over dialog says so before anyone asks. Runbook and commercial-model docs updated.

Spec: docs/changes/NEC-146-start-over-subscription-move/spec.md

Changelog

Starting over now warns that a subscription on an organisation you own alone keeps billing, and support can move it to a new organisation you create.

Task: NEC-146 — https://projectron.nerchure.com/tasks/154 Starting over left a solely owned organisation's paid subscription charging with the tombstoned identity, where the new account could not see or manage it. Support can now list what a released identity left billing (GET /api/admin/users/:id/subscriptions) and move an order to an organisation the same person owns now (POST /api/admin/billing/orders/:id/move). The old organisation is sent free first, the order is re-pointed only after its shard confirms, and every check is repeated inside the re-point transaction so a webhook, tick or second move during the drop refuses rather than leaving a paid plan behind or billing twice. The completion email and release-completed audit row name what is still billing, and the Start over dialog says so before anyone asks. Runbook and commercial-model docs updated. Spec: `docs/changes/NEC-146-start-over-subscription-move/spec.md` ## Changelog Starting over now warns that a subscription on an organisation you own alone keeps billing, and support can move it to a new organisation you create.
An organisation someone owned alone stays with their tombstone when they
start over, and its subscription kept charging where the new account could
not see it. Support can now list what a released identity left billing and
move the order to an organisation the same person owns now: the old one is
sent free first, and the order is re-pointed only once its shard confirms.
The completion email and audit row name what is still billing, and the
Start over modal says so before anyone asks.

Task: NEC-146
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EotVmsRd29ih4oz84NvW5p
Close the races and gaps a review found in moving a subscription
All checks were successful
Release note / release-note (pull_request) Successful in 12s
CI / e2e (pull_request) Successful in 5m43s
CI / build (pull_request) Successful in 5m46s
CI / promote (pull_request) Has been skipped
67400aca83
The move re-checks inside its transaction everything it checked before the
drop, so a webhook, a tick or a second move during the drop's round trip
refuses rather than leaving the old organisation on a paid plan or billing
the target twice. It also refuses while the ticker still has something to
send the old organisation, when the order was not the tombstone's own, and
when the old organisation has a second live order. A past-due order keeps
its notice, and an instance admin's kept organisation counts as still billing.

Task: NEC-146
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EotVmsRd29ih4oz84NvW5p
cruelacid force-pushed worktree-nec-146-starting-over-leaves-a-solely-owned-orga from 67400aca83
All checks were successful
Release note / release-note (pull_request) Successful in 12s
CI / e2e (pull_request) Successful in 5m43s
CI / build (pull_request) Successful in 5m46s
CI / promote (pull_request) Has been skipped
to 7b378d6847
All checks were successful
Release note / release-note (pull_request) Successful in 13s
CI / build (pull_request) Successful in 4m52s
CI / e2e (pull_request) Successful in 5m22s
CI / promote (pull_request) Has been skipped
CI / build (push) Successful in 5m5s
CI / e2e (push) Successful in 5m21s
CI / promote (push) Successful in 31s
2026-09-28 19:58:25 +01:00
Compare
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Nectenda/nectenda!205
No description provided.