Repository navigation
core: enforce identifier namespaces for step types and capabilities (#322) - #344
Conversation
…322) - Reserve IdLE.* for first-party modules of the loaded IdLE bundle; extensions use <Owner>.IdLE.* (ReservedNamespace, InvalidExtensionNamespace) - Fixed list of IdLE-defined capabilities in Data/ReservedNamespaces.psd1; unknown IdLE.* capabilities fail planning (UnknownCapability) - Validate provider capabilities on every plan build - Discover step packs via manifest marker only (no name-based fallback) - Providers.StepRegistry/StepMetadata only supplement step packs (DuplicateStepHandler, DuplicateStepTypeMetadata) - Remove the IdLE.Step.AcquireAuthSession special case from execution - Rename test step types/capabilities to Test.IdLE.* / Custom.IdLE.* - Document rules in capabilities.md, steps.md, extensibility.md, security.md, AGENTS.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Verdict: PASS The namespace enforcement is consistent with AGENTS.md 4.2.1 and the trust boundaries. First-party status comes from the bundle path rather than the module name, and host registries can no longer replace step pack handlers. Tests and docs are included. Findings: none (no CRITICAL, MAJOR or MINOR). I read the core private helpers and the |
Code Coverage Report
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ffc26b3981
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Verdict: PASS — No critical issues found. The namespace rules are enforced consistently, and the tests and docs are updated.
I reviewed this from the diff plus a spot-check of the namespace code and capability list. I did not run the Pester suite. |
…Name>) Co-authored-by: Matthias Fleschütz <13959569+blindzero@users.noreply.github.com> Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Co-authored-by: Matthias Fleschütz <13959569+blindzero@users.noreply.github.com>
|
Verdict: PASS Namespace enforcement is centralized in Findings:
Limits of this review: I read the core namespace helpers, the data file and the step registry. I did not read every test file or run the Pester suite. |
Closes #322
Summary
Enforces a single namespace scheme for step types and capabilities:
IdLE.Step.*<Owner>.IdLE.Step.<...>src/IdLE.Core/Data/ReservedNamespaces.psd1(+ deprecated aliasIdLE.Mailbox.Read)<Owner>.IdLE.<Domain>.<Verb>Error codes:
ReservedNamespace,InvalidExtensionNamespace,UnknownCapability(messages include a corrected example).Changes
Data/ReservedNamespaces.psd1holds the reserved prefix, extension patterns, defined capabilities and deprecated aliases (ConvertTo-IdleNormalizedCapabilitynow reads aliases from there).ModuleBaseis a folder of the loadedIdLEbundle (same rule as the mixed-version guard). Module names alone never grant first-party status.IdLE.Steps.*fallback is removed.Providers.StepRegistrycan no longer replace a step pack step type, includingIdLE.Step.EmitEvent(DuplicateStepHandler).Providers.StepMetadataalready behaved this way (DuplicateStepTypeMetadata).IdLE.Step.AcquireAuthSession: the execution-time special case inInvoke-IdlePlanObjectis removed.Breaking changes
IdLE.*step types, non-<Owner>.IdLE.*step types/capabilities and unknownIdLE.*capabilities are now hard errors.IdLE.Steps.*without thePrivateData.IdLEmarker are no longer discovered.Providers.StepRegistryentries for step pack step types are rejected.Tests
tests/Core/IdentifierNamespaces.Tests.ps1: rule matrix, provider capabilities, host extension points, first-party detection, and a sync check betweenReservedNamespaces.psd1anddocs/reference/capabilities.md.StepPackHandlerRegistration.Tests.ps1: impostor module, module without marker, duplicates, unknown capability, reserved/invalid namespaces.Test.IdLE.*/Custom.IdLE.*; tests that replacedEmitEventnow use the real step orTest.IdLE.Step.Emit; the two tests for the removedAcquireAuthSessionspecial case are dropped.Results: Pester 929 passed / 0 failed; PSScriptAnalyzer 0 errors (17 pre-existing warnings, unchanged from
main); step reference generator leavesdocs/referenceunchanged.Docs
docs/reference/capabilities.md: naming rules; adds the missingIdLE.Identity.RevokeSessionsandIdLE.Mailbox.Permissions.Ensure.docs/extend/steps.md: new "Step type names" section; step pack rules updated.docs/extend/extensibility.md,docs/about/security.md(trust levels),AGENTS.md4.2.1.🤖 Generated with Claude Code