Goal
Standardize all Identity capability names across the repository to use the canonical namespace:
- Canonical:
IdLE.Identity.*
- Legacy (deprecated):
Identity.*
The repository currently uses a mix of Identity.* and IdLE.Entitlement.*. This issue makes Identity consistent with the existing IdLE.* namespacing approach.
Motivation
- Avoid capability naming drift between docs, examples, tests, and providers.
- Ensure plan-time validation behaves consistently (same names everywhere).
- Reduce cognitive load for contributors and for provider authors.
Scope
In scope
- Update all occurrences of
Identity.* capabilities in:
- Core capability validation / inference helpers (if present)
- Built-in step metadata (
RequiresCapabilities)
- Mock provider capability advertisement
- Provider contract tests and other unit tests
- Example workflow configurations (demo runner workflows)
- Documentation that references capability names
Out of scope
- Implementing new providers or new steps beyond capability renames.
- Changing the semantics of capabilities (this is a rename/standardization only).
Decisions
1) Canonical naming rule
All Identity capabilities MUST be named under the IdLE. namespace.
- ✅ Canonical:
IdLE.Identity.Read
- ❌ Not allowed for new work:
Identity.Read
2) Compatibility policy
Until v1.0.0, legacy Identity.* capability names are treated as deprecated aliases for IdLE.Identity.*.
- Engine/plan validation SHOULD accept legacy names when encountered.
- A warning event MUST be emitted when a legacy name is used (so users see it and can migrate).
- Documentation and examples MUST use canonical names only.
Rationale: This avoids breaking existing workflow configs immediately while enabling #46 and future work to rely on canonical names.
Canonical capability map (old → new)
Update capability strings as follows (exact matches):
| Legacy name |
Canonical name |
Identity.Read |
IdLE.Identity.Read |
Identity.Disable |
IdLE.Identity.Disable |
Identity.Enable |
IdLE.Identity.Enable |
Identity.Create |
IdLE.Identity.Create |
Identity.Delete |
IdLE.Identity.Delete |
Identity.Move |
IdLE.Identity.Move |
Identity.List |
IdLE.Identity.List |
Identity.Attribute.Ensure |
IdLE.Identity.Attribute.Ensure |
Note: If the repository currently uses an alternative attribute capability name (e.g., Identity.EnsureAttribute), it MUST be normalized to the canonical form above as part of this issue.
Implementation notes
Where to implement alias support (if needed)
If a central normalization point exists (recommended), add a helper that:
- Receives a list of capability strings
- Normalizes them to canonical form
- Returns the canonical list
- Emits a warning event when legacy names are seen
Suggested behavior:
- Normalization is applied both to:
- Provider-advertised capabilities
- Step
RequiresCapabilities
This ensures plan-time checks do not fail due to legacy naming.
Do not change semantics
This issue is renaming/standardization only:
- Do not change what the capability means
- Do not introduce new side effects
Tasks
Code
Tests
Docs / Examples
Acceptance criteria
- All repository code and examples use canonical
IdLE.Identity.* capability names.
- All tests are green.
- PSScriptAnalyzer (or repo linting) remains green.
- Legacy
Identity.* names are accepted until v1.0.0 AND produce a warning event.
- No documentation/examples reference
Identity.* after this change.
Related issues
Notes for reviewers
- This issue is intentionally cross-cutting; keep PRs small by grouping changes by area (e.g., core + tests, then docs + examples) or by doing one cohesive PR if CI time is acceptable.
- Ensure no capability strings remain in the legacy namespace.
Goal
Standardize all Identity capability names across the repository to use the canonical namespace:
IdLE.Identity.*Identity.*The repository currently uses a mix of
Identity.*andIdLE.Entitlement.*. This issue makes Identity consistent with the existingIdLE.*namespacing approach.Motivation
Scope
In scope
Identity.*capabilities in:RequiresCapabilities)Out of scope
Decisions
1) Canonical naming rule
All Identity capabilities MUST be named under the
IdLE.namespace.IdLE.Identity.ReadIdentity.Read2) Compatibility policy
Until
v1.0.0, legacyIdentity.*capability names are treated as deprecated aliases forIdLE.Identity.*.Canonical capability map (old → new)
Update capability strings as follows (exact matches):
Identity.ReadIdLE.Identity.ReadIdentity.DisableIdLE.Identity.DisableIdentity.EnableIdLE.Identity.EnableIdentity.CreateIdLE.Identity.CreateIdentity.DeleteIdLE.Identity.DeleteIdentity.MoveIdLE.Identity.MoveIdentity.ListIdLE.Identity.ListIdentity.Attribute.EnsureIdLE.Identity.Attribute.EnsureImplementation notes
Where to implement alias support (if needed)
If a central normalization point exists (recommended), add a helper that:
Suggested behavior:
RequiresCapabilitiesThis ensures plan-time checks do not fail due to legacy naming.
Do not change semantics
This issue is renaming/standardization only:
Tasks
Code
Identity.*occurrences in core/steps/providers/tests/examples withIdLE.Identity.*.RequiresCapabilities.Tests
Docs / Examples
Acceptance criteria
IdLE.Identity.*capability names.Identity.*names are accepted untilv1.0.0AND produce a warning event.Identity.*after this change.Related issues
IdLE.Identity.*capability names.Notes for reviewers