# E2E Test Type Error Punchlist

`pnpm type-check` reports 7 errors in two e2e test files. These stem from `role` and `tenantId` having been moved from the `users` table to the `memberships` table. The tests were not updated when the schema changed.

## Files affected

- `tests/e2e/admin-users.spec.ts`
- `tests/e2e/pipeline.spec.ts`

## Root cause

The e2e tests query and insert `users.role` and `users.tenantId`, but those columns only exist on `memberships`:

```ts
// schema/memberships.ts
tenantId: uuid('tenant_id').notNull().references(() => tenants.id),
role: text('role', { enum: ['line_manager', 'expert', 'admin'] }).notNull(),
```

## Error locations

| File | Line | Error |
|------|------|-------|
| `admin-users.spec.ts` | 69 | `.select({ role: users.role })` — `role` not on `users` |
| `admin-users.spec.ts` | 98 | `.select({ role: users.role })` — same |
| `admin-users.spec.ts` | 107 | `.select({ role: users.role })` — same |
| `admin-users.spec.ts` | 117 | `.select({ tenantId: users.tenantId })` — `tenantId` not on `users` |
| `admin-users.spec.ts` | 125 | `db.insert(users).values({ tenantId, role })` — both columns absent from `users` |
| `admin-users.spec.ts` | 142 | `db.delete(users).where(eq(users.tenantId, ...))` — `tenantId` not on `users` |
| `pipeline.spec.ts` | 135 | `.select({ tenantId: users.tenantId })` — same |

## Fix approach

1. **Read-only queries** (`SELECT role`, `SELECT tenantId`): join `memberships` on `memberships.userId = users.id` and read from `memberships` instead.

2. **Insert at admin-users:125**: `role` and `tenantId` must be inserted as a separate row into `memberships` after the `users` insert. Pattern:
   ```ts
   const [newUser] = await db.insert(users).values({ email, authProvider: 'magic_link' }).returning()
   await db.insert(memberships).values({ userId: newUser.id, tenantId: target.tenantId, role: 'line_manager' })
   ```

3. **Delete at admin-users:142**: remove the `tenantId` condition since it doesn't exist on `users`. The user ID alone is sufficient for a targeted delete.

## Done criteria

- All 7 errors gone from `pnpm type-check`
- `pnpm test:e2e` passes (or errors only on infrastructure, not type issues)
