feat: establish external connector plugin architecture - #1
Draft
sabino wants to merge 1 commit into
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Upstream PeerDB PR #3204 is useful context, but adding connector code through the current static Go registry still requires rebuilding Core and preserving in-process coupling. This PR establishes the staged external connector boundary instead.
It adopts Metabase's metadata-first discovery, lazy activation, capability reporting, and community packaging model, while deliberately using supervised subprocesses rather than a shared classloader or Go
.soABI.Companion catalog PR: https://github.com/sabino-software/peerdb-plugins/pull/1
Included
peerdb.plugin.v1protobuf services for control, schema, CDC, QRep, table lifecycle, diagnostics, query, and narrowly scoped host callbacks0600Unix sockets, launch-token HMAC proof, standard gRPC health, protocol/format/compression negotiation, generation-bound leases, crash invalidation, drain/shutdown, bounded jitter, and a restart circuit breakerPeerV2/connector identity messages and a catalog migration that preserves the legacy enum/oneof pathCorrectness invariants
Deliberately not in this PR
This is the mergeable foundation, not a false “all connectors extracted” claim. Existing connectors remain on the legacy in-process path. No external artifact can be enabled until a real signature verifier supplies a matching attestation.
The following implementation slices remain:
Windows launch-token delivery fails closed until an inherited HANDLE/named-pipe contract is implemented.
Validation
Locally completed:
peerdb.plugin.v1A Go toolchain was unavailable in the construction environment, so this PR's new pinned GitHub Actions job is the authoritative
go testcompilation gate.Current CI infrastructure status
GitHub did not execute test steps for these drafts. In the Core fork, every pull-request workflow—including unrelated existing Flow, UI, CodeQL, migration, and lint workflows—failed before its first step; the new protocol job likewise has zero steps and no downloadable log. In the plugin repository, the validation run ended as
startup_failurewith zero jobs. This is consistent with an Actions policy/runner/billing startup block, not a test assertion. Enable or repair Actions for the forks and rerun before treating either PR as compile-validated.