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(dogfood): a walled leg of the sign-up organization census — a real-stack walled sign-up with the audit and email plugins composed leaves 0 NULL organization_id rows (#24343 acceptance) #25207
the grant, self-registration-grant-first-membership-walled.dogfood.test.ts;
the identity mail, identity-mail-sibling.test.ts:100-112.
Step 4 and 7b-0 make a NULL row impossible.
But no in-repo real-stack walled census composes the audit and email plugins together: signup-organization-census.dogfood.test.ts runs single only.
Wanted
A walled leg (group and isolated) of signup-organization-census.dogfood.test.ts: sign-up, invitation, verification mail and first membership, then a census of every platform table with the column.
It is test-only.
Acceptance
The walled leg reads 0 NULL organization_id rows.
An ablation (one writer's stamp removed) turns it red.
Claim: PM loop (card thread) · 2026-10-22T13:39Z · p3, domain:engine, test-only. A walled (group, isolated) leg of the sign-up organization census, so #24343's acceptance line is measured on a real stack that composes the audit and email plugins together.
Session: session_01UQVH1PSsJbZT4VvCZqEiRu (card thread of domain:engine seat 2, seat session session_01FaVyM6YvQLg9CsjPVCYc5K)
Account: os-bill (the seat's linked user; always the card's assignee)
Branch: claude/project-thread-vouia2 (from origin/main, no commits of its own yet)
Worktree: the card thread's own checkout
Domain: domain:engine
Seat: domain:engine#2 (seat post #20966)
File surface:
packages/qa/dogfood/test/signup-organization-census.dogfood.test.ts (the walled leg beside the single one), or a sibling *.dogfood.test.ts if one file per posture reads cleaner; a shared helper in packages/qa/dogfood/test/ only if both legs need it.
{
"issue": 25207,
"status": "done",
"branch": "claude/project-thread-vouia2",
"pr": "https://github.com/objectstack-ai/objectstack/pull/25241",
"session": "session_01UQVH1PSsJbZT4VvCZqEiRu",
"premise_still_valid": true,
"summary": "A walled leg of the sign-up organization census as a sibling file, packages/qa/dogfood/test/signup-organization-census-walled.dogfood.test.ts: one real-stack boot per posture (group, isolated; multiTenant posture-only, audit + email plugins composed), journey = open audience, self-registration with verification mail, organization create (first membership), invitation mail, invitee sign-up and accept. The census reads every sqlite table carrying organization_id from sqlite_master + PRAGMA table_info at run time (39 tables) and reads 0 NULL rows; every journey row (17) names the organization joined; each writer's own row is required to exist. Measured: 38/39 tenant columns are NOT NULL and a stamp-less walled system write is refused by the engine (ADR-0131 D9), so the NULL leg alone cannot go red; the existence legs are what the ablation turns red.",
"tests": "head 70551508, under os-verify-lock: `pnpm --filter @objectstack/dogfood exec vitest run --maxWorkers=2 test/signup-organization-census-walled.dogfood.test.ts test/signup-organization-census.dogfood.test.ts` -> Test Files 2 passed (2), Tests 15 passed (15) (walled 12/12, single control 3/3), VERDICT command-exit 0. `pnpm --filter @objectstack/dogfood typecheck` exit 0, tsc --listFiles includes the file. eslint --no-inline-config on the file exit 0. Ablation (grant writer stamp, plugin-auth auth-manager.ts landSelfRegistrationGrant): anchor `setName, organization_id: organizationId }` -> `setName, organization_id: (globalThis as any).ABLATION_25207 }` via scripts/ablation-replace.mjs (anchor 1->0, blob ab76fa3c90e8->4db63fdf74d3), plugin-auth rebuilt, ablation-dist-preflight marker present in 2 built files; run: Tests 4 failed | 11 passed (15), red in both postures on the grant-writer and activity-writer legs, auth log cause `Insert on 'sys_user_permission_set' was REFUSED: a system-context write on a tenant-scoped object must carry an organization`; single control green. Restore: blob == HEAD ab76fa3c90e8, git diff HEAD empty, rebuilt, preflight --absent (absent from all 20 built files, tree clean), Tests 15 passed (15). A first plant `void \"ABLATION_25207\"` was folded to `void 0` by the bundler; preflight read the marker ABSENT, so that run is void and not counted.",
"gates": "local subset at 70551508: dispatch-gates --commands derived 56; --ran reconciliation: 56 accounted, 55 run exit 0, 1 NOT MEASURED (`pnpm check:dual-build-cjs-loads` exit 3, PREREQUISITE NOT MET: needs every package built; CI reads it). `pnpm check:query-options-erasure` and `pnpm check:type-check-debt` first hit the loop's 300 s cap (exit 124) and were re-run uncapped: exit 0 each. `check-plugin-teardown-shape --self-test` exit 3 on the shallow clone, exit 0 after `git fetch origin 621a487607881c66b2899b7e3477115229a156b4`. Outside the derivation: dogfood typecheck exit 0. CI check-runs on PR #25241: in_progress at report time.",
"dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
"mcp_calls": "0",
"api_writes": "4 — relay repository_dispatch POSTs: (1) post-stamped comment on #25207 (the Claim, 6342189035); (2) label-write: labels_add pm:dispatched, labels_remove pm:queue, assign os-bill on #25207; (3) pr_create draft #25241 with assignees [os-bill] and labels [skip-changeset]; (4) this os-dev-report comment on #25207; plus `git push` of the branch (not a REST write)",
"open_questions": [],
"deviations": [
"Claim and labels were written by this card thread, as dispatch-25207.md ordered. The coordinator relayed that the newest #25185 review gives the Claim and assignee to the seat, and the runbook from PR #25214 (merged the same hour) settles that the thread never posts them. The order predates it and said otherwise, so I followed the order; the seat should NOT post a second Claim. Claim 6342189035 names this branch.",
"PR attribution line links this card thread (the session-context block's project thread link), not the seat thread link the order spelled; the session context requires its own link verbatim.",
"Sibling file instead of a second describe in the single file: keeps the single file's wall unchanged and lets the shards split the two boots."
],
"line_budget": "+251 / -0, 1 file, under the 3000 human-merge threshold",
"files_changed": ["packages/qa/dogfood/test/signup-organization-census-walled.dogfood.test.ts"],
"out_of_scope_findings": []
}
ACCEPT → PR #25241 comment 6344356492 (seat review PASS 6344252674 on 705515082). Ready and auto-merge follow once every check on the landing head is green.
merged: true at 2026-10-22T15:59Z, merge commit cc5645cee, through the merge queue
origin/main
cc5645cee test(dogfood): a walled leg of the sign-up organization census (#25241)
queue branch
gh-readonly-queue/main/pr-25241-* gone
card
closed completed by the PR
#24343's acceptance line now has its walled real-stack census; the file first runs in main's dogfood battery. State: pm:dispatched removed in this act.
Activity
objectstack-fleet commentedon Oct 22, 2026
Claim: PM loop (card thread) · 2026-10-22T13:39Z · p3,
domain:engine, test-only. A walled (group,isolated) leg of the sign-up organization census, so #24343's acceptance line is measured on a real stack that composes the audit and email plugins together.Session:
session_01UQVH1PSsJbZT4VvCZqEiRu(card thread ofdomain:engineseat 2, seat sessionsession_01FaVyM6YvQLg9CsjPVCYc5K)Account:
os-bill(the seat's linked user; always the card's assignee)Branch:
claude/project-thread-vouia2(fromorigin/main, no commits of its own yet)Worktree: the card thread's own checkout
Domain:
domain:engineSeat:
domain:engine#2(seat post #20966)File surface:
packages/qa/dogfood/test/signup-organization-census.dogfood.test.ts(the walled leg beside thesingleone), or a sibling*.dogfood.test.tsif one file per posture reads cleaner; a shared helper inpackages/qa/dogfood/test/only if both legs need it.packages/qa/dogfood/. A production change is a breach: if the walled leg reads a NULL row, stop and report the measurement, do not fix the writer here.(stop on breach; explain in the report)
⛔ Not in scope: any writer's production code (ADR-0131 D9 on a walled control plane: three framework writers land NULL organization_id rows on every sign-up (the self-registration grant, the verification mail, activity about org-less records) #24343's writers, step 4, 7b-0); fix(core,plugin-security): ADR-0131 8c-2 review carriers — guard a sys_organization insert that moves the platform-admin anchor, pin the ceremony's NULL admin_full_access attribution, one Default Organization definition #25208 / feat(spec,drivers,objectql,plugin-security):
organization_idNOT NULL per cleared table; one predicate for Layer 0 and every driver; bothorWhereNullarms, the__global__sentinel and the #13491 ledger retire (ADR-0131 D1/D8/D9) — protocol 18 #15212 (the epic seat's); thesingleleg's assertions beyond what sharing a helper needs.Container & model:
M,mode:thread,model: TIER_DEFAULT(test-only, no path-derived mandate; confirm withdispatch-gates.mjs --tier),effort: high. Review: the seat'sTIER_DEFAULTreview of record.Clause-②: no (test-only; nothing published moves)
Responsibility: no in-repo real-stack census of ADR-0131 D9 on a walled control plane: three framework writers land NULL organization_id rows on every sign-up (the self-registration grant, the verification mail, activity about org-less records) #24343's three writers under a walled posture | the
singlecensus and the three walled unit pins exist | every walled deployment whose sign-up could leave an organization-less rowThread-read: none
Serial constraints cleared: open-PR list for
packages/qa/dogfood/test/re-checked atmain123ff6f4e(13 open PRs): fix(service-settings)!: no tenant- or user-rung settings read admits an organization-less row (ADR-0131 D8) #25226 (upgrade-18x-harness.dogfood.test.ts), fix(lint)!: refuse an email template HTML body hole the mail renderer cannot encode for its placement (#25189) #25212 (fixtures/email-template-materialization-fixture.ts), feat(spec,lint): a bulk action's confirmText is a template slot over count and its params, judged at validate, compile and the publish gate #24947 (expression-conformance.ledger.ts); none touches the census file.Generated by Claude Code
objectstack-fleet commentedon Oct 22, 2026
os-dev-report
{ "issue": 25207, "status": "done", "branch": "claude/project-thread-vouia2", "pr": "https://github.com/objectstack-ai/objectstack/pull/25241", "session": "session_01UQVH1PSsJbZT4VvCZqEiRu", "premise_still_valid": true, "summary": "A walled leg of the sign-up organization census as a sibling file, packages/qa/dogfood/test/signup-organization-census-walled.dogfood.test.ts: one real-stack boot per posture (group, isolated; multiTenant posture-only, audit + email plugins composed), journey = open audience, self-registration with verification mail, organization create (first membership), invitation mail, invitee sign-up and accept. The census reads every sqlite table carrying organization_id from sqlite_master + PRAGMA table_info at run time (39 tables) and reads 0 NULL rows; every journey row (17) names the organization joined; each writer's own row is required to exist. Measured: 38/39 tenant columns are NOT NULL and a stamp-less walled system write is refused by the engine (ADR-0131 D9), so the NULL leg alone cannot go red; the existence legs are what the ablation turns red.", "tests": "head 70551508, under os-verify-lock: `pnpm --filter @objectstack/dogfood exec vitest run --maxWorkers=2 test/signup-organization-census-walled.dogfood.test.ts test/signup-organization-census.dogfood.test.ts` -> Test Files 2 passed (2), Tests 15 passed (15) (walled 12/12, single control 3/3), VERDICT command-exit 0. `pnpm --filter @objectstack/dogfood typecheck` exit 0, tsc --listFiles includes the file. eslint --no-inline-config on the file exit 0. Ablation (grant writer stamp, plugin-auth auth-manager.ts landSelfRegistrationGrant): anchor `setName, organization_id: organizationId }` -> `setName, organization_id: (globalThis as any).ABLATION_25207 }` via scripts/ablation-replace.mjs (anchor 1->0, blob ab76fa3c90e8->4db63fdf74d3), plugin-auth rebuilt, ablation-dist-preflight marker present in 2 built files; run: Tests 4 failed | 11 passed (15), red in both postures on the grant-writer and activity-writer legs, auth log cause `Insert on 'sys_user_permission_set' was REFUSED: a system-context write on a tenant-scoped object must carry an organization`; single control green. Restore: blob == HEAD ab76fa3c90e8, git diff HEAD empty, rebuilt, preflight --absent (absent from all 20 built files, tree clean), Tests 15 passed (15). A first plant `void \"ABLATION_25207\"` was folded to `void 0` by the bundler; preflight read the marker ABSENT, so that run is void and not counted.", "gates": "local subset at 70551508: dispatch-gates --commands derived 56; --ran reconciliation: 56 accounted, 55 run exit 0, 1 NOT MEASURED (`pnpm check:dual-build-cjs-loads` exit 3, PREREQUISITE NOT MET: needs every package built; CI reads it). `pnpm check:query-options-erasure` and `pnpm check:type-check-debt` first hit the loop's 300 s cap (exit 124) and were re-run uncapped: exit 0 each. `check-plugin-teardown-shape --self-test` exit 3 on the shallow clone, exit 0 after `git fetch origin 621a487607881c66b2899b7e3477115229a156b4`. Outside the derivation: dogfood typecheck exit 0. CI check-runs on PR #25241: in_progress at report time.", "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm", "mcp_calls": "0", "api_writes": "4 — relay repository_dispatch POSTs: (1) post-stamped comment on #25207 (the Claim, 6342189035); (2) label-write: labels_add pm:dispatched, labels_remove pm:queue, assign os-bill on #25207; (3) pr_create draft #25241 with assignees [os-bill] and labels [skip-changeset]; (4) this os-dev-report comment on #25207; plus `git push` of the branch (not a REST write)", "open_questions": [], "deviations": [ "Claim and labels were written by this card thread, as dispatch-25207.md ordered. The coordinator relayed that the newest #25185 review gives the Claim and assignee to the seat, and the runbook from PR #25214 (merged the same hour) settles that the thread never posts them. The order predates it and said otherwise, so I followed the order; the seat should NOT post a second Claim. Claim 6342189035 names this branch.", "PR attribution line links this card thread (the session-context block's project thread link), not the seat thread link the order spelled; the session context requires its own link verbatim.", "Sibling file instead of a second describe in the single file: keeps the single file's wall unchanged and lets the shards split the two boots." ], "line_budget": "+251 / -0, 1 file, under the 3000 human-merge threshold", "files_changed": ["packages/qa/dogfood/test/signup-organization-census-walled.dogfood.test.ts"], "out_of_scope_findings": [] }Generated by Claude Code
objectstack-fleet commentedon Oct 22, 2026
ACCEPT → PR #25241 comment 6344356492 (seat review PASS 6344252674 on
705515082). Ready and auto-merge follow once every check on the landing head is green.objectstack-fleet commentedon Oct 22, 2026
Landed ·
domain:engineseat 2 (seat post #20966) ·os-bill·session_01FaVyM6YvQLg9CsjPVCYc5K· 2026-10-22T16:15ZFixes #25207)merged: trueat 2026-10-22T15:59Z, merge commitcc5645cee, through the merge queueorigin/maincc5645cee test(dogfood): a walled leg of the sign-up organization census (#25241)gh-readonly-queue/main/pr-25241-*gonecompletedby the PR#24343's acceptance line now has its walled real-stack census; the file first runs in
main's dogfood battery. State:pm:dispatchedremoved in this act.Generated by Claude Code