Skip to content

Certify pm-presets on PM CLI 2026.10.4 and consolidate pending dependency updates - #117

Closed
unbraind wants to merge 3 commits into
mainfrom
chore/pm-presets-pm-cli-2026-10-4
Closed

unbraind wants to merge 3 commits into
mainfrom
chore/pm-presets-pm-cli-2026-10-4

Conversation

@unbraind

@unbraind unbraind commented Oct 4, 2026 •

Copy link
Copy Markdown
Owner

Pins PM CLI/SDK, pm-ops, pm-changelog and managed pm-github to 2026.10.4, with exact development versions and the unchanged 2026.9.30 SDK floor. Consolidates Dependabot #111, #112, #114 and #115, including the exact CodeQL SHA/comment bump. Copies the published merge-driver launcher unchanged and adds its real malformed-lookup regression. Tracks managed pm-github metadata and restores downloaded artifacts before CI health.

NOT READY: npm run release:check has 158/159 pass, zero skips. The unchanged replace-mode assertion exposes upstream pm-cli #1394: the audited SDK cannot remove omitted raw governance keys invisible to its normalized callback. Independent SDK-only disposable reproduction is committed as docs/SDK-1394-repro.mjs. No audit bypass, ignored failure, lower threshold or weakened assertion.

Other receipts (heavy commands serialized with the shared flock):

  • Launcher: 8/8 pass. Coverage: 100% lines / branches / functions for 16 configured files; statements unmeasured.
  • npm audit --omit=dev and npm audit: zero vulnerabilities.
  • npx pm health --strict-exit --require-merge-drivers: exit 0, one advisory stale-item finding.
  • Remaining audit, pack, changelog, publish-attestation and changelog-date steps pass separately.
  • npm pack installed into a copied real tracker. npm/npx and native Bun (bunx --bun @unbrained/pm-cli@2026.10.4) passed catalog/list, validate, show, diff, preview, export and all seven presets in merge/replace modes. Catalogs matched, both exports parsed, scratch deleted. This does not resolve the omitted-raw-key regression.
  • pm-github read-only dry-run: zero linked provenance cases; synced/skipped/planned all 0. No issue writes or scheduling changes.
  • Changelog regenerated after PM mutations; check passes.

Exact commands and receipts.

PM: certification pm-kewj, SDK blocker pm-yatu, existing quality owner pm-915f. Orchestrator verifies, merges and closes items after blockers are resolved.

Summary by Sourcery

Certify the project against PM tooling 2026.10.4 while hardening merge-driver setup and documenting the remaining upstream SDK replacement blocker.

New Features:

  • Add certification evidence and an isolated reproduction for the upstream SDK replacement bug.

Bug Fixes:

  • Make merge-driver preparation fail closed when module lookup paths are malformed or unreadable.

Enhancements:

  • Pin PM tooling and development dependencies to the 2026.10.4 release while preserving the existing SDK compatibility floor.
  • Restore and validate the managed pm-github extension during CI health checks.

Build:

  • Refresh the dependency lockfile for the consolidated exact-version updates.
  • Track managed extension metadata while ignoring downloaded artifacts.

CI:

  • Update CodeQL action references to the certified commit.
  • Install the verified pm-github extension before CI project health validation.

Documentation:

  • Document 2026.10.4 certification results, acceptance checks, and the SDK blocker.

Tests:

  • Add regression coverage for malformed merge-driver module lookup paths.

Chores:

  • Record certification and SDK-blocker tracking metadata.

Summary by cubic

Certifies the project against PM tooling 2026.10.4 releases, but the release gate stays red on one assertion blocked by an upstream SDK bug.

Pins @unbrained/pm-cli, pm-ops, pm-changelog, @types/node, and typescript to exact versions, consolidating Dependabot #111, #112, #114, and #115. The SDK compatibility floor in peerDependencies stays at 2026.9.30.

Not ready to merge

npm run release:check passes 158/159 tests with zero skips. The unchanged replace-mode assertion fails because the audited SDK cannot remove omitted raw governance keys: the callback and preview omit the key, but the persisted file retains it. This is reproduced independently in docs/SDK-1394-repro.mjs and filed upstream as pm-cli#1394. The assertion is not weakened, no audit bypass is used, and certification is blocked on the upstream fix. Manual CodeRabbit and Greptile reviews at the reviewed head report no actionable findings with zero unresolved threads; the missing review evidence is Sourcery quota, cubic neutral status, and absent Gemini/Copilot responses.

Other changes:

  • Hardens prepare-merge-driver.ts to fail closed when a module lookup path is unreadable or malformed, with regression coverage.
  • Adds CI steps that restore managed pm-github artifacts before the health check and tracks the extension registry; downloaded artifacts are gitignored.
  • Updates the CodeQL action references to the certified commit.
  • Adds certification receipts (docs/certification-2026.10.4.md) and PM tracking items.

Written for commit a72365d. Summary will update on new commits.

Review in cubic

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @unbraind, you've used your own review budget of 250,000 diff characters for the last 7 days.

You can request another review in 1 day and 19 hours by commenting @sourcery-ai review. Upgrade to get a review now.

@coderabbitai

coderabbitai Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 31 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 833cf715-964b-4176-bf9a-df6ec3aeeb60
📥 Commits

Reviewing files that changed from the base of the PR and between 31ee4a3 and a72365d.

📒 Files selected for processing (3)
  • .agents/pm/chores/pm-kewj.toon
  • .agents/pm/history/pm-kewj.jsonl
  • docs/certification-2026.10.4.md

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 38714862-70d0-4c2e-84bc-50d82bbd050d
📥 Commits

Reviewing files that changed from the base of the PR and between 050df6c and 31ee4a3.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (14)
  • .agents/pm/chores/pm-kewj.toon
  • .agents/pm/extensions/.managed-extensions.json
  • .agents/pm/history/pm-kewj.jsonl
  • .agents/pm/history/pm-yatu.jsonl
  • .agents/pm/issues/pm-yatu.toon
  • .github/workflows/ci.yml
  • .github/workflows/codeql.yml
  • .gitignore
  • docs/SDK-1394-repro.mjs
  • docs/certification-2026.10.4.md
  • package.json
  • scripts/install-pm-github.sh
  • scripts/prepare-merge-driver.ts
  • tests/prepare-merge-driver.test.ts

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.


Summary by CodeRabbit

  • New Features

    • Added certification coverage for version 2026.10.4, including acceptance checks for all seven presets in merge and replace modes.
  • Bug Fixes

    • Improved merge-driver setup when dependency paths cannot be inspected, preserving the original installation error.
    • Added a regression check for invalid dependency paths.
  • Chores

    • Updated pinned development tools and dependencies.
    • Added automated installation and version verification for the GitHub integration in CI.
    • Recorded an unresolved SDK replacement issue; the replace-mode certification gate remains incomplete.

Walkthrough

The changes update pinned development dependencies, add managed pm-github installation to CI, and document 2026.10.4 certification results and an SDK replacement issue. They also adjust merge-driver dependency detection and add test coverage for a non-directory lookup path.

Changes

Certification and Extension Setup

Layer / File(s) Summary
Dependency pins and managed extension
package.json, .agents/pm/extensions/.managed-extensions.json, .gitignore
Development dependency versions move to the 2026.10.4 set. The managed-extension registry adds pm-github 2026.10.4, and .gitignore excludes other files in its directory.
Extension installation in CI
scripts/install-pm-github.sh, .github/workflows/ci.yml, .github/workflows/codeql.yml
The installer installs and verifies pm-github 2026.10.4 and restores or removes the registry based on Git tracking. CI runs the installer. The CodeQL action pins change while remaining on v4.
SDK replacement reproduction and issue records
docs/SDK-1394-repro.mjs, .agents/pm/issues/pm-yatu.toon, .agents/pm/history/pm-yatu.jsonl
The reproduction seeds and replaces a governance setting, then reports callback, preview, and persisted values. The issue records the observed mismatch and reproduction command.
Certification results and status
docs/certification-2026.10.4.md, .agents/pm/chores/pm-kewj.toon, .agents/pm/history/pm-kewj.jsonl
The certification record and chore history document validation results, the SDK blocker, pending gates, and the chore’s in-progress status.

Merge Driver Dependency Detection

Layer / File(s) Summary
Dependency presence check and test
scripts/prepare-merge-driver.ts, tests/prepare-merge-driver.test.ts
Filesystem errors while checking pm-ops lookup paths count as possible package presence. The test verifies that a non-directory node_modules path results in MODULE_NOT_FOUND without registering merge drivers.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to 31ee4

The dependency update is consistent with the lockfile. Certification remains in progress because the documented SDK replacement issue is unresolved.

Security Architecture Review

Security architecture risk: 🔵 Low · up to 31ee4

The added CI step has read-only repository permissions and stops on installation or version-check failure. No new privilege escalation is demonstrated. Downloaded extension behavior and the host SDK’s documented replacement failure remain unresolved.

Retained concerns
No architecture-level concerns identified.

Security review details

Security Blast Radius

  • inferred — The newly provisioned executable is within the CI process trust boundary and can potentially affect its checkout and inherited process environment. The checked workflow grants read-only repository permission, not issue-write or deployment authority. The declared extension capabilities are not proof that those external operations occur during CI.

Security Findings and Attack Paths

  • inferred — The installer introduces a downloaded-code trust dependency, but its package source is literal rather than derived from PR text or workflow inputs. No concrete privilege-gain or exfiltration path was established. Package implementation and installation lifecycle behavior remain outside the verified scope.

Trust Boundaries and Controls

  • observed — Exact version selection and a declared-version check constrain package selection but do not themselves authenticate package contents. The installer inherits its caller environment. The Linux checkout does not disable credential persistence, while the workflow limits repository permissions to contents: read.

Resilience and Maintainability Implications

  • inferred — Strict installer failure and ordinary CI step ordering prevent the checked job from treating failed provisioning as successful. Downloaded extension files are ignored rather than committed, and the workflow does not cache their directory. These controls limit durable rollout exposure without proving recovery safety for manual retries in a persistent checkout.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: certification against PM CLI 2026.10.4 and consolidation of dependency updates.
Description check ✅ Passed The description explains the certification, dependency updates, test results, and unresolved upstream SDK blocker. It is directly related to the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 4…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Commit to this branch
  • Create a new PR
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@sourcery-ai

sourcery-ai Bot commented Oct 4, 2026

Copy link
Copy Markdown

Reviewer's Guide

This PR certifies the repository against PM CLI/SDK 2026.10.4 by consolidating exact dependency updates, adding reproducible acceptance and blocker receipts, restoring managed pm-github artifacts in CI, and hardening merge-driver resolution. The certification is intentionally not ready to merge because the audited SDK still fails the existing replace-mode assertion for omitted raw governance keys, with no test weakening or workaround applied.

Sequence diagram for CI restoration and PM health verification

sequenceDiagram
    participant CI
    participant Installer as install-pm-github.sh
    participant PM as PM CLI 2026.10.4
    participant Registry as .managed-extensions.json
    participant Health as pm health

    CI->>Installer: run
    Installer->>PM: package install npm:pm-github@2026.10.4 --project
    PM-->>Installer: install managed extension artifacts
    Installer->>Registry: git restore
    Installer-->>CI: verified package and restored registry
    CI->>Health: --strict-exit --require-merge-drivers
    Health-->>CI: exit 0
Loading

Sequence diagram for SDK replace-mode regression

