Skip to content

feat(tools): #174 OData ALC probe — design, plan, and Phase 1 tooling#230

Merged
SamErde merged 9 commits into
mainfrom
docs/issue174-odata-probe-spec
Jun 1, 2026
Merged

feat(tools): #174 OData ALC probe — design, plan, and Phase 1 tooling#230
SamErde merged 9 commits into
mainfrom
docs/issue174-odata-probe-spec

Conversation

@SamErde
Copy link
Copy Markdown
Owner

@SamErde SamErde commented Jun 1, 2026

Summary

Phase 1 of the #174 OData adjudication workstream: the runtime ALC-ownership probe tooling, plus the design spec and implementation plan it was built from. The actual #174 resolution is Phase 2 (evidence-gated, separate).

Design + plan (docs)

  • docs/superpowers/specs/2026-06-01-issue174-odata-alc-probe-design.md — the design (probe extension, runbook, workaround-first/preload-last adjudication framework).
  • docs/superpowers/plans/2026-06-01-issue174-odata-alc-probe.md — the task-by-task implementation plan.

Tooling (Phase 1)

  • Component A — new tools/Get-DLLPickleLoadedTrackedAssembly.ps1: in-session dump of loaded assemblies whose name is in trackedAssemblies, with version + ALC (optional -NameLike post-filter).
  • Component Btools/Get-DLLPickleRuntimeAssemblySnapshot.ps1 refactored to source its filter from trackedAssemblies via the shared helper + a new -PolicyPath param (so it now captures Microsoft.OData.*/Microsoft.Spatial), replacing the hardcoded regex.
  • tests/Unit/RuntimeAssemblyProbe.Tests.ps1 — 5 unit tests for A and B.
  • docs/Architecture.md §4 — component map lists the new tool.

Validation

  • Invoke-Build Analyze,Test4 tasks, 0 errors (1 warning = the existing InvalidLibrary.dll negative-test fixture); analyzer clean on src/tests/tools.
  • Local smoke: after Import-DPLibrary, the helper reports the 9 preloaded MSAL/IdentityModel assemblies (Default ALC) — end-to-end confirmation.

No bundle paths touched (tools//tests//docs/), so no PSGallery release on merge.

🤖 Generated with Claude Code

Design for: trackedAssemblies-driven probe filter (captures OData ALC ownership),
an in-session dump helper, a maintainer-run live-probe runbook (synthetic CI +
manual live; Stage 2b auth deferred), and a workaround-first / preload-last
adjudication framework for #174. Phase 1 (tooling + runbook + framework) is
implementable now; the actual #174 resolution is Phase 2, gated on the probe
evidence.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings June 1, 2026 16:44
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Jun 1, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 1, 2026

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@codacy-production
Copy link
Copy Markdown
Contributor

codacy-production Bot commented Jun 1, 2026

Up to standards ✅

🟢 Issues 1 minor

Results:
1 new issue

Category Results
CodeStyle 1 minor

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a design spec for the next workstream to gather runtime AssemblyLoadContext (ALC) evidence for the Microsoft.OData.* stack (focused on Az.Storage + ExchangeOnlineManagement) and to define an evidence-gated adjudication framework for issue #174.

Changes:

  • Documents a Phase 1 plan to extend the existing runtime probe to use build/dependency-policy.json’s trackedAssemblies (capturing OData assemblies).
  • Specifies an in-session “loaded tracked assemblies” dump helper plus a maintainer-run live-probe runbook.
  • Defines a workaround-first / preload-last decision framework for resolving #174 in a follow-up phase.

Comment thread docs/superpowers/specs/2026-06-01-issue174-odata-alc-probe-design.md Outdated
SamErde and others added 2 commits June 1, 2026 14:34
…A & B)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… fragile)

Maintainer's live test showed a multi-line function does not paste cleanly into interactive pwsh (ParserError). Component C now builds Component A first and the runbook calls the script via a one-line 'probe' helper; also notes the Constrained Language Mode dependency for the AppDomain/ALC APIs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings June 1, 2026 18:42
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.

Comment thread docs/superpowers/specs/2026-06-01-issue174-odata-alc-probe-design.md Outdated
SamErde and others added 5 commits June 1, 2026 14:49
Task-by-task TDD plan for Component A (Get-DLLPickleLoadedTrackedAssembly), Component B (refactor snapshot tool to source filter from trackedAssemblies), unit tests, architecture map update, and the live-probe runbook handoff. Phase 2 (#174 resolution) out of scope.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… scripts)

The refactor's .DESCRIPTION had an em dash, which forced a UTF-8 BOM to satisfy PSUseBOMForUnicodeEncodedFile; the other tools/ scripts are ASCII + no-BOM. Normalize the em dash to '-' so the file stays ASCII/no-BOM and consistent.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings June 1, 2026 19:17
@SamErde SamErde changed the title docs(spec): #174 OData ALC probe & adjudication design feat(tools): #174 OData ALC probe — design, plan, and Phase 1 tooling Jun 1, 2026
@github-actions github-actions Bot added the Tests label Jun 1, 2026
@SamErde
Copy link
Copy Markdown
Owner Author

SamErde commented Jun 1, 2026

@codex review

…no hard-coded runbook path)

- Component B PolicyPath default is repo-root-relative via $PSScriptRoot (matches the shipped implementation), not CWD-relative.
- Runbook resolves $RepoRoot via 'git rev-parse --show-toplevel' instead of a hard-coded user path.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

tools/Get-DLLPickleRuntimeAssemblySnapshot.ps1:71

  • pwsh is invoked as a child process, but the script doesn’t check $LASTEXITCODE and will return an empty array if the child terminates before producing JSON (e.g., missing helper/policy path). That can silently mask failures and look like “no tracked assemblies loaded”. Consider throwing on non-zero exit, and wrapping JSON parsing with a clearer error so probe failures are visible to the caller.
    $Raw = & pwsh @ChildArguments
    $Json = ($Raw | Out-String).Trim()
    if ([string]::IsNullOrWhiteSpace($Json)) { return @() }
    @($Json | ConvertFrom-Json)

@SamErde SamErde merged commit 8d860e4 into main Jun 1, 2026
18 checks passed
@SamErde SamErde deleted the docs/issue174-odata-probe-spec branch June 1, 2026 19:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation Tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants