Skip to content

[docs] Update documentation for features from 2026-03-26#461

Open
danielmeppiel wants to merge 5 commits intomainfrom
docs/update-for-456-batch-fixes-91bccf8a1df49dbb
Open

[docs] Update documentation for features from 2026-03-26#461
danielmeppiel wants to merge 5 commits intomainfrom
docs/update-for-456-batch-fixes-91bccf8a1df49dbb

Conversation

@danielmeppiel
Copy link
Copy Markdown
Collaborator

@danielmeppiel danielmeppiel commented Mar 26, 2026

Description

Updates user-facing documentation to reflect recently merged behavior fixes from #456.

Features Documented

Changes Made

  • Updated docs/src/content/docs/getting-started/installation.md: Added troubleshooting entry for binary install failures on older Linux (devcontainers, Debian-based images). Uses a generic glibc version reference instead of hardcoding a specific version, explains the Bookworm/Ubuntu 24.04 mismatch as context, documents the automatic pip fallback behavior and PATH considerations, and includes a recommended fix for devcontainers (switch from bookworm to trixie). Also fixed a broken markdown code block that was missing the pip install command and closing fence.

  • Updated docs/src/content/docs/guides/skills.md: Corrected Step 2 description and Target Detection table to accurately reflect presence-driven deployment. Copilot (.github/skills/) is always active; Claude, Cursor, and OpenCode only deploy when their root directory exists. Also clarifies that .opencode/skills/ now receives skill deployments. Fixed Unicode em dash to ASCII per repo encoding policy.

  • Updated docs/src/content/docs/reference/lockfile-spec.md: Updated the lifecycle table to document that apm install is idempotent -- the lockfile is only written when semantic content changes (dependencies, MCP servers/configs, lockfile_version), with no churn from generated_at or apm_version fields.

Notes

All three changes are user-facing behavior fixes that were missing from docs. No breaking changes to document.

Type of change

  • Bug fix
  • New feature
  • Documentation
  • Maintenance / refactor

Testing

  • Tested locally
  • All existing tests pass
  • Added tests for new functionality (if applicable)

📍 Connect Copilot coding agent with Jira, Azure Boards or Linear to delegate work to Copilot in one click without leaving your project management tool.