sequenceDiagram
    participant Repro as SDK-1394-repro.mjs
    participant SDK as createExtensionCommandSdk
    participant Callback as mutate callback
    participant Settings as settings.json

    Repro->>Settings: write governance.certification_leftover
    Repro->>SDK: mutateWorkspaceSettings
    SDK->>Callback: mutate(current)
    Callback-->>SDK: governance.preset only
    SDK-->>Repro: preview omits certification_leftover
    SDK->>Settings: persist mutation
    Settings-->>Repro: certification_leftover retained
    Repro->>Repro: assert.equal
Loading

Flow diagram for PM CLI 2026.10.4 certification status

flowchart TD
    A[Pin CLI SDK and PM tooling to 2026.10.4] --> B[Run launcher and acceptance checks]
    B --> C{All certification checks pass?}
    C -->|Yes| D[Certification ready]
    C -->|No| E[158 of 159 release checks pass]
    E --> F[SDK #1394 replace-mode blocker]
    F --> G[Not ready to merge]
    G --> H[Await upstream SDK fix]
Loading

File-Level Changes

Change Details Files
Pins the PM toolchain and records certification evidence, while explicitly preserving the known upstream SDK blocker.
  • Pins PM CLI/SDK, pm-ops, pm-changelog, TypeScript, and Node types to exact versions; retains the 2026.9.30 SDK compatibility floor.
  • Adds certification receipts covering release checks, audits, health, packaging, npm/native Bun acceptance, and the independent SDK #1394 reproduction.
  • Adds PM tracking records for the certification and SDK blocker, plus managed pm-github metadata.
package.json
package-lock.json
docs/certification-2026.10.4.md
docs/SDK-1394-repro.mjs
.agents/pm/chores/pm-kewj.toon
.agents/pm/issues/pm-yatu.toon
.agents/pm/history/pm-kewj.jsonl
.agents/pm/history/pm-yatu.jsonl
.agents/pm/extensions/.managed-extensions.json
Restores the managed pm-github extension during CI before strict project-health verification.
  • Installs and verifies pm-github 2026.10.4 through a fail-fast helper.
  • Restores the tracked managed registry after installation and ignores downloaded extension artifacts.
  • Invokes the restoration step before tracked PM health checks.
scripts/install-pm-github.sh
.github/workflows/ci.yml
.gitignore
Hardens merge-driver package detection so malformed or inaccessible module lookup paths fail closed without masking the installer error.
  • Treats lookup errors such as ENOTDIR, EACCES, EPERM, and ELOOP as uncertain package presence.
  • Preserves the original MODULE_NOT_FOUND diagnostic instead of skipping installation.
  • Adds regression coverage for a non-directory node_modules lookup path and malformed lookup behavior.
scripts/prepare-merge-driver.ts
tests/prepare-merge-driver.test.ts
Consolidates dependency automation updates and pins CodeQL actions to the specified audited revision.
  • Updates both CodeQL init and analyze actions to the exact shared SHA.
  • Includes the consolidated lockfile refresh for the dependency version changes.
.github/workflows/codeql.yml
package-lock.json

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@greptile-apps

greptile-apps Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

RetriggerConfidence Score: 5/5

[High risk] Upgrades build and test tooling to new versions.

No new finding blocks the added review receipts; the author's existing certification hold remains unchanged.

Summary

Pins PM tooling to 2026.10.4, restores managed pm-github before CI health checks, and adds merge-driver regression coverage.

  • Changes since the previous review only add review receipts to the certification document and tracker history.
  • No new actionable findings or confirmed repository-rule violations.
  • unbraind explicitly marks certification NOT READY because the known SDK replacement bug leaves the release gate red.
  • No numbered previous findings were supplied. GitHub thread retrieval was unavailable, so this review does not confirm the reported thread state.

Reviews (5) · Last reviewed commit: "Record exact candidate review and SDK ce..."

@unbraind

unbraind commented Oct 4, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai review
@greptileai
/gemini review

@coderabbitai

coderabbitai Bot commented Oct 4, 2026 •

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@unbraind

unbraind commented Oct 4, 2026

Copy link
Copy Markdown
Owner Author

Re this comment: This is an automatic-review eligibility skip for a repository below the star threshold, not a code review. A manual review request is being posted. No repository policy or gate was weakened to suppress it.

@unbraind

unbraind commented Oct 4, 2026

Copy link
Copy Markdown
Owner Author

Re this comment: Useful summary acknowledged. No new actionable finding was supplied. The unchanged replace-mode assertion remains red (158/159); independently reproduced upstream pm-cli #1394 owns the SDK defect. Neither the successful packed workflow nor this summary resolves that blocker.

@unbraind

unbraind commented Oct 4, 2026

Copy link
Copy Markdown
Owner Author

Re this comment: Useful summary acknowledged. No new actionable finding was supplied. The unchanged replace-mode assertion remains red (158/159); independently reproduced upstream pm-cli #1394 owns the SDK defect. Neither the successful packed workflow nor this summary resolves that blocker.

@unbraind

unbraind commented Oct 4, 2026

Copy link
Copy Markdown
Owner Author

Re this comment: This review body reports an exhausted review quota and supplies no source findings. It remains unavailable evidence, rather than approval; the reported tests and remaining blockers are independent.

@unbraind

unbraind commented Oct 4, 2026

Copy link
Copy Markdown
Owner Author

The edited review now covers 31ee4a3 with no actionable findings; acknowledged. The unchanged replace-mode guard still fails because of reproduced SDK issue #1394; passing configured coverage does not establish gate success. This replaces the earlier automatic-skip assessment. Other unavailable reviewer evidence remains pending.

@unbraind

unbraind commented Oct 4, 2026

Copy link
Copy Markdown
Owner Author

Review command completion acknowledged; the substantive summary explicitly covers 31ee4a3 and reports no actionable findings. The unchanged replace-mode guard still fails because of reproduced SDK issue #1394; passing configured coverage does not establish gate success.

@unbraind

unbraind commented Oct 4, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai review
@greptileai
/gemini review

@unbraind

unbraind commented Oct 4, 2026

Copy link
Copy Markdown
Owner Author

The newly edited summary skips automatic review of a72365d (fewer than10stars) while retaining its earlier source-candidate review. This skip is not approval of the final metadata head. Greptile independently reviewed the latest head; unchanged source receipts and earlier manual review remain scoped to their recorded SHAs.

@unbraind

unbraind commented Oct 4, 2026

Copy link
Copy Markdown
Owner Author

Acknowledged the updated substantive review explicitly covering a72365d, with no new actionable findings. Known certification blockers remain documented; zero unresolved threads and green configured checks do not replace missing reviewer evidence.

@coderabbitai

coderabbitai Bot commented Oct 4, 2026 •

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@unbraind

unbraind commented Oct 4, 2026

Copy link
Copy Markdown
Owner Author

The re-review command was rate limited. This is unavailable review evidence, not approval. The earlier substantive source review remains scoped to its recorded commit; the final metadata head is independently covered by current CI and Greptile.

@unbraind

unbraind commented Oct 4, 2026

Copy link
Copy Markdown
Owner Author

The edited comment now explicitly rate-limits review of the final metadata diff. The retained no-actionable summary describes the earlier source candidate. This does not constitute exact-final-head review clearance; quota and missing reviewer responses remain open in the handoff.

@unbraind

unbraind commented Oct 5, 2026

Copy link
Copy Markdown
Owner Author

Closing as superseded. Fleet rule (2026-10-04): pm CLI/SDK bumps no longer go through hand-written certification PRs; the daily grouped pm-toolchain Dependabot PR plus dependabot-auto-merge.yml (#118/#120) carries them, and the required checks are the certification. The upgrade itself remains blocked upstream by unbraind/pm-cli#1394 (settings replacement keeps removed raw keys), which this PR reproduced; when a pm release fixes #1394, the next pm-toolchain PR will land on its own. The branch is left in place for reference.

@unbraind unbraind closed this Oct 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant