Skip to content

Make history-redact output disclosure-safe across SDK, CLI, MCP, and telemetry - #869

Merged
unbraind merged 3 commits into
mainfrom
fix/history-redact-disclosure-safe-output
Aug 2, 2026
Merged

unbraind merged 3 commits into
mainfrom
fix/history-redact-disclosure-safe-output

Conversation

@unbraind

@unbraind unbraind commented Aug 2, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • replace secret-bearing history-redact result fields with non-reversible matcher counts
  • sanitize CLI recovery, typo guidance, telemetry, and MCP-facing output
  • add canary coverage for applied, dry-run, no-op, rejected, SDK, MCP, and telemetry paths
  • document the public contract and regenerate the package-owned changelog

Project management

Verification

  • 417 test files, 6,691 tests
  • 100% statements / branches / functions / lines
  • lint, zero-duplicate, static quality and 100% docstring gates
  • contracts, SDK surface, security scan, docs links, context/retrieval/token gates
  • isolated temporary-directory canary acceptance across dry-run, applied, no-op, and invalid-regex paths

Closes #864

Summary by Sourcery

Ensure history-redact never discloses matcher or replacement material across SDK, CLI, MCP, and telemetry, and update outputs to report only non-sensitive counts.

New Features:

  • Expose a redactSensitiveCommandArgs helper to sanitize history-redact arguments before use in CLI recovery, typo guidance, and diagnostics.

Bug Fixes:

  • Prevent history-redact from echoing literal, regex, and replacement inputs in CLI, SDK, MCP responses, telemetry, and error messages.
  • Normalize invalid --regex errors and history-redact item-id change messages to avoid leaking matcher material.

Enhancements:

  • Change history-redact pattern reporting to expose only matcher counts and default-replacement selection, replacing prior echoing of literal and regex values.
  • Extend telemetry sensitive-key detection and sanitization to treat history-redact matcher and replacement inputs as sensitive.
  • Document the history-redact output contract and update the changelog for the new disclosure-safe behavior.

Tests:

  • Add CLI, SDK, MCP, and telemetry tests to assert that history-redact never surfaces matcher or replacement values and that reported pattern metadata matches the new contract.
  • Expand history-redact unit tests to cover regex parsing, redaction rule construction, and dry-run behavior under the new non-echoing patterns API.

Summary by cubic

Make history-redact outputs disclosure-safe by replacing raw matchers/replacements with non-reversible counts and scrubbing sensitive inputs across CLI, SDK, MCP, recovery, and telemetry. Fixes GH-864 and closes diagnostic gaps so secrets never appear in success, failure, or diagnostics.

  • Bug Fixes

    • SDK: HistoryRedactResult.patterns now reports literal_count, regex_count, total_count, and replacement_is_default; removed literals, regex, and replacement.
    • CLI: recovery payloads, typo guidance, and example commands redact values for --literal, --regex, --replacement; inherited recovery fields are sanitized; equals-form typos are redacted; value-less sensitive flags preserve following option tokens.
    • Telemetry: treats redaction inputs as sensitive (including plural and inline assignments); scrubs argv/option payloads while keeping safe counts.
    • MCP: tool responses never include matcher or replacement material.
    • Docs/Changelog: documented the disclosure-safe contract and noted history-redact echoes the sensitive literal in command output #864.
  • Migration

    • Replace any use of patterns.literals, patterns.regex, and patterns.replacement with literal_count, regex_count, total_count, and replacement_is_default.
    • Do not rely on raw matcher or replacement values; they are intentionally unavailable in CLI/SDK/MCP/telemetry.
    • Use history.replacements and the new counts for reporting.
    • Error messages for invalid regex and id-change warnings are now generic and won’t echo user input.

Written for commit 192f258. Summary will update on new commits.

Review in cubic

Replace raw history-redact matcher and replacement fields with non-reversible counts across the public SDK contract. Sanitize CLI recovery guidance and telemetry inputs, cover CLI/SDK/MCP success and failure paths, document the contract, and record GH-864 in pm and the generated changelog.
@gemini-code-assist

Copy link
Copy Markdown

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@coderabbitai

coderabbitai Bot commented Aug 2, 2026 •

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@unbraind, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 27 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

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

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

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

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: b1a33bb5-1657-4fa9-99f8-241fc20adf6c

📥 Commits

Reviewing files that changed from the base of the PR and between bf06038 and 192f258.

