Reserve a slot name before its principal exists, and adopt it on retry #32
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Meta/Campaign
Meta/Epic
Meta/Session
Priority/Critical
Priority/High
Priority/Low
Priority/Medium
Reviewed/Confirmed
Reviewed/Curated
Reviewed/Duplicate
Reviewed/Invalid
Reviewed/Won't Fix
Scope/Campaign
Status/Abandoned
Status/Blocked
Status/Conflicted
Status/In Progress
Status/In Review
Status/Need Grooming
Status/Need More Info
Status/Ready
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Blocks
Reference
Ting/Vedanta#32
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Proposal
Make a pool slot's name the thing that exists first, so a retry can never turn one slot into two principals.
Delivery class
agent-unit— reservation and adoption logic with capture-double tests over the Kanidm adapter.Design
The name is reserved before creation, in the form
swarm-alpha-drone-<word>-<word>-<word>-<word>. The UUID the directory returns is pinned to that name and slot with no rename pass.The ordering is the whole requirement. A create-then-name flow has a window in which a principal exists under a name nothing reserved, and a retry across that window is exactly how a slot acquires a second principal — the failure mode is not the crash, it is the silent duplicate that survives it. Reserving first makes the retry's question answerable: is there already a principal for this reservation?
A retry therefore adopts a principal whose name and slot metadata match. A mismatch is a collision, and a collision is denied or re-reserved — never resolved by creating another principal.
Tasks
Specification Delta
Requirement: a name is reserved before a principal exists
Scenario: provisioning is retried mid-flight
OpenSpec
OpenSpec 30
Structural parent
Vedanta#30