Skip to content

pm health reports ok:false when optional merge drivers were never installed, breaking .ok as a CI gate #815

Closed

Description

@unbraind

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

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:

  1. Treat a missing merge-driver config as status: "info" (advisory) rather than warn, so it does not flip ok — keeping warn/drift for the case where drivers were installed but drifted.
  2. 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.
  3. At minimum, surface the exit code / ok semantics so status: "missing" does not fail a .ok CI 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

  1. coderabbitai commented on Jul 29, 2026

    @coderabbitai
    🔗 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 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!

  2. unbraind commented on Jul 29, 2026

    @unbraind
    OwnerAuthor

    Tracked by pm-r8u2g6 in the current SDK health/context-truth implementation bundle.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions