Gate CI on durable PM tracker health with pm 2026.8.6 - #57
Conversation
Add a CI step that runs `./node_modules/.bin/pm health --strict-exit` immediately after `npm ci`. When two agents edit the same scalar field of one pm item on two branches, the field-aware merge driver picks a winner and records the loser in a clone-local receipt. The merged `.toon` has no conflict markers and is valid TOON already holding the winning value, yet git still marks the path `UU`. The standard resolution idiom (`git add` the marker-free file, then commit) then succeeds and the peer agent's edit is gone, with no trace in any pushed artifact. `pm validate` returns ok:true on that result because the file really is valid TOON, so it cannot gate this. Only `pm health` goes red, via integrity.counts.pending_merge_decisions, naming the affected items in integrity.details.pending_merge_decision_items. `--strict-exit` is load-bearing: a bare `pm health` exits 0 even when ok:false. A fresh runner checkout has no merge drivers installed, which is a warn rather than a failure, so the step does not need `pm merge install`.
|
Warning Review limit reached
Next review available in: 50 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
Summary by CodeRabbit
WalkthroughThe CI workflow now runs ChangesCI health gate
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related issues
Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Reviewer's guide (collapsed on small PRs)Reviewer's GuideAdds a CI gate that runs Sequence diagram for new CI pm health integrity gatesequenceDiagram
participant GitHubActions as GitHubActions_runner
participant NPM as npm_ci
participant PM as pm_cli
GitHubActions->>NPM: npm ci
NPM-->>GitHubActions: dependencies_installed
GitHubActions->>PM: pm health --strict-exit
PM-->>GitHubActions: integrity.counts.pending_merge_decisions
alt [no pending_merge_decisions]
PM-->>GitHubActions: exit 0
GitHubActions-->>GitHubActions: continue_to_typecheck
else [pending_merge_decisions present]
PM-->>GitHubActions: exit 1
GitHubActions-->>GitHubActions: fail_workflow
end
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
Greptile SummaryThis PR adds a strict CI gate for durable, checkout-visible PM tracker failures while explicitly documenting that fresh CI clones cannot inspect clone-local merge receipts.
Confidence Score: 5/5The PR appears safe to merge. No blocking failure remains.
|
| Filename | Overview |
|---|---|
| .github/workflows/ci.yml | Adds the strict tracked-health gate and accurately limits its stated guarantee to evidence available in a fresh checkout. |
| package.json | Updates PM development tooling to 2026.8.6 while retaining the repository's existing dependency-range convention. |
| package-lock.json | Pins the updated PM tools and their transitive dependencies for the npm-ci-based workflows. |
| .agents/pm/chores/pm-linear-9848.toon | Documents the gate, its durable-health scope, and the distinct upstream gaps around repair bypass and fresh-clone evidence. |
| .agents/pm/history/pm-linear-9848.jsonl | Preserves the correction, reconciliation evidence, verification notes, and final canonical item state. |
| CHANGELOG.md | Adds the generated unreleased entry after closure of the corresponding PM item. |
Reviews (6): Last reviewed commit: "docs(ci): resolve exact-head health-gate..." | Re-trigger Greptile
The step and its tracker item both said this gate blocks a merge that silently discarded a peer agent's edit. Verified today that it does not, and cannot as built: merge-decision receipts live in .agents/pm/runtime/, which pm init gitignores, so they are never pushed. On the same commit, the merge-performing clone reports one receipt and exits 1, while a fresh clone - which is what CI checks out - reports zero and exits 0. The pushed history does not disambiguate it either. Both writes are present in timestamp order and the item matches the latest, so history verification reports ok. Filed upstream as unbraind/pm-cli#922; flagged first by Greptile on every PR in this rollout. The step is kept, because what it does catch is real and CI-observable: conflict markers in item and history files, parse failures, invalid history JSON, hash drift, unknown-author events, stale in-progress work and tracked runtime cache files. Only the overstated claim is removed. A gate whose documentation promises more than it delivers is worse than no gate, because it stops people looking for the hazard it does not cover.
|
Correction pushed — re-review please. @coderabbitai full review Greptile's P1 was correct and is the reason for this push. The gate does not detect a What changed: the overstated claim was removed everywhere it appeared — the step name What is worth checking this round:
GitHub Actions is under a critical outage, so the checks here are absent for external |
Rate Limit Exceeded
|
|
Fresh exact-head review requested for @greptileai |
|
|
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.agents/pm/chores/pm-linear-9848.toon:
- Around line 28-30: Update the health-check command in the project-scoped chore
configuration to invoke the locked local PM CLI binary from node_modules/.bin
instead of the bare pm command, while preserving the existing --health,
--strict-exit, and timeout settings.
- Line 3: Align the upstream issue references for the CI gate across
.agents/pm/chores/pm-linear-9848.toon lines 3, 16, and 32-33,
.github/workflows/ci.yml lines 51-52, and
.agents/pm/history/pm-linear-9848.jsonl lines 3-4: determine whether pm-cli#921
and pm-cli#922 are both applicable, then consistently retain both references or
update every affected site to the single canonical issue. No site is exempt from
synchronization.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 51b364e1-2649-487e-a8c7-0cedb623afee
⛔ Files ignored due to path filters (1)
package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (6)
.agents/pm/chores/pm-linear-9848.toon.agents/pm/history/pm-linear-9848.jsonl.gitattributes.github/workflows/ci.ymlCHANGELOG.mdpackage.json
|
Exact-head disposition for
Every inline bot finding has been reacted to and answered in-thread. CodeRabbit rate-limit messages are recorded as review limitations, not approvals. @greptileai |
Rate Limit Exceeded
|
Outcome
pm health --strict-exitin CI for durable, checkout-visible tracker failures.@unbrained/pm-cli2026.8.6 andpm-changelog2026.8.6.pm merge reconcile, preserves both agents' notes, refreshes the 2026.8.6 merge fence, and regenerates the package-owned changelog.PM evidence
Verification
npm ci --ignore-scriptsnpm run release:checkpm health --strict-exitnpm run changelog:check