Skip to content

Improve CLI startup with compile cache#48

Merged
unbraind merged 2 commits into
mainfrom
codex/startup-compile-cache-fast-version
May 23, 2026
Merged

Improve CLI startup with compile cache#48
unbraind merged 2 commits into
mainfrom
codex/startup-compile-cache-fast-version

Conversation

@unbraind
Copy link
Copy Markdown
Owner

@unbraind unbraind commented May 23, 2026

Summary

  • Enable Node's compile cache from the lightweight CLI entrypoint for normal commands, with PM_CLI_DISABLE_COMPILE_CACHE=1 and PM_CLI_COMPILE_CACHE_DIR escape hatches.
  • Keep pm --no-extensions --version and pm --version --no-extensions on the fast package-json version path instead of importing the full CLI.
  • Add release-readiness coverage for the startup bootstrap behavior and record pm evidence from startup, store/index, observability, and manual dogfood lanes.
  • Backfill missing resolution metadata on historical pm-ot8r so pm validate --check-resolution --check-history-drift is clean.

Validation

  • Manual isolated temp-project smoke using repo dist/cli.js with separate PM_PATH and PM_GLOBAL_PATH.
  • PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/integration/release-readiness-runtime.spec.ts --reporter=dot
  • node scripts/smoke-npx-from-pack.mjs
  • node scripts/release/run-gates.mjs --telemetry-mode required --max-sentry-critical 10 --max-sentry-high 20 --max-telemetry-error-rate 10 --json
  • pm validate --check-resolution --check-history-drift --json
  • pm health --check-only --summary --json

Observability

Sentry/telemetry required gate passed with Sentry critical/high/total 0/0/0, telemetry finish error rate 3%, and missing error-code rows 0.

Summary by Sourcery

Optimize CLI startup behavior while extending release-readiness coverage and backfilling package manager history metadata.

New Features:

  • Add optional Node compile cache initialization to the CLI entrypoint with environment-based escape hatches.

Bug Fixes:

  • Ensure version output remains on the fast package-json path when using the --no-extensions flag.
  • Backfill missing resolution and history metadata for existing pm agents so validation checks run cleanly.

Enhancements:

  • Expand release-readiness runtime tests to cover CLI bootstrap behavior and compile cache configuration.

Enable Node's compile cache from the lightweight CLI entrypoint for normal commands while keeping the existing package-json --version fast path ahead of the main CLI import.

Also keep --no-extensions --version on that fast path, add release-readiness coverage, record startup profiling/manual dogfood/observability evidence in pm, and backfill one missing closed-item resolution record so pm validate is clean.

Verification: manual isolated temp-project smoke; PM_RUN_TESTS_SKIP_BUILD=1 release-readiness regression; node scripts/smoke-npx-from-pack.mjs; node scripts/release/run-gates.mjs --telemetry-mode required --max-sentry-critical 10 --max-sentry-high 20 --max-telemetry-error-rate 10 --json; pm validate --check-resolution --check-history-drift; pm health --check-only --summary.
@sourcery-ai
Copy link
Copy Markdown

sourcery-ai Bot commented May 23, 2026

Reviewer's Guide

Enable Node’s compile cache for the main CLI entrypoint, keep specific version flags on the fast package-json path, add release-readiness coverage around startup behavior, and backfill resolution metadata in agent history files for clean validation.

Sequence diagram for updated CLI startup with compile cache

sequenceDiagram
    actor User
    participant Process
    participant cli_ts as cli_ts
    participant NodeModule as nodeModule
    participant CliMain as cli_main_js

    User ->> Process: pm [args]
    Process ->> cli_ts: start CLI entrypoint
    Process ->> cli_ts: printFastVersionIfRequested()
    alt [only --version or -V (ignoring --no-extensions)]
        cli_ts ->> Process: console.log(version)
        Process -->> User: exit
    else [other args]
        cli_ts ->> cli_ts: enableNodeCompileCache()
        alt [PM_CLI_DISABLE_COMPILE_CACHE != "1" and enableCompileCache available]
            cli_ts ->> NodeModule: enableCompileCache(cacheDir)
        else [compile cache disabled or unavailable]
            cli_ts ->> cli_ts: skip compile cache
        end
        cli_ts ->> CliMain: import("./cli/main.js")
        CliMain ->> User: execute full CLI
    end
Loading

File-Level Changes

