Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions docs/qa/v0.8/signout-owner/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
The sign-out owner reset now runs during the layout commit. Previously, an action started after its owner committed but before the passive owner-reset effect could lose pending state, permit a duplicate logout, or suppress its failure message. A replacement owner could also be blocked by a held old-owner attempt. The runtime change replaces only that reset's `useEffect` with `useLayoutEffect` and removes the unused import.

Seven new regressions exercise the real hook and committed controls at that precise phase boundary. They cover initial and replacement owners, disabled pending UI, duplicate prevention, visible current-owner failure and retry, and old-owner result suppression. The consumer's latest action ref updates in an earlier layout effect; phase-start effects depend on owner and start intent, so pending rerenders do not start another action. Existing seven StrictMode lifecycle controls are retained unchanged. Initial phase probes omit StrictMode synthetic mount replay, which would independently invalidate a request started during the first mount setup.

The outside-repository byte-identical BEFORE hook passed seven original controls and failed all seven phase regressions. The private candidate changed only the hook import and reset effect type; the same 14 test bytes then passed 14/14. The private harness initially lacked automatic JSX configuration and stopped at `React is not defined`; this harness failure is retained separately, followed by the corrected private config's actual BEFORE and AFTER behavioral evidence. No test timeouts were extended and no assertions were removed.

The integrated auth branch actual Node20.20.2 gate passed 20/20 once: 14 hook tests and the unchanged six sign-out UI tests that use the actual Supabase SDK with disposable storage/HTTP and a real persistent Sonner host. Scoped lint, nonincremental application/API type checks and the original-config production Vite build passed. The build retains original plugins and changes only private cache/output paths. Source hashes stayed unchanged through all gates. Fixture URL/key were disposable; the compiled build is intended for root's browser fixtures.

The earlier combined full gate at `a26da88bf3768cc9bbe54f0c8cb8ddb7deb6cdcf` remains recorded as 981 passed / 1 failed / 982 total, with the sole unchanged Account sign-out test unable to find disabled `Signing out...` after the held actual logout fixture was reached. That symptom is consistent with the deterministic race. The original run did not instrument hook effect order, so this report does not claim its exact failure chronology was uniquely proven. This diagnosis did not retry that full gate or any PG/full-app suite. Original full JSON/log hashes are preserved in `actual/original-full-failure-summary.json` and private source-freeze evidence; original artifacts remain at the paths recorded in the outside receipt.

Public evidence contains both private hook snapshots, identical private regression/control sources, commands, result JSON, logs, retained harness failure and scoped actual gate receipts. Test/config snapshots use `.txt` extensions because they are evidence rather than executable product files. Private probe test bytes and the integrated existing-file test bytes differ only in adapting the same cases to existing auth/deferred fixtures and recording the latest committed callback for complete effect dependencies. The retained private BEFORE/AFTER test bytes are unchanged.

