Skip to content

SDK query contracts: universal OR filters, truthful lifecycle scope, and scripting guarantees - #886

Merged
unbraind merged 4 commits into
mainfrom
feat/sdk-query-scripting-contracts
Aug 3, 2026
Merged

SDK query contracts: universal OR filters, truthful lifecycle scope, and scripting guarantees#886
unbraind merged 4 commits into
mainfrom
feat/sdk-query-scripting-contracts

Conversation

@unbraind

@unbraind unbraind commented Aug 3, 2026

Copy link
Copy Markdown
Owner

Outcome

This broad SDK/CLI tranche makes project discovery and automation predictable across lifecycle history, query surfaces, package integrations, and shell clients.

  • adds a reusable public SDK parser for repeatable/CSV OR filters with per-token validation and escaped literal commas/backslashes
  • applies one grammar across list, search, aggregate, and update-many for status, type, priority, tag, assignee, sprint, and release
  • makes plain list/search truthful all-status discovery surfaces with reproducible status=all receipts
  • publishes a scripting contract for exit codes, stdout/stderr separation, stable structured fields, jq/xargs/NDJSON composition, and bulk dry-run safety
  • updates CLI contracts, generated SDK surface, token budgets, changelog, focused/integration/consumer gates, and canonical PM history

Canonical PM items

  • pm-999jh7 — truthful lifecycle scope and receipts
  • pm-gknu — uniform multi-value filter grammar
  • pm-psy1 — executable CLI scripting contract

Verification

  • 6,799 tests; exact 100% statements / branches / functions / lines
  • full local release suite green through static quality, retrieval/context negative controls, contracts, SDK surface, token surfaces, packed npx, and 88-command package-first dogfood
  • isolated Bun install + bunx + public SDK consumer exercised all-status reads, repeated filters, and bulk dry-run
  • ESLint, zero-clone jscpd, docs links, changelog check, package artifact, pnpm audit, and tracked-secret scan pass
  • GitHub Dependabot, code-scanning, and secret-scanning inventories: zero open alerts
  • all 22 open GitHub issues have canonical PM .toon backlinks

Hosted analysis is intentionally left to this pushed exact SHA; the local pre-push gate correctly reported that the prior main SHA had no DeepScan result.

Summary by Sourcery

Align SDK and CLI query surfaces around truthful all-status discovery and a uniform multi-value filter grammar, and publish a tested scripting contract for machine clients.

New Features:

  • Introduce reusable multi-value filter parsing in the SDK for status, type, tag, priority, assignee, sprint, and release selectors with CSV and repeatable flag support.
  • Add a documented CLI scripting contract covering exit codes, stdout/stderr separation, stable structured fields, and shell composition guidance.

Bug Fixes:

  • Make plain list and search commands operate as all-status discovery surfaces with explicit status receipts so lifecycle scope is truthful and consistent.
  • Fix inconsistencies where type, priority, and tag filters previously mishandled comma-separated values across list, search, aggregate, and bulk update surfaces.

Enhancements:

  • Update list, search, aggregate, and update-many query handling to use shared OR semantics across multi-value filters and expose validated status selections in aggregate results.
  • Adjust list command defaults and help text so bare list reflects the full lifecycle scope while maintaining specialized lifecycle shortcuts.
  • Export new SDK query utilities and extend filter echoing so machine clients can rely on stable, contract-checked filter representations.

Documentation:

  • Add a CLI Scripting Contract guide and cross-link it from the main and docs READMEs to document scripting guarantees and OR filter behavior.
  • Update the changelog to record lifecycle scope fixes and the new filter grammar and scripting guarantees.

Tests:

  • Add unit and integration tests to gate the multi-value filter grammar, all-status lifecycle receipts, and scripting process contract for CLI and SDK consumers.

Summary by cubic

Unifies multi-value OR filters across the SDK/CLI, makes lifecycle discovery truthful by defaulting list/search to all statuses, and documents a scripting contract with stable exit codes and stream behavior. Addresses pm-999jh7, pm-gknu, and pm-psy1.

  • New Features

    • Reusable parser for repeatable/CSV filters with \, and \\ escapes and empty-value rejection; applied to --status, --type, --priority, --tag, --assignee, --sprint, and --release across list/search/aggregate/update-many.
    • list and search default to status=all and echo filters.status: "all"; aggregate discloses concrete selections via status_values.
    • Published CLI scripting contract (docs/SCRIPTING.md): stable exit codes, stdout-only data, stderr-only errors, and portable xargs composition; exported sdk/query/multi-value-filters on the public surface.
  • Migration

    • Scripts that relied on active-only listing should add --status open (or specify explicit statuses).
    • When passing CSV values with literal commas or backslashes, escape as \, and \\.

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

