Deploy identity drift reconciliation
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s

This commit is contained in:
tegwick 2026-07-29 23:41:42 +02:00
parent 1d24d671bc
commit 12ac63f32c
4 changed files with 36 additions and 3 deletions

View file

@ -50,7 +50,7 @@
| task | NK-WP-0022-T07 | wait | — | workplans/NK-WP-0022-railiance01-identity-cutover-and-coulombcore-retirement.md | | task | NK-WP-0022-T07 | wait | — | workplans/NK-WP-0022-railiance01-identity-cutover-and-coulombcore-retirement.md |
| task | NK-WP-0022-T08 | wait | — | workplans/NK-WP-0022-railiance01-identity-cutover-and-coulombcore-retirement.md | | task | NK-WP-0022-T08 | wait | — | workplans/NK-WP-0022-railiance01-identity-cutover-and-coulombcore-retirement.md |
| task | NK-WP-0023-T01 | done | — | workplans/NK-WP-0023-user-engine-portal-platform-integration.md | | task | NK-WP-0023-T01 | done | — | workplans/NK-WP-0023-user-engine-portal-platform-integration.md |
| task | NK-WP-0023-T02 | progress | — | workplans/NK-WP-0023-user-engine-portal-platform-integration.md | | task | NK-WP-0023-T02 | done | — | workplans/NK-WP-0023-user-engine-portal-platform-integration.md |
| task | NK-WP-0023-T03 | done | — | workplans/NK-WP-0023-user-engine-portal-platform-integration.md | | task | NK-WP-0023-T03 | done | — | workplans/NK-WP-0023-user-engine-portal-platform-integration.md |
| task | NK-WP-0023-T04 | wait | — | workplans/NK-WP-0023-user-engine-portal-platform-integration.md | | task | NK-WP-0023-T04 | wait | — | workplans/NK-WP-0023-user-engine-portal-platform-integration.md |
| task | NK-WP-0023-T05 | progress | — | workplans/NK-WP-0023-user-engine-portal-platform-integration.md | | task | NK-WP-0023-T05 | progress | — | workplans/NK-WP-0023-user-engine-portal-platform-integration.md |

View file

@ -85,3 +85,21 @@ Enterprise implementation begins only when a named tenant supplies:
- test tenant and rollback owner. - test tenant and rollback owner.
Until then, local LLDAP plus KeyCape remains the managed identity path. Until then, local LLDAP plus KeyCape remains the managed identity path.
## Provider reconciliation contract
The local LLDAP adapter establishes the provider-neutral operational pattern
that later enterprise adapters must preserve:
- `drift` performs a read-only comparison of desired identity, tenant groups,
roles, and lifecycle status;
- `reconcile` converges only adapter-owned attributes and reports every change;
- ambiguous email/subject conflicts fail for explicit repair instead of
silently relinking an identity;
- newly created identities are compensated when initial group projection
cannot complete;
- deprovisioning is replay-safe, and transient transport failures may be
retried only with the caller's required idempotency key.
SCIM and directory-synchronization adapters should implement this same seam
instead of adding provider-specific repair behavior to user-engine.

View file

@ -23,7 +23,7 @@ spec:
seccompProfile: {type: RuntimeDefault} seccompProfile: {type: RuntimeDefault}
containers: containers:
- name: provisioner - name: provisioner
image: identity-provisioner:80adc31 image: identity-provisioner:12cdef5
imagePullPolicy: Never imagePullPolicy: Never
ports: [{name: http, containerPort: 8080}] ports: [{name: http, containerPort: 8080}]
env: env:

View file

@ -41,7 +41,7 @@ now so later enterprise directories do not require a domain rewrite.
```task ```task
id: NK-WP-0023-T02 id: NK-WP-0023-T02
status: progress status: done
priority: high priority: high
state_hub_task_id: "89fe51aa-f351-4763-a358-3eec79f28350" state_hub_task_id: "89fe51aa-f351-4763-a358-3eec79f28350"
``` ```
@ -61,6 +61,16 @@ only user-engine to call it and only LLDAP/DNS egress. A live create/replay/dele
conformance run returned `resumed: false`, then `resumed: true`, and removed the conformance run returned `resumed: false`, then `resumed: true`, and removed the
disposable subject. Reconciliation, compensation, and drift reporting remain. disposable subject. Reconciliation, compensation, and drift reporting remain.
2026-07-29 completion: image `identity-provisioner:12cdef5` adds read-only
drift inspection, active convergence of adapter-owned tenant groups and
suspension state, replay-safe deprovisioning, and best-effort compensation
when initial group projection fails. User-engine exposes these operations
through its provider-neutral port and retries one transient failure only under
the mandatory idempotency key. A disposable live probe proved clean initial
state, detected induced suspension drift, reported both the unexpected group
and status mismatch, removed the drift, returned to `in_sync`, deprovisioned,
and accepted the repeated deletion. The probe identity was removed.
## T03 - Integrate KeyCape login, claims, and MFA handoffs ## T03 - Integrate KeyCape login, claims, and MFA handoffs
```task ```task
@ -188,6 +198,11 @@ passed. The test also detected and corrected newline handling for mounted
Kubernetes secrets before any identity was created. The broader negative, Kubernetes secrets before any identity was created. The broader negative,
outage, suspension, restore, and browser/MFA matrix remains. outage, suspension, restore, and browser/MFA matrix remains.
2026-07-29 increment: provider-path conformance now also covers
machine-readable drift detection, automated repair, compensation semantics,
transient retry, and replay-safe deletion. The broader browser, authorization,
provider-outage, and restore matrix remains open.
## T07 - Complete KEY-WP-0004 through the reusable portal ## T07 - Complete KEY-WP-0004 through the reusable portal
```task ```task