Skip to content

Conversation

cesara
Copy link
Collaborator

@cesara cesara commented Oct 8, 2025

No description provided.

Copy link

vercel bot commented Oct 8, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
replicache-docs Ready Ready Preview Comment Oct 8, 2025 5:50pm
zbugs Ready Ready Preview Comment Oct 8, 2025 5:50pm

Copy link

github-actions bot commented Oct 8, 2025

🐰 Bencher Report

Branchcesara/ci_fix_protocol_version
TestbedLinux
Click to view all benchmark results
BenchmarkFile SizeBenchmark Result
kilobytes (KB)
(Result Δ%)
Upper Boundary
kilobytes (KB)
(Limit %)
zero-package.tgz📈 view plot
🚷 view threshold
1,366.23 KB
(0.00%)Baseline: 1,366.23 KB
1,393.55 KB
(98.04%)
zero.js📈 view plot
🚷 view threshold
225.45 KB
(0.00%)Baseline: 225.45 KB
229.96 KB
(98.04%)
zero.js.br📈 view plot
🚷 view threshold
62.98 KB
(0.00%)Baseline: 62.98 KB
64.23 KB
(98.04%)
🐰 View full continuous benchmarking report in Bencher

Copy link

github-actions bot commented Oct 8, 2025

🐰 Bencher Report

Branchcesara/ci_fix_protocol_version
Testbedself-hosted

🚨 3 Alerts

BenchmarkMeasure
Units
ViewBenchmark Result
(Result Δ%)
Lower Boundary
(Limit %)
src/client/custom.bench.ts > big schemaThroughput
operations / second (ops/s) x 1e3
📈 plot
🚷 threshold
🚨 alert (🔔)
743.20 ops/s x 1e3
(-12.84%)Baseline: 852.71 ops/s x 1e3
769.35 ops/s x 1e3
(103.52%)

src/client/zero.bench.ts > basics > All 1000 rows x 10 columns (numbers)Throughput
operations / second (ops/s) x 1e3
📈 plot
🚷 threshold
🚨 alert (🔔)
2.61 ops/s x 1e3
(-7.56%)Baseline: 2.83 ops/s x 1e3
2.66 ops/s x 1e3
(101.80%)

src/client/zero.bench.ts > pk compare > pk = NThroughput
operations / second (ops/s) x 1e3
📈 plot
🚷 threshold
🚨 alert (🔔)
42.04 ops/s x 1e3
(-4.47%)Baseline: 44.01 ops/s x 1e3
42.09 ops/s x 1e3
(100.12%)

Click to view all benchmark results
BenchmarkThroughputBenchmark Result
operations / second (ops/s) x 1e3
(Result Δ%)
Lower Boundary
operations / second (ops/s) x 1e3
(Limit %)
src/client/custom.bench.ts > big schema📈 view plot
🚷 view threshold
🚨 view alert (🔔)
743.20 ops/s x 1e3
(-12.84%)Baseline: 852.71 ops/s x 1e3
769.35 ops/s x 1e3
(103.52%)

src/client/zero.bench.ts > basics > All 1000 rows x 10 columns (numbers)📈 view plot
🚷 view threshold
🚨 view alert (🔔)
2.61 ops/s x 1e3
(-7.56%)Baseline: 2.83 ops/s x 1e3
2.66 ops/s x 1e3
(101.80%)

src/client/zero.bench.ts > pk compare > pk = N📈 view plot
🚷 view threshold
🚨 view alert (🔔)
42.04 ops/s x 1e3
(-4.47%)Baseline: 44.01 ops/s x 1e3
42.09 ops/s x 1e3
(100.12%)

src/client/zero.bench.ts > with filter > Lower rows 500 x 10 columns (numbers)📈 view plot
🚷 view threshold
4.20 ops/s x 1e3
(-0.46%)Baseline: 4.22 ops/s x 1e3
4.07 ops/s x 1e3
(97.02%)
🐰 View full continuous benchmarking report in Bencher

Copy link

github-actions bot commented Oct 8, 2025

🐰 Bencher Report

Branchcesara/ci_fix_protocol_version
Testbedself-hosted

🚨 9 Alerts

BenchmarkMeasure
Units
ViewBenchmark Result
(Result Δ%)
Lower Boundary
(Limit %)
zpg: (secondary index lookup) select * from track where album_id = 248Throughput
operations / second (ops/s)
📈 plot
🚷 threshold
🚨 alert (🔔)
992.66 ops/s
(-7.55%)Baseline: 1,073.69 ops/s
999.47 ops/s
(100.69%)

zpg: all playlistsThroughput
operations / second (ops/s)
📈 plot
🚷 threshold
🚨 alert (🔔)
5.51 ops/s
(-2.56%)Baseline: 5.65 ops/s
5.53 ops/s
(100.37%)

zpg: scan with one depth relatedThroughput
operations / second (ops/s)
📈 plot
🚷 threshold
🚨 alert (🔔)
415.23 ops/s
(-5.19%)Baseline: 437.94 ops/s
420.56 ops/s
(101.28%)

zql: (table scan) select * from albumThroughput
operations / second (ops/s) x 1e3
📈 plot
🚷 threshold
🚨 alert (🔔)
6.43 ops/s x 1e3
(-6.09%)Baseline: 6.85 ops/s x 1e3
6.51 ops/s x 1e3
(101.29%)

zqlite: (pk lookup) select * from track where id = 3163Throughput
operations / second (ops/s) x 1e3
📈 plot
🚷 threshold
🚨 alert (🔔)
41.38 ops/s x 1e3
(-6.55%)Baseline: 44.28 ops/s x 1e3
42.21 ops/s x 1e3
(102.01%)

zqlite: (secondary index lookup) select * from track where album_id = 248Throughput
operations / second (ops/s) x 1e3
📈 plot
🚷 threshold
🚨 alert (🔔)
9.88 ops/s x 1e3
(-4.48%)Baseline: 10.34 ops/s x 1e3
9.89 ops/s x 1e3
(100.18%)

zqlite: (table scan) select * from albumThroughput
operations / second (ops/s) x 1e3
📈 plot
🚷 threshold
🚨 alert (🔔)
1.29 ops/s x 1e3
(-7.69%)Baseline: 1.39 ops/s x 1e3
1.31 ops/s x 1e3
(101.45%)

zqlite: all playlistsThroughput
operations / second (ops/s)
📈 plot
🚷 threshold
🚨 alert (🔔)
1.33 ops/s
(-8.23%)Baseline: 1.45 ops/s
1.36 ops/s
(102.36%)

zqlite: push into unlimited queryThroughput
operations / second (ops/s) x 1e3
📈 plot
🚷 threshold
🚨 alert (🔔)
120.46 ops/s x 1e3
(-6.53%)Baseline: 128.88 ops/s x 1e3
121.26 ops/s x 1e3
(100.66%)

Click to view all benchmark results
BenchmarkThroughputBenchmark Result
operations / second (ops/s)
(Result Δ%)
Lower Boundary
operations / second (ops/s)
(Limit %)
zpg: (pk lookup) select * from track where id = 3163📈 view plot
🚷 view threshold
874.54 ops/s
(-16.15%)Baseline: 1,043.00 ops/s
865.46 ops/s
(98.96%)
zpg: (secondary index lookup) select * from track where album_id = 248📈 view plot
🚷 view threshold
🚨 view alert (🔔)
992.66 ops/s
(-7.55%)Baseline: 1,073.69 ops/s
999.47 ops/s
(100.69%)

zpg: (table scan) select * from album📈 view plot
🚷 view threshold
671.51 ops/s
(-11.22%)Baseline: 756.37 ops/s
657.45 ops/s
(97.91%)
zpg: OR with empty branch and limit📈 view plot
🚷 view threshold
914.52 ops/s
(+0.06%)Baseline: 913.95 ops/s
833.60 ops/s
(91.15%)
zpg: OR with empty branch and limit with exists📈 view plot
🚷 view threshold
782.21 ops/s
(-0.95%)Baseline: 789.74 ops/s
750.57 ops/s
(95.96%)
zpg: all playlists📈 view plot
🚷 view threshold
🚨 view alert (🔔)
5.51 ops/s
(-2.56%)Baseline: 5.65 ops/s
5.53 ops/s
(100.37%)

zpg: scan with one depth related📈 view plot
🚷 view threshold
🚨 view alert (🔔)
415.23 ops/s
(-5.19%)Baseline: 437.94 ops/s
420.56 ops/s
(101.28%)

zql: (pk lookup) select * from track where id = 3163📈 view plot
🚷 view threshold
111,752.18 ops/s
(-7.50%)Baseline: 120,817.41 ops/s
102,944.59 ops/s
(92.12%)
zql: (secondary index lookup) select * from track where album_id = 248📈 view plot
🚷 view threshold
2,326.47 ops/s
(+3.94%)Baseline: 2,238.30 ops/s
2,069.93 ops/s
(88.97%)
zql: (table scan) select * from album📈 view plot
🚷 view threshold
🚨 view alert (🔔)
6,428.77 ops/s
(-6.09%)Baseline: 6,845.96 ops/s
6,511.91 ops/s
(101.29%)

zql: OR with empty branch and limit📈 view plot
🚷 view threshold
56,934.27 ops/s
(-3.95%)Baseline: 59,274.25 ops/s
53,251.57 ops/s
(93.53%)
zql: OR with empty branch and limit with exists📈 view plot
🚷 view threshold
11,950.41 ops/s
(-3.16%)Baseline: 12,339.91 ops/s
11,171.89 ops/s
(93.49%)
zql: all playlists📈 view plot
🚷 view threshold
4.22 ops/s
(-3.05%)Baseline: 4.35 ops/s
4.13 ops/s
(98.04%)
zql: edit for limited query, inside the bound📈 view plot
🚷 view threshold
219,488.44 ops/s
(-3.63%)Baseline: 227,745.81 ops/s
216,473.63 ops/s
(98.63%)
zql: edit for limited query, outside the bound📈 view plot
🚷 view threshold
225,686.80 ops/s
(-2.75%)Baseline: 232,069.55 ops/s
207,514.71 ops/s
(91.95%)
zql: push into limited query, inside the bound📈 view plot
🚷 view threshold
109,085.28 ops/s
(-3.62%)Baseline: 113,188.22 ops/s
108,725.68 ops/s
(99.67%)
zql: push into limited query, outside the bound📈 view plot
🚷 view threshold
425,767.09 ops/s
(-2.88%)Baseline: 438,403.06 ops/s
394,338.67 ops/s
(92.62%)
zql: push into unlimited query📈 view plot
🚷 view threshold
340,153.21 ops/s
(-2.21%)Baseline: 347,825.17 ops/s
328,214.90 ops/s
(96.49%)
zql: scan with one depth related📈 view plot
🚷 view threshold
482.47 ops/s
(-1.93%)Baseline: 491.97 ops/s
448.45 ops/s
(92.95%)
zqlite: (pk lookup) select * from track where id = 3163📈 view plot
🚷 view threshold
🚨 view alert (🔔)
41,379.27 ops/s
(-6.55%)Baseline: 44,280.36 ops/s
42,211.63 ops/s
(102.01%)

zqlite: (secondary index lookup) select * from track where album_id = 248📈 view plot
🚷 view threshold
🚨 view alert (🔔)
9,876.63 ops/s
(-4.48%)Baseline: 10,340.18 ops/s
9,894.64 ops/s
(100.18%)

zqlite: (table scan) select * from album📈 view plot
🚷 view threshold
🚨 view alert (🔔)
1,286.84 ops/s
(-7.69%)Baseline: 1,394.12 ops/s
1,305.52 ops/s
(101.45%)

zqlite: OR with empty branch and limit📈 view plot
🚷 view threshold
17,549.46 ops/s
(-2.51%)Baseline: 18,001.30 ops/s
17,225.59 ops/s
(98.15%)
zqlite: OR with empty branch and limit with exists📈 view plot
🚷 view threshold
5,603.97 ops/s
(+0.26%)Baseline: 5,589.52 ops/s
5,118.59 ops/s
(91.34%)
zqlite: all playlists📈 view plot
🚷 view threshold
🚨 view alert (🔔)
1.33 ops/s
(-8.23%)Baseline: 1.45 ops/s
1.36 ops/s
(102.36%)

