ci(temporal-conformance): give the non-SQL step the job's live PostgreSQL URL - #21577
Draft
objectstack-fleet[bot] wants to merge 2 commits into
Draft
objectstack-fleet[bot] wants to merge 2 commits into
objectstack-fleet[bot] wants to merge 2 commits into
Conversation
…eSQL URL The step "Run the non-SQL temporal backends under the skewed process zone" runs service-analytics, whose live-PostgreSQL cells are keyed on OS_TEST_POSTGRES_URL (describe.skipIf(!config)). The step set only TZ, so those cells were named skips while the job read green. It now receives the same URL the job's SQL steps use, for the postgres service the job already provisions. The test files' header clause "no CI step provisions that variable for this package" becomes false with this wiring; it is corrected, comment-only, to name the step that now sets it. Claude-Session: https://claude.ai/code/session_01YDt3PzwfrkuFzUBF89WPmM Co-authored-by: Claude <noreply@anthropic.com>
Contributor
📓 Docs Drift CheckNothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 0 changed package(s)), so this run has no opinion about the docs. What this run could not see
Coarse fallback — 0 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
This was referenced Oct 3, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #21564
Clause-②: no
What this changes
The
Temporal Conformance (live PG + MySQL)job's step "Run the non-SQL temporal backends under the skewed process zone" now setsOS_TEST_POSTGRES_URLin itsenv:, with the same literal the job's three SQL steps use (postgres://postgres:postgres@127.0.0.1:5432/postgres), for the postgres service the job already provisions. Until now that step set onlyTZ, so everyservice-analyticslive-PostgreSQL cell (describe.skipIf(!config)) was a named skip there while the job read green.The header clause "no CI step provisions that variable for this package" in 14
service-analyticstest files becomes false with this wiring. It is corrected, comment-only, to name the step that now sets it. No other line of those files changes (every changed line in them is a*comment line).No other job, no other step, and no timeout changes. No cell is re-skipped.
What the step needed, measured (A2)
Only the one
env:line:turbo run build --filter=@objectstack/service-analytics... --dry=jsonselects 16 packages, including@objectstack/driver-sql,@objectstack/objectqland@objectstack/driver-sqlite-wasm(dev dependencies ofservice-analytics). The step's existing build already builds what the cells import.pgis an optional peer ofdriver-sql, resolved by pnpm intodriver-sql'sknexinstance (knex@3.3.0_..._pg@8.22.0);require.resolve('pg')from thatknexanswerspg@8.22.0. The cells reachpgthroughSqlDriver, so nothing is added toservice-analytics.postgresdatabase and creates and drops its own tables. The table names are distinct across the 16 files (os21316_deal,os21505_coercion, ...), so parallel vitest workers do not collide.Asia/Shanghaibefore any test step.Readings
service-analyticsfile readsOS_EXPECT_LIVE_DIALECT_MATRIX(git grepexit 1), and no code in the step's other four packages reads it (the only hit, indriver-mongodb/src/test-mongod.ts, is a comment). So the flag is not added to the step, and no code reading it is added.service-analyticsfile readsOS_TEST_MYSQL_URLor any other server variable the job provides. Its onlyprocess.envreads areOS_TEST_POSTGRES_URL(32),NODE_ENVandTZ. Nothing is listed for MySQL.core,formula,driver-memoryanddriver-mongodbhave zeroOS_TEST_POSTGRES_URLhits (git grepexit 1 for each). Adding the variable to the step starts no test in them.Local run against a non-UTC PostgreSQL 16
PostgreSQL 16.14 started privately on a random port with
timezone=Asia/Shanghai, processTZ=America/New_York(the job's two zones),service-analyticsfull suite, tree3f9dcd91c4. Counts are passed / failed / skipped per file, from vitest's JSON reporter.Whole package: 4152 passed, 253 skipped without the URL; 4399 passed, 4 failed, 2 skipped with it. The two skips left are cell-scoped by design: the SQLite cell's "the server is not on UTC" check in
read-scope-temporal-coercion, and the PostgreSQL cell's SQLite-only "a host with no typed reader" case inanalytics-faces-one-lowering.One live cell is red once wired
objectql-face-order-limit.test.ts, thelive postgrescell, 4 tests::244(native face)[['2026-06', 1]][['2026-05', 2]]:257[['2026-05', 20], ['2026-04', 1]][['2026-03', 6], ['2026-02', 10]]:334:363(native face)[['2026-05', 20], ['2026-04', 1]][['2026-03', 6], ['2026-02', 10]]Every
closed_on(adatefield) lands one day early:03-01becomes Feb,06-01joins May.options=-c TimeZone=UTCon the URL) andTZ=America/New_York: 26 passed. With the server onAsia/ShanghaiandTZ=UTC: the same 4 failed.driver-sql'sbuildDateBucketExprPostgreSQL branch (sql-driver.ts:6134-6138) buckets withto_char((col)::timestamptz AT TIME ZONE 'UTC', 'YYYY-MM'). On adatecolumn,::timestamptzresolves midnight in the session zone. Inpsqlon the same server,to_char(('2026-06-01'::date)::timestamptz AT TIME ZONE 'UTC', 'YYYY-MM-DD')answers2026-05-31underAsia/Shanghaiand2026-06-01under UTC.Per the triage ruling, this is a real red. It is ⛔ not fixed here and ⛔ not re-skipped. The PM cards it to the cell's lane. Until then this PR's
Temporal Conformancecheck is expected to be red, and the PR stays a draft.Acceptance is read from this PR's own
Temporal Conformance (live PG + MySQL)job log (cells run, not skipped), not from green. That reading, against a recentmainrun of the same step, is recorded in the os-dev report on the card.Acceptance notes
read-scope-temporal-coercion.test.ts:233-237,show timezone). The other 15 rely on the job's provisioning step for the server's zone. The red cell above is zone-sensitive and asserts no server zone. Noted, not changed.check:stall-guard-budgetreads this step's static budget as window 10m, cap 20m, job budget 30m, slack 10m (2 of 2 guarded steps share the clock). The step's measured time on this PR is in the card report..github/workflows/ci.yml, and comments in test files outsideservice-analytics'sfiles[](dist,README.md,CHANGELOG.md). Measured after a build:os21316_deal,no CI stepand the new step name have 0 hits in those files; positive controlAnalyticsServicePluginhas 4. No changeset;skip-changeset.check-governed-merges.mjs --branch: 0 of 15 paths hit the register, NOT governed; 110 changed lines.Gates
Run on head
a3fb6c0334(the merge oforigin/maina3873542ca). Each exit code was recorded before any pipe.dispatch-gates.mjs --commandsderives exited 0. This includescheck:required-contexts,check-ci-filter-parityand its--self-test,check:workflow-step-name-quoting,check:workflow-status-functions,check:stall-guard-budget,check:stall-guard-headroom,check:pnpm-filter-targets,check:nul-bytes,check:changeset-gate-self-testsandcheck-changeset-no-major.check:dual-build-cjs-loads: exit 3,PREREQUISITE NOT MET. It needs a fullpnpm build, and this diff changes no package's built output. NOT MEASURED; CI runs it.check:pm-dispatch-gatesandcheck:type-check-debt: each ran past the local 420 s bound (exit 124) on the shared box, then were re-run without that bound. That result is in the card report.service-analytics:typecheckpassed; its full test suite is in the table above.Generated by Claude Code