MemberJunction / MemberJunction/MJ

CI: nightly PostgreSQL lane for the deterministic integration tier

Open
#3,773 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TSQL
Stars
29
Forks
6
Avg merge
2d 1h
Merged PRs (30d)
323

Description

Filed from @rkihm-BC's review of #3703:

> **No CI lane**, as the PR states. Everything here decays the day after merge without one, and
> since most of this PR *is* the harness, a nightly PG lane is what converts it from a measurement
> into a guarantee. Worth filing before merge rather than after.

## Why

#3703 makes the deterministic integration tier runnable against PostgreSQL and fixes what that
exposed. Nothing currently re-runs it. Without a lane, the PG result is a single point-in-time
measurement taken by hand, and every subsequent merge can silently regress it — the failure mode
being that the next person to run it inherits a large, undifferentiated pile of breakage with no
way to attribute any of it.

## What it should do

- Run `MJ_INTEGRATION_TEST=1 RUN_MUTATION_TESTS=1 mj test suite "Integration Tests — Deterministic"`
against a PostgreSQL database built from `migrations` + `migrations-pg` + `mj sync push`.
- **`RUN_MUTATION_TESTS=1` is not optional.** Mutation-class bundles skip silently without it, and a
green run then means materially less than it appears — that flag alone is the difference between
the 49/61 originally reported on #3703 and the honest 58/61.
- Report the bundle-level pass count, and fail the lane on a *decrease* rather than on any failure,
since the tier legitimately ships with known-failing bundles while PG parity is in progress.

## Known-failing bundles at the time of filing (head `302cd42714`)

| Bundle | Cause |
|---|---|
| IT29 — Cache Gauntlet | mutation-class; newly visible |
| IT67 — Content Vectorization | PG `spCreateContentSource` names `ScheduledActionID`, dropped by `V202608061704` — stale regenerated proc |
| IT74 — Task Graph Execution | TX8/TX9; deterministic across three isolated runs, not root-caused |

Whatever baseline the lane starts from should be these three, so a fourth is a real signal.

## Note on scope

The stored-query dialect gap and the PG migration counterparts are release-time conversion work, not
per-PR work — the lane should measure them, not gate a feature PR on them.

Contributor guide

Open the contributing guide

Research direction

Start by reading #3703 and the existing deterministic integration command: `MJ_INTEGRATION_TEST=1 RUN_MUTATION_TESTS=1 mj test suite "Integration Tests — Deterministic"`. Review `migrations`, `migrations-pg`, and the `mj sync push` setup to understand the PostgreSQL database. Done means a nightly lane reports bundle-level counts, uses the three listed known failures as its baseline, and fails only when the count decreases.

Written by the indexing model from the issue text.

Assessment

Tech stack
postgresql
Domain
ci-cd, databases
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.