Skip to content

docs: sync DOCUMENTATION.md with all registered module/step types + add CI and MCP coverage#296

Merged
intel352 merged 9 commits intomainfrom
copilot/fix-documentation-sync-issue
Mar 12, 2026
Merged

docs: sync DOCUMENTATION.md with all registered module/step types + add CI and MCP coverage#296
intel352 merged 9 commits intomainfrom
copilot/fix-documentation-sync-issue

Conversation

Copy link
Contributor

Copilot AI commented Mar 11, 2026

DOCUMENTATION.md had significant drift from the plugin registry: 35 module types and 104 step types were registered but undocumented, and 7 removed *.modular types were still listed as active.

CI enforcement

Added TestDocumentationCoverage in plugins/all/doc_coverage_test.go — loads all plugins via DefaultPlugins(), 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_AllBuiltinsPresent and TestListModuleTypes_AllBuiltinsPresent in mcp/step_coverage_test.go — loads all built-in plugins via DefaultPlugins(), registers their types into the global schema registries, and asserts that handleListStepTypes / handleListModuleTypes return 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-reference MCP 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 new WithDocumentationFile ServerOption) → path derived from plugin directory layout → current working directory → graceful fallback message with the public GitHub URL. A -documentation-file flag was added to wfctl mcp for non-standard locations.

DOCUMENTATION.md

Module type tables

  • Added Plugin column to every table (addresses core-vs-plugin ambiguity)
  • Added 35 previously undocumented types across new and existing sections:
    • Auth: auth.m2m, auth.oauth2, auth.token-blacklist, security.field-protection
    • API: api.gateway
    • HTTP: openapi, http.middleware.otel
    • New NoSQL / Datastores section: nosql.memory, nosql.dynamodb, nosql.mongodb, nosql.redis
    • New Event Sourcing & Messaging Services section: eventstore.service, dlq.service, timeline.service, featureflag.service, config.provider
    • Platform: platform.kubernetes/ecs/dns/networking/apigateway/autoscaling/region/region_router/doks, app.container, argo.workflows, aws.codebuild
    • Integration: gitlab.webhook, gitlab.client, cloud.account, security.scanner, policy.mock
    • Storage: storage.artifact, cache.redis, tracing.propagation
  • Deprecated types annotated with removal notes and replacement pointers: auth.modular, chimux.router, database.modular, eventlogger.modular, httpclient.modular, httpserver.modular, eventbus.modular

