Skip to content

Commit e22bc4c

Browse files
committed
docs(qa): RUNNER.md round 5 entries carry their bfc1539 measurements; the Playwright check reads the store path
Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
1 parent d899354 commit e22bc4c

1 file changed

Lines changed: 28 additions & 23 deletions

File tree

‎docs/qa/platform-checklist/RUNNER.md‎

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,10 @@ contradicts it, and correct it here when it does.
173173
`@playwright/test` 1.63.0 (the `^1.63.0` `examples/app-showcase/package.json` declares, the
174174
only version in the store) resolves chromium build **1243**; only **1194** is installed.
175175
Re-measured at `bfc1539fe0`: this entry read 1.62.1 and build 1234 until the tree moved
176-
to 1.63.0.
177-
**Check:** `grep -A2 '"name": "chromium"' node_modules/playwright-core/browsers.json`
176+
to 1.63.0; `playwright-core` sits only in the pnpm store (there is no root
177+
`node_modules/playwright-core`), so the check reads it there.
178+
**Check:**
179+
`grep -A2 '"name": "chromium"' node_modules/.pnpm/playwright-core@*/node_modules/playwright-core/browsers.json`
178180
against `ls $PLAYWRIGHT_BROWSERS_PATH` (`/opt/pw-browsers` here, holding
179181
`chromium-1194` / `chromium_headless_shell-1194` only). The stock
180182
`examples/app-showcase/playwright.config.ts` sets no `executablePath`, so every test
@@ -338,19 +340,20 @@ contradicts it, and correct it here when it does.
338340
(`packages/plugins/plugin-auth/src/auth-manager.ts`, `hasPendingInvitationFor`).
339341
⚠️ **The sign-up does not apply the invitation's role.** It binds the new user to the
340342
Default Organization as `member` whatever role was invited, and leaves the invitation
341-
`pending` (`reconcileMembership` in `packages/plugins/plugin-auth/src/reconcile-membership.ts`
342-
writes `role: 'member'`). For any other role (`admin`, `owner`), the persona — signed in
343-
as itself — then sends `POST /api/v1/auth/organization/accept-invitation` with
344-
`{"invitationId": "ID"}` (the `id` the invite-member call answered, or the row its own
343+
`pending` (`reconcileMembership` in
344+
`packages/plugins/plugin-auth/src/reconcile-membership.ts` writes `role: 'member'`). For
345+
any other role (`admin`, `owner`), the persona — signed in as itself — then sends
346+
`POST /api/v1/auth/organization/accept-invitation` with `{"invitationId": "ID"}` (the
347+
`id` the invite-member call answered, or the row its own
345348
`GET /api/v1/auth/organization/list-user-invitations` lists). Acceptance writes the
346349
invitation's role onto that membership and the invitation reads `accepted`
347350
(`adoptExistingMembership` in `packages/plugins/plugin-auth/src/adopt-membership.ts`,
348351
which never lowers a grade; pinned by `accept-invitation-adopt-membership.test.ts`
349-
beside it). The invitee's email need not be verified: the deployment declares
350-
`requireEmailVerificationOnInvitation: false`. QA run #24616 met it: an `admin`
351-
invitation signed up as `member`, and the persona held `org_admin` only after the accept.
352-
**Check:** read the persona's `sys_member` row (`role`) before scoring a role-gated
353-
clause, never the invitation you sent.
352+
beside it, 6 passed at `bfc1539fe0`). The invitee's email need not be verified: the
353+
deployment declares `requireEmailVerificationOnInvitation: false`. QA run #24616 met it:
354+
an `admin` invitation signed up as `member`, and the persona held `org_admin` only after
355+
the accept. **Check:** read the persona's `sys_member` row (`role`) before scoring a
356+
role-gated clause, never the invitation you sent.
354357
2. **Admin create.** `POST /api/v1/auth/admin/create-user`, which answers
355358
`mustChangePassword: true` by default
356359
(`packages/plugins/plugin-auth/src/admin-user-endpoints.ts`, `runAdminCreateUser`);
@@ -463,13 +466,15 @@ contradicts it, and correct it here when it does.
463466
refusal promises the walled postures for "an 18.x release" and names none. Kernel-level
464467
boots (`@objectstack/verify`'s `bootStack`, the dogfood wall suites) never pass through
465468
`serve` and still boot walled, which is why a walled clause is proven by its pins.
466-
**So:** score a walled clause from the pins its item names, and record its live leg
467-
`skipped` with this entry cited — "not scored on a stock 18.0 boot" — as the clauses of
468-
the withdrawn organization-ownership command are. ⛔ Never `blocked(fixture)`: no fixture
469-
provisions a posture the release refuses. The 18.0 sweep's records met it and scored the
470-
live leg both `blocked(environment)` (QA runs #24557, #24559) and `blocked(fixture)` (QA
471-
run #24558); this entry is the one word. Each item that carries such a leg names it in its
472-
own `fixtures.knownGaps`.
469+
Measured at `bfc1539fe0`: `isolated`, `group` and `OS_MULTI_ORG_ENABLED=true` each exit 1
470+
with that FATAL on `os serve` and on `os start`, `single` passes the gate, and the pin
471+
reports 5 passed. **So:** score a walled clause from the pins its item names, and record
472+
its live leg `skipped` with this entry cited — "not scored on a stock 18.0 boot" — as the
473+
clauses of the withdrawn organization-ownership command are. ⛔ Never `blocked(fixture)`:
474+
no fixture provisions a posture the release refuses. The 18.0 sweep's records met it and
475+
scored the live leg both `blocked(environment)` (QA runs #24557, #24559) and
476+
`blocked(fixture)` (QA run #24558); this entry is the one word. Each item that carries
477+
such a leg names it in its own `fixtures.knownGaps`.
473478

474479
- **A stock 18.0 boot holds exactly one organization, and no door mints a second — so an
475480
org-switch clause has no live leg on a stock boot either.**
@@ -488,7 +493,7 @@ contradicts it, and correct it here when it does.
488493
a stock 18.0 boot: record its live leg `skipped` with this entry cited, and score what its
489494
pins prove. A run that stages the second organization itself (QA run #24560 wrote one with
490495
a system write) scores a fixture of its own making, not a stock boot, and its record says
491-
so. QA runs #24560 and #24558 met the 403.
496+
so. QA runs #24560 and #24558 met the 403; the pin reports 25 passed at `bfc1539fe0`.
492497

493498
- **One container builds one tree at a time: never run `pnpm build` and
494499
`pnpm objectui:build` together, and give the heavy steps a concurrency the shell's memory
@@ -520,10 +525,10 @@ contradicts it, and correct it here when it does.
520525
directions: a `*.e2e.test.ts` pin (`serve-organization-record-page.e2e.test.ts`) collects
521526
nothing without `OS_TEST_TIERS=nightly` (QA runs #24556 / #24558), and with it set, 28 of
522527
the 29 cli files the Tier 1 rerun named ran 0 tests (QA run #24598, #24579 round 2).
523-
**Fix:** run a cli `*.e2e.test.*` pin in an invocation of its own
524-
with `OS_TEST_TIERS=nightly`, and every other cli pin without it. ⛔ A named file that
525-
collects no test is not a pass, and here it is not a stale ref either — re-run it under
526-
the other setting before fixing the item.
528+
**Fix:** run a cli `*.e2e.test.*` pin in an invocation of its own with
529+
`OS_TEST_TIERS=nightly`, and every other cli pin without it. ⛔ A named file that collects
530+
no test is not a pass, and here it is not a stale ref either — re-run it under the other
531+
setting before fixing the item.
527532

528533
- **`scripts/qa/qa-rollup.mjs` has two blind spots a runner meets at close-out.** (1) Only a
529534
BARE area name classifies as an area: `classifySelector('platform-core')` answers `area`,

0 commit comments

Comments
 (0)