zqlite: edit for limited query, inside the bound📈 view plot
🚷 view threshold
122,105.92 ops/s
(-0.09%)Baseline: 122,219.29 ops/s
115,756.27 ops/s
(94.80%)
zqlite: edit for limited query, outside the bound📈 view plot
🚷 view threshold
120,356.36 ops/s
(-3.54%)Baseline: 124,776.99 ops/s
118,547.50 ops/s
(98.50%)
zqlite: push into limited query, inside the bound📈 view plot
🚷 view threshold
3,825.56 ops/s
(-2.03%)Baseline: 3,904.99 ops/s
3,745.75 ops/s
(97.91%)
zqlite: push into limited query, outside the bound📈 view plot
🚷 view threshold
138,798.09 ops/s
(-5.54%)Baseline: 146,931.64 ops/s
137,664.08 ops/s
(99.18%)
zqlite: push into unlimited query📈 view plot
🚷 view threshold
🚨 view alert (🔔)
120,463.64 ops/s
(-6.53%)Baseline: 128,877.10 ops/s
121,256.88 ops/s
(100.66%)

zqlite: scan with one depth related📈 view plot
🚷 view threshold
160.65 ops/s
(-3.51%)Baseline: 166.49 ops/s
159.46 ops/s
(99.26%)
🐰 View full continuous benchmarking report in Bencher

Copy link

github-actions bot commented Oct 8, 2025

🐰 Bencher Report

Branchcesara/ci_fix_protocol_version
Testbedself-hosted

🚨 2 Alerts

BenchmarkMeasure
Units
ViewBenchmark Result
(Result Δ%)
Lower Boundary
(Limit %)
src/size-of-value.bench.ts > getSizeOfValue performance > arrays > large array (100 items)Throughput
operations / second (ops/s) x 1e6
📈 plot
🚷 threshold
🚨 alert (🔔)
1.67 ops/s x 1e6
(-2.67%)Baseline: 1.72 ops/s x 1e6
1.67 ops/s x 1e6
(100.01%)

src/size-of-value.bench.ts > getSizeOfValue performance > primitives > string (100 chars)Throughput
operations / second (ops/s) x 1e6
📈 plot
🚷 threshold
🚨 alert (🔔)
1.08 ops/s x 1e6
(-5.46%)Baseline: 1.14 ops/s x 1e6
1.09 ops/s x 1e6
(101.27%)

Click to view all benchmark results
BenchmarkThroughputBenchmark Result
operations / second (ops/s) x 1e3
(Result Δ%)
Lower Boundary
operations / second (ops/s) x 1e3
(Limit %)
src/size-of-value.bench.ts > getSizeOfValue performance > arrays > large array (100 items)📈 view plot
🚷 view threshold
🚨 view alert (🔔)
1,670.37 ops/s x 1e3
(-2.67%)Baseline: 1,716.15 ops/s x 1e3
1,670.49 ops/s x 1e3
(100.01%)

src/size-of-value.bench.ts > getSizeOfValue performance > arrays > small array (10 items)📈 view plot
🚷 view threshold
5,657.66 ops/s x 1e3
(+1.86%)Baseline: 5,554.47 ops/s x 1e3
5,420.39 ops/s x 1e3
(95.81%)
src/size-of-value.bench.ts > getSizeOfValue performance > datasets > large dataset (100x512B)📈 view plot
🚷 view threshold
85.13 ops/s x 1e3
(+7.07%)Baseline: 79.51 ops/s x 1e3
64.40 ops/s x 1e3
(75.65%)
src/size-of-value.bench.ts > getSizeOfValue performance > datasets > small dataset (10x256B)📈 view plot
🚷 view threshold
763.78 ops/s x 1e3
(+8.42%)Baseline: 704.49 ops/s x 1e3
580.81 ops/s x 1e3
(76.04%)
src/size-of-value.bench.ts > getSizeOfValue performance > objects > nested object📈 view plot
🚷 view threshold
3,412.95 ops/s x 1e3
(+4.29%)Baseline: 3,272.61 ops/s x 1e3
2,970.38 ops/s x 1e3
(87.03%)
src/size-of-value.bench.ts > getSizeOfValue performance > objects > structured object (1KB)📈 view plot
🚷 view threshold
4,140.99 ops/s x 1e3
(+6.07%)Baseline: 3,904.14 ops/s x 1e3
3,442.63 ops/s x 1e3
(83.14%)
src/size-of-value.bench.ts > getSizeOfValue performance > objects > structured object (256B)📈 view plot
🚷 view threshold
4,110.32 ops/s x 1e3
(+7.40%)Baseline: 3,826.93 ops/s x 1e3
3,266.96 ops/s x 1e3
(79.48%)
src/size-of-value.bench.ts > getSizeOfValue performance > primitives > boolean📈 view plot
🚷 view threshold
7,423.08 ops/s x 1e3
(-2.97%)Baseline: 7,650.55 ops/s x 1e3
7,351.90 ops/s x 1e3
(99.04%)
src/size-of-value.bench.ts > getSizeOfValue performance > primitives > integer📈 view plot
🚷 view threshold
7,266.66 ops/s x 1e3
(-5.20%)Baseline: 7,664.94 ops/s x 1e3
7,264.32 ops/s x 1e3
(99.97%)
src/size-of-value.bench.ts > getSizeOfValue performance > primitives > null📈 view plot
🚷 view threshold
7,790.15 ops/s x 1e3
(+0.20%)Baseline: 7,774.52 ops/s x 1e3
7,602.50 ops/s x 1e3
(97.59%)
src/size-of-value.bench.ts > getSizeOfValue performance > primitives > string (100 chars)📈 view plot
🚷 view threshold
🚨 view alert (🔔)
1,076.84 ops/s x 1e3
(-5.46%)Baseline: 1,139.01 ops/s x 1e3
1,090.55 ops/s x 1e3
(101.27%)

🐰 View full continuous benchmarking report in Bencher

@cesara cesara changed the title fix(ci): set protocol version env in docker build step (sandbox / gigabugs) fix(ci): set protocol version env in docker build step Oct 8, 2025
@cesara cesara merged commit f423443 into main Oct 8, 2025
12 of 18 checks passed
@cesara cesara deleted the cesara/ci_fix_protocol_version branch October 8, 2025 17:58
Copy link
Contributor

@darkgnotic darkgnotic left a comment

Choose a reason for hiding this comment

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

Thank you for the quick fix, @cesara.

I think the best long-term solution would be to encapsulate this logic (and the docker build calls) in a script that both create-canary.js and these GitHub actions use. Is that doable?

@arv
Copy link
Contributor

arv commented Oct 8, 2025

Thanks.

What is this magic. sed to extract js in a yaml file!

@darkgnotic
Copy link
Contributor

Thanks.

What is this magic. sed to extract js in a yaml file!

Haha ... I've suggested using the protocol version logic in create-canary.js and calling that in a new build script for this GitHub Action.

But thank you for the quick action @cesara !

@arv
Copy link
Contributor

arv commented Oct 9, 2025

You an also run js in github actions.

And then package it as a composite action for reuse:

name: Zero Protocol Versions
description: Export protocol versions from TS source
outputs:
  sync_version:
    description: MIN_SERVER_SUPPORTED_SYNC_PROTOCOL
    value: ${{ steps.proto.outputs.sync_version }}
  protocol_version:
    description: PROTOCOL_VERSION
    value: ${{ steps.proto.outputs.protocol_version }}
runs:
  using: "composite"
  steps:
    - uses: actions/setup-node@v4
      with:
        node-version: '24.x' # ensure TS support without warnings

    - id: proto
      shell: bash
      run: |
        node --input-type=module <<'JS'
        import {appendFileSync} from 'node:fs';
        import {
          MIN_SERVER_SUPPORTED_SYNC_PROTOCOL,
          PROTOCOL_VERSION
        } from './packages/zero-protocol/src/protocol-version.ts';

        const out = process.env.GITHUB_OUTPUT;
        appendFileSync(out, `sync_version=${MIN_SERVER_SUPPORTED_SYNC_PROTOCOL}\n`);
        appendFileSync(out, `protocol_version=${PROTOCOL_VERSION}\n`);
        JS

Example usage:

- id: demo
  uses: ./.github/actions/zero-protocol-versions

- run: |
    echo "SYNC=${{ steps.demo.outputs.sync_version }}"
    echo "PROTO=${{ steps.demo.outputs.protocol_version }}"

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.

3 participants