`receipt.json` records exact runtime, base/source hashes, source-freeze count, gate commands, artifact hashes and limits. Compiled browser/screenshot verification is owned by the root task and is not claimed here. No live Supabase/provider requests, installs, commits, pushes, PRs, merges or deployments were performed by this agent.
19 changes: 19 additions & 0 deletions docs/qa/v0.8/signout-owner/actual/build-execution.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"gate": "build",
"command": [
"/private/tmp/zeroboard-ai-ci-runtime/node_modules/node/bin/node",
"node_modules/vite/bin/vite.js",
"build",
"--config",
"/Users/tmcfarlane/Documents/Codex/2026-09-30/zeroboard-chatgpt-integration/outputs/gauntlet/fourteenth-signout-race/actual/vite-build.config.mts"
],
"nodeVersion": "20.20.2",
"startedAt": "2026-10-02T13:43:35.747777+00:00",
"elapsedSeconds": 8.43130087503232,
"exitCode": 0,
"explicitEnvironment": {
"CI": "true",
"VITE_SUPABASE_URL": "https://signout-owner-fixture.invalid",
"VITE_SUPABASE_ANON_KEY": "sb_publishable_disposable"
}
}
33 changes: 33 additions & 0 deletions docs/qa/v0.8/signout-owner/actual/build.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
vite v7.3.0 building client environment for production...
transforming...
Browserslist: browsers data (caniuse-lite) is 10 months old. Please run:
npx update-browserslist-db@latest
Why you should do it regularly: https://github.com/browserslist/update-db#readme
✓ 2434 modules transformed.
rendering chunks...
computing gzip size...
../../../../../../../../private/tmp/zeroboard-signout-owner-built-smoke/dist/index.html 0.69 kB │ gzip: 0.38 kB
../../../../../../../../private/tmp/zeroboard-signout-owner-built-smoke/dist/assets/geist-mono-cyrillic-400-normal-Ce5q_31Z.woff2 5.46 kB
../../../../../../../../private/tmp/zeroboard-signout-owner-built-smoke/dist/assets/geist-mono-latin-ext-400-normal-Cgks_Qgx.woff2 6.42 kB
../../../../../../../../private/tmp/zeroboard-signout-owner-built-smoke/dist/assets/geist-mono-cyrillic-400-normal-BPBWmzPh.woff 7.16 kB
../../../../../../../../private/tmp/zeroboard-signout-owner-built-smoke/dist/assets/geist-mono-latin-ext-400-normal-CxNRRMGd.woff 8.74 kB
../../../../../../../../private/tmp/zeroboard-signout-owner-built-smoke/dist/assets/geist-mono-latin-400-normal-LC9RFr9I.woff2 14.71 kB
../../../../../../../../private/tmp/zeroboard-signout-owner-built-smoke/dist/assets/geist-mono-latin-400-normal-CoULgQGM.woff 19.17 kB
../../../../../../../../private/tmp/zeroboard-signout-owner-built-smoke/dist/assets/geist-sans-latin-400-normal-gapTbOY8.woff2 33.40 kB
../../../../../../../../private/tmp/zeroboard-signout-owner-built-smoke/dist/assets/geist-sans-latin-500-normal-uokXdC-Q.woff2 34.72 kB
../../../../../../../../private/tmp/zeroboard-signout-owner-built-smoke/dist/assets/geist-sans-latin-600-normal-DFOURf8L.woff2 35.29 kB
../../../../../../../../private/tmp/zeroboard-signout-owner-built-smoke/dist/assets/geist-sans-latin-700-normal-BmN9tIp5.woff2 35.48 kB
../../../../../../../../private/tmp/zeroboard-signout-owner-built-smoke/dist/assets/geist-sans-latin-400-normal-BOaIZNA2.woff 38.91 kB
../../../../../../../../private/tmp/zeroboard-signout-owner-built-smoke/dist/assets/geist-sans-latin-500-normal-CN2lyvyL.woff 40.52 kB
../../../../../../../../private/tmp/zeroboard-signout-owner-built-smoke/dist/assets/geist-sans-latin-600-normal-CA1yjETN.woff 41.20 kB
../../../../../../../../private/tmp/zeroboard-signout-owner-built-smoke/dist/assets/geist-sans-latin-700-normal-CjScfYeH.woff 41.40 kB
../../../../../../../../private/tmp/zeroboard-signout-owner-built-smoke/dist/assets/index-CHEpaECk.css 123.98 kB │ gzip: 20.96 kB
../../../../../../../../private/tmp/zeroboard-signout-owner-built-smoke/dist/assets/matter-D2aJocFc.js 84.44 kB │ gzip: 26.81 kB
../../../../../../../../private/tmp/zeroboard-signout-owner-built-smoke/dist/assets/AppShell-CCN7yHU-.js 409.18 kB │ gzip: 105.88 kB
../../../../../../../../private/tmp/zeroboard-signout-owner-built-smoke/dist/assets/index-CcryL-gX.js 990.19 kB │ gzip: 288.92 kB