- installation.md: add troubleshooting entry for glibc/devcontainer
  binary fallback to pip (#451)
- skills.md: clarify presence-driven target deployment; Copilot always
  active, others deploy only when root dir exists; fix .opencode note (#453, #447)
- lockfile-spec.md: document idempotent install -- no rewrite when
  dependencies are unchanged (#450)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@danielmeppiel danielmeppiel added automation documentation Improvements or additions to documentation labels Mar 26, 2026
Copilot AI review requested due to automatic review settings March 26, 2026 03:46
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

Updates user-facing documentation to reflect recently merged behavior fixes (installer pip fallback on incompatible Linux binaries, presence-driven multi-target skill deployment including OpenCode, and idempotent lockfile writes).

Changes:

  • Add installation troubleshooting note for older-Linux/devcontainer binary incompatibility and automatic pip fallback.
  • Update skills guide to describe presence-driven target activation and skill deployment to active targets (including .opencode/skills/).
  • Update lockfile spec lifecycle table to document idempotent apm install lockfile writes (no timestamp churn when unchanged).

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.

File Description
docs/src/content/docs/getting-started/installation.md Documents installer behavior when the binary cannot run on older glibc systems and the pip fallback path.
docs/src/content/docs/guides/skills.md Updates skill integration + target detection docs to match presence-driven deployment and OpenCode support.
docs/src/content/docs/reference/lockfile-spec.md Notes idempotent lockfile write behavior for subsequent installs.
Comments suppressed due to low confidence (1)

docs/src/content/docs/guides/skills.md:304

  • The docs suggest apm install ... --target vscode, but the install command does not appear to support a --target/-t option (target flags exist on apm compile/apm pack). This "Override" example is likely misleading; consider removing the apm install example or replacing it with apm compile --target ... and/or the apm.yml target: setting.
Override with:
```bash
apm install skill-name --target vscode
apm compile --target claude
</details>

Comment thread docs/src/content/docs/guides/skills.md Outdated
Comment thread docs/src/content/docs/getting-started/installation.md Outdated
Comment thread docs/src/content/docs/getting-started/installation.md Outdated
Comment thread docs/src/content/docs/reference/lockfile-spec.md Outdated
@lirantal
Copy link
Copy Markdown

thanks @danielmeppiel for putting this PR together

the glibc issue solved on my end was moving from the Microsoft devcontainer's 24-bookworm to 24-trixie which has the glibc compatible version. Perhaps some notes on that on the README or on the failure could help agents/humans quickly understand the error and the go-to fix.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@danielmeppiel
Copy link
Copy Markdown
Collaborator Author

@copilot take this into account and improve docs "the glibc issue solved on my end was moving from the Microsoft devcontainer's 24-bookworm to 24-trixie which has the glibc compatible version. Perhaps some notes on that on the README or on the failure could help agents/humans quickly understand the error and the go-to fix."

Copilot AI and others added 2 commits March 27, 2026 06:07
Agent-Logs-Url: https://github.com/microsoft/apm/sessions/aa1bd54d-ae2c-4ff4-b699-24ff933c8bec

Co-authored-by: danielmeppiel <51440732+danielmeppiel@users.noreply.github.com>
…ance, fix broken code block

Agent-Logs-Url: https://github.com/microsoft/apm/sessions/aa1bd54d-ae2c-4ff4-b699-24ff933c8bec

Co-authored-by: danielmeppiel <51440732+danielmeppiel@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

Copilot AI commented Mar 27, 2026

@copilot take this into account and improve docs "the glibc issue solved on my end was moving from the Microsoft devcontainer's 24-bookworm to 24-trixie which has the glibc compatible ...

Updated in 52541ea. The troubleshooting section now:

  • Uses a generic glibc version reference instead of hardcoding 2.39 (matches the reviewer feedback about REQUIRED_GLIBC="2.35" in install.sh)
  • Explains why Bookworm-based devcontainers are affected (glibc 2.36 vs binary built on Ubuntu 24.04 with glibc 2.39)
  • Adds a Recommended fix for devcontainers callout: switch from bookworm to trixie (e.g., mcr.microsoft.com/devcontainers/universal:24-trixie)
  • Fixes the broken code block that was missing the pip install --user apm-cli command and closing fence

@lirantal
Copy link
Copy Markdown

Good stuff Daniel

danielmeppiel added a commit that referenced this pull request Apr 23, 2026
…t webhooks (#865)

* ci: add merge-gate orchestrator (shadow) + stuck-PR watchdog

PR #856 surfaced a structural CI fragility: required status checks are
satisfied by two independent webhook channels (pull_request emits
'Build & Test (Linux)', pull_request_target emits the four Tier 2
stubs). When the pull_request delivery is dropped, 4/5 stubs go green
and the 5th hangs in 'Expected -- Waiting' forever -- ambiguous yellow
indistinguishable from a slow build. Recovery is folklore.

This PR ships two safety nets in shadow mode:

* .github/workflows/merge-gate.yml + scripts/ci/merge_gate_wait.sh
  Single orchestrator that polls the Checks API for 'Build & Test
  (Linux)' on the PR head SHA and aggregates into one verdict. Triggers
  on BOTH pull_request and pull_request_target so a single dropped
  delivery is recoverable; concurrency dedupes. Times out cleanly with
  a clear error message if Tier 1 never dispatched -- turning the
  invisible failure into a loud red check. NOT YET REQUIRED -- shadow
  observation first, ruleset flip after merge.

* .github/workflows/watchdog-stuck-prs.yml + scripts/ci/watchdog_scan.sh
  Cron every 15 min. For open non-draft PRs with no ci.yml run on the
  head SHA AND non-paths-ignored files, posts one recovery comment.
  Backstop for any required check that stops dispatching.

Tested live (dry-run) against microsoft/apm: watchdog correctly
distinguishes stuck PRs (#853, #409) from docs-only PRs (#864, #461,
#825). Both scripts shellcheck-clean. merge_gate_wait.sh tested
end-to-end against PR #856 head SHA (success path, exit 0) and a
non-existent SHA (timeout path, exit 2 with clear error annotation).

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

* ci(merge-gate): handle self-bootstrap and use checkout on pull_request

Two fixes for the script-fetch step:

1. On 'pull_request' the runner has no secrets and a read-only token, so
   actions/checkout of PR head is safe -- use it for simplicity. We only
   need API-fetch under 'pull_request_target' where checkout would be a
   security risk.
2. On 'pull_request_target', when the script does not yet exist on base
   (i.e. THIS PR is the one adding it), curl returns 404 and we degrade
   to a self-bootstrap no-op pass instead of failing. Once the script
   lands on main, the gate becomes real.

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

* ci: address Copilot review feedback on PR #865

- merge_gate_wait.sh: use $EXPECTED_CHECK in failure annotation instead
  of hardcoded 'Build & Test (Linux)' so the orchestrator stays generic.
- merge-gate.yml: add curl --retry/--max-time on the script bootstrap
  fetch so a transient GitHub API blip does not redden the gate.
- watchdog_scan.sh: fail loudly with stderr capture if 'gh pr list'
  errors out, instead of silently treating it as zero PRs (which would
  hide auth regressions or rate limiting).
- watchdog_scan.sh: paginate the changed-files API call so PRs touching
  >100 files cannot be misclassified as docs-only and skipped.
- CHANGELOG: append (#865) to follow the repo convention.

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

* ci: drop watchdog -- gate's dual-trigger redundancy is sufficient

The watchdog (cron every 15min, posts recovery comments on stuck PRs)
was originally justified for the shadow-mode transition window. Since
we are flipping to required immediately after this PR merges, that
justification disappears.

The merge-gate workflow already triggers on both 'pull_request' and
'pull_request_target' with concurrency dedup, so a single dropped
webhook still fires the gate. The watchdog only added value for the
double-drop case (both webhook channels fail for the same PR), which
is vanishingly rare. We can add it back later if we ever observe one.

Removes:
- .github/workflows/watchdog-stuck-prs.yml
- .github/scripts/ci/watchdog_scan.sh

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

automation documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants