Skip to content

Sync upstream silo-plugin-sdk (2026-09-29): request router download progress - #13

Merged
JonahMMay merged 2 commits into
mainfrom
sync/upstream-2026-09-29
Sep 29, 2026
Merged

JonahMMay merged 2 commits into
mainfrom
sync/upstream-2026-09-29

Conversation

@JonahMMay

@JonahMMay JonahMMay commented Sep 29, 2026 •

Copy link
Copy Markdown

Summary

Real merge of Silo-Server/silo-plugin-sdk main (50a39c7, "feat(requestrouter): let request routers report download progress (Silo-Server#27)") into Prairie.

  • Adds optional DownloadProgress on TargetStatus and the request_router.reports_download_progress manifest flag.
  • Prairie rebrand kept: proto package prairie/plugin/v1, module github.com/prairie-server/prairie-plugin-sdk. git grep -i silo is clean.

Conflict notes

  • pkg/pluginsdk/convert/request_router_test.go, pkg/pluginsdk/manifest/request_router_test.go: took upstream's new tests, rewritten to Prairie import paths, prairie.* plugin ids and prairie_api_version.
  • pkg/pluginproto/prairie/plugin/v1/request_router.pb.go: not hand-merged; regenerated with buf generate using protoc-gen-go v1.36.11 and protoc-gen-go-grpc v1.6.1 (same as the Makefile / existing headers). No other generated file changed.
  • Local: all pluginsdk packages pass; coverage 95.2% (floor 95%).

Merge with 'Create a merge commit' — do not squash.

AI disclosure

  • Tool: Claude Code
  • Model: claude-opus-5-5
  • Involvement: AI-generated

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
    • Download progress can now be reported for supported downloads, including phase, size, estimated completion, and number of downloads.
    • Progress updates refresh every minute while a download is in progress. When progress is unavailable or cleared, the host returns to its regular refresh schedule.
    • Unknown phases are treated as downloading, and progress from plugins that don’t declare support is ignored.

Quick104 and others added 2 commits September 28, 2026 20:38
…lo-Server#27)

Add an optional DownloadProgress to TargetStatus: a phase, bytes total and
left summed over the target's distinct downloads, the latest estimated
completion, and the number of downloads. A plugin declares that it fills it
with request_router.reports_download_progress, which the host reads from the
manifest to decide which targets to refresh every minute.

The phase vocabulary is open, and bytes_total is 0 whenever any download's
size is unknown, so hosts show no percentage rather than an overstated one.

Refs Silo-Server#26

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Brings in upstream Silo-Server#27: request routers can report download progress
(TargetStatus.DownloadProgress + request_router.reports_download_progress).

Conflicts: request_router_test.go (convert, manifest) resolved to upstream's
new tests with Prairie module paths/plugin ids; request_router.pb.go
regenerated with buf + protoc-gen-go v1.36.11 / protoc-gen-go-grpc v1.6.1.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 1e0f6261-10aa-4174-aaca-7dc1929e164f

📥 Commits

Reviewing files that changed from the base of the PR and between 03e128a and db96cbf.

⛔ Files ignored due to path filters (1)
  • pkg/pluginproto/prairie/plugin/v1/request_router.pb.go is excluded by !**/*.pb.go
📒 Files selected for processing (5)
  • README.md
  • docs/compatibility.md
  • pkg/pluginsdk/convert/request_router_test.go
  • pkg/pluginsdk/manifest/request_router_test.go
  • proto/prairie/plugin/v1/request_router.proto

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The request-router proto adds a declaration for download progress reporting and progress data on target status. SDK tests cover flag conversion, manifest loading, defaults, and validation. Documentation specifies progress aggregation, presence rules, and host polling behavior.

Changes

Download progress reporting

Layer / File(s) Summary
Progress contract and host behavior
proto/prairie/plugin/v1/request_router.proto, README.md, docs/compatibility.md
The proto defines the reporting flag and progress fields. Documentation describes phase handling, aggregation, unset progress, and host polling rules.
SDK flag handling and validation
pkg/pluginsdk/manifest/request_router_test.go, pkg/pluginsdk/convert/request_router_test.go
Tests cover manifest loading and defaults, metadata conversion and round trips, unknown metadata, and validation of request-router flags.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Feature

Suggested reviewers: quick104

Merge Risk: ⚪ Minimal · up to db96c

The download-progress contract and SDK flag coverage have no identified merge-blocking issue; the PR is ready for normal merge checks.

Security Architecture Review

Security architecture risk: 🔵 Low · up to db96c

The new reporting capability is optional and defaults to off. The contract describes how hosts should gate and clear progress, but the host behavior cannot be verified from this SDK change.

Retained concerns
No architecture-level concerns identified.

Security review details

Security Blast Radius

  • inferred — The new input to host status handling is plugin-supplied progress for a target. The supplied evidence does not establish tenant-wide exposure or a new privileged sink.

Trust Boundaries and Controls

  • observed — The contract requires hosts to disregard progress unless the plugin declares the capability; omission of the flag loads as false. Host enforcement of that rule was not verified.

Resilience and Maintainability Implications

  • observed — The documented transition clears stored progress and restores regular cadence when progress is unset or has an empty phase and zero total bytes. No supplied host consumer or recovery test verifies the transition.

Hardening Proposals

  • proposed — When the host consumer is available, verify capability gating and the stored-progress and polling transitions across unset, malformed, repeated, and interrupted status responses.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 44.44% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 9 functions across 2 files. (3 skipped: 3… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the upstream synchronization and the main change: request router download progress. It is concise and relevant to the pull request.
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.
Full details: Docstring Coverage

Explanation

Docstring coverage is 44.44% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 9 functions across 2 files. (3 skipped: 3 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Warning

Some tools did not complete. Review the errors below.

🔧 Buf (1.72.0)
proto/prairie/plugin/v1/request_router.proto

fatal: unable to access 'https://github.com/Prairie-Server/prairie-plugin-sdk.git/': Failed to connect to github.com:443 over proxy 127.0.0.1 after 0 ms: Could not connect to server
fatal: could not fetch 124e5192deb89c55cf587e36256272f62bddc885 from promisor remote


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.

@JonahMMay
JonahMMay merged commit 55c8d99 into main Sep 29, 2026
3 checks passed
@JonahMMay
JonahMMay deleted the sync/upstream-2026-09-29 branch September 29, 2026 14:43
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.

2 participants