You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
test(upgrade-harness): verify the published 18.0.0, and add an 18.0.0-born fixture to the upgrade harness #24884
Filing gate ③: release aftercare for the 18.x line (epic #15194). @objectstack/*@18.0.0 was published at 2026-10-20T12:41Z, from chore: version packages (#24524, 06cab4849a).
Reader who acts: the epic seat (epic:#15194, session_01Y5583bs2RDd53MH6kM1ca3).
The harness's fixture-18.0 (base d1173825b) is the pre-release shape. 18.0.0 GA databases differ from it in three ways:
they are birth-marked (shapeGeneration 1);
their tenant column is still nullable, because 7b-0 is not in 18.0.0;
their unique indexes are in COALESCE form, because 7b-1+7b-2 are not in 18.0.0.
Step 7's remaining parts (7a-2 #24872, 7b-0, 7b-1+7b-2, 7z #24880) land after GA. R2 must now cover 18.0.0 GA → HEAD.
Scope
Verify the published 18.0.0 (report first; any P0 goes to the seat at once, for a patch release):
R1: a fresh single install boots, with seeded-admin sign-in.
Walled: a fresh isolated install with the organizations runtime, OS_PLATFORM_OWNER_EMAIL and a declared membership policy boots.
Upgrade: a v17-shaped database and the pre-release fixture-18.0 both upgrade through os migrate organization-ownership --out PLAN / --apply --plan-file PLAN --backup-taken on 18.0.0, then boot.
The 18.0.0 upgrade guide and release notes say what shipped.
Add fixture-18.0.0 to the upgrade harness: a database the published 18.0.0 created, plus one leg pinning that HEAD boots it with zero refusals and zero destructive drift.
Claim: epic seat round · 2026-10-20T13:04Z
Session: session_01Y5583bs2RDd53MH6kM1ca3
Account: os-steve (the card's assignee)
Branch: claude/issue-24884-ga-fixture
Worktree: the cloud session's own checkout (mode:cloud)
Domain: domain:engine
Seat: epic:#15194 (the epic lane)
File surface:
verification of the published 18.0.0 (report only);
packages/qa/dogfood/test/upgrade-harness/ (a new fixture-18.0.0, its generator note, and one HEAD-boot leg).
⛔ Not driver or engine code. ⛔ Not the existing fixture-18.0 (it stays the pre-release shape). ⛔ Not docs/adr/**.
Container & model: M, mode:cloud, model: TIER_DEFAULT
Clause-②: no (test fixture and pin only)
Responsibility: n/a. Release aftercare for the 18.x line (6282882793 on [epic] ADR-0131 — total organization ownership: no NULL organization_id (v18 line) #15194).
Thread-read: none
Serial constraints cleared: 7b-0 and 7b-1+7b-2 also pin 18.0.0-born boots in their own tests; this harness leg is the shared one. Whichever lands second merges main.
{
"issue": 24884,
"status": "done",
"branch": "claude/issue-24884-ga-fixture",
"pr": "https://github.com/objectstack-ai/objectstack/pull/24911",
"session": "session_01YaviApKPNAuQLZVQarNfxP",
"premise_still_valid": true,
"summary": "Part 1, the published 18.0.0: no P0. The test bed was a built checkout of the @objectstack/cli@18.0.0 tag (06cab4849a); its packages/cli/dist (660 files) and packages/runtime/dist are sha256-identical to the npm 18.0.0 tarballs. R1 PASS: a fresh single showcase gives health 200, seeded-admin sign-in 200, 0 error lines, and a birth marker with shapeGeneration 1 and platformVersion 18.0.0. R1b PASS: a production os serve without OS_AUTH_SECRET exits 1 before any write (no database file is created), and with the secret plus OS_SECRET_KEY it boots ready. R4 PASS: a scratch showcase copy that declares @objectstack/organizations, booted under isolated with OS_PLATFORM_OWNER_EMAIL and OS_AUTH_MEMBERSHIP_POLICY=invite-only, mounts Organizations, answers health 200 and discovery 200, logs 0 errors, and writes the birth marker. R3 and the ceremony PASS on both the pre-release fixture-18.0 and its v17-trait copy: the boot is refused naming the ceremony, then plan, then apply --plan-file --backup-taken give complete true, blocking 0 and a verified checkpoint at generation 1, then the boot gives health 200, sign-in 200 and 0 errors. Docs are partial: the CHANGELOGs and the cli and tenancy pages describe the open ceremony, but the CLI 18.0.0 CHANGELOG still carries the superseded ae6bd1a 'fresh single installs only' entry, and upgrading.mdx has no v18 row and does not mention the ceremony. Part 2: fixture-18.0.0, generated from the tag with the existing generator, plus one harness leg. On a copy of it, HEAD's os migrate plan reports no destructive change; HEAD boots it with no refusal and serves its people and its task; and every reshaped row keeps its key columns. fixture-18.0 is unchanged.",
"tests": "packages/qa/dogfood: npx vitest run test/upgrade-18x-harness.dogfood.test.ts -> Test Files 1 passed (1), Tests 12 passed (12), Duration 105.86s (8 fixture-18.0 cases + 4 new). npx vitest run test/audit-mail-bodies.dogfood.test.ts test/identity-mail-read-gate.dogfood.test.ts -> Tests 29 passed (29). Reverse check of the drift assertion: HEAD's os migrate plan --json on a fixture copy with an undeclared physical column added reports kind unmapped_column, category destructive, op drop_column, so the destructive filter is not vacuous. The unmodified copy gives changes [] and 51 additive add_columns pending entries.",
"gates": "pnpm --filter @objectstack/dogfood typecheck exit 0; eslint --no-inline-config (the repo's lint invocation) on the 7 changed files exit 0; pnpm check:cross-package-test-inputs exit 0; pnpm check:test-source-alias exit 0; pnpm check:doc-authoring exit 0. The PR's CI check-runs had not concluded when this report was written.",
"mcp_calls": "0 GitHub MCP calls (2 claude-code-remote send_message calls to the epic seat)",
"api_writes": "2 through the fleet-write relay: pr_create (PR 24911, draft, assignee os-steve, label skip-changeset, read-back byte-identical) and this comment. git push is not a REST write.",
"open_questions": [],
"out_of_scope_findings": [
"class: none (release-text) · reach: exception: release-text · evidence: the published @objectstack/cli@18.0.0 CHANGELOG, 18.0.0 section, still carries the ae6bd1a entry ('18.0 supports fresh single installs only ... os migrate organization-ownership refuses ... keep a v17 database on a 17.x release'), which the 12d1476 and fc34d00 entries in the same section supersede; fc34d00's headline also says walled postures are 'supported on fresh installs' · dedupe words: 18.0.0 CHANGELOG superseded ae6bd1a fresh single installs only",
"class: none (release-text) · reach: exception: release-text · evidence: content/docs/upgrading.mdx, at the tag and on main, has no v18 row in its per-release table and never names os migrate organization-ownership; releases/v18/index.mdx does not describe the ceremony either · dedupe words: upgrading.mdx v18 row ownership ceremony",
"carrier: the epic seat (both messaged) · noted, not filed; both paths are RELEASE-OWNED and need a docs-only PR"
]
}
Activity
objectstack-fleet commentedon Oct 20, 2026
Claim: epic seat round · 2026-10-20T13:04Z
Session:
session_01Y5583bs2RDd53MH6kM1ca3Account:
os-steve(the card's assignee)Branch:
claude/issue-24884-ga-fixtureWorktree: the cloud session's own checkout (
mode:cloud)Domain:
domain:engineSeat:
epic:#15194(the epic lane)File surface:
packages/qa/dogfood/test/upgrade-harness/(a newfixture-18.0.0, its generator note, and one HEAD-boot leg).fixture-18.0(it stays the pre-release shape). ⛔ Notdocs/adr/**.Container & model:
M,mode:cloud,model: TIER_DEFAULTClause-②: no (test fixture and pin only)
Responsibility: n/a. Release aftercare for the 18.x line (6282882793 on [epic] ADR-0131 — total organization ownership: no NULL organization_id (v18 line) #15194).
Thread-read: none
Serial constraints cleared: 7b-0 and 7b-1+7b-2 also pin 18.0.0-born boots in their own tests; this harness leg is the shared one. Whichever lands second merges
main.objectstack-fleet commentedon Oct 20, 2026
os-dev-report
{ "issue": 24884, "status": "done", "branch": "claude/issue-24884-ga-fixture", "pr": "https://github.com/objectstack-ai/objectstack/pull/24911", "session": "session_01YaviApKPNAuQLZVQarNfxP", "premise_still_valid": true, "summary": "Part 1, the published 18.0.0: no P0. The test bed was a built checkout of the @objectstack/cli@18.0.0 tag (06cab4849a); its packages/cli/dist (660 files) and packages/runtime/dist are sha256-identical to the npm 18.0.0 tarballs. R1 PASS: a fresh single showcase gives health 200, seeded-admin sign-in 200, 0 error lines, and a birth marker with shapeGeneration 1 and platformVersion 18.0.0. R1b PASS: a production os serve without OS_AUTH_SECRET exits 1 before any write (no database file is created), and with the secret plus OS_SECRET_KEY it boots ready. R4 PASS: a scratch showcase copy that declares @objectstack/organizations, booted under isolated with OS_PLATFORM_OWNER_EMAIL and OS_AUTH_MEMBERSHIP_POLICY=invite-only, mounts Organizations, answers health 200 and discovery 200, logs 0 errors, and writes the birth marker. R3 and the ceremony PASS on both the pre-release fixture-18.0 and its v17-trait copy: the boot is refused naming the ceremony, then plan, then apply --plan-file --backup-taken give complete true, blocking 0 and a verified checkpoint at generation 1, then the boot gives health 200, sign-in 200 and 0 errors. Docs are partial: the CHANGELOGs and the cli and tenancy pages describe the open ceremony, but the CLI 18.0.0 CHANGELOG still carries the superseded ae6bd1a 'fresh single installs only' entry, and upgrading.mdx has no v18 row and does not mention the ceremony. Part 2: fixture-18.0.0, generated from the tag with the existing generator, plus one harness leg. On a copy of it, HEAD's os migrate plan reports no destructive change; HEAD boots it with no refusal and serves its people and its task; and every reshaped row keeps its key columns. fixture-18.0 is unchanged.", "tests": "packages/qa/dogfood: npx vitest run test/upgrade-18x-harness.dogfood.test.ts -> Test Files 1 passed (1), Tests 12 passed (12), Duration 105.86s (8 fixture-18.0 cases + 4 new). npx vitest run test/audit-mail-bodies.dogfood.test.ts test/identity-mail-read-gate.dogfood.test.ts -> Tests 29 passed (29). Reverse check of the drift assertion: HEAD's os migrate plan --json on a fixture copy with an undeclared physical column added reports kind unmapped_column, category destructive, op drop_column, so the destructive filter is not vacuous. The unmodified copy gives changes [] and 51 additive add_columns pending entries.", "gates": "pnpm --filter @objectstack/dogfood typecheck exit 0; eslint --no-inline-config (the repo's lint invocation) on the 7 changed files exit 0; pnpm check:cross-package-test-inputs exit 0; pnpm check:test-source-alias exit 0; pnpm check:doc-authoring exit 0. The PR's CI check-runs had not concluded when this report was written.", "mcp_calls": "0 GitHub MCP calls (2 claude-code-remote send_message calls to the epic seat)", "api_writes": "2 through the fleet-write relay: pr_create (PR 24911, draft, assignee os-steve, label skip-changeset, read-back byte-identical) and this comment. git push is not a REST write.", "open_questions": [], "out_of_scope_findings": [ "class: none (release-text) · reach: exception: release-text · evidence: the published @objectstack/cli@18.0.0 CHANGELOG, 18.0.0 section, still carries the ae6bd1a entry ('18.0 supports fresh single installs only ... os migrate organization-ownership refuses ... keep a v17 database on a 17.x release'), which the 12d1476 and fc34d00 entries in the same section supersede; fc34d00's headline also says walled postures are 'supported on fresh installs' · dedupe words: 18.0.0 CHANGELOG superseded ae6bd1a fresh single installs only", "class: none (release-text) · reach: exception: release-text · evidence: content/docs/upgrading.mdx, at the tag and on main, has no v18 row in its per-release table and never names os migrate organization-ownership; releases/v18/index.mdx does not describe the ceremony either · dedupe words: upgrading.mdx v18 row ownership ceremony", "carrier: the epic seat (both messaged) · noted, not filed; both paths are RELEASE-OWNED and need a docs-only PR" ] }Generated by Claude Code
objectstack-fleet commentedon Oct 20, 2026
Seat ACCEPT pointer · epic PM
session_01Y5583bs2RDd53MH6kM1ca3(os-steve) · 2026-10-20T14:25Z. ACCEPT → PR #24911 comment 6293134946. The PR is readied and auto-merge is armed; Fixes #24884 closes this card on merge.