Skip to content

feat: plugin runtime core — MCP client, plugin manifests, v1 contracts, plugin test (plugins slice 2a) (#290) - #296

Merged
DanielNetzer merged 1 commit into
mainfrom
forgecell/issue-290-ba05d2cbf345989e5709c65d
Oct 31, 2026
Merged

DanielNetzer merged 1 commit into
mainfrom
forgecell/issue-290-ba05d2cbf345989e5709c65d

Conversation

@DanielNetzer

Copy link
Copy Markdown
Owner

Implements issue #290.

Molecule: mol-290-d0cb51462659714fd4b190eb
Formula: forgecell-github-issue
Base: 777b56eb63c6fd85854fec73a405fb9c545a8e5d
Delivery: 2f59dfa9ea6247e94f3bbdadf6b4d61e5cbf3358

Awaiting exact-commit CI and human review. Harness-reported checks are not independent CI evidence. No merge, deployment or issue closure is authorized.

@DanielNetzer

Copy link
Copy Markdown
Owner Author

Adversarial review (plugins slice 2a): no HIGH findings and no correctness MEDIUMs. I checked the framing bounds, the cap on skipped messages, id matching, refusal of server-initiated requests, duplicate and case-variant key rejection, the contract check on initialize, the strict decoders, Error() (fixed reasons only, server text redacted), and that the safetext move matches the base sanitizer and redaction behaviour.

Two hardening MEDIUMs and four LOWs are tracked in #294, which lands before slice 2b:

  • the process group isn't killed after a clean exit;
  • cleanup of a chmod-ed run directory fails silently;
  • the interpreter isn't re-verified just before exec;
  • Initialize doesn't refuse a mismatched protocolVersion, doesn't sanitize the reported contract, and has no default timeout;
  • U+2028 and U+2029 pass the sanitizer and identifier checks;
  • the conformance bound checks pass when no tool was called.

Another LOW: TestPluginTestAgainstTheFakeServer takes about 48s, and about 13s even on an idle machine. Building the fake server once per package with TestMain and sync.Once would make it faster.

Integration: I applied this branch to current main (with #291 and #295) and go vet ./... passes. These packages also pass: go test -timeout 20m ./internal/{plugin,extension,cli,safetext,ui,forgesync,delivery,forge}/....

@DanielNetzer
DanielNetzer marked this pull request as ready for review October 31, 2026 08:06
@DanielNetzer
DanielNetzer merged commit d26c94b into main Oct 31, 2026
2 checks passed
@DanielNetzer
DanielNetzer deleted the forgecell/issue-290-ba05d2cbf345989e5709c65d branch October 31, 2026 08:15
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