Repository navigation
Commit 81e6edd
test(dogfood): fixture-18.0.0 — the upgrade harness boots a database the published 18.0.0 created (#24911)
Fixes #24884
Clause-②: no
## What
`fixture-18.0.0`: a database the published `@objectstack/*@18.0.0`
created, added to the 18.x upgrade harness, with one leg pinning that
HEAD boots it.
- **The fixture**
(`packages/qa/dogfood/test/upgrade-harness/fixture-18.0.0/`). It was
generated by `scripts/gen-upgrade-harness-fixture.mjs --ref
@objectstack/cli@18.0.0 --checkout CHECKOUT --out …/fixture-18.0.0`,
from a built checkout of the `@objectstack/cli@18.0.0` tag
(`06cab4849a`). That checkout's `packages/cli/dist` (660 files) and
`packages/runtime/dist` are sha256-identical to the npm 18.0.0 tarballs.
The populator and the dump are the ones `fixture-18.0` uses: the same
showcase app and the same seed actions. Its 18.0.0 shape, read from the
dump:
- birth marker `{shapeGeneration: 1, platformVersion: "18.0.0"}`;
- the tenant column is nullable (`sys_share_link.organization_id
varchar(255)`);
- 15 COALESCE unique indexes;
- `sys_secret` and `sys_flow_credential` carry no `organization_id`.
The census covers all 14 reshaped tables.
- **The leg** (`upgrade-18x-harness.dogfood.test.ts`, a new `describe`).
It runs on a fresh copy of the fixture:
1. the copy is birth-marked at 18.0.0;
2. HEAD's `os migrate plan --json` (the real binary, in the showcase's
directory) reports no `destructive` change;
3. HEAD boots it with no ownership refusal and no boot error, the
fixture's people sign in, and the fixture's task is served;
4. once HEAD has stopped, every 18.0.0 row of every reshaped table is
still there, with its key columns.
- **`fixture-18.0` is unchanged.** It stays the pre-release shape, and
its legs run as before.
## Why the populator and census changed
18.0.0 differs from the pre-release in two ways the shared populator did
not handle:
- **The webhook.** 18.0.0 seeds no `sys_webhook` mirror row for a
declared webhook. So, when no mirror row exists, the populator switches
`showcase_task_changed` on through `POST
/security/_activation/webhook/:name`, which is the door the 18.0.0
showcase docblock names. It also authors an organization webhook
(`upgrade_harness_task_changed`), so `sys_webhook` still holds the row
an 18.0.0 install holds. The pre-release path, which PATCHes the mirror
row, is unchanged.
- **The census.** `sys_secret` and `sys_flow_credential` are
deployment-level at birth in 18.0.0. A new `dropsOrganization` flag on
those two entries lets the census leave `organization_id` out of their
key columns where the table never had it. Every other missing key column
is still refused.
There is also a generator fix. Its copy filter (anything whose name
starts with `fixture-`) also skipped `fixture-manifest.ts`, so a
`--checkout` run used the checkout's own census, not HEAD's. It now
skips only the fixture directories.
## Verification
- `npx vitest run test/upgrade-18x-harness.dogfood.test.ts`: 12 passed
(12), which is the 8 existing `fixture-18.0` cases plus the 4 new ones.
- `npx vitest run test/audit-mail-bodies.dogfood.test.ts
test/identity-mail-read-gate.dogfood.test.ts`, the other suites that
import the populator: 29 passed (29).
- Reverse check of the drift assertion: on a copy of the fixture with an
undeclared physical column added, HEAD's plan reports `{kind:
unmapped_column, category: destructive, op: drop_column}`, so the filter
is not vacuous.
- `pnpm --filter @objectstack/dogfood typecheck` exits 0. eslint
`--no-inline-config` on the changed files exits 0.
`check:cross-package-test-inputs`, `check:test-source-alias` and
`check:doc-authoring` exit 0.
## Size and release
- 7 files, 2,229 insertions and 15 deletions. That is under 3,000
changed lines; the dump and the manifest are 2,061 of them.
- Nothing publishes: `@objectstack/dogfood` is private and `scripts/`
ships in no package. So there is no changeset, and the PR carries
`skip-changeset`.
- No ADR, driver or engine file is touched.
## Acceptance notes
The published 18.0.0 verification (R1, R1b, R4, and R3 with the
ceremony) is reported on #24884 and to the epic seat. Its two
documentation findings are release-owned, so they need a docs-only
change. They are not fixed here:
- the CLI CHANGELOG's 18.0.0 section still carries the superseded "18.0
supports fresh `single` installs only" entry;
- `content/docs/upgrading.mdx` has no v18 row and does not mention the
ceremony.
---
_Generated by [Claude
Code](https://claude.ai/code/session_01YaviApKPNAuQLZVQarNfxP)_
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent e2c2355 commit 81e6edd
7 files changed
Lines changed: 2229 additions & 15 deletions
File tree
- packages/qa/dogfood/test
- upgrade-harness
- fixture-18.0.0
- scripts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
58 | | - | |
| 58 | + | |
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
| |||
293 | 293 | | |
294 | 294 | | |
295 | 295 | | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
44 | 68 | | |
45 | 69 | | |
46 | 70 | | |
| |||
0 commit comments