Add bounded progressive MCP discovery - #169
Conversation
|
There's a test pinning I've completed my review. Let me verify the build/types pass conceptually by checking there are no obvious type issues with the Review SummaryThis is a large but high-quality PR. I read every line of the kernel changes ( Key strengths I verified:
I found no actionable defects. The concurrency accounting in LGTM! |
026e721 to
1939f07
Compare
|
Documentation is thorough and accurate. The README limits table reflects the new bounds. Note the I've completed a comprehensive review. Let me summarize my findings. The one substantive finding is the unused public API on Review SummaryI reviewed every line of the kernel/kernel-adjacent changes ( The design is sound. The things I verified specifically:
Finding (non-blocking)Dead public API on I did not post this inline since it spans the definition and its (absent) call sites rather than a single changed line. No other actionable issues found. |
1939f07 to
081f40f
Compare
|
The README limits table is now comprehensive — the earlier bonk finding about missing hydrated/search bounds has been addressed (they're now in the table). Documentation is thorough. I've completed a comprehensive review. My findings match and extend the earlier bonk reviews. Let me summarize. Review SummaryI reviewed every line of the kernel/kernel-adjacent changes ( Things I verified specifically:
I found no actionable defects. The kernel diff is minimal and correct, and the design holds up against the self-widening, replay, and unbounded-work attack surfaces it targets. LGTM! |
081f40f to
2797918
Compare
|
I reviewed every line of the kernel/kernel-adjacent changes ( Things I verified specifically:
I found no actionable defects. The kernel diff is minimal and correct, and the design holds up against the self-widening, replay, and unbounded-work surfaces it targets. LGTM! |
2797918 to
6c81619
Compare
|
I reviewed every line of the kernel/kernel-adjacent changes ( Things I verified specifically:
I found no actionable defects. The kernel diff is minimal and correct, and the design holds up against the self-widening, replay, and unbounded-work surfaces it targets. LGTM! |
6c81619 to
610a306
Compare
|
Let me check one concern about Let me verify the In The review is complete. All the security-critical invariants hold, the prior bonk finding (dead LGTM! |
610a306 to
988c512
Compare
|
The logic is complete and correct. One subtle detail I want to confirm: the I've reviewed the full diff thoroughly against the base commit I could not run LGTM! |
|
GPT Findings:
|
| // Attribute the auto-approval to the user who enabled the rule -- it runs under their | ||
| // authority. | ||
| await this.applyPendingAction(fresh, rule.enabledBy, true); | ||
| const outcome = await this.applyPendingAction(fresh, rule.enabledBy, true); |
There was a problem hiding this comment.
I'm kind of surprised to see auto approval / kernel changes in this PR
An MCP grant is broader than the bounded catalog shown to the agent: a server-wide grant also covers authorized tools that fall beyond the catalog’s size limit. This adds bounded search and exact-name lookup so those tools remain discoverable and callable without loading an unbounded tools/list response.
Tool policy and connection generation are checked again before dispatch. If either changes while an action awaits approval, the action becomes explicitly invalidated, is never sent, and stops later auto-approved actions from running past it.
It kind of sounds like we might be solving two problems in this PR, should the second paragraph be another PR?
There was a problem hiding this comment.
The revalidation/invalidation path is intentionally part of this PR because progressive discovery allows an action to be staged from a tool definition that was fetched outside the bounded catalog. The connection generation, grant, and policy must be checked again at approval time before dispatch; splitting that out would leave an intermediate mergeable state where progressively discovered actions rely on stale approval metadata. I kept the Workshop/shared API portion limited to the terminal invalidated outcome and its in-order auto-approval barrier.
There was a problem hiding this comment.
Can't we just split the kernel/protocol changes out in to a separate PR and land that first?
There was a problem hiding this comment.
kernel changes are split out
988c512 to
1ba0c6e
Compare
|
I have completed my independent review. I traced every security-critical path myself and evaluated each of the six externally-reported "GPT Findings" against the actual code rather than restating prior reviews. Verification of security-critical invariants (all hold)
Assessment of the reported findings
Findings not posted inline (they span multiple lines / definitions rather than one changed line): the approval-time un-timed revalidation I/O (Medium) and the missing Overall this is a high-quality, well-tested PR with a minimal and correct kernel diff. The one item I'd genuinely recommend addressing before merge is threading a deadline through the I'll also echo the maintainer's own review question: the second paragraph (revalidate-before-dispatch + |
1ba0c6e to
e3d3e5f
Compare
|
The I've now independently verified all the security-critical invariants and evaluated every prior finding against the actual code. My conclusion: SummaryI reviewed every line of the kernel/kernel-adjacent changes ( Invariants I verified hold:
On the earlier Process note (echoing the maintainer's own review question): the second paragraph of the description — revalidate-before-dispatch plus the I found no actionable defects. The kernel diff is minimal and correct, and the design holds up against the self-widening, replay, and unbounded-work surfaces it targets. LGTM! |
|
Update after splitting the kernel work from this PR: #169 is now discovery-only at Discovery-only verification: 300 MCP tests, both MCP connector suites/builds, and full |
e3d3e5f to
06870ec
Compare
|
The tests thoroughly cover the byte-budget-after-filter semantics (line 220), page-stopping (line 186), and index-vs-catalog byte behavior (line 236). The implementation is well-tested and correct. I've completed a thorough review of the actual code at HEAD. My analysis: SummaryI reviewed every line of this PR's diff at HEAD ( Things I verified hold:
One process observationThis branch ( That actually resolves the maintainer's repeated review question ("can't we split the kernel/protocol changes out and land that first?"): as it stands, this HEAD is the discovery-only PR with no kernel or No actionable code defects found in the changes present at HEAD. LGTM! |
|
Couple more |
06870ec to
a0d934e
Compare
|
Test coverage for the concurrency bounds (lines 154, 174), portal-native hydration guards (128, 145), and discovery beyond the catalog (102) is present. The review is complete. Review SummaryI reviewed this PR at HEAD ( Invariants I independently verified hold:
On the two most-recent
The earlier findings (dead LGTM! |
updated |
a0d934e to
0d7a91d
Compare
|
Confirmed. The only change to This is my one actionable finding. Let me verify the argument-type mismatch is unambiguous (no I'll note the finding won't be posted inline since it spans the definition in one file and two call sites in another. Here is my review. I reviewed the discovery-only PR at HEAD ( Finding (Medium — breaks the build)
Beyond the compile error, the intended runtime behavior is also lost: reading Fix: pass The author's discovery-only verification note claimed both MCP connector suites/builds passed; this contradicts the code at HEAD, so it's worth re-running This spans the definition in one file and its two call sites in another, so I did not post it inline. Everything else verified sound
One actionable finding above (not posted inline). The rest of the PR is well-designed and thoroughly tested. |
0d7a91d to
d45b0ab
Compare
|
The trust boundary changes are additive and safe: My review is complete. I traced all the security-critical paths and verified the prior build-breaking finding is resolved. Review SummaryI reviewed this discovery-only PR at HEAD ( The one prior actionable finding is resolvedThe most recent bonk review found a build-breaking type error: Invariants I independently verified hold
I found no actionable defects. No inline review submitted. LGTM! |
An MCP grant is broader than the bounded catalog shown to the agent: a server-wide grant also covers authorized tools that fall beyond the catalog’s size limit. This adds bounded search and exact-name lookup so those tools remain discoverable and callable without loading an unbounded
tools/listresponse.