Skip to content

docs(retro): multi-repo OSS-readiness QoL sweep (2026-05-19)#719

Merged
intel352 merged 2 commits into
mainfrom
docs/qol-sweep-retro
May 19, 2026
Merged

docs(retro): multi-repo OSS-readiness QoL sweep (2026-05-19)#719
intel352 merged 2 commits into
mainfrom
docs/qol-sweep-retro

Conversation

@intel352
Copy link
Copy Markdown
Contributor

Post-sweep retrospective covering what went well, what didn't, lessons learned, and follow-up tracking issues.

See: workflow-registry#717 for registry-manifest creation deferrals across 11 P2 plugins.

Final tally:

  • Phase 1: 15 PRs merged (workflow + workflow-registry core + P0 plugins + P3 license sweep)
  • Phase 2: 37 PRs created (18 A-M + 19 M-Z batch P2 plugins); pending review/merge
  • Deferred: 2 archived repos (actors, deployment); 11 plugins lacking registry manifests

Retrospective sections:

  • Pipeline discipline + scope lock prevented rework
  • 2-implementer split + priority-tiered review kept timeline reasonable
  • False-positives on CHANGELOG.md (pre-existing files) and branch collision (solved by renaming)
  • Action items: pre-flight repo audit, session-timestamped branch names, codecov print-branch coverage

