Skip to content

perf: publish controlled release benchmark evidence - #94

Merged
cardmagic merged 17 commits into
mainfrom
perf/controlled-release-comparison
Nov 9, 2026
Merged

cardmagic merged 17 commits into
mainfrom
perf/controlled-release-comparison

Conversation

@cardmagic

@cardmagic cardmagic commented Nov 9, 2026 •

Copy link
Copy Markdown
Owner

The benchmark guide mixed release questions with results from different machines and left a completed isolated baseline unpublished. Replace that ambiguity with versioned datasets, controlled release comparisons and CI-checked tables, while preserving every historical measurement and failed attempt.

Publish the retained isolated 1.0.5 baseline plus two new comparisons:

  • SQLite/PostgreSQL: all predeclared conditions completed on one VM for 0.14.0, 1.0.5 and 1.0.6, including separate SQLite WAL/NORMAL and WAL/FULL treatments. Seventy reports retain 105,000 measured latencies. The parent matrix remains explicitly failed because 0.14.0's later MySQL state check returned count 8, expected 7; its cause is unconfirmed. Retain all 83 emitted reports and diagnostics. Publish every fully completed backend automatically, with the unchanged original plan and no selection of individual versions or rounds. All published SQLite/PostgreSQL measurements preceded the recorded supervision handoff.
  • Modern MySQL: a separate fresh VM completed every planned 1.0.5/1.0.6 condition: 20 reports and 30,000 latencies. No incomplete prefix or other host's samples are pooled into it. The failed 0.14.0 condition receives no performance ranking.

Both comparisons use five fresh-process report rounds, 500 operations after 100 warmups, four workers, synchronous counters, three identity shapes and concurrency 1/16. Node, compiler, dependencies, harness and SQL durability are held fixed within each comparison. Release wake-up defaults and the NORMAL durability tradeoff are documented.

The SQLite data does not reproduce the apparent 25-fold regression: concurrency-16 hot-actor medians are 168.43 ops/s for 0.14.0 and 166.35 for 1.0.5. Version 1.0.6 reaches 343.35 with WAL/FULL and 549.58 with WAL/NORMAL. PostgreSQL has workload-specific gains and declines, including a roughly 20% hot-actor decline and 33% warm-many median gain from 0.14.0 to 1.0.5. Modern MySQL concurrency-16 throughput medians are within 1.3%; its warm-many p99 medians remain high and variable (1.90 versus 2.95 seconds). The guide reports these limitations explicitly.

Move the busy-Mac/August tables to a historical appendix without changing their values. Add a catalog, generated headline checks, maximal complete-backend derivation, provenance/workload/percentile/durability/readiness/lifecycle validation, and future release evidence rules. Future droplets rerun previous and candidate releases together; a machine size alone is not a comparison baseline.

Validation: full checks and formatting pass; 855 tests pass with 32 skipped. Source/harness hashes and compiled artifacts were independently reproduced for all 103 emitted reports across the two new attempts. Exported files match their public copies. Both archives were checksum-verified and all three benchmark droplets, including the feasibility pilot, are confirmed deleted.

The companion private runner PR retains the reproducible provisioning, readiness, collection, recovery and teardown process. This PR changes benchmark tooling and documentation; runtime behavior and package versions are unchanged.

Select common counter scenarios and explicitly configure the SQLite
synchronization setting without patching the measured runtime source.
Keep the full benchmark matrix as the default.
Publish the isolated 1.0.5 baseline instead of leaving readers with only
busy-workstation numbers. Keep historical measurements labeled and add
CI checks against misreported versions and incomplete cloud evidence.
@greptile-apps

greptile-apps Bot commented Nov 9, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[Low impact] The PR appears safe to merge; the requested guard-clause fix is complete.

Summary

Publishes controlled release comparisons and the retained isolated baseline, while keeping historical measurements and failed attempts separate.

  • The benchmark guide compares SQLite and PostgreSQL releases using complete backend plans.
  • The benchmark guide compares MySQL results for releases 1.0.5 and 1.0.6.
  • Benchmark checks rebuild published tables from archived reports.
  • The benchmark guide separates current comparisons from historical measurements.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  A[Archived plan and raw reports] --> B[Check reports]
  B --> C[Find fully completed backends]
  C --> D[Calculate summary tables]
  D --> E[Check published tables]
  F[Readiness and teardown records] --> E
Loading

Reviews (3) · Last reviewed commit: "refactor: use guard clauses in validateC..." · Reviewed by Greptile

Comment thread benchmarks/check-results.mjs Resolved
Comment thread test/benchmark-publication.test.ts Resolved
Comment thread benchmarks/shared.ts Resolved
@context7

context7 Bot commented Nov 9, 2026 •

Copy link
Copy Markdown

Docs7 for cardmagic/solid-objects-js

Result Status Action
Deployment ➖ Not used —
Content review ➖ Did not run. This site has no agent runs available this month. Wait for the monthly reset or check your Docs7 plan. —

Commit a254462

Compare README tables with regenerated data, verify sustained quiet
periods and downloaded archive evidence, and exercise the controlled
publication branch against missing samples and mixed provenance.
Derive guide headlines from the same raw datasets as the full result
tables. Check both in CI so hand edits cannot introduce stale numbers
or confuse measurements from different releases and environments.
Publish all pilot diagnostics separately from completed datasets. Keep
its original operation count and stop reason visible, and prevent an
incomplete attempt from also being registered as a completed comparison.
@cardmagic
cardmagic marked this pull request as ready for review November 9, 2026 14:14
@cardmagic

Copy link
Copy Markdown
Owner Author

@greptileai

Comment thread benchmarks/comparison.mjs Resolved
validateComparison refuses a SQLite variant without durability, an unknown synchronous option and durability that differs from that option, and it skips variants that do not use SQLite. No test reached these rules directly, so a refactor of the checks could change them without a failure.
The SQLite durability checks nested the synchronous check inside the SQLite branch, against the repository rule for guard clauses. The loop now skips variants that do not use SQLite and variants without a synchronous option with continue. The rules stay the same, and the new durability tests pass before and after.
@cardmagic

Copy link
Copy Markdown
Owner Author

@greptileai

Merge main's 1.0.7 release updates while keeping the benchmark notes
under Unreleased. Retain the measured versions in every archived report.

See #94
@cardmagic
cardmagic merged commit 61b306d into main Nov 9, 2026
16 checks passed
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.

1 participant