Clarify import previews and certify CLI 2026.9.7 - #79
Conversation
Pin the published CLI/SDK 2026.9.7 and current changelog tooling, preserve consumer contracts, and record installed-tool validation with measured coverage limitations in the package tracker.
|
@greptileai review /gemini review @coderabbitai full review @sourcery-ai review @cubic-dev-ai review Please review the current pushed head and every changed area using the available free allowance. Check the actual dependency types and lockfile, PM history integrity, and compatibility evidence. Earlier-head results are historical evidence; report remaining findings against this head. |
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Advanced Run ID: No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Team Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (7)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. Summary by CodeRabbit
WalkthroughThe change fixes atomic and non-atomic dry-run import formatting, updates regression assertions, bumps release tooling versions, and records CLI and SDK release certification results. ChangesDry-run preview and release certification
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to Dry-run import previews now clearly separate actions from issue titles and omit empty label metadata, with regression coverage for atomic and non-atomic output. The change is ready to merge. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 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 |
@unbraind cubic can't start this review because your workspace has reached its free monthly review limit. cubic has reviewed 40,392 of the 40,000 allowed lines of code this month. Reviews resume on 1 October 2026 (in 24 days). Paid plans include much higher monthly review limits. Upgrade now to resume reviews. To help optimise your usage, you can tune cubic to get the most out of your usage limits:
|
Reviewer's guide (collapsed on small PRs)Reviewer's GuideThe PR clarifies atomic and non-atomic import dry-run output by using explicit action labels and unambiguous metadata formatting, adds regression coverage for preview content, updates the certified CLI/changelog tooling versions to 2026.9.7/2026.9.6, and records the related PM artifacts. Flow diagram for import dry-run preview formattingflowchart TD
runImport[runImport]
dryRun{opts.dryRun}
atomic[Atomic preview]
standard[Standard preview]
output["Explicit action: title (metadata)"]
runImport --> dryRun
dryRun -->|atomic plan| atomic
dryRun -->|non-atomic import| standard
atomic --> output
standard --> output
File-Level Changes
Assessment against linked issues
Possibly linked issues
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
|
✅ Action performedFull review finished. |
Greptile SummaryClarifies dry-run import previews and completes release metadata for version 2026.9.8.
Confidence Score: 5/5The PR appears safe to merge with no outstanding correctness, security, or repository-rule findings. The preview formatting is consistently applied and covered by exact assertions, release metadata is aligned across all required files, and the prior test-strength finding was fixed and manually resolved.
|
| Filename | Overview |
|---|---|
| index.ts | Makes atomic and non-atomic import previews unambiguous and updates the exported extension version. |
| test/dryrun-preview.test.ts | Adds labeled fixture coverage and exact assertions for complete preview lines in both import modes. |
| package.json | Aligns the package release version and pins the certified CLI and changelog tool releases. |
| package-lock.json | Synchronizes the root package version and resolved development tooling. |
| manifest.json | Aligns the extension manifest with release version 2026.9.8. |
| CHANGELOG.md | Records the 2026.9.8 release using the expected version-derived date. |
Reviews (3): Last reviewed commit: "Merge branch 'main' into fix/clarify-imp..." | Re-trigger Greptile
Greptile: tightened both non-atomic preview assertions to exact complete lines, matching the atomic checks, so trailing malformed metadata or punctuation cannot pass. Both preview regressions pass.
|
@greptileai review /gemini review @coderabbitai full review @sourcery-ai review @cubic-dev-ai review Please review the current pushed head and every changed area using the available free allowance. Check the actual dependency types and lockfile, PM history integrity, and compatibility evidence. Earlier-head results are historical evidence; report remaining findings against this head. |
Rate Limit Exceeded
|
@unbraind cubic can't start this review because your workspace has reached its free monthly review limit. cubic has reviewed 40,392 of the 40,000 allowed lines of code this month. Reviews resume on 1 October 2026 (in 24 days). Paid plans include much higher monthly review limits. Upgrade now to resume reviews. To help optimise your usage, you can tune cubic to get the most out of your usage limits:
|
|
Review dispositions for the retrieved head a56e0f0:
|
|
@coderabbitai full review Please review the current head a56e0f0 under included free OSS capacity only. Do not use usage-based billing. Earlier-head results do not clear this head; report any remaining actionable findings or explicitly state an availability limit. |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
echo '=== checkout ==='
git rev-parse HEAD
git status --short
echo '=== remotes and merge base ==='
git remote -v
base="$(git merge-base HEAD origin/main 2>/dev/null || git merge-base HEAD origin/master 2>/dev/null || true)"
printf 'base=%s\n' "$base"
if [ -n "$base" ]; then
echo '=== changed files ==='
git diff --name-status "$base"...HEAD
echo '=== diff stat ==='
git diff --stat "$base"...HEAD
echo '=== full diff ==='
git diff --find-renames --find-copies --unified=80 "$base"...HEAD
fi
echo '=== package manifests and lockfiles ==='
fd -HI '^(package\.json|package-lock\.json|npm-shrinkwrap\.json|pnpm-lock\.yaml|yarn\.lock)$' . -E node_modules -E .git \
-x sh -c 'echo "--- $1"; sed -n "1,260p" "$1"' sh {}
echo '=== index outline ==='
ast-grep outline index.ts --items all 2>/dev/null || true
echo '=== dry-run test outline ==='
ast-grep outline test/dryrun-preview.test.ts --items all 2>/dev/null || true
echo '=== dry-run formatting call sites ==='
rg -n -C 12 --glob 'index.ts' --glob 'test/dryrun-preview.test.ts' \
'\[dry-run\]|labels\.join|previewImport|--link-deps|atomic' .
echo '=== PM records ==='
fd -HI -e toon -e jsonl .agents/pm -x sh -c 'echo "--- $1"; cat -n "$1"' sh {} 2>/dev/null || true
echo '=== JSONL validation and event summary ==='
python3 - <<'PY'
import json
from pathlib import Path
for path in sorted(Path(".agents/pm").rglob("*.jsonl")):
print(f"--- {path}")
for n, line in enumerate(path.read_text().splitlines(), 1):
try:
value = json.loads(line)
print(f"{n}: OK keys={','.join(sorted(value)[:12])}")
except Exception as exc:
print(f"{n}: INVALID {exc}")
PY
echo '=== references to versioned release tools ==='
rg -n -C 4 --glob '!node_modules/**' --glob '!*.lock' \
'`@unbrained/pm-cli`|pm-changelog|2026\.9\.[2567]|release:check' .Length of output: 176537 🏁 Script executed: #!/bin/bash
set -euo pipefail
expected="a56e0f0f366f1225a245b0923e8e8a0f59a388a7"
actual="$(git rev-parse HEAD)"
printf 'HEAD=%s\nEXPECTED=%s\nHEAD_MATCH=%s\n' "$actual" "$expected" "$([ "$actual" = "$expected" ] && echo yes || echo no)"
base="$(git merge-base HEAD origin/main 2>/dev/null || git merge-base HEAD origin/master)"
printf 'MERGE_BASE=%s\n' "$base"
echo '=== exact changed paths ==='
git diff --name-status "$base"...HEAD
echo '=== exact diff ==='
git diff --find-renames --unified=25 "$base"...HEAD -- \
index.ts package.json package-lock.json test/dryrun-preview.test.ts .agents/pm
echo '=== changed PM files at HEAD ==='
git diff --name-only "$base"...HEAD -- '.agents/pm/**' | while IFS= read -r path; do
echo "--- $path"
cat -n "$path"
done
echo '=== package and lock alignment ==='
python3 - <<'PY'
import json
from pathlib import Path
package = json.loads(Path("package.json").read_text())
lock = json.loads(Path("package-lock.json").read_text())
root = lock["packages"][""]
for name in ("`@unbrained/pm-cli`", "pm-changelog"):
declared = package.get("devDependencies", {}).get(name)
locked_declared = root.get("devDependencies", {}).get(name)
installed = lock["packages"].get(f"node_modules/{name}", {})
print(f"{name}: package.devDependencies={declared!r}; lock.root.devDependencies={locked_declared!r}; installed.version={installed.get('version')!r}; installed.dev={installed.get('dev')!r}")
PY
echo '=== changed JSONL hash continuity ==='
python3 - <<'PY'
import json, subprocess
base = subprocess.check_output(["git", "merge-base", "HEAD", "origin/main"], text=True).strip()
paths = subprocess.check_output(["git", "diff", "--name-only", f"{base}...HEAD", "--", ".agents/pm"], text=True).splitlines()
for raw in paths:
if not raw.endswith(".jsonl"):
continue
path = raw
records = [json.loads(line) for line in open(path, encoding="utf-8") if line.strip()]
print(f"--- {path}: {len(records)} records")
for index, (previous, current) in enumerate(zip(records, records[1:]), start=2):
if previous.get("after_hash") != current.get("before_hash"):
print(f"DISCONTINUITY at line {index}: prior after_hash={previous.get('after_hash')!r}; before_hash={current.get('before_hash')!r}")
print("continuity=OK")
PY
echo '=== dry-run test assertions and relevant implementation ==='
sed -n '1,120p' test/dryrun-preview.test.ts
sed -n '2838,2875p' index.ts
sed -n '2948,2980p' index.ts
echo '=== relevant test discovery, without execution ==='
rg -n -C 3 --glob 'test/**/*.ts' \
'dry-run.*labels|labels.*dry-run|previewImport\(|\[dry-run\]\[atomic\].*update:|\[dry-run\].*update:' testLength of output: 98490
I found no remaining actionable findings. Checks completed:
I did not run repository tests or release commands. The environment permits static inspection only. You are interacting with an AI system. |
|
Review dispositions for the retrieved head a56e0f0:
|
Clarify import previews and certify CLI 2026.9.7.
Import previews now show an explicit action and label metadata without ambiguous punctuation.
Final local release:check passed using installed CLI/SDK 2026.9.7 and pm-changelog 2026.9.6. Final top-level test report: tests=299, pass=299, fail=0, skipped=0. ℹ all files | 92.57 | 82.94 | 92.27 | . Coverage is the current reported scope; complete four-dimensional source certification and independent production/privacy/review gates remain open.
PM: pm-github-5ow3, pm-github-github-ee4d59c27b67-35.
Closes #35.
Summary by Sourcery
Clarify dry-run import previews and update the local release tooling versions.
Bug Fixes:
Enhancements:
Build:
Tests:
Chores:
Summary by cubic
Makes dry-run import previews unambiguous and certifies the updated local release tooling.
action: titleso the action no longer reads as the first word of the issue title.@unbrained/pm-clibumps to 2026.9.7 andpm-changelogto 2026.9.6.Written for commit a727304. Summary will update on new commits.