You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Three tests in the tier-2 test gate pass on developer machines but fail on clean CI, blocking the akm-plugin 0.8.0 release. They are pre-existing (red since ~2026-06-02, introduced by the 0.8.0 CLI-surface alignment commits dea0ed5 / 3dbb514), not caused by the PR #73 fixes (which repaired the other 2 integration tests + the entire tier-2 eval system).
The 3 failing tests
tests/claude-plugin.test.ts — "session-start injects hints and curated context before the first user message"
tests/opencode-plugin.test.ts — "akm CLI availability > falls back to ~/.local/bin/akm when PATH lookup fails"
Bundled-CLI preemption: 0.8.0 added bundled-akm-cli resolution that is tried before PATH. These tests install a fake akm on PATH (or at a fallback path) and assume it is used. On CI the real bundled opencode/node_modules/akm-cli/dist/cli.js is probed/selected differently than locally, preempting or shadowing the fake — so the fake's invocation log stays empty and assertions fail.
Hidden filesystem dependency:probeCommand() does a real existsSync() on absolute candidate paths. Test feat: add dynamic agent dispatch and command execution to Claude Code plugin #2 mocks ~/.local/bin/akm --version but never creates the file and does not sandbox HOME, so it only passes on machines where akm happens to be installed there. On clean CI the existsSync fails → candidate skipped → no valid CLI → assertion fails. (Also unsafe: writes/probes under the real $HOME.)
Why local passes: dev boxes have akm at ~/.local/bin/akm and the bundled probe resolves to a valid version locally; CI is clean and the bundled probe yields no_semver_in_output.
Proposed fix (all hermetic; validate via CI since not locally reproducible)
For the claude session-start test: ensure the claude-hook akm resolution selects the test's fake (the AKM_OPENCODE_* env is opencode-only; the claude hook needs its own neutralization of bundled preference).
Summary
Three tests in the tier-2
testgate pass on developer machines but fail on clean CI, blocking the akm-plugin 0.8.0 release. They are pre-existing (red since ~2026-06-02, introduced by the 0.8.0 CLI-surface alignment commitsdea0ed5/3dbb514), not caused by the PR #73 fixes (which repaired the other 2 integration tests + the entire tier-2 eval system).The 3 failing tests
tests/claude-plugin.test.ts— "session-start injects hints and curated context before the first user message"tests/opencode-plugin.test.ts— "akm CLI availability > falls back to ~/.local/bin/akm when PATH lookup fails"tests/opencode-plugin.test.ts— "akm CLI availability > prefers ~/.config/opencode/node_modules/.bin/akm before user-local fallbacks"Root cause
akm-cliresolution that is tried before PATH. These tests install a fakeakmon PATH (or at a fallback path) and assume it is used. On CI the real bundledopencode/node_modules/akm-cli/dist/cli.jsis probed/selected differently than locally, preempting or shadowing the fake — so the fake's invocation log stays empty and assertions fail.probeCommand()does a realexistsSync()on absolute candidate paths. Test feat: add dynamic agent dispatch and command execution to Claude Code plugin #2 mocks~/.local/bin/akm --versionbut never creates the file and does not sandboxHOME, so it only passes on machines where akm happens to be installed there. On clean CI theexistsSyncfails → candidate skipped → no valid CLI → assertion fails. (Also unsafe: writes/probes under the real$HOME.)Why local passes: dev boxes have akm at
~/.local/bin/akmand the bundled probe resolves to a valid version locally; CI is clean and the bundled probe yieldsno_semver_in_output.Proposed fix (all hermetic; validate via CI since not locally reproducible)
AKM_OPENCODE_IGNORE_BUNDLED_CLI=1in the 2 opencode CLI-availability tests to remove bundled-candidate nondeterminism (env opt-out added in PR fix: repair plugin release gate for 0.8.0 (integration tests + evals) #73).HOMEto a temp dir in test feat: add dynamic agent dispatch and command execution to Claude Code plugin #2 (like OpenCode search tool has no ability to search the registry #3 already does) and create the probed fallback file there soexistsSyncis deterministic and nothing touches real$HOME.session-starttest: ensure the claude-hook akm resolution selects the test's fake (theAKM_OPENCODE_*env is opencode-only; the claude hook needs its own neutralization of bundled preference).Status
--shapeshim + async-curate harness + regenerated 0.8.0 tier-2 baseline. Local gate green (integration 324/0, evals exit 0).🤖 Generated with Claude Code