Closes the loop on the cross-repo doc + license + experimental-marker
sweep authored at workflow#714. Records what went well, what didn't, and
follow-up tracking issues (workflow-registry#717) for registry-manifest
creation for 11 P2 plugins and archived-repo notation.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 19, 2026 16:50
Copy link
Copy Markdown
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

This PR adds a retrospective document for the May 19, 2026 multi-repo OSS-readiness QoL sweep, capturing outcomes, lessons learned, and follow-up tracking for deferred registry manifest work.

Changes:

  • Adds final tally for merged, in-flight, deferred, and out-of-scope work.
  • Documents what went well, what did not, and process improvements for future sweeps.
  • Links related planning docs, ADR, and registry follow-up issue.

- workflow#715: RegistryManifest status field + PluginSummary propagation
- workflow-registry#53: JSON schema extension for status enum
- workflow-registry#54: manifest population (35 external plugins marked verified/experimental)
- Plugin P0 deep-treats (6 repos): digitalocean, payments, agent, audit-chain, auth, eventbus, twilio + individual verified banners

4. **codecov patch-coverage gate required admin override.** workflow#715 (RegistryManifest struct) needed `TestPluginSummary_StatusPropagation` test to cover the real `StaticRegistrySource` implementation. The test was added, but codecov initially flagged the output-formatter print branch as uncovered, requiring temporary override. Fix: add a test case that exercises the print path.

5. **13 P2 plugins lack workflow-registry manifests.** These are banner-only PRs without registry entries to mark as verified/experimental. This was pre-identified as acceptable (workflow-registry#717 tracks the creation), but leaves inconsistent UX: `wfctl plugin list` won't surface these plugins' status field because they have no manifest. Future: pre-populate manifests in initial registry PR, or batch them with the banner PRs.
@codecov
Copy link
Copy Markdown

codecov Bot commented May 19, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 19, 2026

⏱ Benchmark Results

No significant performance regressions detected.

benchstat comparison (baseline → PR)
## benchstat: baseline → PR
baseline-bench.txt:274: parsing iteration count: invalid syntax
baseline-bench.txt:338132: parsing iteration count: invalid syntax
baseline-bench.txt:610041: parsing iteration count: invalid syntax
baseline-bench.txt:901888: parsing iteration count: invalid syntax
baseline-bench.txt:1227908: parsing iteration count: invalid syntax
baseline-bench.txt:1533456: parsing iteration count: invalid syntax
benchmark-results.txt:274: parsing iteration count: invalid syntax
benchmark-results.txt:305840: parsing iteration count: invalid syntax
benchmark-results.txt:614415: parsing iteration count: invalid syntax
benchmark-results.txt:869377: parsing iteration count: invalid syntax
benchmark-results.txt:1208177: parsing iteration count: invalid syntax
benchmark-results.txt:1448469: parsing iteration count: invalid syntax
goos: linux
goarch: amd64
pkg: github.com/GoCodeAlone/workflow/dynamic
cpu: AMD EPYC 7763 64-Core Processor                
                            │ baseline-bench.txt │       benchmark-results.txt        │
                            │       sec/op       │    sec/op     vs base              │
InterpreterCreation-4               6.788m ± 56%   6.782m ± 60%       ~ (p=0.589 n=6)
ComponentLoad-4                     3.519m ± 12%   3.619m ±  5%       ~ (p=0.065 n=6)
ComponentExecute-4                  1.906µ ±  0%   1.959µ ±  2%  +2.81% (p=0.002 n=6)
PoolContention/workers-1-4          1.088µ ±  2%   1.088µ ±  1%       ~ (p=0.937 n=6)
PoolContention/workers-2-4          1.083µ ±  3%   1.093µ ±  1%       ~ (p=0.145 n=6)
PoolContention/workers-4-4          1.067µ ±  2%   1.088µ ±  3%  +2.02% (p=0.002 n=6)
PoolContention/workers-8-4          1.074µ ±  1%   1.091µ ±  0%  +1.54% (p=0.002 n=6)
PoolContention/workers-16-4         1.073µ ±  2%   1.094µ ±  1%  +2.00% (p=0.022 n=6)
ComponentLifecycle-4                3.522m ±  1%   3.620m ±  1%  +2.78% (p=0.002 n=6)
SourceValidation-4                  2.267µ ±  1%   2.334µ ±  0%  +2.96% (p=0.002 n=6)
RegistryConcurrent-4                754.4n ±  1%   796.8n ±  4%  +5.62% (p=0.002 n=6)
LoaderLoadFromString-4              3.551m ±  1%   3.656m ±  0%  +2.94% (p=0.002 n=6)
geomean                             18.30µ         18.70µ        +2.18%

                            │ baseline-bench.txt │        benchmark-results.txt         │
                            │        B/op        │     B/op      vs base                │
InterpreterCreation-4               2.027Mi ± 0%   2.027Mi ± 0%       ~ (p=0.699 n=6)
ComponentLoad-4                     2.180Mi ± 0%   2.180Mi ± 0%       ~ (p=0.561 n=6)
ComponentExecute-4                  1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-1-4          1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-2-4          1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-4-4          1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-8-4          1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-16-4         1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
ComponentLifecycle-4                2.183Mi ± 0%   2.183Mi ± 0%       ~ (p=0.223 n=6)
SourceValidation-4                  1.984Ki ± 0%   1.984Ki ± 0%       ~ (p=1.000 n=6) ¹
RegistryConcurrent-4                1.133Ki ± 0%   1.133Ki ± 0%       ~ (p=1.000 n=6) ¹
LoaderLoadFromString-4              2.182Mi ± 0%   2.182Mi ± 0%       ~ (p=0.061 n=6)
geomean                             15.25Ki        15.25Ki       +0.00%
¹ all samples are equal

                            │ baseline-bench.txt │        benchmark-results.txt        │
                            │     allocs/op      │  allocs/op   vs base                │
InterpreterCreation-4                15.68k ± 0%   15.68k ± 0%       ~ (p=1.000 n=6)
ComponentLoad-4                      18.02k ± 0%   18.02k ± 0%       ~ (p=1.000 n=6)
ComponentExecute-4                    25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-1-4            25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-2-4            25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-4-4            25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-8-4            25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-16-4           25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
ComponentLifecycle-4                 18.07k ± 0%   18.07k ± 0%       ~ (p=1.000 n=6) ¹
SourceValidation-4                    32.00 ± 0%    32.00 ± 0%       ~ (p=1.000 n=6) ¹
RegistryConcurrent-4                  2.000 ± 0%    2.000 ± 0%       ~ (p=1.000 n=6) ¹
LoaderLoadFromString-4               18.06k ± 0%   18.06k ± 0%       ~ (p=1.000 n=6) ¹
geomean                               183.3         183.3       +0.00%
¹ all samples are equal

pkg: github.com/GoCodeAlone/workflow/middleware
                                  │ baseline-bench.txt │       benchmark-results.txt       │
                                  │       sec/op       │   sec/op     vs base              │
CircuitBreakerDetection-4                 285.7n ± 15%   300.1n ± 8%       ~ (p=0.240 n=6)
CircuitBreakerExecution_Success-4         21.48n ±  0%   21.53n ± 0%  +0.21% (p=0.050 n=6)
CircuitBreakerExecution_Failure-4         66.41n ±  0%   66.28n ± 1%       ~ (p=0.331 n=6)
geomean                                   74.15n         75.38n       +1.65%

                                  │ baseline-bench.txt │       benchmark-results.txt        │
                                  │        B/op        │    B/op     vs base                │
CircuitBreakerDetection-4                 144.0 ± 0%     144.0 ± 0%       ~ (p=1.000 n=6) ¹
CircuitBreakerExecution_Success-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
CircuitBreakerExecution_Failure-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                              ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                  │ baseline-bench.txt │       benchmark-results.txt        │
                                  │     allocs/op      │ allocs/op   vs base                │
CircuitBreakerDetection-4                 1.000 ± 0%     1.000 ± 0%       ~ (p=1.000 n=6) ¹
CircuitBreakerExecution_Success-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
CircuitBreakerExecution_Failure-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                              ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

pkg: github.com/GoCodeAlone/workflow/module
                                 │ baseline-bench.txt │       benchmark-results.txt        │
                                 │       sec/op       │    sec/op     vs base              │
IaCStateBackend_InProcess-4              311.8n ± 20%   312.2n ±  1%       ~ (p=0.818 n=6)
IaCStateBackend_GRPC-4                   9.527m ±  4%   9.540m ± 19%       ~ (p=0.818 n=6)
JQTransform_Simple-4                     642.0n ± 37%   653.3n ± 37%       ~ (p=0.589 n=6)
JQTransform_ObjectConstruction-4         1.473µ ±  1%   1.502µ ±  1%  +1.93% (p=0.002 n=6)
JQTransform_ArraySelect-4                3.376µ ±  3%   3.481µ ±  1%  +3.11% (p=0.004 n=6)
JQTransform_Complex-4                    38.60µ ±  0%   38.78µ ±  1%  +0.46% (p=0.002 n=6)
JQTransform_Throughput-4                 1.801µ ±  0%   1.844µ ±  1%  +2.39% (p=0.002 n=6)
SSEPublishDelivery-4                     70.25n ±  0%   70.31n ±  2%       ~ (p=0.937 n=6)
geomean                                  3.830µ         3.878µ        +1.25%

                                 │ baseline-bench.txt │        benchmark-results.txt         │
                                 │        B/op        │     B/op      vs base                │
IaCStateBackend_InProcess-4             416.0 ±  0%       416.0 ± 0%       ~ (p=1.000 n=6) ¹
IaCStateBackend_GRPC-4                5.838Mi ± 13%     5.847Mi ± 4%       ~ (p=0.937 n=6)
JQTransform_Simple-4                  1.273Ki ±  0%     1.273Ki ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_ObjectConstruction-4      1.773Ki ±  0%     1.773Ki ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_ArraySelect-4             2.625Ki ±  0%     2.625Ki ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_Complex-4                 16.22Ki ±  0%     16.22Ki ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_Throughput-4              1.984Ki ±  0%     1.984Ki ± 0%       ~ (p=1.000 n=6) ¹
SSEPublishDelivery-4                    0.000 ±  0%       0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                             ²                 +0.02%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                 │ baseline-bench.txt │        benchmark-results.txt        │
                                 │     allocs/op      │  allocs/op   vs base                │
IaCStateBackend_InProcess-4              2.000 ± 0%      2.000 ± 0%       ~ (p=1.000 n=6) ¹
IaCStateBackend_GRPC-4                  6.833k ± 0%     6.837k ± 0%       ~ (p=0.853 n=6)
JQTransform_Simple-4                     10.00 ± 0%      10.00 ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_ObjectConstruction-4         15.00 ± 0%      15.00 ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_ArraySelect-4                30.00 ± 0%      30.00 ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_Complex-4                    324.0 ± 0%      324.0 ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_Throughput-4                 17.00 ± 0%      17.00 ± 0%       ~ (p=1.000 n=6) ¹
SSEPublishDelivery-4                     0.000 ± 0%      0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                             ²                +0.01%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

pkg: github.com/GoCodeAlone/workflow/schema
                                    │ baseline-bench.txt │       benchmark-results.txt        │
                                    │       sec/op       │    sec/op     vs base              │
SchemaValidation_Simple-4                    1.103µ ± 9%   1.109µ ±  3%       ~ (p=0.786 n=6)
SchemaValidation_AllFields-4                 1.665µ ± 2%   1.683µ ± 13%       ~ (p=0.485 n=6)
SchemaValidation_FormatValidation-4          1.582µ ± 4%   1.585µ ±  2%       ~ (p=0.907 n=6)
SchemaValidation_ManySchemas-4               1.841µ ± 2%   1.822µ ±  4%       ~ (p=0.418 n=6)
geomean                                      1.521µ        1.523µ        +0.19%

                                    │ baseline-bench.txt │       benchmark-results.txt        │
                                    │        B/op        │    B/op     vs base                │
SchemaValidation_Simple-4                   0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_AllFields-4                0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_FormatValidation-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_ManySchemas-4              0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                                ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                    │ baseline-bench.txt │       benchmark-results.txt        │
                                    │     allocs/op      │ allocs/op   vs base                │
SchemaValidation_Simple-4                   0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_AllFields-4                0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_FormatValidation-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_ManySchemas-4              0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                                ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

pkg: github.com/GoCodeAlone/workflow/store
                                   │ baseline-bench.txt │        benchmark-results.txt        │
                                   │       sec/op       │    sec/op     vs base               │
EventStoreAppend_InMemory-4                1.201µ ± 12%   1.273µ ± 23%        ~ (p=0.180 n=6)
EventStoreAppend_SQLite-4                  1.253m ±  7%   1.409m ±  6%  +12.46% (p=0.004 n=6)
GetTimeline_InMemory/events-10-4           13.68µ ±  4%   13.84µ ±  4%        ~ (p=1.000 n=6)
GetTimeline_InMemory/events-50-4           77.46µ ±  3%   75.12µ ± 18%        ~ (p=0.310 n=6)
GetTimeline_InMemory/events-100-4          125.8µ ± 24%   123.8µ ±  3%   -1.59% (p=0.026 n=6)
GetTimeline_InMemory/events-500-4          644.3µ ±  1%   638.0µ ±  1%        ~ (p=0.065 n=6)
GetTimeline_InMemory/events-1000-4         1.317m ±  1%   1.300m ±  1%   -1.30% (p=0.004 n=6)
GetTimeline_SQLite/events-10-4             105.1µ ±  2%   107.1µ ±  1%   +1.91% (p=0.041 n=6)
GetTimeline_SQLite/events-50-4             247.8µ ±  0%   249.1µ ±  1%   +0.51% (p=0.041 n=6)
GetTimeline_SQLite/events-100-4            422.8µ ±  0%   423.8µ ±  1%        ~ (p=0.394 n=6)
GetTimeline_SQLite/events-500-4            1.817m ±  1%   1.801m ±  1%        ~ (p=0.132 n=6)
GetTimeline_SQLite/events-1000-4           3.550m ±  0%   3.516m ±  1%        ~ (p=0.065 n=6)
geomean                                    218.9µ         221.2µ         +1.05%

                                   │ baseline-bench.txt │         benchmark-results.txt         │
                                   │        B/op        │     B/op       vs base                │
EventStoreAppend_InMemory-4                  777.0 ± 9%     755.5 ± 14%       ~ (p=0.859 n=6)
EventStoreAppend_SQLite-4                  1.985Ki ± 1%   1.984Ki ±  2%       ~ (p=1.000 n=6)
GetTimeline_InMemory/events-10-4           7.953Ki ± 0%   7.953Ki ±  0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-50-4           46.62Ki ± 0%   46.62Ki ±  0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-100-4          94.48Ki ± 0%   94.48Ki ±  0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-500-4          472.8Ki ± 0%   472.8Ki ±  0%       ~ (p=0.545 n=6)
GetTimeline_InMemory/events-1000-4         944.3Ki ± 0%   944.3Ki ±  0%  +0.00% (p=0.035 n=6)
GetTimeline_SQLite/events-10-4             16.74Ki ± 0%   16.74Ki ±  0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-50-4             87.14Ki ± 0%   87.14Ki ±  0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-100-4            175.4Ki ± 0%   175.4Ki ±  0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-500-4            846.1Ki ± 0%   846.1Ki ±  0%       ~ (p=0.567 n=6)
GetTimeline_SQLite/events-1000-4           1.639Mi ± 0%   1.639Mi ±  0%       ~ (p=0.989 n=6)
geomean                                    67.25Ki        67.09Ki        -0.24%
¹ all samples are equal

                                   │ baseline-bench.txt │        benchmark-results.txt        │
                                   │     allocs/op      │  allocs/op   vs base                │
EventStoreAppend_InMemory-4                  7.000 ± 0%    7.000 ± 0%       ~ (p=1.000 n=6) ¹
EventStoreAppend_SQLite-4                    53.00 ± 0%    53.00 ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-10-4             125.0 ± 0%    125.0 ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-50-4             653.0 ± 0%    653.0 ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-100-4           1.306k ± 0%   1.306k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-500-4           6.514k ± 0%   6.514k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-1000-4          13.02k ± 0%   13.02k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-10-4               382.0 ± 0%    382.0 ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-50-4              1.852k ± 0%   1.852k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-100-4             3.681k ± 0%   3.681k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-500-4             18.54k ± 0%   18.54k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-1000-4            37.29k ± 0%   37.29k ± 0%       ~ (p=1.000 n=6) ¹
geomean                                     1.162k        1.162k       +0.00%
¹ all samples are equal

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

- Replace false CHANGELOG false-positive narrative in 'What Went Well #4' with accurate description of actual spec gaps: banner hyperlink format, missing .github/ templates, outdated engine version pins, example module mismatches, undocumented GH_TOKEN requirement
- Replace false CHANGELOG narrative in 'What Didn't #2' with accurate list of surface-area issues found in Tasks 11-13 and how rework was prospectively applied

Fixes spec-reviewer feedback issues 5-6 on PR #719.
@intel352 intel352 merged commit d6d954b into main May 19, 2026
21 checks passed
@intel352 intel352 deleted the docs/qol-sweep-retro branch May 19, 2026 17:05
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.

2 participants