Conversation
…add CI coverage test - Add TestDocumentationCoverage test in plugins/all that fails if any registered module or step type is missing from DOCUMENTATION.md (prevents future drift) - Update module type tables: add Plugin column, add 35 previously undocumented module types (api.gateway, auth.m2m, auth.oauth2, auth.token-blacklist, security.field-protection, openapi, config.provider, database.partitioned, dlq.service, eventstore.service, featureflag.service, timeline.service, nosql.*, platform.kubernetes/ecs/dns/networking/..., argo.workflows, app.container, aws.codebuild, gitlab.webhook/client, cloud.account, security.scanner, policy.mock, storage.artifact, cache.redis, tracing.propagation, http.middleware.otel, etc.) - Mark removed types as deprecated with migration notes (auth.modular, chimux.router, database.modular, eventlogger.modular, httpclient.modular, httpserver.modular, eventbus.modular) - Add 104 previously undocumented step types across all plugins with Plugin column - Add Platform & Infrastructure Pipeline Steps section (47 new step types) - Add new module sections: NoSQL/Datastores, Event Sourcing & Messaging Services - Add detailed reference docs for openapi, auth.m2m, api.gateway, database.partitioned, config.provider, featureflag.service, dlq.service, eventstore.service, timeline.service Co-authored-by: intel352 <77607+intel352@users.noreply.github.com>
|
@copilot similarly add validation that ensures all registered steps show up in wfctl's MCP functionality. Also extend wfctl to provide documentation from the workflow repo as well, as part of it's MCP server. |
…nglish spelling Co-authored-by: intel352 <77607+intel352@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Adds a documentation coverage guardrail to keep registered module/step types in sync with the public docs, and significantly expands/reshapes DOCUMENTATION.md (including plugin attribution and new module reference sections).
Changes:
- Introduce a Go test that loads
plugins/alland fails if any registered module/step type is missing fromDOCUMENTATION.md. - Update
DOCUMENTATION.mdmodule/step tables (now including a Plugin column) and add new “Module Type Reference” entries (e.g.,openapi,auth.m2m,api.gateway, etc.).
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| plugins/all/doc_coverage_test.go | Adds a coverage test that compares plugin registrations against backtick-quoted entries in DOCUMENTATION.md. |
| DOCUMENTATION.md | Expands module/step type listings and adds detailed reference sections for selected module types. |
…ON.md as MCP resource - Add TestListStepTypes_AllBuiltinsPresent and TestListModuleTypes_AllBuiltinsPresent in mcp/step_coverage_test.go: loads all built-in plugins via plugins/all.DefaultPlugins(), registers their types into global schema registries, and verifies handleListStepTypes / handleListModuleTypes return every registered type (MCP equivalent of TestDocumentationCoverage) - Add workflow://docs/full-reference MCP resource that serves DOCUMENTATION.md content; resolves file via: explicit WithDocumentationFile path → pluginDir-relative path → CWD → graceful fallback message with public repo URL - Add WithDocumentationFile ServerOption to mcp.Server for explicit doc file path - Add -documentation-file flag to `wfctl mcp` command - Add TestDocsFullReference_* tests for fallback, WithFile, and repo file cases Co-authored-by: intel352 <77607+intel352@users.noreply.github.com>
Done in commit Step/module coverage validation in MCP (
DOCUMENTATION.md as MCP resource (
|
|
@copilot apply changes based on the comments in this thread |
- Add plugins/openapi to plugins/all.DefaultPlugins() so openapi module
type is part of the standard plugin set (resolves review comment on line 24
claiming all types are in plugins/all)
- Fix openapi swagger_ui config docs: it's an object {enabled, path},
not a bool; default path is /docs not /swagger/ (review comment line 524-532)
- Remove validation.response and validation.response_action from openapi
docs and example — Validation.Response field exists in the struct but is
never read in the route handling code, and ResponseAction does not exist
at all (review comment line 526-531)
- Fix openapi module table description: "request/response validation" → "request validation"
Co-authored-by: intel352 <77607+intel352@users.noreply.github.com>
Applied in commit
|
⏱ Benchmark Results✅ No significant performance regressions detected. benchstat comparison (baseline → PR)
|
|
@copilot apply changes based on the comments in this thread And intelligently resolve the merge conflict, and verify the changes are accurate |
The changes from the review thread were already applied in
All three coverage tests pass: |
|
@copilot Address the incoming merge conflict, there's a whole section that needs updating with care. |
…rse, restore response validation, trustedKeys, autoSync docs Co-authored-by: intel352 <77607+intel352@users.noreply.github.com>
Resolved in Conflict 1 — Core Pipeline Steps table: Kept our enriched HEAD version (with Plugin column and 80+ step types). Added Conflict 2 — Integration section: Kept our HEAD version (Plugin column, gitlab/cloud/scanner/policy entries). Did not add Additional content corrections triggered by the new commits:
All three coverage tests pass: |
DOCUMENTATION.md had significant drift from the plugin registry: 35 module types and 104 step types were registered but undocumented, and 7 removed
*.modulartypes were still listed as active.CI enforcement
Added
TestDocumentationCoverageinplugins/all/doc_coverage_test.go— loads all plugins viaDefaultPlugins(), extracts every registered module and step type, and fails if any is absent from DOCUMENTATION.md as a backtick-quoted string. Future additions without docs will break CI.MCP coverage enforcement
Added
TestListStepTypes_AllBuiltinsPresentandTestListModuleTypes_AllBuiltinsPresentinmcp/step_coverage_test.go— loads all built-in plugins viaDefaultPlugins(), registers their types into the global schema registries, and asserts thathandleListStepTypes/handleListModuleTypesreturn every registered type. This ensures wfctl's MCP server accurately reflects all available step and module types.DOCUMENTATION.md as MCP resource
Added a
workflow://docs/full-referenceMCP resource to the wfctl MCP server that serves the full DOCUMENTATION.md content. The handler resolves the file via a fallback chain: explicit path (via newWithDocumentationFileServerOption) → path derived from plugin directory layout → current working directory → graceful fallback message with the public GitHub URL. A-documentation-fileflag was added towfctl mcpfor non-standard locations.DOCUMENTATION.md
Module type tables
Plugincolumn to every table (addresses core-vs-plugin ambiguity)auth.m2m,auth.oauth2,auth.token-blacklist,security.field-protectionapi.gatewayopenapi,http.middleware.otelnosql.memory,nosql.dynamodb,nosql.mongodb,nosql.rediseventstore.service,dlq.service,timeline.service,featureflag.service,config.providerplatform.kubernetes/ecs/dns/networking/apigateway/autoscaling/region/region_router/doks,app.container,argo.workflows,aws.codebuildgitlab.webhook,gitlab.client,cloud.account,security.scanner,policy.mockstorage.artifact,cache.redis,tracing.propagationauth.modular,chimux.router,database.modular,eventlogger.modular,httpclient.modular,httpserver.modular,eventbus.modularStep type tables
Plugincolumnstep.json_parsestep.k8s_*,step.ecs_*,step.iac_*,step.argo_*,step.do_*,step.region_*, etc.step.trace_*), GitLab (step.gitlab_*), policy (step.policy_*), NoSQL (step.nosql_*), state machine, marketplace, CI/CD (step.git_*,step.codebuild_*,step.build_*,step.deploy,step.gate)Detailed reference docs added for the highest-impact previously undocumented types:
openapi,auth.m2m,api.gateway,database.partitioned,config.provider,featureflag.service,dlq.service,eventstore.service,timeline.service.openapireference doc corrections and updates:plugins/openapitoplugins/all.DefaultPlugins()so theopenapimodule type is part of the standard plugin set and the docs statement "all are included when usingplugins/all" is accurate.swagger_uiconfig documentation: it is an object (swagger_ui.enabled: bool,swagger_ui.path: string) with a default path of/docs, not a boolean with path/swagger/.validation.responseandvalidation.response_actionconfig rows — response validation is now fully implemented ("warn"logs only,"error"returns HTTP 500 on schema mismatch).Additional config docs added for recently merged features:
auth.m2m: AddedtrustedKeysarray config for registering trusted external JWT-bearer issuers ({issuer, publicKeyPEM, algorithm, audiences, claimMapping}).database.partitioned: AddedautoSyncbool config — controls whetherSyncPartitionsFromSourceis called automatically on engine start (defaults totruewhensourceTableis set).Original prompt
This section details on the original issue you should resolve
<issue_title>DOCUMENTATION.md is significantly out of sync with registered module and step types</issue_title>
<issue_description>## Problem
DOCUMENTATION.mdhas significant drift from the actual registered types. A comparison of the types returned bylist_module_types/list_step_types(from MCP tooling and plugin manifests) against what's documented reveals:26 types registered but NOT documented
Modules (9):
api.gatewayauthz.casbinconfig.providerconfigtemplate functiondatabase.partitioneddlq.serviceeventstore.servicefeatureflag.serviceopenapitimeline.serviceSteps (17):
step.build_uistep.circuit_breakerstep.constraint_checkstep.deploystep.docker_buildstep.docker_pushstep.docker_runstep.drift_checkstep.feature_flagstep.ff_gatestep.gatestep.platform_applystep.platform_destroystep.platform_planstep.platform_templatestep.rate_limitstep.sub_workflow16 types documented but NOT in registration lists
These appear in DOCUMENTATION.md but are NOT returned by
list_module_typesorlist_step_types, suggesting they've been renamed, moved to plugins, or removed:Modules (11):
auth.modularchimux.routerdatabase.modulareventbus.modulareventlogger.modularhttpclient.modularhttpserver.modularplatform.do_appplatform.do_databaseplatform.do_dnsplatform.do_networkingSteps (5):
step.auth_validatestep.raw_responsestep.field_reencryptstep.sandbox_execstep.token_revokeAdditional types from
list_step_typeswith descriptions (plugin-provided) but not in DOCUMENTATION.mdThese were returned by the MCP
list_step_typestool with descriptions, indicating they're registered by plugins, but have no documentation:step.auth_required— "Validates JWT or API key authentication. Returns 401 if not authenticated."step.m2m_token— "Generates or validates a machine-to-machine (M2M) token with custom claims."step.nosql_get/step.nosql_put/step.nosql_query— NoSQL operationsstep.oidc_auth_url/step.oidc_callback— OIDC authentication flowstep.statemachine_get/step.statemachine_transition— State machine operationsstep.actor_send/step.actor_ask— Actor model messagingstep.parallel— "Executes named sub-steps concurrently and collects results"Impact
For production users, the most critical undocumented types are:
auth.m2m— Not even in the module_types list, but it's a real module type used for OAuth2 M2M authentication with client_credentials and JWT-bearer grants, per-client custom claims, JWKS endpoint. Zero documentation.openapi— Spec-driven routing via x-pipeline, request/response validation, Swagger UI. Zero documentation.database.partitioned— PostgreSQL LIST partition management with source table sync. Zero documentation.authz.casbin— Casbin RBAC/ABAC authorization with inline policy and role assignment config. Zero documentation.config.provider— Referenced by theconfigtemplate function but undocumented.These are not niche features — they're foundational for anyone building a multi-tenant API service with the workflow engine.
Sugg...
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.