Step type tables

  • Added Plugin column
  • Added 104 previously undocumented step types organized by plugin category, including step.json_parse
  • New Platform & Infrastructure Pipeline Steps section covering all 47 step.k8s_*, step.ecs_*, step.iac_*, step.argo_*, step.do_*, step.region_*, etc.
  • Additional sections for: tracing (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.

openapi reference doc corrections and updates:

  • Added plugins/openapi to plugins/all.DefaultPlugins() so the openapi module type is part of the standard plugin set and the docs statement "all are included when using plugins/all" is accurate.
  • Fixed swagger_ui config 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/.
  • Added validation.response and validation.response_action config 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: Added trustedKeys array config for registering trusted external JWT-bearer issuers ({issuer, publicKeyPEM, algorithm, audiences, claimMapping}).
  • database.partitioned: Added autoSync bool config — controls whether SyncPartitionsFromSource is called automatically on engine start (defaults to true when sourceTable is 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.md has significant drift from the actual registered types. A comparison of the types returned by list_module_types / list_step_types (from MCP tooling and plugin manifests) against what's documented reveals:

26 types registered but NOT documented

Modules (9):

Type Status
api.gateway Undocumented
authz.casbin Undocumented — actively used in production (Chimera RBAC)
config.provider Undocumented — referenced by config template function
database.partitioned Undocumented — actively used in production (multi-tenant partition management)
dlq.service Undocumented
eventstore.service Undocumented
featureflag.service Undocumented
openapi Undocumented — actively used in production (x-pipeline routing, Swagger UI, request validation)
timeline.service Undocumented

Steps (17):

Type Status
step.build_ui Undocumented
step.circuit_breaker Undocumented
step.constraint_check Undocumented
step.deploy Undocumented
step.docker_build Has detailed docs section but missing from module_types registration list
step.docker_push Has detailed docs section but missing from module_types registration list
step.docker_run Has detailed docs section but missing from module_types registration list
step.drift_check Undocumented
step.feature_flag Undocumented
step.ff_gate Undocumented
step.gate Undocumented
step.platform_apply Undocumented
step.platform_destroy Undocumented
step.platform_plan Undocumented
step.platform_template Undocumented
step.rate_limit Undocumented
step.sub_workflow Undocumented

16 types documented but NOT in registration lists

These appear in DOCUMENTATION.md but are NOT returned by list_module_types or list_step_types, suggesting they've been renamed, moved to plugins, or removed:

Modules (11):

Documented Type Likely Status
auth.modular Renamed or removed?
chimux.router Renamed or removed?
database.modular Renamed or removed?
eventbus.modular Renamed or removed?
eventlogger.modular Renamed or removed?
httpclient.modular Renamed or removed?
httpserver.modular Renamed or removed?
platform.do_app Removed or behind a plugin?
platform.do_database Removed or behind a plugin?
platform.do_dns Removed or behind a plugin?
platform.do_networking Removed or behind a plugin?

Steps (5):

Documented Type Likely Status
step.auth_validate Registered by auth plugin (works in production but not in core registration list)
step.raw_response Registered by pipelinesteps plugin (works in production but not in core list)
step.field_reencrypt Plugin-provided?
step.sandbox_exec Plugin-provided?
step.token_revoke Registered by auth plugin?

Additional types from list_step_types with descriptions (plugin-provided) but not in DOCUMENTATION.md

These were returned by the MCP list_step_types tool 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 operations
  • step.oidc_auth_url / step.oidc_callback — OIDC authentication flow
  • step.statemachine_get / step.statemachine_transition — State machine operations
  • step.actor_send / step.actor_ask — Actor model messaging
  • step.parallel — "Executes named sub-steps concurrently and collects results"

Impact

For production users, the most critical undocumented types are:

  1. 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.
  2. openapi — Spec-driven routing via x-pipeline, request/response validation, Swagger UI. Zero documentation.
  3. database.partitioned — PostgreSQL LIST partition management with source table sync. Zero documentation.
  4. authz.casbin — Casbin RBAC/ABAC authorization with inline policy and role assignment config. Zero documentation.
  5. config.provider — Referenced by the config template 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.

…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>
@intel352 intel352 marked this pull request as ready for review March 11, 2026 23:13
Copilot AI review requested due to automatic review settings March 11, 2026 23:13
@intel352
Copy link
Contributor

@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>
Copilot AI changed the title [WIP] Fix synchronization issues in DOCUMENTATION.md docs: sync DOCUMENTATION.md with all registered module/step types + add CI coverage test Mar 11, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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/all and fails if any registered module/step type is missing from DOCUMENTATION.md.
  • Update DOCUMENTATION.md module/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>
Copy link
Contributor Author

Copilot AI commented Mar 11, 2026

@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, a...

Done in commit 03e8877.

Step/module coverage validation in MCP (mcp/step_coverage_test.go):

  • TestListStepTypes_AllBuiltinsPresent — loads all built-in plugins via plugins/all.DefaultPlugins(), registers their step types into the global schema registries, then verifies handleListStepTypes returns every registered step type. This is the MCP equivalent of the TestDocumentationCoverage test.
  • TestListModuleTypes_AllBuiltinsPresent — same for module types.

DOCUMENTATION.md as MCP resource (mcp/server.go):

  • Added workflow://docs/full-reference resource that serves the full DOCUMENTATION.md content. The handler resolves the file via a fallback chain: explicit path (from WithDocumentationFile option) → path derived from plugin directory layout → CWD → graceful fallback message with the public GitHub URL.
  • Added WithDocumentationFile(path string) ServerOption and a -documentation-file flag to wfctl mcp for when the file is in a non-standard location.

Copilot AI changed the title docs: sync DOCUMENTATION.md with all registered module/step types + add CI coverage test docs: sync DOCUMENTATION.md with all registered module/step types + add CI and MCP coverage Mar 11, 2026
@intel352
Copy link
Contributor

@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>
Copy link
Contributor Author

Copilot AI commented Mar 12, 2026

@copilot apply changes based on the comments in this thread

Applied in commit 4673afa:

  1. plugins/all missing openapi (line 24): Added plugins/openapi to plugins/all.DefaultPlugins() — the openapi module type is now part of the standard plugin set so the docs statement is accurate.

  2. swagger_ui config incorrect (lines 524–532): Changed swagger_ui: boolswagger_ui.enabled: bool + swagger_ui.path: string with default path /docs (not /swagger/). Updated the example YAML accordingly.

  3. validation.response / validation.response_action not implemented (lines 526–531): Removed both config rows and the corresponding example lines — Validation.Response exists in the struct but is never read in route handling code, and ResponseAction doesn't exist at all.

@github-actions
Copy link

github-actions bot commented Mar 12, 2026

⏱ Benchmark Results

No significant performance regressions detected.

benchstat comparison (baseline → PR)
## benchstat: baseline → PR
baseline-bench.txt:244: parsing iteration count: invalid syntax
baseline-bench.txt:364916: parsing iteration count: invalid syntax
baseline-bench.txt:745380: parsing iteration count: invalid syntax
baseline-bench.txt:1085071: parsing iteration count: invalid syntax
baseline-bench.txt:1464089: parsing iteration count: invalid syntax
baseline-bench.txt:1788525: parsing iteration count: invalid syntax
benchmark-results.txt:244: parsing iteration count: invalid syntax
benchmark-results.txt:311933: parsing iteration count: invalid syntax
benchmark-results.txt:605064: parsing iteration count: invalid syntax
benchmark-results.txt:907915: parsing iteration count: invalid syntax
benchmark-results.txt:1189886: parsing iteration count: invalid syntax
benchmark-results.txt:1507896: parsing iteration count: invalid syntax
goos: linux
goarch: amd64
pkg: github.com/GoCodeAlone/workflow/dynamic
cpu: AMD EPYC 7763 64-Core Processor                
                            │ benchmark-results.txt │
                            │        sec/op         │
InterpreterCreation-4                  5.800m ± 66%
ComponentLoad-4                        3.453m ±  1%
ComponentExecute-4                     1.983µ ±  2%
PoolContention/workers-1-4             1.080µ ±  4%
PoolContention/workers-2-4             1.074µ ±  0%
PoolContention/workers-4-4             1.076µ ±  1%
PoolContention/workers-8-4             1.087µ ±  1%
PoolContention/workers-16-4            1.082µ ±  4%
ComponentLifecycle-4                   3.468m ±  0%
SourceValidation-4                     2.282µ ±  0%
RegistryConcurrent-4                   772.4n ±  5%
LoaderLoadFromString-4                 3.507m ±  1%
geomean                                18.11µ

                            │ benchmark-results.txt │
                            │         B/op          │
InterpreterCreation-4                  1.944Mi ± 0%
ComponentLoad-4                        2.097Mi ± 0%
ComponentExecute-4                     1.203Ki ± 0%
PoolContention/workers-1-4             1.203Ki ± 0%
PoolContention/workers-2-4             1.203Ki ± 0%
PoolContention/workers-4-4             1.203Ki ± 0%
PoolContention/workers-8-4             1.203Ki ± 0%
PoolContention/workers-16-4            1.203Ki ± 0%
ComponentLifecycle-4                   2.099Mi ± 0%
SourceValidation-4                     1.984Ki ± 0%
RegistryConcurrent-4                   1.133Ki ± 0%
LoaderLoadFromString-4                 2.099Mi ± 0%
geomean                                15.05Ki

                            │ benchmark-results.txt │
                            │       allocs/op       │
InterpreterCreation-4                   15.09k ± 0%
ComponentLoad-4                         17.43k ± 0%
ComponentExecute-4                       25.00 ± 0%
PoolContention/workers-1-4               25.00 ± 0%
PoolContention/workers-2-4               25.00 ± 0%
PoolContention/workers-4-4               25.00 ± 0%
PoolContention/workers-8-4               25.00 ± 0%
PoolContention/workers-16-4              25.00 ± 0%
ComponentLifecycle-4                    17.48k ± 0%
SourceValidation-4                       32.00 ± 0%
RegistryConcurrent-4                     2.000 ± 0%
LoaderLoadFromString-4                  17.47k ± 0%
geomean                                  181.2

cpu: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
                            │ baseline-bench.txt │
                            │       sec/op       │
InterpreterCreation-4               6.671m ± 57%
ComponentLoad-4                     3.311m ±  1%
ComponentExecute-4                  1.949µ ±  2%
PoolContention/workers-1-4          1.198µ ±  1%
PoolContention/workers-2-4          1.203µ ±  1%
PoolContention/workers-4-4          1.217µ ±  2%
PoolContention/workers-8-4          1.203µ ±  4%
PoolContention/workers-16-4         1.204µ ±  1%
ComponentLifecycle-4                3.381m ±  0%
SourceValidation-4                  2.299µ ±  0%
RegistryConcurrent-4                907.2n ±  2%
LoaderLoadFromString-4              3.419m ±  4%
geomean                             19.28µ

                            │ baseline-bench.txt │
                            │        B/op        │
InterpreterCreation-4               1.944Mi ± 0%
ComponentLoad-4                     2.097Mi ± 0%
ComponentExecute-4                  1.203Ki ± 0%
PoolContention/workers-1-4          1.203Ki ± 0%
PoolContention/workers-2-4          1.203Ki ± 0%
PoolContention/workers-4-4          1.203Ki ± 0%
PoolContention/workers-8-4          1.203Ki ± 0%
PoolContention/workers-16-4         1.203Ki ± 0%
ComponentLifecycle-4                2.099Mi ± 0%
SourceValidation-4                  1.984Ki ± 0%
RegistryConcurrent-4                1.133Ki ± 0%
LoaderLoadFromString-4              2.099Mi ± 0%
geomean                             15.05Ki

                            │ baseline-bench.txt │
                            │     allocs/op      │
InterpreterCreation-4                15.09k ± 0%
ComponentLoad-4                      17.43k ± 0%
ComponentExecute-4                    25.00 ± 0%
PoolContention/workers-1-4            25.00 ± 0%
PoolContention/workers-2-4            25.00 ± 0%
PoolContention/workers-4-4            25.00 ± 0%
PoolContention/workers-8-4            25.00 ± 0%
PoolContention/workers-16-4           25.00 ± 0%
ComponentLifecycle-4                 17.48k ± 0%
SourceValidation-4                    32.00 ± 0%
RegistryConcurrent-4                  2.000 ± 0%
LoaderLoadFromString-4               17.47k ± 0%
geomean                               181.2

pkg: github.com/GoCodeAlone/workflow/middleware
cpu: AMD EPYC 7763 64-Core Processor                
                                  │ benchmark-results.txt │
                                  │        sec/op         │
CircuitBreakerDetection-4                     291.1n ± 3%
CircuitBreakerExecution_Success-4             22.51n ± 0%
CircuitBreakerExecution_Failure-4             65.44n ± 0%
geomean                                       75.41n

                                  │ benchmark-results.txt │
                                  │         B/op          │
CircuitBreakerDetection-4                    144.0 ± 0%
CircuitBreakerExecution_Success-4            0.000 ± 0%
CircuitBreakerExecution_Failure-4            0.000 ± 0%
geomean                                                 ¹
¹ summaries must be >0 to compute geomean

                                  │ benchmark-results.txt │
                                  │       allocs/op       │
CircuitBreakerDetection-4                    1.000 ± 0%
CircuitBreakerExecution_Success-4            0.000 ± 0%
CircuitBreakerExecution_Failure-4            0.000 ± 0%
geomean                                                 ¹
¹ summaries must be >0 to compute geomean

cpu: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
                                  │ baseline-bench.txt │
                                  │       sec/op       │
CircuitBreakerDetection-4                  462.7n ± 4%
CircuitBreakerExecution_Success-4          59.77n ± 0%
CircuitBreakerExecution_Failure-4          64.67n ± 0%
geomean                                    121.4n

                                  │ baseline-bench.txt │
                                  │        B/op        │
CircuitBreakerDetection-4                 144.0 ± 0%
CircuitBreakerExecution_Success-4         0.000 ± 0%
CircuitBreakerExecution_Failure-4         0.000 ± 0%
geomean                                              ¹
¹ summaries must be >0 to compute geomean

                                  │ baseline-bench.txt │
                                  │     allocs/op      │
CircuitBreakerDetection-4                 1.000 ± 0%
CircuitBreakerExecution_Success-4         0.000 ± 0%
CircuitBreakerExecution_Failure-4         0.000 ± 0%
geomean                                              ¹
¹ summaries must be >0 to compute geomean

pkg: github.com/GoCodeAlone/workflow/module
cpu: AMD EPYC 7763 64-Core Processor                
                                 │ benchmark-results.txt │
                                 │        sec/op         │
JQTransform_Simple-4                        865.8n ± 29%
JQTransform_ObjectConstruction-4            1.439µ ±  1%
JQTransform_ArraySelect-4                   3.311µ ±  1%
JQTransform_Complex-4                       38.04µ ±  1%
JQTransform_Throughput-4                    1.773µ ±  1%
SSEPublishDelivery-4                        66.39n ±  0%
geomean                                     1.626µ

                                 │ benchmark-results.txt │
                                 │         B/op          │
JQTransform_Simple-4                      1.273Ki ± 0%
JQTransform_ObjectConstruction-4          1.773Ki ± 0%
JQTransform_ArraySelect-4                 2.625Ki ± 0%
JQTransform_Complex-4                     16.22Ki ± 0%
JQTransform_Throughput-4                  1.984Ki ± 0%
SSEPublishDelivery-4                        0.000 ± 0%
geomean                                                ¹
¹ summaries must be >0 to compute geomean

                                 │ benchmark-results.txt │
                                 │       allocs/op       │
JQTransform_Simple-4                        10.00 ± 0%
JQTransform_ObjectConstruction-4            15.00 ± 0%
JQTransform_ArraySelect-4                   30.00 ± 0%
JQTransform_Complex-4                       324.0 ± 0%
JQTransform_Throughput-4                    17.00 ± 0%
SSEPublishDelivery-4                        0.000 ± 0%
geomean                                                ¹
¹ summaries must be >0 to compute geomean

cpu: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
                                 │ baseline-bench.txt │
                                 │       sec/op       │
JQTransform_Simple-4                     990.4n ± 17%
JQTransform_ObjectConstruction-4         1.474µ ±  0%
JQTransform_ArraySelect-4                3.244µ ±  0%
JQTransform_Complex-4                    35.93µ ±  0%
JQTransform_Throughput-4                 1.805µ ±  0%
SSEPublishDelivery-4                     72.60n ±  3%
geomean                                  1.678µ

                                 │ baseline-bench.txt │
                                 │        B/op        │
JQTransform_Simple-4                   1.273Ki ± 0%
JQTransform_ObjectConstruction-4       1.773Ki ± 0%
JQTransform_ArraySelect-4              2.625Ki ± 0%
JQTransform_Complex-4                  16.22Ki ± 0%
JQTransform_Throughput-4               1.984Ki ± 0%
SSEPublishDelivery-4                     0.000 ± 0%
geomean                                             ¹
¹ summaries must be >0 to compute geomean

                                 │ baseline-bench.txt │
                                 │     allocs/op      │
JQTransform_Simple-4                     10.00 ± 0%
JQTransform_ObjectConstruction-4         15.00 ± 0%
JQTransform_ArraySelect-4                30.00 ± 0%
JQTransform_Complex-4                    324.0 ± 0%
JQTransform_Throughput-4                 17.00 ± 0%
SSEPublishDelivery-4                     0.000 ± 0%
geomean                                             ¹
¹ summaries must be >0 to compute geomean

pkg: github.com/GoCodeAlone/workflow/schema
cpu: AMD EPYC 7763 64-Core Processor                
                                    │ benchmark-results.txt │
                                    │        sec/op         │
SchemaValidation_Simple-4                       1.112µ ± 2%
SchemaValidation_AllFields-4                    1.686µ ± 4%
SchemaValidation_FormatValidation-4             1.604µ ± 1%
SchemaValidation_ManySchemas-4                  1.846µ ± 4%
geomean                                         1.535µ

                                    │ benchmark-results.txt │
                                    │         B/op          │
SchemaValidation_Simple-4                      0.000 ± 0%
SchemaValidation_AllFields-4                   0.000 ± 0%
SchemaValidation_FormatValidation-4            0.000 ± 0%
SchemaValidation_ManySchemas-4                 0.000 ± 0%
geomean                                                   ¹
¹ summaries must be >0 to compute geomean

                                    │ benchmark-results.txt │
                                    │       allocs/op       │
SchemaValidation_Simple-4                      0.000 ± 0%
SchemaValidation_AllFields-4                   0.000 ± 0%
SchemaValidation_FormatValidation-4            0.000 ± 0%
SchemaValidation_ManySchemas-4                 0.000 ± 0%
geomean                                                   ¹
¹ summaries must be >0 to compute geomean

cpu: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
                                    │ baseline-bench.txt │
                                    │       sec/op       │
SchemaValidation_Simple-4                    1.009µ ± 5%
SchemaValidation_AllFields-4                 1.541µ ± 7%
SchemaValidation_FormatValidation-4          1.487µ ± 0%
SchemaValidation_ManySchemas-4               1.508µ ± 2%
geomean                                      1.366µ

                                    │ baseline-bench.txt │
                                    │        B/op        │
SchemaValidation_Simple-4                   0.000 ± 0%
SchemaValidation_AllFields-4                0.000 ± 0%
SchemaValidation_FormatValidation-4         0.000 ± 0%
SchemaValidation_ManySchemas-4              0.000 ± 0%
geomean                                                ¹
¹ summaries must be >0 to compute geomean

                                    │ baseline-bench.txt │
                                    │     allocs/op      │
SchemaValidation_Simple-4                   0.000 ± 0%
SchemaValidation_AllFields-4                0.000 ± 0%
SchemaValidation_FormatValidation-4         0.000 ± 0%
SchemaValidation_ManySchemas-4              0.000 ± 0%
geomean                                                ¹
¹ summaries must be >0 to compute geomean

pkg: github.com/GoCodeAlone/workflow/store
cpu: AMD EPYC 7763 64-Core Processor                
                                   │ benchmark-results.txt │
                                   │        sec/op         │
EventStoreAppend_InMemory-4                   1.301µ ± 14%
EventStoreAppend_SQLite-4                     1.382m ±  2%
GetTimeline_InMemory/events-10-4              14.19µ ±  2%
GetTimeline_InMemory/events-50-4              79.09µ ± 20%
GetTimeline_InMemory/events-100-4             127.2µ ±  1%
GetTimeline_InMemory/events-500-4             653.6µ ±  1%
GetTimeline_InMemory/events-1000-4            1.340m ±  2%
GetTimeline_SQLite/events-10-4                110.1µ ±  2%
GetTimeline_SQLite/events-50-4                260.5µ ±  2%
GetTimeline_SQLite/events-100-4               443.7µ ±  1%
GetTimeline_SQLite/events-500-4               1.842m ±  2%
GetTimeline_SQLite/events-1000-4              3.555m ±  3%
geomean                                       227.0µ

                                   │ benchmark-results.txt │
                                   │         B/op          │
EventStoreAppend_InMemory-4                     811.5 ± 8%
EventStoreAppend_SQLite-4                     1.986Ki ± 2%
GetTimeline_InMemory/events-10-4              7.953Ki ± 0%
GetTimeline_InMemory/events-50-4              46.62Ki ± 0%
GetTimeline_InMemory/events-100-4             94.48Ki ± 0%
GetTimeline_InMemory/events-500-4             472.8Ki ± 0%
GetTimeline_InMemory/events-1000-4            944.3Ki ± 0%
GetTimeline_SQLite/events-10-4                16.74Ki ± 0%
GetTimeline_SQLite/events-50-4                87.14Ki ± 0%
GetTimeline_SQLite/events-100-4               175.4Ki ± 0%
GetTimeline_SQLite/events-500-4               846.1Ki ± 0%
GetTimeline_SQLite/events-1000-4              1.639Mi ± 0%
geomean                                       67.50Ki

                                   │ benchmark-results.txt │
                                   │       allocs/op       │
EventStoreAppend_InMemory-4                     7.000 ± 0%
EventStoreAppend_SQLite-4                       53.00 ± 0%
GetTimeline_InMemory/events-10-4                125.0 ± 0%
GetTimeline_InMemory/events-50-4                653.0 ± 0%
GetTimeline_InMemory/events-100-4              1.306k ± 0%
GetTimeline_InMemory/events-500-4              6.514k ± 0%
GetTimeline_InMemory/events-1000-4             13.02k ± 0%
GetTimeline_SQLite/events-10-4                  382.0 ± 0%
GetTimeline_SQLite/events-50-4                 1.852k ± 0%
GetTimeline_SQLite/events-100-4                3.681k ± 0%
GetTimeline_SQLite/events-500-4                18.54k ± 0%
GetTimeline_SQLite/events-1000-4               37.29k ± 0%
geomean                                        1.162k

cpu: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
                                   │ baseline-bench.txt │
                                   │       sec/op       │
EventStoreAppend_InMemory-4                1.126µ ± 28%
EventStoreAppend_SQLite-4                  1.265m ±  7%
GetTimeline_InMemory/events-10-4           13.67µ ±  4%
GetTimeline_InMemory/events-50-4           77.66µ ±  4%
GetTimeline_InMemory/events-100-4          149.8µ ± 19%
GetTimeline_InMemory/events-500-4          622.1µ ±  1%
GetTimeline_InMemory/events-1000-4         1.259m ±  1%
GetTimeline_SQLite/events-10-4             83.67µ ±  2%
GetTimeline_SQLite/events-50-4             238.4µ ±  2%
GetTimeline_SQLite/events-100-4            423.1µ ±  1%
GetTimeline_SQLite/events-500-4            1.908m ±  1%
GetTimeline_SQLite/events-1000-4           3.763m ±  1%
geomean                                    216.7µ

                                   │ baseline-bench.txt │
                                   │        B/op        │
EventStoreAppend_InMemory-4                  826.0 ± 4%
EventStoreAppend_SQLite-4                  1.985Ki ± 2%
GetTimeline_InMemory/events-10-4           7.953Ki ± 0%
GetTimeline_InMemory/events-50-4           46.62Ki ± 0%
GetTimeline_InMemory/events-100-4          94.48Ki ± 0%
GetTimeline_InMemory/events-500-4          472.8Ki ± 0%
GetTimeline_InMemory/events-1000-4         944.3Ki ± 0%
GetTimeline_SQLite/events-10-4             16.74Ki ± 0%
GetTimeline_SQLite/events-50-4             87.14Ki ± 0%
GetTimeline_SQLite/events-100-4            175.4Ki ± 0%
GetTimeline_SQLite/events-500-4            846.1Ki ± 0%
GetTimeline_SQLite/events-1000-4           1.639Mi ± 0%
geomean                                    67.60Ki

                                   │ baseline-bench.txt │
                                   │     allocs/op      │
EventStoreAppend_InMemory-4                  7.000 ± 0%
EventStoreAppend_SQLite-4                    53.00 ± 0%
GetTimeline_InMemory/events-10-4             125.0 ± 0%
GetTimeline_InMemory/events-50-4             653.0 ± 0%
GetTimeline_InMemory/events-100-4           1.306k ± 0%
GetTimeline_InMemory/events-500-4           6.514k ± 0%
GetTimeline_InMemory/events-1000-4          13.02k ± 0%
GetTimeline_SQLite/events-10-4               382.0 ± 0%
GetTimeline_SQLite/events-50-4              1.852k ± 0%
GetTimeline_SQLite/events-100-4             3.681k ± 0%
GetTimeline_SQLite/events-500-4             18.54k ± 0%
GetTimeline_SQLite/events-1000-4            37.29k ± 0%
geomean                                     1.162k

Benchmarks run with go test -bench=. -benchmem -count=6.
Regressions ≥ 20% are flagged. Results compared via benchstat.

@intel352
Copy link
Contributor

@copilot apply changes based on the comments in this thread

And intelligently resolve the merge conflict, and verify the changes are accurate

Copy link
Contributor Author

Copilot AI commented Mar 12, 2026

@copilot apply changes based on the comments in this thread

And intelligently resolve the merge co...

The changes from the review thread were already applied in 4673afa. After verifying against the two subsequent merges from main (both clean — only added a new docs/plans/ file with no conflicts), all three review points remain accurate:

  1. plugins/openapi is in DefaultPlugins() — the "all are included when using plugins/all" statement holds.
  2. swagger_ui is documented as an object (swagger_ui.enabled/swagger_ui.path, default path /docs), matching OpenAPISwaggerUIConfig and the plugin factory.
  3. validation.response / validation.response_action are removed from the docs.

All three coverage tests pass: TestDocumentationCoverage, TestListStepTypes_AllBuiltinsPresent, and TestListModuleTypes_AllBuiltinsPresent.

@intel352
Copy link
Contributor

@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>
Copy link
Contributor Author

Copilot AI commented Mar 12, 2026

@copilot Address the incoming merge conflict, there's a whole section that needs updating with care.

Resolved in 8e0b40e. The merge brought in 7 commits from main; two conflicts in DOCUMENTATION.md were resolved with care:

Conflict 1 — Core Pipeline Steps table: Kept our enriched HEAD version (with Plugin column and 80+ step types). Added step.json_parse from main (merged in 006b368) after step.raw_response.

Conflict 2 — Integration section: Kept our HEAD version (Plugin column, gitlab/cloud/scanner/policy entries). Did not add openapi here — it's already in HTTP & Routing. Did not add openapi.consumer/openapi.generator here — they're already in the Observability section.

Additional content corrections triggered by the new commits:

  • validation.response / validation.response_action restored to the openapi detailed section — 858204f implemented this feature, so the docs now accurately reflect it ("warn" / "error" action).
  • trustedKeys array added to the auth.m2m config table — registered in 4fefd86.
  • autoSync bool added to the database.partitioned config table — registered in 00f9451.

All three coverage tests pass: TestDocumentationCoverage, TestListStepTypes_AllBuiltinsPresent, TestListModuleTypes_AllBuiltinsPresent.

@intel352 intel352 merged commit a3a80a1 into main Mar 12, 2026
11 checks passed
@intel352 intel352 deleted the copilot/fix-documentation-sync-issue branch March 12, 2026 10:32
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.

DOCUMENTATION.md is significantly out of sync with registered module and step types

3 participants