Skip to content

Releases: databricks-solutions/lakebase-scm-utils

v0.3.14 — capture stamps feature_id/story_id (per-feature dashboard scoping)

Choose a tag to compare

@kevin-hartman kevin-hartman released this 01 Nov 23:06

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.py stamps each interaction from .consort/next.json (active feature) + the feature's pipeline.json build_active (active story; null during a whole-feature deploy).
  • consort-capture.ts emitTableSnapshot stamps each snapshot via resolveOwner (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

Choose a tag to compare

@kevin-hartman kevin-hartman released this 01 Nov 07:15

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

Choose a tag to compare

@kevin-hartman kevin-hartman released this 29 Oct 23:34

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

Choose a tag to compare

@kevin-hartman kevin-hartman released this 28 Oct 02:36

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

Choose a tag to compare

@kevin-hartman kevin-hartman released this 27 Oct 06:48

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

Choose a tag to compare

@kevin-hartman kevin-hartman released this 24 Oct 05:37

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

Choose a tag to compare

@kevin-hartman kevin-hartman released this 23 Oct 08:18

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 durable test.result into 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_file match, then (2) the feature currently on the build lane (next.json). A contract story's migration/fitness test (no scenario_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

Choose a tag to compare

@kevin-hartman kevin-hartman released this 22 Oct 08:53

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

Choose a tag to compare

@kevin-hartman kevin-hartman released this 20 Oct 12:31
  • pr.yml: 'Run client unit tests' now runs after the CI Lakebase branch + DATABASE_URL are provisioned (was running before). The client component suite's vitest.globalSetup boots 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 workflow scope 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

Choose a tag to compare

@kevin-hartman kevin-hartman released this 19 Oct 10:13

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.