📒 Files selected for processing (17)
  • .agents/pm/extensions/.managed-extensions.json
  • .agents/pm/history/pm-y3w0ld.jsonl
  • .agents/pm/issues/pm-y3w0ld.toon
  • CHANGELOG.md
  • docs/COMMANDS.md
  • sdk/public-surface.json
  • src/cli/argv-utils.ts
  • src/cli/main.ts
  • src/core/telemetry/runtime.ts
  • src/sdk/command-line.ts
  • src/sdk/history-redact.ts
  • tests/unit/cli/argv-utils.spec.ts
  • tests/unit/cli/cli-main-errors.spec.ts
  • tests/unit/commands/history-activity-command.spec.ts
  • tests/unit/core/telemetry/history-redact-sensitive-options.spec.ts
  • tests/unit/mcp/mcp-server-nested-options.spec.ts
  • tests/unit/sdk/history-read-primitives.spec.ts
📝 Walkthrough

Summary by CodeRabbit

  • Security

    • Sensitive literal, regex, and replacement values are no longer exposed in redaction results, errors, retries, telemetry, or integrations.
    • Redaction responses now provide aggregate match counts and indicate whether the default replacement was used.
  • API

    • Updated redaction result data to use disclosure-safe counts and status fields.
  • Documentation

    • Updated command documentation and changelog with the safer redaction behavior.

Walkthrough

This change prevents history-redact matcher and replacement values from appearing in API results, CLI recovery output, telemetry, MCP responses, and error messages. Results now expose aggregate counts and default-replacement status.

Changes

History redaction disclosure safety