Review in cubic

Ship a reusable SDK multi-value filter grammar across list, search, aggregate, and update-many. Make lifecycle discovery truthful by defaulting list/search to all statuses with reproducible receipts, publish the CLI scripting contract, and gate exit/stream behavior, packed npm/Bun consumption, token budgets, and exact 100% coverage.\n\nCloses pm-999jh7, pm-gknu, and pm-psy1.
@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.

@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 3, 2026

Copy link
Copy Markdown

Reviewer's Guide

Implements a reusable multi-value filter parser shared across SDK query surfaces, aligns CLI flag contracts and list/search/aggregate/update-many behavior around OR-composed filters and truthful all-status discovery, and documents/gates a scripting contract for machine clients with tests and changelog/docs updates.

Sequence diagram for CLI list and aggregate commands using OR-composed filters

sequenceDiagram
  actor User
  participant CliListCommand as registerListCommand
  participant ListRunner as runRegisteredListCommand
  participant ListQuery as runList
  participant MultiFilters as parseStringFilterSet
  participant AggregateCommand as runAggregate

  User->>CliListCommand: pm list --status open,in_progress --type Task,Issue --tag a,b
  CliListCommand-->>User: help text (status/type/tag repeatable or CSV)
  User->>ListRunner: invoke list with options
  ListRunner->>ListRunner: normalizeListOptions
  ListRunner->>ListRunner: applyDefaultListProjection
  ListRunner->>ListRunner: listOptions.status = "all" when undefined
  ListRunner->>ListQuery: runList(undefined, listOptions, global)

  ListQuery->>MultiFilters: parseTypeFilterSet(options.type, typeRegistry)
  ListQuery->>MultiFilters: parseStringFilterSet(options.tag, {label: "--tag"})
  ListQuery->>MultiFilters: parsePriorityFilterSet(options.priority)
  ListQuery-->>ListRunner: items, filters.status = "all" or concrete set

  User->>AggregateCommand: pm aggregate --status open,blocked --type Task,Issue
  AggregateCommand->>AggregateCommand: parseStatus(options.status, statusRegistry)
  AggregateCommand->>ListQuery: runList(undefined, {status: options.status, ...}, global)
  AggregateCommand->>AggregateCommand: buildAggregateFilters(status_values)
  AggregateCommand-->>User: filters.status_values echoed
Loading

File-Level Changes

Change Details Files
Introduce a reusable multi-value OR-filter parser and sets for types, tags, priorities, and generic strings, and wire it into list/search matching logic.
  • Add sdk/query/multi-value-filters module with CSV parsing supporting escaped commas/backslashes, normalization, validation, and Set-based membership APIs.
  • Refactor list and search filter sets to use Set-based type/tag/priority/assignee/sprint/release filters instead of single values or arrays.
  • Update list/search matching helpers to apply OR semantics via Set membership, including tag matching and priority comparisons, and adjust tag warning logic to handle Sets.
  • Export multi-value filter utilities from the public SDK surface and add unit tests for decoding, validation, type resolution, priority validation, and filter receipts.
src/sdk/query/multi-value-filters.ts
src/sdk/query/list.ts
src/sdk/query/search.ts
src/sdk/query.ts
tests/unit/sdk/multi-value-filters.spec.ts
Align CLI flag contracts and list/search/aggregate/update-many behavior around uniform OR filters for shared selectors and truthful all-status lifecycle scope.
  • Mark status/type/tag/priority/assignee/sprint/release flags as list-capable across LIST, SEARCH, AGGREGATE, and UPDATE_MANY flag contracts to support repeated values.
  • Change list command registration so bare pm list defaults to status=all, updates the status help text to describe repeatable/CSV OR behavior, and updates description to all-status listing.
  • Update list filter resolution and status selection so default list filters emit filters.status="all" when no explicit status is provided and excludeTerminal is not set.
  • Refactor aggregate status parsing to accept multiple status values (CSV OR), store them in filters.status_values, and call runList with raw status options rather than a pre-normalized single status.
  • Adjust search filter summaries and verbose filters to treat undefined or "all" status as filters.status="all", and keep compact receipts clean when status is null.
  • Update update-many planning to rely on list’s own status parsing (including CSV/all semantics), removing bespoke single-status normalization, and adapt tests to new status array behavior.
  • Add integration tests to verify consistent OR filter behavior across list, aggregate, and update-many, escaped tag handling, and truthful all-status counts/filters for plain list and search.
  • Update existing unit/integration tests to expect Sets, arrays of statuses, and new filter receipts (e.g., filters.status="all" instead of null).
src/sdk/cli-contracts/flag-contracts.ts
src/cli/register-list-query.ts
src/sdk/query/list.ts
src/sdk/query/search-rendering.ts
src/sdk/query/aggregate.ts
src/sdk/lifecycle/update-many.ts
tests/integration/cli.integration.spec.ts
tests/unit/commands/update-many-command.spec.ts
tests/unit/commands/aggregate-command.spec.ts
tests/unit/commands/search-command.spec.ts
tests/integration/query-filter-contract.spec.ts
Define and gate a CLI scripting contract for exit codes, stdout/stderr discipline, structured fields, and filter semantics, with documentation and integration tests.
  • Add SCRIPTING.md documenting process exit-code meanings, stdout/stderr separation, stable JSON/NDJSON field shapes, uniform OR filters, and composition recipes for shells and machine clients.
  • Link the new scripting contract from docs/README, top-level README, and changelog, including canonical PM issue/task references.
  • Add integration tests asserting that successful JSON data is emitted on stdout with empty stderr, and representative failures emit structured error JSON on stderr with correct exit codes and empty stdout.
  • Add tests around scripting-relevant behavior such as dry-run update-many previews, matched_count, filters, ids, and lifecycle conflict exit-code handling.
docs/SCRIPTING.md
docs/README.md
README.md
CHANGELOG.md
tests/integration/scripting-contract.spec.ts
Update PM history/issue tracking, token baselines, contracts fixtures, and public SDK surface to reflect the new query and scripting contracts.
  • Add or update canonical PM history .jsonl entries and issue/task .toon files for pm-999jh7, pm-gknu, and pm-psy1 to record lifecycle and filter/scripting decisions.
  • Refresh agent-task token baseline JSON to account for new docs/tests and query behavior.
  • Update contracts fixture (tests/fixtures/contracts/full.json) to align with revised CLI flag contracts, including list-capable multi-value flags and scripting expectations.
  • Ensure public SDK surface JSON includes the new multi-value filter exports so SDK consumers can rely on them.
.agents/pm/history/pm-999jh7.jsonl
.agents/pm/history/pm-gknu.jsonl
.agents/pm/history/pm-psy1.jsonl
.agents/pm/issues/pm-999jh7.toon
.agents/pm/issues/pm-gknu.toon
.agents/pm/tasks/pm-psy1.toon
docs/agent-task-token-baseline.json
tests/fixtures/contracts/full.json
sdk/public-surface.json

Tips and commands

Interacting with Sourcery

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

Customizing Your Experience

Access your dashboard to:

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

Getting Help

@unbraind

unbraind commented Aug 3, 2026

Copy link
Copy Markdown
Owner Author

@greptileai review

@unbraind

unbraind commented Aug 3, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Aug 3, 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 59 minutes.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Added comma-separated and repeatable OR filters across list, search, aggregate, and bulk-update commands.
    • Added support for escaped filter values, validation, normalization, and de-duplication.
    • List and search now include all lifecycle statuses by default.
    • Added a CLI scripting contract covering exit codes, output streams, JSON fields, and machine-readable formats.
  • Documentation

    • Added scripting guidance and linked it from the project documentation.
    • Updated the unreleased changelog.

Walkthrough

The PR adds shared CSV multi-value filters across query and bulk-update surfaces, changes primary list and search defaults to all lifecycle statuses, exposes aggregate status metadata, documents the CLI scripting contract, and adds integration and unit coverage.

Changes

Query contracts and parsing

