Skip to content

docs+scripts: PR coordination policy + tz-pinned-test lint (consolidates #115 + #119)#120

Open
estebanzimanyi wants to merge 1 commit intomainfrom
consolidate/pr-coordination-and-tz-lint
Open

docs+scripts: PR coordination policy + tz-pinned-test lint (consolidates #115 + #119)#120
estebanzimanyi wants to merge 1 commit intomainfrom
consolidate/pr-coordination-and-tz-lint

Conversation

@estebanzimanyi
Copy link
Copy Markdown
Member

Summary

Consolidates two PRs that prevent the same class of failure (parallel work on the same surface drifting in policy and timezone-offset state):

Together: the doc tells contributors what to do; the lint enforces it. Pairs naturally with PR #111 / commit 9dd765a's timezone-neutral test policy.

Why merge

Per the new docs/PR-COORDINATION.md "minimise PR count" obligation: two small PRs with a shared theme (preventing the PR-coordination + timezone-pin failures) should be one PR. No file overlap (one in docs/, one in scripts/); cherry-picks applied cleanly with no conflict resolution needed.

Closes

Both can be closed in favour of this PR once it merges.

Test plan

estebanzimanyi added a commit that referenced this pull request May 10, 2026
#116 + #118)

Two cleanups landing together so the rest of the open PR queue can
build and merge.

Part 1 — revert main's single-timezone commits (was #116):
- 39921f1 fix(tz): single-timezone model — drops the AutoLoadExtension(icu)
  + SetOptionByName("TimeZone", ...) block from LoadInternal.
- 08a5598 docs(tz): clarify two-timezone reality in comments.
- 47df9ca fix(tz): set MEOS timezone to Europe/Brussels — drops
  meos_initialize_timezone("Europe/Brussels").
- d3d9810 fix(tz): force MEOS UTC timezone — drops the earlier
  meos_initialize_timezone("UTC") so LoadInternal matches PR #111's
  parent state exactly.
- Shift remaining +01 expectations to +00 in 23 test files (calendar
  dates unchanged; only displayed offset shifts to match TZ=UTC).

Part 2 — sync MEOS API drift (was #118):
- meosType → MeosType sweep (16 files): MEOS catalog header now exposes
  the type as MeosType (PascalCase); MobilityDuck source historically
  used meosType (lowercase).
- t{contains,disjoint,intersects,touches,dwithin}_* arg drop (12 call
  sites): MEOS exports lost their trailing bool restr, bool at_value
  parameters; restriction is now composed at the call site via
  tbool_at_value when needed.

Result: LoadInternal collapses to ConfigureMeosSridCsvOnce() +
meos_initialize() + error handler, exactly matching PR #111's parent
state.  All MobilityDuck source compiles against the current vcpkg MEOS.
PR #111 then replaces the call_once block with
EnsureMeosInitializedOnThread() — clean diff, no policy fight.

The +00 shift is interim shape per the project's timezone-neutral
policy (PR #111 / commit 9dd765a); the longer-term direction is to
rewrite each assertion to value-equality / accessor / asText round-trip
form, caught by scripts/lint-tz-pinned-tests.py (PR #120).

## Closes

- #116 (consolidate: revert main's tz commits and align tests with TZ=UTC)
- #118 (fix: sync MEOS API drift)
@estebanzimanyi estebanzimanyi force-pushed the consolidate/pr-coordination-and-tz-lint branch 3 times, most recently from a28ce0c to b5092ab Compare May 10, 2026 14:05
…nsolidates #115 + #119)

Three related artefacts that prevent the same class of failure (parallel
work on the same surface drifting in policy and offset state):

docs/PR-COORDINATION.md — ecosystem policy: gh pr list is the first
step before any code change; minimise PR count by folding into existing
PRs; squash each PR to a single commit before review.

docs/CONSOLIDATION-PLAN.md — file-level overlap matrix between commits
already on main and the open consolidate/* parity PRs.

scripts/lint-tz-pinned-tests.py — flags every line in an
expected-output block that carries a hardcoded UTC offset.

scripts/parity-audit.py — three improvements:
- Strip single-line SQL comments before matching CREATE FUNCTION, so
  '-- CREATE FUNCTION tdirection(...)' placeholders for unimplemented
  MobilityDB functions don't inflate the missing-list.
- OUT_OF_SCOPE_NAMES bucket for domain-specific names that are
  PG-only or have no DuckDB equivalent: transform_gk (Gauss-Krüger
  for SECONDO), create_trip (BerlinMOD generator), _edisjoint (PG
  SQL-wrapper internal helper), box2d/box3d (PostGIS-only bbox
  types), range/multirange (PG range/multirange types).

Headline 90.3% → 92.8% addressable (combined with the parity-adding
PRs in flight).
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.

1 participant