Repository navigation
Releases: databricks-solutions/lakebase-scm-utils
Release list
v0.3.14 — capture stamps feature_id/story_id (per-feature dashboard scoping)
The per-test capture now stamps each line with feature_id/story_id so the dashboard scopes reads/writes per feature. Test ids repeat across features (F1 and F2 may both have a T40); an unstamped log commingled their reads under one id. Now:
app/consort_capture.pystamps each interaction from.consort/next.json(active feature) + the feature'spipeline.jsonbuild_active(active story; null during a whole-feature deploy).consort-capture.tsemitTableSnapshotstamps each snapshot viaresolveOwner(scenario_file + active-feature).- Unstamped older corpora stay back-compat (kept by test id); the stamp is forward-only.
Full suite 1318 green.
v0.3.13 — consort-capture stamps the test-runner role
Fix: consort-capture stamps the test-runner role on each captured test.result so a deploy-verify run lights the Verify step on the dashboard, not the driver's Green. Full suite 1316 green.
v0.3.12 — scaffolder deploys the root test-capture files
Fix: the scaffolder now deploys consort-capture.ts + consort-test-reporter.ts to the project root (via deployTestCaptureRoot in scaffoldAll, for React-client or Node-backend test surfaces).
These two files shipped in templates/project/common/ since v0.3.4 and the client wires them (client/vite.config.ts setupFiles + reporter import ../consort-capture; client/playwright.config.ts references ../consort-test-reporter.ts), but no scaffold step ever copied them to root — so every React scaffold was born with dangling imports: vitest run couldn't start and Playwright couldn't load (the scaffold-defect HIL halt). Python/Java backends with no React client are skipped (they capture via conftest.py).
New hermetic tests in tests/bdd/scaffold-test-capture.test.ts incl. a scaffoldAll wiring proof. Full suite 1316 green.
v0.3.11
Start-process hardening. Create-flow robustness: toolkit pre-warm before the initial push (no cold-download race), a retriable push with a non-destructive resume line (a push-only failure no longer rolls back provisioning), and an atomic created-resources rollback (repo/Lakebase/runner/dir) for genuine provisioning faults. Pre-scaffolding GitHub preflight: active-account + push access, the full required scope set (repo/workflow), repo-name availability, and Actions — all checked before anything is created.
v0.3.10
Lakebase snapshot/PITR CLI: lakebase-snapshot create|delete|list + branch-create --from-snapshot/--at-time/--at-lsn for immutable point-in-time COW forks. Scaffold test-harness refinements (run-tests.sh client-only pass, conftest).
v0.3.9
Scope the autouse migration-head restore (_restore_migration_head_after_each_test) to @pytest.mark.migration tests only: a non-migration test cannot have altered the schema (the migration-marker smell enforces it), so restoring after every non-migration test ran a full alembic env-load + DB round-trip for nothing. Backend pass ~40% faster on a migration-heavy story.
Narrow the e2e _is_up readiness poll's except to (urllib.error.URLError, OSError) (server-not-yet-listening), so it is not a broad-integrity swallow the test-smell gate flags.
v0.3.8 - per-test reporter recording + cross-feature owner-resolution
scm-utils 0.3.8
Per-test reporter recording + cross-feature owner-resolution.
- The TS (
consort-capture.ts) and Python (conftest.py) per-test reporters record a durabletest.resultinto the agent-log at run time — so the dashboard lights each test the moment it runs, scrubbing lights it at its real run position, and a replay of the recording reproduces the per-test progression. - Owner resolution now attributes a reused test id (ids are unique only within a story) by (1)
scenario_filematch, then (2) the feature currently on the build lane (next.json). A contract story's migration/fitness test (noscenario_file) is no longer mis-attributed to a sibling feature's same-id client test. Live-proven: the F6/S3 contract test bubbles light green under their own story.
Consumed by consort (repointed in the paired consort release).
v0.3.6
addE2eToRunTestsScript anchors the E2E marker to a standalone line — fixes the run-tests.sh clobber.
addE2eToRunTestsScript matched its idempotency marker with a substring includes/indexOf. consort's vendored run-tests.sh documents the E2E-assembly contract in a header comment that quotes the marker verbatim in backticks, so the match landed on that prose mention and slice(0, indexOf) truncated the entire primary-suite body (set -e, REPO_ROOT, the pytest + client-vitest blocks), leaving a hollow, always-exit-0 run-tests.sh. Every refreshSurface → enableE2eForProject since that comment landed (consort 0.4.11) re-clobbered it, so the honest-GREEN + deploy-gate verify ran nothing across recent projects — a red suite could sail through acceptance.
Fix: match (and truncate at) the marker as a standalone line (^…$, multiline), never a substring, so a prose mention is ignored and only the real appended block is the boundary. Plus a fail-closed guard: refuse to write a run-tests.sh that drops the REPO_ROOT/pytest/vitest body an original carried. New regression test feeds a template whose header quotes the marker and asserts the primary body survives.
v0.3.5
- pr.yml: 'Run client unit tests' now runs after the CI Lakebase branch +
DATABASE_URLare provisioned (was running before). The client component suite'svitest.globalSetupboots a REAL backend over/api, so it needs the DB — running it first made the backend never become healthy and the step timed out at 120s. Reordered after datasource + migrations, gated on a CI branch (steps.lakebase-db.outputs.url), threading the DB env. - create-project: preflights the GitHub token's
workflowscope so scaffold fails fast with a clear message instead of at the final push + rollback (checkGitHubScopes+ create-preflight +doctor).
Branch hygiene + cleanup branch after.
v0.3.4
Per-test capture scaffold for the Consort dashboard's per-test table view: Playwright-free table-snapshot + retrieved/stored writers (consort-capture.ts, consort_capture.py), vitest/pytest/playwright reporters, and consort-fixtures that tag each test's requests with X-Consort-Test-Id so the backend attributes the rows each test reads/writes.