Change Details Files
Add optional Node compile cache initialization to the CLI entrypoint before loading the main implementation.
  • Import node:module and node:os to support compile cache and temp directory handling.
  • Introduce enableNodeCompileCache helper that calls nodeModule.enableCompileCache when available, respecting PM_CLI_DISABLE_COMPILE_CACHE and PM_CLI_COMPILE_CACHE_DIR environment variables.
  • Use the OS temp directory with a pm-specific subdirectory as the default cache location.
  • Ensure compile cache failures are swallowed so they never block CLI startup.
  • Invoke compile cache setup when the fast version path is not taken, immediately before importing the main CLI module.
src/cli.ts
Extend the fast version-printing path to handle --no-extensions combined with version flags without loading the full CLI.
  • Normalize CLI arguments by filtering out --no-extensions before checking for version flags.
  • Retain the package-json-based version output logic and bypass main CLI import when only version is requested (with or without --no-extensions).
src/cli.ts
Expand release-readiness integration tests to validate new startup behavior and fast version semantics.
  • Add coverage to assert that pm --no-extensions --version returns the expected version and clean stderr.
  • Assert that the CLI entrypoint source contains the new compile cache helper and environment guard symbol names while keeping Sentry bootstrap code out of the entrypoint.
tests/integration/release-readiness-runtime.spec.ts
Backfill agent feature/history metadata so validation checks pass cleanly on historical runs.
  • Update feature description files for affected agents to reflect the corrected metadata.
  • Adjust history JSONL entries for specific agent runs, including pm-ot8r, to include missing resolution metadata.
  • Update corresponding issue description for pm-ot8r to stay consistent with the history data.
.agents/pm/features/pm-gt82.toon
.agents/pm/features/pm-rnpb.toon
.agents/pm/history/pm-gt82.jsonl
.agents/pm/history/pm-ot8r.jsonl
.agents/pm/history/pm-rnpb.jsonl
.agents/pm/issues/pm-ot8r.toon

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

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 23, 2026

Review Change Stack

Warning

Review limit reached

@unbraind, we couldn't start this review because you've used your available PR reviews for now.

Your plan currently allows 1 review/hour. Refill in 43 minutes and 59 seconds.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more review capacity refills, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than trial, open-source, and free plans. In all cases, review capacity refills continuously over time.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: b6754427-31e8-4ca7-becb-f2fea7b08dfb

📥 Commits

Reviewing files that changed from the base of the PR and between da55067 and 3d61a23.

📒 Files selected for processing (4)
  • .agents/pm/features/pm-gt82.toon
  • .agents/pm/history/pm-gt82.jsonl
  • src/cli.ts
  • tests/integration/release-readiness-runtime.spec.ts
📝 Walkthrough

Walkthrough

This PR implements Node compile-cache bootstrap for CLI startup performance, conditionally enabled at runtime via environment variables while preserving the fast --version path. Tests validate version flag handling and cache enablement. Feature tracking records work progress, test results, and evidence from profiling, observability, and release-gate verification.

Changes

Node Compile Cache Implementation and Tests

Layer / File(s) Summary
enableNodeCompileCache helper and startup integration
src/cli.ts
Introduces Node compile-cache support via environment-variable controls (PM_CLI_DISABLE_COMPILE_CACHE, PM_CLI_COMPILE_CACHE_DIR). Defines enableNodeCompileCache() helper that conditionally calls Node's enableCompileCache with graceful error handling to avoid blocking CLI startup. Updates --version flag detection to ignore --no-extensions when determining if only a version flag was supplied. Calls the helper at CLI startup before loading ./cli/main.js.
Test coverage for compile cache and version handling
tests/integration/release-readiness-runtime.spec.ts
Adds assertions validating --no-extensions --version returns expected version on stdout with empty stderr. Extends Sentry lazy-startup test with two new expectations: CLI entrypoint includes compile cache enablement, and PM_CLI_DISABLE_COMPILE_CACHE flag handling logic.

Feature and Project Management Tracking

Layer / File(s) Summary
Feature record updates for pm-gt82 and pm-rnpb
.agents/pm/features/pm-gt82.toon, .agents/pm/features/pm-rnpb.toon
Transitions pm-gt82 feature from open to in_progress with refreshed timestamp and new comment. Extends test tracking by adding additional run-gates, startup regression selection, semantic dogfood run, and recording a failed test run. Updates pm-rnpb feature timestamp and adds new evidence comment describing continuation of active work under pm-gt82 with startup and token-efficiency claims.
Detailed history logs and metadata backfill
.agents/pm/history/pm-gt82.jsonl, .agents/pm/history/pm-ot8r.jsonl, .agents/pm/history/pm-rnpb.jsonl, .agents/pm/issues/pm-ot8r.toon
Appends 14 history entries to pm-gt82 recording agent assignment, in_progress status, implementation approach (guarded compile-cache bootstrap with env controls), observability/privacy verification, store/index investigation, startup profiling evidence, manual smoke-test coverage, failed test run summary, and release-gate execution results. Backfills missing resolution/expected/actual result metadata fields on pm-ot8r issue and history. Adds comment history record to pm-rnpb.

🎯 2 (Simple) | ⏱️ ~12 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Improve CLI startup with compile cache' directly and clearly summarizes the primary change—enabling Node's compile cache at CLI startup.
Description check ✅ Passed The description is directly related to the changeset, providing a clear summary of changes, validation steps, and observability results.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


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 and usage tips.

Copy link
Copy Markdown

@sourcery-ai sourcery-ai Bot left a comment

Choose a reason for hiding this comment

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

Hey - I've reviewed your changes and they look great!


Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request implements a startup optimization for the CLI by enabling the Node.js compile cache and refining the fast-path version check to correctly handle the --no-extensions flag. It also includes extensive updates to internal project tracking and history files, documenting profiling evidence and implementation progress. Feedback was provided regarding the potential for permission conflicts when using a shared temporary directory for the compile cache, suggesting a user-specific naming convention to ensure the cache remains writable across different users.

Comment thread src/cli.ts Outdated
if (typeof enableCompileCache !== "function" || process.env.PM_CLI_DISABLE_COMPILE_CACHE === "1") {
return;
}
const cacheDir = process.env.PM_CLI_COMPILE_CACHE_DIR ?? path.join(os.tmpdir(), "pm-cli-node-compile-cache");
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

Using a fixed directory name in a shared temporary location (like /tmp on Linux) can lead to permission conflicts on multi-user systems. If one user runs the CLI, the directory is created with their ownership, which may prevent other users from writing to the cache, effectively disabling the optimization for them. Consider making the cache directory user-specific by appending the username from environment variables to ensure the cache is writable for all users.

  const cacheDir = process.env.PM_CLI_COMPILE_CACHE_DIR ?? path.join(os.tmpdir(), `pm-cli-node-compile-cache-${process.env.USER || process.env.USERNAME || "shared"}`);

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
tests/integration/release-readiness-runtime.spec.ts (1)

468-471: ⚡ Quick win

Add the reverse flag order case for --version parity.

This test only validates --no-extensions --version. Add --version --no-extensions too, so the stated contract is explicitly covered.

Suggested test addition
       const noExtensionsVersionResult = context.runCli(["--no-extensions", "--version"]);
       expect(noExtensionsVersionResult.code).toBe(0);
       expect(noExtensionsVersionResult.stdout.trim()).toBe(expectedVersion);
       expect(noExtensionsVersionResult.stderr.trim()).toBe("");
+
+      const versionThenNoExtensionsResult = context.runCli(["--version", "--no-extensions"]);
+      expect(versionThenNoExtensionsResult.code).toBe(0);
+      expect(versionThenNoExtensionsResult.stdout.trim()).toBe(expectedVersion);
+      expect(versionThenNoExtensionsResult.stderr.trim()).toBe("");
🤖 Prompt for 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.

In `@tests/integration/release-readiness-runtime.spec.ts` around lines 468 - 471,
Add a mirrored assertion that verifies flag-order parity by calling
context.runCli with ["--version", "--no-extensions"] (similar to the existing
noExtensionsVersionResult) and assert the returned process code, stdout.trim()
equals expectedVersion, and stderr.trim() is empty; use a distinct variable name
(e.g., versionNoExtensionsResult) and mirror the three expects from the existing
block that uses context.runCli, expectedVersion, and noExtensionsVersionResult
to keep behavior consistent.
🤖 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/history/pm-rnpb.jsonl:
- Line 507: Revert the direct edit that added metadata.comments[213] and the
metadata.updated_at replacement and instead record the continuation via the
official PM workflow/tooling; specifically remove the added JSON entry at
metadata.comments[213] and undo the metadata.updated_at change, then re-create
the note using the PM system-of-record process (referencing the child feature
pm-gt82 and the continuity text) rather than hand-editing the PM history file.

In @.agents/pm/issues/pm-ot8r.toon:
- Line 9: Revert the direct edit to the .agents/pm record (the updated_at change
in the .agents/pm/issues/pm-ot8r.toon file) and instead apply the metadata
update through the PM system workflow/commands that produce record mutations;
locate the PM record identified by "pm-ot8r" in the .agents/pm/* set, use the PM
CLI/API or UI to set the updated_at value (or trigger the intended record
update) so the system-of-record is the source of truth, and remove any manual
file changes to .agents/pm/** to comply with the repository rule.

---

Nitpick comments:
In `@tests/integration/release-readiness-runtime.spec.ts`:
- Around line 468-471: Add a mirrored assertion that verifies flag-order parity
by calling context.runCli with ["--version", "--no-extensions"] (similar to the
existing noExtensionsVersionResult) and assert the returned process code,
stdout.trim() equals expectedVersion, and stderr.trim() is empty; use a distinct
variable name (e.g., versionNoExtensionsResult) and mirror the three expects
from the existing block that uses context.runCli, expectedVersion, and
noExtensionsVersionResult to keep behavior consistent.
🪄 Autofix (Beta)

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: Repository UI (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: 17cba56a-d82f-4283-a0a9-6c52aea083ff

📥 Commits

Reviewing files that changed from the base of the PR and between 884afd9 and da55067.

📒 Files selected for processing (8)
  • .agents/pm/features/pm-gt82.toon
  • .agents/pm/features/pm-rnpb.toon
  • .agents/pm/history/pm-gt82.jsonl
  • .agents/pm/history/pm-ot8r.jsonl
  • .agents/pm/history/pm-rnpb.jsonl
  • .agents/pm/issues/pm-ot8r.toon
  • src/cli.ts
  • tests/integration/release-readiness-runtime.spec.ts

{"ts":"2026-05-23T10:06:56.111Z","author":"codex-extensive-audit","op":"comment_add","patch":[{"op":"add","path":"/metadata/comments/211","value":{"created_at":"2026-05-23T10:06:56.111Z","author":"codex-extensive-audit","text":"Post-review final gate 2026-05-23: after applying Gemini's regex precompile feedback, reran node scripts/release/run-gates.mjs --telemetry-mode required --max-sentry-critical 10 --max-sentry-high 20 --max-telemetry-error-rate 10 --json. Passed: build, typecheck, docs-skills, static quality, coverage 100 files / 1484 tests / 100%, version policy 2026.5.23, secret scan, npx packed-package smoke, package-first dogfood 84 workflows, npm pack dry-run, compatibility check from base 2026.5.18, and required Sentry/telemetry gate with Sentry critical=0 high=0 total=0 and telemetry finish_error_rate_pct=3.08, failures_without_error_code_rows=0."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-05-23T10:06:56.111Z"}],"before_hash":"5612d6031d3316d8a28bf31889a5f66144d8ef90838b74f63da473858979bc08","after_hash":"b316399d26f726dcc489d302faea8ea20b17d10ef1c5a6da9ca39c7c328274a1"}
{"ts":"2026-05-23T10:14:18.812Z","author":"codex-extensive-audit","op":"comment_add","patch":[{"op":"add","path":"/metadata/comments/212","value":{"created_at":"2026-05-23T10:14:18.812Z","author":"codex-extensive-audit","text":"Merge evidence 2026-05-23: PR #46 merged into main at 2026-05-23T10:13:45Z as merge commit df5b2c2274ca24b0d7913d54798d94699da49b10. Final PR head fb62eac4 had all GitHub checks green: CI build foundation, ubuntu Node 20 tests, macOS Node 20 tests, coverage gate, typecheck, static, compat, smokes, CodeRabbit status, and Sourcery status. Codex review found no major issues; Gemini actionable regex-precompile feedback was applied before merge; CodeRabbit and Sourcery review text remained rate-limited/no actionable feedback. Local post-merge pm validate --check-resolution --check-history-drift returned ok with no warnings."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-05-23T10:14:18.812Z"}],"before_hash":"b316399d26f726dcc489d302faea8ea20b17d10ef1c5a6da9ca39c7c328274a1","after_hash":"f5d7e7b463ff0141e950d723438cdac6e6f7b584f8cf6b63b2af1375ff6ca311"}
{"ts":"2026-05-23T10:14:37.483Z","author":"codex-extensive-audit","op":"release","patch":[{"op":"remove","path":"/metadata/assignee"},{"op":"replace","path":"/metadata/updated_at","value":"2026-05-23T10:14:37.483Z"}],"before_hash":"f5d7e7b463ff0141e950d723438cdac6e6f7b584f8cf6b63b2af1375ff6ca311","after_hash":"6dd5df5ce5612dbbe13fb3bc3f46344b501567473c23695a7af52aeb4d0109b1","message":"Released claim after PR #46 merge and post-merge validation; parent remains in progress for future active work."}
{"ts":"2026-05-23T10:43:54.715Z","author":"codex-extensive-agent","op":"comment_add","patch":[{"op":"add","path":"/metadata/comments/213","value":{"created_at":"2026-05-23T10:43:54.715Z","author":"codex-extensive-agent","text":"Continuation 2026-05-23: active work resumed under existing child feature pm-gt82 for sub-200ms startup and agent token-efficiency improvements. No duplicate item created after pm context/search/list-open/list-in-progress orientation."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-05-23T10:43:54.715Z"}],"before_hash":"6dd5df5ce5612dbbe13fb3bc3f46344b501567473c23695a7af52aeb4d0109b1","after_hash":"594d3f4a8648ac33f174521c3f445b5cc8e11133c219225145ad2ff10ce00869"}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Direct edit to PM system-of-record file should be avoided.

This change writes directly to .agents/pm/history/pm-rnpb.jsonl; update this record via the designated PM workflow/tooling instead of hand-editing tracked .agents/pm files.

As per coding guidelines, .agents/pm/**: pm is the system of record. Do not edit .agents/pm files directly.

🤖 Prompt for 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.

In @.agents/pm/history/pm-rnpb.jsonl at line 507, Revert the direct edit that
added metadata.comments[213] and the metadata.updated_at replacement and instead
record the continuation via the official PM workflow/tooling; specifically
remove the added JSON entry at metadata.comments[213] and undo the
metadata.updated_at change, then re-create the note using the PM
system-of-record process (referencing the child feature pm-gt82 and the
continuity text) rather than hand-editing the PM history file.

tags[0]:
created_at: "2026-05-22T15:44:28.669Z"
updated_at: "2026-05-23T10:23:23.319Z"
updated_at: "2026-05-23T11:01:01.607Z"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Use the PM system interface instead of direct file edits

These metadata changes are applied by directly editing a .agents/pm record file, which violates the repository rule for PM system-of-record files. Please perform this update through the PM workflow/commands that generate the record mutation.

As per coding guidelines: .agents/pm/**: pm is the system of record. Do not edit .agents/pm files directly.

Also applies to: 12-14

🤖 Prompt for 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.

In @.agents/pm/issues/pm-ot8r.toon at line 9, Revert the direct edit to the
.agents/pm record (the updated_at change in the .agents/pm/issues/pm-ot8r.toon
file) and instead apply the metadata update through the PM system
workflow/commands that produce record mutations; locate the PM record identified
by "pm-ot8r" in the .agents/pm/* set, use the PM CLI/API or UI to set the
updated_at value (or trigger the intended record update) so the system-of-record
is the source of truth, and remove any manual file changes to .agents/pm/** to
comply with the repository rule.

Add reverse-order --version coverage and use a per-user default Node compile-cache directory to avoid shared temp permission conflicts while preserving the explicit cache-dir override.

Verification: pnpm build; PM_RUN_TESTS_SKIP_BUILD=1 release-readiness regression; node scripts/check-secrets.mjs; pm validate --check-resolution --check-history-drift --json; full release gate with required Sentry/telemetry.
@unbraind
Copy link
Copy Markdown
Owner Author

Addressed review feedback in 3d61a23: added reverse-order --version --no-extensions coverage, changed the default compile-cache directory to include a per-user key to avoid shared temp permission conflicts, and reran the full required release gate. The CodeRabbit .agents/pm direct-edit comments are false positives: those tracker/history changes were produced through pm commands as required by this repository.

@unbraind unbraind merged commit fa06578 into main May 23, 2026
10 checks passed
@unbraind unbraind deleted the codex/startup-compile-cache-fast-version branch May 23, 2026 11:24
unbraind added a commit that referenced this pull request May 23, 2026
Record PR #48 merge evidence, release the active pm-gt82 claim, and leave the broader startup/runtime-index work open for future slices.

Verification: pm validate --check-resolution --check-history-drift --json; pm health --check-only --summary --json.
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