Establish a canonical D7 dev source dump on dev-0
Area: migration / source data / environments / DX Raised during: Session 2026-08-25 (dev-0 vs DDEV baseline mismatch) Jira: (add when available) Priority: Medium — direction DECIDED 2026-09-02 (Yuji, ratified by the group): re-cut, with a mandatory team alert on every re-cut. Remaining work is the practical follow-ups below (dump identifier, refresh-path testing, alert mechanism), not a decision.
The problem, measured
dev-0 and local DDEV are running different D7 source dumps, and nothing says so anywhere. Measured 2026-08-25:
| local DDEV | dev-0 | |
|---|---|---|
| D7 source nodes | 288,023 | 287,939 |
node:shanti_image |
111,343 | 111,341 |
field:field_kmap_terms |
55,553 | 61,668 |
| groups (collection / subcollection) | 55 / 119 | 55 / 116 |
Seven of the eight committed EXPECT_LIST baseline keys differ. The data is not wrong —
61,668 is exactly the figure scripts/migration-cycle.sh's own header records as the
superseded 2026-06-11 baseline, which the newer local dump moved to 55,553. dev-0's source
was loaded 2026-07-17 from production; the committed baseline was calibrated on the 2026-07-07
staging dump.
The immediate consequence is recorded in the
1a.9 checklist: running validate on dev-0
against the committed baseline produces seven spurious FAILs, which reads exactly like a
broken migration.
Decision (Yuji, 2026-08-25)
Separate baselines are fine for now. Re-baseline against dev-0 for the Sprint 1 acceptance run and commit it as a dev-0-specific baseline.
Ongoing, dev-0 should hold a canonical D7 dev source that the whole team starts from. Everyone's local environment should be reproducible from the same dump, so a count difference means a real difference rather than an unshared assumption.
Decision (Yuji, ratified by the group 2026-09-02)
Re-cut, not frozen. The canonical dump gets refreshed as the team approaches staging and production, rather than staying static for the whole project. The team must be alerted whenever a re-cut happens, so everyone knows to resync their local environment and re-baseline rather than silently drifting the way dev-0/DDEV did here. Mechanism for the alert (Slack post, session-log entry, a dated identifier bump that CI checks against) not yet specified — that's a practical follow-up, not an open decision.
Practical follow-ups
- Find or create the canonical dump on dev-0 and record where it lives and how it was
produced. The D7 source databases are already on the shared RDS as
mandala_d7_images/mandala_d7_shared(loaded 2026-07-17, row-count verified). - Give the dump an identifier — a date, ideally the production dump date rather than the
load date — and reference it in
EXPECT_LISTand the runbook. - Document the refresh path.
scripts/refresh-d7-staging-source.shcodifies the dump/load, but is UNTESTED — the one verified run used the earlier manual commands. - Decide whether local DDEV should be re-seeded from the canonical dump, or whether local simply keeps its own baseline. (Currently the latter, by default rather than by choice.)
- Pick and implement the resync-alert mechanism for the decision above — every re-cut
must notify the team. Candidates: a Slack post, a session-log entry, or a dated identifier
bump in
EXPECT_LISTthat CI checks against so a stale baseline fails loudly instead of silently.