Skip to content

Improve agent read-path token efficiency#39

Merged
unbraind merged 2 commits into
mainfrom
audit/get-full-history-token-2026-05-21
May 21, 2026
Merged

Improve agent read-path token efficiency#39
unbraind merged 2 commits into
mainfrom
audit/get-full-history-token-2026-05-21

Conversation

@unbraind
Copy link
Copy Markdown
Owner

@unbraind unbraind commented May 21, 2026

Summary

  • Add explicit pm get --full support and expose it through runtime contracts plus shell completions.
  • Keep narrow pm get --fields ... mutually exclusive with --full, while --full maps to deep item reads.
  • Avoid duplicated history --diff payloads when history is already compact, and point health quick-check docs/help at pm health --check-only --summary --json.
  • Record detailed pm-rnpb evidence from sub-agent audits, manual temp dogfood, observability/security checks, and verification.

Verification

  • PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/get-append-command.spec.ts tests/unit/contracts-command.spec.ts tests/unit/completion-command.spec.ts tests/unit/error-guidance.spec.ts tests/unit/history-activity-command.spec.ts tests/integration/help-runtime.spec.ts --reporter=dot (6 files / 172 tests)
  • node scripts/check-secrets.mjs
  • pnpm quality:static
  • pm health --check-only --summary --json (0 warnings)
  • pm validate --check-resolution --json
  • manual isolated temp smoke for pm get --full, brief projection, and --full/--fields conflict
  • node scripts/dogfood-package-first.mjs (84 workflows)
  • node scripts/release/run-gates.mjs --telemetry-mode required --max-sentry-critical 10 --max-sentry-high 20 --max-telemetry-error-rate 10 --json (97 files / 1409 tests, 100% coverage, required Sentry/telemetry green)

Notes

  • Verified unbraind/pm-cli is the actual GitHub repository and unbrained/pm-cli does not resolve, so package catalog URLs were not changed.
  • Existing history drift remains tracked under pm-xk39; this PR does not broaden into history redaction work.

Summary by Sourcery

Add explicit full-item reads to the get command contracts and CLI while tightening history diff behavior and updating health-check guidance.

New Features:

  • Expose an explicit --full projection option for the get command across CLI, runtime contracts, and shell completions.

Bug Fixes:

  • Avoid emitting redundant history diff payloads when history output is already compact.

Enhancements:

  • Clarify and enforce mutual exclusivity between full item reads and custom field projections in the get command.
  • Align help text and examples toward using pm health --check-only --summary --json for minimal machine-readable health checks.

Documentation:

  • Update command and configuration documentation and CLI help to reflect the preferred health check invocation and behavior.

Tests:

  • Extend unit coverage for get projections, history diff behavior, CLI contracts, and shell completion scripts.

Add explicit pm get --full support so agents can use the same full-read muscle memory that list/search/history/activity already expose, while keeping --fields mutually exclusive for narrow projections.

Avoid duplicated compact history diff payloads, steer health quick-check docs/help toward --summary JSON, and record pm-rnpb evidence from sub-agent audits, manual temp dogfood, secret scan, static quality, and the full release gate.
@sourcery-ai
Copy link
Copy Markdown

sourcery-ai Bot commented May 21, 2026

Reviewer's Guide

Adds explicit --full support to pm get (mapped to deep item reads and mutually exclusive with --fields), wires it through CLI options, runtime contracts, and shell completions, and optimizes history --diff output plus updates health/help docs for token-efficient read paths.

Sequence diagram for pm get --full and --fields handling

sequenceDiagram
  actor User
  participant PmCli
  participant GetCommand
  participant runGet

  User->>PmCli: pm get <id> --full [--fields]
  PmCli->>GetCommand: registerListQueryCommands
  PmCli->>GetCommand: execute get action
  GetCommand->>runGet: runGet(id, globalOptions, { depth, full, fields })

  alt [options.full and options.fields]
    runGet-->>GetCommand: throw PmCliError
    GetCommand-->>User: exit EXIT_CODE.USAGE
  else [options.full and not options.fields]
    runGet->>runGet: depth = "deep"
    runGet->>runGet: parseGetFields(options.fields)
    runGet-->>GetCommand: GetResult (full item read)
    GetCommand-->>User: printResult
  else [not options.full]
    runGet->>runGet: depth = parseGetDepth(options.depth)
    runGet->>runGet: parseGetFields(options.fields)
    runGet-->>GetCommand: GetResult (depth-based read)
    GetCommand-->>User: printResult
  end
Loading

File-Level Changes

Change Details Files
Expose explicit pm get --full projection flag and wire it through CLI handling and runtime contracts.
  • Add full option to get command registration and propagate it into runGet options.
  • In runGet, treat --full as equivalent to depth=deep and enforce mutual exclusivity with --fields, emitting a usage error when both are provided.
  • Extend CLI contracts so get includes --full in GET_FLAG_CONTRACTS and as an optional parameter in the get action schema.
  • Expand unit coverage to validate explicit full reads, full overriding depth, and full/fields conflict behavior.
src/cli/register-list-query.ts
src/cli/commands/get.ts
src/sdk/cli-contracts.ts
tests/unit/get-append-command.spec.ts
tests/unit/contracts-command.spec.ts
Add shell-completion coverage for pm get projection flags across bash, zsh, and fish.
  • Update bash completion generator to provide depth, full, and fields flags for the get subcommand.
  • Update zsh completion generator with descriptions and value sets for get depth/full/fields flags.
  • Add fish completion entries for get depth/full/fields.
  • Add unit tests asserting that generated completion scripts include the new get flags across all supported shells.
src/cli/commands/completion.ts
tests/unit/completion-command.spec.ts
Avoid redundant history --diff payloads when history is already compact, and document preferred health quick-check invocation.
  • Change runHistory so diff data is omitted when compact history is used, preventing duplicate payloads in compact mode.
  • Add a unit test to ensure history --diff with compact output does not emit a diff array.
  • Update help content and docs to recommend pm health --check-only --summary --json as the smallest machine-readable health gate.
  • Refresh configuration and command docs to use the updated health command form.
src/cli/commands/history.ts
tests/unit/history-activity-command.spec.ts
src/cli/help-content.ts
docs/COMMANDS.md
docs/CONFIGURATION.md
Record internal pm-rnpb feature and history evidence artifacts.
  • Add or update pm-rnpb feature description file under .agents/pm/features.
  • Capture corresponding pm-rnpb history log entries under .agents/pm/history.
.agents/pm/features/pm-rnpb.toon
.agents/pm/history/pm-rnpb.jsonl

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 21, 2026

Review Change Stack

Warning

Rate limit exceeded

@unbraind has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 36 minutes and 3 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, 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 the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

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: cd0bb37d-1c46-4291-b8e9-14a51f823da9

📥 Commits

Reviewing files that changed from the base of the PR and between a7b00f6 and cc61386.

📒 Files selected for processing (8)
  • .agents/pm/features/pm-rnpb.toon
  • .agents/pm/history/pm-rnpb.jsonl
  • src/cli/commands/get.ts
  • src/cli/commands/history.ts
  • src/cli/register-list-query.ts
  • src/sdk/cli-contracts.ts
  • tests/unit/get-append-command.spec.ts
  • tests/unit/history-activity-command.spec.ts
📝 Walkthrough

Walkthrough

This PR adds a --full flag to the pm get command that forces deep item retrieval and mutually excludes the --fields option, updates shell completions and CLI contracts to surface the new flag, fixes history diff generation to skip compact mode, and synchronizes documentation examples and tracking records.

Changes

pm get --full flag feature and supporting changes

