You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: website/docs/implementation_guides/pact_plugins/docs/proposals/proposal_007_driver_plugin_callback_model.md
+15-3Lines changed: 15 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -227,10 +227,22 @@ between gRPC, WASM, and Lua. Only the transport differs.
227
227
228
228
This proposal ships as one vertical slice through the mechanism, not the full capability surface:
229
229
230
-
1. The registry/trait pattern (`core_capabilities` module, generalising `PluginLogSink`).
231
-
2. The extended `PluginHost` gRPC service with cycle detection and deadline propagation.
232
-
3. Wiring the two existing `is_core()` branches in `content.rs` to call through instead of panicking.
230
+
1. ✅ The registry/trait pattern (`core_capabilities` module, generalising `PluginLogSink`). Done in both
231
+
drivers: Rust (`core_capabilities.rs`) and JVM (`CoreCapabilities.kt`).
232
+
2. ✅ The extended `PluginHost` gRPC service with cycle detection and deadline propagation. Done in both
233
+
drivers: Rust (`call_chain.rs`, `plugin_host.rs`) and JVM (`CallChain.kt`, `PluginHostServer.kt`).
234
+
3. ✅ Wiring the two existing `is_core()` branches in `content.rs` to call through instead of panicking. Done in
235
+
both drivers, including the plugin-forwarding branch calling through the chain-aware RPC methods added in
236
+
step 2.
233
237
4. The Lua and WASM host-function equivalents.
238
+
- ✅ Lua: `host_compare_contents`/`host_generate_content` global functions, reachable from
239
+
`match_contents`/`generate_content`. Done in both drivers, each of which has its own Lua
240
+
plugin runtime: Rust (`lua_plugin.rs`, via `mlua`) and JVM (`LuaPactPlugin.kt`/
241
+
`LuaPluginRpcClient.kt`, via `luajava`). Both reuse the same resolver added in step 2 -
- ⬜ WASM: not yet started (blocked on [003](/implementation_guides/pact_plugins/docs/proposals/proposal_003_support_wasm_plugins) landing WASM plugin
245
+
support at all).
234
246
235
247
This is deliberately the smallest slice that proves the mechanism end-to-end, because `is_core()` already exists as an
236
248
unfinished seam. [006](/implementation_guides/pact_plugins/docs/proposals/proposal_006_field_level_matchers_and_generators) then adds new capability trait shapes
Copy file name to clipboardExpand all lines: website/docs/implementation_guides/pact_plugins/docs/proposals/proposal_009_host_provided_core_matching_and_generation.md
+16Lines changed: 16 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -53,6 +53,22 @@ generator set through the 007 mechanism, and confirming the 006 field-level shap
53
53
context where the rule requires it — e.g. a `date` generator needing the current time, or a rule needing sibling
54
54
values).
55
55
56
+
### Sequencing
57
+
58
+
1. ✅ 007's content-level mechanism (the `CoreContentMatcher`/`CoreContentGenerator` registry and the extended
59
+
`PluginHost` gRPC service with cycle detection and deadline propagation). Done in both drivers — Rust
60
+
(`core_capabilities.rs`, `call_chain.rs`, `plugin_host.rs`) and JVM (`CoreCapabilities.kt`, `CallChain.kt`,
61
+
`PluginHostServer.kt`) — see [007](/implementation_guides/pact_plugins/docs/proposals/proposal_007_driver_plugin_callback_model#sequencing). This unblocks registering
62
+
any *content-level* standard matcher/generator (a whole content type, not a single field) through the mechanism
63
+
today.
64
+
2. ⬜ [006](/implementation_guides/pact_plugins/docs/proposals/proposal_006_field_level_matchers_and_generators)'s field-level operation shape. Not started. Blocks
65
+
registering the field-level standard rules (`type`, `regex`, `equality`, etc. applied to a single field rather
66
+
than a whole content type), which is most of what this proposal is actually for.
67
+
3. ⬜ Register the standard Pact matcher/generator set as `CORE` catalogue entries with handlers implementing 007's
68
+
traits (content-level now possible; field-level blocked on step 2). Not started.
69
+
4. ⬜ WASM and Lua host-function equivalents, following [007](/implementation_guides/pact_plugins/docs/proposals/proposal_007_driver_plugin_callback_model#sequencing)'s
70
+
step 4. Not started.
71
+
56
72
## Recommended direction
57
73
58
74
- Treat standard Pact matching and generation as host capabilities registered through the [007](/implementation_guides/pact_plugins/docs/proposals/proposal_007_driver_plugin_callback_model)
0 commit comments