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
{{ message }}
Repository navigation
pm health returns ok:false with exit code 0 for a warn-only result, so every fresh clone fails a .ok gate that GH-775 was meant to fix #785
On 2026.7.28, pm health --json reports ok: false when the only finding is a warn-severity check, while simultaneously exiting 0. A caller gating on .ok fails; a caller gating on $? passes. Both are documented ways to consume the command.
Because empty directories cannot be tracked by git, this fires on every fresh clone of every pm repo, which I believe is the exact scenario GH-775 set out to fix.
Every other check is ok. The single warn sinks the top-level ok.
Why this is a problem
GH-775 correctly reclassified absent empty type folders as non-material — the directories check is now warn rather than an error, and the exit code is 0. But the top-level ok field was not brought along, so the headline signal still says the workspace is unhealthy.
The practical effect is that a pm health-based CI gate can never go green on a fresh checkout. In our fleet the affected directories are epics and extensions — both legitimately empty in most repos, both therefore absent after clone, both permanently reported.
The two signals disagreeing is the sharper half of the bug. From one invocation:
consumed as
verdict
pm health --json | jq .ok
unhealthy
pm health; echo $?
healthy
An agent has no way to know which to trust, and the two are equally reachable from the docs.
Suggested resolution
Make ok mean "no blocking finding", consistent with the exit code — i.e. ok: false only when some check is error-severity, with warn surfacing through warnings[] and the per-check status as it already does.
If ok is instead intended to mean "perfectly clean, warnings included", then the exit code should match it, and there should be a separate blocking-only field for gating — but the first reading seems much more useful, and matches what GH-775 was aiming at.
Either way it would help to state in pm health --explain which field is the supported gate, since right now .ok and $? are both plausible and they disagree.
Environment
@unbrained/pm-cli 2026.7.28
Node 24, Linux
Reproduced in a workspace created fresh by pm init in this session, no extensions installed
#146 - fix: agent never-block reliability, MCP/version coherence, and CI/docs hardening [closed] #200 - Add validation self-repair and agent ergonomics primitives [closed] #414 - Clear CLI complexity suppressions across PM SDK and CLI [merged] #491 - Harden init target safety and package install verification [merged] #783 - Harden SDK context integrity, merge safety, and agent-efficient output [merged]
📝 Issue Planner
Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.
Create Plan
🧪 Issue enrichment is currently in open beta.
You can configure auto-planning by selecting labels in the issue_enrichment configuration.
To disable automatic issue enrichment, add the following to your .coderabbit.yaml:
issue_enrichment:
auto_enrich:
enabled: false
💬 Have feedback or questions? Drop into our discord!
Activity
coderabbitai commentedon Jul 28, 2026
🔗 Related PRs
#146 - fix: agent never-block reliability, MCP/version coherence, and CI/docs hardening [closed]
#200 - Add validation self-repair and agent ergonomics primitives [closed]
#414 - Clear CLI complexity suppressions across PM SDK and CLI [merged]
#491 - Harden init target safety and package install verification [merged]
#783 - Harden SDK context integrity, merge safety, and agent-efficient output [merged]
📝 Issue Planner
Check the box below or use the
@coderabbitai plancommand to generate an implementation plan and prompts that you can use with your favorite coding assistant.🧪 Issue enrichment is currently in open beta.
You can configure auto-planning by selecting labels in the issue_enrichment configuration.
To disable automatic issue enrichment, add the following to your
.coderabbit.yaml:💬 Have feedback or questions? Drop into our discord!
unbraind commentedon Jul 28, 2026
Tracked in PM as pm-83ov2i, linked to the completed GH-775 predecessor without reopening or duplicating its shipped scope.
chore(pm): track health verdict follow-up (#789)
unbraind commentedon Jul 28, 2026
Implemented in #798 and tracked in pm-83ov2i.