Repository navigation
pm health reports ok:false when optional merge drivers were never installed, breaking .ok as a CI gate #815
Description
Summary
pm health latches the whole command to ok: false when the field-aware merge drivers were never installed (integrity.merge_driver_configuration.status: "missing", all five driver keys absent from .git/config). Merge-driver installation is an optional setup step — it is only needed when multiple authors concurrently edit pm items and reconcile via git merges. A single-agent workflow, or any repo that simply never ran pm merge install, has perfect data integrity but is reported as an unhealthy tracker.
This makes pm health --json | jq -e .ok unusable as a CI gate for every tracker that does not install the drivers, even though nothing is wrong.
Distinction from existing issues
- pm health reports permanent false merge-driver drift for repos that install drivers from their own devDependency, and the obvious remediation loops while reducing portability #773 is about drivers that are installed but whose recorded path drifts depending on which
pmbinary asks (status: "drift"). This issue is thestatus: "missing"case — drivers never installed at all. - pm health is ok:false on every fresh clone because required tracker directories are empty and git cannot track them, masking the pending-merge-decision signal #775 / pm health requires three directories that pm init's own .gitignore excludes, so every clone of a pm workspace is unhealthy by construction #792 were about empty required directories also forcing
ok: false(now fixed). This is the analogous problem for the merge-driver sub-check.
Reproduction
$ cd any-pm-tracker # clone where pm merge install was never run
$ pm merge install --status 2>/dev/null || true
$ pm health --json | jq \(.ok) | \(.checks[] | select(.name=="integrity") | .status) | \(.checks[] | select(.name=="integrity") | .details.merge_driver_configuration.status)
"false | warn | missing"Every integrity count is zero (no unreadable items, no conflicts, no parse failures, no history drift, no pending merge decisions, no tracked runtime cache), yet ok is false.
Expected behaviour
integrity.merge_driver_configuration.status: "missing" should not by itself latch pm health to ok: false. It is an informational/advisory state: the drivers are opt-in tooling for concurrent multi-author edits, not a prerequisite for a healthy tracker. Suggested options:
- Treat a missing merge-driver config as
status: "info"(advisory) rather thanwarn, so it does not flipok— keepingwarn/driftfor the case where drivers were installed but drifted. - Add an opt-in flag (e.g.
pm health --require-merge-drivers) for workflows that genuinely want to gate on driver presence, leaving the default healthy. - At minimum, surface the exit code /
oksemantics sostatus: "missing"does not fail a.okCI gate when data integrity is otherwise perfect.
Environment
- pm-cli: 2026.7.29
- The repro tracker has 456 items, all integrity counts at 0,
history_drift: ok,pending_merge_decisions: 0.
Why now
Encountered while certifying a 456-item tracker: pm health reports ok: false with exit 0 on a clone with flawless data integrity purely because the optional merge drivers were not installed, so the obvious pm health --json | jq -e .ok CI gate cannot be used.
Activity
coderabbitai commentedon Jul 29, 2026
🔗 Related PRs
#491 - Harden init target safety and package install verification [merged]
#614 - SDK-first field-aware merge safety and storage integrity [merged]
#673 - feat(sdk): harden workspace mutation and migration primitives [merged]
#758 - Make branch merge decisions recoverable, replayable, and CI-enforced [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 29, 2026
Tracked by pm-r8u2g6 in the current SDK health/context-truth implementation bundle.