Layer / File(s) Summary
Shared multi-value filter grammar
src/sdk/query/multi-value-filters.ts, src/sdk/cli-contracts/*, sdk/public-surface.json, tests/fixtures/contracts/full.json
Adds reusable parsers for escaped, normalized, de-duplicated CSV filters and marks supported CLI options as list-valued.
List, search, and aggregate execution
src/sdk/query/list.ts, src/sdk/query/search.ts, src/sdk/query/aggregate.ts, src/cli/register-list-query.ts
Applies OR set matching, accepts multiple statuses, exposes status_values, and defaults primary list and search summaries to all statuses.
Bulk update status filtering
src/sdk/lifecycle/update-many.ts, tests/unit/commands/update-many-command.spec.ts
Validates multi-status filters and passes the original selector through list execution.
Validation and delivery records
tests/integration/*, tests/unit/*, docs/SCRIPTING.md, CHANGELOG.md, README.md, docs/README.md, .agents/pm/*
Adds cross-surface filter and scripting tests, scripting documentation, navigation updates, changelog entries, and completion evidence.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 32.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
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.
Title check ✅ Passed The title clearly summarizes the main changes: universal OR filters, lifecycle scope, and scripting guarantees.
Description check ✅ Passed The description directly explains the filter, lifecycle, scripting, documentation, testing, and verification changes.
✨ 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.

@codspeed-hq

codspeed-hq Bot commented Aug 3, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 11 untouched benchmarks


Comparing feat/sdk-query-scripting-contracts (f39e5ad) with main (3904b2c)

Open in CodSpeed

@codecov

codecov Bot commented Aug 3, 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!

@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: 6

Caution

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

⚠️ Outside diff range comments (1)
src/cli/register-list-query.ts (1)

344-367: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Collect repeatable list filter flags before normalization.

--tag uses collect, but --status, --type, and --priority also document repeatable input without it. Commander replaces prior values when the same scalar option is repeated, so pm list --type Task --type Issue only keeps the last value instead of OR matching. Add collect for these options and add CLI tests for repeated flags and CSV input.

🤖 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/register-list-query.ts` around lines 344 - 367, Add the existing
collect handler to the --status, --type, and --priority options in the command
registration near --tag so repeated flags accumulate values before
normalization. Preserve comma-separated parsing and OR matching, then add CLI
tests covering repeated values and CSV input for each affected filter.
🤖 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/issues/pm-999jh7.toon:
- Around line 41-52: Add tests/integration/cli.integration.spec.ts to the
relevant PM issue projection, updating both .agents/pm/issues/pm-999jh7.toon and
.agents/pm/issues/pm-gknu.toon as needed so the integration spec is linked
before merge.

In @.agents/pm/issues/pm-gknu.toon:
- Around line 30-43: Use the PM CLI to add
tests/unit/sdk/multi-value-filters.spec.ts to the linked files for PM item
pm-gknu. Do not modify the generated .toon file or its history directly.

In `@docs/SCRIPTING.md`:
- Line 76: Update the xargs recipe in the scripting documentation to remove the
GNU-only -r option. Use a portable no-input guard while retaining -n 1, or
explicitly document GNU coreutils as a prerequisite if the existing command must
remain.
- Around line 21-24: Preserve each upstream pm exit status in the documented
recipes: in docs/SCRIPTING.md lines 21-24, return the captured pm list status
instead of exit 1; in lines 37-38, capture and forward pm contracts’ status
before jq -e; and in lines 74-75 and 82-83, capture and forward pm search and pm
list statuses before their jq pipelines.

In `@src/sdk/query/multi-value-filters.ts`:
- Around line 54-57: Update the token-processing flow in parseMultiValueFilter
to detect and reject any trimmed empty token before filtering or applying
options.normalize, rather than discarding empty values. Preserve normalization
for valid tokens, and add coverage for embedded and trailing empty CSV tokens,
including leading empties if consistent with the existing rejection behavior.

In `@tests/integration/query-filter-contract.spec.ts`:
- Around line 99-114: Strengthen the filter contract tests around runList and
the corresponding aggregate/update-many cases so every type, priority, assignee,
sprint, release, and bulk selector assertion produces a strict subset or
otherwise includes a nonmatching fixture. Verify each selector independently
while preserving the repeated CLI checks for their flags, ensuring ignored
filters cannot still return both created fixtures.

---

Outside diff comments:
In `@src/cli/register-list-query.ts`:
- Around line 344-367: Add the existing collect handler to the --status, --type,
and --priority options in the command registration near --tag so repeated flags
accumulate values before normalization. Preserve comma-separated parsing and OR
matching, then add CLI tests covering repeated values and CSV input for each
affected filter.
🪄 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: aebf90ac-ba68-49d1-8524-f0525186a06d

📥 Commits

Reviewing files that changed from the base of the PR and between 3904b2c and 0b8b999.

📒 Files selected for processing (29)
  • .agents/pm/history/pm-999jh7.jsonl
  • .agents/pm/history/pm-gknu.jsonl
  • .agents/pm/history/pm-psy1.jsonl
  • .agents/pm/issues/pm-999jh7.toon
  • .agents/pm/issues/pm-gknu.toon
  • .agents/pm/tasks/pm-psy1.toon
  • CHANGELOG.md
  • README.md
  • docs/README.md
  • docs/SCRIPTING.md
  • docs/agent-task-token-baseline.json
  • sdk/public-surface.json
  • src/cli/register-list-query.ts
  • src/sdk/cli-contracts/flag-contracts.ts
  • src/sdk/lifecycle/update-many.ts
  • src/sdk/query.ts
  • src/sdk/query/aggregate.ts
  • src/sdk/query/list.ts
  • src/sdk/query/multi-value-filters.ts
  • src/sdk/query/search-rendering.ts
  • src/sdk/query/search.ts
  • tests/fixtures/contracts/full.json
  • tests/integration/cli.integration.spec.ts
  • tests/integration/query-filter-contract.spec.ts
  • tests/integration/scripting-contract.spec.ts
  • tests/unit/commands/aggregate-command.spec.ts
  • tests/unit/commands/search-command.spec.ts
  • tests/unit/commands/update-many-command.spec.ts
  • tests/unit/sdk/multi-value-filters.spec.ts

Comment thread .agents/pm/issues/pm-999jh7.toon Outdated
Comment thread .agents/pm/issues/pm-gknu.toon Outdated
Comment thread docs/SCRIPTING.md Outdated
Comment thread docs/SCRIPTING.md Outdated
Comment thread src/sdk/query/multi-value-filters.ts Outdated
Comment thread tests/integration/query-filter-contract.spec.ts
Reject every empty CSV member, collect repeated list filters in direct Commander registration, isolate each selector across list/aggregate/update-many tests, preserve shell exit codes, and make xargs composition portable. Record all review-driven PM evidence and missing file links.
@unbraind

unbraind commented Aug 3, 2026

Copy link
Copy Markdown
Owner Author

First review-round inventory fully acknowledged at head e824afc:

  • CodeRabbit: all six actionable findings verified, fixed, replied to inline, up-voted, and resolved. The outside-diff direct-Commander collection finding is fixed by collecting every list selector and joining string arrays during normalization.
  • Sourcery: reviewer guide acknowledged; the weekly diff-character quota limitation is recorded, with no actionable finding emitted.
  • Gemini Code Assist: sunset notice acknowledged; no review is available from that service.
  • CodSpeed: acknowledged the report that the PR does not alter the 11 measured benchmarks.
  • Codecov: acknowledged exact modified-line coverage and successful tests.
  • CodeRabbit command/status comments: acknowledged; first full review completed despite the status context rate-limit label.

Local correction proof: 6,800 tests, exact 100% statements/branches/functions/lines; focused query/scripting/registration tests, typecheck, ESLint, and docs-link gates pass. Requesting a fresh exact-head review now.

@unbraind

unbraind commented Aug 3, 2026

Copy link
Copy Markdown
Owner Author

@greptileai review

@unbraind

unbraind commented Aug 3, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Aug 3, 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 33 minutes.

@unbraind

unbraind commented Aug 3, 2026

Copy link
Copy Markdown
Owner Author

Second review-round acknowledgements for exact head e824afc:

  • Up-voted each of CodeRabbit’s six inline confirmations and their review containers; all original threads are resolved and five are now outdated because the fixes landed.
  • Up-voted the fresh full-review command response. It reports the included-review limit but emitted no new actionable inline finding.
  • Down-voted the updated generic CodeRabbit summary warning that claims 32% docstring coverage. The repository-authoritative static-quality gate enforces and passed 100% overall/exported/member docstring coverage, and the exact-head Gates (static) CI check is green; generating blanket docstrings would be counterproductive and is declined with evidence.
  • Fresh exact-head CI has no failed checks; 6,800 tests pass locally at exact 100/100/100/100.

Greptile was explicitly requested twice but has not emitted a PR review/comment. I am validating its repository gate separately and will preserve that service-response limitation rather than inventing approval.

@unbraind

unbraind commented Aug 3, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai full review

Final exact-head review requested after the PM evidence-only commit. Please review the complete PR.

@unbraind

unbraind commented Aug 3, 2026

Copy link
Copy Markdown
Owner Author

@greptileai review

Final exact-head review requested after the PM evidence-only commit. Please review the complete PR.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown

@unbraind, I will perform a complete review of the current PR head.

✅ 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 25 minutes.

@unbraind

unbraind commented Aug 3, 2026

Copy link
Copy Markdown
Owner Author

Final reviewer acknowledgement for head f39e5ad77a39ae4513bf9a8382cdb23598c360ab: the final delta contains only append-only PM evidence. CodeRabbit reported no new actionable finding and is rate-limited; Greptile remained silent after the final hosted request, with its confirmed free_reviews_limit_reached state recorded on canonical item pm-e02lgu. Every deterministic exact-head check is green, the six original CodeRabbit threads remain resolved, and all bot review surfaces have been acknowledged with reactions and context.

@unbraind
unbraind merged commit 56db517 into main Aug 3, 2026
31 checks passed
@unbraind
unbraind deleted the feat/sdk-query-scripting-contracts branch August 3, 2026 23:07
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