Layer / File(s) Summary
Get command --full flag implementation
src/cli/commands/get.ts, src/cli/register-list-query.ts, tests/unit/get-append-command.spec.ts
GetOptions gains a full?: boolean field; runGet validates that full and fields are mutually exclusive, forces depth to "deep" when full is enabled, and tests confirm full-depth projection behavior and validation error when both flags are present.
Shell completions and CLI contracts
src/cli/commands/completion.ts, src/sdk/cli-contracts.ts, tests/unit/completion-command.spec.ts, tests/unit/contracts-command.spec.ts
Bash, zsh, and fish completion scripts updated to include --depth, --full, and --fields options for the get subcommand; GET_FLAG_CONTRACTS and tool action parameter schema expanded to include full as an optional parameter; tests validate completion generation and flag contract assertions.
History compact mode diff fix
src/cli/commands/history.ts, tests/unit/history-activity-command.spec.ts
History diff computation now gates on options.diff && !compact, preventing diff payload generation in compact mode and eliminating redundant diff payloads; test coverage validates that diff remains undefined when compact mode is active.
Documentation and help content updates
docs/COMMANDS.md, docs/CONFIGURATION.md, src/cli/help-content.ts
Health command examples updated across documentation and help bundles to use pm health --check-only --summary --json (the smallest machine-readable health gate) instead of previous variants, clarifying the preferred minimal health check invocation.
Agent tracking and feature metadata updates
.agents/pm/features/pm-rnpb.toon, .agents/pm/history/pm-rnpb.jsonl
Feature record updated with new updated_at timestamp and codex-extensive-audit assignee; evidence entries document --full implementation, --fields incompatibility, compact history diff improvements, and health example preferences; history entries track verification results, test matrix updates, and public documentation synchronization.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

  • unbraind/pm-cli#35: Both PRs modify compact/full projection behavior in pm history and related command logic, particularly how compact mode affects returned diff/payloads; this PR's history diff fix aligns directly with the retrieved PR's compact mode token-efficiency work.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Improve agent read-path token efficiency' directly reflects the primary optimization goal of the PR and aligns with the main changes in the changeset.
Description check ✅ Passed The description comprehensively covers the PR's four main objectives: adding --full support, enforcing --fields exclusivity, avoiding duplicate history diffs, and updating health check documentation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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 left some high level feedback:

  • The get command help text describes --full as equivalent to --depth deep, but the implementation actually makes --full override any provided --depth; consider clarifying the description to explicitly state the precedence to avoid user confusion.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The `get` command help text describes `--full` as equivalent to `--depth deep`, but the implementation actually makes `--full` override any provided `--depth`; consider clarifying the description to explicitly state the precedence to avoid user confusion.

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 improves the agent UX and token efficiency of the pm-cli tool. Key changes include the addition of a --full flag to the get command (equivalent to --depth deep), updated shell completions, and an optimization in the history command to omit the top-level diff field when in compact mode. Documentation and help examples were also updated to favor more concise machine-readable outputs. Feedback identifies a potential breaking change in the history command's JSON schema and suggests enforcing mutual exclusivity between the new --full flag and the existing --depth flag for better command consistency.

Comment thread src/cli/commands/history.ts Outdated
};

