Skip to content

fix(shared/apm): drop stale STATUS banner; recompile lock files to v1.5.0#1026

Merged
danielmeppiel merged 1 commit intomainfrom
cleanup/shared-apm-stale-banner
Apr 28, 2026
Merged

fix(shared/apm): drop stale STATUS banner; recompile lock files to v1.5.0#1026
danielmeppiel merged 1 commit intomainfrom
cleanup/shared-apm-stale-banner

Conversation

@danielmeppiel
Copy link
Copy Markdown
Collaborator

Why

apm-action v1.5.0 shipped (#984microsoft/apm-action#30) with the bundles-file: input that #982's matrix fan-out depends on. PR #982 merged correctly in source but left two artifacts stale:

  1. shared/apm.md carried a STATUS: blocked docstring saying "this workflow does not produce a working agent run; the diff is for design review only." The body has since been wired to v1.5.0 + bundles-file: for real, but the banner was never updated. Anyone reading head -20 shared/apm.md today gets misleading info.
  2. pr-review-panel.lock.yml + triage-panel.lock.yml were not regenerated, so they still SHA-pin microsoft/apm-action@v1.4.2 with the old single-bundle: restore. Runtime executes v1.4.2 logic against a workflow source that says v1.5.0. This is a real drift, not cosmetic.

What this PR does

  • Drops the stale STATUS banner in shared/apm.md.
  • Adds a 2-line version header so vendored copies are self-diagnosing:
    # Source of truth: https://github.com/microsoft/apm/blob/main/.github/workflows/shared/apm.md
    # apm-action pin:  microsoft/apm-action@v1.5.0
    
    Anyone who head -3s the file now knows whether their copy is current.
  • Recompiles the lock files via gh aw compile. Both pr-review-panel.lock.yml and triage-panel.lock.yml now pin apm-action@454b8a1d (v1.5.0) and use the new matrix-aware restore (apm-prep job, multi-bundle download, bundles-file build, validation against expected matrix). agentics-maintenance.yml got SHA pin tightening only — no behavior change.
  • Adds a docs callout to integrations/gh-aw.md ("Vendor the canonical shared/apm.md") explaining shared/apm.md is a local file with two competing copies in the wild, with a curl command to fetch the canonical microsoft/apm version. This is the user-facing surface we own regardless of what gh-aw does upstream.

Why now

The next gh-aw panel run on a labelled PR/issue would have used the v1.4.2 SHA (because that's what the lock file pinned), masking the v1.5.0 capabilities #982 was supposed to enable. Catching this BEFORE we tell the world about v1.5.0 / before any external user finds the apparent contradiction.

Validation

  • gh aw compile clean (1 unrelated warning about push-to-pull-request-branch target).
  • Both lock files now reference microsoft/apm-action@454b8a1d279376a47df8bb8d525ec076ca0fcef7 # v1.5.0.
  • The Restore APM packages (all bundles) step in both lock files now uses bundles-file: /tmp/gh-aw/apm-bundle-list.txt instead of the old single bundle: parameter.
  • Smoke test will land when this PR's own checks invoke pr-review-panel.lock.yml against itself (eats own dogfood).

Out of scope

  • gh-aw upstream coordination (their copy at github/gh-aw/.github/workflows/shared/apm.md is still pinned to v1.4.2 with the deprecated dependencies: shape). Tracking separately — talk-first, then issue.

….5.0

The apps[] + matrix fan-out PR (#982) merged with a stale docstring header
('STATUS: blocked... does not produce a working agent run') and lock files
that still pinned microsoft/apm-action@v1.4.2 with the old single-bundle
restore path. apm-action v1.5.0 has shipped with the bundles-file: input
the shared workflow now relies on; the workflow IS production-ready.

Changes:
- shared/apm.md: drop obsolete STATUS banner; replace with version header
  pointing at canonical source + apm-action pin so vendored copies can
  self-check freshness via head -3
- pr-review-panel.lock.yml + triage-panel.lock.yml: regenerated with
  gh aw compile -- now pin microsoft/apm-action@v1.5.0 (SHA 454b8a1d)
  and use bundles-file: matrix-aware restore path that #982 designed
- agentics-maintenance.yml: SHA-pin tightening for github/gh-aw-actions
  (no behavior change)
- docs/integrations/gh-aw.md: add 'Vendor the canonical shared/apm.md'
  callout explaining the local-file model and how to fetch the
  current version, with comparison cue for vendored copies

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings April 28, 2026 21:16
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

This PR updates the gh-aw integration surface to reflect microsoft/apm-action@v1.5.0 support (notably bundles-file:), removes a stale “blocked” banner from the shared workflow, and regenerates gh-aw compiled lock workflows to pin the new action SHA.

Changes:

  • Remove the stale STATUS banner in .github/workflows/shared/apm.md and add a short “source of truth / pin” header.
  • Regenerate pr-review-panel.lock.yml and triage-panel.lock.yml to pin microsoft/apm-action@v1.5.0 and switch to multi-bundle restore via bundles-file:.
  • Add a docs callout in docs/src/content/docs/integrations/gh-aw.md explaining how to vendor the canonical shared/apm.md, plus tighten a SHA pin in agentics-maintenance.yml and update .github/aw/actions-lock.json.
Show a summary per file
File Description
docs/src/content/docs/integrations/gh-aw.md Adds guidance to vendor the canonical shared/apm.md and verify its header pins.
.github/workflows/shared/apm.md Removes stale “blocked” banner; adds “source of truth” + action pin header and updates documentation link.
.github/workflows/pr-review-panel.lock.yml Regenerated lock workflow to use apm-action@v1.5.0 and multi-bundle restore; introduces apm-prep matrix.
.github/workflows/triage-panel.lock.yml Same as above for the triage panel workflow.
.github/workflows/agentics-maintenance.yml Tightens setup-cli action reference to a SHA pin.
.github/aw/actions-lock.json Adds/updates action entries to support the new pins used by regenerated lock workflows.

Copilot's findings

  • Files reviewed: 6/6 changed files
  • Comments generated: 2

AW_APM_LEGACY_OWNER: ${{ github.aw.import-inputs.owner }}
AW_APM_LEGACY_PRIVATE_KEY: ${{ github.aw.import-inputs.private-key }}
AW_APM_LEGACY_REPOS: ${{ github.aw.import-inputs.repositories }}
AW_APM_PACKAGES: "[microsoft/apm#main]"
Copy link

Copilot AI Apr 28, 2026

Choose a reason for hiding this comment

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

AW_APM_PACKAGES is consumed as JSON via --argjson packages "$packages_json", but the value here ([microsoft/apm#main]) is not valid JSON and will cause the jq compute step to fail. Provide a valid JSON array string (e.g. ["microsoft/apm#main"]) or use the same ${{ github.aw.import-inputs.packages }} source as the canonical shared/apm.md.

Suggested change
AW_APM_PACKAGES: "[microsoft/apm#main]"
AW_APM_PACKAGES: "[\"microsoft/apm#main\"]"

Copilot uses AI. Check for mistakes.
AW_APM_LEGACY_OWNER: ${{ github.aw.import-inputs.owner }}
AW_APM_LEGACY_PRIVATE_KEY: ${{ github.aw.import-inputs.private-key }}
AW_APM_LEGACY_REPOS: ${{ github.aw.import-inputs.repositories }}
AW_APM_PACKAGES: "[microsoft/apm#main]"
Copy link

Copilot AI Apr 28, 2026

Choose a reason for hiding this comment

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

AW_APM_PACKAGES is passed into jq with --argjson, so it must be valid JSON. The current value ([microsoft/apm#main]) is invalid JSON and will break apm-prep at runtime. Use a JSON array string (e.g. ["microsoft/apm#main"]) or wire this to ${{ github.aw.import-inputs.packages }} as in .github/workflows/shared/apm.md.

Suggested change
AW_APM_PACKAGES: "[microsoft/apm#main]"
AW_APM_PACKAGES: "[\"microsoft/apm#main\"]"

Copilot uses AI. Check for mistakes.
@danielmeppiel danielmeppiel merged commit 8c1491c into main Apr 28, 2026
21 checks passed
@danielmeppiel danielmeppiel deleted the cleanup/shared-apm-stale-banner branch April 28, 2026 21:44
danielmeppiel added a commit that referenced this pull request Apr 29, 2026
PR #982 added a Compute APM credential-group matrix step that feeds
`${{ github.aw.import-inputs.packages }}` to `jq --argjson`. gh-aw
substitutes that template at compile time using Go's default slice
formatter, which emits `[microsoft/apm#main]` (space-separated, no
quotes) instead of valid JSON `["microsoft/apm#main"]`. jq rejects
the malformed input and apm-prep fails, blocking every PR run of the
review panel and every triage-panel labelled issue.

The bug shipped latent in #982 (locks not regenerated) and surfaced in
#1026 when the locks were recompiled. Pinning gh-aw does not help: the
same compiler version (v0.68.3) produced both shapes -- the difference
was the new compute step that started routing the substituted value
through `--argjson`.

Fix: add a small Bash+Python repair_string_array helper in shared/apm.md
that detects malformed Go-slice strings and rewrites them as JSON before
they reach jq. Already-valid JSON and 'null' pass through untouched.
apps[] (object arrays) is not repairable this way -- consumers must use
the legacy single-app inputs until upstream gh-aw exposes a JSON-encoding
helper for import-inputs (paper-cut filed upstream).

- shared/apm.md: add repair_string_array helper for AW_APM_PACKAGES
- pr-review-panel.lock.yml + triage-panel.lock.yml: recompile

Verified locally with the live shared/apm.md run-block against four
inputs ([single], [multi space-separated], null, already-valid JSON);
all produce a correctly-typed matrix.group.packages array.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
danielmeppiel pushed a commit that referenced this pull request Apr 29, 2026
Promotes [Unreleased] -> [0.11.0] - 2026-04-29 and bumps
pyproject.toml + uv.lock to 0.11.0.

Version-bump rationale: 0.11.0 (minor bump) chosen over 0.10.1 because
this release ships one BREAKING removal (`apm marketplace build` -> exits 2,
use `apm pack`) plus several net-new features (Dev Container Feature,
Codex project-scoped MCP, `marketplace:` block in apm.yml, `apm pack`
unification, multi-org `apps[]`). Strict semver in 0.x: minor for
features-with-break, patch only for bugfixes.

Milestone admin (done out-of-band):
- Renamed milestone #8 `0.10.1` -> `0.11.0`
- Created milestone #9 `0.12.0` as next-up bucket
- Moved 43 open items (42 issues + 1 open PR #999) from `0.11.0` -> `0.12.0`
- 6 closed items stay in `0.11.0`

PRs shipping in 0.11.0 (22 commits since v0.10.0):

User-facing features:
- #1042/#722 `apm pack` unifies bundle + marketplace.json
                   (BREAKING: `apm marketplace build` removed)
- #1038       `marketplace:` block in apm.yml + `apm marketplace migrate`
- #803  /#502 Codex project-scoped MCP (`.codex/config.toml`) + user-scope primitives
- #861        Dev Container Feature `ghcr.io/microsoft/apm/apm-cli`
- #982/#984   shared/apm.md `apps:` array for cross-org private packages
- #820        `target:` in apm.yml validates at parse time
- #1032       `apm marketplace add` honors manifest.name (Claude Code parity)
- #1000/#998/#994 unified `--policy` / `--policy-source` accepted forms

User-facing fixes:
- #1015 ADO Entra ID auth + `apm install --update` pre-flight abort
- #1019/#1020 GEMINI.md only created when target requested
- #1008 marketplace producer respects GITHUB_HOST + multi-host URL forms
- #1018 POSIX paths in auto-discovery output (Windows compat)
- #996  drop stray 'specify' from generated file footer

Maintainer tooling:
- #1043 NOTICE.md per CELA template
- #1045/#1044 NOTICE drift gate + license-policy gate in CI
- #1033 shared/apm.md `[a b]` import-input repair (gh-aw#29076 paper-cut)
- #1030 panel workflows skip-don't-fail on unmatched labels; gh-aw v0.71.1
- #1026 shared/apm.md recompiled to apm-action v1.5.0 + bundles-file
- #1022 review-panel: true fan-out + binary verdict + label automation
- #918  complexity audit + benchmarks suite
- #1002 CodeQL clear-text-storage false-positive resolved (token -> placeholder)

Files changed:
- pyproject.toml: 0.10.0 -> 0.11.0
- uv.lock:        regenerated (version field only)
- CHANGELOG.md:   [Unreleased] promoted to [0.11.0] - 2026-04-29

NOTICE drift check passes against the bumped lockfile.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@danielmeppiel danielmeppiel added this to the 0.11.0 milestone Apr 29, 2026
danielmeppiel pushed a commit that referenced this pull request Apr 29, 2026
Promotes [Unreleased] -> [0.11.0] - 2026-04-29 and bumps
pyproject.toml + uv.lock to 0.11.0.

Version-bump rationale: 0.11.0 (minor bump) chosen over 0.10.1 because
this release ships one BREAKING removal (`apm marketplace build` -> exits 2,
use `apm pack`) plus several net-new features (Dev Container Feature,
Codex project-scoped MCP, `marketplace:` block in apm.yml, `apm pack`
unification, multi-org `apps[]`). Strict semver in 0.x: minor for
features-with-break, patch only for bugfixes.

Milestone admin (done out-of-band):
- Renamed milestone #8 `0.10.1` -> `0.11.0`
- Created milestone #9 `0.12.0` as next-up bucket
- Moved 43 open items (42 issues + 1 open PR #999) from `0.11.0` -> `0.12.0`
- 6 closed items stay in `0.11.0`

PRs shipping in 0.11.0 (22 commits since v0.10.0):

User-facing features:
- #1042/#722 `apm pack` unifies bundle + marketplace.json
                   (BREAKING: `apm marketplace build` removed)
- #1038       `marketplace:` block in apm.yml + `apm marketplace migrate`
- #803  /#502 Codex project-scoped MCP (`.codex/config.toml`) + user-scope primitives
- #861        Dev Container Feature `ghcr.io/microsoft/apm/apm-cli`
- #982/#984   shared/apm.md `apps:` array for cross-org private packages
- #820        `target:` in apm.yml validates at parse time
- #1032       `apm marketplace add` honors manifest.name (Claude Code parity)
- #1000/#998/#994 unified `--policy` / `--policy-source` accepted forms

User-facing fixes:
- #1015 ADO Entra ID auth + `apm install --update` pre-flight abort
- #1019/#1020 GEMINI.md only created when target requested
- #1008 marketplace producer respects GITHUB_HOST + multi-host URL forms
- #1018 POSIX paths in auto-discovery output (Windows compat)
- #996  drop stray 'specify' from generated file footer

Maintainer tooling:
- #1043 NOTICE.md per CELA template
- #1045/#1044 NOTICE drift gate + license-policy gate in CI
- #1033 shared/apm.md `[a b]` import-input repair (gh-aw#29076 paper-cut)
- #1030 panel workflows skip-don't-fail on unmatched labels; gh-aw v0.71.1
- #1026 shared/apm.md recompiled to apm-action v1.5.0 + bundles-file
- #1022 review-panel: true fan-out + binary verdict + label automation
- #918  complexity audit + benchmarks suite
- #1002 CodeQL clear-text-storage false-positive resolved (token -> placeholder)

Files changed:
- pyproject.toml: 0.10.0 -> 0.11.0
- uv.lock:        regenerated (version field only)
- CHANGELOG.md:   [Unreleased] promoted to [0.11.0] - 2026-04-29

NOTICE drift check passes against the bumped lockfile.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
danielmeppiel added a commit that referenced this pull request Apr 29, 2026
* chore(release): cut 0.11.0

Promotes [Unreleased] -> [0.11.0] - 2026-04-29 and bumps
pyproject.toml + uv.lock to 0.11.0.

Version-bump rationale: 0.11.0 (minor bump) chosen over 0.10.1 because
this release ships one BREAKING removal (`apm marketplace build` -> exits 2,
use `apm pack`) plus several net-new features (Dev Container Feature,
Codex project-scoped MCP, `marketplace:` block in apm.yml, `apm pack`
unification, multi-org `apps[]`). Strict semver in 0.x: minor for
features-with-break, patch only for bugfixes.

Milestone admin (done out-of-band):
- Renamed milestone #8 `0.10.1` -> `0.11.0`
- Created milestone #9 `0.12.0` as next-up bucket
- Moved 43 open items (42 issues + 1 open PR #999) from `0.11.0` -> `0.12.0`
- 6 closed items stay in `0.11.0`

PRs shipping in 0.11.0 (22 commits since v0.10.0):

User-facing features:
- #1042/#722 `apm pack` unifies bundle + marketplace.json
                   (BREAKING: `apm marketplace build` removed)
- #1038       `marketplace:` block in apm.yml + `apm marketplace migrate`
- #803  /#502 Codex project-scoped MCP (`.codex/config.toml`) + user-scope primitives
- #861        Dev Container Feature `ghcr.io/microsoft/apm/apm-cli`
- #982/#984   shared/apm.md `apps:` array for cross-org private packages
- #820        `target:` in apm.yml validates at parse time
- #1032       `apm marketplace add` honors manifest.name (Claude Code parity)
- #1000/#998/#994 unified `--policy` / `--policy-source` accepted forms

User-facing fixes:
- #1015 ADO Entra ID auth + `apm install --update` pre-flight abort
- #1019/#1020 GEMINI.md only created when target requested
- #1008 marketplace producer respects GITHUB_HOST + multi-host URL forms
- #1018 POSIX paths in auto-discovery output (Windows compat)
- #996  drop stray 'specify' from generated file footer

Maintainer tooling:
- #1043 NOTICE.md per CELA template
- #1045/#1044 NOTICE drift gate + license-policy gate in CI
- #1033 shared/apm.md `[a b]` import-input repair (gh-aw#29076 paper-cut)
- #1030 panel workflows skip-don't-fail on unmatched labels; gh-aw v0.71.1
- #1026 shared/apm.md recompiled to apm-action v1.5.0 + bundles-file
- #1022 review-panel: true fan-out + binary verdict + label automation
- #918  complexity audit + benchmarks suite
- #1002 CodeQL clear-text-storage false-positive resolved (token -> placeholder)

Files changed:
- pyproject.toml: 0.10.0 -> 0.11.0
- uv.lock:        regenerated (version field only)
- CHANGELOG.md:   [Unreleased] promoted to [0.11.0] - 2026-04-29

NOTICE drift check passes against the bumped lockfile.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(changelog): tighten 0.11.0 entries to lead with user impact

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(changelog): move Dev Container Feature to Maintainer tooling (not yet published)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(changelog): de-dupe within 0.11.0 (combine #722 Removed bullets, drop #820 Fixed pointer)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants