Skip to content

SDK package safety, ownership, context contracts, and CLI self-description - #880

Merged
unbraind merged 3 commits into
mainfrom
feat/sdk-package-contract-primitives
Aug 3, 2026
Merged

SDK package safety, ownership, context contracts, and CLI self-description#880
unbraind merged 3 commits into
mainfrom
feat/sdk-package-contract-primitives

Conversation

@unbraind

@unbraind unbraind commented Aug 3, 2026

Copy link
Copy Markdown
Owner

Summary

This broad SDK/CLI tranche strengthens pm as a universal context-management platform across package authoring, customization safety, composable reads, and self-describing runtime contracts.

  • safely installs local npm .tgz / .tar.gz archives with strict package layout, path/link, entry-count, archive-size, expanded-size, and per-entry bounds
  • publishes deterministic extension command ownership with ordered claimants, collision state, winner, and last_activated_wins policy through CLI and SDK
  • detects MCP tool-schema custom-field collisions consistently in schema authoring, profile lint, extension doctor, contracts, and generated error catalogs
  • expands universal read-row contracts to annotations, linked resources, validation, and contracts surfaces
  • closes every contract-enumerated command path over structured JSON help, including positional workspace snapshot actions and help itself
  • fixes cross-platform Claude project slug resolution so real session provenance records model/version data
  • updates the current pm-changelog extension and generated changelog

PM lineage

Verification

  • 423 test files / 6,762 tests
  • exact 100% statements, branches, functions, and lines
  • ESLint, 0-copy jscpd, 100% docstring gates, SDK surface, contracts, package boundary, token/context/retrieval gates, secrets, and dependency audit pass
  • isolated packed SDK consumer plus Node npx, Bun install, and bunx
  • real local npm archive install and deterministic ownership discovery in clean Node/Bun workspaces
  • real-layout sandboxed Claude mutation records non-null model and version probe provenance
  • package-first dogfood: 88 commands

Closes #844
Closes #878
Closes #879

Summary by Sourcery

Strengthen SDK and CLI contracts around local package installation, command ownership, MCP custom-field safety, read-row projections, structured help coverage, and provenance reporting.

New Features:

  • Support installing local npm .tgz/.tar.gz archives as extension sources through a bounded, validated extraction pipeline.
  • Expose deterministic command ownership metadata for handlers and overrides via package describe and SDK describe helpers.
  • Extend universal read-row contracts to comments, notes, learnings, files, docs, validate, and contracts commands, including row_contract emission.
  • Provide SDK and CLI contracts for resolving MCP custom-field collisions against canonical tool inputs, including reserved-field discovery and collision descriptors.

Bug Fixes:

  • Resolve Claude harness session provenance for workspaces whose paths include underscores by using a compatible slug encoding.
  • Ensure structured JSON help resolves for every contract-enumerated command path, including positional workspace snapshot actions and help itself.
  • Warn when schema or profile custom fields collide with MCP tool input properties instead of allowing silent shadowing of canonical inputs.

Enhancements:

  • Tighten local npm archive safety with strict archive layout validation, link rejection, bounded entry/archive/expanded-byte limits, and isolated extraction before install.
  • Publish extension MCP custom-field collision warnings through extension doctor and related diagnostics surfaces.
  • Expand extension describe markdown and JSON output with explicit command_ownership tables that capture collision state and last-activated-wins policy.

Build:

  • Add tar as a runtime dependency for safe npm archive inspection and extraction.
  • Adjust static quality gates and SDK public surface metadata for new exported contracts and modules.

Documentation:

  • Document local npm archive installation semantics, safety guarantees, and examples in the extensions guide.
  • Document deterministic command ownership reporting and MCP custom-field collision behavior in extension and output projection contracts documentation.
  • Update changelog entries to cover local archive support, MCP field collision warnings, structured help closure, and provenance fixes.

Tests:

  • Add unit and integration coverage for local npm archive extraction limits, path/link validation, and manifest requirements.
  • Add tests for deterministic command ownership reporting and markdown rendering, MCP custom-field collision warnings across schema, profiles, and extensions, and read-row contracts for new commands.
  • Extend structured help tests to verify resolution for every contract-enumerated command path and distinguish virtual positional paths from unsupported ones.
  • Update release-readiness runtime tests to assert presence and ordering of row_contract metadata in relevant JSON outputs.
  • Add tests to verify flag-contract discovery for positional lifecycle commands and improved Claude provenance model/version extraction.

Summary by cubic

Adds safe local npm archive installs, deterministic extension command ownership, MCP custom‑field collision diagnostics, universal read‑row contracts, and full structured‑help resolution across CLI and SDK. Hardens custom‑field normalization to linear time and fixes Claude session slug encoding so model/version provenance is recorded.

  • New Features

    • Safe install of local .tgz/.tar.gz with strict bounds (archive, entries, expanded size, per‑entry); preserves provenance; new error code local_package_archive_unsafe (uses tar@7.5.22).
    • Deterministic command ownership for extensions with ordered claimants and a last_activated_wins policy; included in SDK describe results.
    • Detects MCP custom‑field collisions; warns in schema add‑field, profile lint, and extension doctor; exports PM_TOOL_RESERVED_CUSTOM_FIELD_PROPERTIES and resolvePmToolCustomFieldCollision; new lint code field_mcp_input_collision.
    • Universal read‑row contracts now cover annotations (comments, notes, learnings), linked resources (files, docs), validation, and contracts; outputs include row_contract; exports PM_READ_ROW_CONTRACTS.
    • Structured help resolves all contract‑enumerated paths, including positional workspace snapshot actions and help.
  • Bug Fixes

    • Normalize non‑alphanumeric characters in Claude project slugs to restore cross‑platform model/version provenance capture.
    • Make custom‑field normalization linear‑time to avoid pathological cases; preserves existing collision semantics.

Written for commit 48bf0a0. Summary will update on new commits.

Review in cubic

Deliver safe local npm archive installation, deterministic extension command ownership, MCP custom-field collision diagnostics, and universal read-row contracts across CLI and SDK surfaces. Close structured-help contract gaps and align Claude provenance slug resolution across platforms. Add exhaustive focused, integration, packed-consumer, Node, Bun, and exact 100% coverage evidence with PM lineage and generated changelog updates.
@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 secure installation of local npm .tgz/.tar.gz archives, exposes deterministic extension command ownership and MCP custom-field collision diagnostics through SDK and CLI contracts, expands read-row contracts and structured help coverage, fixes Claude provenance slugging, and updates docs, error catalog, tests, and public SDK surface accordingly.

Sequence diagram for secure local npm archive installation

sequenceDiagram
  actor User
  participant pm_cli
  participant resolveInstallSource
  participant extractLocalPackageArchive
  participant listTar
  participant validateLocalPackageArchiveEntry
  participant extractTar
  participant installNpmPackageRuntimeDependencies

  User->>pm_cli: pm install ./my-package-1.2.3.tgz --project
  pm_cli->>resolveInstallSource: resolveInstallSource(source)
  resolveInstallSource->>resolveInstallSource: fs.stat(source.absolute_path)
  resolveInstallSource->>resolveInstallSource: isLocalPackageArchive(path)
  resolveInstallSource->>extractLocalPackageArchive: extractLocalPackageArchive(path)

  extractLocalPackageArchive->>extractLocalPackageArchive: fs.stat(archivePath) [size check]
  extractLocalPackageArchive->>extractLocalPackageArchive: fs.mkdtemp(...)
  extractLocalPackageArchive->>listTar: listTar({ file, onReadEntry })
  loop each archive entry
    listTar->>validateLocalPackageArchiveEntry: validateLocalPackageArchiveEntry(entry, limits, state)
    validateLocalPackageArchiveEntry-->>listTar: ok or throw local_package_archive_unsafe
  end

  extractLocalPackageArchive->>extractTar: extractTar({ file, cwd })
  extractLocalPackageArchive->>extractLocalPackageArchive: fs.readFile(package/package.json)
  extractLocalPackageArchive->>installNpmPackageRuntimeDependencies: installNpmPackageRuntimeDependencies(packageRoot)
  installNpmPackageRuntimeDependencies-->>extractLocalPackageArchive: dependencies installed
  extractLocalPackageArchive-->>resolveInstallSource: { directory, package, version, cleanup }
  resolveInstallSource-->>pm_cli: InstallSource with cleanup
  pm_cli-->>User: Installed package with verified archive
Loading

File-Level Changes

Change Details Files
Secure support for installing local npm package archives as extension sources.
  • Introduce tar-based archive validation and extraction with strict limits on archive size, entry count, per-entry size, expanded bytes, and decompression ratio.
  • Reject archives lacking a single package/package.json root, containing escaping paths, links, devices, or unsupported entry types.
  • Wire archive detection into local and npm install source resolution so .tgz/.tar.gz files are extracted into isolated temp roots and treated as managed sources.
  • Expose extractLocalPackageArchive and validateLocalPackageArchiveEntry via _testOnlyInstallSources and add targeted unit tests and error catalog entries.
src/sdk/extension/install-sources.ts
tests/unit/extensions/extension-install-security.spec.ts
src/sdk/generated-error-code-catalog.ts
docs/EXTENSIONS.md
package.json
pnpm-lock.yaml
sdk/public-surface.json
tests/fixtures/contracts/full.json
Expose deterministic extension command ownership in describe paths.
  • Extend ExtensionDescribeResult with command_ownership, including per-command surface, collision flag, policy, and ordered claimants.
  • Derive ownership tables from activationResult command handlers/overrides with last_activated_wins semantics and filter by matchedNames.
  • Render command ownership in markdown output and expose describe contracts through the public SDK surface.
  • Add tests to verify ownership ordering, collision detection, and markdown rendering.
src/sdk/extension/describe.ts
src/sdk/extension.ts
src/sdk/index.ts
docs/EXTENSIONS.md
tests/unit/extensions/extension-describe.spec.ts
sdk/public-surface.json
Diagnose MCP custom-field collisions across schema, profiles, and extensions.
  • Define PM_TOOL_RESERVED_CUSTOM_FIELD_PROPERTIES and resolvePmToolCustomFieldCollision to map runtime field names to canonical MCP input properties and nested options.* paths.
  • Emit warnings from schema add-field, profile lint, and extension doctor when custom fields shadow MCP inputs, including owner and recovery path.
  • Add a new field_mcp_input_collision error code and extension_custom_field_mcp_input_collision doctor warnings, with unit coverage.
  • Export collision contracts and helpers via SDK CLI contracts and add documentation updates.
src/sdk/cli-contracts/tool-schema.ts
src/sdk/schema.ts
src/core/profile/profile-lint.ts
src/sdk/extension/custom-field-collisions.ts
src/sdk/extension.ts
src/sdk/cli-contracts.ts
src/sdk/index.ts
src/sdk/generated-error-code-catalog.ts
tests/unit/commands/schema-command.spec.ts
tests/unit/core/profile/profile-lint.spec.ts
tests/unit/extensions/extension-command.spec.ts
docs/EXTENSIONS.md
sdk/public-surface.json
Close structured help coverage over all contract-enumerated commands, including positional paths.
  • Enhance resolveCommandFromPathTokens to fall back to positional parents when an exact Commander command is missing but the path is known to contracts or core names.
  • Track requested_path vs commander-resolved path in JSON help payloads and prefer the longer, contract-backed path for resolved_path.
  • Introduce hasSubcommandFlagContractsForCommand to distinguish concrete contract paths from surface-less or invalid paths and export via SDK.
  • Add unit and integration tests ensuring every contract command path resolves structured help and that help for unknown paths fails closed.
src/cli/help-json-payload.ts
src/sdk/cli-contracts/flag-contracts.ts
src/sdk/cli-contracts.ts
src/sdk/index.ts
tests/unit/cli/help-command-path-resolution.spec.ts
tests/integration/contract-command-enumeration.integration.spec.ts
tests/fixtures/contracts/full.json
docs/OUTPUT_PROJECTION_CONTRACTS.md
Expand universal read-row contracts to annotations, linked resources, validation, and contracts surfaces.
  • Extend PM_READ_ROW_CONTRACTS and sentinel-key map to cover comments, notes, learnings, files, docs, validate, and contracts commands with shared jq selector.
  • Ensure runtime JSON envelopes include row_contract for these commands and adjust release readiness tests to assert key order and presence.
  • Add unit tests verifying resolveReadRowContract for the new commands and document the extended selector coverage.
src/sdk/output-projection.ts
tests/unit/sdk/read-row-contracts.spec.ts
tests/integration/release-readiness-runtime.spec.ts
docs/OUTPUT_PROJECTION_CONTRACTS.md
Fix Claude harness session provenance slug resolution and guard SDK surface integrity.
  • Change workspace encoding for Claude session paths to replace all non [A-Za-z0-9-] characters with '-', ensuring underscores and other symbols map consistently.
  • Adjust provenance unit test expectations to match new slug behavior across platforms.
  • Tighten static SDK private-import gate now that describe contracts are part of the public SDK, and update managed agent history/issues and changelog entries.
src/core/shared/author.ts
tests/unit/sdk/agent-runtime-primitives.spec.ts
scripts/release/static-quality-gate.mts
CHANGELOG.md
.agents/pm/**/*.toon
.agents/pm/history/*.jsonl

Assessment against linked issues

Issue Objective Addressed Explanation
#844 Allow pm package install to accept local npm .tgz/.tar.gz archives (both direct local paths and npm: specs) as package sources and resolve them through the same extension install pipeline as directories.
#844 Safely validate and extract local npm package archives into a bounded temporary directory, enforcing limits on archive size, entry count, expanded bytes, entry size, and rejecting traversal, links, and unsupported entry types with actionable errors.
#844 Preserve the original archive path/provenance in managed metadata and validate the package manifest/entrypoint before installation so subsequent operations (reload/upgrade/describe) reflect the archive as the source.
#878 Ensure that every command path enumerated by pm contracts (including workspace snapshot subcommands and help) is resolvable by pm help --json <path> instead of returning unknown_command.
#878 Add automated coverage/contract tests that assert closure between contracts enumeration and structured JSON help, so regressions where help --json cannot resolve enumerated commands are prevented.
#879 Resolve the failure causing the Nightly Validation workflow to fail on the windows-latest / Node 24 matrix, so that the test suite and CLI behavior pass on that platform/version.

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

@unbraind

unbraind commented Aug 3, 2026

Copy link
Copy Markdown
Owner Author

@greptileai please review the exact current head, including the broad SDK package safety, ownership, custom-field collision, row-contract, structured-help, and provenance changes.

@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

Rate Limit Exceeded

@unbraind have exceeded the limit for the number of chat messages per hour. Please wait 19 minutes and 56 seconds before sending another message.

@coderabbitai

coderabbitai Bot commented Aug 3, 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: 38 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: 72a800af-4865-4804-a249-509bca418b93

📥 Commits

Reviewing files that changed from the base of the PR and between bbbc13b and 48bf0a0.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (51)
  • .agents/pm/chores/pm-do5b.toon
  • .agents/pm/chores/pm-ksr40d.toon
  • .agents/pm/epics/pm-u9d0.toon
  • .agents/pm/extensions/.managed-extensions.json
  • .agents/pm/history/pm-6z0wzf.jsonl
  • .agents/pm/history/pm-7wx1f9.jsonl
  • .agents/pm/history/pm-9gvazz.jsonl
  • .agents/pm/history/pm-do5b.jsonl
  • .agents/pm/history/pm-ksr40d.jsonl
  • .agents/pm/history/pm-lw6acw.jsonl
  • .agents/pm/history/pm-sb0tns.jsonl
  • .agents/pm/history/pm-u9d0.jsonl
  • .agents/pm/history/pm-yfdav2.jsonl
  • .agents/pm/issues/pm-6z0wzf.toon
  • .agents/pm/issues/pm-7wx1f9.toon
  • .agents/pm/issues/pm-9gvazz.toon
  • .agents/pm/issues/pm-lw6acw.toon
  • .agents/pm/issues/pm-sb0tns.toon
  • .agents/pm/issues/pm-yfdav2.toon
  • CHANGELOG.md
  • docs/EXTENSIONS.md
  • docs/OUTPUT_PROJECTION_CONTRACTS.md
  • package.json
  • scripts/release/static-quality-gate.mts
  • sdk/public-surface.json
  • src/cli/help-json-payload.ts
  • src/core/profile/profile-lint.ts
  • src/core/shared/author.ts
  • src/sdk/cli-contracts.ts
  • src/sdk/cli-contracts/flag-contracts.ts
  • src/sdk/cli-contracts/tool-schema.ts
  • src/sdk/extension.ts
  • src/sdk/extension/custom-field-collisions.ts
  • src/sdk/extension/describe.ts
  • src/sdk/extension/install-sources.ts
  • src/sdk/generated-error-code-catalog.ts
  • src/sdk/index.ts
  • src/sdk/output-projection.ts
  • src/sdk/schema.ts
  • tests/fixtures/contracts/full.json
  • tests/integration/contract-command-enumeration.integration.spec.ts
  • tests/integration/release-readiness-runtime.spec.ts
  • tests/unit/cli/help-command-path-resolution.spec.ts
  • tests/unit/commands/schema-command.spec.ts
  • tests/unit/core/profile/profile-lint.spec.ts
  • tests/unit/extensions/extension-command.spec.ts
  • tests/unit/extensions/extension-describe.spec.ts
  • tests/unit/extensions/extension-install-security.spec.ts
  • tests/unit/sdk/agent-runtime-primitives.spec.ts
  • tests/unit/sdk/custom-field-collisions.spec.ts
  • tests/unit/sdk/read-row-contracts.spec.ts
✨ Finishing Touches
📝 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-package-contract-primitives (48bf0a0) with main (bbbc13b)

Open in CodSpeed

Comment thread src/sdk/cli-contracts/tool-schema.ts Fixed
@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!

Replace separator-regex normalization with a single-pass scanner and add adversarial 200k-separator coverage in response to CodeQL. Preserve existing MCP collision semantics and exact 100% repository coverage.
@unbraind

unbraind commented Aug 3, 2026

Copy link
Copy Markdown
Owner Author

Review-loop acknowledgement for the current head: Gemini sunset notice acknowledged; Sourcery guide and CodSpeed no-regression report accepted; Sourcery weekly-limit and CodeRabbit review-limit responses marked unhelpful because they produced no findings. The CodeQL finding was fixed and acknowledged inline with exact verification. CodeRabbit reports its next full review is outside this run’s 25-minute review window; I will retry once after the supported wait window while Greptile and hosted checks run.

@unbraind

unbraind commented Aug 3, 2026

Copy link
Copy Markdown
Owner Author

@greptileai please re-review the current security-fix head.

@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

Rate Limit Exceeded

@unbraind have exceeded the limit for the number of chat messages per hour. Please wait 6 minutes and 19 seconds before sending another message.

@unbraind

unbraind commented Aug 3, 2026

Copy link
Copy Markdown
Owner Author

Exact-head hosted acknowledgement: Codecov confirms every modified line is covered and all tests pass; CodSpeed confirms all 11 benchmarks are unchanged; both are accepted. The second CodeRabbit response was again only a rate-limit notice and is marked unhelpful. All hosted checks now pass, CodeQL is resolved/outdated with its inline fix reply, and there are zero unresolved review threads.

@unbraind

unbraind commented Aug 3, 2026

Copy link
Copy Markdown
Owner Author

Review availability limitation: the repository Greptile gate reached free_reviews_limit_reached, so no free Greptile finding set exists for this head. CodeRabbit remains plan-rate-limited beyond the 25-minute maximum review window. This is not treated as a green review; the limitation is preserved explicitly alongside the fully green hosted analyzer/check inventory.

@unbraind

unbraind commented Aug 3, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

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

@unbraind

unbraind commented Aug 3, 2026

Copy link
Copy Markdown
Owner Author

CodeRabbit final review acknowledgement: the explicit post-fix review completed on exact head 48bf0a0c91b9761c49f8c7d57657c739de4d1634 without an actionable finding. The completion response has been up-voted; the earlier quota responses remain down-voted and documented as service limitations.

@unbraind
unbraind merged commit e727e84 into main Aug 3, 2026
32 checks passed
@unbraind
unbraind deleted the feat/sdk-package-contract-primitives branch August 3, 2026 09:30
@unbraind

unbraind commented Aug 4, 2026

Copy link
Copy Markdown
Owner Author

Tracked in PM: pm-6z0wzf, pm-7wx1f9, pm-9gvazz, pm-lw6acw, pm-sb0tns, pm-yfdav2.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants