No reviewers
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.
Dependencies
No dependencies set
Reference
Ting/Vedanta!27
Loading…
Reference in a new issue
No description provided.
Delete branch "tango/22-authenticate-lifecycle-commands"
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?
Completes Session #20's leaf set — this PR is the one interface-compatibility review OpenSpec 20 declares ("one PR carries six isolated Deliverables for a single interface-compatibility verdict"), grown on the branch that started as #22's completion.
What the added commits do
kanidm: bounded credential mutations (#8)— the narrow mutation adapter Vedanta owns (mint with explicit integer expiry returning value/token-ID/expiry/subject once; successor rotation that never deletes — caller-selected grace; exact token-ID invalidation with the observed-before distinction; terminal unrelated-subject and denial semantics). Wire shapes verified against kanidm v1.11.1 upstream source; the live narrow-manager proof stays flake-ops#123 per #8's delivery class. 10 capture-double tests.operations: the durable journal (#21)— fsync'd write-ahead, one-operation-one-mutation, restart-safe replay, torn-tail tolerated / torn-middle fatal, metadata-only by type construction.module.nixgainsStateDirectory=vedanta+ fixed-pathVEDANTA_JOURNAL. 8 tests.reconcile: uncertain delivery meets committed lease state (#23)— matching lease recovers the ack with nothing delivered; missing/mismatched orphans are invalidated by exact journaled token ID with the reason kept; compensation forces fresh operation IDs via the journal's replay guard; refused invalidations reported, never swallowed. 6 tests.openbao-plugin: authorize in order, commit after mint, wrap once (#12)— new workspace membervedanta-openbao-plugin: the thirteen-stage ordered authorization table (first failure names its stage), the full private-contract command build + Ed25519 signing, and the issue flow where a transport failure or refusal yields neither a committed lease nor credential material, a lease that cannot commit never wraps, and the credential exists in exactly one scope — mint result into one-shot five-minute wrapper. The queen authorizes; only the drone receives. 23 tests.lease: the non-issue state machine (#24)— metadata-only ReadLease; RotateLease re-runs the authorization table against the current projection and mints a distinct successor generation with the predecessor kept for grace; RevokeLease savesrevocation_pendingbefore any dispatch (deny use immediately) and completes only when every outstanding token — current and still-valid predecessors — invalidates. Transitions never recover an old secret: there is no path that could.Delivery shape
Per OpenSpec 20's delivery decomposition (task 5.7): six isolated Deliverables, one coherent PR, one reviewer verdict over the public lease contract, private command ABI, mutation adapter, and lost-response semantics.
just checkgates every commit; the workspace-wide gate (cargo clippy/test --workspace) is what actually exercises the new member — the root-only gate silently skips it, which is worth knowing for future multi-crate work here.Verification (run, not reasoned)
nix developgate green at every commit: fmt stable, clippy-D warningsclean, full workspace suite.nix build .#defaultgreen with the workspace present — the sandboxed package build is unchanged.Still open (not this PR's to decide)
unsupported_actionandpredecessor_mismatcherror classes vs the canonical 0.1.4 table ("a ruling may fold them") — unchanged.Refs #20
Closes #22
Closes #8
Closes #21
Closes #23
Closes #12
Closes #24
2292559ce1to9750b29187WIP: authenticate and validate private lifecycle commandsto private-api: complete #22 — lock the wire-repair dep, cover the null queen-evidence axisprivate-api: complete #22 — lock the wire-repair dep, cover the null queen-evidence axisto session 20: the private lease contract end to end — validate, journal, mutate, reconcile, issue, rotate/revoke (#22 #8 #21 #23 #12 #24)LGTM