if (options.diff) {
if (options.diff && !compact) {
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

This change introduces a breaking change to the JSON output schema for the history command. By omitting the root diff field when compact is true (which is the default), any existing scripts or integrations that rely on result.diff will break when running standard history commands with the --diff flag.

While the information is available within compact_history items, removing the top-level field is a significant change. If token efficiency is the priority, this is a valid optimization, but it should be noted as a breaking change in the release notes.

Comment thread src/cli/commands/get.ts Outdated
Comment on lines +179 to +181
if (options.full && options.fields !== undefined) {
throw new PmCliError("Get projection options are mutually exclusive. Use either --full or --fields.", EXIT_CODE.USAGE);
}
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

The mutual exclusivity check currently only covers --full and --fields. However, using --full alongside --depth is also contradictory (e.g., --full --depth brief).

To ensure a consistent UX and prevent ambiguous command intent, consider including --depth in the exclusivity check. This would also align with the help text which describes --full as an explicit alternative to --depth deep.

Suggested change
if (options.full && options.fields !== undefined) {
throw new PmCliError("Get projection options are mutually exclusive. Use either --full or --fields.", EXIT_CODE.USAGE);
}
if (options.full && (options.fields !== undefined || options.depth !== undefined)) {
throw new PmCliError("Get projection options are mutually exclusive. Use either --full or --fields/--depth.", EXIT_CODE.USAGE);
}

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: 3

🤖 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/features/pm-rnpb.toon:
- Around line 9-11: This PR directly edited system-of-record files under
.agents/pm (e.g., the pm-rnpb.toon record with updated_at/deadline/assignee
fields and other occurrences listed), which is disallowed; instead revert those
manual edits and re-apply the intended changes through the pm workflow/mechanism
that owns .agents/pm records (do not commit direct changes to .agents/pm/**),
and ensure the commit removes all manual modifications flagged (lines around the
pm-rnpb.toon entries and the other listed occurrences) so the authoritative pm
process makes the update.

In @.agents/pm/history/pm-rnpb.jsonl:
- Around line 443-458: This PR directly mutates the autogenerated agent history
(pm-rnpb.jsonl) which must be produced by the pm workflow; revert the manual
edits to the history file, remove the file-level changes from the commit, and
regenerate/apply the intended updates via the approved pm workflow (run the pm
tool that produces history entries for pm-rnpb, e.g., the agent
run/claim/comment/files_add/tests_add steps you intended) so the history is
authored by the system of record; ensure the final commit contains only the
pm-generated output (and not a manual edit), then re-run the verification
commands you listed (tests/static gates) before pushing.
🪄 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: 2debf4b1-fead-4e7c-afe2-5ac2c9038240

📥 Commits

Reviewing files that changed from the base of the PR and between 6c924a4 and a7b00f6.

📒 Files selected for processing (14)
  • .agents/pm/features/pm-rnpb.toon
  • .agents/pm/history/pm-rnpb.jsonl
  • docs/COMMANDS.md
  • docs/CONFIGURATION.md
  • src/cli/commands/completion.ts
  • src/cli/commands/get.ts
  • src/cli/commands/history.ts
  • src/cli/help-content.ts
  • src/cli/register-list-query.ts
  • src/sdk/cli-contracts.ts
  • tests/unit/completion-command.spec.ts
  • tests/unit/contracts-command.spec.ts
  • tests/unit/get-append-command.spec.ts
  • tests/unit/history-activity-command.spec.ts

Comment thread .agents/pm/features/pm-rnpb.toon Outdated
Comment on lines +443 to +458
{"ts":"2026-05-21T20:35:53.078Z","author":"codex-extensive-audit","op":"claim","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-05-21T20:35:53.078Z"},{"op":"add","path":"/metadata/assignee","value":"codex-extensive-audit"}],"before_hash":"6f67bd13c387dbd88bf438f6845d8723ad58571089d9edd8f8cfdd084485f087","after_hash":"c0567b96151d1feae003f1bd038aaca2ed977244257b36982b2a875a02e7b9f5","message":"Continuing broad agent-UX/token/telemetry dogfood audit and implementation pass"}
{"ts":"2026-05-21T20:35:54.955Z","author":"codex-extensive-audit","op":"comment_add","patch":[{"op":"add","path":"/metadata/comments/171","value":{"created_at":"2026-05-21T20:35:54.955Z","author":"codex-extensive-audit","text":"Investigation note: duplicate check reused existing active feature pm-rnpb after pm context/search/list-open/list-in-progress. Initial reproducible UX finding: pm get rejects --full and --depth full even though adjacent read commands expose --full; agent recovery works but the mismatch costs extra commands and tokens. Continuing with bounded sub-agent lanes for contracts/docs, temp-project dogfood, and observability/security checks."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-05-21T20:35:54.955Z"}],"before_hash":"c0567b96151d1feae003f1bd038aaca2ed977244257b36982b2a875a02e7b9f5","after_hash":"4da0710a7db23214b375501db01766cd26607d256f05ea6750b5641e4e9722bf"}
{"ts":"2026-05-21T20:38:49.035Z","author":"codex-observability-security-audit","op":"comment_add","patch":[{"op":"add","path":"/metadata/comments/172","value":{"created_at":"2026-05-21T20:38:49.035Z","author":"codex-observability-security-audit","text":"Evidence 2026-05-21 bounded no-edit observability/security/GitHub audit: tracked secret scan passed; scripts/prod telemetry ops tree remains gitignored/untracked; public docs only mention Sentry/reliability policy-level hooks, not raw private ops details; direct history verification still fails for pm-rnpb and pm-xk39 and validate history drift reports 31 affected items, so keep existing pm-xk39 redaction/history-integrity blocker open; pm health brief is ok with telemetry enabled and one queued/draining local event; live stack healthy with telemetry queue ready=0 consumers=1 and 6670 events in last 24h; required Sentry/telemetry gate passed with Sentry critical=0 high=0 total=0 and telemetry finish_error_rate_pct=3.28 missing_error_code_rows=0; direct sentry issue list returned no unresolved fatal/error issues; GitHub has no open issues or PRs; current HEAD 6c924a45 CI run 26247416099 passed all check runs. Older nightly run 26213241053 failed on Windows Node 20 at prior sha 375b6979 in tests/unit/check-secrets.spec.ts with SyntaxError, but later current-head CI is green."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-05-21T20:38:49.035Z"}],"before_hash":"4da0710a7db23214b375501db01766cd26607d256f05ea6750b5641e4e9722bf","after_hash":"e99bea624ad2e3a97d865bcbc1df94395d818e60dad0bfab39badce38b326cd1"}
{"ts":"2026-05-21T20:39:13.667Z","author":"codex-extensive-audit","op":"files_add","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-05-21T20:39:13.667Z"}],"before_hash":"e99bea624ad2e3a97d865bcbc1df94395d818e60dad0bfab39badce38b326cd1","after_hash":"457076443d7d626f9edd414cccf7e1540f9b8087d2a9d6f4c21d73800c9d1bf6"}
{"ts":"2026-05-21T20:39:15.458Z","author":"codex-extensive-audit","op":"files_add","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-05-21T20:39:15.458Z"}],"before_hash":"457076443d7d626f9edd414cccf7e1540f9b8087d2a9d6f4c21d73800c9d1bf6","after_hash":"94fddb38e79903faa91e2848c11834960cb1fefd2303c7228094fc27bd8b515f"}
{"ts":"2026-05-21T20:39:18.217Z","author":"codex-extensive-audit","op":"files_add","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-05-21T20:39:18.217Z"}],"before_hash":"94fddb38e79903faa91e2848c11834960cb1fefd2303c7228094fc27bd8b515f","after_hash":"9d615b34fe44babd19a5e3f5f1d21ce0396e42074a6f7ad484b6f17bdfa8af5d"}
{"ts":"2026-05-21T20:39:20.054Z","author":"codex-extensive-audit","op":"files_add","patch":[{"op":"replace","path":"/metadata/files/93/note","value":"update event date alias regression"},{"op":"replace","path":"/metadata/files/93/path","value":"tests/unit/update-command.spec.ts"},{"op":"replace","path":"/metadata/files/92/note","value":"regression for nested sentry event scrub behavior"},{"op":"replace","path":"/metadata/files/92/path","value":"tests/unit/sentry-helpers.spec.ts"},{"op":"replace","path":"/metadata/files/91/note","value":"qwen Ollama model preference regression"},{"op":"replace","path":"/metadata/files/91/path","value":"tests/unit/semantic-defaults.spec.ts"},{"op":"replace","path":"/metadata/files/90/note","value":"unit coverage for semantic corpus helper branches"},{"op":"replace","path":"/metadata/files/90/path","value":"tests/unit/search-corpus.spec.ts"},{"op":"replace","path":"/metadata/files/89/note","value":"regression for reminder/event search matches"},{"op":"replace","path":"/metadata/files/89/path","value":"tests/unit/search-command.spec.ts"},{"op":"replace","path":"/metadata/files/88/note","value":"regression for bounded semantic refresh corpus input"},{"op":"replace","path":"/metadata/files/88/path","value":"tests/unit/search-cache.spec.ts"},{"op":"replace","path":"/metadata/files/87/note","value":"direct package runtime coverage"},{"op":"replace","path":"/metadata/files/87/path","value":"tests/unit/search-advanced-runtime.spec.ts"},{"op":"replace","path":"/metadata/files/86/note","value":"regression for malformed config token normalization"},{"op":"replace","path":"/metadata/files/86/path","value":"tests/unit/runtime-schema-command-flags.spec.ts"},{"op":"replace","path":"/metadata/files/85/note","value":"PM-CLI-T regression coverage"},{"op":"replace","path":"/metadata/files/85/path","value":"tests/unit/registration-helpers.spec.ts"},{"op":"replace","path":"/metadata/files/84/note","value":"Plan field projection regression"},{"op":"replace","path":"/metadata/files/84/path","value":"tests/unit/plan-command.spec.ts"},{"op":"replace","path":"/metadata/files/83/note","value":"health brief projection regression coverage"},{"op":"replace","path":"/metadata/files/83/path","value":"tests/unit/health-command.spec.ts"},{"op":"replace","path":"/metadata/files/82/note","value":"get depth projection regression"},{"op":"replace","path":"/metadata/files/82/path","value":"tests/unit/get-append-command.spec.ts"},{"op":"replace","path":"/metadata/files/81/note","value":"docs list non-mutation review coverage"},{"op":"replace","path":"/metadata/files/81/path","value":"tests/unit/files-docs-command.spec.ts"},{"op":"replace","path":"/metadata/files/80/note","value":"package-init-scaffold-regression"},{"op":"replace","path":"/metadata/files/80/path","value":"tests/unit/extension-command.spec.ts"},{"op":"replace","path":"/metadata/files/79/note","value":"retry guidance regression"},{"op":"replace","path":"/metadata/files/79/path","value":"tests/unit/error-guidance.spec.ts"},{"op":"replace","path":"/metadata/files/78/note","value":"regression for oversized ollama embedding input truncation"},{"op":"replace","path":"/metadata/files/78/path","value":"tests/unit/embedding-batches.spec.ts"},{"op":"replace","path":"/metadata/files/77/note","value":"create event date alias regression"},{"op":"replace","path":"/metadata/files/77/path","value":"tests/unit/create-command.spec.ts"},{"op":"replace","path":"/metadata/files/76/note","value":"regression for canonical flag surface with aliases"},{"op":"replace","path":"/metadata/files/76/path","value":"tests/unit/contracts-command.spec.ts"},{"op":"replace","path":"/metadata/files/75/note","value":"bash completion regression for health fast-path flags"},{"op":"replace","path":"/metadata/files/75/path","value":"tests/unit/completion-command.spec.ts"},{"op":"replace","path":"/metadata/files/74/note","value":"claim if-available and takeover warning regression coverage"},{"op":"replace","path":"/metadata/files/74/path","value":"tests/unit/claim-command.spec.ts"},{"op":"replace","path":"/metadata/files/73/note","value":"line-number regression for secret scanner review"},{"op":"replace","path":"/metadata/files/73/path","value":"tests/unit/check-secrets.spec.ts"},{"op":"replace","path":"/metadata/files/72/note","value":"release-readiness guard for nonblocking sentry startup"},{"op":"replace","path":"/metadata/files/72/path","value":"tests/integration/release-readiness-runtime.spec.ts"},{"op":"replace","path":"/metadata/files/71/note","value":"MCP get projection and plan stepRef regression"},{"op":"replace","path":"/metadata/files/71/path","value":"tests/integration/mcp-dynamic-package-actions.spec.ts"},{"op":"replace","path":"/metadata/files/70/note","value":"help coverage for keyword-first search mode flags"},{"op":"replace","path":"/metadata/files/70/path","value":"tests/integration/help-runtime.spec.ts"},{"op":"replace","path":"/metadata/files/69/note","value":"init defaults author regression"},{"op":"replace","path":"/metadata/files/69/path","value":"tests/integration/cli.integration.spec.ts"},{"op":"replace","path":"/metadata/files/68/note","value":"plugin MCP tool list regression"},{"op":"replace","path":"/metadata/files/68/path","value":"tests/integration/claude-plugin-contract.spec.ts"},{"op":"replace","path":"/metadata/files/67/note","value":"workflow contract covers dogfood and Sentry token fallback"},{"op":"replace","path":"/metadata/files/67/path","value":"tests/integration/ci-workflow-contract.spec.ts"},{"op":"replace","path":"/metadata/files/66/note","value":"allow spawned CLI stdin regression tests"},{"op":"replace","path":"/metadata/files/66/path","value":"tests/helpers/withTempPmPath.ts"},{"op":"replace","path":"/metadata/files/65/note","value":"public getContracts SDK helper"},{"op":"replace","path":"/metadata/files/65/path","value":"src/sdk/runtime.ts"},{"op":"replace","path":"/metadata/files/64/note","value":"compact alias duplicate flag contracts for agent schema"},{"op":"replace","path":"/metadata/files/64/path","value":"src/sdk/cli-contracts.ts"},{"op":"remove","path":"/metadata/files/63/note"},{"op":"replace","path":"/metadata/files/63/path","value":"src/mcp/server.ts"},{"op":"add","path":"/metadata/files/62/note","value":"did-you-mean not-found helper wired through update no-op path"},{"op":"replace","path":"/metadata/files/62/path","value":"src/core/store/item-store.ts"},{"op":"remove","path":"/metadata/files/61/note"},{"op":"replace","path":"/metadata/files/61/path","value":"src/core/store/front-matter-cache.ts"},{"op":"add","path":"/metadata/files/60/note","value":"recursive path scrub across nested sentry event payloads"},{"op":"replace","path":"/metadata/files/60/path","value":"src/core/sentry/instrument.ts"},{"op":"replace","path":"/metadata/files/59/note","value":"prefer qwen Ollama embedding auto default"},{"op":"replace","path":"/metadata/files/59/path","value":"src/core/search/semantic-defaults.ts"},{"op":"replace","path":"/metadata/files/58/note","value":"provider-aware semantic input bounding"},{"op":"replace","path":"/metadata/files/58/path","value":"src/core/search/embedding-batches.ts"},{"op":"replace","path":"/metadata/files/57/note","value":"shared search corpus builder includes calendar reminders/events"},{"op":"replace","path":"/metadata/files/57/path","value":"src/core/search/corpus.ts"},{"op":"replace","path":"/metadata/files/56/note","value":"semantic mutation refresh uses shared calendar-aware corpus"},{"op":"replace","path":"/metadata/files/56/path","value":"src/core/search/cache.ts"},{"op":"replace","path":"/metadata/files/55/note","value":"harden runtime schema normalization against malformed config tokens"},{"op":"replace","path":"/metadata/files/55/path","value":"src/core/schema/runtime-schema.ts"},{"op":"remove","path":"/metadata/files/54/note"},{"op":"replace","path":"/metadata/files/54/path","value":"src/core/output/output.ts"},{"op":"add","path":"/metadata/files/53/note","value":"null-safe malformed legacy status normalization"},{"op":"replace","path":"/metadata/files/53/path","value":"src/core/item/status.ts"},{"op":"replace","path":"/metadata/files/52/note","value":"chain output_format service overrides for package renderers"},{"op":"replace","path":"/metadata/files/52/path","value":"src/core/extensions/loader.ts"},{"op":"remove","path":"/metadata/files/51/note"},{"op":"replace","path":"/metadata/files/51/path","value":"src/cli/registration-helpers.ts"},{"op":"add","path":"/metadata/files/50/note","value":"init flags for defaults and author"},{"op":"replace","path":"/metadata/files/50/path","value":"src/cli/register-setup.ts"},{"op":"replace","path":"/metadata/files/49/note","value":"contracts help text clarifies --full heavy surfaces"},{"op":"replace","path":"/metadata/files/49/path","value":"src/cli/register-operations.ts"},{"op":"replace","path":"/metadata/files/48/note","value":"address PR review append source counting and docs list propagation"},{"op":"replace","path":"/metadata/files/48/path","value":"src/cli/register-mutation.ts"},{"op":"replace","path":"/metadata/files/47/note","value":"align search CLI flags with advertised search contract"},{"op":"replace","path":"/metadata/files/47/path","value":"src/cli/register-list-query.ts"},{"op":"replace","path":"/metadata/files/46/note","value":"error-path sentry initialization"},{"op":"replace","path":"/metadata/files/46/path","value":"src/cli/main.ts"},{"op":"replace","path":"/metadata/files/45/note","value":"compact machine-readable help aliases for token-efficient agent help"},{"op":"replace","path":"/metadata/files/45/path","value":"src/cli/help-json-payload.ts"},{"op":"replace","path":"/metadata/files/44/note","value":"agent help documents get fields"},{"op":"replace","path":"/metadata/files/44/path","value":"src/cli/help-content.ts"},{"op":"replace","path":"/metadata/files/43/note","value":"required-option guidance normalization"},{"op":"replace","path":"/metadata/files/43/path","value":"src/cli/error-guidance.ts"},{"op":"replace","path":"/metadata/files/42/note","value":"metadata output token-noise reduction verification"},{"op":"replace","path":"/metadata/files/42/path","value":"src/cli/commands/validate.ts"},{"op":"replace","path":"/metadata/files/41/note","value":"event date alias for update"},{"op":"replace","path":"/metadata/files/41/path","value":"src/cli/commands/update.ts"},{"op":"replace","path":"/metadata/files/40/note","value":"type support for test list option"},{"op":"replace","path":"/metadata/files/40/path","value":"src/cli/commands/test.ts"},{"op":"replace","path":"/metadata/files/39/note","value":"keyword search scores reminder/event corpus and short phrase matches"},{"op":"replace","path":"/metadata/files/39/path","value":"src/cli/commands/search.ts"},{"op":"replace","path":"/metadata/files/38/note","value":"reindex uses shared calendar-aware corpus"},{"op":"replace","path":"/metadata/files/38/path","value":"src/cli/commands/reindex.ts"},{"op":"replace","path":"/metadata/files/37/note","value":"Plan show field projection UX fix"},{"op":"replace","path":"/metadata/files/37/path","value":"src/cli/commands/plan.ts"},{"op":"remove","path":"/metadata/files/36/note"},{"op":"replace","path":"/metadata/files/36/path","value":"src/cli/commands/list.ts"},{"op":"add","path":"/metadata/files/35/note","value":"agent-friendly init defaults and author_default"},{"op":"replace","path":"/metadata/files/35/path","value":"src/cli/commands/init.ts"},{"op":"replace","path":"/metadata/files/34/note","value":"health brief projection for low-token agent diagnostics"},{"op":"replace","path":"/metadata/files/34/path","value":"src/cli/commands/health.ts"},{"op":"replace","path":"/metadata/files/33/note","value":"get depth projections for low-token agent reads"},{"op":"replace","path":"/metadata/files/33/path","value":"src/cli/commands/get.ts"},{"op":"replace","path":"/metadata/files/32/note","value":"fix extension reload/watch usage guidance"},{"op":"replace","path":"/metadata/files/32/path","value":"src/cli/commands/extension.ts"},{"op":"replace","path":"/metadata/files/31/note","value":"type support for docs list option"},{"op":"replace","path":"/metadata/files/31/path","value":"src/cli/commands/docs.ts"},{"op":"replace","path":"/metadata/files/30/note","value":"event date alias for create"},{"op":"replace","path":"/metadata/files/30/path","value":"src/cli/commands/create.ts"},{"op":"replace","path":"/metadata/files/29/note","value":"use compact flag contracts in command surface"},{"op":"replace","path":"/metadata/files/29/path","value":"src/cli/commands/contracts.ts"},{"op":"replace","path":"/metadata/files/28/note","value":"Add get projection flags to shell completions"},{"op":"replace","path":"/metadata/files/28/path","value":"src/cli/commands/completion.ts"},{"op":"add","path":"/metadata/files/94","value":{"path":"vitest.config.ts","scope":"project","note":"coverage include list covers new search corpus helper"}},{"op":"replace","path":"/metadata/updated_at","value":"2026-05-21T20:39:20.054Z"}],"before_hash":"9d615b34fe44babd19a5e3f5f1d21ce0396e42074a6f7ad484b6f17bdfa8af5d","after_hash":"b5703224c8ad8466d2acf7386a58185754ba116a4764c0a76d45717b2c3f3442"}
{"ts":"2026-05-21T20:39:22.032Z","author":"codex-extensive-audit","op":"tests_add","patch":[{"op":"replace","path":"/metadata/tests/46/note","value":"docs and skills gate"},{"op":"replace","path":"/metadata/tests/46/command","value":"pnpm quality:docs-skills"},{"op":"replace","path":"/metadata/tests/45/note","value":"focused init defaults integration regression"},{"op":"replace","path":"/metadata/tests/45/timeout_seconds","value":120},{"op":"replace","path":"/metadata/tests/45/command","value":"pnpm exec vitest run tests/integration/cli.integration.spec.ts -t 'accepts agent-friendly non-interactive init defaults and author'"},{"op":"replace","path":"/metadata/tests/44/note","value":"focused typecheck after schema changes"},{"op":"replace","path":"/metadata/tests/44/timeout_seconds","value":300},{"op":"replace","path":"/metadata/tests/44/command","value":"pnpm exec tsc --noEmit -p tsconfig.json"},{"op":"replace","path":"/metadata/tests/43/note","value":"full remediation verification gate"},{"op":"replace","path":"/metadata/tests/43/timeout_seconds","value":1200},{"op":"replace","path":"/metadata/tests/43/command","value":"pnpm build && node scripts/run-tests.mjs coverage && pnpm quality:static && node scripts/check-secrets.mjs"},{"op":"replace","path":"/metadata/tests/42/note","value":"compile CLI after health/help/dogfood changes"},{"op":"replace","path":"/metadata/tests/42/timeout_seconds","value":300},{"op":"replace","path":"/metadata/tests/42/command","value":"pnpm build"},{"op":"replace","path":"/metadata/tests/41/note","value":"focused dependency/UX/Sentry regression suite"},{"op":"replace","path":"/metadata/tests/41/timeout_seconds","value":600},{"op":"replace","path":"/metadata/tests/41/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/search-command.spec.ts tests/unit/status-normalization.spec.ts tests/unit/extension-command.spec.ts tests/unit/contracts-command.spec.ts tests/unit/error-guidance.spec.ts"},{"op":"replace","path":"/metadata/tests/40/note","value":"focused Sentry crash and package contract hint regression suite"},{"op":"replace","path":"/metadata/tests/40/timeout_seconds","value":300},{"op":"replace","path":"/metadata/tests/40/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/search-command.spec.ts tests/unit/runtime-schema-command-flags.spec.ts tests/unit/contracts-command.spec.ts"},{"op":"replace","path":"/metadata/tests/39/note","value":"focused package docs search UX regressions"},{"op":"replace","path":"/metadata/tests/39/timeout_seconds","value":900},{"op":"replace","path":"/metadata/tests/39/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/search-cache.spec.ts tests/unit/extension-command.spec.ts tests/integration/help-runtime.spec.ts"},{"op":"replace","path":"/metadata/tests/38/note","value":"SDK workspace contracts,Plan fields,search-advanced package regression"},{"op":"replace","path":"/metadata/tests/38/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/sdk-index.spec.ts tests/unit/plan-command.spec.ts tests/integration/release-readiness-runtime.spec.ts"},{"op":"replace","path":"/metadata/tests/37/note","value":"focused SDK and Plan projection regression"},{"op":"replace","path":"/metadata/tests/37/timeout_seconds","value":240},{"op":"replace","path":"/metadata/tests/37/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/sdk-index.spec.ts tests/unit/plan-command.spec.ts"},{"op":"replace","path":"/metadata/tests/36/note","value":"focused SDK contracts search-advanced regression"},{"op":"replace","path":"/metadata/tests/36/timeout_seconds","value":900},{"op":"replace","path":"/metadata/tests/36/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/sdk-index.spec.ts tests/unit/contracts-command.spec.ts tests/unit/search-advanced-runtime.spec.ts tests/integration/release-readiness-runtime.spec.ts"},{"op":"replace","path":"/metadata/tests/35/note","value":"SDK runtime contracts regression"},{"op":"replace","path":"/metadata/tests/35/timeout_seconds","value":300},{"op":"replace","path":"/metadata/tests/35/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/sdk-index.spec.ts tests/unit/contracts-command.spec.ts"},{"op":"replace","path":"/metadata/tests/34/note","value":"focused PM-CLI-T and pm-5k2w UX regressions"},{"op":"replace","path":"/metadata/tests/34/timeout_seconds","value":900},{"op":"replace","path":"/metadata/tests/34/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/registration-helpers.spec.ts tests/unit/create-command.spec.ts tests/unit/update-command.spec.ts tests/unit/completion-command.spec.ts tests/integration/release-readiness-runtime.spec.ts --reporter=dot"},{"op":"replace","path":"/metadata/tests/33/note","value":"focused health brief and help alias compaction regression suite"},{"op":"replace","path":"/metadata/tests/33/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/health-command.spec.ts tests/unit/contracts-command.spec.ts tests/unit/completion-command.spec.ts tests/integration/help-runtime.spec.ts tests/integration/release-readiness-runtime.spec.ts tests/integration/claude-plugin-contract.spec.ts"},{"op":"replace","path":"/metadata/tests/32/note","value":"focused UX/search/health regression suite"},{"op":"replace","path":"/metadata/tests/32/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/get-append-command.spec.ts tests/unit/list-command.spec.ts tests/unit/create-command.spec.ts tests/unit/update-command.spec.ts tests/unit/plan-command.spec.ts tests/unit/search-command.spec.ts tests/unit/semantic-defaults.spec.ts tests/unit/health-command.spec.ts tests/integration/help-runtime.spec.ts tests/integration/mcp-dynamic-package-actions.spec.ts"},{"op":"remove","path":"/metadata/tests/31/note"},{"op":"replace","path":"/metadata/tests/31/timeout_seconds","value":240},{"op":"replace","path":"/metadata/tests/31/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/get-append-command.spec.ts tests/unit/contracts-command.spec.ts tests/unit/completion-command.spec.ts tests/unit/error-guidance.spec.ts --reporter=dot"},{"op":"add","path":"/metadata/tests/47","value":{"command":"pnpm quality:static","scope":"project","timeout_seconds":300,"note":"static quality gate"}},{"op":"replace","path":"/metadata/updated_at","value":"2026-05-21T20:39:22.032Z"}],"before_hash":"b5703224c8ad8466d2acf7386a58185754ba116a4764c0a76d45717b2c3f3442","after_hash":"5b57882d3041ab36808c108c2634d23adc2b5a26bfc36d7d307c58e90b5f0662"}
{"ts":"2026-05-21T20:39:22.963Z","author":"codex-extensive-audit","op":"comment_add","patch":[{"op":"add","path":"/metadata/comments/173","value":{"created_at":"2026-05-21T20:39:22.963Z","author":"codex-extensive-audit","text":"Implementation evidence: added pm get --full as explicit deep-read compatibility for adjacent read-command muscle memory, rejected --full with --fields, and updated contracts/completions. Focused regression passed: PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/get-append-command.spec.ts tests/unit/contracts-command.spec.ts tests/unit/completion-command.spec.ts tests/unit/error-guidance.spec.ts --reporter=dot (4 files / 128 tests)."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-05-21T20:39:22.963Z"}],"before_hash":"5b57882d3041ab36808c108c2634d23adc2b5a26bfc36d7d307c58e90b5f0662","after_hash":"9eb856635e960fbc4b25f594dfff7fce90df1e7a728bce4836bd177dde257a25"}
{"ts":"2026-05-21T20:42:57.321Z","author":"codex-extensive-audit","op":"files_add","patch":[{"op":"replace","path":"/metadata/files/94/note","value":"update event date alias regression"},{"op":"replace","path":"/metadata/files/94/path","value":"tests/unit/update-command.spec.ts"},{"op":"replace","path":"/metadata/files/93/note","value":"regression for nested sentry event scrub behavior"},{"op":"replace","path":"/metadata/files/93/path","value":"tests/unit/sentry-helpers.spec.ts"},{"op":"replace","path":"/metadata/files/92/note","value":"qwen Ollama model preference regression"},{"op":"replace","path":"/metadata/files/92/path","value":"tests/unit/semantic-defaults.spec.ts"},{"op":"replace","path":"/metadata/files/91/note","value":"unit coverage for semantic corpus helper branches"},{"op":"replace","path":"/metadata/files/91/path","value":"tests/unit/search-corpus.spec.ts"},{"op":"replace","path":"/metadata/files/90/note","value":"regression for reminder/event search matches"},{"op":"replace","path":"/metadata/files/90/path","value":"tests/unit/search-command.spec.ts"},{"op":"replace","path":"/metadata/files/89/note","value":"regression for bounded semantic refresh corpus input"},{"op":"replace","path":"/metadata/files/89/path","value":"tests/unit/search-cache.spec.ts"},{"op":"replace","path":"/metadata/files/88/note","value":"direct package runtime coverage"},{"op":"replace","path":"/metadata/files/88/path","value":"tests/unit/search-advanced-runtime.spec.ts"},{"op":"replace","path":"/metadata/files/87/note","value":"regression for malformed config token normalization"},{"op":"replace","path":"/metadata/files/87/path","value":"tests/unit/runtime-schema-command-flags.spec.ts"},{"op":"replace","path":"/metadata/files/86/note","value":"PM-CLI-T regression coverage"},{"op":"replace","path":"/metadata/files/86/path","value":"tests/unit/registration-helpers.spec.ts"},{"op":"replace","path":"/metadata/files/85/note","value":"Plan field projection regression"},{"op":"replace","path":"/metadata/files/85/path","value":"tests/unit/plan-command.spec.ts"},{"op":"replace","path":"/metadata/files/84/note","value":"health brief projection regression coverage"},{"op":"replace","path":"/metadata/files/84/path","value":"tests/unit/health-command.spec.ts"},{"op":"replace","path":"/metadata/files/83/note","value":"get depth projection regression"},{"op":"replace","path":"/metadata/files/83/path","value":"tests/unit/get-append-command.spec.ts"},{"op":"replace","path":"/metadata/files/82/note","value":"docs list non-mutation review coverage"},{"op":"replace","path":"/metadata/files/82/path","value":"tests/unit/files-docs-command.spec.ts"},{"op":"replace","path":"/metadata/files/81/note","value":"package-init-scaffold-regression"},{"op":"replace","path":"/metadata/files/81/path","value":"tests/unit/extension-command.spec.ts"},{"op":"replace","path":"/metadata/files/80/note","value":"retry guidance regression"},{"op":"replace","path":"/metadata/files/80/path","value":"tests/unit/error-guidance.spec.ts"},{"op":"replace","path":"/metadata/files/79/note","value":"regression for oversized ollama embedding input truncation"},{"op":"replace","path":"/metadata/files/79/path","value":"tests/unit/embedding-batches.spec.ts"},{"op":"replace","path":"/metadata/files/78/note","value":"create event date alias regression"},{"op":"replace","path":"/metadata/files/78/path","value":"tests/unit/create-command.spec.ts"},{"op":"replace","path":"/metadata/files/77/note","value":"regression for canonical flag surface with aliases"},{"op":"replace","path":"/metadata/files/77/path","value":"tests/unit/contracts-command.spec.ts"},{"op":"replace","path":"/metadata/files/76/note","value":"bash completion regression for health fast-path flags"},{"op":"replace","path":"/metadata/files/76/path","value":"tests/unit/completion-command.spec.ts"},{"op":"replace","path":"/metadata/files/75/note","value":"claim if-available and takeover warning regression coverage"},{"op":"replace","path":"/metadata/files/75/path","value":"tests/unit/claim-command.spec.ts"},{"op":"replace","path":"/metadata/files/74/note","value":"line-number regression for secret scanner review"},{"op":"replace","path":"/metadata/files/74/path","value":"tests/unit/check-secrets.spec.ts"},{"op":"replace","path":"/metadata/files/73/note","value":"release-readiness guard for nonblocking sentry startup"},{"op":"replace","path":"/metadata/files/73/path","value":"tests/integration/release-readiness-runtime.spec.ts"},{"op":"replace","path":"/metadata/files/72/note","value":"MCP get projection and plan stepRef regression"},{"op":"replace","path":"/metadata/files/72/path","value":"tests/integration/mcp-dynamic-package-actions.spec.ts"},{"op":"replace","path":"/metadata/files/71/note","value":"help coverage for keyword-first search mode flags"},{"op":"replace","path":"/metadata/files/71/path","value":"tests/integration/help-runtime.spec.ts"},{"op":"replace","path":"/metadata/files/70/note","value":"init defaults author regression"},{"op":"replace","path":"/metadata/files/70/path","value":"tests/integration/cli.integration.spec.ts"},{"op":"replace","path":"/metadata/files/69/note","value":"plugin MCP tool list regression"},{"op":"replace","path":"/metadata/files/69/path","value":"tests/integration/claude-plugin-contract.spec.ts"},{"op":"replace","path":"/metadata/files/68/note","value":"workflow contract covers dogfood and Sentry token fallback"},{"op":"replace","path":"/metadata/files/68/path","value":"tests/integration/ci-workflow-contract.spec.ts"},{"op":"replace","path":"/metadata/files/67/note","value":"allow spawned CLI stdin regression tests"},{"op":"replace","path":"/metadata/files/67/path","value":"tests/helpers/withTempPmPath.ts"},{"op":"replace","path":"/metadata/files/66/note","value":"public getContracts SDK helper"},{"op":"replace","path":"/metadata/files/66/path","value":"src/sdk/runtime.ts"},{"op":"replace","path":"/metadata/files/65/note","value":"compact alias duplicate flag contracts for agent schema"},{"op":"replace","path":"/metadata/files/65/path","value":"src/sdk/cli-contracts.ts"},{"op":"remove","path":"/metadata/files/64/note"},{"op":"replace","path":"/metadata/files/64/path","value":"src/mcp/server.ts"},{"op":"add","path":"/metadata/files/63/note","value":"did-you-mean not-found helper wired through update no-op path"},{"op":"replace","path":"/metadata/files/63/path","value":"src/core/store/item-store.ts"},{"op":"remove","path":"/metadata/files/62/note"},{"op":"replace","path":"/metadata/files/62/path","value":"src/core/store/front-matter-cache.ts"},{"op":"add","path":"/metadata/files/61/note","value":"recursive path scrub across nested sentry event payloads"},{"op":"replace","path":"/metadata/files/61/path","value":"src/core/sentry/instrument.ts"},{"op":"replace","path":"/metadata/files/60/note","value":"prefer qwen Ollama embedding auto default"},{"op":"replace","path":"/metadata/files/60/path","value":"src/core/search/semantic-defaults.ts"},{"op":"replace","path":"/metadata/files/59/note","value":"provider-aware semantic input bounding"},{"op":"replace","path":"/metadata/files/59/path","value":"src/core/search/embedding-batches.ts"},{"op":"replace","path":"/metadata/files/58/note","value":"shared search corpus builder includes calendar reminders/events"},{"op":"replace","path":"/metadata/files/58/path","value":"src/core/search/corpus.ts"},{"op":"replace","path":"/metadata/files/57/note","value":"semantic mutation refresh uses shared calendar-aware corpus"},{"op":"replace","path":"/metadata/files/57/path","value":"src/core/search/cache.ts"},{"op":"replace","path":"/metadata/files/56/note","value":"harden runtime schema normalization against malformed config tokens"},{"op":"replace","path":"/metadata/files/56/path","value":"src/core/schema/runtime-schema.ts"},{"op":"remove","path":"/metadata/files/55/note"},{"op":"replace","path":"/metadata/files/55/path","value":"src/core/output/output.ts"},{"op":"add","path":"/metadata/files/54/note","value":"null-safe malformed legacy status normalization"},{"op":"replace","path":"/metadata/files/54/path","value":"src/core/item/status.ts"},{"op":"replace","path":"/metadata/files/53/note","value":"chain output_format service overrides for package renderers"},{"op":"replace","path":"/metadata/files/53/path","value":"src/core/extensions/loader.ts"},{"op":"remove","path":"/metadata/files/52/note"},{"op":"replace","path":"/metadata/files/52/path","value":"src/cli/registration-helpers.ts"},{"op":"add","path":"/metadata/files/51/note","value":"init flags for defaults and author"},{"op":"replace","path":"/metadata/files/51/path","value":"src/cli/register-setup.ts"},{"op":"replace","path":"/metadata/files/50/note","value":"contracts help text clarifies --full heavy surfaces"},{"op":"replace","path":"/metadata/files/50/path","value":"src/cli/register-operations.ts"},{"op":"replace","path":"/metadata/files/49/note","value":"address PR review append source counting and docs list propagation"},{"op":"replace","path":"/metadata/files/49/path","value":"src/cli/register-mutation.ts"},{"op":"replace","path":"/metadata/files/48/note","value":"align search CLI flags with advertised search contract"},{"op":"replace","path":"/metadata/files/48/path","value":"src/cli/register-list-query.ts"},{"op":"replace","path":"/metadata/files/47/note","value":"error-path sentry initialization"},{"op":"replace","path":"/metadata/files/47/path","value":"src/cli/main.ts"},{"op":"replace","path":"/metadata/files/46/note","value":"compact machine-readable help aliases for token-efficient agent help"},{"op":"replace","path":"/metadata/files/46/path","value":"src/cli/help-json-payload.ts"},{"op":"replace","path":"/metadata/files/45/note","value":"agent help documents get fields"},{"op":"replace","path":"/metadata/files/45/path","value":"src/cli/help-content.ts"},{"op":"replace","path":"/metadata/files/44/note","value":"required-option guidance normalization"},{"op":"replace","path":"/metadata/files/44/path","value":"src/cli/error-guidance.ts"},{"op":"replace","path":"/metadata/files/43/note","value":"metadata output token-noise reduction verification"},{"op":"replace","path":"/metadata/files/43/path","value":"src/cli/commands/validate.ts"},{"op":"replace","path":"/metadata/files/42/note","value":"event date alias for update"},{"op":"replace","path":"/metadata/files/42/path","value":"src/cli/commands/update.ts"},{"op":"replace","path":"/metadata/files/41/note","value":"type support for test list option"},{"op":"replace","path":"/metadata/files/41/path","value":"src/cli/commands/test.ts"},{"op":"replace","path":"/metadata/files/40/note","value":"keyword search scores reminder/event corpus and short phrase matches"},{"op":"replace","path":"/metadata/files/40/path","value":"src/cli/commands/search.ts"},{"op":"replace","path":"/metadata/files/39/note","value":"reindex uses shared calendar-aware corpus"},{"op":"replace","path":"/metadata/files/39/path","value":"src/cli/commands/reindex.ts"},{"op":"replace","path":"/metadata/files/38/note","value":"Plan show field projection UX fix"},{"op":"replace","path":"/metadata/files/38/path","value":"src/cli/commands/plan.ts"},{"op":"remove","path":"/metadata/files/37/note"},{"op":"replace","path":"/metadata/files/37/path","value":"src/cli/commands/list.ts"},{"op":"add","path":"/metadata/files/36/note","value":"agent-friendly init defaults and author_default"},{"op":"replace","path":"/metadata/files/36/path","value":"src/cli/commands/init.ts"},{"op":"replace","path":"/metadata/files/35/note","value":"Avoid duplicated compact history diff payload for token efficiency"},{"op":"replace","path":"/metadata/files/35/path","value":"src/cli/commands/history.ts"},{"op":"add","path":"/metadata/files/95","value":{"path":"vitest.config.ts","scope":"project","note":"coverage include list covers new search corpus helper"}},{"op":"replace","path":"/metadata/updated_at","value":"2026-05-21T20:42:57.321Z"}],"before_hash":"9eb856635e960fbc4b25f594dfff7fce90df1e7a728bce4836bd177dde257a25","after_hash":"97f59f503e02e8062ef731e5cf5320f308dc9ce7a98f52657188146b0a9183c7"}
{"ts":"2026-05-21T20:42:59.312Z","author":"codex-extensive-audit","op":"docs_add","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-05-21T20:42:59.312Z"}],"before_hash":"97f59f503e02e8062ef731e5cf5320f308dc9ce7a98f52657188146b0a9183c7","after_hash":"ed6cc4a38bb83955327da439d970886349bbad1661582bfc341806a0e3a6d67f"}
{"ts":"2026-05-21T20:43:01.001Z","author":"codex-extensive-audit","op":"docs_add","patch":[{"op":"replace","path":"/metadata/docs/13/note","value":"sync MCP tool list"},{"op":"replace","path":"/metadata/docs/13/path","value":"plugins/pm-codex/README.md"},{"op":"replace","path":"/metadata/docs/12/note","value":"remove stale pm_guide tool documentation"},{"op":"replace","path":"/metadata/docs/12/path","value":"plugins/pm-claude/README.md"},{"op":"replace","path":"/metadata/docs/11/note","value":"sync MCP tool list"},{"op":"replace","path":"/metadata/docs/11/path","value":"plugins/pm-claude/commands/pm-init.md"},{"op":"replace","path":"/metadata/docs/10/path","value":"plugins/pm-claude/agents/pm-coordinator.md"},{"op":"replace","path":"/metadata/docs/9/note","value":"document expanded search-advanced flags"},{"op":"replace","path":"/metadata/docs/9/path","value":"packages/pm-search-advanced/README.md"},{"op":"replace","path":"/metadata/docs/8/note","value":"document project install and package bootstrap"},{"op":"replace","path":"/metadata/docs/8/path","value":"packages/pm-calendar/README.md"},{"op":"replace","path":"/metadata/docs/7/note","value":"document in-process runtime contracts"},{"op":"replace","path":"/metadata/docs/7/path","value":"docs/SDK.md"},{"op":"replace","path":"/metadata/docs/6/note","value":"keep private reliability details local-only"},{"op":"replace","path":"/metadata/docs/6/path","value":"docs/RELEASING.md"},{"op":"replace","path":"/metadata/docs/5/note","value":"canonical package extension reference deduped"},{"op":"replace","path":"/metadata/docs/5/path","value":"docs/EXTENSIONS.md"},{"op":"replace","path":"/metadata/docs/4/note","value":"Prefer smallest health summary example for repository validation"},{"op":"replace","path":"/metadata/docs/4/path","value":"docs/CONFIGURATION.md"},{"op":"add","path":"/metadata/docs/14","value":{"path":"README.md","scope":"project","note":"remove private telemetry mode from public release docs"}},{"op":"replace","path":"/metadata/updated_at","value":"2026-05-21T20:43:01.001Z"}],"before_hash":"ed6cc4a38bb83955327da439d970886349bbad1661582bfc341806a0e3a6d67f","after_hash":"60c35dfaa0f0da4b60aeaa10ae0e606fd4b1e033a1fd4c51574b9e8093616422"}
{"ts":"2026-05-21T20:43:02.758Z","author":"codex-extensive-audit","op":"files_add","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-05-21T20:43:02.758Z"}],"before_hash":"60c35dfaa0f0da4b60aeaa10ae0e606fd4b1e033a1fd4c51574b9e8093616422","after_hash":"9ce25b34152d76c3892b31738ea0026f284711538a263b29a9c507c1be0cb4b8"}
{"ts":"2026-05-21T20:43:04.524Z","author":"codex-extensive-audit","op":"tests_add","patch":[{"op":"replace","path":"/metadata/tests/47/note","value":"docs and skills gate"},{"op":"replace","path":"/metadata/tests/47/command","value":"pnpm quality:docs-skills"},{"op":"replace","path":"/metadata/tests/46/note","value":"focused init defaults integration regression"},{"op":"replace","path":"/metadata/tests/46/timeout_seconds","value":120},{"op":"replace","path":"/metadata/tests/46/command","value":"pnpm exec vitest run tests/integration/cli.integration.spec.ts -t 'accepts agent-friendly non-interactive init defaults and author'"},{"op":"replace","path":"/metadata/tests/45/note","value":"focused typecheck after schema changes"},{"op":"replace","path":"/metadata/tests/45/timeout_seconds","value":300},{"op":"replace","path":"/metadata/tests/45/command","value":"pnpm exec tsc --noEmit -p tsconfig.json"},{"op":"replace","path":"/metadata/tests/44/note","value":"full remediation verification gate"},{"op":"replace","path":"/metadata/tests/44/timeout_seconds","value":1200},{"op":"replace","path":"/metadata/tests/44/command","value":"pnpm build && node scripts/run-tests.mjs coverage && pnpm quality:static && node scripts/check-secrets.mjs"},{"op":"replace","path":"/metadata/tests/43/note","value":"compile CLI after health/help/dogfood changes"},{"op":"replace","path":"/metadata/tests/43/timeout_seconds","value":300},{"op":"replace","path":"/metadata/tests/43/command","value":"pnpm build"},{"op":"replace","path":"/metadata/tests/42/note","value":"focused dependency/UX/Sentry regression suite"},{"op":"replace","path":"/metadata/tests/42/timeout_seconds","value":600},{"op":"replace","path":"/metadata/tests/42/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/search-command.spec.ts tests/unit/status-normalization.spec.ts tests/unit/extension-command.spec.ts tests/unit/contracts-command.spec.ts tests/unit/error-guidance.spec.ts"},{"op":"replace","path":"/metadata/tests/41/note","value":"focused Sentry crash and package contract hint regression suite"},{"op":"replace","path":"/metadata/tests/41/timeout_seconds","value":300},{"op":"replace","path":"/metadata/tests/41/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/search-command.spec.ts tests/unit/runtime-schema-command-flags.spec.ts tests/unit/contracts-command.spec.ts"},{"op":"replace","path":"/metadata/tests/40/note","value":"focused package docs search UX regressions"},{"op":"replace","path":"/metadata/tests/40/timeout_seconds","value":900},{"op":"replace","path":"/metadata/tests/40/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/search-cache.spec.ts tests/unit/extension-command.spec.ts tests/integration/help-runtime.spec.ts"},{"op":"replace","path":"/metadata/tests/39/note","value":"SDK workspace contracts,Plan fields,search-advanced package regression"},{"op":"replace","path":"/metadata/tests/39/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/sdk-index.spec.ts tests/unit/plan-command.spec.ts tests/integration/release-readiness-runtime.spec.ts"},{"op":"replace","path":"/metadata/tests/38/note","value":"focused SDK and Plan projection regression"},{"op":"replace","path":"/metadata/tests/38/timeout_seconds","value":240},{"op":"replace","path":"/metadata/tests/38/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/sdk-index.spec.ts tests/unit/plan-command.spec.ts"},{"op":"replace","path":"/metadata/tests/37/note","value":"focused SDK contracts search-advanced regression"},{"op":"replace","path":"/metadata/tests/37/timeout_seconds","value":900},{"op":"replace","path":"/metadata/tests/37/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/sdk-index.spec.ts tests/unit/contracts-command.spec.ts tests/unit/search-advanced-runtime.spec.ts tests/integration/release-readiness-runtime.spec.ts"},{"op":"replace","path":"/metadata/tests/36/note","value":"SDK runtime contracts regression"},{"op":"replace","path":"/metadata/tests/36/timeout_seconds","value":300},{"op":"replace","path":"/metadata/tests/36/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/sdk-index.spec.ts tests/unit/contracts-command.spec.ts"},{"op":"replace","path":"/metadata/tests/35/note","value":"focused PM-CLI-T and pm-5k2w UX regressions"},{"op":"replace","path":"/metadata/tests/35/timeout_seconds","value":900},{"op":"replace","path":"/metadata/tests/35/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/registration-helpers.spec.ts tests/unit/create-command.spec.ts tests/unit/update-command.spec.ts tests/unit/completion-command.spec.ts tests/integration/release-readiness-runtime.spec.ts --reporter=dot"},{"op":"replace","path":"/metadata/tests/34/note","value":"focused health brief and help alias compaction regression suite"},{"op":"replace","path":"/metadata/tests/34/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/health-command.spec.ts tests/unit/contracts-command.spec.ts tests/unit/completion-command.spec.ts tests/integration/help-runtime.spec.ts tests/integration/release-readiness-runtime.spec.ts tests/integration/claude-plugin-contract.spec.ts"},{"op":"replace","path":"/metadata/tests/33/note","value":"focused UX/search/health regression suite"},{"op":"replace","path":"/metadata/tests/33/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/get-append-command.spec.ts tests/unit/list-command.spec.ts tests/unit/create-command.spec.ts tests/unit/update-command.spec.ts tests/unit/plan-command.spec.ts tests/unit/search-command.spec.ts tests/unit/semantic-defaults.spec.ts tests/unit/health-command.spec.ts tests/integration/help-runtime.spec.ts tests/integration/mcp-dynamic-package-actions.spec.ts"},{"op":"remove","path":"/metadata/tests/32/note"},{"op":"replace","path":"/metadata/tests/32/timeout_seconds","value":300},{"op":"replace","path":"/metadata/tests/32/command","value":"PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/get-append-command.spec.ts tests/unit/contracts-command.spec.ts tests/unit/completion-command.spec.ts tests/unit/error-guidance.spec.ts tests/unit/history-activity-command.spec.ts tests/integration/help-runtime.spec.ts --reporter=dot"},{"op":"add","path":"/metadata/tests/48","value":{"command":"pnpm quality:static","scope":"project","timeout_seconds":300,"note":"static quality gate"}},{"op":"replace","path":"/metadata/updated_at","value":"2026-05-21T20:43:04.524Z"}],"before_hash":"9ce25b34152d76c3892b31738ea0026f284711538a263b29a9c507c1be0cb4b8","after_hash":"3bdcecf892cee3f4e89969c7cffd64ead97c399440b179b07f5e365d410cb01d"}
{"ts":"2026-05-21T20:43:05.613Z","author":"codex-extensive-audit","op":"comment_add","patch":[{"op":"add","path":"/metadata/comments/174","value":{"created_at":"2026-05-21T20:43:05.613Z","author":"codex-extensive-audit","text":"Evidence update: read-path sub-agent findings integrated. Added compact history --diff dedupe so default compact history no longer repeats identical diff arrays; updated health docs/help examples to prefer pm health --check-only --summary --json for the smallest machine-readable quick check. Verified package GitHub owner before editing: gh repo view unbraind/pm-cli resolves and unbrained/pm-cli does not, so package catalog URLs were not changed. Focused suite passed after rebuild: PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/get-append-command.spec.ts tests/unit/contracts-command.spec.ts tests/unit/completion-command.spec.ts tests/unit/error-guidance.spec.ts tests/unit/history-activity-command.spec.ts tests/integration/help-runtime.spec.ts --reporter=dot (6 files / 172 tests)."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-05-21T20:43:05.613Z"}],"before_hash":"3bdcecf892cee3f4e89969c7cffd64ead97c399440b179b07f5e365d410cb01d","after_hash":"f54e89dc9b65ff1c1316c0c81d4232bb66d903d4f2a7002a03d2536d7172afdf"}
{"ts":"2026-05-21T20:48:56.790Z","author":"codex-extensive-audit","op":"comment_add","patch":[{"op":"add","path":"/metadata/comments/175","value":{"created_at":"2026-05-21T20:48:56.790Z","author":"codex-extensive-audit","text":"Final local verification evidence before PR: npm install -g . refreshed pm 2026.5.18 and pm contracts --command get --flags-only --json now exposes --depth, --full, --fields. Manual temp smoke verified pm get --full returns full comments/body/links, --depth brief remains compact, and --full with --fields exits 2. pm history pm-rnpb --json --diff --limit 2 now returns compact_history without duplicate diff (585 bytes). Checks passed: node scripts/check-secrets.mjs; pnpm quality:static; pm health --check-only --summary --json with 0 warnings; pm validate --check-resolution --json; node scripts/dogfood-package-first.mjs (84 workflows); full release gate node scripts/release/run-gates.mjs --telemetry-mode required --max-sentry-critical 10 --max-sentry-high 20 --max-telemetry-error-rate 10 --json (97 files / 1409 tests, 100 percent coverage, package-first dogfood, npx smoke, compatibility, Sentry critical=0 high=0 total=0, telemetry finish_error_rate_pct=3.26)."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-05-21T20:48:56.790Z"}],"before_hash":"f54e89dc9b65ff1c1316c0c81d4232bb66d903d4f2a7002a03d2536d7172afdf","after_hash":"4026edb5fcc2d1a9f61d46501f4d3287043e8a8c7fd7ae0234b892cc1600e502"}
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 | 🏗️ Heavy lift

Direct edits to .agents/pm history should not be committed.

This change directly mutates .agents/pm/history/pm-rnpb.jsonl, which violates the repo rule that pm is the system of record for this path. Please regenerate/apply these updates via the approved pm workflow instead of committing manual file edits.

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 around lines 443 - 458, This PR directly
mutates the autogenerated agent history (pm-rnpb.jsonl) which must be produced
by the pm workflow; revert the manual edits to the history file, remove the
file-level changes from the commit, and regenerate/apply the intended updates
via the approved pm workflow (run the pm tool that produces history entries for
pm-rnpb, e.g., the agent run/claim/comment/files_add/tests_add steps you
intended) so the history is authored by the system of record; ensure the final
commit contains only the pm-generated output (and not a manual edit), then
re-run the verification commands you listed (tests/static gates) before pushing.

Comment thread src/sdk/cli-contracts.ts
Make pm get --full mutually exclusive with --depth as well as --fields, preserve the history --diff top-level schema with an empty compact diff array, and broaden SDK metadata for the shared full parameter.

Record pm-rnpb review evidence and rerun focused tests plus the full release gate with required Sentry/telemetry.
@unbraind
Copy link
Copy Markdown
Owner Author

Review follow-up status:

  • Sourcery/Gemini pm get --full precedence: addressed in cc61386c; --full is now mutually exclusive with --depth and --fields, and the help text says so.
  • Gemini history JSON schema concern: addressed in cc61386c; compact history --diff keeps the root diff field as an empty array instead of omitting it, while avoiding duplicate payload content already present in compact_history.
  • CodeRabbit SDK full metadata: addressed in cc61386c; the shared parameter description now covers command-specific full/detail modes.
  • CodeRabbit .agents/pm comments: reviewed as false positives for this workflow. The .agents/pm changes in this PR were generated by pm commands (pm files, pm docs, pm test, pm comments) as required by AGENTS.md, not edited by hand.

Post-fix verification passed locally: focused 6-file suite / 172 tests, manual error-output smoke for --full + --depth, and full release gate with required Sentry/telemetry (97 files / 1409 tests, 100% coverage). GitHub checks are green after the follow-up commit.

@unbraind unbraind merged commit 29286fe into main May 21, 2026
11 checks passed
@unbraind unbraind deleted the audit/get-full-history-token-2026-05-21 branch May 21, 2026 21:23
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