(!) Some chunks are larger than 500 kB after minification. Consider:
- Using dynamic import() to code-split the application
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
✓ built in 7.94s
47 changes: 47 additions & 0 deletions docs/qa/v0.8/signout-owner/actual/built-artifact-sha256.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{
"outDir": "/private/tmp/zeroboard-signout-owner-built-smoke/dist",
"files": {
"favicon-16x16.png": "bfbf0d89f45777cd191e9469821d552a6fdd165caed3df063aaaa35069312864",
"favicon.ico": "b1a99af77445241f1676ddbf23fb12b3f7b59f0ca3ccda3158834b0179b31a15",
"zeroboard-mcp-commercial.en.vtt": "0bae4a9b69406072773a28b19a7d4eb67c07a5bf4c2143dbc934e89f76542b09",
"index.html": "29d0f24163ef26ed2d9cefab57e89c38c8425deb7f49b3e05730223a4b86cc61",
"android-chrome-192x192.png": "50117c38991d1f05eb547aa9fdd5310ddbc1c3c3191074974178cedba6f67b88",
"apple-touch-icon.png": "bc8585046099cb1b4ed0def79c5c8965be7503da6abd47b2bb266d896b210cdc",
"android-chrome-512x512.png": "8372cbeffa825e3add85147f032f25f27c394bdec8f25765ca172b904d1e26d8",
"favicon-32x32.png": "346c79ed3891dff343b7ea9ff401095dbe756c97f1c872408f87c242c3ecb597",
"screenshots/card-editor.png": "61675bb2019e0a35a6b4c260d19cf1b7bb8207576d3635c58ee03f75cbfafca2",
"screenshots/kanban.png": "88d485f1d44566b0a8c15a510d0908faaaaac76d377815a8a441eec6787660ad",
"screenshots/ai-assist.png": "8dc1b38f769e288eadd1fa183083b81ac117bd7b9a1761bb24f63cd7d0a21a3e",
"screenshots/ai-plan-a-sprint.png": "3dd5b810495f077a2bd15b3d7203638b210ebe064f058636828e374d171584f6",
"screenshots/save-as-template.png": "79b4c2c514e3e5337c0e548ea3182fb943335890032a9781fd2d239b879ba4c4",
"screenshots/timeline.png": "9196b6a6bb5dc771e75e14eb92d77f850cb908911be409cb4c2856ffd0d09317",
"screenshots/sharing.png": "a1ecc503709eb34cdec2e56d5eff68499f27181a03d8e42225f699ec3499f8f2",
"screenshots/choose-background-color.png": "0c89279f420dbd38a8c38543ce878f46281cb1febe274cbf7fddfafb1bff24c3",
"screenshots/deploy-with-vercel.png": "d769ff3378e29b68f7f192c841b70b5c6ffba555907bc1d382c1514f3965a62b",
"screenshots/ZeroBoardAI.gif": "10f5b724226fee0f709f004cc56328d847934a4d22677017f43e1e1430a566da",
"screenshots/export-to-json.png": "86e7c25b6dc869b735ab5cf872f2fd59c0d8b178a475f9b7535705906ecba9ff",
"screenshots/sign-in-auth.png": "f37d071428675266004e3567b546ebd6038c734e1c3a17554f33b5680e8895f8",
"logo/logo_wordmark.svg": "d722e84c19e78e085cd2039c133dddc956263e7bdbfdd126da4afe03e94ba3ef",
"logo/logo_color.svg": "471cfbd7f8e6c166e1f034b9a8a859f93b7dd0d4485a692addef37a25119ce23",
"logo/logo_dark_pointer.svg": "bfc85a05ebd3a97ea76a282a07ca486c9f2e781f0241fd5306995df6ec5c42cf",
"assets/geist-sans-latin-600-normal-DFOURf8L.woff2": "9d99fbd791968493fa507ac846de561cee47b00f8100c23cad333b3cb78392d6",
"assets/geist-sans-latin-700-normal-CjScfYeH.woff": "a25e16202a8cd74d4a149b97d69262582e23ae59abfde1cee1a051ba5c41622a",
"assets/matter-D2aJocFc.js": "b22903a9bfb66858ecee8a59abb9dbf649ec5af2e87d5ed0e1b624428713fa52",
"assets/AppShell-CCN7yHU-.js": "aba1a59a1bf2dd2752003fb92cc2402d08b660c6f3734ebc7af9cf0eef636e48",
"assets/geist-mono-latin-ext-400-normal-Cgks_Qgx.woff2": "7f4a5d3c1cdf8a5bc8deb47b85606a5486d5159d42eba048bae9583c4d085cd0",
"assets/index-CcryL-gX.js": "9170e319117fe626900c9094563555df96df68f7498baac97524c14d12699843",
"assets/geist-mono-cyrillic-400-normal-BPBWmzPh.woff": "9e97905f0663eab927bcaa72b4e5b844bfa980ada3f894ff92052ec7ed2d8c03",
"assets/index-CHEpaECk.css": "263e79f76a1b7eea90ef1464343a1cde2748db1ae45e75881816b9f83fe9cf05",
"assets/geist-sans-latin-400-normal-BOaIZNA2.woff": "b2f5931f1a903bcc64af96ee41b3fed53a8ce74e9261181931a680a50560485b",
"assets/geist-sans-latin-600-normal-CA1yjETN.woff": "3903ed7633d563de34bbbf609e869a878e4b4081a25011a195b7a80043ecafe9",
"assets/geist-sans-latin-500-normal-uokXdC-Q.woff2": "40073e90816315c92e4f4381bd50b6fdc950b22b0dd010a4179046cf588d4f12",
"assets/geist-mono-latin-400-normal-CoULgQGM.woff": "af2a06fc6940abff35305a96ce4e2f69c2934106339b488b8cb85ca6f136dfff",
"assets/geist-mono-latin-ext-400-normal-CxNRRMGd.woff": "9f73a257660b9605fd3fae18eec73f1813da5d4e06638f5f7d2b155750530185",
"assets/geist-sans-latin-400-normal-gapTbOY8.woff2": "e6ef6abb39c762ed2259cc814e6f16888c540cd84835962227b56ab2354f27f1",
"assets/geist-sans-latin-700-normal-BmN9tIp5.woff2": "3d59addfafec3452d44717aa0a18911d5c3812487ed06af47f2ef27192ea1eed",
"assets/geist-mono-latin-400-normal-LC9RFr9I.woff2": "616e37ca59a2afebe306751773a538b93f5a2d9a90fd3fc97ce73321cb93af51",
"assets/geist-mono-cyrillic-400-normal-Ce5q_31Z.woff2": "259b63d9a2dcdf449b73f46624e409de1d62a51134e884d3f4af1242736cde10",
"assets/geist-sans-latin-500-normal-CN2lyvyL.woff": "5d679b8796eed440d6e7e2e94c37390b82f9db77aa92cfc21e96a1cdeecfba3d"
},
"count": 41
}
25 changes: 25 additions & 0 deletions docs/qa/v0.8/signout-owner/actual/focused-tests-execution.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"gate": "focused-tests",
"command": [
"/private/tmp/zeroboard-ai-ci-runtime/node_modules/node/bin/node",
"node_modules/vitest/vitest.mjs",
"run",
"--config",
"/Users/tmcfarlane/Documents/Codex/2026-09-30/zeroboard-chatgpt-integration/outputs/gauntlet/fourteenth-signout-race/actual/vite-test.config.mts",
"--maxWorkers=1",
"src/hooks/__tests__/useSignOutAction.test.tsx",
"src/components/auth/__tests__/signOut.test.tsx",
"--reporter=default",
"--reporter=json",
"--outputFile.json=/Users/tmcfarlane/Documents/Codex/2026-09-30/zeroboard-chatgpt-integration/outputs/gauntlet/fourteenth-signout-race/actual/focused-tests.json"
],
"nodeVersion": "20.20.2",
"startedAt": "2026-10-02T13:43:11.115013+00:00",
"elapsedSeconds": 5.020362457958981,
"exitCode": 0,
"explicitEnvironment": {
"CI": "true",
"VITE_SUPABASE_URL": "https://signout-owner-fixture.invalid",
"VITE_SUPABASE_ANON_KEY": "sb_publishable_disposable"
}
}
Loading
Loading