Layer / File(s) Summary
Redaction result contract
src/sdk/history-redact.ts, sdk/public-surface.json, tests/unit/sdk/history-read-primitives.spec.ts
The result replaces matcher contents and replacement text with counts and replacement_is_default. Regex and item-ID errors use non-sensitive messages.
Command argument sanitization
src/sdk/command-line.ts, src/cli/argv-utils.ts, src/cli/main.ts, tests/unit/cli/argv-utils.spec.ts
History-redact matcher and replacement arguments are replaced with [redacted] before recovery, rendering, retry generation, and typo handling.
Telemetry sensitive-field handling
src/core/telemetry/runtime.ts, tests/unit/core/telemetry/history-redact-sensitive-options.spec.ts
Telemetry classifies literal, regex, and replacement fields as sensitive and preserves non-sensitive count metadata.
Disclosure validation and records
tests/unit/commands/history-activity-command.spec.ts, tests/unit/mcp/mcp-server-nested-options.spec.ts, docs/COMMANDS.md, CHANGELOG.md, .agents/pm/*
CLI and MCP tests verify that sensitive values are absent. Documentation, changelog, and project records describe the updated behavior.

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

Sequence Diagram(s)

sequenceDiagram
  participant CLI
  participant CommandLine as redactSensitiveCommandArgs
  participant HistoryRedact as history-redact
  participant Telemetry
  participant MCP
  CLI->>CommandLine: Sanitize matcher and replacement arguments
  CommandLine-->>CLI: Return arguments with [redacted] values
  CLI->>HistoryRedact: Execute with redaction options
  HistoryRedact-->>CLI: Return counts and replacement_is_default
  CLI->>Telemetry: Record sanitized arguments and metadata
  MCP->>HistoryRedact: Submit history-redact request
  HistoryRedact-->>MCP: Return disclosure-safe result
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 22.22% 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
Linked Issues check ✅ Passed The changes address issue #864 by removing sensitive values, preserving safe counts, covering required paths, and documenting regex handling.
Out of Scope Changes check ✅ Passed The code, tests, documentation, changelog, and project records support the linked security objective without unrelated changes.
Title check ✅ Passed The title clearly summarizes the disclosure-safety changes across the SDK, CLI, MCP, and telemetry.
Description check ✅ Passed The description directly explains the security changes, affected surfaces, documentation updates, and verification coverage.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch

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.

@unbraind
unbraind marked this pull request as ready for review August 2, 2026 01:30
@unbraind

unbraind commented Aug 2, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai full review

@gemini-code-assist

Copy link
Copy Markdown

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@unbraind

unbraind commented Aug 2, 2026

Copy link
Copy Markdown
Owner Author

@greptileai

@coderabbitai

coderabbitai Bot commented Aug 2, 2026 •

Copy link
Copy Markdown
✅ Action performed

Full review finished.

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Sorry @unbraind, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@sourcery-ai

sourcery-ai Bot commented Aug 2, 2026

Copy link
Copy Markdown

Reviewer's Guide

Makes history-redact disclosure-safe across SDK, CLI, MCP, and telemetry by removing echoing of matcher/replacement material, replacing it with aggregated counts, and ensuring all user-facing and telemetry paths sanitize sensitive history-redact inputs, with added tests and documentation to enforce the new contract.

Sequence diagram for sanitized history-redact CLI recovery and typo guidance

sequenceDiagram
  actor User
  participant CliMain
  participant ArgvUtils

  User->>CliMain: invoke history-redact with sensitive --literal/--regex
  CliMain->>ArgvUtils: redactSensitiveCommandArgs(argv)
  ArgvUtils-->>CliMain: safeInvocationArgv
  CliMain->>CliMain: buildPmCliRecoveryContext(safeInvocationArgv)
  CliMain->>ArgvUtils: renderPmCommand(safeInvocationArgv)
  CliMain-->>User: error + recovery + examples (with redacted args)
Loading

File-Level Changes

Change Details Files
History-redact no longer returns literal or regex values, only aggregate pattern metadata, and its error messaging is hardened.
  • Removed label fields from redaction rules and updated parsers/tests to treat rules as structured literal/regex descriptors without labels.
  • Changed HistoryRedactResult.patterns from literal/regex arrays plus replacement string to literal_count/regex_count/total_count and replacement_is_default booleans.
  • Adjusted runHistoryRedact to compute counts from rules, track whether the default replacement is used, and emit the new patterns shape.
  • Updated error messaging for invalid regex to a generic, non-echoing message and refined the item-id change error message text.
  • Updated SDK tests and documentation (COMMANDS.md, CHANGELOG.md) to reflect the new non-echoing contract and patterns structure.
src/sdk/history-redact.ts
tests/unit/commands/history-activity-command.spec.ts
tests/unit/sdk/history-read-primitives.spec.ts
docs/COMMANDS.md
CHANGELOG.md
CLI argument handling and recovery/typo guidance now redact history-redact matcher and replacement values before emitting diagnostics.
  • Introduced redactSensitiveCommandArgs in the SDK command-line utilities to scrub --literal/--regex/--replacement values, supporting both flag=value and flag value forms.
  • Re-exported redactSensitiveCommandArgs through CLI argv-utils and wired it into CLI main to sanitize invocationArgv for recovery context, inferred-missing fields, suggested retry, and examples.
  • Ensured typo-enforcement recovery for mutating/non-mutating commands uses sanitized argv for examples, normalized_args, and suggested_retry.
  • Added unit tests for redactSensitiveCommandArgs to cover non-history commands, all supported sensitive flag forms, and edge cases.
src/sdk/command-line.ts
src/cli/argv-utils.ts
src/cli/main.ts
tests/unit/cli/argv-utils.spec.ts
Telemetry runtime treats history-redact matcher/replacement inputs as sensitive and ensures they are redacted in recorded argv and option payloads.
  • Extended the inline sensitive-key pattern to include literal/regex/replacement and added a REDACTION_INPUT_KEYS allowlist for direct sensitivity marking.
  • Updated isSensitiveKey to treat redaction input keys as sensitive in addition to existing secret-related keywords.
  • Added tests that sanitize history-redact telemetry command args and option payloads, verifying that matcher and replacement material is replaced with [redacted] while non-sensitive pattern-count metadata passes through unchanged.
src/core/telemetry/runtime.ts
tests/unit/core/telemetry/history-redact-sensitive-options.spec.ts
MCP server responses for history-redact hide matcher material and only expose aggregate pattern counts while ensuring no leakage in serialized responses.
  • Added an MCP test that performs a history-redact via the pm_run tool with literal and replacement options and asserts that the serialized response does not contain matcher or replacement text.
  • Verified that MCP structuredContent.result.patterns exposes only literal_count/regex_count/total_count and replacement_is_default and that changed=true is reported as expected.
tests/unit/mcp/mcp-server-nested-options.spec.ts
History-redact end-to-end tests enforce disclosure safety for CLI JSON output and various execution paths, including invalid regex handling.
  • Extended history/activity command tests to assert that dry-run and no-op JSON results do not contain leaked tokens, redacted replacement tokens, non-matching canaries, or secret labels.
  • Updated tests for buildRedactionRules and parseRegexRule to expect structured rule objects (kind/value/source/flags) rather than label strings.
  • Added a CLI failure test for invalid regex that ensures both the invalid regex and replacement are absent from stdout/stderr while a generic [redacted] marker is present.
  • Adjusted expectations for history_redact no-match warnings and ensured no canary leakage in JSON outputs for matched/non-matched scenarios.
tests/unit/commands/history-activity-command.spec.ts
Project metadata and history were updated to track the security change and pm-agent artifacts.
  • Recorded the security change in the Unreleased section of the CHANGELOG with a link to the pm-y3w0ld project issue.
  • Added pm agent history and issue artifacts for pm-y3w0ld to track this work item and its history within the project tooling.
  • Regenerated SDK public surface metadata to reflect the new HistoryRedactResult shape and any exported functions.
CHANGELOG.md
.agents/pm/history/pm-y3w0ld.jsonl
.agents/pm/issues/pm-y3w0ld.toon
sdk/public-surface.json
.agents/pm/extensions/.managed-extensions.json

Assessment against linked issues

Issue Objective Addressed Explanation
#864 Ensure history-redact never emits raw matcher or replacement values (e.g., --literal, --regex, --replacement) in any output channel (TOON/JSON/CLI, dry-run, errors, telemetry, MCP, audit), instead reporting only non-reversible aggregates such as counts or fingerprints, with dry-run output also safe. ✅
#864 Maintain useful, deterministic reporting of patterns and replacements via non-sensitive metadata (e.g., counts), and add tests that cover success, dry-run, no-op, and failure paths asserting that canary literals/regexes/replacements are absent from stdout/stderr and structured outputs. ✅
#864 Update documentation to state that history-redact regex text and other matcher inputs may themselves be sensitive and describe how their output is treated/redacted. ✅

Possibly linked issues


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

@codspeed

codspeed Bot commented Aug 2, 2026 •

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 11 untouched benchmarks


Comparing fix/history-redact-disclosure-safe-output (192f258) with main (bf06038)

Open in CodSpeed

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
src/core/telemetry/runtime.ts (1)

133-141: 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Include plural redaction keys in inline assignment matching.

isSensitiveKey protects literals, regexes, and replacements, but SENSITIVE_INLINE_KEY_PATTERN only matches singular names. A telemetry string such as regexes=telemetry-canary can retain its value.

Add plural forms to this pattern and add sanitizeString coverage for each plural assignment form.

🤖 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 `@src/core/telemetry/runtime.ts` around lines 133 - 141, The inline
sensitive-key pattern used by INLINE_SENSITIVE_ASSIGNMENT_PATTERN and
INLINE_SENSITIVE_FLAG_PATTERN must recognize plural forms literals, regexes, and
replacements, matching the keys protected by isSensitiveKey. Extend
SENSITIVE_INLINE_KEY_PATTERN accordingly and add sanitizeString coverage for
each plural assignment form, preserving existing singular-key behavior.
src/cli/main.ts (1)

412-427: 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Sanitize existing recovery fields before returning them.

The compact branch returns existingRecovery unchanged. The normal path also lets existing attempted_command, normalized_args, and suggested_retry override the sanitized values in buildRecoveryPayload.

An upstream error context can therefore retain matcher or replacement canaries in the error response. Sanitize these fields before the compact return and before merging existing recovery data. Add a regression case with raw sensitive values in context.recovery.

🤖 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 `@src/cli/main.ts` around lines 412 - 427, Sanitize the existing recovery
payload before it is returned or merged: update the recovery handling around
`existingRecovery`, the compact-mode early return, and `buildRecoveryPayload` so
`attempted_command`, `normalized_args`, and `suggested_retry` cannot override
their sanitized equivalents. Preserve the current recovery behavior while
ensuring upstream `context.recovery` values are redacted, and add a regression
case covering raw sensitive values in `context.recovery`.
🤖 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 `@src/cli/main.ts`:
- Around line 2421-2431: Update the typo-handling flow around typoEvent.from and
redactSensitiveCommandArgs so recognized sensitive-flag typos redact inline
values in both the source token used by the PmCliError message and the matching
bootstrapInvocation.argv token before renderPmCommand(safeArgv). Use typoEvent’s
canonical target to identify the sensitive flag, preserve non-sensitive and
non-equals arguments, and add canary coverage for an equals-form typo for each
sensitive flag.

In `@src/sdk/command-line.ts`:
- Around line 69-72: Update the redaction logic around redactNext so a following
option token is not treated as a matcher value: only consume and replace the
next token when it is a value token, otherwise preserve the option and continue
normal processing. Add coverage for a value-less sensitive flag followed by
another option, such as --literal followed by --dry-run.

---

Outside diff comments:
In `@src/cli/main.ts`:
- Around line 412-427: Sanitize the existing recovery payload before it is
returned or merged: update the recovery handling around `existingRecovery`, the
compact-mode early return, and `buildRecoveryPayload` so `attempted_command`,
`normalized_args`, and `suggested_retry` cannot override their sanitized
equivalents. Preserve the current recovery behavior while ensuring upstream
`context.recovery` values are redacted, and add a regression case covering raw
sensitive values in `context.recovery`.

In `@src/core/telemetry/runtime.ts`:
- Around line 133-141: The inline sensitive-key pattern used by
INLINE_SENSITIVE_ASSIGNMENT_PATTERN and INLINE_SENSITIVE_FLAG_PATTERN must
recognize plural forms literals, regexes, and replacements, matching the keys
protected by isSensitiveKey. Extend SENSITIVE_INLINE_KEY_PATTERN accordingly and
add sanitizeString coverage for each plural assignment form, preserving existing
singular-key behavior.
🪄 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: ASSERTIVE

Plan: Pro Plus

Run ID: e2e4f607-35f1-4fa4-931b-1afcee9e4026

📥 Commits

Reviewing files that changed from the base of the PR and between bf06038 and 178917a.

📒 Files selected for processing (16)
  • .agents/pm/extensions/.managed-extensions.json
  • .agents/pm/history/pm-y3w0ld.jsonl
  • .agents/pm/issues/pm-y3w0ld.toon
  • CHANGELOG.md
  • docs/COMMANDS.md
  • sdk/public-surface.json
  • src/cli/argv-utils.ts
  • src/cli/main.ts
  • src/core/telemetry/runtime.ts
  • src/sdk/command-line.ts
  • src/sdk/history-redact.ts
  • tests/unit/cli/argv-utils.spec.ts
  • tests/unit/commands/history-activity-command.spec.ts
  • tests/unit/core/telemetry/history-redact-sensitive-options.spec.ts
  • tests/unit/mcp/mcp-server-nested-options.spec.ts
  • tests/unit/sdk/history-read-primitives.spec.ts

Comment thread src/cli/main.ts Resolved
Comment thread src/sdk/command-line.ts Resolved
@codecov

codecov Bot commented Aug 2, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ All tests successful. No failed tests found.

📢 Thoughts on this report? Let us know!

Address CodeRabbit findings by sanitizing inherited recovery payloads and sensitive flag typos, recognizing plural telemetry assignments, and preserving option tokens after value-less sensitive flags. Extend canary coverage and record the exact review evidence in pm.
@unbraind

unbraind commented Aug 2, 2026

Copy link
Copy Markdown
Owner Author

Review-round acknowledgment for exact head 192f25860:

  • Fixed both inline findings and replied in their threads with exact commit/test evidence.
  • Fixed both outside-diff findings: plural literals/regexes/replacements inline telemetry assignments are sanitized, and inherited compact/expanded recovery fields are rebuilt from sanitized argv.
  • CodeRabbit’s generic docstring warning is contradicted by the repository-owned static gate, which reports 100% source/exported/member docstring coverage; no suppression or threshold change was made.
  • Sourcery’s weekly quota response and Gemini’s sunset notices are external availability constraints, not approval; they were down-voted. The useful CodeRabbit review artifacts were up-voted.
  • Final local proof: 417 files, 6,692 tests, exact 100/100/100/100 coverage, zero clones, and all strict static/contract/security/docs gates green.

@unbraind

unbraind commented Aug 2, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai full review

@unbraind

unbraind commented Aug 2, 2026

Copy link
Copy Markdown
Owner Author

@greptileai

@coderabbitai

coderabbitai Bot commented Aug 2, 2026 •

Copy link
Copy Markdown
✅ Action performed

Full review finished.


Your included review limit is currently reached under our Fair Usage Limits Policy. This review may still proceed through usage-based billing if eligible. Your next included review will be available in 27 minutes.

@unbraind

unbraind commented Aug 2, 2026

Copy link
Copy Markdown
Owner Author

Final bot-artifact ledger at exact head 192f25860:

  • CodeRabbit’s two original findings and two outside-diff findings are fixed; both threads are resolved and CodeRabbit independently verified the commit. The second requested full-review action completed under the plan limit with no new finding.
  • Sourcery’s reviewer guide correctly describes the security scope and was acknowledged; its separate weekly-quota review remains an availability constraint.
  • CodSpeed reports all 11 benchmarks unchanged. Codecov reports every modified coverable line covered and all tests successful.
  • The empty CodeRabbit bookkeeping reviews were inspected and acknowledged. Gemini remains sunset.

Every current bot comment/review has now been inspected, usefulness-voted, and addressed or explicitly classified.

@unbraind
unbraind merged commit c557226 into main Aug 2, 2026
32 checks passed
@unbraind
unbraind deleted the fix/history-redact-disclosure-safe-output branch August 2, 2026 02:07
@unbraind

unbraind commented Aug 4, 2026

Copy link
Copy Markdown
Owner Author

Tracked in PM: pm-y3w0ld.

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.

history-redact echoes the sensitive literal in command output

1 participant