Repository navigation
docs(changelog): credit the shipped --link-deps feature to release 2026.7.23 - #12
Conversation
|
@greptileai review /gemini review @coderabbitai full review @sourcery-ai review |
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
1 similar comment
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
|
Warning Review limit reached
Next review available in: 52 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. 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)
✨ 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 |
|
✅ Action performedFull review finished. Your included review limit is currently reached under our Fair Usage Limits Policy. This review may still proceed through usage-based billing if eligible. Your next included review will be available in 58 minutes. |
Bot-feedback triage — round 1@sourcery-ai — review blocked by the weekly 500,000 diff-character rate limit, not by a finding; downvoted the limit notice as non-actionable. This PR is a two-file docs/tracker change, so it consumed budget without producing signal — if the org config can deprioritize @gemini-code-assist — sunset notice ×2, no review performed; both downvoted as non-actionable. @coderabbitai — upvoted the walkthrough and the trigger receipt. Extra context for reviewing this repo:
Separately, and not part of this PR: real-data testing during this session found two genuine defects in this package's |
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
|
Your plan includes PR reviews subject to rate limits. More reviews will be available in 55 minutes. |
…26.7.23 The published CHANGELOG.md never listed `--link-deps` (issue-body Blocked-by / Depends-on / Blocks references mapped into pm dependency edges), even though it shipped in npm 2026.7.23: the last regeneration ran with stale local tags and before pm-github-hdai was closed. pm-github-wpit was mis-sectioned the same way. Both items closed before the v2026.07.23 tag boundary (hdai 2026-07-22T23:10:49Z, wpit 2026-07-22T19:41:58Z vs the tag's 2026-07-23T06:12:30Z committer date), so both belong under `## 2026.7.23`. Regenerated with complete tag history (`git fetch --tags --force` first). Not a pm-changelog defect: verified the local build and the installed published build produce byte-identical output for this repo. changelog:check green, full test suite green. Item: pm-github-px45 (closed) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
55ae9ab to
b453416
Compare
|
Force-pushed: rebased onto @greptileai review /gemini review @coderabbitai full review @sourcery-ai review |
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
|
✏️ Learnings added
✅ Action performedFull review finished. Your included review limit is currently reached under our Fair Usage Limits Policy. This review may still proceed through usage-based billing if eligible. Your next included review will be available in 52 minutes. |
CHANGELOG.md is generated, so the rebase conflict against the merged changelog-hygiene PR is resolved by regeneration rather than by hand-picking hunks. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…in non-atomic --dry-run (#13) * fix(import): raise the pm read buffer past 1 MiB and make --dry-run preview updates Two defects found by running the importer against a real 443-item workspace rather than fixtures. Both make the integration fail or mislead exactly when a tracker is mature enough to matter. 1. `readPmItems()` spawned `pm list-all --full --include-body` without a `maxBuffer`, so Node's 1 MiB default applied. That workspace's dump is 1,052,859 bytes — 4 KiB over the cap — so the child was killed with `status: null`, `error.code: ENOBUFS` and EMPTY stderr, and the code reported a bare `pm list-all failed` with nothing to diagnose. Every import, atomic plan and sync against such a workspace was dead with no actionable message. Now capped at 64 MiB (matching pm-changelog / pm-context / pm-brief, which already learned this), applied to `readPmItems()`, the central `pmRun()` spawner and the `afterCommand` hook's `pm show`. A buffer overrun is now named explicitly — the message says the output exceeded the read buffer and suggests narrowing the import (`--labels`, `--since`) — instead of being reported as an unexplained failure. 2. The non-atomic `--dry-run` path deliberately skipped building the provenance index (`shouldMatchExisting = !dryRun || atomic`), so every issue was previewed as a create: "Would import 29, skip 0" where the real run performs updates for already-linked issues. A preview that overstates creates reads as "this will duplicate my whole tracker" — the single thing `--dry-run` exists to rule out. `--atomic --dry-run` reported the split correctly, so the two paths disagreed about the same plan. The index is now built for dry runs too, and the non-atomic preview labels each issue `import`/`update` and reports "Would import X, update Y, skip Z", returning `wouldUpdate` alongside `wouldImport`/`wouldSkip` like the atomic path. Note this also means dry runs now read the tracker — which is why (1) had to be fixed in the same change, or previews would newly hit ENOBUFS. Verified against the same real workspace: non-atomic reports "Would import 24, update 5, skip 0"; `--atomic --dry-run`, which previously died with ENOBUFS, now completes and agrees exactly (24/5/0). 168/168 tests pass, including two new tests covering the preview split and the two paths' agreement. Items: pm-github-<pending> (see PR) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * track(tn92): file and close the import maxBuffer + dry-run preview defects Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: make the read-buffer cap overridable and stop silent read failures Greptile review findings, all confirmed: - **P2 — the ENOBUFS diagnostic prescribed an impossible remedy.** It told the reader to raise the cap, but the cap was a module-private compile-time constant with no override, so a published-package consumer could only follow that advice by patching and rebuilding. The cap now reads an env var (`PM_JSON_MAX_BUFFER` / `PM_LIST_MAX_BUFFER`, in bytes), falling back to the default on any invalid or non-positive value so the guard cannot be silently disabled. - **P2 (pm-starter) — inserting the constant between the existing JSDoc and `readPmItems` orphaned the doc comment**, dropping the "never throws / safe read pattern" contract from the consumer-facing `dist/index.d.ts`. Verified in the generated output, then moved the block above the JSDoc; the contract is back in `dist/index.d.ts`. - **P1 (starters) — a genuine nonzero `pm` exit was still silent.** Only the `result.error` branch was hardened, so an unreadable or invalid workspace still returned an empty result with stderr discarded — leaving exactly the failure mode this change set out to remove: silence that looks like "no items" / "no matches". Both never-throw paths now log the exit code and stderr while keeping their empty-result contract. Typecheck and full test suite green. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: resolve the read-buffer cap per call and cover the overrun contract Follow-up to the Greptile round-2 findings. - The cap was resolved once at module load, so the `PM_JSON_MAX_BUFFER` override only applied if the env var was set before the module was imported — an import-order dependency that also made the branch untestable. Now resolved per call (one integer parse against a process spawn: free), and the ENOBUFS message reports the limit actually in effect rather than a constant's name. - Added coverage for the failure contract in the starter packages: a real pm workspace read with the cap forced to 64 bytes must return the documented empty result AND report the overrun on stderr. Without a test, "a read failure must not look like an empty workspace" was an assertion in a commit message rather than something the suite enforces. Typecheck and the full test suite green. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: reject malformed read-buffer overrides instead of trusting a numeric prefix Greptile P1: `Number.parseInt("64MiB", 10)` returns 64, so that value silently imposed a **64-BYTE** cap — breaking every ordinary read while appearing to honor the documented invalid-value fallback. The plausible-looking typo was the worst case: it turned a safety guard into a guaranteed failure. Switched to `Number()`, which rejects the whole string, plus `Number.isSafeInteger(raw) && raw > 0`. Covered in the starter suite across "64MiB", "64 MB", "abc", "-1", "0", "6.5" and "", each of which must fall back to the default, while a valid explicit value is still honored. Also narrowed the starters' overrun message: those reads are always the full workspace, so "narrow the operation" was a dead instruction — the message now names only the lever the reader has. Typecheck and full test suites green. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * docs(changelog): regenerate after rebasing onto the merged #12 CHANGELOG.md is generated, so the rebase conflict against the merged changelog-hygiene PR is resolved by regeneration rather than by hand-picking hunks. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: SteveBot <1153461+unbraind@users.noreply.github.com> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Problem
The published
CHANGELOG.mdnever listed--link-deps— mapping issue-bodyBlocked by/Depends on/Blocks #Nreferences into pm dependency edges — even though it shipped in npm 2026.7.23. pm-github-wpit was mis-sectioned the same way.Cause: the last regeneration ran with stale local tags and before pm-github-hdai was closed, so the item was invisible to the generator and the
v2026.07.23boundary did not exist yet.Both items closed before that tag, so both belong under
## 2026.7.23:v2026.07.23(2026-07-23T06:12:30Z)--link-depsA user reading the changelog to find out when dependency linking became available currently finds nothing at all.
Change
Regenerated with complete tag history (
git fetch --tags --forcefirst):### Addedentry for--link-depsunder## 2026.7.23 - 2026-07-23pm-github-wpitout of## Unreleasedinto the same release## Unreleasedentry for pm-github-px45, the tracker for this fixNo source changes.
Verification
npm run changelog:check→ "Changelog is up to date"pm items
🤖 Generated with Claude Code
Summary by cubic
Fix CHANGELOG.md: credit the shipped
--link-depsfeature to release 2026.7.23 and movepm-github-wpitinto that release. Add an Unreleased entry forpm-github-px45; docs-only.Written for commit b453416. Summary will update on new commits.