Skip to content

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

Merged
danielmeppiel merged 7 commits intomainfrom
docs/update-for-456-batch-fixes-91bccf8a1df49dbb
Apr 30, 2026
Merged

[docs] Update documentation for features from 2026-03-26#461
danielmeppiel merged 7 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 Deprecated: use type/automation. Kept for issue history; will be removed in milestone 0.10.0. documentation Deprecated: use type/docs. Kept for issue history; will be removed in milestone 0.10.0. 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>
Copilot and others added 2 commits April 30, 2026 17:53
Installer's REQUIRED_GLIBC=2.35 (install.sh:161); previous text said
'Bookworm 2.36 / Ubuntu 24.04 2.39' which misrepresented the actual
fallback trigger. Aligns docs with the script's behavior.

Addresses Copilot review comment.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@danielmeppiel danielmeppiel merged commit b3523a7 into main Apr 30, 2026
12 checks passed
@danielmeppiel danielmeppiel deleted the docs/update-for-456-batch-fixes-91bccf8a1df49dbb branch April 30, 2026 16:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automation Deprecated: use type/automation. Kept for issue history; will be removed in milestone 0.10.0. documentation Deprecated: use type/docs. Kept for issue history; will be removed in milestone 0.10.0.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants