Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
7aa75c3
ci: publish prebuilt CLI binaries
dvasdekis Aug 26, 2026
6689f4f
ci: prevent fork package publishing
dvasdekis Aug 26, 2026
a15c5ac
ci: build Linux arm64 CLI natively
dvasdekis Aug 26, 2026
f4200df
fix(ci): make CLI releases portable and ordered
melonamin Aug 26, 2026
357ea2b
fix(core): handle trailing MSSQL GO batches
dvasdekis Sep 1, 2026
1ebc317
fix(wasm): preserve export metadata casing
dvasdekis Sep 15, 2026
f93b136
fix(core): preserve multi-file issue attribution
dvasdekis Sep 15, 2026
b7fa367
fix(cli): preserve rich lint issue metadata
dvasdekis Sep 16, 2026
b0d1f41
feat(export): preserve rich issue metadata
dvasdekis Sep 16, 2026
17fc486
feat(core): track qualify filters and rowset sources
dvasdekis Sep 16, 2026
636c1ed
Merge pull request #6 from dvasdekis/stack/06-sql-analysis
dvasdekis Sep 16, 2026
f49fd10
Merge pull request #8 from dvasdekis/pre_66
dvasdekis Sep 16, 2026
575d4c0
chore(release): prepare fork synapse release
dvasdekis Sep 16, 2026
d5e1f05
fix(release): sync workspace lock versions
dvasdekis Sep 16, 2026
e05ae3b
fix(release): use stable fork version
dvasdekis Sep 16, 2026
bade0a7
test(core): update multi-file source snapshot
dvasdekis Sep 16, 2026
e4baa5e
style(schema): format API schema
dvasdekis Sep 16, 2026
f46b770
ci: tolerate Codecov on fork
dvasdekis Sep 16, 2026
8226e2a
Merge release preparation v0.9.1
dvasdekis Sep 16, 2026
430c8fe
fix(release): run fork package asset upload
dvasdekis Sep 23, 2026
9f9ffe5
ci: reuse cargo builds across workflows
dvasdekis Sep 23, 2026
a898b97
Fix fork core package release asset upload
dvasdekis Sep 23, 2026
85fb5c0
Reuse Cargo builds across CI and release workflows
dvasdekis Sep 23, 2026
3903d87
chore(release): prepare v0.9.2
dvasdekis Sep 23, 2026
f56040a
style(release): format wasm package manifest
dvasdekis Sep 23, 2026
2b94e2f
Prepare fork release v0.9.2
dvasdekis Sep 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
141 changes: 67 additions & 74 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ jobs:
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-

- name: Run Rust tests
run: cargo test --workspace --locked
Expand All @@ -44,72 +46,6 @@ jobs:
- name: Verify API schema snapshot
run: cargo test -p flowscope-core --test schema_guard --locked

cli-fix-perf:
name: CLI Fix Perf Gate
runs-on: ubuntu-latest
env:
CLI_FIX_PERF_BUDGET_MS: 5000
steps:
- uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@1.95.0

- name: Cache Cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-cli-fix-perf-${{ hashFiles('**/Cargo.lock') }}

- name: Build CLI release binary
run: cargo build -p flowscope-cli --release --locked

- name: Benchmark CLI fix batch performance
run: |
python3 scripts/sql-corpus-fix-benchmark.py \
--sql-dir crates/flowscope-core/tests/fixtures/postgres \
--dialect postgres \
--mode batch \
--json-output /tmp/fs_cli_fix_perf.json

- name: Enforce perf budget
run: |
python3 - <<'PY'
import json
import pathlib
import os

report = pathlib.Path('/tmp/fs_cli_fix_perf.json')
payload = json.loads(report.read_text())
elapsed_ms = float(payload['result']['elapsed_ms'])
budget_ms = float(os.environ['CLI_FIX_PERF_BUDGET_MS'])
print(f'CLI fix batch elapsed={elapsed_ms:.3f}ms (budget={budget_ms:.1f}ms)')
summary = pathlib.Path('/tmp/fs_cli_fix_perf_summary.txt')
summary.write_text(
f'elapsed_ms={elapsed_ms:.3f}\n'
f'budget_ms={budget_ms:.1f}\n'
f'sql_dir={payload["sql_dir"]}\n'
)
if elapsed_ms > budget_ms:
raise SystemExit(
f'CLI fix performance regression: elapsed {elapsed_ms:.3f}ms exceeds budget {budget_ms:.1f}ms'
)
PY

- name: Upload perf telemetry
if: always()
uses: actions/upload-artifact@v4
with:
name: cli-fix-perf
path: |
/tmp/fs_cli_fix_perf.json
/tmp/fs_cli_fix_perf_summary.txt

wasm-build:
name: WASM Build
runs-on: ubuntu-latest
Expand All @@ -134,6 +70,9 @@ jobs:
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-wasm-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-wasm-
${{ runner.os }}-cargo-

- name: Build browser WASM
run: wasm-pack build crates/flowscope-wasm --target web --out-dir ../../packages/core/wasm
Expand Down Expand Up @@ -211,13 +150,13 @@ jobs:

schema-compat:
name: Schema Compatibility (Rust ↔ TS)
needs:
- rust-test
- typescript
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@1.95.0

- name: Setup Node.js
uses: actions/setup-node@v4
with:
Expand All @@ -227,14 +166,14 @@ jobs:
- name: Install JS deps
run: cd packages/core && yarn install --frozen-lockfile

- name: Verify schema snapshots
run: |
cargo test -p flowscope-core --test schema_guard --locked
cd packages/core && yarn test schema-compat.test.ts --silent
- name: Verify TypeScript schema compatibility
run: cd packages/core && yarn test schema-compat.test.ts --silent

cli-serve:
name: CLI Serve Mode
name: CLI Serve Mode & Fix Perf Gate
runs-on: ubuntu-latest
env:
CLI_FIX_PERF_BUDGET_MS: 5000
steps:
- uses: actions/checkout@v4

Expand All @@ -257,6 +196,9 @@ jobs:
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-serve-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-serve-
${{ runner.os }}-cargo-

- name: Install JS dependencies
run: yarn install
Expand All @@ -273,6 +215,50 @@ jobs:
- name: Build CLI with serve feature
run: cargo build -p flowscope-cli --features serve --release

# Reuse the CLI built above; don't compile a second release binary just
# for this latency regression gate.
- name: Benchmark CLI fix batch performance
run: |
python3 scripts/sql-corpus-fix-benchmark.py \
--flowscope-bin target/release/flowscope \
--sql-dir crates/flowscope-core/tests/fixtures/postgres \
--dialect postgres \
--mode batch \
--json-output /tmp/fs_cli_fix_perf.json

- name: Enforce perf budget
run: |
python3 - <<'PY'
import json
import pathlib
import os

report = pathlib.Path('/tmp/fs_cli_fix_perf.json')
payload = json.loads(report.read_text())
elapsed_ms = float(payload['result']['elapsed_ms'])
budget_ms = float(os.environ['CLI_FIX_PERF_BUDGET_MS'])
print(f'CLI fix batch elapsed={elapsed_ms:.3f}ms (budget={budget_ms:.1f}ms)')
summary = pathlib.Path('/tmp/fs_cli_fix_perf_summary.txt')
summary.write_text(
f'elapsed_ms={elapsed_ms:.3f}\n'
f'budget_ms={budget_ms:.1f}\n'
f'sql_dir={payload["sql_dir"]}\n'
)
if elapsed_ms > budget_ms:
raise SystemExit(
f'CLI fix batch performance regression: elapsed {elapsed_ms:.3f}ms exceeds {budget_ms:.1f}ms'
)
PY

- name: Upload perf telemetry
if: always()
uses: actions/upload-artifact@v4
with:
name: cli-fix-perf
path: |
/tmp/fs_cli_fix_perf.json
/tmp/fs_cli_fix_perf_summary.txt

- name: Run CLI serve tests
run: cargo test -p flowscope-cli --features serve

Expand All @@ -299,6 +285,9 @@ jobs:
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-database-integration-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-database-integration-
${{ runner.os }}-cargo-

- name: Run database integration tests
run: just test-integration
Expand Down Expand Up @@ -341,6 +330,9 @@ jobs:
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-coverage-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-coverage-
${{ runner.os }}-cargo-

- name: Generate coverage
run: cargo llvm-cov --workspace --lcov --output-path lcov.info
Expand All @@ -353,6 +345,7 @@ jobs:

- name: Upload to Codecov
uses: codecov/codecov-action@v5
continue-on-error: ${{ github.repository != 'pondpilot/flowscope' }}
with:
disable_search: true
fail_ci_if_error: true
Expand Down
Loading