diff --git a/HANDOFF.md b/HANDOFF.md index 3b3cecec..4709c46b 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -61,16 +61,33 @@ npx playwright test e2e/mobile-sample-workbook-export.spec.ts --workers=1 --retr The scenario writes exact source hashes, HTML, pixels, console observations and reopened downloads to the configured Playwright output directory. It blocks external requests and uses fallback fonts. Preserve that output before another run. The default browser output path is local test evidence, not a deployment or public certificate. -Historical mobile-freeze holds: its baseline full dependency audit had 29 findings (28 moderate, one development high), and the production subset had 28 moderate findings. That export-only freeze kept the lock unchanged. The later dependency candidate and its current audit/mounted status are described below; these historical receipts are not rewritten. Gemini nightly still lacks its required credential. The old desktop XLSX projection exports blank Account cells despite visible Revenue/COGS labels; this extraction preserves that behavior and does not certify desktop data completeness. Current instructions reference two absent mobile design documents. The inherited half-height mobile dialog requires scrolling; enlarged navigation tabs have reading limitations and transient edit toasts overlap early outcomes. Full visual, responsive, accessibility, performance, provider and production grades remain unassigned. +Historical mobile-freeze holds: its baseline full dependency audit had 29 findings (28 moderate, one development high), and the production subset had 28 moderate findings. That export-only freeze kept the lock unchanged. The later dependency candidate and its current audit/mounted status are described below; these historical receipts are not rewritten. Gemini nightly still lacks its required credential. The old desktop XLSX projection exported blank Account cells despite visible Revenue/COGS labels; the mobile extraction preserved that behavior and did not certify desktop data completeness. The separate Account repair below addresses those two lookups. Current instructions reference two absent mobile design documents. The inherited half-height mobile dialog requires scrolling; enlarged navigation tabs have reading limitations and transient edit toasts overlap early outcomes. Full visual, responsive, accessibility, performance, provider and production grades remain unassigned. The retained proof used no provider call, shared backend change, hook activation, original environment read or production deployment. Old branches and dirty worktrees remain preserved. -## Current dependency repair, local review accepted +## Dependency repair, reviewed and merged -Read the [dependency proof and fresh commands](evidence/shared-dependencies-20260905/README.md) after this handoff. The [independent judgment](evidence/shared-dependencies-20260905/review/E6f_NODEROOM_SHARED_DEPENDENCY_FINAL_JUDGE.md) accepts this local dependency scope. The [encoding addendum](evidence/shared-dependencies-20260905/review/E6f_NODEROOM_DEPENDENCY_PACKAGE_ENCODING_ADDENDUM.md) explains why the final package spelling differs from the earlier raw worker hash. Shared integration is still pending. It restores the two exact NodeSlide file pins required by the immutable release contract and upgrades the coherent 30-package Tiptap cohort to 3.30.4, with only its required ProseMirror model/view minimums. All other lock rows and the nested uuid 14.0.1 remain unchanged. +Read the [dependency proof and fresh commands](evidence/shared-dependencies-20260905/README.md) after this handoff. The [independent judgment](evidence/shared-dependencies-20260905/review/E6f_NODEROOM_SHARED_DEPENDENCY_FINAL_JUDGE.md) accepts this local dependency scope. The [encoding addendum](evidence/shared-dependencies-20260905/review/E6f_NODEROOM_DEPENDENCY_PACKAGE_ENCODING_ADDENDUM.md) explains why the final package spelling differs from the earlier raw worker hash. [PR 252](https://github.com/HomenShum/NodeRoom/pull/252) merged normally at `034a8f963dfa037d860f5364032319506be3e2e0` after independent review and the premerge shared gates. It restores the two exact NodeSlide file pins required by the immutable release contract and upgrades the coherent 30-package Tiptap cohort to 3.30.4, with only its required ProseMirror model/view minimums. All other lock rows and the nested uuid 14.0.1 remain unchanged. Normal install, the unchanged fresh mounted consumer, 51 notebook/export scenarios, both TypeScript checks, build and 29 unchanged memory browser cases passed. The production audit now has zero findings; full audit retains one high development-only Browserslist finding. The real installed library prototype canary changes from 1,025 unsafe before cases to zero after, without claiming a NodeRoom exploit or executed browser handler. The dedicated notebook provenance browser spec remains unresolved: 3/3 failed on both preserved old and new built output, and only the 375 px failure matched exactly. Different artifact selection/steps at desktop and 320 px prevent a no-regression claim. All six screenshots/traces and original assertions are retained. This candidate has no notebook UI repair or full visual grade. -The unchanged full shared gates and actual new-commit check are still required before integration; the historical de9 commit-message failure remains. The Windows native Office deadline, absent nightly credential and separately planned desktop Account-label repair are open. Current dependency proof does not replace the original mobile export source/lock bindings or authorize a deployment. +The historical de9 commit-message failure remains recorded; published history was not rewritten. The Windows native Office deadline and absent nightly credential remain open. The merged dependency proof does not replace the original mobile export source/lock bindings or certify a deployment. + +## Desktop Account export, independently reviewed local proof + +A reviewer could see Revenue, COGS, Gross profit, OpEx and Net income in the desktop Q3 variance grid but receive five blank Account cells in the downloaded workbook. Both canonical export branches read `__account`; the existing seed and renderer store those values as `__label`. This candidate changes only those two field lookups. It preserves the visible grid, mobile projection, shared download transport and generic uploaded-workbook behavior. + +From the fresh local entry above, open `?mode=memory&surface=desktop`, enter the sample room and dismiss its walkthrough. In Room chat, send `@nodeagent recompute the Q3 variance column`. Wait for the committed variance response, edit the Revenue note, then select **Export XLSX**. The downloaded workbook must contain all five visible Account labels. Edit the note again and export a second file; the new file must contain the later note while the first file remains unchanged. + +The source-bound worker proof on merged `034a8f9` passed the normal build, the Convex TypeScript check, design audit, ten affected workbook/dialog scenarios and all three existing-plus-new `excel-grid` browser cases with the unchanged 30-second test budget. Current- and sibling-sheet component scenarios reopen eight serialized workbooks across repeated edits and duplicate activation. Temporarily restoring only the two old lookups makes both label scenarios fail; the exact repaired bytes were restored before the final proof. The actual 1440 px desktop journey saved two XLSX files: all five Account cells match the grid, the other 25 cells and all 30 cell styles match the preserved baseline, and the later note does not alter the earlier file. Both component cases use a typed mocked store plus a replaced browser download-dispatch boundary, while retaining the real Artifact projection and ExcelJS serialization. Only the current canonical sheet has this repair's actual memory-engine browser journey; the sibling-sheet fixture is not a browser-certified uploaded canonical workbook. + +After installing Chromium and starting the built preview as above, replay the affected checks in the second terminal: + +```powershell +npx vitest run tests/artifactXlsxExport.test.ts tests/mobileSampleWorkbookExport.test.ts tests/mobileSheetDialog.test.tsx +npx playwright test e2e/excel-grid.spec.ts --output test-results/desktop-account +``` + +Keep the three `PLAYWRIGHT_*` variables shown above so the browser uses that built preview. Preserve the output before another run; one unchanged uploaded-grid scenario also writes `test-results/uploaded-workbook-shared-grid.png`. The new Account scenario retains both downloaded workbooks and its screenshot. The [portable desktop proof](evidence/desktop-account-20260905/README.md) contains the matched source, grid, PNG, XLSX and raw failure records. Its independent source judgment passes 22 checks and separately verifies the actual ZIP/XML contents. Seven redundant archives/inventories remain listed in local custody; the portable verifier does not claim those bytes are available to a fresh recipient. Normal shared CI and integration of this desktop slice remain subsequent checks. The browser proof used fallback fonts and the memory engine, with no provider or native Office execution. Its base-commit build stamp is supplemented by exact working-source hashes. These checks do not close the inherited notebook failures, full floor/native Excel timeout, production behavior or whole-product grades. diff --git a/e2e/excel-grid.spec.ts b/e2e/excel-grid.spec.ts index 9fbb8a28..e9b9be57 100644 --- a/e2e/excel-grid.spec.ts +++ b/e2e/excel-grid.spec.ts @@ -130,3 +130,53 @@ test("uploaded workbook renders in the shared Sheet 1 grid, not the false Excel- await page.screenshot({ path: "test-results/uploaded-workbook-shared-grid.png", fullPage: false }); }); + +test("a reviewer reopens every visible Account label after current-sheet edits and repeated exports", async ({ page }, testInfo) => { + await page.setViewportSize({ width: 1440, height: 960 }); + const origin = new URL(String(testInfo.project.use.baseURL)).origin; + await page.route("**/*", route => { + const url = new URL(route.request().url()); + return url.origin === origin || ["data:", "blob:"].includes(url.protocol) + ? route.continue() : route.abort("blockedbyclient"); + }); + await enterDemoRoom(page); + const chat = page.getByTestId("public-chat-panel"); + await chat.getByTestId("chat-composer").fill("@nodeagent recompute the Q3 variance column"); + await chat.getByTestId("chat-send").click(); + await expect(chat.getByText("Committed r_rev +24%, r_cogs +27.5%, r_gp +21.7%, r_ni +22.4%. Lock released.", { exact: true })).toBeVisible(); + const table = page.locator('table.r-sheet[data-noderoom-surface="workSurface.sheet"]').first(); + const labels = await table.locator("tbody td.label").allTextContents(); + expect(labels).toEqual(["Revenue", "COGS", "Gross profit", "OpEx", "Net income"]); + const stableNumbers = await table.locator("tbody tr").filter({ has: page.locator("td.label") }).evaluateAll(rows => + rows.map(row => [...row.querySelectorAll("td.num .r-val-num")].map(cell => cell.textContent)), + ); + const files: string[] = []; + for (const [index, note] of ["Reviewer note: checked source", "Reviewer note: revised before handoff"].entries()) { + await page.locator('[data-cell-key="r_rev__note"] button').click(); + await page.locator("input.r-cell-input").fill(note); + await page.locator("input.r-cell-input").press("Enter"); + await expect(page.locator('[data-cell-key="r_rev__note"]')).toContainText(note); + const event = page.waitForEvent("download"); + await page.getByTestId("artifact-export-xlsx").click(); + const download = await event; + expect(await download.failure()).toBeNull(); + const file = testInfo.outputPath(`review-${index + 1}-${download.suggestedFilename()}`); + await download.saveAs(file); + files.push(file); + const reopened = new ExcelJS.Workbook(); + await reopened.xlsx.readFile(file); + const sheet = reopened.worksheets[0]; + expect(sheet.getRow(1).values).toEqual([undefined, "Account", "Q2", "Q3", "Variance", "Note"]); + expect(labels.map((_, row) => sheet.getCell(row + 2, 1).value)).toEqual(labels); + expect(labels.map((_, row) => [sheet.getCell(row + 2, 2).value, sheet.getCell(row + 2, 3).value])).toEqual(stableNumbers); + expect(sheet.getCell("D2").value).toBe("+24%"); + expect(sheet.getCell("E2").value).toBe(note); + await expect(page.getByTestId("artifact-export-xlsx-status")).toContainText("Downloaded"); + await testInfo.attach(`review-${index + 1}.xlsx`, { path: file, contentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }); + } + const first = new ExcelJS.Workbook(); + await first.xlsx.readFile(files[0]); + expect(first.worksheets[0].getCell("E2").value).toBe("Reviewer note: checked source"); + expect(await table.locator("tbody td.label").allTextContents()).toEqual(labels); + await page.screenshot({ path: testInfo.outputPath("desktop-account-current-export.png"), caret: "initial" }); +}); diff --git a/evidence/desktop-account-20260905/.gitattributes b/evidence/desktop-account-20260905/.gitattributes new file mode 100644 index 00000000..fa1385d9 --- /dev/null +++ b/evidence/desktop-account-20260905/.gitattributes @@ -0,0 +1 @@ +* -text diff --git a/evidence/desktop-account-20260905/README.md b/evidence/desktop-account-20260905/README.md new file mode 100644 index 00000000..0f9c9c6f --- /dev/null +++ b/evidence/desktop-account-20260905/README.md @@ -0,0 +1,21 @@ +# Desktop Account export evidence + +A reviewer could read five Account labels in the Q3 grid but receive blank labels in the downloaded workbook. The exporter read `__account` while the existing sheet and renderer used `__label`. Two field lookups now read the existing labels; no grid or transport redesign was needed. + +Start with the [repository handoff](../../HANDOFF.md). The [independent source judgment](review/E6f_NODEROOM_DESKTOP_ACCOUNT_FINAL_JUDGE.md.txt) accepts this bounded repair after 22 checks. The [worker receipt](review/E6f_NODEROOM_DESKTOP_ACCOUNT_REPAIR_RECEIPT.md.txt) retains the commands, early failures and final source bindings. Shared CI and integration of this desktop slice are subsequent checks; this packet is not their receipt. + +Compare the actual [before grid](operator/before/change-boundary.png) and [after grid](operator/after/change-boundary.png). Both show the five labels. The file defect is demonstrated by the actual XLSX files listed in the [copy map](raw-copy-map.json), then independently reopened through [ZIP/XML inspection](judge/independent-zip-xml.json). Exactly A2:A6 change to the labels; the other 25 values/formulas and all 30 styles, including raw styles.xml, match. Later note exports change E2 while prior files remain byte-exact. + +The normal build including root TypeScript, Convex TypeScript, design audit, ten affected scenarios and three unchanged-budget browser cases passed. Restoring only the old lookups makes both label scenarios fail. Both component cases use a typed mocked store plus a replaced browser download-dispatch boundary, while retaining the real Artifact projection and ExcelJS serializer. Only the current canonical sheet has this repair's actual memory-engine browser journey. The sibling fixture is not an uploaded-canonical-workbook browser certificate; the separate existing generic-uploaded-grid case remains a limited compatibility check. + +From the repository root, verify portable custody with Python 3 and Git: + +```powershell +python evidence/desktop-account-20260905/verify.py +``` + +The verifier checks every included payload and the four current source identities, accepting Git's declared source line-ending normalization. Packet payloads are binary-attributed and must remain raw-byte exact. It does not execute historical scripts or rerun the app. Replay the application commands in HANDOFF.md after the normal fresh installation and built-preview setup there. + +The [original inventory](original-inventory.json) lists all 133 original operator files, including seven large build archives or whole-checkout/index inventories retained only in local custody. Of those 133 files, 126 are included here. All 21 independent judge files and both worker/judge reports are also included. The independent reviewer verified the original retained-only bytes, but a fresh recipient cannot verify unavailable local archives; this verifier explicitly reports that boundary. Historical code, HTML and Markdown have inert `.txt` suffixes. Absolute paths inside historical receipts identify original custody, not portable commands. + +Evidence covers the local memory engine and bounded repeated exports, not a long-duration or multi-user load certificate. Actual matched workbooks have scalar values/strings; formula/cache/number-format behavior is covered by the component fixtures. Fallback fonts and one desktop width limit visual conclusions. One blocked external-resource console event is preserved; no zero-console claim. The base build stamp identifies merged 034a8f9, supplemented by exact uncommitted source bindings. Existing notebook failures, Windows native Excel timeout, missing nightly credential and development advisory remain open. No native Office, provider, production workbook journey, whole-product grade or human acceptance is claimed. diff --git a/evidence/desktop-account-20260905/judge/actual-head.bin b/evidence/desktop-account-20260905/judge/actual-head.bin new file mode 100644 index 00000000..72a617a6 --- /dev/null +++ b/evidence/desktop-account-20260905/judge/actual-head.bin @@ -0,0 +1,2 @@ +034a8f963dfa037d860f5364032319506be3e2e0 +8fbd0d5d0ca31a71a70c45208ba8a5fd6a64a831 diff --git a/evidence/desktop-account-20260905/judge/actual-index.bin b/evidence/desktop-account-20260905/judge/actual-index.bin new file mode 100644 index 00000000..3e34b3a1 Binary files /dev/null and b/evidence/desktop-account-20260905/judge/actual-index.bin differ diff --git a/evidence/desktop-account-20260905/judge/actual-refs.bin b/evidence/desktop-account-20260905/judge/actual-refs.bin new file mode 100644 index 00000000..6116c8a4 --- /dev/null +++ b/evidence/desktop-account-20260905/judge/actual-refs.bin @@ -0,0 +1,107 @@ +refs/codex/turn-diffs/captures/1784577718666/fd50487b-60f8-4775-a912-d706336b88d8/base 24881e0f798a3d4223078cdb56b991a2fe87e62c +refs/codex/turn-diffs/captures/1784594690139/97ba2c25-42ec-4ab0-83a5-52123669780e/base 24881e0f798a3d4223078cdb56b991a2fe87e62c +refs/codex/turn-diffs/captures/1784597946230/ee663a3e-cef1-48e8-b1b3-d15d4ca9070e/base 24881e0f798a3d4223078cdb56b991a2fe87e62c +refs/codex/turn-diffs/captures/1784614599853/245317cf-560a-4243-bb22-e8c57dbd0206/base 24881e0f798a3d4223078cdb56b991a2fe87e62c +refs/codex/turn-diffs/checkpoints/11ce1718621b8c19888f21276820eec0f806d6d21a30d5800dd595f6d41c0e4a/eb48d4aa73373414ee7aedd7a21c3e5c1ce54be4cf1928bbba288a224ff025b5/1784627460885/420ee823-6777-41fa-8090-32d6dada00af 24881e0f798a3d4223078cdb56b991a2fe87e62c +refs/codex/turn-diffs/checkpoints/6cd1e51c2dc200ebdd45b0ec705e9b21b17248e61742cb4172fa80c36ae1761e/40daa58ac95334dff03d1e10489f36667a85f9ac4c106e805c3c391f05321746/1784516846400/5ef4357d-774b-4bb3-9ad4-ddd920a5289e 5fd9ea278c6b6830008bb12c5a34194e3d397af5 +refs/codex/turn-diffs/checkpoints/9ee51a43de9735d7ab41129d8a0cc1a338fe9c54f9107d3f79c8b7cded846af3/eba81e866a7a77bacaf14d42d283db4e3d7f8381f440aa204d073655ea9af552/1784537149963/0e9870c1-1b1f-4079-b50e-4ffe5489ae81 24881e0f798a3d4223078cdb56b991a2fe87e62c +refs/codex/turn-diffs/checkpoints/c0cc4334a8defecc660a2aadaab3a1cd03a403dd78e445edbbff9593b1dee4f6/b0552934ef3d3a5098b9f6a31485d64787071514d5553a7f71327bcc674243c3/1784157400890/545c9cfa-1b3f-4563-9f83-944ba0f55ee3 a966f9d3c9c509b97c871a324d4bc4e269f5bfd5 +refs/codex/turn-diffs/checkpoints/f3944cb5dbcea3aae809641adb69e4569a1fe9a235c386cc9be6b469a245867b/f692d67644f958ada4ea4e62dc80f55892dc85e5403741c100cdde0bb2548c7f/1784259268834/c2a7e86e-5f64-4414-ad58-13bde2ea67d6 af0bb99f6215ddf5777d6cbe9d55bfccb32f414e +refs/heads/codex/noderoom-current-consumer-20260905 3576237259535dbcddb5faa0925e4c5a0ceb8979 +refs/heads/codex/noderoom-desktop-account-20260905 034a8f963dfa037d860f5364032319506be3e2e0 +refs/heads/demo/motion-landing 558460c874e98a816e90f5077b266e1a84955a13 +refs/heads/demo/plain-words-copy 558460c874e98a816e90f5077b266e1a84955a13 +refs/heads/main 2b3e5bd718b80747f32257a8b8af5f15e2310699 +refs/remotes/origin/claude/brave-einstein-e177ab 3bc04193ff8da20ece7fb70168b80aea83e59b14 +refs/remotes/origin/claude/charming-lumiere-1a943f 156485e04f5bcecca0944560f1decad8cc4620fe +refs/remotes/origin/claude/crazy-wilson-89b3a4 2085c572042d8f9324d13e01cec2a0ba1f4acd0b +refs/remotes/origin/claude/inspiring-newton-187f71 c74a2fcc38d1d2ee46e8a301fac61e041b8ab28b +refs/remotes/origin/claude/magical-yonath-86a48c 9d96ed02247311c9972b0756dbb8901fa03dbeb0 +refs/remotes/origin/claude/notebook-deploy-follow 126b8fa2518a99437128a2c56b6bd3d7b8341e34 +refs/remotes/origin/claude/notebook-pickups 95095a58197aca3203847466f9d27b33c2c5339f +refs/remotes/origin/cleanup/ui-legacy-wave1 045101fd5df91b3a063fb996691df508ecff48ee +refs/remotes/origin/codex/always-on-design-honesty 3eb7b40287508553a9d5f2ec71c4446c9bda4d74 +refs/remotes/origin/codex/always-on-responsive-analysis 6e06283e0f7a104758058c12d5ca38b86ad63944 +refs/remotes/origin/codex/casca-fde-evidence-package 82e149427bedb573ec62137364c6851596c67e73 +refs/remotes/origin/codex/design-parity-proof 33b77628133146c5b6a1385d014ad18382fdf2e5 +refs/remotes/origin/codex/design-ui-contract 84152051661afd3d8c023195d74f5fae3ed0c480 +refs/remotes/origin/codex/finalize-remaining bd3881dfe452d43280d5dfbdcd09b05e01150860 +refs/remotes/origin/codex/finish-all-remaining bd3881dfe452d43280d5dfbdcd09b05e01150860 +refs/remotes/origin/codex/free-proxy-all-night bcbd28c50367e77ad8b24c09a933159bb50b862c +refs/remotes/origin/codex/full-proxy-benchmark-sweep a9c47b56d5faf5d920be117238421502a020161f +refs/remotes/origin/codex/hackwithbay-3.0 387a924c5880eece5ad477c29df4b6166e5b19d6 +refs/remotes/origin/codex/i7-mounted-browser-proof f40f48aebd9fb213df52fdbaf50711a7e2714736 +refs/remotes/origin/codex/live-first-user-ai-elements d2ed30438a486855a70baf3e042cbc7b804a41e8 +refs/remotes/origin/codex/live-starter-room-main c9bb8aec5ab23c554dc6899d043681f8de553a06 +refs/remotes/origin/codex/mobile-terracotta-launch 77757c42a9783072efca1317ef85789557dfea3f +refs/remotes/origin/codex/model-picker-cleanup 41b6e0ebb0a5fe8b7c27d8f3ca2acf94a4f092eb +refs/remotes/origin/codex/model-picker-polish 814a27ab8d1bc94afb4c1ff3164218d17d940299 +refs/remotes/origin/codex/nodeagent-prod-route-evidence e985074a4cc347bb52592b58ea65ea6f3411e53c +refs/remotes/origin/codex/nodekit-caseflow-consumer bf1c905bebf18e1f758e8d1abe5caa1c98662242 +refs/remotes/origin/codex/nodekit-contract-alignment a4998c91ca04670adddc26b80551f415c3f195ce +refs/remotes/origin/codex/nodekit-contract-reconcile 65f8cfe4b2bd0c3665e7d111ce3e9e1b0df702d4 +refs/remotes/origin/codex/noderoom-current-consumer-20260905 3576237259535dbcddb5faa0925e4c5a0ceb8979 +refs/remotes/origin/codex/noderoom-smb-lending 985afeb2f48ee6bd70d7958163adf86ce276b90f +refs/remotes/origin/codex/noderoom-smb-lending-convex 5032ec91076488dea48bb1f4f18b32961184455d +refs/remotes/origin/codex/noderoom-smb-lending-production-proof 3a8f4209893e80104aef793149496542369a080d +refs/remotes/origin/codex/noderoom-split-before-rebase caadbf93df3e51610a3e2761f02e0b898211cd2b +refs/remotes/origin/codex/nodeslide-consumer-contract b79623349eb8aaf321ca53a3b68788862ed3ca80 +refs/remotes/origin/codex/nodeslide-consumer-proof 2cced7395df623392c8692b40cdad791f5a1cf4d +refs/remotes/origin/codex/nodeslide-v0.2.2 cfe8069ead0cc637f6f7de908b05b95be302e1d9 +refs/remotes/origin/codex/nodeslide-v0.2.2-bind 1c7a3101464cbab6a8768142d8bde46779da8221 +refs/remotes/origin/codex/non-memory-live-proof 80f8ee7a6f8deab1099192b6739a5820ddcf72b9 +refs/remotes/origin/codex/non-memory-prod-proof-evidence 527918a4b08751814fac2d16c1f204e037c3e349 +refs/remotes/origin/codex/notebook-read-model-kernel dce4e3bfa6f51e9bebebce59ef2767cd10f8bdb2 +refs/remotes/origin/codex/prod-convex-deploy 15d8beaf910d1bac76add8368518663cb36678a4 +refs/remotes/origin/codex/prod-proxy-benchmark-runner 86bd2e28d8398d94c91e8658cc0e32c4e12a06b4 +refs/remotes/origin/codex/prod-proxy-matrix-public 0a006fe47a744477e4710af8ce5257fed4d095d2 +refs/remotes/origin/codex/prod-walkthrough-copy 3925d18329906ebace6a00a02e0a16cf464d773b +refs/remotes/origin/codex/product-hunt-readiness 029906739a9b0e903b7627b363364eaff7ab9653 +refs/remotes/origin/codex/proofloop-adapter-blocker-receipts 4cf02535746f8ba2c532f0dadd18098a50fb7c3c +refs/remotes/origin/codex/proofloop-agent-friendly-cli 92fc5bee801638caa4cca342d19f7903cc63c2a1 +refs/remotes/origin/codex/proofloop-astryx-setup-complete b8ee36a4dfb55ef614c0e7626a0d13024383d9b7 +refs/remotes/origin/codex/proofloop-auth-boundary 25cd1e642cc523746cba8d165beed24411d4da22 +refs/remotes/origin/codex/proofloop-benchmark-separation 9182995517fa9fb4529d69641b9e199bebc7e7f5 +refs/remotes/origin/codex/proofloop-blocker-solver a4da2ece549c520db59196cb3787737c2dc7c557 +refs/remotes/origin/codex/proofloop-company-harness-economics c2d8b542a51b4331feae96ae120d503cf3026e19 +refs/remotes/origin/codex/proofloop-local-adapter-proofs 0a756f10a51d39dffc4e334db31f38b766736d5d +refs/remotes/origin/codex/proofloop-longrun-budgeted-matrix 813b4bf95cb8b1cdfb2d5c448a31857188771adb +refs/remotes/origin/codex/proofloop-loop-contracts 28ae67749cffe9d68a918faaae3f132be1b9dd12 +refs/remotes/origin/codex/proofloop-normalized-benchmark-ir 979bfe8c8121c844ee619ead7d4f8a20c0dea92e +refs/remotes/origin/codex/proofloop-official-score-scorers e5ed572a2c9275818a093ddd6f48ec9a12b79268 +refs/remotes/origin/codex/proofloop-orchestrator-v1 1b9eaf584ba73d8d65ba2566e37b6c44b8e8ef37 +refs/remotes/origin/codex/proofloop-prod-classifier 9eb2b502c94f3c90cfdf8463be95fb6da9bdcd14 +refs/remotes/origin/codex/proofloop-strict-live-official 81f86c6ed17f472239799fc05d42c5ce4249bf60 +refs/remotes/origin/codex/proofloop-supervisor-governance 706f7bc6fac2649a4e973316495d9c11526fc6b1 +refs/remotes/origin/codex/remediate-npm-audit 4fd2671454674de391da51808f2440f53dbd70b0 +refs/remotes/origin/codex/rocketride-execution-port 353ddcce5b4ee791c4a0d70713a47ab302a643b9 +refs/remotes/origin/codex/two-layer-proofloop-orchestration 85d47a13cd5c70ee5c8e5380b1c7ad950c44a8e8 +refs/remotes/origin/codex/vitest-audit dd28283e8e9abe9632ec069804ba892cfd0aaae7 +refs/remotes/origin/codex/workbook-identifier-reference-fix a40746b7b3bc2f79782adabe08d6e220ef446c23 +refs/remotes/origin/demo/plain-words-copy 558460c874e98a816e90f5077b266e1a84955a13 +refs/remotes/origin/design/clean-room-parity 2a28b3a8a4130947190c26f7ff84e50e8b24e2f1 +refs/remotes/origin/feat/attention-overlay 5f0c738cfdf810f80ae6005b5dd2e93e67c7ac42 +refs/remotes/origin/feat/nodekit-note-reference-receipts 34d5a16181c8d447a91f39f96670319e6234bf53 +refs/remotes/origin/feat/nodekit-opportunity-contract 70c02b7b456d1f5126bc42732f2370b57b91509f +refs/remotes/origin/feat/note-surface-dna a161cec872b1e0c80535774713c0b0c545923f70 +refs/remotes/origin/fix/gitignore-deploy-secrets 69f168f7c559a44977d2ea8a53f04b16a59a2484 +refs/remotes/origin/main 034a8f963dfa037d860f5364032319506be3e2e0 +refs/remotes/origin/notebook-pickups/main a6b78041ebf1f10af3020d29e8d7199dd36e04a4 +refs/remotes/origin/parity-recheck 839d2bdd1962f8051f7157bcc8e55bda5df4b1a1 +refs/remotes/origin/parity-wave1 04e9818653800a9860f2b09ff65d8ad898f2c4a6 +refs/remotes/origin/parity-wave2 8d840b5cdeb3f04beb09ecd8d6d01c74941f5ce0 +refs/remotes/origin/parity-wave3 27d5e8c9acf800a39f94c99f80c2130cad508732 +refs/remotes/origin/preserve/fleet-routing-fix-wip-20260706b 086118261799ccdd63ce040872f9dc7cd8e5d614 +refs/remotes/origin/preserve/fleet-underwriting-wip-20260706 1e5cc4fbfc075b222c30fd2c8e845d37d4018882 +refs/remotes/origin/preserved/finish-all-remaining-20260803 56e24f4c107985a484b5337322c7022103058208 +refs/remotes/origin/preserved/noderoom-smb-lending-20260803 985afeb2f48ee6bd70d7958163adf86ce276b90f +refs/remotes/origin/ship-wave4 f3a417d9c5b13bf2cb714435483639b2c7ca9e4b +refs/remotes/origin/visual/motion-landing 13d9ef8a0926c7329326fcdb0044f4bacbef5338 +refs/remotes/origin/walkthrough-notebook e0f894dd9d6c43f4d2ff9a1cb48055f2e46f24c8 +refs/remotes/origin/wave3-human-ready d022d42d3c9b529779d6a922ae2e191f8bbb2c87 +refs/remotes/origin/wip/full-tree-backup-20260717 018b454c19d996a14d0a3d0d07d7ef3c201b2975 +refs/remotes/pr/109 9b94918547614f8f07d05a396a5534dd0b67b4f7 +refs/remotes/pr/113 0ac1179be64e0bb23036439c54d7f140b5280687 +refs/remotes/pr/126 b36ede4c84be303ee60bcf81b4d40bb808c41709 +refs/remotes/pr/127 3c022bfcb03ace1d8027925c49dd2ebff29831d5 +refs/stash 383529bc53245247d46720652dfd047242d79be3 diff --git a/evidence/desktop-account-20260905/judge/actual-source.diff b/evidence/desktop-account-20260905/judge/actual-source.diff new file mode 100644 index 00000000..d253c442 --- /dev/null +++ b/evidence/desktop-account-20260905/judge/actual-source.diff @@ -0,0 +1,244 @@ +diff --git a/HANDOFF.md b/HANDOFF.md +index 3b3cecec..49706cb1 100644 +--- a/HANDOFF.md ++++ b/HANDOFF.md +@@ -61,16 +61,33 @@ npx playwright test e2e/mobile-sample-workbook-export.spec.ts --workers=1 --retr + + The scenario writes exact source hashes, HTML, pixels, console observations and reopened downloads to the configured Playwright output directory. It blocks external requests and uses fallback fonts. Preserve that output before another run. The default browser output path is local test evidence, not a deployment or public certificate. + +-Historical mobile-freeze holds: its baseline full dependency audit had 29 findings (28 moderate, one development high), and the production subset had 28 moderate findings. That export-only freeze kept the lock unchanged. The later dependency candidate and its current audit/mounted status are described below; these historical receipts are not rewritten. Gemini nightly still lacks its required credential. The old desktop XLSX projection exports blank Account cells despite visible Revenue/COGS labels; this extraction preserves that behavior and does not certify desktop data completeness. Current instructions reference two absent mobile design documents. The inherited half-height mobile dialog requires scrolling; enlarged navigation tabs have reading limitations and transient edit toasts overlap early outcomes. Full visual, responsive, accessibility, performance, provider and production grades remain unassigned. ++Historical mobile-freeze holds: its baseline full dependency audit had 29 findings (28 moderate, one development high), and the production subset had 28 moderate findings. That export-only freeze kept the lock unchanged. The later dependency candidate and its current audit/mounted status are described below; these historical receipts are not rewritten. Gemini nightly still lacks its required credential. The old desktop XLSX projection exported blank Account cells despite visible Revenue/COGS labels; the mobile extraction preserved that behavior and did not certify desktop data completeness. The separate Account repair below addresses those two lookups. Current instructions reference two absent mobile design documents. The inherited half-height mobile dialog requires scrolling; enlarged navigation tabs have reading limitations and transient edit toasts overlap early outcomes. Full visual, responsive, accessibility, performance, provider and production grades remain unassigned. + + The retained proof used no provider call, shared backend change, hook activation, original environment read or production deployment. Old branches and dirty worktrees remain preserved. + +-## Current dependency repair, local review accepted ++## Dependency repair, reviewed and merged + +-Read the [dependency proof and fresh commands](evidence/shared-dependencies-20260905/README.md) after this handoff. The [independent judgment](evidence/shared-dependencies-20260905/review/E6f_NODEROOM_SHARED_DEPENDENCY_FINAL_JUDGE.md) accepts this local dependency scope. The [encoding addendum](evidence/shared-dependencies-20260905/review/E6f_NODEROOM_DEPENDENCY_PACKAGE_ENCODING_ADDENDUM.md) explains why the final package spelling differs from the earlier raw worker hash. Shared integration is still pending. It restores the two exact NodeSlide file pins required by the immutable release contract and upgrades the coherent 30-package Tiptap cohort to 3.30.4, with only its required ProseMirror model/view minimums. All other lock rows and the nested uuid 14.0.1 remain unchanged. ++Read the [dependency proof and fresh commands](evidence/shared-dependencies-20260905/README.md) after this handoff. The [independent judgment](evidence/shared-dependencies-20260905/review/E6f_NODEROOM_SHARED_DEPENDENCY_FINAL_JUDGE.md) accepts this local dependency scope. The [encoding addendum](evidence/shared-dependencies-20260905/review/E6f_NODEROOM_DEPENDENCY_PACKAGE_ENCODING_ADDENDUM.md) explains why the final package spelling differs from the earlier raw worker hash. [PR 252](https://github.com/HomenShum/NodeRoom/pull/252) merged normally at `034a8f963dfa037d860f5364032319506be3e2e0` after independent review and the premerge shared gates. It restores the two exact NodeSlide file pins required by the immutable release contract and upgrades the coherent 30-package Tiptap cohort to 3.30.4, with only its required ProseMirror model/view minimums. All other lock rows and the nested uuid 14.0.1 remain unchanged. + + Normal install, the unchanged fresh mounted consumer, 51 notebook/export scenarios, both TypeScript checks, build and 29 unchanged memory browser cases passed. The production audit now has zero findings; full audit retains one high development-only Browserslist finding. The real installed library prototype canary changes from 1,025 unsafe before cases to zero after, without claiming a NodeRoom exploit or executed browser handler. + + The dedicated notebook provenance browser spec remains unresolved: 3/3 failed on both preserved old and new built output, and only the 375 px failure matched exactly. Different artifact selection/steps at desktop and 320 px prevent a no-regression claim. All six screenshots/traces and original assertions are retained. This candidate has no notebook UI repair or full visual grade. + +-The unchanged full shared gates and actual new-commit check are still required before integration; the historical de9 commit-message failure remains. The Windows native Office deadline, absent nightly credential and separately planned desktop Account-label repair are open. Current dependency proof does not replace the original mobile export source/lock bindings or authorize a deployment. ++The historical de9 commit-message failure remains recorded; published history was not rewritten. The Windows native Office deadline and absent nightly credential remain open. The merged dependency proof does not replace the original mobile export source/lock bindings or certify a deployment. ++ ++## Desktop Account export, awaiting independent review ++ ++A reviewer could see Revenue, COGS, Gross profit, OpEx and Net income in the desktop Q3 variance grid but receive five blank Account cells in the downloaded workbook. Both canonical export branches read `__account`; the existing seed and renderer store those values as `__label`. This candidate changes only those two field lookups. It preserves the visible grid, mobile projection, shared download transport and generic uploaded-workbook behavior. ++ ++From the fresh local entry above, open `?mode=memory&surface=desktop`, enter the sample room and dismiss its walkthrough. In Room chat, send `@nodeagent recompute the Q3 variance column`. Wait for the committed variance response, edit the Revenue note, then select **Export XLSX**. The downloaded workbook must contain all five visible Account labels. Edit the note again and export a second file; the new file must contain the later note while the first file remains unchanged. ++ ++The source-bound worker proof on merged `034a8f9` passed the normal build, the Convex TypeScript check, design audit, ten affected workbook/dialog scenarios and all three existing-plus-new `excel-grid` browser cases with the unchanged 30-second test budget. Current- and sibling-sheet component scenarios reopen eight serialized workbooks across repeated edits and duplicate activation. Temporarily restoring only the two old lookups makes both label scenarios fail; the exact repaired bytes were restored before the final proof. The actual 1440 px desktop journey saved two XLSX files: all five Account cells match the grid, the other 25 cells and all 30 cell styles match the preserved baseline, and the later note does not alter the earlier file. The sibling-sheet case is a typed component/store fixture, not a browser-certified uploaded canonical workbook. ++ ++After installing Chromium and starting the built preview as above, replay the affected checks in the second terminal: ++ ++```powershell ++npx vitest run tests/artifactXlsxExport.test.ts tests/mobileSampleWorkbookExport.test.ts tests/mobileSheetDialog.test.tsx ++npx playwright test e2e/excel-grid.spec.ts --output test-results/desktop-account ++``` ++ ++Keep the three `PLAYWRIGHT_*` variables shown above so the browser uses that built preview. Preserve the output before another run; one unchanged uploaded-grid scenario also writes `test-results/uploaded-workbook-shared-grid.png`. The new Account scenario retains both downloaded workbooks and its screenshot. The matched before/after source, grid, PNG, XLSX and raw failure records are retained in the operator packet `E6f-noderoom-desktop-account-repair-01`, pending independent review and portable publication. The browser proof used fallback fonts and the memory engine, with no provider or native Office execution. Its base-commit build stamp is supplemented by exact working-source hashes. These checks do not close the inherited notebook failures, full floor/native Excel timeout, production behavior or whole-product grades. +diff --git a/e2e/excel-grid.spec.ts b/e2e/excel-grid.spec.ts +index 9fbb8a28..e9b9be57 100644 +--- a/e2e/excel-grid.spec.ts ++++ b/e2e/excel-grid.spec.ts +@@ -130,3 +130,53 @@ test("uploaded workbook renders in the shared Sheet 1 grid, not the false Excel- + + await page.screenshot({ path: "test-results/uploaded-workbook-shared-grid.png", fullPage: false }); + }); ++ ++test("a reviewer reopens every visible Account label after current-sheet edits and repeated exports", async ({ page }, testInfo) => { ++ await page.setViewportSize({ width: 1440, height: 960 }); ++ const origin = new URL(String(testInfo.project.use.baseURL)).origin; ++ await page.route("**/*", route => { ++ const url = new URL(route.request().url()); ++ return url.origin === origin || ["data:", "blob:"].includes(url.protocol) ++ ? route.continue() : route.abort("blockedbyclient"); ++ }); ++ await enterDemoRoom(page); ++ const chat = page.getByTestId("public-chat-panel"); ++ await chat.getByTestId("chat-composer").fill("@nodeagent recompute the Q3 variance column"); ++ await chat.getByTestId("chat-send").click(); ++ await expect(chat.getByText("Committed r_rev +24%, r_cogs +27.5%, r_gp +21.7%, r_ni +22.4%. Lock released.", { exact: true })).toBeVisible(); ++ const table = page.locator('table.r-sheet[data-noderoom-surface="workSurface.sheet"]').first(); ++ const labels = await table.locator("tbody td.label").allTextContents(); ++ expect(labels).toEqual(["Revenue", "COGS", "Gross profit", "OpEx", "Net income"]); ++ const stableNumbers = await table.locator("tbody tr").filter({ has: page.locator("td.label") }).evaluateAll(rows => ++ rows.map(row => [...row.querySelectorAll("td.num .r-val-num")].map(cell => cell.textContent)), ++ ); ++ const files: string[] = []; ++ for (const [index, note] of ["Reviewer note: checked source", "Reviewer note: revised before handoff"].entries()) { ++ await page.locator('[data-cell-key="r_rev__note"] button').click(); ++ await page.locator("input.r-cell-input").fill(note); ++ await page.locator("input.r-cell-input").press("Enter"); ++ await expect(page.locator('[data-cell-key="r_rev__note"]')).toContainText(note); ++ const event = page.waitForEvent("download"); ++ await page.getByTestId("artifact-export-xlsx").click(); ++ const download = await event; ++ expect(await download.failure()).toBeNull(); ++ const file = testInfo.outputPath(`review-${index + 1}-${download.suggestedFilename()}`); ++ await download.saveAs(file); ++ files.push(file); ++ const reopened = new ExcelJS.Workbook(); ++ await reopened.xlsx.readFile(file); ++ const sheet = reopened.worksheets[0]; ++ expect(sheet.getRow(1).values).toEqual([undefined, "Account", "Q2", "Q3", "Variance", "Note"]); ++ expect(labels.map((_, row) => sheet.getCell(row + 2, 1).value)).toEqual(labels); ++ expect(labels.map((_, row) => [sheet.getCell(row + 2, 2).value, sheet.getCell(row + 2, 3).value])).toEqual(stableNumbers); ++ expect(sheet.getCell("D2").value).toBe("+24%"); ++ expect(sheet.getCell("E2").value).toBe(note); ++ await expect(page.getByTestId("artifact-export-xlsx-status")).toContainText("Downloaded"); ++ await testInfo.attach(`review-${index + 1}.xlsx`, { path: file, contentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }); ++ } ++ const first = new ExcelJS.Workbook(); ++ await first.xlsx.readFile(files[0]); ++ expect(first.worksheets[0].getCell("E2").value).toBe("Reviewer note: checked source"); ++ expect(await table.locator("tbody td.label").allTextContents()).toEqual(labels); ++ await page.screenshot({ path: testInfo.outputPath("desktop-account-current-export.png"), caret: "initial" }); ++}); +diff --git a/src/ui/panels/Artifact.tsx b/src/ui/panels/Artifact.tsx +index 74c90f35..37dac53c 100644 +--- a/src/ui/panels/Artifact.tsx ++++ b/src/ui/panels/Artifact.tsx +@@ -2458,7 +2458,7 @@ async function exportSheetAsXlsx(art: Art, visibleRoot?: HTMLElement | null, all + appendExportRow(worksheet, ["Account", "Q2", "Q3", "Variance", "Note"]); + for (const rid of rows) { + appendExportRow(worksheet, [ +- art.elements[`${rid}__account`]?.value, ++ art.elements[`${rid}__label`]?.value, + art.elements[`${rid}__q2`]?.value, + art.elements[`${rid}__q3`]?.value, + art.elements[`${rid}__variance`]?.value, +@@ -2553,7 +2553,7 @@ function appendSheetArtifactWorksheet( + appendExportRow(worksheet, ["Account", "Q2", "Q3", "Variance", "Note"]); + for (const rid of rows) { + appendExportRow(worksheet, [ +- art.elements[`${rid}__account`]?.value, ++ art.elements[`${rid}__label`]?.value, + art.elements[`${rid}__q2`]?.value, + art.elements[`${rid}__q3`]?.value, + art.elements[`${rid}__variance`]?.value, +diff --git a/tests/artifactXlsxExport.test.ts b/tests/artifactXlsxExport.test.ts +index 452d795d..424266f4 100644 +--- a/tests/artifactXlsxExport.test.ts ++++ b/tests/artifactXlsxExport.test.ts +@@ -1,7 +1,27 @@ ++// @vitest-environment jsdom + import ExcelJS from "exceljs"; +-import { describe, expect, it } from "vitest"; +-import type { Artifact } from "../src/engine/types"; +-import { applyExportCell, exportCellValue, spreadsheetCellFontColorCss } from "../src/ui/panels/Artifact"; ++import { createElement } from "react"; ++import { fireEvent, render, screen, waitFor } from "@testing-library/react"; ++import { describe, expect, it, vi } from "vitest"; ++import type { Actor, Artifact } from "../src/engine/types"; ++import { SHEET_ROWS } from "../src/engine/demoRoom"; ++ ++const exportFixture = vi.hoisted(() => ({ ++ store: {} as Record, ++ bytes: [] as ArrayBuffer[], ++})); ++vi.mock("../src/app/store", () => ({ useStore: () => exportFixture.store })); ++// Keep the real component projection and ExcelJS serialization. Only replace browser dispatch; ++// the companion browser scenario saves and reopens the actual downloaded file. ++vi.mock("../src/ui/workArtifacts/xlsxDownload", () => ({ ++ downloadXlsxWorkbook: async (workbook: ExcelJS.Workbook, fileName: string, rowCount: number) => { ++ const bytes = await workbook.xlsx.writeBuffer(); ++ exportFixture.bytes.push(bytes); ++ return { fileName, rowCount, sheetCount: workbook.worksheets.length, byteCount: bytes.byteLength, at: "test" }; ++ }, ++})); ++ ++import { Artifact as ArtifactPanel, applyExportCell, exportCellValue, spreadsheetCellFontColorCss } from "../src/ui/panels/Artifact"; + + describe("NodeRoom XLSX cell export", () => { + it("preserves a managed formula, cached result, and number format after reopen", async () => { +@@ -85,4 +105,86 @@ describe("NodeRoom XLSX cell export", () => { + expect(spreadsheetCellFontColorCss(artifact, "A1")).toBe("#11223380"); + expect(spreadsheetCellFontColorCss(artifact, "A2")).toBe("#AABBCC"); + }); ++ ++ it.each(["current sheet", "sibling sheet"] as const)("keeps Account labels through repeated reviewer exports of the %s", async (surface) => { ++ const actor: Actor = { kind: "user", id: "reviewer", name: "Reviewer" }; ++ const canonical: Artifact = { ++ id: "variance", roomId: "review-room", title: "Q3 variance", kind: "sheet", ++ version: 1, updatedAt: 1, order: [], elements: {}, ++ }; ++ const rowIds = SHEET_ROWS.map((row, index) => surface === "current sheet" ? row.id : String(index + 1)); ++ SHEET_ROWS.forEach((row, index) => { ++ const values = { label: row.label, q2: row.q2, q3: row.q3, ++ variance: { value: 0.24, formula: "=C2/B2-1", numFmt: "0.0%" }, note: "Initial review" }; ++ for (const [column, value] of Object.entries(values)) { ++ const id = `${rowIds[index]}__${column}`; ++ canonical.order.push(id); ++ canonical.elements[id] = { id, value, version: 1, updatedAt: 1, updatedBy: actor }; ++ } ++ }); ++ const summary: Artifact = { ++ id: "summary", roomId: canonical.roomId, title: "Summary", kind: "sheet", ++ version: 1, updatedAt: 1, order: ["A1", "B1"], ++ elements: { ++ A1: { id: "A1", value: { value: "Review workbook" }, version: 1, updatedAt: 1, updatedBy: actor }, ++ B1: { id: "B1", value: { value: 2, formula: "=1+1", numFmt: "0.00" }, version: 1, updatedAt: 1, updatedBy: actor }, ++ }, ++ }; ++ if (surface === "sibling sheet") { ++ // Existing multi-sheet metadata supplies numeric row IDs. The active generic sheet and ++ // its canonical sibling must both survive the same workbook-export action. ++ for (const art of [summary, canonical]) art.meta = { ++ upload: { fileName: "review.xlsx", mimeType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", size: 1, parsedAt: 1 }, ++ excelGrid: { sourceFile: "review.xlsx", sheetName: art.title, sheetNames: ["Summary", "Q3 variance"], parser: "exceljs:xlsx-grid", rows: art === canonical ? 5 : 1, columns: art === canonical ? 5 : 2 }, ++ }; ++ summary.meta!.dataframe = { ++ rowCount: 1, columns: ["A", "B"].map((id, order) => ({ id, label: id, order })), ++ }; ++ } ++ const artifacts = surface === "current sheet" ? [canonical] : [summary, canonical]; ++ exportFixture.bytes = []; ++ exportFixture.store = { ++ mode: "engine", listArtifacts: () => artifacts, getArtifact: (id: string) => artifacts.find(art => art.id === id), ++ listMessages: () => [], listProposals: () => [], listTraces: () => [], listDrafts: () => [], ++ listMembers: () => [{ id: actor.id, actor, role: "host" }], listSessions: () => [], listPresence: () => [], ++ lockFor: () => null, canUndo: () => false, updatePresence: () => undefined, clearPresence: () => undefined, ++ getRoom: () => ({ id: canonical.roomId, title: "Review room" }), ++ lastRun: () => null, lastLongFreeJob: () => null, lastLongFreeJobAttempts: () => [], lastLongFreeJobDetail: () => null, ++ }; ++ const props = { roomId: canonical.roomId, me: actor, artId: artifacts[0].id, onArt: vi.fn() }; ++ const view = render(createElement(ArtifactPanel, props)); ++ if (surface === "current sheet") { ++ expect([...view.container.querySelectorAll("td.label")].map(cell => cell.textContent)).toEqual(SHEET_ROWS.map(row => row.label)); ++ } ++ for (let revision = 1; revision <= 4; revision++) { ++ const note = `Reviewer revision ${revision}`; ++ canonical.elements[`${rowIds[0]}__note`].value = note; ++ canonical.elements[`${rowIds[0]}__note`].version = revision; ++ view.rerender(createElement(ArtifactPanel, props)); ++ const button = screen.getByTestId("artifact-export-xlsx"); ++ fireEvent.click(button); ++ fireEvent.click(button); // Ordinary burst against the disabled current action starts once. ++ await waitFor(() => expect(exportFixture.bytes).toHaveLength(revision)); ++ await waitFor(() => expect((button as HTMLButtonElement).disabled).toBe(false)); ++ const reopened = new ExcelJS.Workbook(); ++ await reopened.xlsx.load(exportFixture.bytes[revision - 1]); ++ const sheet = reopened.getWorksheet("Q3 variance")!; ++ expect(SHEET_ROWS.map((_, index) => sheet.getCell(index + 2, 1).value)).toEqual(SHEET_ROWS.map(row => row.label)); ++ expect(sheet.getCell("B2").value).toBe(SHEET_ROWS[0].q2); ++ expect(sheet.getCell("C2").value).toBe(SHEET_ROWS[0].q3); ++ expect(sheet.getCell("D2").formula).toBe("C2/B2-1"); ++ expect(sheet.getCell("D2").result).toBe(0.24); ++ expect(sheet.getCell("D2").numFmt).toBe("0.0%"); ++ expect(sheet.getCell("E2").value).toBe(note); ++ if (surface === "sibling sheet") { ++ expect(reopened.getWorksheet("Summary")!.getCell("A1").value).toBe("Review workbook"); ++ expect(reopened.getWorksheet("Summary")!.getCell("B1").formula).toBe("1+1"); ++ expect(reopened.getWorksheet("Summary")!.getCell("B1").result).toBe(2); ++ expect(reopened.getWorksheet("Summary")!.getCell("B1").numFmt).toBe("0.00"); ++ } ++ } ++ const first = new ExcelJS.Workbook(); ++ await first.xlsx.load(exportFixture.bytes[0]); ++ expect(first.getWorksheet("Q3 variance")!.getCell("E2").value).toBe("Reviewer revision 1"); ++ }); + }); diff --git a/evidence/desktop-account-20260905/judge/actual-status.txt b/evidence/desktop-account-20260905/judge/actual-status.txt new file mode 100644 index 00000000..59351f98 --- /dev/null +++ b/evidence/desktop-account-20260905/judge/actual-status.txt @@ -0,0 +1,4 @@ + M HANDOFF.md + M e2e/excel-grid.spec.ts + M src/ui/panels/Artifact.tsx + M tests/artifactXlsxExport.test.ts diff --git a/evidence/desktop-account-20260905/judge/actual-worktrees.bin b/evidence/desktop-account-20260905/judge/actual-worktrees.bin new file mode 100644 index 00000000..014d6a2d --- /dev/null +++ b/evidence/desktop-account-20260905/judge/actual-worktrees.bin @@ -0,0 +1,16 @@ +worktree D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/noderoom +HEAD 2b3e5bd718b80747f32257a8b8af5f15e2310699 +branch refs/heads/main + +worktree C:/Users/hshum/AppData/Local/Temp/claude/D--VSCode-Projects-cafecorner-nodebench-nodebench-ai4-node-platform/f7b21934-d259-4766-82d4-3607f84fcbbe/scratchpad/noderoom-copy +HEAD 558460c874e98a816e90f5077b266e1a84955a13 +branch refs/heads/demo/plain-words-copy + +worktree C:/Users/hshum/AppData/Local/Temp/claude/D--VSCode-Projects-cafecorner-nodebench-nodebench-ai4-node-platform/f7b21934-d259-4766-82d4-3607f84fcbbe/scratchpad/noderoom-motion +HEAD 558460c874e98a816e90f5077b266e1a84955a13 +branch refs/heads/demo/motion-landing + +worktree D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905 +HEAD 034a8f963dfa037d860f5364032319506be3e2e0 +branch refs/heads/codex/noderoom-desktop-account-20260905 + diff --git a/evidence/desktop-account-20260905/judge/artifact-bindings.json b/evidence/desktop-account-20260905/judge/artifact-bindings.json new file mode 100644 index 00000000..f94aef03 --- /dev/null +++ b/evidence/desktop-account-20260905/judge/artifact-bindings.json @@ -0,0 +1,794 @@ +[ + { + "path": "account-browser-suite.command.json", + "bytes": 862, + "sha256": "f8f8c8249304267c5359245c96b25f81714f87da259c15aa800f8f532ba87be1", + "gitBlobSha1": "0f8c0dd2458b9cd7c7fde9fcbf1449650dc5af4c" + }, + { + "path": "account-browser-suite.log", + "bytes": 821, + "sha256": "53e6dd4281f42e819f68a92e4a2bfad6bf1545f6d52dd05672f10eb81fa8250a", + "gitBlobSha1": "ba1ebfca9014ec413acf10ae8cb5ca5293261aea" + }, + { + "path": "account-convex-typecheck.command.json", + "bytes": 950, + "sha256": "cd281e6ec1bdefe7190785f003366e1ea9a0421cc6459c0dd7750cf8701ba300", + "gitBlobSha1": "22c63dd9ecc4454aa15459baf2722d559101b11c" + }, + { + "path": "account-convex-typecheck.log", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "gitBlobSha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" + }, + { + "path": "account-design-audit.command.json", + "bytes": 734, + "sha256": "b4b6cea4dfcbba7f507080e1e50b86e052581a62c70b05a411bf83d748c2412c", + "gitBlobSha1": "81f80189a2defc38b315f2ff13ae9d7d08a408b6" + }, + { + "path": "account-design-audit.log", + "bytes": 5304, + "sha256": "3845700737cf617d4d35a4577c200b03148a660ed3490f7d0f038c688fa05dde", + "gitBlobSha1": "e2392f8e7632fe11ad3c7c79595c303f4165b4d5" + }, + { + "path": "account-final-build.command.json", + "bytes": 727, + "sha256": "1bf2f5aeb4fd1663ed5bb452bad53966fc4ca656e1d587a64b35a77874b66213", + "gitBlobSha1": "29e4858825ef10f1145720c9e2c920ea199ef690" + }, + { + "path": "account-final-build.log", + "bytes": 37879, + "sha256": "fd4d6fa4c2181f3e6dd0a57a121a9b04db3d180a17fe3ab58b4b2507ef64349c", + "gitBlobSha1": "28c74921552921b367ca2a9570630b8ad7aa67d5" + }, + { + "path": "account-final-fixture-knockout.command.json", + "bytes": 790, + "sha256": "37af593e401cba60e5088fe8c0611df04e4c45e5905dd5c878c0db62ca7beb68", + "gitBlobSha1": "0b4c961785e4f5128dfef98e9ba3d68479e48eb9" + }, + { + "path": "account-final-fixture-knockout.log", + "bytes": 1857, + "sha256": "b9b304b0456a20254297a859845f2e78911afc2f2b3e61f7719da0f0c64e854c", + "gitBlobSha1": "667141c73d3ae3380e8b1a7af8f9b844084f4dd1" + }, + { + "path": "account-final-scenarios.command.json", + "bytes": 872, + "sha256": "8be6956a7431240dc77c24829b96629220ce5247b3666bfd5d98384530fef9b7", + "gitBlobSha1": "e02b9c30688c47ba4f3653e97e1ccca8b9399b64" + }, + { + "path": "account-final-scenarios.log", + "bytes": 450, + "sha256": "1ebdf4ba92666fdb19d716a8ebe94aa4d53c1e3b2a2cf93da090abee21772a11", + "gitBlobSha1": "7427b37d4e20d29d2ee55320880c45bd1aa622f4" + }, + { + "path": "account-matched-after.command.json", + "bytes": 857, + "sha256": "9c0a8eeccc66923d7d5fa2077744d49a3a2a9a693a8e1716f16c54ff845d4184", + "gitBlobSha1": "17023ad8bcee2f5d81b8a2cef9aa274f70b57129" + }, + { + "path": "account-matched-after.log", + "bytes": 188, + "sha256": "534c4a05a52956ef0e3b2fa23a2e2d3b2c3eddf75acc7422278d266d9daab55c", + "gitBlobSha1": "92847cb482e4e1c1da19078855d272abc1efb8db" + }, + { + "path": "account-scenarios-after-02.command.json", + "bytes": 835, + "sha256": "ec0e0ebfb4d65fa32458d1804c49b8e405f95c4aa9081a57132051151b0cea68", + "gitBlobSha1": "f71c1b463798b202d010a79975dcd11c4e8b0af3" + }, + { + "path": "account-scenarios-after-02.log", + "bytes": 1507, + "sha256": "7d4c883ea8c95d18fbb2d9c12dfa5994ff7872b8de5c3a0bf48b4c7b8b110f6a", + "gitBlobSha1": "09e24307706038a3d6ba74238450e375386d4dff" + }, + { + "path": "account-scenarios-after-03.command.json", + "bytes": 834, + "sha256": "ba52cc191314ed5b6eaa734b09d65d556a862b3e5ce21c44cd0b18a14ef2e469", + "gitBlobSha1": "94f3b65989ab5ccb7bc85fc4edd22972123a31c6" + }, + { + "path": "account-scenarios-after-03.log", + "bytes": 415, + "sha256": "b5f213f2fb56f2806732bd2d75d9770df99b38f5aa6cc2f0d2b1ac51899cb576", + "gitBlobSha1": "7824ca6e98bf838d76213894378b30e5dbef310b" + }, + { + "path": "account-scenarios-after.command.json", + "bytes": 832, + "sha256": "30580438b2a3bc9f0f8a809b7b12f8400ea880d0c8fd1f3839f71e69ec9e75ff", + "gitBlobSha1": "5fa65cb7431ec678c7ab98d75558a6dd62faf899" + }, + { + "path": "account-scenarios-after.log", + "bytes": 1507, + "sha256": "648d5ea37e91bea13682b778bff94a78263823fa3449084b208d54d0c7e743c0", + "gitBlobSha1": "4f3bdd5e6e92f2f7b17067e192faa66a1b02853c" + }, + { + "path": "account-scenarios-before-02.command.json", + "bytes": 787, + "sha256": "d750a93e8ee6d53f9e1cbce38262518fcd055c8662e51c2fccd3e6de6c00698c", + "gitBlobSha1": "f8863c4d93e3ffc433d5673be1089262ebdcd429" + }, + { + "path": "account-scenarios-before-02.log", + "bytes": 1857, + "sha256": "0414a1878a2c3582768d3b6659edc156745e3fee78e91cad05ceb8e488090ea0", + "gitBlobSha1": "142945eee3e9467f95a9d2eb005f3c9ebb8cffd4" + }, + { + "path": "account-scenarios-before.command.json", + "bytes": 785, + "sha256": "deae3dd34ff36b11d3cd97a34b06155df5f1c636e5516c841bbb7eee22cdbd98", + "gitBlobSha1": "b2943b885af06009593ab499785ba0b367e28334" + }, + { + "path": "account-scenarios-before.log", + "bytes": 3684, + "sha256": "2a718d7e264acb249b9b60e7e414c589e845934cf6665c43f88e6340a58f856f", + "gitBlobSha1": "d8e77feffa83e75209eae1e14f39e1a8b128f2d3" + }, + { + "path": "account-typecheck.command.json", + "bytes": 771, + "sha256": "76f585ec6838cac8847c047b37f6a7a89c186596cd119218011295609a2325c7", + "gitBlobSha1": "57c64309fab0de698eda79803130042d6191bd47" + }, + { + "path": "account-typecheck.log", + "bytes": 1724, + "sha256": "51d5d08485705e4fd2b12e52f4ad3e270f06f2a8fe5dbca77babbe5375ba05dd", + "gitBlobSha1": "5244bbafe6219fa83158239d9771866b236d602c" + }, + { + "path": "after/change-boundary.md", + "bytes": 742, + "sha256": "67ff09b9fe36fda962caa4b1ac4d40d3694fec4035f4e7d28aa62e48579a1b0d", + "gitBlobSha1": "da680ad01171af0daa6b93a5acb45f9031432846" + }, + { + "path": "after/change-boundary.png", + "bytes": 135281, + "sha256": "7efd166666c487ff28c3659bb7dc4a08a9fe2c2af9c02f134e6880094b27b40d", + "gitBlobSha1": "4c6747fca891e71271efb16212136ed80d3c28a8" + }, + { + "path": "after/desktop-memory-1440-downloaded.html", + "bytes": 88024, + "sha256": "d8835c7c4006f6c3e6641f2bf60a42ebd548ed2e6dcf54a5a2db977dc058fabd", + "gitBlobSha1": "b950720133993bd90b1370cc5247695849173468" + }, + { + "path": "after/desktop-memory-1440-downloaded.json", + "bytes": 18240, + "sha256": "cf4890a8798a4250ac259e0d07650a8b38aac328c97f1cda5365d301a4fd8142", + "gitBlobSha1": "47edc2e32511272c62937f7ff29d85878f2be648" + }, + { + "path": "after/desktop-memory-1440-downloaded.png", + "bytes": 133268, + "sha256": "ef099b2a6b9c226ab4c6508b80dd36dd79818af70b840ae573ed651d16ba988a", + "gitBlobSha1": "31820cd47e9ad5fc31d268660fa0227b0834fa86" + }, + { + "path": "after/desktop-memory-1440-entry.html", + "bytes": 22547, + "sha256": "6a97e3ae6b9c591ee81637e32ee4b1cdaa2ce1151c834bc8d606d0f6c003f710", + "gitBlobSha1": "3fd9c271ec1a22710da7a67cb5955423bf43c0b9" + }, + { + "path": "after/desktop-memory-1440-entry.json", + "bytes": 2526, + "sha256": "ec8e57893efef341f849f7e18f35a281acc15c4412551ac2cbdf2ee2f620421a", + "gitBlobSha1": "28ca574fb23ab20b87c62b4ec3d8210784c7bab1" + }, + { + "path": "after/desktop-memory-1440-entry.png", + "bytes": 184250, + "sha256": "1edf336806df3b4be374f010335643257d918860f3c30ee786b75ec4754c44a3", + "gitBlobSha1": "b8d5f906623e73326ab808649186df6b6e335e13" + }, + { + "path": "after/desktop-memory-1440-later-download.html", + "bytes": 87989, + "sha256": "e5be86de764b545a1015b09f714b3f4b022a1bf57dff0bd2a69b79b9ab8b9c37", + "gitBlobSha1": "16a96d892d3343c8c35f419aa4e3f1223a81a534" + }, + { + "path": "after/desktop-memory-1440-later-download.json", + "bytes": 18256, + "sha256": "bd376990941821aa0b3297e40b163aab61b7ca1821703c134478e1c2e6b604ad", + "gitBlobSha1": "b9390e77a187fb50aa3fa513a448618e09a64586" + }, + { + "path": "after/desktop-memory-1440-later-download.png", + "bytes": 135016, + "sha256": "57012fa7146507f83b6a39a41d224bdb73818a38c15bc283783edc379c3ecce5", + "gitBlobSha1": "7d76802a7e398acab82798e9f09ae5fa40793d51" + }, + { + "path": "after/desktop-memory-1440-sample.html", + "bytes": 89828, + "sha256": "835b624532ae30303e5c119201f6c04d8cc1fa8fb1780105bd32b044b9010df4", + "gitBlobSha1": "6a3b67b3fc4ce6ae4c71101740436bb737985e34" + }, + { + "path": "after/desktop-memory-1440-sample.json", + "bytes": 19475, + "sha256": "6fd9171e17e09917bc180f88a47e2c55e44fa62cd89893b2b3b1ca4bcfb4bb11", + "gitBlobSha1": "d401987b201f1212eab62c7dd7c9144d90ed03e1" + }, + { + "path": "after/desktop-memory-1440-sample.png", + "bytes": 136588, + "sha256": "35ee01f36f1e96ff6f5a76166979884ba97c72cf17454ce6c1eae3fb809b1dc5", + "gitBlobSha1": "0d9ba02dd483813878f14bf7c93679f3c4baae23" + }, + { + "path": "after/Q3_variance.xlsx", + "bytes": 6685, + "sha256": "f932564a012f2cb46dea3a92eb90c80004895f5d55a0460c47ad7573379aa52f", + "gitBlobSha1": "aa969897f4d09ef8cdc6591021056fcf1dc31dd1" + }, + { + "path": "after/report.json", + "bytes": 14238, + "sha256": "e93686c12a62b356d9f1f2c2c4b02b2fc5c21816b0b3cca389a5fbb8c45d4460", + "gitBlobSha1": "b5f8921649c41603ad1ea96763da85a851a2f12c" + }, + { + "path": "after/review-2-Q3_variance.xlsx", + "bytes": 6691, + "sha256": "fd854667bbd9f4c8cb55d62abc7f98fedd1b5c8b332f827f889a163f7952c1aa", + "gitBlobSha1": "6bec4b4d21729a71921b7ca9d1a76eb8cc43723d" + }, + { + "path": "after/server.log", + "bytes": 40, + "sha256": "0386ad966f6aa33781e062d9b528e22f2f95d68f68b974f9cb0b35cb28180a8d", + "gitBlobSha1": "6e5f17b3753c1e80493efa1a6f9f4652fd1d87a3" + }, + { + "path": "after/ui-to-workbook.json", + "bytes": 1996, + "sha256": "ae4383866314affd0d9ceb452b50b3ed0da6dcbab22c259e254a97e776007bdd", + "gitBlobSha1": "dd704fd5a38d630cb83b3c04b3db436343473b5d" + }, + { + "path": "after-source-bindings.json", + "bytes": 2118, + "sha256": "b6f06a5a0ccfc04684d6e8f4488629210a1979d4067cca3dd108a4dc44b57803", + "gitBlobSha1": "decee105dcc7bffc997928447616d02bdb63275a" + }, + { + "path": "after-tracked-bindings.json", + "bytes": 2014455, + "sha256": "1984bc8d97c06b981f795d0fb85e677647bdce26bdcb7a0aba959f48e48a6209", + "gitBlobSha1": "c7a8d4bad50f35ff4bf4301d8ed740f8f72a6e5a" + }, + { + "path": "before/change-boundary.md", + "bytes": 645, + "sha256": "b6d322e44efe7725e9db4ec6fae8e6a0e93bf5b302ffcf1fe80b49faf278399e", + "gitBlobSha1": "0128c3c799833ac6824fa8a7c6a0f64d3dfce021" + }, + { + "path": "before/change-boundary.png", + "bytes": 135909, + "sha256": "fceb0dc7ca8665b6c3d49ce5ecf226c80293c571c17dbdbb57ddf1dbf896671d", + "gitBlobSha1": "0800e17c7db3f1741305c2a50153a0e70c82000b" + }, + { + "path": "before/desktop-memory-1440-downloaded.html", + "bytes": 87806, + "sha256": "b89c9b2057e9f2d7e901acdd6f5226291a6fa3956e655c32b13914b8c559e3a5", + "gitBlobSha1": "16732a58f0af67e9cba17bc7f0f2ef7235ff381e" + }, + { + "path": "before/desktop-memory-1440-downloaded.json", + "bytes": 18164, + "sha256": "f828755c1cf6f73b14aa4e6698f8eba9f3947b8459c59f1a5db81ea7ebb6db81", + "gitBlobSha1": "0b154c31ad23e4c3b13ab2da693cdb99a90e865d" + }, + { + "path": "before/desktop-memory-1440-downloaded.png", + "bytes": 133801, + "sha256": "d748f5992dec7ddee8816c83d8c6d8be7ddf754456cf64142417a2178afcee57", + "gitBlobSha1": "12ffb4cd96dd697ee4f5aef6790fba0560193e10" + }, + { + "path": "before/desktop-memory-1440-entry.html", + "bytes": 22547, + "sha256": "e0057268ff744c13eeb009343cc9a5132e7f5a3da7fd2ae832b4d8f3aab1d339", + "gitBlobSha1": "c913c8aa6afb0505cfce5a64949a52b7aaa2d37e" + }, + { + "path": "before/desktop-memory-1440-entry.json", + "bytes": 2526, + "sha256": "a2f88a5a01a2a089aba35b6a02a040a3dad46e0af31b3a962933d3d2a0989d8c", + "gitBlobSha1": "7f163245d1dccd50ec506a153d2d2de476f99656" + }, + { + "path": "before/desktop-memory-1440-entry.png", + "bytes": 184247, + "sha256": "e507a0b6b569bf42ee5f62cd5dc6bfd31f280a4d147bc175b4c1a432251dee33", + "gitBlobSha1": "b72b9a39e697c8d4a5b73655a0fd62cbd0b63740" + }, + { + "path": "before/desktop-memory-1440-sample.html", + "bytes": 89828, + "sha256": "38ad55be105664b0e2d053e56b3c32add132c209886aa19a528cf10be3a9ba61", + "gitBlobSha1": "c513a041b9d1c888d261506c03402e5081eef5a6" + }, + { + "path": "before/desktop-memory-1440-sample.json", + "bytes": 19475, + "sha256": "6405182569264169158df1a05a2eceb7c751049d8f12e906efabb26b3d09cac9", + "gitBlobSha1": "e45a02eb27903f50a4453bae289dc3e3950b8a30" + }, + { + "path": "before/desktop-memory-1440-sample.png", + "bytes": 136425, + "sha256": "3044c6e8b91dd77ae682d12c566fbdeac14e7a8100e07cda70ae096641006da7", + "gitBlobSha1": "c729783715a2893f4c5919ef7d5a4f96a5bb0c06" + }, + { + "path": "before/Q3_variance.xlsx", + "bytes": 6631, + "sha256": "06dd606710f763f7e6016e81a8022667d69ab61f871cf50328484dec5f98dc31", + "gitBlobSha1": "98f62b33ada98750d69edf9123dccdb2fde4a853" + }, + { + "path": "before/report.json", + "bytes": 6297, + "sha256": "b0858750daf2ee5d2a86cf9ce8db4cc7f11608c8d6dc6e930871c072fc100ace", + "gitBlobSha1": "0ab507f870ede269c7bba74207622a0bbb58696d" + }, + { + "path": "before/server.log", + "bytes": 40, + "sha256": "fff0986d5228571d97dbd413cee519c7365978ac978a3f727447d367cec5a1b9", + "gitBlobSha1": "1d3ce8fab033e29995dcf66b267a03e7642b2ace" + }, + { + "path": "before/ui-to-workbook.json", + "bytes": 1977, + "sha256": "b51471c257bb69e3c81423596b397b3def917ae8e29695bb7db7f6bcd481b60d", + "gitBlobSha1": "1d114a2a0efcf9380b8e4b4567a90b636fb090b7" + }, + { + "path": "before-browser.command.json", + "bytes": 852, + "sha256": "b231bdfdc3bfc6efee4f3e49e3c605101dd20d53d7861fb03c8c70f916b6980f", + "gitBlobSha1": "c7181d021e267ebc0958c761e62fb6ab7e4896ec" + }, + { + "path": "before-browser.log", + "bytes": 189, + "sha256": "14097e0766c4a7d8464116c231807878f8538b5db646b95f03a2ea26314c1c42", + "gitBlobSha1": "4e93f486806d69ad511565bb6e8f15bce79e7fa3" + }, + { + "path": "before-build.command.json", + "bytes": 721, + "sha256": "7665503d1cf5a937366c28c097671b23bf6ee0f44e86aaae41c86c11d6fbb8c1", + "gitBlobSha1": "b0862a6b8485185f14c04fc5dde9bf7f00a950fa" + }, + { + "path": "before-build.log", + "bytes": 37879, + "sha256": "c977ae458d1d5842ad534ece92b5d89915aec139de90e3760d5c75684b7a6a0a", + "gitBlobSha1": "146359d951e8ae0a3a590f3009d71f9de42be804" + }, + { + "path": "before-current-dist-bindings.json", + "bytes": 80419, + "sha256": "bbdec57187ffbb5c8cae106d574c93c8fa511d95cd8bd0c92f6322f146653a6f", + "gitBlobSha1": "fe30cedcf44e17f85895478caa3cf5cf5f33f75f" + }, + { + "path": "before-current-dist.zip", + "bytes": 13911045, + "sha256": "bbe97176b7eb84b4e117c180b3dbe7141cd62a33193cc762e563ac9d1678f98f", + "gitBlobSha1": "66193589c6ff5e0e5ebe647d2407d55954ceedc6" + }, + { + "path": "before-design-manifest.command.json", + "bytes": 737, + "sha256": "2110cd0b0c0a42a9e376e2aa2693abec03c4995cc413b848b29dcc6b6bacffaf", + "gitBlobSha1": "63d09199a981e417a49fee49a8624e1578da5129" + }, + { + "path": "before-design-manifest.log", + "bytes": 11077, + "sha256": "f237e3b83aa87c94168b2f9bcb62d79e98c9171d2c514ef6414893f87c0f067f", + "gitBlobSha1": "28b7656de8f864f0813d0dc21c95c1b47a8a7534" + }, + { + "path": "before-head.txt", + "bytes": 82, + "sha256": "a3b47e0c62a30037f782daad21f1e3f494945d123f0c5366f4d5b01b8b043d9e", + "gitBlobSha1": "72a617a663026fd05411d5816f8ca1692b7694c9" + }, + { + "path": "before-index.txt", + "bytes": 983004, + "sha256": "08be2cca888379e88a875ff7df9269c1a4eafde9fc6c13cf9c002df7b8945425", + "gitBlobSha1": "3e34b3a196123d3234ebca8208f1cdcc4a8433d8" + }, + { + "path": "before-refs.txt", + "bytes": 10482, + "sha256": "f07794386fdccb054b31c01567fd46458101cff69033c65a5c3125485eeb63df", + "gitBlobSha1": "6116c8a43f4ef609c608ad2cf6cdde04573065c8" + }, + { + "path": "before-status.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "gitBlobSha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" + }, + { + "path": "before-tracked-bindings.json", + "bytes": 2014453, + "sha256": "91796cb1574d891d08f4f3275986fa2c77e24e0f5bdc2ae78b94238e3750b49f", + "gitBlobSha1": "ea4e94ba71bd99fbd750a3a74ad23056798f20bd" + }, + { + "path": "before-worktrees.txt", + "bytes": 900, + "sha256": "de1222d5d9910730bc1fccc42c093dba52613bbfbeb5592444c28887240fd22f", + "gitBlobSha1": "014d6a2d43da6260640915039153f05a4e191e78" + }, + { + "path": "bind-after-source.py", + "bytes": 1266, + "sha256": "ea2bc4f2b1b8c3e9ad306a58532a405288d699968e9d9b6154d7cb04df5b8ab0", + "gitBlobSha1": "a49dd0f197c35280cc413748db4ba514dd5546bb" + }, + { + "path": "browser-suite/command.json", + "bytes": 900, + "sha256": "71d51f0470af31d5e63663ae4484777fbee4cc2507d2193aeed19fb8ae9b538f", + "gitBlobSha1": "c3a759e9b8067a6c989d02aa903bb2f290fc7435" + }, + { + "path": "browser-suite/playwright.json", + "bytes": 6441, + "sha256": "a4af8977c989faa4de58744395a5c8e424e4dbffcaae556dee9e99bd88401beb", + "gitBlobSha1": "ae107111c838e1c10d49da0652eb6a31ee2c3a6f" + }, + { + "path": "browser-suite/playwright.stderr.log", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "gitBlobSha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" + }, + { + "path": "browser-suite/prior-hardcoded-screenshot.png", + "bytes": 138533, + "sha256": "12cdde17e3892a3402b0a9e794c0f66b683733367f179c76c418de7102ce4dd7", + "gitBlobSha1": "e8b7287c3a82dd2e7423210272faaf663eee95cc" + }, + { + "path": "browser-suite/results/.last-run.json", + "bytes": 45, + "sha256": "91d1c43004802cd49950d78eb11c8fa7d05da8ffffe219a8b13b2f561bc00903", + "gitBlobSha1": "cbcc1fbac11a74b608b2b3edc3a2ffd6ab639cb2" + }, + { + "path": "browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/attachments/review-1-xlsx-8d322e6991638bbf510ae3e72dba7d7b1229f8bd.xlsx", + "bytes": 6685, + "sha256": "acac9fdf9711781302c79fb142dbbaeaf775e224a426c32204e8ab2f3a22db32", + "gitBlobSha1": "a128b1df8453f248efd1200d80c4b0e1a0c58886" + }, + { + "path": "browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/attachments/review-2-xlsx-d8bd07bada085ad796bb49244ecd789b4ea58285.xlsx", + "bytes": 6692, + "sha256": "495e4fd5fed1a6e4c5340b1cde5b9e1fb33559a37ca3c55993f79fa1a594623a", + "gitBlobSha1": "124cef5bd12e2b24543b6fbc17614542fa8cb6a8" + }, + { + "path": "browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/desktop-account-current-export.png", + "bytes": 135059, + "sha256": "42ffda5a38b1edd79a599c9dde79e60d9978ced5efcc6717e07da73da2ad89c4", + "gitBlobSha1": "232f6e2dc20f84681f936b9dd4422fc57b2f78cb" + }, + { + "path": "browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/review-1-Q3_variance.xlsx", + "bytes": 6685, + "sha256": "acac9fdf9711781302c79fb142dbbaeaf775e224a426c32204e8ab2f3a22db32", + "gitBlobSha1": "a128b1df8453f248efd1200d80c4b0e1a0c58886" + }, + { + "path": "browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/review-2-Q3_variance.xlsx", + "bytes": 6692, + "sha256": "495e4fd5fed1a6e4c5340b1cde5b9e1fb33559a37ca3c55993f79fa1a594623a", + "gitBlobSha1": "124cef5bd12e2b24543b6fbc17614542fa8cb6a8" + }, + { + "path": "browser-suite/server.log", + "bytes": 40, + "sha256": "07a33901221a45dd2ad564f2f9ef2a20f2b5ac6f60f0549688a4a2e2357bfee6", + "gitBlobSha1": "0f334470c4bfffb9e3a5fa1175ec0323b9e4d762" + }, + { + "path": "browser-suite/uploaded-workbook-shared-grid.png", + "bytes": 138953, + "sha256": "d31c290f875c48b83a91941e95f125b16ec1335cc67080a41e7755bec1fde7ea", + "gitBlobSha1": "22431aa85a407feecd7965a52a7a762ff88bbb30" + }, + { + "path": "custody-environment-wording-addendum.json", + "bytes": 456, + "sha256": "9e882eaf69658cb02c0b7c1c9bdd1ef47072e3b4c0cda2689d40e81ace4dc232", + "gitBlobSha1": "58ea52cc6b3fc4c049796e8ce33565b0adfdc369" + }, + { + "path": "custody.json", + "bytes": 587, + "sha256": "3d5f2f12d1e38800809e497249f2841d4a8cc18431933e82b351045b418417a7", + "gitBlobSha1": "507937dcd2f961733449a383135d883f606815b5" + }, + { + "path": "final-commands.json", + "bytes": 13244, + "sha256": "1cae9b8d88b0bc5e58c9b7207059666cb5591c3dba62dd04fc52ddbe40b2b491", + "gitBlobSha1": "61cb6232bf08e58ed4a15ea84b64a9b0af6704c0" + }, + { + "path": "final-dist-bindings.json", + "bytes": 108908, + "sha256": "377ae4aa61d13f645086a22d91a1b5f40cd7578a2754f0b6bc507a94a33d4193", + "gitBlobSha1": "55792ba04eca2cc0179fd930ec9520373d30d1f6" + }, + { + "path": "final-dist.zip", + "bytes": 13910943, + "sha256": "beff80376f74dc220a4cc2d30b709218ca38bb25024b82f0d95fc9f894a2346e", + "gitBlobSha1": "b9d5eaa0c00cd6927fa16ae9e1cdad54eaf21195" + }, + { + "path": "final-head.txt", + "bytes": 82, + "sha256": "a3b47e0c62a30037f782daad21f1e3f494945d123f0c5366f4d5b01b8b043d9e", + "gitBlobSha1": "72a617a663026fd05411d5816f8ca1692b7694c9" + }, + { + "path": "final-index.txt", + "bytes": 983004, + "sha256": "08be2cca888379e88a875ff7df9269c1a4eafde9fc6c13cf9c002df7b8945425", + "gitBlobSha1": "3e34b3a196123d3234ebca8208f1cdcc4a8433d8" + }, + { + "path": "final-refs.txt", + "bytes": 10482, + "sha256": "f07794386fdccb054b31c01567fd46458101cff69033c65a5c3125485eeb63df", + "gitBlobSha1": "6116c8a43f4ef609c608ad2cf6cdde04573065c8" + }, + { + "path": "final-source.diff", + "bytes": 21105, + "sha256": "e17642f2b102c50cafd5aeb2ca9143b315e8a924bd88da7fc107b837218e62cf", + "gitBlobSha1": "d253c442766029a5b115b0ffde809e22fb691f6d" + }, + { + "path": "final-status.txt", + "bytes": 106, + "sha256": "b20623a321bc49a827209c22a4343f4a0e966e84fa38f17a1add4af2897053fb", + "gitBlobSha1": "59351f9826bfc32680dfd5c746f8f59433ac92d1" + }, + { + "path": "final-worktrees.txt", + "bytes": 900, + "sha256": "de1222d5d9910730bc1fccc42c093dba52613bbfbeb5592444c28887240fd22f", + "gitBlobSha1": "014d6a2d43da6260640915039153f05a4e191e78" + }, + { + "path": "freeze-attempt-01.error.txt", + "bytes": 327, + "sha256": "855c9e4cc9afacbdc66bd9b0ff022299ac6f207a4175cc91b90b6aaecd86b819", + "gitBlobSha1": "6e35f3011931fb40b07785e06564c2bd16a2ce9d" + }, + { + "path": "freeze-final.py", + "bytes": 8648, + "sha256": "33b5394ae5344e1a4e359ad99440c7eaf9863fa25299428e5ac4b5074b3f5131", + "gitBlobSha1": "b5b66304c08388b94ff56a98f61d04c6c261c8ab" + }, + { + "path": "freeze.json", + "bytes": 4300, + "sha256": "4e8640d97bbfe6bedd46521f40c15bd3c24e161e37384cbbf35452bff4d15605", + "gitBlobSha1": "cd2c8b75bd8d522c3f5ce7828be89eba64ad7382" + }, + { + "path": "freeze.py", + "bytes": 8688, + "sha256": "e71fc4a740ec4d414fdf3ef4356a47df1eaac6f54b60f3d7bf6b4b4549492cdb", + "gitBlobSha1": "5615d601d18c3ab19a486d8faf225d5ded6a206a" + }, + { + "path": "handoff-link-check.json", + "bytes": 1022, + "sha256": "c42acdd4e4c48608ae67ea80b46345a1fff00e4ecac891df629b78c877e1259d", + "gitBlobSha1": "ce88be9536218b864827737a74fe7036c21c6c54" + }, + { + "path": "installed-bindings.json", + "bytes": 8015, + "sha256": "4ac5e25ea31035cde5ddcda74bd79d3587f1029052232dbceedecc71d516476a", + "gitBlobSha1": "db7766e5499e1f1996a964815438f83b62c37c02" + }, + { + "path": "knockout-final-Artifact.tsx.txt", + "bytes": 230374, + "sha256": "013064b20f5fea117e2e8b96755d2d93fce490e9eb5f6845b1b1cd6f386b07a0", + "gitBlobSha1": "37dac53ca1f89fb671db075898603bcdcb3ab796" + }, + { + "path": "knockout-final-artifactXlsxExport.test.ts.txt", + "bytes": 9444, + "sha256": "3c48be964ca1c7e5083801d7875bc8a74f075f38e56fcab3e621e799b6ffc136", + "gitBlobSha1": "424266f4a1225c11bdd66b381d3089990ca6376b" + }, + { + "path": "knockout-regressed-Artifact.tsx.txt", + "bytes": 230378, + "sha256": "701cbef1cbe9ca89dea754b203243dbd760aa04d9062f6053e1615f7cbeb6463", + "gitBlobSha1": "74c90f35c5b67e557684095b7a84497fdf995d2a" + }, + { + "path": "knockout-source-bindings.json", + "bytes": 373, + "sha256": "605ce705fc0472437ec1c13eb84ce090ae0f57a25c918e35ab203618e2481e17", + "gitBlobSha1": "6af82e81f718785f419626db6a26271da3155a3f" + }, + { + "path": "observe-after.mjs", + "bytes": 14774, + "sha256": "2cda94d11bee146005c9bf6e427a0bbc81ef58b25bd16540ea843435422a2f9e", + "gitBlobSha1": "8b08728e0dfff20bb21aed47491f52905816a11e" + }, + { + "path": "observe-before.mjs", + "bytes": 11466, + "sha256": "016805ef1fb300a68e503274e694e1645d98622dc24d5008fcfb3d33a9365d2c", + "gitBlobSha1": "6a2630487efbcc034bf9a3328af29cecc77e0a14" + }, + { + "path": "prepare-after-probe.py", + "bytes": 4991, + "sha256": "f849034d67047a3bd39f81108287376125853e9b64aba63ac2a4bec3771f47de", + "gitBlobSha1": "587ac10b4f07455b7487523ca5874f97fc6b91c9" + }, + { + "path": "preserve-build-and-knockout.py", + "bytes": 2534, + "sha256": "b619d075de2a348cec71da1d2e94c0a025d25678fe22d7c30363f50948c19e10", + "gitBlobSha1": "d14a5fd2abaa0f17b279e7233943bee9f700330a" + }, + { + "path": "prior-dist-bindings.json", + "bytes": 75526, + "sha256": "95cf73d55ada0e26a5c68867d94e55051f4b723eadba7a879c98a5acedb3ede5", + "gitBlobSha1": "f9901bff341d0b206239d1237916ca5457193674" + }, + { + "path": "prior-dist.zip", + "bytes": 13915799, + "sha256": "49f620f909df6054e5e910fb3271cdb92a5022e9059856b83d8a07ca79a7c251", + "gitBlobSha1": "016c7353342a584070e2a84218ef13ef3d9c388f" + }, + { + "path": "raw-workbook-xml-check.json", + "bytes": 7633, + "sha256": "01e5d8911026927000f301d95b085022d2ac73fee6588f50fe8c8649cb65491b", + "gitBlobSha1": "223df71424bdab2cf912f3410bb5aa8322b60c34" + }, + { + "path": "run-browser-suite.mjs", + "bytes": 3977, + "sha256": "f66242a3bb9064ef9d838fa7d382754dbe71312a87219da114c49ec9754d10c3", + "gitBlobSha1": "044de8c236b59209cf722807d224e10699a42985" + }, + { + "path": "run-command.py", + "bytes": 1919, + "sha256": "017a32019ba2572cdb30574567188dbc7e43dcd798ecf05b81e6b9568f5ae23d", + "gitBlobSha1": "f5e549636258478ee8a7acf338e0d8f08a13d15b" + }, + { + "path": "source-after/e2e/excel-grid.spec.ts", + "bytes": 10117, + "sha256": "a0f13b4194018d14b918dc90de827bce5969730b2b10bcb4ed611db6a4333f73", + "gitBlobSha1": "e9b9be5756c193dda6523dcab1fad7543b89b982" + }, + { + "path": "source-after/HANDOFF.md", + "bytes": 12495, + "sha256": "863cf1d6dc6a02b1a0cbfc547603164f60511face20a96f89592cdb4729a8035", + "gitBlobSha1": "49706cb18d223f12c4f0b1ad116e6f95f493801e" + }, + { + "path": "source-after/src/ui/panels/Artifact.tsx", + "bytes": 230374, + "sha256": "013064b20f5fea117e2e8b96755d2d93fce490e9eb5f6845b1b1cd6f386b07a0", + "gitBlobSha1": "37dac53ca1f89fb671db075898603bcdcb3ab796" + }, + { + "path": "source-after/tests/artifactXlsxExport.test.ts", + "bytes": 9444, + "sha256": "3c48be964ca1c7e5083801d7875bc8a74f075f38e56fcab3e621e799b6ffc136", + "gitBlobSha1": "424266f4a1225c11bdd66b381d3089990ca6376b" + }, + { + "path": "source-before/e2e/excel-grid.spec.ts", + "bytes": 6851, + "sha256": "ffd4f9ff464148b6e01eb27c02ae13db2e539247be68071bfdd54c7ef559b890", + "gitBlobSha1": "9fbb8a28c71c2d4aeee91388568a58925018217a" + }, + { + "path": "source-before/HANDOFF.md", + "bytes": 9372, + "sha256": "15dc28a7fff811f917cab5b627ccc6306c2e45dbdf1a7be815fa08a16a08e6e6", + "gitBlobSha1": "3b3cececfbffa6f8f769eeaee03d0dbec84bb722" + }, + { + "path": "source-before/package-lock.json", + "bytes": 560115, + "sha256": "835ac86997865c2792f03f588b0ec58632b67b9b4fdc864a28a7020c42ab5a92", + "gitBlobSha1": "e189bd4a22b99eeb1ddd6a71512b96d503f43abc" + }, + { + "path": "source-before/package.json", + "bytes": 26875, + "sha256": "70964ae92133d1c6017b6125e190ac1ec62bbf9891c2dbc1b10d0ff45bfca589", + "gitBlobSha1": "a1aad98a889e644db8c0690ec6f09c36e6f0c4ee" + }, + { + "path": "source-before/src/app/styles.css", + "bytes": 281660, + "sha256": "654ea434a1c3fcca6fbd8dcbce1a6ba4c0977c209f5df3be4db1ddd748efb575", + "gitBlobSha1": "1f86356a46862f4aa39b41b1b8c8f4b3e42fe386" + }, + { + "path": "source-before/src/ui/panels/Artifact.tsx", + "bytes": 230378, + "sha256": "701cbef1cbe9ca89dea754b203243dbd760aa04d9062f6053e1615f7cbeb6463", + "gitBlobSha1": "74c90f35c5b67e557684095b7a84497fdf995d2a" + }, + { + "path": "source-before/src/ui/workArtifacts/xlsxDownload.ts", + "bytes": 1504, + "sha256": "e2dac3c92c9ef441024f1ee53ed119954f78b626ef20cb5e3986f6545e9da5ab", + "gitBlobSha1": "d1c9c7fb91aa4af009755b2c2a7a0f9e1deebcac" + }, + { + "path": "source-before/tests/artifactXlsxExport.test.ts", + "bytes": 3256, + "sha256": "1a84ba5c5722797fa79883c476533c37b3cfea54b38a3385cff7feeff7914825", + "gitBlobSha1": "452d795d63a2330d1955eef5a25d98c1596cbc48" + }, + { + "path": "source-normalization.json", + "bytes": 749, + "sha256": "bee79d08df91a3957e5d8e3463305025771a5ab3007ad5bc50f6d94adbfc62a9", + "gitBlobSha1": "e06ea3a994e9d6d851a616b99d944f2990665677" + } +] diff --git a/evidence/desktop-account-20260905/judge/checks-in-progress.json b/evidence/desktop-account-20260905/judge/checks-in-progress.json new file mode 100644 index 00000000..0b482668 --- /dev/null +++ b/evidence/desktop-account-20260905/judge/checks-in-progress.json @@ -0,0 +1,514 @@ +[ + { + "name": "Exact worker receipt", + "passed": true, + "details": { + "path": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f_NODEROOM_DESKTOP_ACCOUNT_REPAIR_RECEIPT.json", + "bytes": 4634, + "sha256": "15b55c6ba99bfdfedbe04bcbd9b2f4bbe3b51a0fce3c9c2a3d2708ae0f340f73", + "gitBlobSha1": "1e2e430a6ff8d71ca96f8ef8f9088698b256fda4" + } + }, + { + "name": "Exact freeze and manifest", + "passed": true, + "details": { + "freeze": { + "path": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\freeze.json", + "bytes": 4300, + "sha256": "4e8640d97bbfe6bedd46521f40c15bd3c24e161e37384cbbf35452bff4d15605", + "gitBlobSha1": "cd2c8b75bd8d522c3f5ce7828be89eba64ad7382" + }, + "manifest": { + "path": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\manifest.json", + "bytes": 30868, + "sha256": "4e5fb3dabe91e0515f4506e3e2b6389c6bffd9bdef2fb0735c360b9a66c0883f", + "gitBlobSha1": "054cfea65ff5668d252beaf628c513c4675d3ead" + } + } + }, + { + "name": "All 132 raw artifact bindings", + "passed": true, + "details": { + "count": 132, + "mismatch": [], + "extraNames": [] + } + }, + { + "name": "Four exact current source owners", + "passed": true, + "details": { + "source": [ + { + "path": "HANDOFF.md", + "bytes": 12495, + "sha256": "863cf1d6dc6a02b1a0cbfc547603164f60511face20a96f89592cdb4729a8035", + "gitBlobSha1": "49706cb18d223f12c4f0b1ad116e6f95f493801e" + }, + { + "path": "e2e/excel-grid.spec.ts", + "bytes": 10117, + "sha256": "a0f13b4194018d14b918dc90de827bce5969730b2b10bcb4ed611db6a4333f73", + "gitBlobSha1": "e9b9be5756c193dda6523dcab1fad7543b89b982" + }, + { + "path": "src/ui/panels/Artifact.tsx", + "bytes": 230374, + "sha256": "013064b20f5fea117e2e8b96755d2d93fce490e9eb5f6845b1b1cd6f386b07a0", + "gitBlobSha1": "37dac53ca1f89fb671db075898603bcdcb3ab796" + }, + { + "path": "tests/artifactXlsxExport.test.ts", + "bytes": 9444, + "sha256": "3c48be964ca1c7e5083801d7875bc8a74f075f38e56fcab3e621e799b6ffc136", + "gitBlobSha1": "424266f4a1225c11bdd66b381d3089990ca6376b" + } + ], + "sourceDigest": "c4484a6d673c6ae4a43a4e2ebbe1ce94a2903a9e8e74a6c02a5212f30180c4d1" + } + }, + { + "name": "Unchanged head", + "passed": true, + "details": { + "sha256": "a3b47e0c62a30037f782daad21f1e3f494945d123f0c5366f4d5b01b8b043d9e", + "bytes": 82, + "representation": "Git output bytes" + } + }, + { + "name": "Unchanged refs", + "passed": true, + "details": { + "sha256": "f07794386fdccb054b31c01567fd46458101cff69033c65a5c3125485eeb63df", + "bytes": 10482, + "representation": "Git output bytes" + } + }, + { + "name": "Unchanged index", + "passed": true, + "details": { + "sha256": "08be2cca888379e88a875ff7df9269c1a4eafde9fc6c13cf9c002df7b8945425", + "bytes": 983004, + "representation": "serialized ls-files --stage -z entries, not raw index file" + } + }, + { + "name": "Unchanged worktrees", + "passed": true, + "details": { + "sha256": "de1222d5d9910730bc1fccc42c093dba52613bbfbeb5592444c28887240fd22f", + "bytes": 900, + "representation": "Git output bytes" + } + }, + { + "name": "Exactly four unstaged paths", + "passed": true, + "details": { + "status": " M HANDOFF.md\n M e2e/excel-grid.spec.ts\n M src/ui/panels/Artifact.tsx\n M tests/artifactXlsxExport.test.ts\n", + "branch": "codex/noderoom-desktop-account-20260905" + } + }, + { + "name": "7512 tracked inputs and 7508 protected files", + "passed": true, + "details": { + "count": 7512, + "protected": 7508, + "changed": [ + "HANDOFF.md", + "e2e/excel-grid.spec.ts", + "src/ui/panels/Artifact.tsx", + "tests/artifactXlsxExport.test.ts" + ], + "currentBindingsSha256": "93e782e1c6cf5b825256b1ef94f74187704d9cf91c8046480547df8e2f151269" + } + }, + { + "name": "37 installed manifests unchanged", + "passed": true, + "details": { + "count": 37, + "mismatch": [] + } + }, + { + "name": "475 current dist files equal retained built archive", + "passed": true, + "details": { + "count": 475, + "mismatch": [], + "namesEqual": true, + "archiveSha256": "beff80376f74dc220a4cc2d30b709218ca38bb25024b82f0d95fc9f894a2346e" + } + }, + { + "name": "Exact reviewed raw diff", + "passed": true, + "details": { + "sha256": "e17642f2b102c50cafd5aeb2ca9143b315e8a924bd88da7fc107b837218e62cf" + } + }, + { + "name": "Application delta is exactly two owned lookup replacements", + "passed": true, + "details": { + "oldLookupCount": 2, + "baseSha256": "701cbef1cbe9ca89dea754b203243dbd760aa04d9062f6053e1615f7cbeb6463", + "currentSha256": "013064b20f5fea117e2e8b96755d2d93fce490e9eb5f6845b1b1cd6f386b07a0" + } + }, + { + "name": "Causal knockout restores exactly the two old lookups", + "passed": true, + "details": { + "regressedSha256": "701cbef1cbe9ca89dea754b203243dbd760aa04d9062f6053e1615f7cbeb6463", + "finalSha256": "013064b20f5fea117e2e8b96755d2d93fce490e9eb5f6845b1b1cd6f386b07a0", + "testSha256": "3c48be964ca1c7e5083801d7875bc8a74f075f38e56fcab3e621e799b6ffc136" + } + }, + { + "name": "Seven actual ZIP/XML workbooks with five unique payloads", + "passed": true, + "details": { + "files": [ + { + "path": "before/Q3_variance.xlsx", + "bytes": 6631, + "sha256": "06dd606710f763f7e6016e81a8022667d69ab61f871cf50328484dec5f98dc31", + "gitBlobSha1": "98f62b33ada98750d69edf9123dccdb2fde4a853" + }, + { + "path": "after/Q3_variance.xlsx", + "bytes": 6685, + "sha256": "f932564a012f2cb46dea3a92eb90c80004895f5d55a0460c47ad7573379aa52f", + "gitBlobSha1": "aa969897f4d09ef8cdc6591021056fcf1dc31dd1" + }, + { + "path": "after/review-2-Q3_variance.xlsx", + "bytes": 6691, + "sha256": "fd854667bbd9f4c8cb55d62abc7f98fedd1b5c8b332f827f889a163f7952c1aa", + "gitBlobSha1": "6bec4b4d21729a71921b7ca9d1a76eb8cc43723d" + }, + { + "path": "browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/attachments/review-1-xlsx-8d322e6991638bbf510ae3e72dba7d7b1229f8bd.xlsx", + "bytes": 6685, + "sha256": "acac9fdf9711781302c79fb142dbbaeaf775e224a426c32204e8ab2f3a22db32", + "gitBlobSha1": "a128b1df8453f248efd1200d80c4b0e1a0c58886" + }, + { + "path": "browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/attachments/review-2-xlsx-d8bd07bada085ad796bb49244ecd789b4ea58285.xlsx", + "bytes": 6692, + "sha256": "495e4fd5fed1a6e4c5340b1cde5b9e1fb33559a37ca3c55993f79fa1a594623a", + "gitBlobSha1": "124cef5bd12e2b24543b6fbc17614542fa8cb6a8" + }, + { + "path": "browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/review-1-Q3_variance.xlsx", + "bytes": 6685, + "sha256": "acac9fdf9711781302c79fb142dbbaeaf775e224a426c32204e8ab2f3a22db32", + "gitBlobSha1": "a128b1df8453f248efd1200d80c4b0e1a0c58886" + }, + { + "path": "browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/review-2-Q3_variance.xlsx", + "bytes": 6692, + "sha256": "495e4fd5fed1a6e4c5340b1cde5b9e1fb33559a37ca3c55993f79fa1a594623a", + "gitBlobSha1": "124cef5bd12e2b24543b6fbc17614542fa8cb6a8" + } + ], + "accountLabels": [ + "Revenue", + "COGS", + "Gross profit", + "OpEx", + "Net income" + ] + } + }, + { + "name": "Actual five-label-only workbook delta, 25 other cells and all 30 styles intact", + "passed": true, + "details": { + "valueOrFormulaDiff": [ + "A2", + "A3", + "A4", + "A5", + "A6" + ], + "otherValueCells": 25, + "styleDiff": [], + "rawStylesSha256": "b162294abd5acb68586c0433eae4f5c97480787c08dda49d1fa145f3b7b0a692", + "beforeAndAfterUiDataExact": true + } + }, + { + "name": "Later note alone changes and prior actual payloads remain exact", + "passed": true, + "details": { + "matchedDiff": [ + "E2" + ], + "matchedNotes": [ + "Reviewer note: baseline input", + "Reviewer note: revised before handoff" + ], + "browserDiff": [ + "E2" + ], + "browserNotes": [ + "Reviewer note: checked source", + "Reviewer note: revised before handoff" + ], + "earlierFilesRereadExact": true + } + }, + { + "name": "Handoff local links and Chromium prerequisite", + "passed": true, + "details": [ + { + "target": "evidence/mobile-current-xlsx-20260905/README.md", + "exists": true, + "sha256": "7b51cfde32265cbdfa35df4eabc87f121be28bd37a41e5005e9b335f8da3e635" + }, + { + "target": "evidence/mobile-current-xlsx-20260905/reports/E6f_NODEROOM_MOBILE_EXPORT_FINAL_JUDGE.json", + "exists": true, + "sha256": "a3d2b9e6f0c032496589c3ef6046955627360f47f06a01acf8949548653aecca" + }, + { + "target": "evidence/shared-dependencies-20260905/README.md", + "exists": true, + "sha256": "81b1f04c43b6e1a020e6175f0753e7e4cca0340648c3c8b180113b40c3559df1" + }, + { + "target": "evidence/shared-dependencies-20260905/review/E6f_NODEROOM_SHARED_DEPENDENCY_FINAL_JUDGE.md", + "exists": true, + "sha256": "a186cc162c1680f92f44c90545b1430f49ab02f4af851f9f4dbd907353a63b24" + }, + { + "target": "evidence/shared-dependencies-20260905/review/E6f_NODEROOM_DEPENDENCY_PACKAGE_ENCODING_ADDENDUM.md", + "exists": true, + "sha256": "7b6c58557a0b06ba731b61a9efd4a9de70b281b63aba0f1a15f4762fcf01a686" + } + ] + }, + { + "name": "Actual 10-test final command and exact two knockout failures retained", + "passed": true, + "details": { + "final": { + "startedAt": "2026-09-05T16:50:38.493021+00:00", + "finishedAt": "2026-09-05T16:50:42.864967+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts", + "tests/mobileSampleWorkbookExport.test.ts", + "tests/mobileSheetDialog.test.tsx" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 4.36, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-final-scenarios.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + "knockout": { + "startedAt": "2026-09-05T16:45:35.596568+00:00", + "finishedAt": "2026-09-05T16:45:40.046441+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 1, + "elapsedSeconds": 4.453, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-final-fixture-knockout.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + } + } + }, + { + "name": "Actual three browser cases pass without retries or raised deadlines", + "passed": true, + "details": { + "stats": { + "startTime": "2026-09-05T16:49:35.740Z", + "duration": 11667.976, + "expected": 3, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + }, + "cases": [ + { + "title": "an uploaded plain sheet renders as an aligned dark work-surface grid, not the Excel-paper UI", + "tests": [ + { + "timeout": 30000, + "annotations": [], + "expectedStatus": "passed", + "projectId": "chromium", + "projectName": "chromium", + "results": [ + { + "workerIndex": 0, + "parallelIndex": 0, + "status": "passed", + "duration": 4521, + "errors": [], + "stdout": [], + "stderr": [], + "retry": 0, + "startTime": "2026-09-05T16:49:37.140Z", + "annotations": [], + "attachments": [] + } + ], + "status": "expected" + } + ] + }, + { + "title": "uploaded workbook renders in the shared Sheet 1 grid, not the false Excel-paper UI", + "tests": [ + { + "timeout": 30000, + "annotations": [], + "expectedStatus": "passed", + "projectId": "chromium", + "projectName": "chromium", + "results": [ + { + "workerIndex": 0, + "parallelIndex": 0, + "status": "passed", + "duration": 1639, + "errors": [], + "stdout": [], + "stderr": [], + "retry": 0, + "startTime": "2026-09-05T16:49:41.891Z", + "annotations": [], + "attachments": [] + } + ], + "status": "expected" + } + ] + }, + { + "title": "a reviewer reopens every visible Account label after current-sheet edits and repeated exports", + "tests": [ + { + "timeout": 30000, + "annotations": [], + "expectedStatus": "passed", + "projectId": "chromium", + "projectName": "chromium", + "results": [ + { + "workerIndex": 0, + "parallelIndex": 0, + "status": "passed", + "duration": 3731, + "errors": [], + "stdout": [], + "stderr": [], + "retry": 0, + "startTime": "2026-09-05T16:49:43.536Z", + "annotations": [], + "attachments": [ + { + "name": "review-1.xlsx", + "contentType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "path": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\browser-suite\\results\\excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium\\attachments\\review-1-xlsx-8d322e6991638bbf510ae3e72dba7d7b1229f8bd.xlsx" + }, + { + "name": "review-2.xlsx", + "contentType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "path": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\browser-suite\\results\\excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium\\attachments\\review-2-xlsx-d8bd07bada085ad796bb49244ecd789b4ea58285.xlsx" + } + ] + } + ], + "status": "expected" + } + ] + } + ], + "source": "Worker actual retained JSON, no independent browser rerun" + } + }, + { + "name": "Actual final build, Convex typecheck and design audit exit zero", + "passed": true, + "details": { + "account-final-build.log": { + "startedAt": "2026-09-05T16:45:52.517234+00:00", + "finishedAt": "2026-09-05T16:46:37.607725+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "run", + "build" + ], + "timeoutSeconds": 300, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 45.094, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-final-build.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + "account-convex-typecheck.log": { + "startedAt": "2026-09-05T16:50:11.238280+00:00", + "finishedAt": "2026-09-05T16:50:17.484680+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905/node_modules/typescript/bin/tsc", + "--noEmit", + "--project", + "convex/tsconfig.json", + "--pretty", + "false" + ], + "timeoutSeconds": 180, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 6.25, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-convex-typecheck.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + "account-design-audit.log": { + "startedAt": "2026-09-05T16:50:35.099323+00:00", + "finishedAt": "2026-09-05T16:50:37.487250+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "run", + "design:audit" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 2.391, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-design-audit.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + } + } + } +] diff --git a/evidence/desktop-account-20260905/judge/checks.json b/evidence/desktop-account-20260905/judge/checks.json new file mode 100644 index 00000000..d0eab2a6 --- /dev/null +++ b/evidence/desktop-account-20260905/judge/checks.json @@ -0,0 +1,521 @@ +{ + "at": "2026-09-05T17:09:46.629088+00:00", + "scope": "Read-only independent desktop Account source / raw artifact / ZIP XML verification; no runtime execution", + "checks": [ + { + "name": "Exact worker receipt", + "passed": true, + "details": { + "path": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f_NODEROOM_DESKTOP_ACCOUNT_REPAIR_RECEIPT.json", + "bytes": 4634, + "sha256": "15b55c6ba99bfdfedbe04bcbd9b2f4bbe3b51a0fce3c9c2a3d2708ae0f340f73", + "gitBlobSha1": "1e2e430a6ff8d71ca96f8ef8f9088698b256fda4" + } + }, + { + "name": "Exact freeze and manifest", + "passed": true, + "details": { + "freeze": { + "path": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\freeze.json", + "bytes": 4300, + "sha256": "4e8640d97bbfe6bedd46521f40c15bd3c24e161e37384cbbf35452bff4d15605", + "gitBlobSha1": "cd2c8b75bd8d522c3f5ce7828be89eba64ad7382" + }, + "manifest": { + "path": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\manifest.json", + "bytes": 30868, + "sha256": "4e5fb3dabe91e0515f4506e3e2b6389c6bffd9bdef2fb0735c360b9a66c0883f", + "gitBlobSha1": "054cfea65ff5668d252beaf628c513c4675d3ead" + } + } + }, + { + "name": "All 132 raw artifact bindings", + "passed": true, + "details": { + "count": 132, + "mismatch": [], + "extraNames": [] + } + }, + { + "name": "Four exact current source owners", + "passed": true, + "details": { + "source": [ + { + "path": "HANDOFF.md", + "bytes": 12495, + "sha256": "863cf1d6dc6a02b1a0cbfc547603164f60511face20a96f89592cdb4729a8035", + "gitBlobSha1": "49706cb18d223f12c4f0b1ad116e6f95f493801e" + }, + { + "path": "e2e/excel-grid.spec.ts", + "bytes": 10117, + "sha256": "a0f13b4194018d14b918dc90de827bce5969730b2b10bcb4ed611db6a4333f73", + "gitBlobSha1": "e9b9be5756c193dda6523dcab1fad7543b89b982" + }, + { + "path": "src/ui/panels/Artifact.tsx", + "bytes": 230374, + "sha256": "013064b20f5fea117e2e8b96755d2d93fce490e9eb5f6845b1b1cd6f386b07a0", + "gitBlobSha1": "37dac53ca1f89fb671db075898603bcdcb3ab796" + }, + { + "path": "tests/artifactXlsxExport.test.ts", + "bytes": 9444, + "sha256": "3c48be964ca1c7e5083801d7875bc8a74f075f38e56fcab3e621e799b6ffc136", + "gitBlobSha1": "424266f4a1225c11bdd66b381d3089990ca6376b" + } + ], + "sourceDigest": "c4484a6d673c6ae4a43a4e2ebbe1ce94a2903a9e8e74a6c02a5212f30180c4d1" + } + }, + { + "name": "Unchanged head", + "passed": true, + "details": { + "sha256": "a3b47e0c62a30037f782daad21f1e3f494945d123f0c5366f4d5b01b8b043d9e", + "bytes": 82, + "representation": "Git output bytes" + } + }, + { + "name": "Unchanged refs", + "passed": true, + "details": { + "sha256": "f07794386fdccb054b31c01567fd46458101cff69033c65a5c3125485eeb63df", + "bytes": 10482, + "representation": "Git output bytes" + } + }, + { + "name": "Unchanged index", + "passed": true, + "details": { + "sha256": "08be2cca888379e88a875ff7df9269c1a4eafde9fc6c13cf9c002df7b8945425", + "bytes": 983004, + "representation": "serialized ls-files --stage -z entries, not raw index file" + } + }, + { + "name": "Unchanged worktrees", + "passed": true, + "details": { + "sha256": "de1222d5d9910730bc1fccc42c093dba52613bbfbeb5592444c28887240fd22f", + "bytes": 900, + "representation": "Git output bytes" + } + }, + { + "name": "Exactly four unstaged paths", + "passed": true, + "details": { + "status": " M HANDOFF.md\n M e2e/excel-grid.spec.ts\n M src/ui/panels/Artifact.tsx\n M tests/artifactXlsxExport.test.ts\n", + "branch": "codex/noderoom-desktop-account-20260905" + } + }, + { + "name": "7512 tracked inputs and 7508 protected files", + "passed": true, + "details": { + "count": 7512, + "protected": 7508, + "changed": [ + "HANDOFF.md", + "e2e/excel-grid.spec.ts", + "src/ui/panels/Artifact.tsx", + "tests/artifactXlsxExport.test.ts" + ], + "currentBindingsSha256": "93e782e1c6cf5b825256b1ef94f74187704d9cf91c8046480547df8e2f151269" + } + }, + { + "name": "37 installed manifests unchanged", + "passed": true, + "details": { + "count": 37, + "mismatch": [] + } + }, + { + "name": "475 current dist files equal retained built archive", + "passed": true, + "details": { + "count": 475, + "mismatch": [], + "namesEqual": true, + "archiveSha256": "beff80376f74dc220a4cc2d30b709218ca38bb25024b82f0d95fc9f894a2346e" + } + }, + { + "name": "Exact reviewed raw diff", + "passed": true, + "details": { + "sha256": "e17642f2b102c50cafd5aeb2ca9143b315e8a924bd88da7fc107b837218e62cf" + } + }, + { + "name": "Application delta is exactly two owned lookup replacements", + "passed": true, + "details": { + "oldLookupCount": 2, + "baseSha256": "701cbef1cbe9ca89dea754b203243dbd760aa04d9062f6053e1615f7cbeb6463", + "currentSha256": "013064b20f5fea117e2e8b96755d2d93fce490e9eb5f6845b1b1cd6f386b07a0" + } + }, + { + "name": "Causal knockout restores exactly the two old lookups", + "passed": true, + "details": { + "regressedSha256": "701cbef1cbe9ca89dea754b203243dbd760aa04d9062f6053e1615f7cbeb6463", + "finalSha256": "013064b20f5fea117e2e8b96755d2d93fce490e9eb5f6845b1b1cd6f386b07a0", + "testSha256": "3c48be964ca1c7e5083801d7875bc8a74f075f38e56fcab3e621e799b6ffc136" + } + }, + { + "name": "Seven actual ZIP/XML workbooks with five unique payloads", + "passed": true, + "details": { + "files": [ + { + "path": "before/Q3_variance.xlsx", + "bytes": 6631, + "sha256": "06dd606710f763f7e6016e81a8022667d69ab61f871cf50328484dec5f98dc31", + "gitBlobSha1": "98f62b33ada98750d69edf9123dccdb2fde4a853" + }, + { + "path": "after/Q3_variance.xlsx", + "bytes": 6685, + "sha256": "f932564a012f2cb46dea3a92eb90c80004895f5d55a0460c47ad7573379aa52f", + "gitBlobSha1": "aa969897f4d09ef8cdc6591021056fcf1dc31dd1" + }, + { + "path": "after/review-2-Q3_variance.xlsx", + "bytes": 6691, + "sha256": "fd854667bbd9f4c8cb55d62abc7f98fedd1b5c8b332f827f889a163f7952c1aa", + "gitBlobSha1": "6bec4b4d21729a71921b7ca9d1a76eb8cc43723d" + }, + { + "path": "browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/attachments/review-1-xlsx-8d322e6991638bbf510ae3e72dba7d7b1229f8bd.xlsx", + "bytes": 6685, + "sha256": "acac9fdf9711781302c79fb142dbbaeaf775e224a426c32204e8ab2f3a22db32", + "gitBlobSha1": "a128b1df8453f248efd1200d80c4b0e1a0c58886" + }, + { + "path": "browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/attachments/review-2-xlsx-d8bd07bada085ad796bb49244ecd789b4ea58285.xlsx", + "bytes": 6692, + "sha256": "495e4fd5fed1a6e4c5340b1cde5b9e1fb33559a37ca3c55993f79fa1a594623a", + "gitBlobSha1": "124cef5bd12e2b24543b6fbc17614542fa8cb6a8" + }, + { + "path": "browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/review-1-Q3_variance.xlsx", + "bytes": 6685, + "sha256": "acac9fdf9711781302c79fb142dbbaeaf775e224a426c32204e8ab2f3a22db32", + "gitBlobSha1": "a128b1df8453f248efd1200d80c4b0e1a0c58886" + }, + { + "path": "browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/review-2-Q3_variance.xlsx", + "bytes": 6692, + "sha256": "495e4fd5fed1a6e4c5340b1cde5b9e1fb33559a37ca3c55993f79fa1a594623a", + "gitBlobSha1": "124cef5bd12e2b24543b6fbc17614542fa8cb6a8" + } + ], + "accountLabels": [ + "Revenue", + "COGS", + "Gross profit", + "OpEx", + "Net income" + ] + } + }, + { + "name": "Actual five-label-only workbook delta, 25 other cells and all 30 styles intact", + "passed": true, + "details": { + "valueOrFormulaDiff": [ + "A2", + "A3", + "A4", + "A5", + "A6" + ], + "otherValueCells": 25, + "styleDiff": [], + "rawStylesSha256": "b162294abd5acb68586c0433eae4f5c97480787c08dda49d1fa145f3b7b0a692", + "beforeAndAfterUiDataExact": true + } + }, + { + "name": "Later note alone changes and prior actual payloads remain exact", + "passed": true, + "details": { + "matchedDiff": [ + "E2" + ], + "matchedNotes": [ + "Reviewer note: baseline input", + "Reviewer note: revised before handoff" + ], + "browserDiff": [ + "E2" + ], + "browserNotes": [ + "Reviewer note: checked source", + "Reviewer note: revised before handoff" + ], + "earlierFilesRereadExact": true + } + }, + { + "name": "Handoff local links and Chromium prerequisite", + "passed": true, + "details": [ + { + "target": "evidence/mobile-current-xlsx-20260905/README.md", + "exists": true, + "sha256": "7b51cfde32265cbdfa35df4eabc87f121be28bd37a41e5005e9b335f8da3e635" + }, + { + "target": "evidence/mobile-current-xlsx-20260905/reports/E6f_NODEROOM_MOBILE_EXPORT_FINAL_JUDGE.json", + "exists": true, + "sha256": "a3d2b9e6f0c032496589c3ef6046955627360f47f06a01acf8949548653aecca" + }, + { + "target": "evidence/shared-dependencies-20260905/README.md", + "exists": true, + "sha256": "81b1f04c43b6e1a020e6175f0753e7e4cca0340648c3c8b180113b40c3559df1" + }, + { + "target": "evidence/shared-dependencies-20260905/review/E6f_NODEROOM_SHARED_DEPENDENCY_FINAL_JUDGE.md", + "exists": true, + "sha256": "a186cc162c1680f92f44c90545b1430f49ab02f4af851f9f4dbd907353a63b24" + }, + { + "target": "evidence/shared-dependencies-20260905/review/E6f_NODEROOM_DEPENDENCY_PACKAGE_ENCODING_ADDENDUM.md", + "exists": true, + "sha256": "7b6c58557a0b06ba731b61a9efd4a9de70b281b63aba0f1a15f4762fcf01a686" + } + ] + }, + { + "name": "Actual 10-test final command and exact two knockout failures retained", + "passed": true, + "details": { + "final": { + "startedAt": "2026-09-05T16:50:38.493021+00:00", + "finishedAt": "2026-09-05T16:50:42.864967+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts", + "tests/mobileSampleWorkbookExport.test.ts", + "tests/mobileSheetDialog.test.tsx" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 4.36, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-final-scenarios.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + "knockout": { + "startedAt": "2026-09-05T16:45:35.596568+00:00", + "finishedAt": "2026-09-05T16:45:40.046441+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 1, + "elapsedSeconds": 4.453, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-final-fixture-knockout.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + } + } + }, + { + "name": "Actual three browser cases pass without retries or raised deadlines", + "passed": true, + "details": { + "stats": { + "startTime": "2026-09-05T16:49:35.740Z", + "duration": 11667.976, + "expected": 3, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + }, + "cases": [ + { + "title": "an uploaded plain sheet renders as an aligned dark work-surface grid, not the Excel-paper UI", + "tests": [ + { + "timeout": 30000, + "annotations": [], + "expectedStatus": "passed", + "projectId": "chromium", + "projectName": "chromium", + "results": [ + { + "workerIndex": 0, + "parallelIndex": 0, + "status": "passed", + "duration": 4521, + "errors": [], + "stdout": [], + "stderr": [], + "retry": 0, + "startTime": "2026-09-05T16:49:37.140Z", + "annotations": [], + "attachments": [] + } + ], + "status": "expected" + } + ] + }, + { + "title": "uploaded workbook renders in the shared Sheet 1 grid, not the false Excel-paper UI", + "tests": [ + { + "timeout": 30000, + "annotations": [], + "expectedStatus": "passed", + "projectId": "chromium", + "projectName": "chromium", + "results": [ + { + "workerIndex": 0, + "parallelIndex": 0, + "status": "passed", + "duration": 1639, + "errors": [], + "stdout": [], + "stderr": [], + "retry": 0, + "startTime": "2026-09-05T16:49:41.891Z", + "annotations": [], + "attachments": [] + } + ], + "status": "expected" + } + ] + }, + { + "title": "a reviewer reopens every visible Account label after current-sheet edits and repeated exports", + "tests": [ + { + "timeout": 30000, + "annotations": [], + "expectedStatus": "passed", + "projectId": "chromium", + "projectName": "chromium", + "results": [ + { + "workerIndex": 0, + "parallelIndex": 0, + "status": "passed", + "duration": 3731, + "errors": [], + "stdout": [], + "stderr": [], + "retry": 0, + "startTime": "2026-09-05T16:49:43.536Z", + "annotations": [], + "attachments": [ + { + "name": "review-1.xlsx", + "contentType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "path": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\browser-suite\\results\\excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium\\attachments\\review-1-xlsx-8d322e6991638bbf510ae3e72dba7d7b1229f8bd.xlsx" + }, + { + "name": "review-2.xlsx", + "contentType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "path": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\browser-suite\\results\\excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium\\attachments\\review-2-xlsx-d8bd07bada085ad796bb49244ecd789b4ea58285.xlsx" + } + ] + } + ], + "status": "expected" + } + ] + } + ], + "source": "Worker actual retained JSON, no independent browser rerun" + } + }, + { + "name": "Actual final build, Convex typecheck and design audit exit zero", + "passed": true, + "details": { + "account-final-build.log": { + "startedAt": "2026-09-05T16:45:52.517234+00:00", + "finishedAt": "2026-09-05T16:46:37.607725+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "run", + "build" + ], + "timeoutSeconds": 300, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 45.094, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-final-build.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + "account-convex-typecheck.log": { + "startedAt": "2026-09-05T16:50:11.238280+00:00", + "finishedAt": "2026-09-05T16:50:17.484680+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905/node_modules/typescript/bin/tsc", + "--noEmit", + "--project", + "convex/tsconfig.json", + "--pretty", + "false" + ], + "timeoutSeconds": 180, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 6.25, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-convex-typecheck.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + "account-design-audit.log": { + "startedAt": "2026-09-05T16:50:35.099323+00:00", + "finishedAt": "2026-09-05T16:50:37.487250+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "run", + "design:audit" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 2.391, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-design-audit.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + } + } + } + ], + "passed": 22, + "failed": 0, + "sourceDigest": "c4484a6d673c6ae4a43a4e2ebbe1ce94a2903a9e8e74a6c02a5212f30180c4d1" +} diff --git a/evidence/desktop-account-20260905/judge/closing-custody.json b/evidence/desktop-account-20260905/judge/closing-custody.json new file mode 100644 index 00000000..1165aaa3 --- /dev/null +++ b/evidence/desktop-account-20260905/judge/closing-custody.json @@ -0,0 +1,8 @@ +{ + "at": "2026-09-05T17:14:42.453382+00:00", + "fourSourcesExact": true, + "headRefsEntryStreamWorktreeRegistrationsStatusUnchanged": true, + "indexMeaning": "ls-files --stage -z entry bytes; no raw index metadata assertion", + "sourceDigest": "c4484a6d673c6ae4a43a4e2ebbe1ce94a2903a9e8e74a6c02a5212f30180c4d1", + "noSourceIndexRefOrRuntimeMutationByJudge": true +} diff --git a/evidence/desktop-account-20260905/judge/collector-search-failure.txt b/evidence/desktop-account-20260905/judge/collector-search-failure.txt new file mode 100644 index 00000000..7d2fa3a4 --- /dev/null +++ b/evidence/desktop-account-20260905/judge/collector-search-failure.txt @@ -0,0 +1,7 @@ +Read-only collector search failed once with nonexistent/glob-as-literal paths. Source-range printing in the same call succeeded. This is a collector error, not a source/test failure. The corrected search was rg over the observed src directory, with no source writes or test run. + +Retained stderr from the failed tool call: +rg: src/app/seed*: The filename, directory name, or volume label syntax is incorrect. (os error 123) +rg: src/ui/grid.tsx: The system cannot find the file specified. (os error 2) +rg: src/domain: The system cannot find the file specified. (os error 2) +rg: src/app/store*: The filename, directory name, or volume label syntax is incorrect. (os error 123) diff --git a/evidence/desktop-account-20260905/judge/command-results.json b/evidence/desktop-account-20260905/judge/command-results.json new file mode 100644 index 00000000..61cb6232 --- /dev/null +++ b/evidence/desktop-account-20260905/judge/command-results.json @@ -0,0 +1,281 @@ +[ + { + "startedAt": "2026-09-05T16:49:31.824933+00:00", + "finishedAt": "2026-09-05T16:49:48.017732+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "C:/Users/hshum/.codex/worktrees/5dba/nodebench-ai/docs/plans/portfolio-recovery-20260904/E6f-noderoom-desktop-account-repair-01/run-browser-suite.mjs" + ], + "timeoutSeconds": 240, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 16.188, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-browser-suite.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:50:11.238280+00:00", + "finishedAt": "2026-09-05T16:50:17.484680+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905/node_modules/typescript/bin/tsc", + "--noEmit", + "--project", + "convex/tsconfig.json", + "--pretty", + "false" + ], + "timeoutSeconds": 180, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 6.25, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-convex-typecheck.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:50:35.099323+00:00", + "finishedAt": "2026-09-05T16:50:37.487250+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "run", + "design:audit" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 2.391, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-design-audit.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:45:52.517234+00:00", + "finishedAt": "2026-09-05T16:46:37.607725+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "run", + "build" + ], + "timeoutSeconds": 300, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 45.094, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-final-build.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:45:35.596568+00:00", + "finishedAt": "2026-09-05T16:45:40.046441+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 1, + "elapsedSeconds": 4.453, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-final-fixture-knockout.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:50:38.493021+00:00", + "finishedAt": "2026-09-05T16:50:42.864967+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts", + "tests/mobileSampleWorkbookExport.test.ts", + "tests/mobileSheetDialog.test.tsx" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 4.36, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-final-scenarios.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:48:03.345579+00:00", + "finishedAt": "2026-09-05T16:48:10.759509+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "C:/Users/hshum/.codex/worktrees/5dba/nodebench-ai/docs/plans/portfolio-recovery-20260904/E6f-noderoom-desktop-account-repair-01/observe-after.mjs" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 7.422, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-matched-after.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:36:08.191716+00:00", + "finishedAt": "2026-09-05T16:36:12.464936+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts", + "tests/mobileSampleWorkbookExport.test.ts" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 1, + "elapsedSeconds": 4.281, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-scenarios-after-02.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:37:48.875680+00:00", + "finishedAt": "2026-09-05T16:37:53.229245+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts", + "tests/mobileSampleWorkbookExport.test.ts" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 4.36, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-scenarios-after-03.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:35:06.877891+00:00", + "finishedAt": "2026-09-05T16:35:11.192289+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts", + "tests/mobileSampleWorkbookExport.test.ts" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 1, + "elapsedSeconds": 4.313, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-scenarios-after.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:34:42.752230+00:00", + "finishedAt": "2026-09-05T16:34:46.920539+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 1, + "elapsedSeconds": 4.172, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-scenarios-before-02.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:32:27.818950+00:00", + "finishedAt": "2026-09-05T16:33:15.159735+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 1, + "elapsedSeconds": 47.344, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-scenarios-before.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:36:13.542669+00:00", + "finishedAt": "2026-09-05T16:36:34.743435+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "run", + "typecheck", + "--", + "--pretty", + "false" + ], + "timeoutSeconds": 180, + "timedOut": false, + "exitCode": 2, + "elapsedSeconds": 21.203, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-typecheck.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:25:42.189978+00:00", + "finishedAt": "2026-09-05T16:26:06.097882+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "C:/Users/hshum/.codex/worktrees/5dba/nodebench-ai/docs/plans/portfolio-recovery-20260904/E6f-noderoom-desktop-account-repair-01/observe-before.mjs" + ], + "timeoutSeconds": 180, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 23.906, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\before-browser.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:22:53.001124+00:00", + "finishedAt": "2026-09-05T16:25:32.694036+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "run", + "build" + ], + "timeoutSeconds": 360, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 159.688, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\before-build.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:28:26.335288+00:00", + "finishedAt": "2026-09-05T16:28:27.089737+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "run", + "design:manifest" + ], + "timeoutSeconds": 60, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 0.75, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\before-design-manifest.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + } +] diff --git a/evidence/desktop-account-20260905/judge/freeze-desktop-account-judge.py.txt b/evidence/desktop-account-20260905/judge/freeze-desktop-account-judge.py.txt new file mode 100644 index 00000000..af50e341 --- /dev/null +++ b/evidence/desktop-account-20260905/judge/freeze-desktop-account-judge.py.txt @@ -0,0 +1,106 @@ +from pathlib import Path +import datetime, hashlib, json, re, shutil, struct, subprocess +P=Path(__file__).parent +O=P/'E6f-noderoom-desktop-account-repair-01' +J=P/'E6f-noderoom-desktop-account-judge' +R=Path('D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905') +sha=lambda b:hashlib.sha256(b).hexdigest() +def read(p):return json.loads(p.read_bytes().decode('utf-8-sig')) +def write(p,x):p.write_bytes((json.dumps(x,ensure_ascii=False,indent=2)+'\n').encode('utf8')) +def binding(p,label=None): + b=p.read_bytes();return {'path':label or str(p),'bytes':len(b),'sha256':sha(b)} +def git(*args):return subprocess.check_output(['git','--no-optional-locks',*args],cwd=R) +checks=read(J/'checks.json');assert checks['failed']==0 and checks['passed']==22 +freeze=read(O/'freeze.json') +for x in freeze['source']:assert sha((R/x['path']).read_bytes())==x['sha256'] +for label,args in {'head':['rev-parse','HEAD','HEAD^{tree}'],'refs':['for-each-ref','--format=%(refname) %(objectname)'],'index':['ls-files','--stage','-z'],'worktrees':['worktree','list','--porcelain']}.items(): + b=git(*args);assert b==(J/f'actual-{label}.bin').read_bytes() +assert git('status','--porcelain=v1')==(J/'actual-status.txt').read_bytes() +write(J/'closing-custody.json',{'at':datetime.datetime.now(datetime.timezone.utc).isoformat(),'fourSourcesExact':True,'headRefsEntryStreamWorktreeRegistrationsStatusUnchanged':True,'indexMeaning':'ls-files --stage -z entry bytes; no raw index metadata assertion','sourceDigest':freeze['sourceDigest'],'noSourceIndexRefOrRuntimeMutationByJudge':True}) +pngs=[ +('before/change-boundary.png','Actual Account column is marked by a labelled 3 px box. All five labels are visible; the downloaded baseline independently has five blank Account cells.'), +('after/change-boundary.png','Actual same initial five-label grid and baseline note. Labelled boundary encloses the same column; retained workbook now contains all five labels.'), +('before/desktop-memory-1440-downloaded.png','Unannotated baseline grid, five visible labels and baseline note; no visual redesign is needed to explain the file defect.'), +('after/desktop-memory-1440-downloaded.png','Unannotated current grid with the same labels/numbers/baseline note and a visible download status. Toolbar content/timestamps/recency differ, so no whole-image byte equality is claimed.'), +('after/desktop-memory-1440-later-download.png','Later note is visibly revised, version rises from v6 to v7, and all Account labels remain readable. The longer note naturally changes table column widths.'), +('browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/desktop-account-current-export.png','Separate ordinary browser suite shows the later note, five readable labels and download status after two actual file saves.'), +('browser-suite/uploaded-workbook-shared-grid.png','Existing generic uploaded model renders in the shared dark grid with selected D4 and visible values. This is a 1280 x 720 limited compatibility observation, not a whole-layout grade.'), +] +viewed=[] +for name,note in pngs: + b=(O/name).read_bytes();assert b[:8]==b'\x89PNG\r\n\x1a\n' + width,height=struct.unpack('>II',b[16:24]) + viewed.append({**binding(O/name,name),'width':width,'height':height,'viewedActualPixelsWith':'view_image','observation':note}) +write(J/'viewed-pixels.json',viewed) +excerpts=[] +for file,ranges in [('src/engine/demoRoom.ts',[(14,21),(225,236)]),('src/ui/panels/Artifact.tsx',[(1058,1078),(2440,2467),(2544,2563),(2651,2672)]),('tests/artifactXlsxExport.test.ts',[(1,25),(105,191)]),('e2e/excel-grid.spec.ts',[(134,185)])]: + raw=(R/file).read_bytes();lines=raw.decode('utf8').splitlines() + excerpts.append({'path':file,'sha256':sha(raw),'lines':[{'start':start,'end':min(end,len(lines)),'text':'\n'.join(f'{i}: {lines[i-1]}' for i in range(start,min(end,len(lines))+1))} for start,end in ranges]}) +write(J/'source-trace.json',excerpts) +failures=[{'artifact':x['path'],'sha256':x['sha256']} for x in read(J/'artifact-bindings.json') if any(k in x['path'] for k in ['account-scenarios-before','account-scenarios-after','account-typecheck.log','freeze-attempt-01.error','account-final-fixture-knockout.log'])] +write(J/'retained-failure-bindings.json',failures) +(J/'collector-search-failure.txt').write_bytes(('Read-only collector search failed once with nonexistent/glob-as-literal paths. Source-range printing in the same call succeeded. This is a collector error, not a source/test failure. The corrected search was rg over the observed src directory, with no source writes or test run.\n\nRetained stderr from the failed tool call:\nrg: src/app/seed*: The filename, directory name, or volume label syntax is incorrect. (os error 123)\nrg: src/ui/grid.tsx: The system cannot find the file specified. (os error 2)\nrg: src/domain: The system cannot find the file specified. (os error 2)\nrg: src/app/store*: The filename, directory name, or volume label syntax is incorrect. (os error 123)\n').encode('utf8')) +shutil.copyfile(P/'E6f-review-desktop-account.py',J/'review-desktop-account.py') +shutil.copyfile(Path(__file__),J/'freeze-desktop-account-judge.py') +payload=[binding(f,f.relative_to(J).as_posix()) for f in sorted(J.rglob('*')) if f.is_file() and f.name!='manifest.json'] +write(J/'manifest.json',{'schema':'bounded-independent-judge-artifacts/v1','selfExcluded':True,'files':payload,'artifactCount':len(payload)}) +limits=[ + 'Independent reviewer context was reused across portfolio tasks; this reviewer did not author the desktop implementation or its tests. No claim of a newly spawned context.', + 'No independent runtime/browser/full-suite replay was performed in this task. The independent work reread source/Git, all retained proof bytes, actual ZIP/XML payloads and seven actual PNGs, as requested. The retained worker runtime command logs are evidence of that worker execution.', + 'Both component cases use a typed mocked useStore fixture plus a replaced download-dispatch boundary; they execute the real Artifact projection and ExcelJS serialization. The sibling path is not a browser-certified uploaded canonical workbook. The worker phrase only browser dispatch is read in this narrower, explicit scope.', + 'The matched actual memory-engine workbooks use scalar values and strings. Managed formula/cache/number-format preservation is covered by the retained component tests; it is not inferred from those matched browser payloads.', + 'Four repeated edits and immediate duplicate activation per component case are a bounded repeat/burst check, not a long-duration load or multi-user concurrency certificate.', + 'Six viewed PNGs are 1440 x 960 Account boundaries/download states; the unchanged generic-uploaded screenshot is 1280 x 720. Fallback fonts, recency/timestamps, download status and note-length width changes remain visible. No whole-image equality, mobile/keyboard/accessibility/performance or full visual grade is claimed.', + 'Build metadata stamps merged base 034a8f963dfa037d860f5364032319506be3e2e0. Separately frozen raw application/test bytes bind the uncommitted repair. Initial after-source receipt writer failed before producing a file; corrected post-browser binding matches the pre-build normalization and current bytes.', + 'Original fixture omissions, TypeScript buffer-type failures, expected final knockout and packaging count error remain retained. One independent collector path search failure is retained separately; it did not execute the application.', + 'Index custody means identical serialized paths/modes/stages/blob IDs from ls-files --stage -z. It does not assert raw index-cache metadata bytes.', + 'Existing notebook failures, Windows native Excel timeout, absent nightly credential and inherited development advisory remain unresolved. No native Office, provider, shared-backend, deployment or production interaction was performed by this judgment.', + 'This approves source and its operator proof only. Portable publication, exact staged/committed bindings and normal shared CI remain parent-owned future steps. No whole repository readiness or human acceptance score is assigned.' +] +report={ + 'schema':'noderoom-desktop-account-independent-judge/v1', + 'at':datetime.datetime.now(datetime.timezone.utc).isoformat(), + 'mode':'Builder','namedProof':'NODEROOM-DESKTOP-ACCOUNT-EXPORT-01', + 'verdict':'APPROVED_SCOPED_SOURCE_AND_ACTUAL_EXPORT_PROOF', + 'blockingFindings':[], + 'requestTrace':'Make each individual repository usable and ready for developer/user handoff, using planner-worker-judge and actual interaction/artifact evidence.', + 'reviewer':{'agent':'/root/nodemem_mobile_judge','independentNonAuthor':True,'contextReused':True}, + 'candidate':str(R),'baseCommit':freeze['baseCommit'],'baseTree':freeze['baseTree'],'branch':freeze['branch'], + 'source':freeze['source'],'sourceDigest':freeze['sourceDigest'],'sourceDigestFormula':freeze['sourceDigestFormula'], + 'receipt':binding(P/'E6f_NODEROOM_DESKTOP_ACCOUNT_REPAIR_RECEIPT.json'), + 'freeze':binding(O/'freeze.json'),'workerManifest':binding(O/'manifest.json'), + 'rootCause':{'persona':'Reviewer downloading the current desktop Q3 variance sheet for handoff','observedFailure':'Five readable Account labels were missing in the actual XLSX.','producer':'src/engine/demoRoom.ts:227 creates __label; Artifact.tsx:1078/2670 renders that same key.','fault':'Both canonical export projections queried the nonexistent __account key at lines 2461 and 2556.','repair':'Exactly those two lookups now use existing __label; no alias, new abstraction or adjacent application change.','causalEvidence':'Exact final tests with just those two lookups restored fail both current/sibling label scenarios with five null cells; four original cases pass.'}, + 'independentChecks':checks, + 'workbookProof':{'method':'Python standard-library ZIP/XML parsing, independent of ExcelJS and native Office','files':7,'uniquePayloads':5,'onlyBeforeAfterChangedCells':['A2','A3','A4','A5','A6'],'restoredLabels':['Revenue','COGS','Gross profit','OpEx','Net income'],'otherValuesAndFormulasPreserved':25,'cellStylesPreserved':30,'rawStylesXmlIdentical':True,'laterExportOnlyChangedCell':'E2','earlierPayloadsRereadExact':True,'raw':binding(J/'independent-zip-xml.json')}, + 'retainedRuntimeResults':{'affectedTests':{'files':3,'passed':10},'browserCases':{'passed':3,'failed':0,'skipped':0,'flaky':0,'retries':0,'timeoutMs':30000},'knockout':{'expectedExit':1,'labelCasesFailed':2,'originalCasesPassed':4},'normalBuildIncludingRootTypeScript':'PASS','convexTypeScript':'PASS','designAudit':'PASS','independentRuntimeReruns':0}, + 'custody':{'workerArtifacts':132,'trackedInputs':7512,'protectedTrackedInputs':7508,'installedManifests':37,'distFiles':475,'allRawBindingsExact':True,'serializedIndexEntriesRefsHeadWorktreesUnchanged':True,'fourUnstagedPathsOnly':True,'closingGuard':binding(J/'closing-custody.json')}, + 'viewedPixels':viewed,'limitations':limits, + 'grades':{'scope':'AGENT_EVALUATED_ONLY','visual':None,'responsive':None,'interaction':None,'accessibility':None,'performance':None,'production':None,'overall':None,'humanAcceptance':None}, + 'nextStep':'Parent may prepare exact portable evidence and a truthful HANDOFF update, then freeze that metadata for a bounded byte/link review before ordinary commit and shared CI.', + 'judgeArtifactManifest':binding(J/'manifest.json') +} +write(P/'E6f_NODEROOM_DESKTOP_ACCOUNT_FINAL_JUDGE.json',report) +md='''Builder. **APPROVED within the desktop Account export scope.** A reviewer can now download the five Account labels already visible in the Q3 variance grid. The independent checks found no blocking source or proof defect. + +**Re your request:** make each repository usable and ready for developer/user handoff using planner-worker-judge, including real interaction evidence. This judgment verifies the bounded desktop download correction and its actual retained files; overall repository readiness remains unresolved. + +The [exact judgment](E6f_NODEROOM_DESKTOP_ACCOUNT_FINAL_JUDGE.json) binds four unstaged owners on merged base `034a8f963dfa037d860f5364032319506be3e2e0`, branch `codex/noderoom-desktop-account-20260905`, source digest `c4484a6d673c6ae4a43a4e2ebbe1ce94a2903a9e8e74a6c02a5212f30180c4d1`. Its formula and all per-file hashes are in JSON. The reviewer did not author this implementation; reviewer context was reused across portfolio tasks. + +The seed stores labels under `__label` and the grid renders that key. Both canonical export branches instead read `__account`, causing five blank downloaded cells. The application diff changes exactly those two lookups. Replacing only those repaired lookups with their old spelling against the exact final tests yields two expected label failures with five null cells; the four original cases still pass. [Source trace](E6f-noderoom-desktop-account-judge/source-trace.json), [raw knockout](E6f-noderoom-desktop-account-repair-01/account-final-fixture-knockout.log). + +Independent read-only verification passed **22/22 checks**. All 132 worker artifacts, four current owners, 7,508 protected tracked files, 37 installed manifests and 475 built files match their frozen bindings. The full 7,512 tracked-input readback agrees with the worker receipt. HEAD, refs, worktree registrations and serialized index entries are unchanged; this does not assert raw index-cache bytes. [Checks](E6f-noderoom-desktop-account-judge/checks.json), [closing guard](E6f-noderoom-desktop-account-judge/closing-custody.json). + +Direct ZIP/XML parsing reopened seven retained XLSX copies representing five unique payloads, including the failing baseline. Exactly `A2:A6` change to Revenue, COGS, Gross profit, OpEx and Net income. The other 25 cell values/formulas and all 30 cell styles are identical; the raw styles XML also matches. Both later-export journeys change only `E2`, and rereading the earlier downloads confirms their original hashes and notes. No ExcelJS oracle or native Office was used for this independent file check. [Independent workbook readback](E6f-noderoom-desktop-account-judge/independent-zip-xml.json). + +Seven actual PNGs were viewed: the labelled before/after 3 px boundaries, three unannotated matched export states, the separate browser Account result and the existing generic uploaded grid. Six Account images are 1440 × 960; the generic grid is 1280 × 720. The five labels and numeric context remain readable, and the later note/version are visible. Timestamps, recency, toolbar download status and longer-note column widths vary, so this is not a whole-image equality or full visual-quality claim. [Viewed pixels and hashes](E6f-noderoom-desktop-account-judge/viewed-pixels.json). + +The retained actual commands pass ten affected scenarios across three files, all three browser cases with zero retries/skips/flakiness and unchanged 30-second budgets, the normal build including root TypeScript, Convex TypeScript and design audit. No additional runtime/browser replay was needed for this bounded review. Both component cases use a typed mocked store plus a replaced download-dispatch boundary while exercising the real component projection and ExcelJS serialization. The current canonical sheet additionally has an actual memory-engine browser journey; the sibling case is not an uploaded-canonical browser certificate. Four later edits and immediate duplicate activation per case establish bounded repeat/burst behavior, not sustained-load certification. [Actual command ledger](E6f-noderoom-desktop-account-judge/command-results.json). + +Build metadata names the merged base; separate source hashes bind the working repair. The first post-browser source-binding writer failed before output and was corrected using unchanged pre-build hashes. Original fixture, buffer typing and packaging failures remain preserved, as does one judge collector search error from using nonexistent paths. No tests were weakened or failed evidence discarded. + +HANDOFF accurately explains the keyless memory entry, Chromium prerequisite, actual replay commands, typed sibling scope and existing holds. The original notebook failures, Windows native Excel timeout, nightly credential and inherited development advisory remain unresolved. There were no provider, native Office, deployment or shared-backend actions in this review; all full visual, responsive, interaction, accessibility, performance, production and human grades remain null. + +The parent can now publish the exact proof and update the current handoff, then request the bounded metadata byte/link review before ordinary commit and normal shared CI. [Bounded judge artifact manifest](E6f-noderoom-desktop-account-judge/manifest.json). +''' +(P/'E6f_NODEROOM_DESKTOP_ACCOUNT_FINAL_JUDGE.md').write_bytes(md.encode('utf8')) +print(json.dumps({'verdict':report['verdict'],'json':str(P/'E6f_NODEROOM_DESKTOP_ACCOUNT_FINAL_JUDGE.json'),'jsonSha256':sha((P/'E6f_NODEROOM_DESKTOP_ACCOUNT_FINAL_JUDGE.json').read_bytes()),'mdSha256':sha((P/'E6f_NODEROOM_DESKTOP_ACCOUNT_FINAL_JUDGE.md').read_bytes()),'manifestSha256':sha((J/'manifest.json').read_bytes()),'judgeArtifactCount':len(payload)},ensure_ascii=True)) diff --git a/evidence/desktop-account-20260905/judge/handoff-links.json b/evidence/desktop-account-20260905/judge/handoff-links.json new file mode 100644 index 00000000..131af6b0 --- /dev/null +++ b/evidence/desktop-account-20260905/judge/handoff-links.json @@ -0,0 +1,27 @@ +[ + { + "target": "evidence/mobile-current-xlsx-20260905/README.md", + "exists": true, + "sha256": "7b51cfde32265cbdfa35df4eabc87f121be28bd37a41e5005e9b335f8da3e635" + }, + { + "target": "evidence/mobile-current-xlsx-20260905/reports/E6f_NODEROOM_MOBILE_EXPORT_FINAL_JUDGE.json", + "exists": true, + "sha256": "a3d2b9e6f0c032496589c3ef6046955627360f47f06a01acf8949548653aecca" + }, + { + "target": "evidence/shared-dependencies-20260905/README.md", + "exists": true, + "sha256": "81b1f04c43b6e1a020e6175f0753e7e4cca0340648c3c8b180113b40c3559df1" + }, + { + "target": "evidence/shared-dependencies-20260905/review/E6f_NODEROOM_SHARED_DEPENDENCY_FINAL_JUDGE.md", + "exists": true, + "sha256": "a186cc162c1680f92f44c90545b1430f49ab02f4af851f9f4dbd907353a63b24" + }, + { + "target": "evidence/shared-dependencies-20260905/review/E6f_NODEROOM_DEPENDENCY_PACKAGE_ENCODING_ADDENDUM.md", + "exists": true, + "sha256": "7b6c58557a0b06ba731b61a9efd4a9de70b281b63aba0f1a15f4762fcf01a686" + } +] diff --git a/evidence/desktop-account-20260905/judge/independent-zip-xml.json b/evidence/desktop-account-20260905/judge/independent-zip-xml.json new file mode 100644 index 00000000..b3cbb788 --- /dev/null +++ b/evidence/desktop-account-20260905/judge/independent-zip-xml.json @@ -0,0 +1,1486 @@ +[ + { + "file": { + "path": "before/Q3_variance.xlsx", + "bytes": 6631, + "sha256": "06dd606710f763f7e6016e81a8022667d69ab61f871cf50328484dec5f98dc31", + "gitBlobSha1": "98f62b33ada98750d69edf9123dccdb2fde4a853" + }, + "sheetNames": [ + "Q3 variance" + ], + "stylesSha256": "b162294abd5acb68586c0433eae4f5c97480787c08dda49d1fa145f3b7b0a692", + "cells": { + "A1": { + "value": "Account", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B1": { + "value": "Q2", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C1": { + "value": "Q3", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D1": { + "value": "Variance", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E1": { + "value": "Note", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B2": { + "value": "$10,000", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C2": { + "value": "$12,400", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D2": { + "value": "+24%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E2": { + "value": "Reviewer note: baseline input", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B3": { + "value": "$4,000", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C3": { + "value": "$5,100", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D3": { + "value": "+27.5%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B4": { + "value": "$6,000", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C4": { + "value": "$7,300", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D4": { + "value": "+21.7%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B5": { + "value": "$2,200", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C5": { + "value": "$2,650", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B6": { + "value": "$3,800", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C6": { + "value": "$4,650", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D6": { + "value": "+22.4%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A2": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A3": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E3": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A4": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E4": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A5": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D5": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E5": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A6": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E6": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + } + }, + "zipMembers": [ + "[Content_Types].xml", + "_rels/", + "_rels/.rels", + "xl/", + "xl/_rels/", + "xl/_rels/workbook.xml.rels", + "xl/worksheets/", + "xl/worksheets/sheet1.xml", + "xl/sharedStrings.xml", + "xl/theme/", + "xl/theme/theme1.xml", + "xl/styles.xml", + "docProps/", + "docProps/app.xml", + "docProps/core.xml", + "xl/workbook.xml" + ] + }, + { + "file": { + "path": "after/Q3_variance.xlsx", + "bytes": 6685, + "sha256": "f932564a012f2cb46dea3a92eb90c80004895f5d55a0460c47ad7573379aa52f", + "gitBlobSha1": "aa969897f4d09ef8cdc6591021056fcf1dc31dd1" + }, + "sheetNames": [ + "Q3 variance" + ], + "stylesSha256": "b162294abd5acb68586c0433eae4f5c97480787c08dda49d1fa145f3b7b0a692", + "cells": { + "A1": { + "value": "Account", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B1": { + "value": "Q2", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C1": { + "value": "Q3", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D1": { + "value": "Variance", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E1": { + "value": "Note", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A2": { + "value": "Revenue", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B2": { + "value": "$10,000", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C2": { + "value": "$12,400", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D2": { + "value": "+24%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E2": { + "value": "Reviewer note: baseline input", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A3": { + "value": "COGS", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B3": { + "value": "$4,000", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C3": { + "value": "$5,100", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D3": { + "value": "+27.5%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A4": { + "value": "Gross profit", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B4": { + "value": "$6,000", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C4": { + "value": "$7,300", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D4": { + "value": "+21.7%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A5": { + "value": "OpEx", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B5": { + "value": "$2,200", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C5": { + "value": "$2,650", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A6": { + "value": "Net income", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B6": { + "value": "$3,800", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C6": { + "value": "$4,650", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D6": { + "value": "+22.4%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E3": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E4": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D5": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E5": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E6": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + } + }, + "zipMembers": [ + "[Content_Types].xml", + "_rels/", + "_rels/.rels", + "xl/", + "xl/_rels/", + "xl/_rels/workbook.xml.rels", + "xl/worksheets/", + "xl/worksheets/sheet1.xml", + "xl/sharedStrings.xml", + "xl/theme/", + "xl/theme/theme1.xml", + "xl/styles.xml", + "docProps/", + "docProps/app.xml", + "docProps/core.xml", + "xl/workbook.xml" + ] + }, + { + "file": { + "path": "after/review-2-Q3_variance.xlsx", + "bytes": 6691, + "sha256": "fd854667bbd9f4c8cb55d62abc7f98fedd1b5c8b332f827f889a163f7952c1aa", + "gitBlobSha1": "6bec4b4d21729a71921b7ca9d1a76eb8cc43723d" + }, + "sheetNames": [ + "Q3 variance" + ], + "stylesSha256": "b162294abd5acb68586c0433eae4f5c97480787c08dda49d1fa145f3b7b0a692", + "cells": { + "A1": { + "value": "Account", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B1": { + "value": "Q2", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C1": { + "value": "Q3", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D1": { + "value": "Variance", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E1": { + "value": "Note", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A2": { + "value": "Revenue", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B2": { + "value": "$10,000", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C2": { + "value": "$12,400", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D2": { + "value": "+24%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E2": { + "value": "Reviewer note: revised before handoff", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A3": { + "value": "COGS", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B3": { + "value": "$4,000", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C3": { + "value": "$5,100", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D3": { + "value": "+27.5%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A4": { + "value": "Gross profit", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B4": { + "value": "$6,000", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C4": { + "value": "$7,300", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D4": { + "value": "+21.7%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A5": { + "value": "OpEx", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B5": { + "value": "$2,200", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C5": { + "value": "$2,650", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A6": { + "value": "Net income", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B6": { + "value": "$3,800", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C6": { + "value": "$4,650", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D6": { + "value": "+22.4%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E3": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E4": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D5": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E5": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E6": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + } + }, + "zipMembers": [ + "[Content_Types].xml", + "_rels/", + "_rels/.rels", + "xl/", + "xl/_rels/", + "xl/_rels/workbook.xml.rels", + "xl/worksheets/", + "xl/worksheets/sheet1.xml", + "xl/sharedStrings.xml", + "xl/theme/", + "xl/theme/theme1.xml", + "xl/styles.xml", + "docProps/", + "docProps/app.xml", + "docProps/core.xml", + "xl/workbook.xml" + ] + }, + { + "file": { + "path": "browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/attachments/review-1-xlsx-8d322e6991638bbf510ae3e72dba7d7b1229f8bd.xlsx", + "bytes": 6685, + "sha256": "acac9fdf9711781302c79fb142dbbaeaf775e224a426c32204e8ab2f3a22db32", + "gitBlobSha1": "a128b1df8453f248efd1200d80c4b0e1a0c58886" + }, + "sheetNames": [ + "Q3 variance" + ], + "stylesSha256": "b162294abd5acb68586c0433eae4f5c97480787c08dda49d1fa145f3b7b0a692", + "cells": { + "A1": { + "value": "Account", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B1": { + "value": "Q2", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C1": { + "value": "Q3", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D1": { + "value": "Variance", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E1": { + "value": "Note", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A2": { + "value": "Revenue", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B2": { + "value": "$10,000", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C2": { + "value": "$12,400", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D2": { + "value": "+24%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E2": { + "value": "Reviewer note: checked source", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A3": { + "value": "COGS", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B3": { + "value": "$4,000", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C3": { + "value": "$5,100", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D3": { + "value": "+27.5%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A4": { + "value": "Gross profit", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B4": { + "value": "$6,000", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C4": { + "value": "$7,300", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D4": { + "value": "+21.7%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A5": { + "value": "OpEx", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B5": { + "value": "$2,200", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C5": { + "value": "$2,650", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A6": { + "value": "Net income", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B6": { + "value": "$3,800", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C6": { + "value": "$4,650", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D6": { + "value": "+22.4%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E3": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E4": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D5": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E5": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E6": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + } + }, + "zipMembers": [ + "[Content_Types].xml", + "_rels/", + "_rels/.rels", + "xl/", + "xl/_rels/", + "xl/_rels/workbook.xml.rels", + "xl/worksheets/", + "xl/worksheets/sheet1.xml", + "xl/sharedStrings.xml", + "xl/theme/", + "xl/theme/theme1.xml", + "xl/styles.xml", + "docProps/", + "docProps/app.xml", + "docProps/core.xml", + "xl/workbook.xml" + ] + }, + { + "file": { + "path": "browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/attachments/review-2-xlsx-d8bd07bada085ad796bb49244ecd789b4ea58285.xlsx", + "bytes": 6692, + "sha256": "495e4fd5fed1a6e4c5340b1cde5b9e1fb33559a37ca3c55993f79fa1a594623a", + "gitBlobSha1": "124cef5bd12e2b24543b6fbc17614542fa8cb6a8" + }, + "sheetNames": [ + "Q3 variance" + ], + "stylesSha256": "b162294abd5acb68586c0433eae4f5c97480787c08dda49d1fa145f3b7b0a692", + "cells": { + "A1": { + "value": "Account", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B1": { + "value": "Q2", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C1": { + "value": "Q3", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D1": { + "value": "Variance", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E1": { + "value": "Note", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A2": { + "value": "Revenue", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B2": { + "value": "$10,000", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C2": { + "value": "$12,400", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D2": { + "value": "+24%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E2": { + "value": "Reviewer note: revised before handoff", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A3": { + "value": "COGS", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B3": { + "value": "$4,000", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C3": { + "value": "$5,100", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D3": { + "value": "+27.5%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A4": { + "value": "Gross profit", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B4": { + "value": "$6,000", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C4": { + "value": "$7,300", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D4": { + "value": "+21.7%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A5": { + "value": "OpEx", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B5": { + "value": "$2,200", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C5": { + "value": "$2,650", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A6": { + "value": "Net income", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B6": { + "value": "$3,800", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C6": { + "value": "$4,650", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D6": { + "value": "+22.4%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E3": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E4": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D5": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E5": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E6": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + } + }, + "zipMembers": [ + "[Content_Types].xml", + "_rels/", + "_rels/.rels", + "xl/", + "xl/_rels/", + "xl/_rels/workbook.xml.rels", + "xl/worksheets/", + "xl/worksheets/sheet1.xml", + "xl/sharedStrings.xml", + "xl/theme/", + "xl/theme/theme1.xml", + "xl/styles.xml", + "docProps/", + "docProps/app.xml", + "docProps/core.xml", + "xl/workbook.xml" + ] + }, + { + "file": { + "path": "browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/review-1-Q3_variance.xlsx", + "bytes": 6685, + "sha256": "acac9fdf9711781302c79fb142dbbaeaf775e224a426c32204e8ab2f3a22db32", + "gitBlobSha1": "a128b1df8453f248efd1200d80c4b0e1a0c58886" + }, + "sheetNames": [ + "Q3 variance" + ], + "stylesSha256": "b162294abd5acb68586c0433eae4f5c97480787c08dda49d1fa145f3b7b0a692", + "cells": { + "A1": { + "value": "Account", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B1": { + "value": "Q2", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C1": { + "value": "Q3", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D1": { + "value": "Variance", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E1": { + "value": "Note", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A2": { + "value": "Revenue", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B2": { + "value": "$10,000", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C2": { + "value": "$12,400", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D2": { + "value": "+24%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E2": { + "value": "Reviewer note: checked source", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A3": { + "value": "COGS", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B3": { + "value": "$4,000", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C3": { + "value": "$5,100", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D3": { + "value": "+27.5%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A4": { + "value": "Gross profit", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B4": { + "value": "$6,000", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C4": { + "value": "$7,300", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D4": { + "value": "+21.7%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A5": { + "value": "OpEx", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B5": { + "value": "$2,200", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C5": { + "value": "$2,650", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A6": { + "value": "Net income", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B6": { + "value": "$3,800", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C6": { + "value": "$4,650", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D6": { + "value": "+22.4%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E3": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E4": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D5": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E5": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E6": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + } + }, + "zipMembers": [ + "[Content_Types].xml", + "_rels/", + "_rels/.rels", + "xl/", + "xl/_rels/", + "xl/_rels/workbook.xml.rels", + "xl/worksheets/", + "xl/worksheets/sheet1.xml", + "xl/sharedStrings.xml", + "xl/theme/", + "xl/theme/theme1.xml", + "xl/styles.xml", + "docProps/", + "docProps/app.xml", + "docProps/core.xml", + "xl/workbook.xml" + ] + }, + { + "file": { + "path": "browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/review-2-Q3_variance.xlsx", + "bytes": 6692, + "sha256": "495e4fd5fed1a6e4c5340b1cde5b9e1fb33559a37ca3c55993f79fa1a594623a", + "gitBlobSha1": "124cef5bd12e2b24543b6fbc17614542fa8cb6a8" + }, + "sheetNames": [ + "Q3 variance" + ], + "stylesSha256": "b162294abd5acb68586c0433eae4f5c97480787c08dda49d1fa145f3b7b0a692", + "cells": { + "A1": { + "value": "Account", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B1": { + "value": "Q2", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C1": { + "value": "Q3", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D1": { + "value": "Variance", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E1": { + "value": "Note", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A2": { + "value": "Revenue", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B2": { + "value": "$10,000", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C2": { + "value": "$12,400", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D2": { + "value": "+24%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E2": { + "value": "Reviewer note: revised before handoff", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A3": { + "value": "COGS", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B3": { + "value": "$4,000", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C3": { + "value": "$5,100", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D3": { + "value": "+27.5%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A4": { + "value": "Gross profit", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B4": { + "value": "$6,000", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C4": { + "value": "$7,300", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D4": { + "value": "+21.7%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A5": { + "value": "OpEx", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B5": { + "value": "$2,200", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C5": { + "value": "$2,650", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "A6": { + "value": "Net income", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "B6": { + "value": "$3,800", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "C6": { + "value": "$4,650", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D6": { + "value": "+22.4%", + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E3": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E4": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "D5": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E5": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + }, + "E6": { + "value": null, + "formula": null, + "styleIndex": 0, + "styleXml": "" + } + }, + "zipMembers": [ + "[Content_Types].xml", + "_rels/", + "_rels/.rels", + "xl/", + "xl/_rels/", + "xl/_rels/workbook.xml.rels", + "xl/worksheets/", + "xl/worksheets/sheet1.xml", + "xl/sharedStrings.xml", + "xl/theme/", + "xl/theme/theme1.xml", + "xl/styles.xml", + "docProps/", + "docProps/app.xml", + "docProps/core.xml", + "xl/workbook.xml" + ] + } +] diff --git a/evidence/desktop-account-20260905/judge/manifest.json b/evidence/desktop-account-20260905/judge/manifest.json new file mode 100644 index 00000000..ab79e62d --- /dev/null +++ b/evidence/desktop-account-20260905/judge/manifest.json @@ -0,0 +1,107 @@ +{ + "schema": "bounded-independent-judge-artifacts/v1", + "selfExcluded": true, + "files": [ + { + "path": "actual-head.bin", + "bytes": 82, + "sha256": "a3b47e0c62a30037f782daad21f1e3f494945d123f0c5366f4d5b01b8b043d9e" + }, + { + "path": "actual-index.bin", + "bytes": 983004, + "sha256": "08be2cca888379e88a875ff7df9269c1a4eafde9fc6c13cf9c002df7b8945425" + }, + { + "path": "actual-refs.bin", + "bytes": 10482, + "sha256": "f07794386fdccb054b31c01567fd46458101cff69033c65a5c3125485eeb63df" + }, + { + "path": "actual-source.diff", + "bytes": 21105, + "sha256": "e17642f2b102c50cafd5aeb2ca9143b315e8a924bd88da7fc107b837218e62cf" + }, + { + "path": "actual-status.txt", + "bytes": 106, + "sha256": "b20623a321bc49a827209c22a4343f4a0e966e84fa38f17a1add4af2897053fb" + }, + { + "path": "actual-worktrees.bin", + "bytes": 900, + "sha256": "de1222d5d9910730bc1fccc42c093dba52613bbfbeb5592444c28887240fd22f" + }, + { + "path": "artifact-bindings.json", + "bytes": 29198, + "sha256": "d58f0b6bc92ae504b4e296cf87e8acf1806f3fc436f2fd1889bac6b72fa22506" + }, + { + "path": "checks-in-progress.json", + "bytes": 19393, + "sha256": "81ddbc9f5ca984faa3bb07b88f092f6d4b674da8eb43f04ede8403f2180c8b7a" + }, + { + "path": "checks.json", + "bytes": 20715, + "sha256": "c2654b4e4b7d99f4c2c64589d1a8a63baa8193c482c96e74e2ebb7ae7c8e4335" + }, + { + "path": "closing-custody.json", + "bytes": 366, + "sha256": "8925233fdf62d82c72c96ff73fae4ea0fd461efbf621b1b5af91e9b3be1e0669" + }, + { + "path": "collector-search-failure.txt", + "bytes": 675, + "sha256": "5adf14eb0f01f568a7fd6962bb08b27b5b7b1896a887cef848bb0b5a935cc6ac" + }, + { + "path": "command-results.json", + "bytes": 13244, + "sha256": "1cae9b8d88b0bc5e58c9b7207059666cb5591c3dba62dd04fc52ddbe40b2b491" + }, + { + "path": "freeze-desktop-account-judge.py", + "bytes": 17188, + "sha256": "b253a2f9efd27e59f673ebe3dd1eef2895f907da64f9af91d746fb46e3728a8d" + }, + { + "path": "handoff-links.json", + "bytes": 1013, + "sha256": "6d7be4b59458260393283be54a86a38bdd87cedb1797b048d46c686eecb366c0" + }, + { + "path": "independent-zip-xml.json", + "bytes": 63293, + "sha256": "04125b608e845e44142628f2aa7cb66f0d481083ca614fc615baf0518b5c407a" + }, + { + "path": "retained-failure-bindings.json", + "bytes": 1852, + "sha256": "71be7ba4fbb1f96e1afe948b0eafdd56d0c6b9207191372451df652f78051b22" + }, + { + "path": "review-desktop-account.py", + "bytes": 13495, + "sha256": "a314fede2a7190cd0e212773a5ccd8d36542afcae37d830e461387035eba92f4" + }, + { + "path": "source-bindings.json", + "bytes": 849, + "sha256": "ed994576e577eb52c3c3cc85fba4cb4cc3df2fc43bc42f7ca1e1fb202fa2d3dc" + }, + { + "path": "source-trace.json", + "bytes": 19826, + "sha256": "e0afe8c9b1dbda60314767bcb000f383849baccbe2748bc9ff165338ee5113c1" + }, + { + "path": "viewed-pixels.json", + "bytes": 3040, + "sha256": "b65e5bf14d7db89f5de730140891c0b325b9abd1c9e7ef46879ee9fdbf223d7f" + } + ], + "artifactCount": 20 +} diff --git a/evidence/desktop-account-20260905/judge/retained-failure-bindings.json b/evidence/desktop-account-20260905/judge/retained-failure-bindings.json new file mode 100644 index 00000000..4d569d97 --- /dev/null +++ b/evidence/desktop-account-20260905/judge/retained-failure-bindings.json @@ -0,0 +1,54 @@ +[ + { + "artifact": "account-final-fixture-knockout.log", + "sha256": "b9b304b0456a20254297a859845f2e78911afc2f2b3e61f7719da0f0c64e854c" + }, + { + "artifact": "account-scenarios-after-02.command.json", + "sha256": "ec0e0ebfb4d65fa32458d1804c49b8e405f95c4aa9081a57132051151b0cea68" + }, + { + "artifact": "account-scenarios-after-02.log", + "sha256": "7d4c883ea8c95d18fbb2d9c12dfa5994ff7872b8de5c3a0bf48b4c7b8b110f6a" + }, + { + "artifact": "account-scenarios-after-03.command.json", + "sha256": "ba52cc191314ed5b6eaa734b09d65d556a862b3e5ce21c44cd0b18a14ef2e469" + }, + { + "artifact": "account-scenarios-after-03.log", + "sha256": "b5f213f2fb56f2806732bd2d75d9770df99b38f5aa6cc2f0d2b1ac51899cb576" + }, + { + "artifact": "account-scenarios-after.command.json", + "sha256": "30580438b2a3bc9f0f8a809b7b12f8400ea880d0c8fd1f3839f71e69ec9e75ff" + }, + { + "artifact": "account-scenarios-after.log", + "sha256": "648d5ea37e91bea13682b778bff94a78263823fa3449084b208d54d0c7e743c0" + }, + { + "artifact": "account-scenarios-before-02.command.json", + "sha256": "d750a93e8ee6d53f9e1cbce38262518fcd055c8662e51c2fccd3e6de6c00698c" + }, + { + "artifact": "account-scenarios-before-02.log", + "sha256": "0414a1878a2c3582768d3b6659edc156745e3fee78e91cad05ceb8e488090ea0" + }, + { + "artifact": "account-scenarios-before.command.json", + "sha256": "deae3dd34ff36b11d3cd97a34b06155df5f1c636e5516c841bbb7eee22cdbd98" + }, + { + "artifact": "account-scenarios-before.log", + "sha256": "2a718d7e264acb249b9b60e7e414c589e845934cf6665c43f88e6340a58f856f" + }, + { + "artifact": "account-typecheck.log", + "sha256": "51d5d08485705e4fd2b12e52f4ad3e270f06f2a8fe5dbca77babbe5375ba05dd" + }, + { + "artifact": "freeze-attempt-01.error.txt", + "sha256": "855c9e4cc9afacbdc66bd9b0ff022299ac6f207a4175cc91b90b6aaecd86b819" + } +] diff --git a/evidence/desktop-account-20260905/judge/review-desktop-account.py.txt b/evidence/desktop-account-20260905/judge/review-desktop-account.py.txt new file mode 100644 index 00000000..34194f09 --- /dev/null +++ b/evidence/desktop-account-20260905/judge/review-desktop-account.py.txt @@ -0,0 +1,124 @@ +from pathlib import Path +import datetime, hashlib, json, re, subprocess, zipfile, xml.etree.ElementTree as ET + +P=Path(__file__).parent +O=P/'E6f-noderoom-desktop-account-repair-01' +J=P/'E6f-noderoom-desktop-account-judge' +R=Path('D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905') +J.mkdir(exist_ok=False) +sha=lambda b:hashlib.sha256(b).hexdigest() +blob=lambda b:hashlib.sha1(b'blob '+str(len(b)).encode()+b'\0'+b).hexdigest() +def read(p):return json.loads(p.read_bytes().decode('utf-8-sig')) +def write(n,x):(J/n).write_bytes((json.dumps(x,ensure_ascii=False,indent=2)+'\n').encode('utf-8')) +def git(*args):return subprocess.check_output(['git','--no-optional-locks',*args],cwd=R) +checks=[] +def check(name,ok,details): + checks.append({'name':name,'passed':bool(ok),'details':details}) + write('checks-in-progress.json',checks) +def bind(p,name=None): + b=p.read_bytes() + return {'path':name or str(p),'bytes':len(b),'sha256':sha(b),'gitBlobSha1':blob(b)} + +receipt=P/'E6f_NODEROOM_DESKTOP_ACCOUNT_REPAIR_RECEIPT.json' +check('Exact worker receipt',sha(receipt.read_bytes())=='15b55c6ba99bfdfedbe04bcbd9b2f4bbe3b51a0fce3c9c2a3d2708ae0f340f73',bind(receipt)) +freeze=read(O/'freeze.json'); manifest=read(O/'manifest.json') +check('Exact freeze and manifest',sha((O/'freeze.json').read_bytes())=='4e8640d97bbfe6bedd46521f40c15bd3c24e161e37384cbbf35452bff4d15605' and sha((O/'manifest.json').read_bytes())=='4e5fb3dabe91e0515f4506e3e2b6389c6bffd9bdef2fb0735c360b9a66c0883f',{'freeze':bind(O/'freeze.json'),'manifest':bind(O/'manifest.json')}) +actual_artifacts=[bind(O/x['path'],x['path']) for x in manifest['files']] +artifact_mismatch=[{'expected':x,'actual':y} for x,y in zip(manifest['files'],actual_artifacts) if x!=y] +actual_names={x.relative_to(O).as_posix() for x in O.rglob('*') if x.is_file() and x.name!='manifest.json'} +check('All 132 raw artifact bindings',len(actual_artifacts)==132 and not artifact_mismatch and actual_names=={x['path'] for x in actual_artifacts},{'count':len(actual_artifacts),'mismatch':artifact_mismatch,'extraNames':sorted(actual_names-{x['path'] for x in actual_artifacts})}) +write('artifact-bindings.json',actual_artifacts) + +source=[bind(R/x['path'],x['path']) for x in freeze['source']] +source_digest=sha(json.dumps(source,ensure_ascii=False,sort_keys=True,separators=(',',':')).encode('utf-8')) +check('Four exact current source owners',source==freeze['source'] and source_digest=='c4484a6d673c6ae4a43a4e2ebbe1ce94a2903a9e8e74a6c02a5212f30180c4d1',{'source':source,'sourceDigest':source_digest}) +write('source-bindings.json',source) +for label,args in {'head':['rev-parse','HEAD','HEAD^{tree}'],'refs':['for-each-ref','--format=%(refname) %(objectname)'],'index':['ls-files','--stage','-z'],'worktrees':['worktree','list','--porcelain']}.items(): + b=git(*args);(J/f'actual-{label}.bin').write_bytes(b) + check('Unchanged '+label,b==(O/f'before-{label}.txt').read_bytes()==(O/f'final-{label}.txt').read_bytes(),{'sha256':sha(b),'bytes':len(b),'representation':'serialized ls-files --stage -z entries, not raw index file' if label=='index' else 'Git output bytes'}) +status=git('status','--porcelain=v1');(J/'actual-status.txt').write_bytes(status) +check('Exactly four unstaged paths',status==(O/'final-status.txt').read_bytes() and git('diff','--cached','--name-only')==b'',{'status':status.decode(),'branch':git('branch','--show-current').decode().strip()}) +owned={x['path'] for x in source} +before=read(O/'before-tracked-bindings.json');after=read(O/'after-tracked-bindings.json') +current=[bind(R/x['path'],x['path']) for x in before] +changed=[x['path'] for x,y in zip(before,current) if x!=y] +check('7512 tracked inputs and 7508 protected files',len(current)==7512 and current==after and set(changed)==owned,{'count':len(current),'protected':len(current)-len(changed),'changed':changed,'currentBindingsSha256':sha(json.dumps(current,ensure_ascii=False,sort_keys=True,separators=(',',':')).encode())}) +installed=read(O/'installed-bindings.json') +installed_bad=[x['path'] for x in installed if sha((R/x['path']/'package.json').read_bytes())!=x['sha256']] +check('37 installed manifests unchanged',len(installed)==37 and not installed_bad,{'count':len(installed),'mismatch':installed_bad}) +dist=read(O/'final-dist-bindings.json'); dist_bad=[] +with zipfile.ZipFile(O/'final-dist.zip') as z: + expected_names={x['path'] for x in dist['files']} + for x in dist['files']: + b=(R/'dist'/x['path']).read_bytes() + if bind(R/'dist'/x['path'],x['path'])!=x or b!=z.read(x['path']):dist_bad.append(x['path']) + names_equal=set(z.namelist())==expected_names=={x.relative_to(R/'dist').as_posix() for x in (R/'dist').rglob('*') if x.is_file()} +check('475 current dist files equal retained built archive',len(dist['files'])==475 and not dist_bad and names_equal and sha((O/'final-dist.zip').read_bytes())==dist['archiveSha256'],{'count':len(dist['files']),'mismatch':dist_bad,'namesEqual':names_equal,'archiveSha256':dist['archiveSha256']}) +diff=git('diff','--binary','--',*sorted(owned));(J/'actual-source.diff').write_bytes(diff) +check('Exact reviewed raw diff',diff==(O/'final-source.diff').read_bytes() and sha(diff)==freeze['diffSha256'],{'sha256':sha(diff)}) +app=R/'src/ui/panels/Artifact.tsx'; current_app=app.read_bytes(); base_app=git('show','HEAD:src/ui/panels/Artifact.tsx') +old=b'art.elements[`${rid}__account`]?.value';new=b'art.elements[`${rid}__label`]?.value' +check('Application delta is exactly two owned lookup replacements',base_app.count(old)==2 and base_app.replace(old,new)==current_app,{'oldLookupCount':base_app.count(old),'baseSha256':sha(base_app),'currentSha256':sha(current_app)}) +knock=(O/'knockout-regressed-Artifact.tsx.txt').read_bytes() +check('Causal knockout restores exactly the two old lookups',knock==base_app and (O/'knockout-final-Artifact.tsx.txt').read_bytes()==current_app and (O/'knockout-final-artifactXlsxExport.test.ts.txt').read_bytes()==(R/'tests/artifactXlsxExport.test.ts').read_bytes(),{'regressedSha256':sha(knock),'finalSha256':sha(current_app),'testSha256':sha((R/'tests/artifactXlsxExport.test.ts').read_bytes())}) + +NS={'s':'http://schemas.openxmlformats.org/spreadsheetml/2006/main'} +def workbook(path): + with zipfile.ZipFile(path) as z: + strings=[] + if 'xl/sharedStrings.xml' in z.namelist(): + strings=[''.join(t.text or '' for t in si.findall('.//s:t',NS)) for si in ET.fromstring(z.read('xl/sharedStrings.xml')).findall('s:si',NS)] + styles=z.read('xl/styles.xml') + style_tree=ET.fromstring(styles);xf=style_tree.find('s:cellXfs',NS) + cells={} + for c in ET.fromstring(z.read('xl/worksheets/sheet1.xml')).findall('.//s:c',NS): + v=c.find('s:v',NS);raw=None if v is None else v.text;t=c.get('t') + if t=='s':value=strings[int(raw)] if raw is not None else None + elif t=='inlineStr':value=''.join(i.text or '' for i in c.findall('.//s:t',NS)) + elif raw is None:value=None + elif t=='b':value=raw=='1' + elif t in ('str','e'):value=raw + else: + try:value=int(raw) + except ValueError: + try:value=float(raw) + except ValueError:value=raw + f=c.find('s:f',NS);s=int(c.get('s','0')) + cells[c.attrib['r']]={'value':value,'formula':None if f is None else {'text':f.text,'attributes':f.attrib},'styleIndex':s,'styleXml':ET.tostring(xf[s],encoding='unicode')} + for row in range(1,7): + for col in 'ABCDE': + key=f'{col}{row}' + cells.setdefault(key,{'value':None,'formula':None,'styleIndex':0,'styleXml':ET.tostring(xf[0],encoding='unicode')}) + return {'file':bind(path,path.relative_to(O).as_posix()),'sheetNames':[s.get('name') for s in ET.fromstring(z.read('xl/workbook.xml')).findall('s:sheets/s:sheet',NS)],'stylesSha256':sha(styles),'cells':cells,'zipMembers':z.namelist()} + +paths=[O/'before/Q3_variance.xlsx',O/'after/Q3_variance.xlsx',O/'after/review-2-Q3_variance.xlsx',*sorted((O/'browser-suite/results').rglob('review-*.xlsx'))] +books=[workbook(x) for x in paths];write('independent-zip-xml.json',books) +labels=['Revenue','COGS','Gross profit','OpEx','Net income'] +check('Seven actual ZIP/XML workbooks with five unique payloads',len(books)==7 and len({x['file']['sha256'] for x in books})==5 and all([x['cells'][f'A{i}']['value'] for i in range(2,7)]==([None]*5 if n==0 else labels) for n,x in enumerate(books)),{'files':[x['file'] for x in books],'accountLabels':labels}) +before_b,after_b,later=books[:3] +keys=[f'{c}{r}' for r in range(1,7) for c in 'ABCDE'] +valdiff=[k for k in keys if before_b['cells'][k]['value']!=after_b['cells'][k]['value'] or before_b['cells'][k]['formula']!=after_b['cells'][k]['formula']] +stylediff=[k for k in keys if {f:before_b['cells'][k][f] for f in ('styleIndex','styleXml')}!={f:after_b['cells'][k][f] for f in ('styleIndex','styleXml')}] +before_ui=read(O/'before/ui-to-workbook.json')['ui'];after_ui=read(O/'after/ui-to-workbook.json')['ui'] +check('Actual five-label-only workbook delta, 25 other cells and all 30 styles intact',valdiff==['A2','A3','A4','A5','A6'] and stylediff==[] and before_b['stylesSha256']==after_b['stylesSha256'] and before_ui==after_ui,{'valueOrFormulaDiff':valdiff,'otherValueCells':30-len(valdiff),'styleDiff':stylediff,'rawStylesSha256':after_b['stylesSha256'],'beforeAndAfterUiDataExact':before_ui==after_ui}) +later_diff=[k for k in keys if after_b['cells'][k]['value']!=later['cells'][k]['value'] or after_b['cells'][k]['formula']!=later['cells'][k]['formula']] +browser_first=next(x for x in books if x['file']['path'].endswith('/review-1-Q3_variance.xlsx')) +browser_second=next(x for x in books if '/browser-suite/' in '/'+x['file']['path'] and x['file']['path'].endswith('/review-2-Q3_variance.xlsx')) +browser_diff=[k for k in keys if browser_first['cells'][k]['value']!=browser_second['cells'][k]['value'] or browser_first['cells'][k]['formula']!=browser_second['cells'][k]['formula']] +check('Later note alone changes and prior actual payloads remain exact',later_diff==['E2'] and browser_diff==['E2'] and after_b['file']['sha256']=='f932564a012f2cb46dea3a92eb90c80004895f5d55a0460c47ad7573379aa52f' and all(bind(path)['sha256']==book['file']['sha256'] for path,book in zip(paths,books)),{'matchedDiff':later_diff,'matchedNotes':[after_b['cells']['E2']['value'],later['cells']['E2']['value']],'browserDiff':browser_diff,'browserNotes':[browser_first['cells']['E2']['value'],browser_second['cells']['E2']['value']],'earlierFilesRereadExact':True}) +links=[] +for target in re.findall(r'\]\(([^)]+)\)',(R/'HANDOFF.md').read_bytes().decode('utf8')): + if re.match(r'https?://',target):continue + f=(R/target.split('#')[0]).resolve();links.append({'target':target,'exists':f.is_file(),'sha256':sha(f.read_bytes()) if f.is_file() else None}) +check('Handoff local links and Chromium prerequisite',len(links)==5 and all(x['exists'] for x in links) and b'npx playwright install chromium' in (R/'HANDOFF.md').read_bytes(),links) +write('handoff-links.json',links) +log=(O/'account-final-scenarios.log').read_text(encoding='utf8');knocklog=(O/'account-final-fixture-knockout.log').read_text(encoding='utf8') +commands=read(O/'final-commands.json') +selected={Path(x['log']).name:x for x in commands} +check('Actual 10-test final command and exact two knockout failures retained','Tests 10 passed (10)' in log and 'Test Files 3 passed (3)' in log and 'Tests 2 failed | 4 passed (6)' in knocklog and 'keeps Account labels through repeated reviewer exports of the current sheet' in knocklog and 'keeps Account labels through repeated reviewer exports of the sibling sheet' in knocklog and selected['account-final-scenarios.log']['exitCode']==0 and selected['account-final-fixture-knockout.log']['exitCode']==1,{'final':selected['account-final-scenarios.log'],'knockout':selected['account-final-fixture-knockout.log']}) +pw=read(O/'browser-suite/playwright.json');specs=pw['suites'][0]['specs'];results=[r for s in specs for t in s['tests'] for r in t['results']] +check('Actual three browser cases pass without retries or raised deadlines',pw['stats']['expected']==3 and pw['stats']['unexpected']==pw['stats']['skipped']==pw['stats']['flaky']==0 and len(results)==3 and all(x['status']=='passed' and x['retry']==0 for x in results) and all(t['timeout']==30000 for s in specs for t in s['tests']),{'stats':pw['stats'],'cases':[{'title':s['title'],'tests':s['tests']} for s in specs],'source':'Worker actual retained JSON, no independent browser rerun'}) +check('Actual final build, Convex typecheck and design audit exit zero',all(selected[x]['exitCode']==0 and not selected[x]['timedOut'] for x in ['account-final-build.log','account-convex-typecheck.log','account-design-audit.log']),{x:selected[x] for x in ['account-final-build.log','account-convex-typecheck.log','account-design-audit.log']}) +write('command-results.json',commands) +write('checks.json',{'at':datetime.datetime.now(datetime.timezone.utc).isoformat(),'scope':'Read-only independent desktop Account source / raw artifact / ZIP XML verification; no runtime execution','checks':checks,'passed':sum(x['passed'] for x in checks),'failed':sum(not x['passed'] for x in checks),'sourceDigest':source_digest}) +print(json.dumps({'passed':sum(x['passed'] for x in checks),'failed':[x for x in checks if not x['passed']],'output':str(J)},ensure_ascii=True)) diff --git a/evidence/desktop-account-20260905/judge/source-bindings.json b/evidence/desktop-account-20260905/judge/source-bindings.json new file mode 100644 index 00000000..4aa48356 --- /dev/null +++ b/evidence/desktop-account-20260905/judge/source-bindings.json @@ -0,0 +1,26 @@ +[ + { + "path": "HANDOFF.md", + "bytes": 12495, + "sha256": "863cf1d6dc6a02b1a0cbfc547603164f60511face20a96f89592cdb4729a8035", + "gitBlobSha1": "49706cb18d223f12c4f0b1ad116e6f95f493801e" + }, + { + "path": "e2e/excel-grid.spec.ts", + "bytes": 10117, + "sha256": "a0f13b4194018d14b918dc90de827bce5969730b2b10bcb4ed611db6a4333f73", + "gitBlobSha1": "e9b9be5756c193dda6523dcab1fad7543b89b982" + }, + { + "path": "src/ui/panels/Artifact.tsx", + "bytes": 230374, + "sha256": "013064b20f5fea117e2e8b96755d2d93fce490e9eb5f6845b1b1cd6f386b07a0", + "gitBlobSha1": "37dac53ca1f89fb671db075898603bcdcb3ab796" + }, + { + "path": "tests/artifactXlsxExport.test.ts", + "bytes": 9444, + "sha256": "3c48be964ca1c7e5083801d7875bc8a74f075f38e56fcab3e621e799b6ffc136", + "gitBlobSha1": "424266f4a1225c11bdd66b381d3089990ca6376b" + } +] diff --git a/evidence/desktop-account-20260905/judge/source-trace.json b/evidence/desktop-account-20260905/judge/source-trace.json new file mode 100644 index 00000000..6e6b4052 --- /dev/null +++ b/evidence/desktop-account-20260905/judge/source-trace.json @@ -0,0 +1,71 @@ +[ + { + "path": "src/engine/demoRoom.ts", + "sha256": "f6ff9dcf06f453ea6dd0acc444d58bcd66451d15e105a0f3a0a3c43e7b866b2b", + "lines": [ + { + "start": 14, + "end": 21, + "text": "14: export const SHEET_COLS = [\"label\", \"q2\", \"q3\", \"variance\", \"note\"] as const;\n15: export const SHEET_ROWS = [\n16: { id: \"r_rev\", label: \"Revenue\", q2: \"$10,000\", q3: \"$12,400\" },\n17: { id: \"r_cogs\", label: \"COGS\", q2: \"$4,000\", q3: \"$5,100\" },\n18: { id: \"r_gp\", label: \"Gross profit\", q2: \"$6,000\", q3: \"$7,300\" },\n19: { id: \"r_opex\", label: \"OpEx\", q2: \"$2,200\", q3: \"$2,650\" },\n20: { id: \"r_ni\", label: \"Net income\", q2: \"$3,800\", q3: \"$4,650\" },\n21: ];" + }, + { + "start": 225, + "end": 236, + "text": "225: const seed: Array<{ id: string; value: unknown }> = [];\n226: for (const r of SHEET_ROWS) {\n227: seed.push({ id: `${r.id}__label`, value: r.label });\n228: seed.push({ id: `${r.id}__q2`, value: r.q2 });\n229: seed.push({ id: `${r.id}__q3`, value: r.q3 });\n230: seed.push({ id: `${r.id}__variance`, value: \"\" });\n231: seed.push({ id: `${r.id}__note`, value: \"\" });\n232: }\n233: engine.createArtifact({ roomId: room.id, kind: \"note\", title: \"Capture Notebook\", by: me, seed: [{ id: \"doc\", value: CAPTURE_NOTEBOOK_CLOUD_DOC }] });\n234: const wikiId = engine.createArtifact({ roomId: room.id, kind: \"note\", title: \"Agent wiki\", by: me, seed: [{ id: \"doc\", value: WIKI_DOC }] }).id;\n235: engine.createArtifact({ roomId: room.id, kind: \"note\", title: \"Today's Brief\", by: me, seed: [{ id: \"doc\", value: BRIEF_DOC }] });\n236: const sheetId = engine.createArtifact({ roomId: room.id, kind: \"sheet\", title: \"Q3 variance\", by: me, seed }).id;" + } + ] + }, + { + "path": "src/ui/panels/Artifact.tsx", + "sha256": "013064b20f5fea117e2e8b96755d2d93fce490e9eb5f6845b1b1cd6f386b07a0", + "lines": [ + { + "start": 1058, + "end": 1078, + "text": "1058: function rowIdsOf(art: Art): string[] {\n1059: if (art.meta?.excelGrid) {\n1060: const rowCount = Math.max(1, Number(art.meta.excelGrid.rows) || 1);\n1061: return Array.from({ length: rowCount }, (_, i) => String(i + 1));\n1062: }\n1063: // Fresh-room sheets can briefly receive their element map before the small\n1064: // version/order companion query. They also become mixed-address artifacts\n1065: // when NodeAgent writes canonical A1 cells beside the legacy rN__column\n1066: // seed. The declared blank-sheet extent is authoritative in both cases.\n1067: const blankRows = isBlankSpreadsheet(art) ? dataframeRowCount(art) : 0;\n1068: if (blankRows) return Array.from({ length: blankRows }, (_, i) => String(i + 1));\n1069: const ids: string[] = [];\n1070: const elementIds = (art.order?.length ? art.order : Object.keys(art.elements ?? {}));\n1071: for (const eid of elementIds) {\n1072: const a1 = eid.match(/^[A-Z]+(\\d+)$/);\n1073: const r = a1?.[1] ?? eid.split(\"__\")[0];\n1074: if (r && !ids.includes(r)) ids.push(r);\n1075: }\n1076: return ids;\n1077: }\n1078: const cellVal = (art: Art, rowId: string, col: string) => displayCellValue(art.elements[`${rowId}__${col}`]?.value);" + }, + { + "start": 2440, + "end": 2467, + "text": "2440: async function exportSheetAsXlsx(art: Art, visibleRoot?: HTMLElement | null, allArts: Art[] = [art]): Promise {\n2441: const ExcelJSModule = await import(\"exceljs\");\n2442: const ExcelJS = (ExcelJSModule as { default?: typeof import(\"exceljs\") }).default ?? (ExcelJSModule as unknown as typeof import(\"exceljs\"));\n2443: const workbook = new ExcelJS.Workbook();\n2444: const exportSheets = workbookExportSheets(art, allArts);\n2445: const usedSheetNames = new Set();\n2446: const sheetName = worksheetNameForExport(art, usedSheetNames);\n2447: const worksheet = workbook.addWorksheet(sheetName);\n2448: const rows = rowIdsOf(art);\n2449: const visibleCells = visibleRoot ? visibleGenericSheetCellValues(visibleRoot, art.id) : new Map();\n2450: const cellForExport = (id: string): unknown => {\n2451: const stored = art.elements[id]?.value;\n2452: const visible = visibleCells.get(id);\n2453: return asCellPayload(stored) ? stored : visible !== undefined ? visible : stored;\n2454: };\n2455: \n2456: if (art.title === \"Q3 variance\") {\n2457: // Canonical variance sheet: stable headers matching the live Sheet renderer (Artifact.tsx Sheet).\n2458: appendExportRow(worksheet, [\"Account\", \"Q2\", \"Q3\", \"Variance\", \"Note\"]);\n2459: for (const rid of rows) {\n2460: appendExportRow(worksheet, [\n2461: art.elements[`${rid}__label`]?.value,\n2462: art.elements[`${rid}__q2`]?.value,\n2463: art.elements[`${rid}__q3`]?.value,\n2464: art.elements[`${rid}__variance`]?.value,\n2465: art.elements[`${rid}__note`]?.value,\n2466: ]);\n2467: }" + }, + { + "start": 2544, + "end": 2563, + "text": "2544: function appendSheetArtifactWorksheet(\n2545: workbook: import(\"exceljs\").Workbook,\n2546: art: Art,\n2547: usedSheetNames: Set,\n2548: ): void {\n2549: const worksheet = workbook.addWorksheet(worksheetNameForExport(art, usedSheetNames));\n2550: const rows = rowIdsOf(art);\n2551: \n2552: if (art.title === \"Q3 variance\") {\n2553: appendExportRow(worksheet, [\"Account\", \"Q2\", \"Q3\", \"Variance\", \"Note\"]);\n2554: for (const rid of rows) {\n2555: appendExportRow(worksheet, [\n2556: art.elements[`${rid}__label`]?.value,\n2557: art.elements[`${rid}__q2`]?.value,\n2558: art.elements[`${rid}__q3`]?.value,\n2559: art.elements[`${rid}__variance`]?.value,\n2560: art.elements[`${rid}__note`]?.value,\n2561: ]);\n2562: }\n2563: return;" + }, + { + "start": 2651, + "end": 2672, + "text": "2651: \n2652: \n2653: \n2654: {rows.map((rid, i) => {\n2655: const vId = `${rid}__variance`, nId = `${rid}__note`;\n2656: const vEl = art.elements[vId], nEl = art.elements[nId];\n2657: const vPayload = asCellPayload(vEl?.value), nPayload = asCellPayload(nEl?.value);\n2658: const lk = lockedByOther(store, art.id, vId, me);\n2659: const vPresence = presenceForCell(presenceRows, vId, me);\n2660: const nPresence = presenceForCell(presenceRows, nId, me);\n2661: const drafting = draftedFor(store, roomId, art.id, vId);\n2662: const vProposal = proposalFor(proposals, art.id, vId);\n2663: const nProposal = proposalFor(proposals, art.id, nId);\n2664: const committed = !lk && vEl && vEl.version > 1 && now - vEl.updatedAt < 1500;\n2665: const personalEditor = vEl?.updatedBy && (vEl.updatedBy as Actor).ownerId ? store.listMembers(roomId).find((mm) => mm.id === (vEl.updatedBy as Actor).ownerId) : undefined;\n2666: const vCls = \"r-cell num\" + (lk ? \" locked\" : \"\") + (vPresence ? ` presence presence-${vPresence.mode}` : \"\") + (drafting ? \" draft\" : \"\") + (committed ? \" committed rm-wet\" : \"\") + (vProposal ? \" proposed\" : \"\");\n2667: return (\n2668: \n2669: \n2670: \n2671: \n2672: " + } + ] + }, + { + "path": "tests/artifactXlsxExport.test.ts", + "sha256": "3c48be964ca1c7e5083801d7875bc8a74f075f38e56fcab3e621e799b6ffc136", + "lines": [ + { + "start": 1, + "end": 25, + "text": "1: // @vitest-environment jsdom\n2: import ExcelJS from \"exceljs\";\n3: import { createElement } from \"react\";\n4: import { fireEvent, render, screen, waitFor } from \"@testing-library/react\";\n5: import { describe, expect, it, vi } from \"vitest\";\n6: import type { Actor, Artifact } from \"../src/engine/types\";\n7: import { SHEET_ROWS } from \"../src/engine/demoRoom\";\n8: \n9: const exportFixture = vi.hoisted(() => ({\n10: store: {} as Record,\n11: bytes: [] as ArrayBuffer[],\n12: }));\n13: vi.mock(\"../src/app/store\", () => ({ useStore: () => exportFixture.store }));\n14: // Keep the real component projection and ExcelJS serialization. Only replace browser dispatch;\n15: // the companion browser scenario saves and reopens the actual downloaded file.\n16: vi.mock(\"../src/ui/workArtifacts/xlsxDownload\", () => ({\n17: downloadXlsxWorkbook: async (workbook: ExcelJS.Workbook, fileName: string, rowCount: number) => {\n18: const bytes = await workbook.xlsx.writeBuffer();\n19: exportFixture.bytes.push(bytes);\n20: return { fileName, rowCount, sheetCount: workbook.worksheets.length, byteCount: bytes.byteLength, at: \"test\" };\n21: },\n22: }));\n23: \n24: import { Artifact as ArtifactPanel, applyExportCell, exportCellValue, spreadsheetCellFontColorCss } from \"../src/ui/panels/Artifact\";\n25: " + }, + { + "start": 105, + "end": 190, + "text": "105: expect(spreadsheetCellFontColorCss(artifact, \"A1\")).toBe(\"#11223380\");\n106: expect(spreadsheetCellFontColorCss(artifact, \"A2\")).toBe(\"#AABBCC\");\n107: });\n108: \n109: it.each([\"current sheet\", \"sibling sheet\"] as const)(\"keeps Account labels through repeated reviewer exports of the %s\", async (surface) => {\n110: const actor: Actor = { kind: \"user\", id: \"reviewer\", name: \"Reviewer\" };\n111: const canonical: Artifact = {\n112: id: \"variance\", roomId: \"review-room\", title: \"Q3 variance\", kind: \"sheet\",\n113: version: 1, updatedAt: 1, order: [], elements: {},\n114: };\n115: const rowIds = SHEET_ROWS.map((row, index) => surface === \"current sheet\" ? row.id : String(index + 1));\n116: SHEET_ROWS.forEach((row, index) => {\n117: const values = { label: row.label, q2: row.q2, q3: row.q3,\n118: variance: { value: 0.24, formula: \"=C2/B2-1\", numFmt: \"0.0%\" }, note: \"Initial review\" };\n119: for (const [column, value] of Object.entries(values)) {\n120: const id = `${rowIds[index]}__${column}`;\n121: canonical.order.push(id);\n122: canonical.elements[id] = { id, value, version: 1, updatedAt: 1, updatedBy: actor };\n123: }\n124: });\n125: const summary: Artifact = {\n126: id: \"summary\", roomId: canonical.roomId, title: \"Summary\", kind: \"sheet\",\n127: version: 1, updatedAt: 1, order: [\"A1\", \"B1\"],\n128: elements: {\n129: A1: { id: \"A1\", value: { value: \"Review workbook\" }, version: 1, updatedAt: 1, updatedBy: actor },\n130: B1: { id: \"B1\", value: { value: 2, formula: \"=1+1\", numFmt: \"0.00\" }, version: 1, updatedAt: 1, updatedBy: actor },\n131: },\n132: };\n133: if (surface === \"sibling sheet\") {\n134: // Existing multi-sheet metadata supplies numeric row IDs. The active generic sheet and\n135: // its canonical sibling must both survive the same workbook-export action.\n136: for (const art of [summary, canonical]) art.meta = {\n137: upload: { fileName: \"review.xlsx\", mimeType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\", size: 1, parsedAt: 1 },\n138: excelGrid: { sourceFile: \"review.xlsx\", sheetName: art.title, sheetNames: [\"Summary\", \"Q3 variance\"], parser: \"exceljs:xlsx-grid\", rows: art === canonical ? 5 : 1, columns: art === canonical ? 5 : 2 },\n139: };\n140: summary.meta!.dataframe = {\n141: rowCount: 1, columns: [\"A\", \"B\"].map((id, order) => ({ id, label: id, order })),\n142: };\n143: }\n144: const artifacts = surface === \"current sheet\" ? [canonical] : [summary, canonical];\n145: exportFixture.bytes = [];\n146: exportFixture.store = {\n147: mode: \"engine\", listArtifacts: () => artifacts, getArtifact: (id: string) => artifacts.find(art => art.id === id),\n148: listMessages: () => [], listProposals: () => [], listTraces: () => [], listDrafts: () => [],\n149: listMembers: () => [{ id: actor.id, actor, role: \"host\" }], listSessions: () => [], listPresence: () => [],\n150: lockFor: () => null, canUndo: () => false, updatePresence: () => undefined, clearPresence: () => undefined,\n151: getRoom: () => ({ id: canonical.roomId, title: \"Review room\" }),\n152: lastRun: () => null, lastLongFreeJob: () => null, lastLongFreeJobAttempts: () => [], lastLongFreeJobDetail: () => null,\n153: };\n154: const props = { roomId: canonical.roomId, me: actor, artId: artifacts[0].id, onArt: vi.fn() };\n155: const view = render(createElement(ArtifactPanel, props));\n156: if (surface === \"current sheet\") {\n157: expect([...view.container.querySelectorAll(\"td.label\")].map(cell => cell.textContent)).toEqual(SHEET_ROWS.map(row => row.label));\n158: }\n159: for (let revision = 1; revision <= 4; revision++) {\n160: const note = `Reviewer revision ${revision}`;\n161: canonical.elements[`${rowIds[0]}__note`].value = note;\n162: canonical.elements[`${rowIds[0]}__note`].version = revision;\n163: view.rerender(createElement(ArtifactPanel, props));\n164: const button = screen.getByTestId(\"artifact-export-xlsx\");\n165: fireEvent.click(button);\n166: fireEvent.click(button); // Ordinary burst against the disabled current action starts once.\n167: await waitFor(() => expect(exportFixture.bytes).toHaveLength(revision));\n168: await waitFor(() => expect((button as HTMLButtonElement).disabled).toBe(false));\n169: const reopened = new ExcelJS.Workbook();\n170: await reopened.xlsx.load(exportFixture.bytes[revision - 1]);\n171: const sheet = reopened.getWorksheet(\"Q3 variance\")!;\n172: expect(SHEET_ROWS.map((_, index) => sheet.getCell(index + 2, 1).value)).toEqual(SHEET_ROWS.map(row => row.label));\n173: expect(sheet.getCell(\"B2\").value).toBe(SHEET_ROWS[0].q2);\n174: expect(sheet.getCell(\"C2\").value).toBe(SHEET_ROWS[0].q3);\n175: expect(sheet.getCell(\"D2\").formula).toBe(\"C2/B2-1\");\n176: expect(sheet.getCell(\"D2\").result).toBe(0.24);\n177: expect(sheet.getCell(\"D2\").numFmt).toBe(\"0.0%\");\n178: expect(sheet.getCell(\"E2\").value).toBe(note);\n179: if (surface === \"sibling sheet\") {\n180: expect(reopened.getWorksheet(\"Summary\")!.getCell(\"A1\").value).toBe(\"Review workbook\");\n181: expect(reopened.getWorksheet(\"Summary\")!.getCell(\"B1\").formula).toBe(\"1+1\");\n182: expect(reopened.getWorksheet(\"Summary\")!.getCell(\"B1\").result).toBe(2);\n183: expect(reopened.getWorksheet(\"Summary\")!.getCell(\"B1\").numFmt).toBe(\"0.00\");\n184: }\n185: }\n186: const first = new ExcelJS.Workbook();\n187: await first.xlsx.load(exportFixture.bytes[0]);\n188: expect(first.getWorksheet(\"Q3 variance\")!.getCell(\"E2\").value).toBe(\"Reviewer revision 1\");\n189: });\n190: });" + } + ] + }, + { + "path": "e2e/excel-grid.spec.ts", + "sha256": "a0f13b4194018d14b918dc90de827bce5969730b2b10bcb4ed611db6a4333f73", + "lines": [ + { + "start": 134, + "end": 182, + "text": "134: test(\"a reviewer reopens every visible Account label after current-sheet edits and repeated exports\", async ({ page }, testInfo) => {\n135: await page.setViewportSize({ width: 1440, height: 960 });\n136: const origin = new URL(String(testInfo.project.use.baseURL)).origin;\n137: await page.route(\"**/*\", route => {\n138: const url = new URL(route.request().url());\n139: return url.origin === origin || [\"data:\", \"blob:\"].includes(url.protocol)\n140: ? route.continue() : route.abort(\"blockedbyclient\");\n141: });\n142: await enterDemoRoom(page);\n143: const chat = page.getByTestId(\"public-chat-panel\");\n144: await chat.getByTestId(\"chat-composer\").fill(\"@nodeagent recompute the Q3 variance column\");\n145: await chat.getByTestId(\"chat-send\").click();\n146: await expect(chat.getByText(\"Committed r_rev +24%, r_cogs +27.5%, r_gp +21.7%, r_ni +22.4%. Lock released.\", { exact: true })).toBeVisible();\n147: const table = page.locator('table.r-sheet[data-noderoom-surface=\"workSurface.sheet\"]').first();\n148: const labels = await table.locator(\"tbody td.label\").allTextContents();\n149: expect(labels).toEqual([\"Revenue\", \"COGS\", \"Gross profit\", \"OpEx\", \"Net income\"]);\n150: const stableNumbers = await table.locator(\"tbody tr\").filter({ has: page.locator(\"td.label\") }).evaluateAll(rows =>\n151: rows.map(row => [...row.querySelectorAll(\"td.num .r-val-num\")].map(cell => cell.textContent)),\n152: );\n153: const files: string[] = [];\n154: for (const [index, note] of [\"Reviewer note: checked source\", \"Reviewer note: revised before handoff\"].entries()) {\n155: await page.locator('[data-cell-key=\"r_rev__note\"] button').click();\n156: await page.locator(\"input.r-cell-input\").fill(note);\n157: await page.locator(\"input.r-cell-input\").press(\"Enter\");\n158: await expect(page.locator('[data-cell-key=\"r_rev__note\"]')).toContainText(note);\n159: const event = page.waitForEvent(\"download\");\n160: await page.getByTestId(\"artifact-export-xlsx\").click();\n161: const download = await event;\n162: expect(await download.failure()).toBeNull();\n163: const file = testInfo.outputPath(`review-${index + 1}-${download.suggestedFilename()}`);\n164: await download.saveAs(file);\n165: files.push(file);\n166: const reopened = new ExcelJS.Workbook();\n167: await reopened.xlsx.readFile(file);\n168: const sheet = reopened.worksheets[0];\n169: expect(sheet.getRow(1).values).toEqual([undefined, \"Account\", \"Q2\", \"Q3\", \"Variance\", \"Note\"]);\n170: expect(labels.map((_, row) => sheet.getCell(row + 2, 1).value)).toEqual(labels);\n171: expect(labels.map((_, row) => [sheet.getCell(row + 2, 2).value, sheet.getCell(row + 2, 3).value])).toEqual(stableNumbers);\n172: expect(sheet.getCell(\"D2\").value).toBe(\"+24%\");\n173: expect(sheet.getCell(\"E2\").value).toBe(note);\n174: await expect(page.getByTestId(\"artifact-export-xlsx-status\")).toContainText(\"Downloaded\");\n175: await testInfo.attach(`review-${index + 1}.xlsx`, { path: file, contentType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\" });\n176: }\n177: const first = new ExcelJS.Workbook();\n178: await first.xlsx.readFile(files[0]);\n179: expect(first.worksheets[0].getCell(\"E2\").value).toBe(\"Reviewer note: checked source\");\n180: expect(await table.locator(\"tbody td.label\").allTextContents()).toEqual(labels);\n181: await page.screenshot({ path: testInfo.outputPath(\"desktop-account-current-export.png\"), caret: \"initial\" });\n182: });" + } + ] + } +] diff --git a/evidence/desktop-account-20260905/judge/viewed-pixels.json b/evidence/desktop-account-20260905/judge/viewed-pixels.json new file mode 100644 index 00000000..b1891c2e --- /dev/null +++ b/evidence/desktop-account-20260905/judge/viewed-pixels.json @@ -0,0 +1,65 @@ +[ + { + "path": "before/change-boundary.png", + "bytes": 135909, + "sha256": "fceb0dc7ca8665b6c3d49ce5ecf226c80293c571c17dbdbb57ddf1dbf896671d", + "width": 1440, + "height": 960, + "viewedActualPixelsWith": "view_image", + "observation": "Actual Account column is marked by a labelled 3 px box. All five labels are visible; the downloaded baseline independently has five blank Account cells." + }, + { + "path": "after/change-boundary.png", + "bytes": 135281, + "sha256": "7efd166666c487ff28c3659bb7dc4a08a9fe2c2af9c02f134e6880094b27b40d", + "width": 1440, + "height": 960, + "viewedActualPixelsWith": "view_image", + "observation": "Actual same initial five-label grid and baseline note. Labelled boundary encloses the same column; retained workbook now contains all five labels." + }, + { + "path": "before/desktop-memory-1440-downloaded.png", + "bytes": 133801, + "sha256": "d748f5992dec7ddee8816c83d8c6d8be7ddf754456cf64142417a2178afcee57", + "width": 1440, + "height": 960, + "viewedActualPixelsWith": "view_image", + "observation": "Unannotated baseline grid, five visible labels and baseline note; no visual redesign is needed to explain the file defect." + }, + { + "path": "after/desktop-memory-1440-downloaded.png", + "bytes": 133268, + "sha256": "ef099b2a6b9c226ab4c6508b80dd36dd79818af70b840ae573ed651d16ba988a", + "width": 1440, + "height": 960, + "viewedActualPixelsWith": "view_image", + "observation": "Unannotated current grid with the same labels/numbers/baseline note and a visible download status. Toolbar content/timestamps/recency differ, so no whole-image byte equality is claimed." + }, + { + "path": "after/desktop-memory-1440-later-download.png", + "bytes": 135016, + "sha256": "57012fa7146507f83b6a39a41d224bdb73818a38c15bc283783edc379c3ecce5", + "width": 1440, + "height": 960, + "viewedActualPixelsWith": "view_image", + "observation": "Later note is visibly revised, version rises from v6 to v7, and all Account labels remain readable. The longer note naturally changes table column widths." + }, + { + "path": "browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/desktop-account-current-export.png", + "bytes": 135059, + "sha256": "42ffda5a38b1edd79a599c9dde79e60d9978ced5efcc6717e07da73da2ad89c4", + "width": 1440, + "height": 960, + "viewedActualPixelsWith": "view_image", + "observation": "Separate ordinary browser suite shows the later note, five readable labels and download status after two actual file saves." + }, + { + "path": "browser-suite/uploaded-workbook-shared-grid.png", + "bytes": 138953, + "sha256": "d31c290f875c48b83a91941e95f125b16ec1335cc67080a41e7755bec1fde7ea", + "width": 1280, + "height": 720, + "viewedActualPixelsWith": "view_image", + "observation": "Existing generic uploaded model renders in the shared dark grid with selected D4 and visible values. This is a 1280 x 720 limited compatibility observation, not a whole-layout grade." + } +] diff --git a/evidence/desktop-account-20260905/manifest.json b/evidence/desktop-account-20260905/manifest.json new file mode 100644 index 00000000..55cdc139 --- /dev/null +++ b/evidence/desktop-account-20260905/manifest.json @@ -0,0 +1,969 @@ +{ + "schema": "noderoom-desktop-account-portable-proof/v1", + "selfExcluded": true, + "baseCommit": "034a8f963dfa037d860f5364032319506be3e2e0", + "source": [ + { + "path": "HANDOFF.md", + "bytes": 13008, + "sha256": "cd97e7695f01cc302511923995a03d539e1e266d14499b0f5b29333f3d1166d4", + "gitBlobSha1": "4709c46b5109daadd6dc1d44aff0ed23a073ed0b" + }, + { + "path": "e2e/excel-grid.spec.ts", + "bytes": 10117, + "sha256": "a0f13b4194018d14b918dc90de827bce5969730b2b10bcb4ed611db6a4333f73", + "gitBlobSha1": "e9b9be5756c193dda6523dcab1fad7543b89b982" + }, + { + "path": "src/ui/panels/Artifact.tsx", + "bytes": 230374, + "sha256": "013064b20f5fea117e2e8b96755d2d93fce490e9eb5f6845b1b1cd6f386b07a0", + "gitBlobSha1": "37dac53ca1f89fb671db075898603bcdcb3ab796" + }, + { + "path": "tests/artifactXlsxExport.test.ts", + "bytes": 9444, + "sha256": "3c48be964ca1c7e5083801d7875bc8a74f075f38e56fcab3e621e799b6ffc136", + "gitBlobSha1": "424266f4a1225c11bdd66b381d3089990ca6376b" + } + ], + "files": [ + { + "path": ".gitattributes", + "bytes": 8, + "sha256": "705fd4d6451a31d36b3df7de96f83f30ac976c9b4a6d1e51671d8e2f33e2d0da", + "gitBlobSha1": "fa1385d99a319b43c06f5309d1aae9fdd3adea46" + }, + { + "path": "judge/actual-head.bin", + "bytes": 82, + "sha256": "a3b47e0c62a30037f782daad21f1e3f494945d123f0c5366f4d5b01b8b043d9e", + "gitBlobSha1": "72a617a663026fd05411d5816f8ca1692b7694c9" + }, + { + "path": "judge/actual-index.bin", + "bytes": 983004, + "sha256": "08be2cca888379e88a875ff7df9269c1a4eafde9fc6c13cf9c002df7b8945425", + "gitBlobSha1": "3e34b3a196123d3234ebca8208f1cdcc4a8433d8" + }, + { + "path": "judge/actual-refs.bin", + "bytes": 10482, + "sha256": "f07794386fdccb054b31c01567fd46458101cff69033c65a5c3125485eeb63df", + "gitBlobSha1": "6116c8a43f4ef609c608ad2cf6cdde04573065c8" + }, + { + "path": "judge/actual-source.diff", + "bytes": 21105, + "sha256": "e17642f2b102c50cafd5aeb2ca9143b315e8a924bd88da7fc107b837218e62cf", + "gitBlobSha1": "d253c442766029a5b115b0ffde809e22fb691f6d" + }, + { + "path": "judge/actual-status.txt", + "bytes": 106, + "sha256": "b20623a321bc49a827209c22a4343f4a0e966e84fa38f17a1add4af2897053fb", + "gitBlobSha1": "59351f9826bfc32680dfd5c746f8f59433ac92d1" + }, + { + "path": "judge/actual-worktrees.bin", + "bytes": 900, + "sha256": "de1222d5d9910730bc1fccc42c093dba52613bbfbeb5592444c28887240fd22f", + "gitBlobSha1": "014d6a2d43da6260640915039153f05a4e191e78" + }, + { + "path": "judge/artifact-bindings.json", + "bytes": 29198, + "sha256": "d58f0b6bc92ae504b4e296cf87e8acf1806f3fc436f2fd1889bac6b72fa22506", + "gitBlobSha1": "f94aef032c9eda36f86bc9b873c20ec202fe3126" + }, + { + "path": "judge/checks-in-progress.json", + "bytes": 19393, + "sha256": "81ddbc9f5ca984faa3bb07b88f092f6d4b674da8eb43f04ede8403f2180c8b7a", + "gitBlobSha1": "0b48266844b89560c0a508dc07285af7cdaaba89" + }, + { + "path": "judge/checks.json", + "bytes": 20715, + "sha256": "c2654b4e4b7d99f4c2c64589d1a8a63baa8193c482c96e74e2ebb7ae7c8e4335", + "gitBlobSha1": "d0eab2a6fef34e3f80ecf863ddc26cff304e05b3" + }, + { + "path": "judge/closing-custody.json", + "bytes": 366, + "sha256": "8925233fdf62d82c72c96ff73fae4ea0fd461efbf621b1b5af91e9b3be1e0669", + "gitBlobSha1": "1165aaa3c9b64ff18a0f2b26ef93949958bfbd91" + }, + { + "path": "judge/collector-search-failure.txt", + "bytes": 675, + "sha256": "5adf14eb0f01f568a7fd6962bb08b27b5b7b1896a887cef848bb0b5a935cc6ac", + "gitBlobSha1": "7d2fa3a4727f01551841cf0c61a62ed690256163" + }, + { + "path": "judge/command-results.json", + "bytes": 13244, + "sha256": "1cae9b8d88b0bc5e58c9b7207059666cb5591c3dba62dd04fc52ddbe40b2b491", + "gitBlobSha1": "61cb6232bf08e58ed4a15ea84b64a9b0af6704c0" + }, + { + "path": "judge/freeze-desktop-account-judge.py.txt", + "bytes": 17188, + "sha256": "b253a2f9efd27e59f673ebe3dd1eef2895f907da64f9af91d746fb46e3728a8d", + "gitBlobSha1": "af50e341bd3c4ed7533092ea0ecc012a7fe332bc" + }, + { + "path": "judge/handoff-links.json", + "bytes": 1013, + "sha256": "6d7be4b59458260393283be54a86a38bdd87cedb1797b048d46c686eecb366c0", + "gitBlobSha1": "131af6b087329e7d8e5d117aaa21e20763eb61a4" + }, + { + "path": "judge/independent-zip-xml.json", + "bytes": 63293, + "sha256": "04125b608e845e44142628f2aa7cb66f0d481083ca614fc615baf0518b5c407a", + "gitBlobSha1": "b3cbb7886020403efae5843ab26df27946700486" + }, + { + "path": "judge/manifest.json", + "bytes": 3234, + "sha256": "032bb623de4b1077c11c394219c056a3d7b9f9e131436e851d4352d32489a7c0", + "gitBlobSha1": "ab79e62da8d57cd68ee06e654338ef6f91c63b19" + }, + { + "path": "judge/retained-failure-bindings.json", + "bytes": 1852, + "sha256": "71be7ba4fbb1f96e1afe948b0eafdd56d0c6b9207191372451df652f78051b22", + "gitBlobSha1": "4d569d970b0bf6d9b3621ff2112623f23ddd445a" + }, + { + "path": "judge/review-desktop-account.py.txt", + "bytes": 13495, + "sha256": "a314fede2a7190cd0e212773a5ccd8d36542afcae37d830e461387035eba92f4", + "gitBlobSha1": "34194f09fd7d70933b4f9f31180646a9f84d12c7" + }, + { + "path": "judge/source-bindings.json", + "bytes": 849, + "sha256": "ed994576e577eb52c3c3cc85fba4cb4cc3df2fc43bc42f7ca1e1fb202fa2d3dc", + "gitBlobSha1": "4aa48356ad2c8ab484f48df5f5282700fc01d660" + }, + { + "path": "judge/source-trace.json", + "bytes": 19826, + "sha256": "e0afe8c9b1dbda60314767bcb000f383849baccbe2748bc9ff165338ee5113c1", + "gitBlobSha1": "6e6b40527f7233532c74618a47d567629b641d0d" + }, + { + "path": "judge/viewed-pixels.json", + "bytes": 3040, + "sha256": "b65e5bf14d7db89f5de730140891c0b325b9abd1c9e7ef46879ee9fdbf223d7f", + "gitBlobSha1": "b1891c2e95c47cb050ad4a89ccb7f862a54c2c97" + }, + { + "path": "operator/account-browser-suite.command.json", + "bytes": 862, + "sha256": "f8f8c8249304267c5359245c96b25f81714f87da259c15aa800f8f532ba87be1", + "gitBlobSha1": "0f8c0dd2458b9cd7c7fde9fcbf1449650dc5af4c" + }, + { + "path": "operator/account-browser-suite.log", + "bytes": 821, + "sha256": "53e6dd4281f42e819f68a92e4a2bfad6bf1545f6d52dd05672f10eb81fa8250a", + "gitBlobSha1": "ba1ebfca9014ec413acf10ae8cb5ca5293261aea" + }, + { + "path": "operator/account-convex-typecheck.command.json", + "bytes": 950, + "sha256": "cd281e6ec1bdefe7190785f003366e1ea9a0421cc6459c0dd7750cf8701ba300", + "gitBlobSha1": "22c63dd9ecc4454aa15459baf2722d559101b11c" + }, + { + "path": "operator/account-convex-typecheck.log", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "gitBlobSha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" + }, + { + "path": "operator/account-design-audit.command.json", + "bytes": 734, + "sha256": "b4b6cea4dfcbba7f507080e1e50b86e052581a62c70b05a411bf83d748c2412c", + "gitBlobSha1": "81f80189a2defc38b315f2ff13ae9d7d08a408b6" + }, + { + "path": "operator/account-design-audit.log", + "bytes": 5304, + "sha256": "3845700737cf617d4d35a4577c200b03148a660ed3490f7d0f038c688fa05dde", + "gitBlobSha1": "e2392f8e7632fe11ad3c7c79595c303f4165b4d5" + }, + { + "path": "operator/account-final-build.command.json", + "bytes": 727, + "sha256": "1bf2f5aeb4fd1663ed5bb452bad53966fc4ca656e1d587a64b35a77874b66213", + "gitBlobSha1": "29e4858825ef10f1145720c9e2c920ea199ef690" + }, + { + "path": "operator/account-final-build.log", + "bytes": 37879, + "sha256": "fd4d6fa4c2181f3e6dd0a57a121a9b04db3d180a17fe3ab58b4b2507ef64349c", + "gitBlobSha1": "28c74921552921b367ca2a9570630b8ad7aa67d5" + }, + { + "path": "operator/account-final-fixture-knockout.command.json", + "bytes": 790, + "sha256": "37af593e401cba60e5088fe8c0611df04e4c45e5905dd5c878c0db62ca7beb68", + "gitBlobSha1": "0b4c961785e4f5128dfef98e9ba3d68479e48eb9" + }, + { + "path": "operator/account-final-fixture-knockout.log", + "bytes": 1857, + "sha256": "b9b304b0456a20254297a859845f2e78911afc2f2b3e61f7719da0f0c64e854c", + "gitBlobSha1": "667141c73d3ae3380e8b1a7af8f9b844084f4dd1" + }, + { + "path": "operator/account-final-scenarios.command.json", + "bytes": 872, + "sha256": "8be6956a7431240dc77c24829b96629220ce5247b3666bfd5d98384530fef9b7", + "gitBlobSha1": "e02b9c30688c47ba4f3653e97e1ccca8b9399b64" + }, + { + "path": "operator/account-final-scenarios.log", + "bytes": 450, + "sha256": "1ebdf4ba92666fdb19d716a8ebe94aa4d53c1e3b2a2cf93da090abee21772a11", + "gitBlobSha1": "7427b37d4e20d29d2ee55320880c45bd1aa622f4" + }, + { + "path": "operator/account-matched-after.command.json", + "bytes": 857, + "sha256": "9c0a8eeccc66923d7d5fa2077744d49a3a2a9a693a8e1716f16c54ff845d4184", + "gitBlobSha1": "17023ad8bcee2f5d81b8a2cef9aa274f70b57129" + }, + { + "path": "operator/account-matched-after.log", + "bytes": 188, + "sha256": "534c4a05a52956ef0e3b2fa23a2e2d3b2c3eddf75acc7422278d266d9daab55c", + "gitBlobSha1": "92847cb482e4e1c1da19078855d272abc1efb8db" + }, + { + "path": "operator/account-scenarios-after-02.command.json", + "bytes": 835, + "sha256": "ec0e0ebfb4d65fa32458d1804c49b8e405f95c4aa9081a57132051151b0cea68", + "gitBlobSha1": "f71c1b463798b202d010a79975dcd11c4e8b0af3" + }, + { + "path": "operator/account-scenarios-after-02.log", + "bytes": 1507, + "sha256": "7d4c883ea8c95d18fbb2d9c12dfa5994ff7872b8de5c3a0bf48b4c7b8b110f6a", + "gitBlobSha1": "09e24307706038a3d6ba74238450e375386d4dff" + }, + { + "path": "operator/account-scenarios-after-03.command.json", + "bytes": 834, + "sha256": "ba52cc191314ed5b6eaa734b09d65d556a862b3e5ce21c44cd0b18a14ef2e469", + "gitBlobSha1": "94f3b65989ab5ccb7bc85fc4edd22972123a31c6" + }, + { + "path": "operator/account-scenarios-after-03.log", + "bytes": 415, + "sha256": "b5f213f2fb56f2806732bd2d75d9770df99b38f5aa6cc2f0d2b1ac51899cb576", + "gitBlobSha1": "7824ca6e98bf838d76213894378b30e5dbef310b" + }, + { + "path": "operator/account-scenarios-after.command.json", + "bytes": 832, + "sha256": "30580438b2a3bc9f0f8a809b7b12f8400ea880d0c8fd1f3839f71e69ec9e75ff", + "gitBlobSha1": "5fa65cb7431ec678c7ab98d75558a6dd62faf899" + }, + { + "path": "operator/account-scenarios-after.log", + "bytes": 1507, + "sha256": "648d5ea37e91bea13682b778bff94a78263823fa3449084b208d54d0c7e743c0", + "gitBlobSha1": "4f3bdd5e6e92f2f7b17067e192faa66a1b02853c" + }, + { + "path": "operator/account-scenarios-before-02.command.json", + "bytes": 787, + "sha256": "d750a93e8ee6d53f9e1cbce38262518fcd055c8662e51c2fccd3e6de6c00698c", + "gitBlobSha1": "f8863c4d93e3ffc433d5673be1089262ebdcd429" + }, + { + "path": "operator/account-scenarios-before-02.log", + "bytes": 1857, + "sha256": "0414a1878a2c3582768d3b6659edc156745e3fee78e91cad05ceb8e488090ea0", + "gitBlobSha1": "142945eee3e9467f95a9d2eb005f3c9ebb8cffd4" + }, + { + "path": "operator/account-scenarios-before.command.json", + "bytes": 785, + "sha256": "deae3dd34ff36b11d3cd97a34b06155df5f1c636e5516c841bbb7eee22cdbd98", + "gitBlobSha1": "b2943b885af06009593ab499785ba0b367e28334" + }, + { + "path": "operator/account-scenarios-before.log", + "bytes": 3684, + "sha256": "2a718d7e264acb249b9b60e7e414c589e845934cf6665c43f88e6340a58f856f", + "gitBlobSha1": "d8e77feffa83e75209eae1e14f39e1a8b128f2d3" + }, + { + "path": "operator/account-typecheck.command.json", + "bytes": 771, + "sha256": "76f585ec6838cac8847c047b37f6a7a89c186596cd119218011295609a2325c7", + "gitBlobSha1": "57c64309fab0de698eda79803130042d6191bd47" + }, + { + "path": "operator/account-typecheck.log", + "bytes": 1724, + "sha256": "51d5d08485705e4fd2b12e52f4ad3e270f06f2a8fe5dbca77babbe5375ba05dd", + "gitBlobSha1": "5244bbafe6219fa83158239d9771866b236d602c" + }, + { + "path": "operator/after/change-boundary.md.txt", + "bytes": 742, + "sha256": "67ff09b9fe36fda962caa4b1ac4d40d3694fec4035f4e7d28aa62e48579a1b0d", + "gitBlobSha1": "da680ad01171af0daa6b93a5acb45f9031432846" + }, + { + "path": "operator/after/change-boundary.png", + "bytes": 135281, + "sha256": "7efd166666c487ff28c3659bb7dc4a08a9fe2c2af9c02f134e6880094b27b40d", + "gitBlobSha1": "4c6747fca891e71271efb16212136ed80d3c28a8" + }, + { + "path": "operator/after/desktop-memory-1440-downloaded.html.txt", + "bytes": 88024, + "sha256": "d8835c7c4006f6c3e6641f2bf60a42ebd548ed2e6dcf54a5a2db977dc058fabd", + "gitBlobSha1": "b950720133993bd90b1370cc5247695849173468" + }, + { + "path": "operator/after/desktop-memory-1440-downloaded.json", + "bytes": 18240, + "sha256": "cf4890a8798a4250ac259e0d07650a8b38aac328c97f1cda5365d301a4fd8142", + "gitBlobSha1": "47edc2e32511272c62937f7ff29d85878f2be648" + }, + { + "path": "operator/after/desktop-memory-1440-downloaded.png", + "bytes": 133268, + "sha256": "ef099b2a6b9c226ab4c6508b80dd36dd79818af70b840ae573ed651d16ba988a", + "gitBlobSha1": "31820cd47e9ad5fc31d268660fa0227b0834fa86" + }, + { + "path": "operator/after/desktop-memory-1440-entry.html.txt", + "bytes": 22547, + "sha256": "6a97e3ae6b9c591ee81637e32ee4b1cdaa2ce1151c834bc8d606d0f6c003f710", + "gitBlobSha1": "3fd9c271ec1a22710da7a67cb5955423bf43c0b9" + }, + { + "path": "operator/after/desktop-memory-1440-entry.json", + "bytes": 2526, + "sha256": "ec8e57893efef341f849f7e18f35a281acc15c4412551ac2cbdf2ee2f620421a", + "gitBlobSha1": "28ca574fb23ab20b87c62b4ec3d8210784c7bab1" + }, + { + "path": "operator/after/desktop-memory-1440-entry.png", + "bytes": 184250, + "sha256": "1edf336806df3b4be374f010335643257d918860f3c30ee786b75ec4754c44a3", + "gitBlobSha1": "b8d5f906623e73326ab808649186df6b6e335e13" + }, + { + "path": "operator/after/desktop-memory-1440-later-download.html.txt", + "bytes": 87989, + "sha256": "e5be86de764b545a1015b09f714b3f4b022a1bf57dff0bd2a69b79b9ab8b9c37", + "gitBlobSha1": "16a96d892d3343c8c35f419aa4e3f1223a81a534" + }, + { + "path": "operator/after/desktop-memory-1440-later-download.json", + "bytes": 18256, + "sha256": "bd376990941821aa0b3297e40b163aab61b7ca1821703c134478e1c2e6b604ad", + "gitBlobSha1": "b9390e77a187fb50aa3fa513a448618e09a64586" + }, + { + "path": "operator/after/desktop-memory-1440-later-download.png", + "bytes": 135016, + "sha256": "57012fa7146507f83b6a39a41d224bdb73818a38c15bc283783edc379c3ecce5", + "gitBlobSha1": "7d76802a7e398acab82798e9f09ae5fa40793d51" + }, + { + "path": "operator/after/desktop-memory-1440-sample.html.txt", + "bytes": 89828, + "sha256": "835b624532ae30303e5c119201f6c04d8cc1fa8fb1780105bd32b044b9010df4", + "gitBlobSha1": "6a3b67b3fc4ce6ae4c71101740436bb737985e34" + }, + { + "path": "operator/after/desktop-memory-1440-sample.json", + "bytes": 19475, + "sha256": "6fd9171e17e09917bc180f88a47e2c55e44fa62cd89893b2b3b1ca4bcfb4bb11", + "gitBlobSha1": "d401987b201f1212eab62c7dd7c9144d90ed03e1" + }, + { + "path": "operator/after/desktop-memory-1440-sample.png", + "bytes": 136588, + "sha256": "35ee01f36f1e96ff6f5a76166979884ba97c72cf17454ce6c1eae3fb809b1dc5", + "gitBlobSha1": "0d9ba02dd483813878f14bf7c93679f3c4baae23" + }, + { + "path": "operator/after/Q3_variance.xlsx", + "bytes": 6685, + "sha256": "f932564a012f2cb46dea3a92eb90c80004895f5d55a0460c47ad7573379aa52f", + "gitBlobSha1": "aa969897f4d09ef8cdc6591021056fcf1dc31dd1" + }, + { + "path": "operator/after/report.json", + "bytes": 14238, + "sha256": "e93686c12a62b356d9f1f2c2c4b02b2fc5c21816b0b3cca389a5fbb8c45d4460", + "gitBlobSha1": "b5f8921649c41603ad1ea96763da85a851a2f12c" + }, + { + "path": "operator/after/review-2-Q3_variance.xlsx", + "bytes": 6691, + "sha256": "fd854667bbd9f4c8cb55d62abc7f98fedd1b5c8b332f827f889a163f7952c1aa", + "gitBlobSha1": "6bec4b4d21729a71921b7ca9d1a76eb8cc43723d" + }, + { + "path": "operator/after/server.log", + "bytes": 40, + "sha256": "0386ad966f6aa33781e062d9b528e22f2f95d68f68b974f9cb0b35cb28180a8d", + "gitBlobSha1": "6e5f17b3753c1e80493efa1a6f9f4652fd1d87a3" + }, + { + "path": "operator/after/ui-to-workbook.json", + "bytes": 1996, + "sha256": "ae4383866314affd0d9ceb452b50b3ed0da6dcbab22c259e254a97e776007bdd", + "gitBlobSha1": "dd704fd5a38d630cb83b3c04b3db436343473b5d" + }, + { + "path": "operator/after-source-bindings.json", + "bytes": 2118, + "sha256": "b6f06a5a0ccfc04684d6e8f4488629210a1979d4067cca3dd108a4dc44b57803", + "gitBlobSha1": "decee105dcc7bffc997928447616d02bdb63275a" + }, + { + "path": "operator/before/change-boundary.md.txt", + "bytes": 645, + "sha256": "b6d322e44efe7725e9db4ec6fae8e6a0e93bf5b302ffcf1fe80b49faf278399e", + "gitBlobSha1": "0128c3c799833ac6824fa8a7c6a0f64d3dfce021" + }, + { + "path": "operator/before/change-boundary.png", + "bytes": 135909, + "sha256": "fceb0dc7ca8665b6c3d49ce5ecf226c80293c571c17dbdbb57ddf1dbf896671d", + "gitBlobSha1": "0800e17c7db3f1741305c2a50153a0e70c82000b" + }, + { + "path": "operator/before/desktop-memory-1440-downloaded.html.txt", + "bytes": 87806, + "sha256": "b89c9b2057e9f2d7e901acdd6f5226291a6fa3956e655c32b13914b8c559e3a5", + "gitBlobSha1": "16732a58f0af67e9cba17bc7f0f2ef7235ff381e" + }, + { + "path": "operator/before/desktop-memory-1440-downloaded.json", + "bytes": 18164, + "sha256": "f828755c1cf6f73b14aa4e6698f8eba9f3947b8459c59f1a5db81ea7ebb6db81", + "gitBlobSha1": "0b154c31ad23e4c3b13ab2da693cdb99a90e865d" + }, + { + "path": "operator/before/desktop-memory-1440-downloaded.png", + "bytes": 133801, + "sha256": "d748f5992dec7ddee8816c83d8c6d8be7ddf754456cf64142417a2178afcee57", + "gitBlobSha1": "12ffb4cd96dd697ee4f5aef6790fba0560193e10" + }, + { + "path": "operator/before/desktop-memory-1440-entry.html.txt", + "bytes": 22547, + "sha256": "e0057268ff744c13eeb009343cc9a5132e7f5a3da7fd2ae832b4d8f3aab1d339", + "gitBlobSha1": "c913c8aa6afb0505cfce5a64949a52b7aaa2d37e" + }, + { + "path": "operator/before/desktop-memory-1440-entry.json", + "bytes": 2526, + "sha256": "a2f88a5a01a2a089aba35b6a02a040a3dad46e0af31b3a962933d3d2a0989d8c", + "gitBlobSha1": "7f163245d1dccd50ec506a153d2d2de476f99656" + }, + { + "path": "operator/before/desktop-memory-1440-entry.png", + "bytes": 184247, + "sha256": "e507a0b6b569bf42ee5f62cd5dc6bfd31f280a4d147bc175b4c1a432251dee33", + "gitBlobSha1": "b72b9a39e697c8d4a5b73655a0fd62cbd0b63740" + }, + { + "path": "operator/before/desktop-memory-1440-sample.html.txt", + "bytes": 89828, + "sha256": "38ad55be105664b0e2d053e56b3c32add132c209886aa19a528cf10be3a9ba61", + "gitBlobSha1": "c513a041b9d1c888d261506c03402e5081eef5a6" + }, + { + "path": "operator/before/desktop-memory-1440-sample.json", + "bytes": 19475, + "sha256": "6405182569264169158df1a05a2eceb7c751049d8f12e906efabb26b3d09cac9", + "gitBlobSha1": "e45a02eb27903f50a4453bae289dc3e3950b8a30" + }, + { + "path": "operator/before/desktop-memory-1440-sample.png", + "bytes": 136425, + "sha256": "3044c6e8b91dd77ae682d12c566fbdeac14e7a8100e07cda70ae096641006da7", + "gitBlobSha1": "c729783715a2893f4c5919ef7d5a4f96a5bb0c06" + }, + { + "path": "operator/before/Q3_variance.xlsx", + "bytes": 6631, + "sha256": "06dd606710f763f7e6016e81a8022667d69ab61f871cf50328484dec5f98dc31", + "gitBlobSha1": "98f62b33ada98750d69edf9123dccdb2fde4a853" + }, + { + "path": "operator/before/report.json", + "bytes": 6297, + "sha256": "b0858750daf2ee5d2a86cf9ce8db4cc7f11608c8d6dc6e930871c072fc100ace", + "gitBlobSha1": "0ab507f870ede269c7bba74207622a0bbb58696d" + }, + { + "path": "operator/before/server.log", + "bytes": 40, + "sha256": "fff0986d5228571d97dbd413cee519c7365978ac978a3f727447d367cec5a1b9", + "gitBlobSha1": "1d3ce8fab033e29995dcf66b267a03e7642b2ace" + }, + { + "path": "operator/before/ui-to-workbook.json", + "bytes": 1977, + "sha256": "b51471c257bb69e3c81423596b397b3def917ae8e29695bb7db7f6bcd481b60d", + "gitBlobSha1": "1d114a2a0efcf9380b8e4b4567a90b636fb090b7" + }, + { + "path": "operator/before-browser.command.json", + "bytes": 852, + "sha256": "b231bdfdc3bfc6efee4f3e49e3c605101dd20d53d7861fb03c8c70f916b6980f", + "gitBlobSha1": "c7181d021e267ebc0958c761e62fb6ab7e4896ec" + }, + { + "path": "operator/before-browser.log", + "bytes": 189, + "sha256": "14097e0766c4a7d8464116c231807878f8538b5db646b95f03a2ea26314c1c42", + "gitBlobSha1": "4e93f486806d69ad511565bb6e8f15bce79e7fa3" + }, + { + "path": "operator/before-build.command.json", + "bytes": 721, + "sha256": "7665503d1cf5a937366c28c097671b23bf6ee0f44e86aaae41c86c11d6fbb8c1", + "gitBlobSha1": "b0862a6b8485185f14c04fc5dde9bf7f00a950fa" + }, + { + "path": "operator/before-build.log", + "bytes": 37879, + "sha256": "c977ae458d1d5842ad534ece92b5d89915aec139de90e3760d5c75684b7a6a0a", + "gitBlobSha1": "146359d951e8ae0a3a590f3009d71f9de42be804" + }, + { + "path": "operator/before-current-dist-bindings.json", + "bytes": 80419, + "sha256": "bbdec57187ffbb5c8cae106d574c93c8fa511d95cd8bd0c92f6322f146653a6f", + "gitBlobSha1": "fe30cedcf44e17f85895478caa3cf5cf5f33f75f" + }, + { + "path": "operator/before-design-manifest.command.json", + "bytes": 737, + "sha256": "2110cd0b0c0a42a9e376e2aa2693abec03c4995cc413b848b29dcc6b6bacffaf", + "gitBlobSha1": "63d09199a981e417a49fee49a8624e1578da5129" + }, + { + "path": "operator/before-design-manifest.log", + "bytes": 11077, + "sha256": "f237e3b83aa87c94168b2f9bcb62d79e98c9171d2c514ef6414893f87c0f067f", + "gitBlobSha1": "28b7656de8f864f0813d0dc21c95c1b47a8a7534" + }, + { + "path": "operator/before-head.txt", + "bytes": 82, + "sha256": "a3b47e0c62a30037f782daad21f1e3f494945d123f0c5366f4d5b01b8b043d9e", + "gitBlobSha1": "72a617a663026fd05411d5816f8ca1692b7694c9" + }, + { + "path": "operator/before-refs.txt", + "bytes": 10482, + "sha256": "f07794386fdccb054b31c01567fd46458101cff69033c65a5c3125485eeb63df", + "gitBlobSha1": "6116c8a43f4ef609c608ad2cf6cdde04573065c8" + }, + { + "path": "operator/before-status.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "gitBlobSha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" + }, + { + "path": "operator/before-worktrees.txt", + "bytes": 900, + "sha256": "de1222d5d9910730bc1fccc42c093dba52613bbfbeb5592444c28887240fd22f", + "gitBlobSha1": "014d6a2d43da6260640915039153f05a4e191e78" + }, + { + "path": "operator/bind-after-source.py.txt", + "bytes": 1266, + "sha256": "ea2bc4f2b1b8c3e9ad306a58532a405288d699968e9d9b6154d7cb04df5b8ab0", + "gitBlobSha1": "a49dd0f197c35280cc413748db4ba514dd5546bb" + }, + { + "path": "operator/browser-suite/command.json", + "bytes": 900, + "sha256": "71d51f0470af31d5e63663ae4484777fbee4cc2507d2193aeed19fb8ae9b538f", + "gitBlobSha1": "c3a759e9b8067a6c989d02aa903bb2f290fc7435" + }, + { + "path": "operator/browser-suite/playwright.json", + "bytes": 6441, + "sha256": "a4af8977c989faa4de58744395a5c8e424e4dbffcaae556dee9e99bd88401beb", + "gitBlobSha1": "ae107111c838e1c10d49da0652eb6a31ee2c3a6f" + }, + { + "path": "operator/browser-suite/playwright.stderr.log", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "gitBlobSha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" + }, + { + "path": "operator/browser-suite/prior-hardcoded-screenshot.png", + "bytes": 138533, + "sha256": "12cdde17e3892a3402b0a9e794c0f66b683733367f179c76c418de7102ce4dd7", + "gitBlobSha1": "e8b7287c3a82dd2e7423210272faaf663eee95cc" + }, + { + "path": "operator/browser-suite/results/.last-run.json", + "bytes": 45, + "sha256": "91d1c43004802cd49950d78eb11c8fa7d05da8ffffe219a8b13b2f561bc00903", + "gitBlobSha1": "cbcc1fbac11a74b608b2b3edc3a2ffd6ab639cb2" + }, + { + "path": "operator/browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/attachments/review-1-xlsx-8d322e6991638bbf510ae3e72dba7d7b1229f8bd.xlsx", + "bytes": 6685, + "sha256": "acac9fdf9711781302c79fb142dbbaeaf775e224a426c32204e8ab2f3a22db32", + "gitBlobSha1": "a128b1df8453f248efd1200d80c4b0e1a0c58886" + }, + { + "path": "operator/browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/attachments/review-2-xlsx-d8bd07bada085ad796bb49244ecd789b4ea58285.xlsx", + "bytes": 6692, + "sha256": "495e4fd5fed1a6e4c5340b1cde5b9e1fb33559a37ca3c55993f79fa1a594623a", + "gitBlobSha1": "124cef5bd12e2b24543b6fbc17614542fa8cb6a8" + }, + { + "path": "operator/browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/desktop-account-current-export.png", + "bytes": 135059, + "sha256": "42ffda5a38b1edd79a599c9dde79e60d9978ced5efcc6717e07da73da2ad89c4", + "gitBlobSha1": "232f6e2dc20f84681f936b9dd4422fc57b2f78cb" + }, + { + "path": "operator/browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/review-1-Q3_variance.xlsx", + "bytes": 6685, + "sha256": "acac9fdf9711781302c79fb142dbbaeaf775e224a426c32204e8ab2f3a22db32", + "gitBlobSha1": "a128b1df8453f248efd1200d80c4b0e1a0c58886" + }, + { + "path": "operator/browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/review-2-Q3_variance.xlsx", + "bytes": 6692, + "sha256": "495e4fd5fed1a6e4c5340b1cde5b9e1fb33559a37ca3c55993f79fa1a594623a", + "gitBlobSha1": "124cef5bd12e2b24543b6fbc17614542fa8cb6a8" + }, + { + "path": "operator/browser-suite/server.log", + "bytes": 40, + "sha256": "07a33901221a45dd2ad564f2f9ef2a20f2b5ac6f60f0549688a4a2e2357bfee6", + "gitBlobSha1": "0f334470c4bfffb9e3a5fa1175ec0323b9e4d762" + }, + { + "path": "operator/browser-suite/uploaded-workbook-shared-grid.png", + "bytes": 138953, + "sha256": "d31c290f875c48b83a91941e95f125b16ec1335cc67080a41e7755bec1fde7ea", + "gitBlobSha1": "22431aa85a407feecd7965a52a7a762ff88bbb30" + }, + { + "path": "operator/custody-environment-wording-addendum.json", + "bytes": 456, + "sha256": "9e882eaf69658cb02c0b7c1c9bdd1ef47072e3b4c0cda2689d40e81ace4dc232", + "gitBlobSha1": "58ea52cc6b3fc4c049796e8ce33565b0adfdc369" + }, + { + "path": "operator/custody.json", + "bytes": 587, + "sha256": "3d5f2f12d1e38800809e497249f2841d4a8cc18431933e82b351045b418417a7", + "gitBlobSha1": "507937dcd2f961733449a383135d883f606815b5" + }, + { + "path": "operator/final-commands.json", + "bytes": 13244, + "sha256": "1cae9b8d88b0bc5e58c9b7207059666cb5591c3dba62dd04fc52ddbe40b2b491", + "gitBlobSha1": "61cb6232bf08e58ed4a15ea84b64a9b0af6704c0" + }, + { + "path": "operator/final-dist-bindings.json", + "bytes": 108908, + "sha256": "377ae4aa61d13f645086a22d91a1b5f40cd7578a2754f0b6bc507a94a33d4193", + "gitBlobSha1": "55792ba04eca2cc0179fd930ec9520373d30d1f6" + }, + { + "path": "operator/final-head.txt", + "bytes": 82, + "sha256": "a3b47e0c62a30037f782daad21f1e3f494945d123f0c5366f4d5b01b8b043d9e", + "gitBlobSha1": "72a617a663026fd05411d5816f8ca1692b7694c9" + }, + { + "path": "operator/final-refs.txt", + "bytes": 10482, + "sha256": "f07794386fdccb054b31c01567fd46458101cff69033c65a5c3125485eeb63df", + "gitBlobSha1": "6116c8a43f4ef609c608ad2cf6cdde04573065c8" + }, + { + "path": "operator/final-source.diff", + "bytes": 21105, + "sha256": "e17642f2b102c50cafd5aeb2ca9143b315e8a924bd88da7fc107b837218e62cf", + "gitBlobSha1": "d253c442766029a5b115b0ffde809e22fb691f6d" + }, + { + "path": "operator/final-status.txt", + "bytes": 106, + "sha256": "b20623a321bc49a827209c22a4343f4a0e966e84fa38f17a1add4af2897053fb", + "gitBlobSha1": "59351f9826bfc32680dfd5c746f8f59433ac92d1" + }, + { + "path": "operator/final-worktrees.txt", + "bytes": 900, + "sha256": "de1222d5d9910730bc1fccc42c093dba52613bbfbeb5592444c28887240fd22f", + "gitBlobSha1": "014d6a2d43da6260640915039153f05a4e191e78" + }, + { + "path": "operator/freeze-attempt-01.error.txt", + "bytes": 327, + "sha256": "855c9e4cc9afacbdc66bd9b0ff022299ac6f207a4175cc91b90b6aaecd86b819", + "gitBlobSha1": "6e35f3011931fb40b07785e06564c2bd16a2ce9d" + }, + { + "path": "operator/freeze-final.py.txt", + "bytes": 8648, + "sha256": "33b5394ae5344e1a4e359ad99440c7eaf9863fa25299428e5ac4b5074b3f5131", + "gitBlobSha1": "b5b66304c08388b94ff56a98f61d04c6c261c8ab" + }, + { + "path": "operator/freeze.json", + "bytes": 4300, + "sha256": "4e8640d97bbfe6bedd46521f40c15bd3c24e161e37384cbbf35452bff4d15605", + "gitBlobSha1": "cd2c8b75bd8d522c3f5ce7828be89eba64ad7382" + }, + { + "path": "operator/freeze.py.txt", + "bytes": 8688, + "sha256": "e71fc4a740ec4d414fdf3ef4356a47df1eaac6f54b60f3d7bf6b4b4549492cdb", + "gitBlobSha1": "5615d601d18c3ab19a486d8faf225d5ded6a206a" + }, + { + "path": "operator/handoff-link-check.json", + "bytes": 1022, + "sha256": "c42acdd4e4c48608ae67ea80b46345a1fff00e4ecac891df629b78c877e1259d", + "gitBlobSha1": "ce88be9536218b864827737a74fe7036c21c6c54" + }, + { + "path": "operator/installed-bindings.json", + "bytes": 8015, + "sha256": "4ac5e25ea31035cde5ddcda74bd79d3587f1029052232dbceedecc71d516476a", + "gitBlobSha1": "db7766e5499e1f1996a964815438f83b62c37c02" + }, + { + "path": "operator/knockout-final-Artifact.tsx.txt", + "bytes": 230374, + "sha256": "013064b20f5fea117e2e8b96755d2d93fce490e9eb5f6845b1b1cd6f386b07a0", + "gitBlobSha1": "37dac53ca1f89fb671db075898603bcdcb3ab796" + }, + { + "path": "operator/knockout-final-artifactXlsxExport.test.ts.txt", + "bytes": 9444, + "sha256": "3c48be964ca1c7e5083801d7875bc8a74f075f38e56fcab3e621e799b6ffc136", + "gitBlobSha1": "424266f4a1225c11bdd66b381d3089990ca6376b" + }, + { + "path": "operator/knockout-regressed-Artifact.tsx.txt", + "bytes": 230378, + "sha256": "701cbef1cbe9ca89dea754b203243dbd760aa04d9062f6053e1615f7cbeb6463", + "gitBlobSha1": "74c90f35c5b67e557684095b7a84497fdf995d2a" + }, + { + "path": "operator/knockout-source-bindings.json", + "bytes": 373, + "sha256": "605ce705fc0472437ec1c13eb84ce090ae0f57a25c918e35ab203618e2481e17", + "gitBlobSha1": "6af82e81f718785f419626db6a26271da3155a3f" + }, + { + "path": "operator/manifest.json", + "bytes": 30868, + "sha256": "4e5fb3dabe91e0515f4506e3e2b6389c6bffd9bdef2fb0735c360b9a66c0883f", + "gitBlobSha1": "054cfea65ff5668d252beaf628c513c4675d3ead" + }, + { + "path": "operator/observe-after.mjs.txt", + "bytes": 14774, + "sha256": "2cda94d11bee146005c9bf6e427a0bbc81ef58b25bd16540ea843435422a2f9e", + "gitBlobSha1": "8b08728e0dfff20bb21aed47491f52905816a11e" + }, + { + "path": "operator/observe-before.mjs.txt", + "bytes": 11466, + "sha256": "016805ef1fb300a68e503274e694e1645d98622dc24d5008fcfb3d33a9365d2c", + "gitBlobSha1": "6a2630487efbcc034bf9a3328af29cecc77e0a14" + }, + { + "path": "operator/prepare-after-probe.py.txt", + "bytes": 4991, + "sha256": "f849034d67047a3bd39f81108287376125853e9b64aba63ac2a4bec3771f47de", + "gitBlobSha1": "587ac10b4f07455b7487523ca5874f97fc6b91c9" + }, + { + "path": "operator/preserve-build-and-knockout.py.txt", + "bytes": 2534, + "sha256": "b619d075de2a348cec71da1d2e94c0a025d25678fe22d7c30363f50948c19e10", + "gitBlobSha1": "d14a5fd2abaa0f17b279e7233943bee9f700330a" + }, + { + "path": "operator/prior-dist-bindings.json", + "bytes": 75526, + "sha256": "95cf73d55ada0e26a5c68867d94e55051f4b723eadba7a879c98a5acedb3ede5", + "gitBlobSha1": "f9901bff341d0b206239d1237916ca5457193674" + }, + { + "path": "operator/raw-workbook-xml-check.json", + "bytes": 7633, + "sha256": "01e5d8911026927000f301d95b085022d2ac73fee6588f50fe8c8649cb65491b", + "gitBlobSha1": "223df71424bdab2cf912f3410bb5aa8322b60c34" + }, + { + "path": "operator/run-browser-suite.mjs.txt", + "bytes": 3977, + "sha256": "f66242a3bb9064ef9d838fa7d382754dbe71312a87219da114c49ec9754d10c3", + "gitBlobSha1": "044de8c236b59209cf722807d224e10699a42985" + }, + { + "path": "operator/run-command.py.txt", + "bytes": 1919, + "sha256": "017a32019ba2572cdb30574567188dbc7e43dcd798ecf05b81e6b9568f5ae23d", + "gitBlobSha1": "f5e549636258478ee8a7acf338e0d8f08a13d15b" + }, + { + "path": "operator/source-after/e2e/excel-grid.spec.ts.txt", + "bytes": 10117, + "sha256": "a0f13b4194018d14b918dc90de827bce5969730b2b10bcb4ed611db6a4333f73", + "gitBlobSha1": "e9b9be5756c193dda6523dcab1fad7543b89b982" + }, + { + "path": "operator/source-after/HANDOFF.md.txt", + "bytes": 12495, + "sha256": "863cf1d6dc6a02b1a0cbfc547603164f60511face20a96f89592cdb4729a8035", + "gitBlobSha1": "49706cb18d223f12c4f0b1ad116e6f95f493801e" + }, + { + "path": "operator/source-after/src/ui/panels/Artifact.tsx.txt", + "bytes": 230374, + "sha256": "013064b20f5fea117e2e8b96755d2d93fce490e9eb5f6845b1b1cd6f386b07a0", + "gitBlobSha1": "37dac53ca1f89fb671db075898603bcdcb3ab796" + }, + { + "path": "operator/source-after/tests/artifactXlsxExport.test.ts.txt", + "bytes": 9444, + "sha256": "3c48be964ca1c7e5083801d7875bc8a74f075f38e56fcab3e621e799b6ffc136", + "gitBlobSha1": "424266f4a1225c11bdd66b381d3089990ca6376b" + }, + { + "path": "operator/source-before/e2e/excel-grid.spec.ts.txt", + "bytes": 6851, + "sha256": "ffd4f9ff464148b6e01eb27c02ae13db2e539247be68071bfdd54c7ef559b890", + "gitBlobSha1": "9fbb8a28c71c2d4aeee91388568a58925018217a" + }, + { + "path": "operator/source-before/HANDOFF.md.txt", + "bytes": 9372, + "sha256": "15dc28a7fff811f917cab5b627ccc6306c2e45dbdf1a7be815fa08a16a08e6e6", + "gitBlobSha1": "3b3cececfbffa6f8f769eeaee03d0dbec84bb722" + }, + { + "path": "operator/source-before/package-lock.json", + "bytes": 560115, + "sha256": "835ac86997865c2792f03f588b0ec58632b67b9b4fdc864a28a7020c42ab5a92", + "gitBlobSha1": "e189bd4a22b99eeb1ddd6a71512b96d503f43abc" + }, + { + "path": "operator/source-before/package.json", + "bytes": 26875, + "sha256": "70964ae92133d1c6017b6125e190ac1ec62bbf9891c2dbc1b10d0ff45bfca589", + "gitBlobSha1": "a1aad98a889e644db8c0690ec6f09c36e6f0c4ee" + }, + { + "path": "operator/source-before/src/app/styles.css.txt", + "bytes": 281660, + "sha256": "654ea434a1c3fcca6fbd8dcbce1a6ba4c0977c209f5df3be4db1ddd748efb575", + "gitBlobSha1": "1f86356a46862f4aa39b41b1b8c8f4b3e42fe386" + }, + { + "path": "operator/source-before/src/ui/panels/Artifact.tsx.txt", + "bytes": 230378, + "sha256": "701cbef1cbe9ca89dea754b203243dbd760aa04d9062f6053e1615f7cbeb6463", + "gitBlobSha1": "74c90f35c5b67e557684095b7a84497fdf995d2a" + }, + { + "path": "operator/source-before/src/ui/workArtifacts/xlsxDownload.ts.txt", + "bytes": 1504, + "sha256": "e2dac3c92c9ef441024f1ee53ed119954f78b626ef20cb5e3986f6545e9da5ab", + "gitBlobSha1": "d1c9c7fb91aa4af009755b2c2a7a0f9e1deebcac" + }, + { + "path": "operator/source-before/tests/artifactXlsxExport.test.ts.txt", + "bytes": 3256, + "sha256": "1a84ba5c5722797fa79883c476533c37b3cfea54b38a3385cff7feeff7914825", + "gitBlobSha1": "452d795d63a2330d1955eef5a25d98c1596cbc48" + }, + { + "path": "operator/source-normalization.json", + "bytes": 749, + "sha256": "bee79d08df91a3957e5d8e3463305025771a5ab3007ad5bc50f6d94adbfc62a9", + "gitBlobSha1": "e06ea3a994e9d6d851a616b99d944f2990665677" + }, + { + "path": "original-inventory.json", + "bytes": 70165, + "sha256": "446725c43a69f1bde493a980320e9f458f09a649b8001d9a6f2e0ce8129335ba", + "gitBlobSha1": "052362b7d229e74f61efe6b3cb72fd46c7fa6e7c" + }, + { + "path": "raw-copy-map.json", + "bytes": 65846, + "sha256": "901ed0d83ce8d9a5dbedf6b9c86a925b247e43a590d9258fb11858d89c826bd3", + "gitBlobSha1": "7e8b06788031d0bc1eac67dfeee12637ef79b0ac" + }, + { + "path": "README.md", + "bytes": 3829, + "sha256": "68fa278deba60a6685d098b6b033e6204df22c8912b122e9a56edc65f0b9154c", + "gitBlobSha1": "0f9c9c6ff5378a53c44fd8392bce85eb3eb8c638" + }, + { + "path": "review/E6f_NODEROOM_DESKTOP_ACCOUNT_FINAL_JUDGE.json", + "bytes": 34070, + "sha256": "db7bd1d5235bf80418d73d0fdaf55af568178bea4b64e427f4dfaadf959cde7d", + "gitBlobSha1": "0f4a8708a2cd77696e9c150cf5783e1432a770bf" + }, + { + "path": "review/E6f_NODEROOM_DESKTOP_ACCOUNT_FINAL_JUDGE.md.txt", + "bytes": 5239, + "sha256": "20a12b4dd65688d12a4d00525d321b41e20881c61d0e5dd9bf8224644eeb5480", + "gitBlobSha1": "e19611a7042c3d36d2e509648cb9445f3e77bf6b" + }, + { + "path": "review/E6f_NODEROOM_DESKTOP_ACCOUNT_REPAIR_RECEIPT.json", + "bytes": 4634, + "sha256": "15b55c6ba99bfdfedbe04bcbd9b2f4bbe3b51a0fce3c9c2a3d2708ae0f340f73", + "gitBlobSha1": "1e2e430a6ff8d71ca96f8ef8f9088698b256fda4" + }, + { + "path": "review/E6f_NODEROOM_DESKTOP_ACCOUNT_REPAIR_RECEIPT.md.txt", + "bytes": 5502, + "sha256": "23e158c7b99438b850be98519b1b820f0f31c26f532bd727a1a166d0e576af11", + "gitBlobSha1": "f91e269cd7889dbbc52ff8da0d666b241284eef4" + }, + { + "path": "verify.py", + "bytes": 1936, + "sha256": "ada546acd9481894c3c80abc7054d5b20d86fae3d414b389ebc55e83287149f8", + "gitBlobSha1": "396c47bd167dbc1e80a1818596c4d87fdabf4ee7" + } + ] +} diff --git a/evidence/desktop-account-20260905/operator/account-browser-suite.command.json b/evidence/desktop-account-20260905/operator/account-browser-suite.command.json new file mode 100644 index 00000000..0f8c0dd2 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-browser-suite.command.json @@ -0,0 +1,15 @@ +{ + "startedAt": "2026-09-05T16:49:31.824933+00:00", + "finishedAt": "2026-09-05T16:49:48.017732+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "C:/Users/hshum/.codex/worktrees/5dba/nodebench-ai/docs/plans/portfolio-recovery-20260904/E6f-noderoom-desktop-account-repair-01/run-browser-suite.mjs" + ], + "timeoutSeconds": 240, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 16.188, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-browser-suite.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" +} diff --git a/evidence/desktop-account-20260905/operator/account-browser-suite.log b/evidence/desktop-account-20260905/operator/account-browser-suite.log new file mode 100644 index 00000000..ba1ebfca --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-browser-suite.log @@ -0,0 +1 @@ +{"startedAt":"2026-09-05T16:49:31.902Z","base":"http://127.0.0.1:54523","config":"playwright.config.ts unchanged","timeoutPolicy":"Existing30s; no retries/timeout/skip/config override","oldScreenshotExisted":true,"argv":["C:\\nvm4w\\nodejs\\node.exe","D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905\\node_modules\\@playwright\\test\\cli.js","test","e2e/excel-grid.spec.ts","--output","C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\browser-suite\\results","--reporter=json"],"exitCode":0,"producedHardcodedScreenshotSha256":"d31c290f875c48b83a91941e95f125b16ec1335cc67080a41e7755bec1fde7ea","oldScreenshotRestored":true,"finishedAt":"2026-09-05T16:49:48.008Z"} diff --git a/evidence/desktop-account-20260905/operator/account-convex-typecheck.command.json b/evidence/desktop-account-20260905/operator/account-convex-typecheck.command.json new file mode 100644 index 00000000..22c63dd9 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-convex-typecheck.command.json @@ -0,0 +1,20 @@ +{ + "startedAt": "2026-09-05T16:50:11.238280+00:00", + "finishedAt": "2026-09-05T16:50:17.484680+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905/node_modules/typescript/bin/tsc", + "--noEmit", + "--project", + "convex/tsconfig.json", + "--pretty", + "false" + ], + "timeoutSeconds": 180, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 6.25, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-convex-typecheck.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" +} diff --git a/evidence/desktop-account-20260905/operator/account-convex-typecheck.log b/evidence/desktop-account-20260905/operator/account-convex-typecheck.log new file mode 100644 index 00000000..e69de29b diff --git a/evidence/desktop-account-20260905/operator/account-design-audit.command.json b/evidence/desktop-account-20260905/operator/account-design-audit.command.json new file mode 100644 index 00000000..81f80189 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-design-audit.command.json @@ -0,0 +1,16 @@ +{ + "startedAt": "2026-09-05T16:50:35.099323+00:00", + "finishedAt": "2026-09-05T16:50:37.487250+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "run", + "design:audit" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 2.391, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-design-audit.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" +} diff --git a/evidence/desktop-account-20260905/operator/account-design-audit.log b/evidence/desktop-account-20260905/operator/account-design-audit.log new file mode 100644 index 00000000..e2392f8e --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-design-audit.log @@ -0,0 +1,56 @@ + +> noderoom@0.1.1 design:audit +> tsx scripts/design-system.ts audit && npm run ui:layer-audit && npm run ui:contract:check + +design-system audit: pass +token-drift: 551 warnings (hex 116, type-scale 279, radius 155; allowed hexes 35) - guidance only, never fails the audit +WARN token-canonical-missing design-reference/assets/colors_and_type.css - Canonical token file was not available; the allowed hex set only covers styles.css :root/[data-theme] tokens. +WARN token-hex-drift src/app/styles.css:24 - #c0392b is not in the canonical token set. +WARN token-hex-drift src/app/styles.css:33 - #66717c is not in the canonical token set. +WARN type-scale-drift src/app/styles.css:63 - font-size 10.5px is off the design type scale (11/12/13/14/15/17/20/26/31/40px). +WARN token-hex-drift src/app/styles.css:90 - #C6684A is not in the canonical token set. +WARN radius-scale-drift src/app/styles.css:90 - border-radius 7px is off the radius scale (4/6/8/10/12/16/9999px). +WARN token-hex-drift src/app/styles.css:98 - #8f402b is not in the canonical token set. +WARN type-scale-drift src/app/styles.css:105 - font-size 10px is off the design type scale (11/12/13/14/15/17/20/26/31/40px). +WARN radius-scale-drift src/app/styles.css:109 - border-radius 999px is off the radius scale (4/6/8/10/12/16/9999px). +WARN radius-scale-drift src/app/styles.css:112 - border-radius 999px is off the radius scale (4/6/8/10/12/16/9999px). +WARN radius-scale-drift src/app/styles.css:124 - border-radius 9px is off the radius scale (4/6/8/10/12/16/9999px). +WARN radius-scale-drift src/app/styles.css:125 - border-radius 9px is off the radius scale (4/6/8/10/12/16/9999px). +WARN radius-scale-drift src/app/styles.css:141 - border-radius 999px is off the radius scale (4/6/8/10/12/16/9999px). +WARN radius-scale-drift src/app/styles.css:160 - border-radius 9px is off the radius scale (4/6/8/10/12/16/9999px). +WARN type-scale-drift src/app/styles.css:161 - font-size 18px is off the design type scale (11/12/13/14/15/17/20/26/31/40px). +WARN type-scale-drift src/app/styles.css:163 - font-size 12.5px is off the design type scale (11/12/13/14/15/17/20/26/31/40px). +WARN radius-scale-drift src/app/styles.css:169 - border-radius 14px is off the radius scale (4/6/8/10/12/16/9999px). +WARN radius-scale-drift src/app/styles.css:172 - border-radius 7px is off the radius scale (4/6/8/10/12/16/9999px). +WARN radius-scale-drift src/app/styles.css:173 - border-radius 1px is off the radius scale (4/6/8/10/12/16/9999px). +WARN type-scale-drift src/app/styles.css:177 - font-size 12.5px is off the design type scale (11/12/13/14/15/17/20/26/31/40px). +WARN type-scale-drift src/app/styles.css:179 - font-size 10px is off the design type scale (11/12/13/14/15/17/20/26/31/40px). +WARN type-scale-drift src/app/styles.css:193 - font-size 10.5px is off the design type scale (11/12/13/14/15/17/20/26/31/40px). +WARN type-scale-drift src/app/styles.css:202 - font-size 10.5px is off the design type scale (11/12/13/14/15/17/20/26/31/40px). +WARN radius-scale-drift src/app/styles.css:202 - border-radius 7px is off the radius scale (4/6/8/10/12/16/9999px). +WARN type-scale-drift src/app/styles.css:203 - font-size 9px is off the design type scale (11/12/13/14/15/17/20/26/31/40px). +WARN type-scale-drift src/app/styles.css:206 - font-size 11.5px is off the design type scale (11/12/13/14/15/17/20/26/31/40px). +WARN type-scale-drift src/app/styles.css:207 - font-size 10.5px is off the design type scale (11/12/13/14/15/17/20/26/31/40px). +WARN radius-scale-drift src/app/styles.css:207 - border-radius 7px is off the radius scale (4/6/8/10/12/16/9999px). +WARN type-scale-drift src/app/styles.css:222 - font-size 11.5px is off the design type scale (11/12/13/14/15/17/20/26/31/40px). +WARN type-scale-drift src/app/styles.css:229 - font-size 10px is off the design type scale (11/12/13/14/15/17/20/26/31/40px). +WARN type-scale-drift src/app/styles.css:233 - font-size 10px is off the design type scale (11/12/13/14/15/17/20/26/31/40px). +WARN type-scale-drift src/app/styles.css:234 - font-size 9px is off the design type scale (11/12/13/14/15/17/20/26/31/40px). +WARN type-scale-drift src/app/styles.css:237 - font-size 11.5px is off the design type scale (11/12/13/14/15/17/20/26/31/40px). +WARN type-scale-drift src/app/styles.css:247 - font-size 11.5px is off the design type scale (11/12/13/14/15/17/20/26/31/40px). +WARN type-scale-drift src/app/styles.css:248 - font-size 9px is off the design type scale (11/12/13/14/15/17/20/26/31/40px). +WARN type-scale-drift src/app/styles.css:253 - font-size 10.5px is off the design type scale (11/12/13/14/15/17/20/26/31/40px). +WARN type-scale-drift src/app/styles.css:254 - font-size 9.5px is off the design type scale (11/12/13/14/15/17/20/26/31/40px). +WARN type-scale-drift src/app/styles.css:258 - font-size 9.5px is off the design type scale (11/12/13/14/15/17/20/26/31/40px). +... 513 more drift warnings - run "npm run design:audit -- --json" for the full list +reference-provenance: pass (6 observations, 58 facts, 7 rules, 1 score receipts, 14 cited facts) + +> noderoom@0.1.1 ui:layer-audit +> tsx scripts/ui-layer-audit.ts + +ui-layer audit: pass (all, 589 source files) + +> noderoom@0.1.1 ui:contract:check +> tsx scripts/ui-contract-emit.ts --check + +ui-contract check: pass (13 elements, 5 invariants, v1.0.0) diff --git a/evidence/desktop-account-20260905/operator/account-final-build.command.json b/evidence/desktop-account-20260905/operator/account-final-build.command.json new file mode 100644 index 00000000..29e48588 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-final-build.command.json @@ -0,0 +1,16 @@ +{ + "startedAt": "2026-09-05T16:45:52.517234+00:00", + "finishedAt": "2026-09-05T16:46:37.607725+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "run", + "build" + ], + "timeoutSeconds": 300, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 45.094, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-final-build.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" +} diff --git a/evidence/desktop-account-20260905/operator/account-final-build.log b/evidence/desktop-account-20260905/operator/account-final-build.log new file mode 100644 index 00000000..28c74921 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-final-build.log @@ -0,0 +1,440 @@ + +> noderoom@0.1.1 build +> tsc --noEmit && vite build && tsx scripts/verify-build-provenance.ts + +vite v6.4.3 building for production... +transforming... +✓ 7759 modules transformed. +rendering chunks... +computing gzip size... +dist/assets/pyodideKernel.worker-DHEMhrGh.js 4.81 kB +dist/index.html 17.04 kB │ gzip: 4.78 kB +dist/pyodide/pyodide.mjs 17.84 kB +dist/pyodide/pyodide-lock.json 113.80 kB │ gzip: 25.46 kB +dist/assets/pdf.worker.min-qwK7q_zL.mjs 1,046.21 kB +dist/pyodide/pyodide.asm.mjs 1,250.26 kB +dist/pyodide/python_stdlib.zip 2,552.46 kB +dist/pyodide/pyodide.asm.wasm 9,610.00 kB │ gzip: 3,605.46 kB +dist/assets/tokens-D_FyPjo0.css 1.33 kB │ gzip: 0.53 kB +dist/assets/pdf-vendor-DThUiFH8.css 1.53 kB │ gzip: 0.61 kB +dist/assets/TraceSurface-3Mc5xPHl.css 11.60 kB │ gzip: 2.40 kB +dist/assets/InvestigationReport-DdZK31A3.css 14.32 kB │ gzip: 2.66 kB +dist/assets/graph-vendor-C5ap-Sga.css 15.87 kB │ gzip: 2.67 kB +dist/assets/RoomTour-DRYXy7Ep.css 23.70 kB │ gzip: 5.04 kB +dist/assets/primitives-BSN9ZDgJ.css 41.72 kB │ gzip: 7.13 kB +dist/assets/WorkArtifactsPanel-Dagy3OZH.css 45.07 kB │ gzip: 6.11 kB +dist/assets/ai-elements-DlCQiZA9.css 49.55 kB │ gzip: 9.74 kB +dist/assets/mermaid-GHXKKRXX-DXxw6UAo.css 97.57 kB │ gzip: 17.59 kB +dist/assets/MobileRoot-C_RVAb0O.css 175.42 kB │ gzip: 27.48 kB +dist/assets/styles-ClFGusx6.css 226.19 kB │ gzip: 36.42 kB +dist/assets/colors-Cc3OSVma.js 0.11 kB │ gzip: 0.12 kB +dist/assets/channel-D7wJZFli.js 0.11 kB │ gzip: 0.13 kB +dist/assets/range-OtVwhkKS.js 0.18 kB │ gzip: 0.17 kB +dist/assets/chunk-2Q5K7J3B-B7alykJD.js 0.19 kB │ gzip: 0.16 kB +dist/assets/chunk-XXDRQBXY-DSy_Unjx.js 0.28 kB │ gzip: 0.23 kB +dist/assets/chunk-JWPE2WC7-DKwCoFi4.js 0.30 kB │ gzip: 0.20 kB +dist/assets/chunk-5VM5RSS4-CvDbOz7T.js 0.37 kB │ gzip: 0.27 kB +dist/assets/init-Dmth1JHB.js 0.38 kB │ gzip: 0.19 kB +dist/assets/sanitizeArtifactSvg-DK6rc30l.js 0.48 kB │ gzip: 0.33 kB +dist/assets/chunk-KBJHAD2P-DyHz5_Bd.js 0.53 kB │ gzip: 0.37 kB +dist/assets/codeowners-Bp6g37R7.js 0.55 kB │ gzip: 0.32 kB +dist/assets/stateDiagram-v2-UEYNNEHI-DQK6vlIS.js 0.56 kB │ gzip: 0.36 kB +dist/assets/classDiagram-JCYQIIEL-CVUWZNJN.js 0.60 kB │ gzip: 0.38 kB +dist/assets/classDiagram-v2-OCEON4UE-CVUWZNJN.js 0.60 kB │ gzip: 0.38 kB +dist/assets/index-CloyLe0J.js 0.66 kB │ gzip: 0.41 kB +dist/assets/swimlanesDiagram-ULZ7WXOC-7zvfhEXg.js 0.68 kB │ gzip: 0.43 kB +dist/assets/highlighted-body-OFNGDK62-CQU1Slg-.js 0.70 kB │ gzip: 0.44 kB +dist/assets/shellsession-BADoaaVG.js 0.71 kB │ gzip: 0.43 kB +dist/assets/infoDiagram-6WML65LV-BLo1fkVx.js 0.71 kB │ gzip: 0.46 kB +dist/assets/tsv-B_m7g4N7.js 0.74 kB │ gzip: 0.34 kB +dist/assets/html-derivative-BFtXZ54Q.js 0.90 kB │ gzip: 0.50 kB +dist/assets/git-rebase-r7XF79zn.js 0.98 kB │ gzip: 0.44 kB +dist/assets/qmldir-C8lEn-DE.js 1.00 kB │ gzip: 0.45 kB +dist/assets/sizeCapture-X5ZJPWSS-DZmY1nw2.js 1.13 kB │ gzip: 0.62 kB +dist/assets/csv-fuZLfV_i.js 1.14 kB │ gzip: 0.37 kB +dist/assets/git-commit-F4YmCXRG.js 1.23 kB │ gzip: 0.53 kB +dist/assets/mermaid.client-B7Mtf2KX.js 1.28 kB │ gzip: 0.70 kB +dist/assets/xsl-CtQFsRM5.js 1.39 kB │ gzip: 0.52 kB +dist/assets/dotenv-Da5cRb03.js 1.42 kB │ gzip: 0.53 kB +dist/assets/ordinal-BeghXfj9.js 1.47 kB │ gzip: 0.61 kB +dist/assets/sparql-rVzFXLq3.js 1.48 kB │ gzip: 0.82 kB +dist/assets/ini-BEwlwnbL.js 1.53 kB │ gzip: 0.50 kB +dist/assets/fortran-fixed-form-CkoXwp7k.js 1.67 kB │ gzip: 0.69 kB +dist/assets/railroadDiagram-AXF67PYL-C4z2KMPV.js 1.74 kB │ gzip: 0.82 kB +dist/assets/docker-BcOcwvcX.js 1.74 kB │ gzip: 0.60 kB +dist/assets/hxml-Bvhsp5Yf.js 1.74 kB │ gzip: 0.88 kB +dist/assets/desktop-BmXAJ9_W.js 1.83 kB │ gzip: 0.76 kB +dist/assets/chunk-2GRJ4B5K-CLAHGF8-.js 1.92 kB │ gzip: 0.85 kB +dist/assets/abnfDiagram-N423BO3Z-B8flrIaI.js 1.94 kB │ gzip: 0.95 kB +dist/assets/PdfCitation-DPZL-wdn.js 2.02 kB │ gzip: 0.95 kB +dist/assets/pegDiagram-VL7TDLO6-bvam0ug0.js 2.09 kB │ gzip: 0.99 kB +dist/assets/ebnfDiagram-BXEA7PRR-ft3TnKcG.js 2.14 kB │ gzip: 0.94 kB +dist/assets/wenyan-BV7otONQ.js 2.16 kB │ gzip: 1.09 kB +dist/assets/jssm-C2t-YnRu.js 2.24 kB │ gzip: 0.62 kB +dist/assets/reg-C-SQnVFl.js 2.35 kB │ gzip: 0.70 kB +dist/assets/edge-BkV0erSs.js 2.36 kB │ gzip: 0.70 kB +dist/assets/diff-D97Zzqfu.js 2.57 kB │ gzip: 0.70 kB +dist/assets/gleam-BspZqrRM.js 2.58 kB │ gzip: 0.82 kB +dist/assets/erb-B12qg9BL.js 2.61 kB │ gzip: 0.84 kB +dist/assets/vegaLite.client-jnpk0k4v.js 2.62 kB │ gzip: 1.32 kB +dist/assets/hy-DFXneXwc.js 2.65 kB │ gzip: 1.18 kB +dist/assets/json-Cp-IABpG.js 2.82 kB │ gzip: 0.78 kB +dist/assets/openscad-C4EeE6gA.js 2.82 kB │ gzip: 1.01 kB +dist/assets/log-2UxHyX5q.js 2.85 kB │ gzip: 0.90 kB +dist/assets/cairo-KRGpt6FW.js 2.94 kB │ gzip: 0.81 kB +dist/assets/berry-uYugtg8r.js 3.01 kB │ gzip: 0.81 kB +dist/assets/jsonl-DcaNXYhu.js 3.01 kB │ gzip: 0.79 kB +dist/assets/jsonc-Des-eS-w.js 3.11 kB │ gzip: 0.80 kB +dist/assets/logo-BtOb2qkB.js 3.13 kB │ gzip: 1.47 kB +dist/assets/po-BTJTHyun.js 3.24 kB │ gzip: 0.91 kB +dist/assets/json5-C9tS-k6U.js 3.25 kB │ gzip: 0.83 kB +dist/assets/mipsasm-CKIfxQSi.js 3.26 kB │ gzip: 1.18 kB +dist/assets/tasl-QIJgUcNo.js 3.29 kB │ gzip: 0.85 kB +dist/assets/genie-D0YGMca9.js 3.36 kB │ gzip: 1.21 kB +dist/assets/rel-C3B-1QV4.js 3.37 kB │ gzip: 1.11 kB +dist/assets/vala-CsfeWuGM.js 3.37 kB │ gzip: 1.19 kB +dist/assets/arc-BNTOC954.js 3.42 kB │ gzip: 1.46 kB +dist/assets/splunk-BtCnVYZw.js 3.44 kB │ gzip: 1.52 kB +dist/assets/fluent-C4IJs8-o.js 3.61 kB │ gzip: 0.90 kB +dist/assets/ssh-config-_ykCGR6B.js 3.62 kB │ gzip: 1.60 kB +dist/assets/jsonnet-DFQXde-d.js 3.62 kB │ gzip: 1.05 kB +dist/assets/kdl-DV7GczEv.js 3.63 kB │ gzip: 1.04 kB +dist/assets/glsl-DplSGwfg.js 3.63 kB │ gzip: 1.41 kB +dist/assets/hurl-irOxFIW8.js 3.65 kB │ gzip: 1.16 kB +dist/assets/narrat-DRg8JJMk.js 3.67 kB │ gzip: 1.11 kB +dist/assets/turtle-BsS91CYL.js 3.70 kB │ gzip: 0.98 kB +dist/assets/zenscript-DVFEvuxE.js 3.91 kB │ gzip: 1.28 kB +dist/assets/ron-D8l8udqQ.js 3.91 kB │ gzip: 0.98 kB +dist/assets/gn-n2N0HUVH.js 4.00 kB │ gzip: 1.49 kB +dist/assets/pascal-D93ZcfNL.js 4.15 kB │ gzip: 1.67 kB +dist/assets/diagram-LBJQPF4R-BztK0VBJ.js 4.38 kB │ gzip: 1.92 kB +dist/assets/tcl-dwOrl1Do.js 4.43 kB │ gzip: 1.52 kB +dist/assets/nextflow-Zz6hmt5N.js 4.51 kB │ gzip: 1.17 kB +dist/assets/rosmsg-BJDFO7_C.js 4.52 kB │ gzip: 1.06 kB +dist/assets/http-jrhK8wxY.js 4.55 kB │ gzip: 1.12 kB +dist/assets/polar-C0HS_06l.js 4.67 kB │ gzip: 1.12 kB +dist/assets/defaultLocale-CzDG__Ur.js 4.70 kB │ gzip: 2.19 kB +dist/assets/sdbl-DVxCFoDh.js 4.70 kB │ gzip: 2.01 kB +dist/assets/fennel-BYunw83y.js 4.77 kB │ gzip: 1.53 kB +dist/assets/bibtex-CHM0blh-.js 4.80 kB │ gzip: 0.83 kB +dist/assets/linear-D_qmF9Am.js 4.82 kB │ gzip: 2.00 kB +dist/assets/index-DVBvMn51.js 4.86 kB │ gzip: 1.93 kB +dist/assets/main-Bb0OMdhb.js 4.93 kB │ gzip: 2.12 kB +dist/assets/llvm-DjAJT7YJ.js 5.05 kB │ gzip: 2.01 kB +dist/assets/map-Czzmt4hB.js 5.07 kB │ gzip: 2.07 kB +dist/assets/OpsPanel-CxcogtNq.js 5.11 kB │ gzip: 1.80 kB +dist/assets/wgsl-Dx-B1_4e.js 5.14 kB │ gzip: 1.39 kB +dist/assets/gdresource-BOOCDP_w.js 5.29 kB │ gzip: 1.34 kB +dist/assets/qml-3beO22l8.js 5.34 kB │ gzip: 1.38 kB +dist/assets/zig-VOosw3JB.js 5.34 kB │ gzip: 1.55 kB +dist/assets/dax-CEL-wOlO.js 5.37 kB │ gzip: 2.23 kB +dist/assets/infographic.client-CrhtzGAz.js 5.38 kB │ gzip: 2.42 kB +dist/assets/bicep-Bmn6On1c.js 5.38 kB │ gzip: 1.15 kB +dist/assets/xml-sdJ4AIDG.js 5.38 kB │ gzip: 1.21 kB +dist/assets/awk-DMzUqQB5.js 5.46 kB │ gzip: 1.38 kB +dist/assets/coq-DkFqJrB1.js 5.53 kB │ gzip: 1.92 kB +dist/assets/jinja-4LBKfQ-Z.js 5.69 kB │ gzip: 1.40 kB +dist/assets/lean-BZvkOJ9d.js 5.78 kB │ gzip: 1.92 kB +dist/assets/moonbit-_H4v1dQx.js 5.90 kB │ gzip: 1.68 kB +dist/assets/powerquery-CEu0bR-o.js 5.90 kB │ gzip: 1.52 kB +dist/assets/shaderlab-Dg9Lc6iA.js 5.92 kB │ gzip: 2.08 kB +dist/assets/verilog-BQ8w6xss.js 5.93 kB │ gzip: 1.89 kB +dist/assets/cypher-COkxafJQ.js 5.96 kB │ gzip: 1.73 kB +dist/assets/vb-D17OF-Vu.js 6.09 kB │ gzip: 2.34 kB +dist/assets/red-bN70gL4F.js 6.26 kB │ gzip: 1.60 kB +dist/assets/min-dark-CafNBF8u.js 6.29 kB │ gzip: 1.71 kB +dist/assets/structuredDiagram.client-B0g9-ub2.js 6.29 kB │ gzip: 2.65 kB +dist/assets/gdshader-DkwncUOv.js 6.33 kB │ gzip: 1.73 kB +dist/assets/prisma-Dd19v3D-.js 6.33 kB │ gzip: 1.39 kB +dist/assets/diagram-UB23O5K3-BDAA4Qa4.js 6.36 kB │ gzip: 2.74 kB +dist/assets/ara-BRHolxvo.js 6.36 kB │ gzip: 1.81 kB +dist/assets/clojure-P80f7IUj.js 6.41 kB │ gzip: 1.42 kB +dist/assets/postcss-CXtECtnM.js 6.42 kB │ gzip: 1.91 kB +dist/assets/toml-vGWfd6FD.js 6.43 kB │ gzip: 1.28 kB +dist/assets/solarized-light-L9t79GZl.js 6.48 kB │ gzip: 1.73 kB +dist/assets/pieDiagram-7S7Q4E2Y-D2nDqXR5.js 6.49 kB │ gzip: 2.71 kB +dist/assets/r-Dspwwk_N.js 6.54 kB │ gzip: 1.78 kB +dist/assets/proto-C7zT0LnQ.js 6.55 kB │ gzip: 1.42 kB +dist/assets/smalltalk-BERRCDM3.js 6.59 kB │ gzip: 1.62 kB +dist/assets/talonscript-CkByrt1z.js 6.76 kB │ gzip: 1.49 kB +dist/assets/solarized-dark-DXbdFlpD.js 6.85 kB │ gzip: 1.80 kB +dist/assets/riscv-BM1_JUlF.js 6.91 kB │ gzip: 1.98 kB +dist/assets/min-light-CTRr51gU.js 6.97 kB │ gzip: 1.89 kB +dist/assets/soy-Brmx7dQM.js 6.98 kB │ gzip: 1.66 kB +dist/assets/scheme-C98Dy4si.js 7.17 kB │ gzip: 2.05 kB +dist/assets/chunk-RYQCIY6F-DHj6Rhjc.js 7.18 kB │ gzip: 2.77 kB +dist/assets/hlsl-D3lLCCz7.js 7.26 kB │ gzip: 2.19 kB +dist/assets/qss-IeuSbFQv.js 7.47 kB │ gzip: 2.58 kB +dist/assets/dart-CF10PKvl.js 7.81 kB │ gzip: 1.91 kB +dist/assets/systemd-4A_iFExJ.js 7.87 kB │ gzip: 2.55 kB +dist/assets/monokai-D4h5O-jR.js 7.88 kB │ gzip: 1.91 kB +dist/assets/regexp-CDVJQ6XC.js 7.99 kB │ gzip: 1.42 kB +dist/assets/haml-B8DHNrY2.js 8.26 kB │ gzip: 1.81 kB +dist/assets/typst-DHCkPAjA.js 8.39 kB │ gzip: 1.67 kB +dist/assets/vue-html-AaS7Mt5G.js 8.47 kB │ gzip: 1.68 kB +dist/assets/plsql-ChMvpjG-.js 8.51 kB │ gzip: 3.00 kB +dist/assets/diagram-7IWD3JNH-CAKOL2-2.js 8.61 kB │ gzip: 3.83 kB +dist/assets/horizon-BUw7H-hv.js 8.78 kB │ gzip: 1.96 kB +dist/assets/kotlin-BdnUsdx6.js 8.79 kB │ gzip: 2.13 kB +dist/assets/horizon-bright-Cn-bp-IR.js 8.79 kB │ gzip: 1.97 kB +dist/assets/ts-tags-zn1MmPIZ.js 8.95 kB │ gzip: 1.22 kB +dist/assets/make-CHLpvVh8.js 8.96 kB │ gzip: 1.77 kB +dist/assets/andromeeda-C4gqWexZ.js 9.02 kB │ gzip: 2.36 kB +dist/assets/dagre-VZM6K2ZE-BzLK1F8E.js 9.03 kB │ gzip: 3.46 kB +dist/assets/sas-cz2c8ADy.js 9.06 kB │ gzip: 3.81 kB +dist/assets/dark-plus-C3mMm8J8.js 9.10 kB │ gzip: 2.10 kB +dist/assets/slack-dark-BthQWCQV.js 9.12 kB │ gzip: 1.97 kB +dist/assets/sass-Cj5Yp3dK.js 9.29 kB │ gzip: 2.49 kB +dist/assets/plastic-3e1v2bzS.js 9.30 kB │ gzip: 1.98 kB +dist/assets/slack-ochin-DqwNpetd.js 9.43 kB │ gzip: 2.10 kB +dist/assets/tex-idrVyKtj.js 9.67 kB │ gzip: 3.06 kB +dist/assets/jison-wvAkD_A8.js 9.69 kB │ gzip: 1.85 kB +dist/assets/cmake-D1j8_8rp.js 9.86 kB │ gzip: 3.37 kB +dist/assets/light-plus-B7mTdjB0.js 9.94 kB │ gzip: 2.27 kB +dist/assets/hcl-BWvSN4gD.js 10.05 kB │ gzip: 1.93 kB +dist/assets/cynefinDiagram-MW4NZA55-B4CGDE4X.js 10.23 kB │ gzip: 3.69 kB +dist/assets/pkl-u5AG7uiY.js 10.37 kB │ gzip: 1.38 kB +dist/assets/beancount-k_qm7-4y.js 10.37 kB │ gzip: 1.44 kB +dist/assets/nextflow-groovy-BeH2EWoN.js 10.41 kB │ gzip: 2.13 kB +dist/assets/dream-maker-BtqSS_iP.js 10.47 kB │ gzip: 2.25 kB +dist/assets/raku-DXvB9xmW.js 10.47 kB │ gzip: 2.94 kB +dist/assets/yaml-Buea-lGh.js 10.51 kB │ gzip: 2.27 kB +dist/assets/stateDiagram-OKZ733FA-bVrBohWF.js 10.56 kB │ gzip: 3.71 kB +dist/assets/rst-BrH8l1NY.js 10.67 kB │ gzip: 2.42 kB +dist/assets/diagram-B4RE2ZJO-C9gNRDk2.js 10.96 kB │ gzip: 4.23 kB +dist/assets/elm-DbKCFpqz.js 10.97 kB │ gzip: 2.12 kB +dist/assets/just-Cw27pwNe.js 11.16 kB │ gzip: 2.78 kB +dist/assets/github-light-DAi9KRSo.js 11.18 kB │ gzip: 2.51 kB +dist/assets/prolog-CbFg5uaA.js 11.36 kB │ gzip: 3.83 kB +dist/assets/terraform-BETggiCN.js 11.39 kB │ gzip: 2.51 kB +dist/assets/github-dark-DHJKELXO.js 11.41 kB │ gzip: 2.55 kB +dist/assets/puppet-BMWR74SV.js 11.44 kB │ gzip: 2.11 kB +dist/assets/diagram-Q27KOJAE-pPmldwAR.js 11.47 kB │ gzip: 4.07 kB +dist/assets/laserwave-DUszq2jm.js 11.50 kB │ gzip: 2.58 kB +dist/assets/convex-vendor-BdEFRSg5.js 11.69 kB │ gzip: 4.41 kB +dist/assets/gherkin-DyxjwDmM.js 11.95 kB │ gzip: 5.05 kB +dist/assets/wasm-MzD3tlZU.js 12.01 kB │ gzip: 2.19 kB +dist/assets/hjson-D5-asLiD.js 12.05 kB │ gzip: 1.64 kB +dist/assets/handlebars-BL8al0AC.js 12.15 kB │ gzip: 2.38 kB +dist/assets/deckPptxExport-a5Ky08C2.js 12.45 kB │ gzip: 3.39 kB +dist/assets/apache-Pmp26Uib.js 12.46 kB │ gzip: 3.72 kB +dist/assets/index-C8lfCLIG.js 12.52 kB │ gzip: 4.88 kB +dist/assets/vesper-DU1UobuO.js 12.69 kB │ gzip: 1.97 kB +dist/assets/bat-BkioyH1T.js 12.89 kB │ gzip: 3.22 kB +dist/assets/fish-BvzEVeQv.js 13.04 kB │ gzip: 1.74 kB +dist/assets/v-BcVCzyr7.js 13.21 kB │ gzip: 2.74 kB +dist/assets/vitesse-light-CVO1_9PV.js 13.62 kB │ gzip: 3.04 kB +dist/assets/aurora-x-D-2ljcwZ.js 13.66 kB │ gzip: 2.28 kB +dist/assets/vitesse-black-Bkuqu6BP.js 13.68 kB │ gzip: 3.06 kB +dist/assets/vitesse-dark-D0r3Knsf.js 13.76 kB │ gzip: 3.06 kB +dist/assets/pug-CGlum2m_.js 13.84 kB │ gzip: 2.58 kB +dist/assets/luau-C-HG3fhB.js 13.96 kB │ gzip: 3.18 kB +dist/assets/synthwave-84-CbfX1IO0.js 14.04 kB │ gzip: 2.87 kB +dist/assets/github-light-default-D7oLnXFd.js 14.16 kB │ gzip: 3.04 kB +dist/assets/clarity-D53aC0YG.js 14.28 kB │ gzip: 2.46 kB +dist/assets/github-light-high-contrast-BfjtVDDH.js 14.28 kB │ gzip: 3.02 kB +dist/assets/github-dark-dimmed-DH5Ifo-i.js 14.43 kB │ gzip: 3.13 kB +dist/assets/github-dark-default-Cuk6v7N8.js 14.44 kB │ gzip: 3.13 kB +dist/assets/github-dark-high-contrast-E3gJ1_iC.js 14.60 kB │ gzip: 3.09 kB +dist/assets/gnuplot-DdkO51Og.js 14.78 kB │ gzip: 3.27 kB +dist/assets/rust-B1yitclQ.js 15.07 kB │ gzip: 2.72 kB +dist/assets/kusto-DZf3V79B.js 15.17 kB │ gzip: 3.92 kB +dist/assets/time-CF6dPw0p.js 15.18 kB │ gzip: 4.95 kB +dist/assets/actionscript-3-CoDkCxhg.js 15.21 kB │ gzip: 2.66 kB +dist/assets/nix-CwoSXNpI.js 15.51 kB │ gzip: 2.48 kB +dist/assets/lua-BaeVxFsk.js 15.54 kB │ gzip: 3.16 kB +dist/assets/chunk-6Q2QTUOP-5djJkk30.js 15.76 kB │ gzip: 4.43 kB +dist/assets/abap-BdImnpbu.js 15.85 kB │ gzip: 5.91 kB +dist/assets/solidity-rGO070M0.js 16.07 kB │ gzip: 3.11 kB +dist/assets/matlab-D7o27uSR.js 16.09 kB │ gzip: 3.06 kB +dist/assets/cue-D82EKSYY.js 16.20 kB │ gzip: 2.06 kB +dist/assets/elixir-CDX3lj18.js 16.32 kB │ gzip: 2.80 kB +dist/assets/odin-BBf5iR-q.js 16.51 kB │ gzip: 2.94 kB +dist/assets/bird2-DPOp833l.js 16.97 kB │ gzip: 3.85 kB +dist/assets/kanagawa-wave-DWedfzmr.js 17.12 kB │ gzip: 2.93 kB +dist/assets/kanagawa-lotus-CfQXZHmo.js 17.13 kB │ gzip: 2.93 kB +dist/assets/kanagawa-dragon-CkXjmgJE.js 17.13 kB │ gzip: 2.95 kB +dist/assets/move-IF9eRakj.js 17.51 kB │ gzip: 3.07 kB +dist/assets/ishikawaDiagram-WSZJBQD7-C0te4SxD.js 17.70 kB │ gzip: 6.74 kB +dist/assets/graphql-ChdNCCLP.js 18.00 kB │ gzip: 2.52 kB +dist/assets/liquid-DYVedYrR.js 18.09 kB │ gzip: 3.16 kB +dist/assets/step-Cl5gnEYj.js 18.21 kB │ gzip: 3.84 kB +dist/assets/svelte-C_ipcX3V.js 18.24 kB │ gzip: 3.14 kB +dist/assets/material-theme-D5KoaKCx.js 18.62 kB │ gzip: 3.11 kB +dist/assets/material-theme-darker-BfHTSMKl.js 18.63 kB │ gzip: 3.11 kB +dist/assets/material-theme-ocean-CyktbL80.js 18.63 kB │ gzip: 3.14 kB +dist/assets/material-theme-lighter-B0m2ddpp.js 18.63 kB │ gzip: 3.11 kB +dist/assets/material-theme-palenight-Csfq5Kiy.js 18.64 kB │ gzip: 3.13 kB +dist/assets/gdscript-C5YyOfLZ.js 18.99 kB │ gzip: 3.75 kB +dist/assets/groovy-gcz8RCvz.js 19.18 kB │ gzip: 3.60 kB +dist/assets/mdc-BMNejdWA.js 19.63 kB │ gzip: 6.66 kB +dist/assets/glimmer-js-Rg0-pVw9.js 20.07 kB │ gzip: 2.95 kB +dist/assets/glimmer-ts-U6CK756n.js 20.07 kB │ gzip: 2.94 kB +dist/assets/ayu-dark-DYE7WIF3.js 20.08 kB │ gzip: 3.94 kB +dist/assets/ayu-mirage-32ctXXKs.js 20.09 kB │ gzip: 3.94 kB +dist/assets/powershell-Dpen1YoG.js 20.15 kB │ gzip: 4.07 kB +dist/assets/ayu-light-BA47KaF1.js 20.15 kB │ gzip: 3.93 kB +dist/assets/index-ERxDhA9M.js 20.25 kB │ gzip: 7.30 kB +dist/assets/viml-CJc9bBzg.js 20.37 kB │ gzip: 6.73 kB +dist/assets/nushell-Cz2AlsmD.js 20.41 kB │ gzip: 5.22 kB +dist/assets/snazzy-light-Bw305WKR.js 20.77 kB │ gzip: 3.83 kB +dist/assets/kanban-definition-27J2QSJJ-DPx5LV-t.js 20.83 kB │ gzip: 7.35 kB +dist/assets/dracula-BzJJZx-M.js 21.07 kB │ gzip: 4.00 kB +dist/assets/dracula-soft-BXkSAIEj.js 21.08 kB │ gzip: 4.04 kB +dist/assets/PublicRoomPage-BDsqHQCE.js 21.08 kB │ gzip: 6.51 kB +dist/assets/twig-DNn4PbVi.js 21.36 kB │ gzip: 3.87 kB +dist/assets/wit-5i3qLPDT.js 21.47 kB │ gzip: 2.89 kB +dist/assets/rose-pine-qdsjHGoJ.js 21.74 kB │ gzip: 3.87 kB +dist/assets/rose-pine-moon-D4_iv3hh.js 21.75 kB │ gzip: 3.89 kB +dist/assets/rose-pine-dawn-DHQR4-dF.js 21.75 kB │ gzip: 3.89 kB +dist/assets/InvestigationReport-CVViZO-z.js 21.90 kB │ gzip: 6.02 kB +dist/assets/nim-CVrawwO9.js 22.46 kB │ gzip: 3.16 kB +dist/assets/common-lisp-Cg-RD9OK.js 22.58 kB │ gzip: 6.06 kB +dist/assets/surrealql-Bq5Q-fJD.js 22.58 kB │ gzip: 4.32 kB +dist/assets/gruvbox-dark-hard-CFHQjOhq.js 22.63 kB │ gzip: 4.18 kB +dist/assets/gruvbox-dark-soft-CVdnzihN.js 22.63 kB │ gzip: 4.17 kB +dist/assets/gruvbox-light-hard-CH1njM8p.js 22.64 kB │ gzip: 4.18 kB +dist/assets/gruvbox-light-soft-hJgmCMqR.js 22.64 kB │ gzip: 4.18 kB +dist/assets/gruvbox-dark-medium-GsRaNv29.js 22.64 kB │ gzip: 4.18 kB +dist/assets/gruvbox-light-medium-DRw_LuNl.js 22.64 kB │ gzip: 4.18 kB +dist/assets/sql-BLtJtn59.js 23.41 kB │ gzip: 7.40 kB +dist/assets/sankeyDiagram-W5VNT64P-JHlZfT_q.js 23.47 kB │ gzip: 8.61 kB +dist/assets/cadence-Bv_4Rxtq.js 23.67 kB │ gzip: 3.67 kB +dist/assets/journeyDiagram-NVQOT4AX-Bbi8ZyJ-.js 23.71 kB │ gzip: 8.41 kB +dist/assets/mindmap-definition-FAOFIHXS-DuIJCnRM.js 23.77 kB │ gzip: 8.06 kB +dist/assets/graph-C9eacEi8.js 23.95 kB │ gzip: 8.32 kB +dist/assets/astro-CbQHKStN.js 24.01 kB │ gzip: 7.54 kB +dist/assets/typespec-BGHnOYBU.js 24.02 kB │ gzip: 2.59 kB +dist/assets/apl-dKokRX4l.js 24.04 kB │ gzip: 4.20 kB +dist/assets/templ-P3uqSqPl.js 24.06 kB │ gzip: 5.40 kB +dist/assets/vhdl-CeAyd5Ju.js 24.26 kB │ gzip: 3.87 kB +dist/assets/angular-html-CU67Zn6k.js 24.29 kB │ gzip: 4.01 kB +dist/assets/vue-DN_0RTcg.js 24.48 kB │ gzip: 2.97 kB +dist/assets/purescript-CklMAg4u.js 24.69 kB │ gzip: 3.25 kB +dist/assets/one-light-C3Wv6jpd.js 25.30 kB │ gzip: 3.67 kB +dist/assets/fsharp-CXgrBDvD.js 25.31 kB │ gzip: 4.13 kB +dist/assets/marko-CnJfTvn9.js 25.48 kB │ gzip: 3.59 kB +dist/assets/c3-eo99z4R2.js 25.63 kB │ gzip: 3.87 kB +dist/assets/night-owl-light-CMTm3GFP.js 25.90 kB │ gzip: 4.26 kB +dist/assets/system-verilog-CnnmHF94.js 26.20 kB │ gzip: 4.85 kB +dist/assets/wardleyDiagram-T6FBY63Y-B2C55azQ.js 26.23 kB │ gzip: 7.00 kB +dist/assets/drawio.client-BONxGk44.js 26.40 kB │ gzip: 9.73 kB +dist/assets/nord-Ddv68eIx.js 26.72 kB │ gzip: 4.40 kB +dist/assets/codeql-DsOJ9woJ.js 26.88 kB │ gzip: 3.79 kB +dist/assets/scss-OYdSNvt2.js 27.20 kB │ gzip: 4.20 kB +dist/assets/java-CylS5w8V.js 27.22 kB │ gzip: 4.26 kB +dist/assets/erDiagram-JOGREHBK-CxpZ6DXV.js 27.35 kB │ gzip: 9.51 kB +dist/assets/coffee-Ch7k5sss.js 27.42 kB │ gzip: 6.35 kB +dist/assets/razor-Uh8Bk_45.js 27.51 kB │ gzip: 3.57 kB +dist/assets/scala-C151Ov-r.js 28.88 kB │ gzip: 3.94 kB +dist/assets/night-owl-C39BiMTA.js 28.91 kB │ gzip: 5.16 kB +dist/assets/crystal-tKQVLTB8.js 29.39 kB │ gzip: 4.44 kB +dist/assets/mermaid-mWjccvbQ.js 29.51 kB │ gzip: 3.66 kB +dist/assets/applescript-Co6uUVPk.js 29.57 kB │ gzip: 5.93 kB +dist/assets/gitGraphDiagram-DS77QQ5N-D_7OsUMk.js 30.07 kB │ gzip: 8.93 kB +dist/assets/semanticGraph-CTg4iCsn.js 30.51 kB │ gzip: 8.95 kB +dist/assets/layout-DEXfKzaS.js 31.00 kB │ gzip: 11.19 kB +dist/assets/julia-CxzCAyBv.js 31.07 kB │ gzip: 4.33 kB +dist/assets/stylus-BEDo0Tqx.js 31.07 kB │ gzip: 7.99 kB +dist/assets/requirementDiagram-LRYGKXZP-BDrHn9Y_.js 31.34 kB │ gzip: 9.88 kB +dist/assets/timeline-definition-Z64GVDOM-j-jnW84O.js 31.48 kB │ gzip: 10.49 kB +dist/assets/poimandres-CS3Unz2-.js 33.49 kB │ gzip: 5.50 kB +dist/assets/one-dark-pro-DVMEJ2y_.js 33.79 kB │ gzip: 5.52 kB +dist/assets/bsl-BO_Y6i37.js 33.87 kB │ gzip: 8.35 kB +dist/assets/quadrantDiagram-CIZ2JOQS-DfPb08xl.js 34.63 kB │ gzip: 10.19 kB +dist/assets/haxe-CzTSHFRz.js 35.16 kB │ gzip: 5.91 kB +dist/assets/nginx-BpAMiNFr.js 35.37 kB │ gzip: 4.43 kB +dist/assets/houston-DnULxvSX.js 35.42 kB │ gzip: 5.78 kB +dist/assets/tokyo-night-hegEt444.js 35.67 kB │ gzip: 6.24 kB +dist/assets/erlang-DsQrWhSR.js 37.48 kB │ gzip: 4.40 kB +dist/assets/chunk-5RXB4S5H-CtgLOMKP.js 38.66 kB │ gzip: 12.70 kB +dist/assets/RoomTour-B3ofJfEV.js 39.04 kB │ gzip: 12.84 kB +dist/assets/cobol-nwyudZeR.js 39.15 kB │ gzip: 10.87 kB +dist/assets/asm-D_Q5rh1f.js 40.72 kB │ gzip: 8.21 kB +dist/assets/shellscript-Yzrsuije.js 41.48 kB │ gzip: 6.09 kB +dist/assets/haskell-Df6bDoY_.js 41.49 kB │ gzip: 6.44 kB +dist/assets/xychartDiagram-ELKLHX3M-M1tv-9pj.js 41.96 kB │ gzip: 12.03 kB +dist/assets/vennDiagram-T6HMQDX7-eYVh29gT.js 42.51 kB │ gzip: 15.86 kB +dist/assets/perl-C0TMdlhV.js 43.16 kB │ gzip: 4.67 kB +dist/assets/d-85-TOEBH.js 43.80 kB │ gzip: 8.47 kB +dist/assets/ruby-Dw2BHqvy.js 45.95 kB │ gzip: 5.68 kB +dist/assets/go-CxLEBnE3.js 46.81 kB │ gzip: 5.18 kB +dist/assets/icons-vendor-VKpO2iRi.js 46.82 kB │ gzip: 8.96 kB +dist/assets/apex-D8_7TLub.js 46.99 kB │ gzip: 6.77 kB +dist/assets/catppuccin-mocha-D87Tk5Gz.js 47.26 kB │ gzip: 8.00 kB +dist/assets/catppuccin-latte-C9dUb6Cb.js 47.26 kB │ gzip: 8.00 kB +dist/assets/catppuccin-frappe-DFWUc33u.js 47.26 kB │ gzip: 8.02 kB +dist/assets/catppuccin-macchiato-DQyhUUbL.js 47.26 kB │ gzip: 8.01 kB +dist/assets/ada-bCR0ucgS.js 48.08 kB │ gzip: 6.03 kB +dist/assets/css-DPfMkruS.js 49.02 kB │ gzip: 11.85 kB +dist/assets/chunk-GF5L2VYU-BfL3ARJ4.js 49.34 kB │ gzip: 15.80 kB +dist/assets/imba-DGztddWO.js 49.93 kB │ gzip: 9.46 kB +dist/assets/ganttDiagram-PKOTCBZU-BfXa0swZ.js 52.68 kB │ gzip: 18.10 kB +dist/assets/types-BSuKp-ii.js 53.42 kB │ gzip: 12.20 kB +dist/assets/everforest-dark-BgDCqdQA.js 53.75 kB │ gzip: 8.42 kB +dist/assets/everforest-light-C8M2exoo.js 53.75 kB │ gzip: 8.42 kB +dist/assets/wikitext-BhOHFoWU.js 55.89 kB │ gzip: 4.76 kB +dist/assets/stata-BH5u7GGu.js 56.99 kB │ gzip: 12.36 kB +dist/assets/html-GMplVEZG.js 57.25 kB │ gzip: 11.69 kB +dist/assets/ballerina-BFfxhgS-.js 58.69 kB │ gzip: 8.15 kB +dist/assets/markdown-Cvjx9yec.js 59.34 kB │ gzip: 5.64 kB +dist/assets/flowDiagram-UKHOOZJN-_iGssQdz.js 61.44 kB │ gzip: 19.69 kB +dist/assets/TraceSurface-B4eSbBGT.js 61.93 kB │ gzip: 19.44 kB +dist/assets/ocaml-C0hk2d4L.js 62.45 kB │ gzip: 5.02 kB +dist/assets/mojo-rZm6bMo-.js 69.80 kB │ gzip: 9.27 kB +dist/assets/python-B6aJPvgy.js 69.95 kB │ gzip: 9.13 kB +dist/assets/c4Diagram-5PPSVZJV-BTfR_pxU.js 70.11 kB │ gzip: 19.71 kB +dist/assets/c-BIGW1oBm.js 72.11 kB │ gzip: 10.51 kB +dist/assets/latex-CWtU0Tv5.js 72.64 kB │ gzip: 6.72 kB +dist/assets/vyper-CDx5xZoG.js 74.65 kB │ gzip: 10.74 kB +dist/assets/blockDiagram-VBNYF7ZC-eja4tJ6o.js 75.27 kB │ gzip: 21.66 kB +dist/assets/hack-CaT9iCJl.js 80.24 kB │ gzip: 26.21 kB +dist/assets/cose-bilkent-JH36ORCC-UO66jrWZ.js 81.85 kB │ gzip: 22.54 kB +dist/assets/swift-D82vCrfD.js 86.69 kB │ gzip: 14.73 kB +dist/assets/fortran-free-form-BxgE0vQu.js 88.97 kB │ gzip: 11.27 kB +dist/assets/csharp-COcwbKMJ.js 89.69 kB │ gzip: 10.69 kB +dist/assets/racket-BqYA7rlc.js 92.39 kB │ gzip: 15.02 kB +dist/assets/less-B1dDrJ26.js 97.63 kB │ gzip: 14.70 kB +dist/assets/blade-D4QpJJKB.js 104.98 kB │ gzip: 28.20 kB +dist/assets/objective-c-DXmwc3jG.js 105.41 kB │ gzip: 23.33 kB +dist/assets/php-Dhbhpdrm.js 111.06 kB │ gzip: 28.52 kB +dist/assets/KnowledgeGraph-BMpmhnG4.js 117.25 kB │ gzip: 33.16 kB +dist/assets/sequenceDiagram-SI44F4Z6-DqDSr4iW.js 117.58 kB │ gzip: 31.33 kB +dist/assets/swimlanes-SLNWSIFB-CN6RrN7D.js 120.52 kB │ gzip: 44.07 kB +dist/assets/asciidoc-Ve4PFQV2.js 131.53 kB │ gzip: 9.34 kB +dist/assets/react-BV3Zsf62.js 132.12 kB │ gzip: 37.65 kB +dist/assets/mdx-Cmh6b_Ma.js 136.11 kB │ gzip: 23.35 kB +dist/assets/WorkArtifactsPanel-lLaxoygU.js 149.99 kB │ gzip: 43.94 kB +dist/assets/architectureDiagram-T3A2C74G-SzFEW10u.js 152.16 kB │ gzip: 43.29 kB +dist/assets/objective-cpp-CLxacb5B.js 171.97 kB │ gzip: 30.62 kB +dist/assets/javascript-wDzz0qaB.js 174.83 kB │ gzip: 16.51 kB +dist/assets/tsx-COt5Ahok.js 175.54 kB │ gzip: 16.51 kB +dist/assets/jsx-g9-lgVsj.js 177.79 kB │ gzip: 16.61 kB +dist/assets/typescript-BPQ3VLAy.js 181.08 kB │ gzip: 16.04 kB +dist/assets/angular-ts-BwZT4LLn.js 183.82 kB │ gzip: 16.63 kB +dist/assets/graph-vendor-Dz3KpPvp.js 186.11 kB │ gzip: 60.95 kB +dist/assets/vue-vine-CQOfvN7w.js 190.05 kB │ gzip: 17.98 kB +dist/assets/index-DRjmektm.js 192.90 kB │ gzip: 62.51 kB +dist/assets/react-vendor-Ba019tNT.js 194.40 kB │ gzip: 60.78 kB +dist/assets/MobileRoot-OMt04TWZ.js 239.46 kB │ gzip: 67.59 kB +dist/assets/katex-C5jXJg4s.js 261.33 kB │ gzip: 77.57 kB +dist/assets/wolfram-lXgVvXCa.js 262.39 kB │ gzip: 77.14 kB +dist/assets/index-TeonLBog.js 279.30 kB │ gzip: 90.23 kB +dist/assets/editor-vendor-CE6Sek4k.js 400.39 kB │ gzip: 127.48 kB +dist/assets/cytoscape.esm-DTSO7Bv0.js 443.72 kB │ gzip: 142.36 kB +dist/assets/vega.module-CiZgPkdT.js 448.42 kB │ gzip: 162.47 kB +dist/assets/pdf-vendor-BRfqYs8T.js 462.90 kB │ gzip: 136.83 kB +dist/assets/mermaid.core-iu1cm3e6.js 580.71 kB │ gzip: 136.54 kB +dist/assets/wasm-CG6Dc4jp.js 622.34 kB │ gzip: 230.29 kB +dist/assets/cpp-CofmeUqb.js 626.08 kB │ gzip: 44.82 kB +dist/assets/cynefin-VYW2F7L2-CwX1EbjP.js 690.83 kB │ gzip: 155.11 kB +dist/assets/emacs-lisp-C9XAeP06.js 779.85 kB │ gzip: 196.03 kB +dist/assets/workbook-vendor-CUPSAa_W.js 1,037.65 kB │ gzip: 300.38 kB +dist/assets/mermaid-GHXKKRXX-CeF2pCk7.js 1,911.90 kB │ gzip: 586.47 kB + +(!) Some chunks are larger than 1100 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 22.53s +{"status":"pass","entries":["index.html"],"expectedSha":"034a8f963dfa037d860f5364032319506be3e2e0"} diff --git a/evidence/desktop-account-20260905/operator/account-final-fixture-knockout.command.json b/evidence/desktop-account-20260905/operator/account-final-fixture-knockout.command.json new file mode 100644 index 00000000..0b4c9617 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-final-fixture-knockout.command.json @@ -0,0 +1,18 @@ +{ + "startedAt": "2026-09-05T16:45:35.596568+00:00", + "finishedAt": "2026-09-05T16:45:40.046441+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 1, + "elapsedSeconds": 4.453, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-final-fixture-knockout.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" +} diff --git a/evidence/desktop-account-20260905/operator/account-final-fixture-knockout.log b/evidence/desktop-account-20260905/operator/account-final-fixture-knockout.log new file mode 100644 index 00000000..667141c7 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-final-fixture-knockout.log @@ -0,0 +1,49 @@ + +> noderoom@0.1.1 test +> vitest run --run tests/artifactXlsxExport.test.ts + + + RUN v4.1.10 D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905 + + ❯ |node| tests/artifactXlsxExport.test.ts (6 tests | 2 failed) 239ms + × keeps Account labels through repeated reviewer exports of the current sheet 123ms + × keeps Account labels through repeated reviewer exports of the sibling sheet 73ms + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 2 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL |node| tests/artifactXlsxExport.test.ts > NodeRoom XLSX cell export > keeps Account labels through repeated reviewer exports of the current sheet + FAIL |node| tests/artifactXlsxExport.test.ts > NodeRoom XLSX cell export > keeps Account labels through repeated reviewer exports of the sibling sheet +AssertionError: expected [ null, null, null, null, null ] to deeply equal [ 'Revenue', 'COGS', …(3) ] + +- Expected ++ Received + + [ +- "Revenue", +- "COGS", +- "Gross profit", +- "OpEx", +- "Net income", ++ null, ++ null, ++ null, ++ null, ++ null, + ] + + ❯ tests/artifactXlsxExport.test.ts:172:79 + 170| await reopened.xlsx.load(exportFixture.bytes[revision - 1]); + 171| const sheet = reopened.getWorksheet("Q3 variance")!; + 172| expect(SHEET_ROWS.map((_, index) => sheet.getCell(index + 2, 1).… + | ^ + 173| expect(sheet.getCell("B2").value).toBe(SHEET_ROWS[0].q2); + 174| expect(sheet.getCell("C2").value).toBe(SHEET_ROWS[0].q3); + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/2]⎯ + + + Test Files 1 failed (1) + Tests 2 failed | 4 passed (6) + Start at 09:45:36 + Duration 3.52s (transform 645ms, setup 162ms, import 2.43s, tests 239ms, environment 548ms) + diff --git a/evidence/desktop-account-20260905/operator/account-final-scenarios.command.json b/evidence/desktop-account-20260905/operator/account-final-scenarios.command.json new file mode 100644 index 00000000..e02b9c30 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-final-scenarios.command.json @@ -0,0 +1,20 @@ +{ + "startedAt": "2026-09-05T16:50:38.493021+00:00", + "finishedAt": "2026-09-05T16:50:42.864967+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts", + "tests/mobileSampleWorkbookExport.test.ts", + "tests/mobileSheetDialog.test.tsx" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 4.36, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-final-scenarios.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" +} diff --git a/evidence/desktop-account-20260905/operator/account-final-scenarios.log b/evidence/desktop-account-20260905/operator/account-final-scenarios.log new file mode 100644 index 00000000..7427b37d --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-final-scenarios.log @@ -0,0 +1,13 @@ + +> noderoom@0.1.1 test +> vitest run --run tests/artifactXlsxExport.test.ts tests/mobileSampleWorkbookExport.test.ts tests/mobileSheetDialog.test.tsx + + + RUN v4.1.10 D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905 + + + Test Files 3 passed (3) + Tests 10 passed (10) + Start at 09:50:39 + Duration 3.47s (transform 855ms, setup 353ms, import 3.95s, tests 877ms, environment 1.12s) + diff --git a/evidence/desktop-account-20260905/operator/account-matched-after.command.json b/evidence/desktop-account-20260905/operator/account-matched-after.command.json new file mode 100644 index 00000000..17023ad8 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-matched-after.command.json @@ -0,0 +1,15 @@ +{ + "startedAt": "2026-09-05T16:48:03.345579+00:00", + "finishedAt": "2026-09-05T16:48:10.759509+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "C:/Users/hshum/.codex/worktrees/5dba/nodebench-ai/docs/plans/portfolio-recovery-20260904/E6f-noderoom-desktop-account-repair-01/observe-after.mjs" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 7.422, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-matched-after.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" +} diff --git a/evidence/desktop-account-20260905/operator/account-matched-after.log b/evidence/desktop-account-20260905/operator/account-matched-after.log new file mode 100644 index 00000000..92847cb4 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-matched-after.log @@ -0,0 +1 @@ +{"status":"OBSERVED","cells":1,"output":"C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\after"} diff --git a/evidence/desktop-account-20260905/operator/account-scenarios-after-02.command.json b/evidence/desktop-account-20260905/operator/account-scenarios-after-02.command.json new file mode 100644 index 00000000..f71c1b46 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-scenarios-after-02.command.json @@ -0,0 +1,19 @@ +{ + "startedAt": "2026-09-05T16:36:08.191716+00:00", + "finishedAt": "2026-09-05T16:36:12.464936+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts", + "tests/mobileSampleWorkbookExport.test.ts" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 1, + "elapsedSeconds": 4.281, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-scenarios-after-02.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" +} diff --git a/evidence/desktop-account-20260905/operator/account-scenarios-after-02.log b/evidence/desktop-account-20260905/operator/account-scenarios-after-02.log new file mode 100644 index 00000000..09e24307 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-scenarios-after-02.log @@ -0,0 +1,37 @@ + +> noderoom@0.1.1 test +> vitest run --run tests/artifactXlsxExport.test.ts tests/mobileSampleWorkbookExport.test.ts + + + RUN v4.1.10 D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905 + + ❯ |node| tests/artifactXlsxExport.test.ts (6 tests | 1 failed) 408ms + × keeps Account labels through repeated reviewer exports of the sibling sheet 60ms + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL |node| tests/artifactXlsxExport.test.ts > NodeRoom XLSX cell export > keeps Account labels through repeated reviewer exports of the sibling sheet +AssertionError: expected null to be 'Review workbook' // Object.is equality + +- Expected: +"Review workbook" + ++ Received: +null + + ❯ tests/artifactXlsxExport.test.ts:177:71 + 175| expect(sheet.getCell("E2").value).toBe(note); + 176| if (surface === "sibling sheet") { + 177| expect(reopened.getWorksheet("Summary")!.getCell("A1").value).… + | ^ + 178| expect(reopened.getWorksheet("Summary")!.getCell("B1").formula… + 179| expect(reopened.getWorksheet("Summary")!.getCell("B1").result)… + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + + Test Files 1 failed | 1 passed (2) + Tests 1 failed | 8 passed (9) + Start at 09:36:09 + Duration 3.36s (transform 541ms, setup 171ms, import 2.48s, tests 569ms, environment 569ms) + diff --git a/evidence/desktop-account-20260905/operator/account-scenarios-after-03.command.json b/evidence/desktop-account-20260905/operator/account-scenarios-after-03.command.json new file mode 100644 index 00000000..94f3b659 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-scenarios-after-03.command.json @@ -0,0 +1,19 @@ +{ + "startedAt": "2026-09-05T16:37:48.875680+00:00", + "finishedAt": "2026-09-05T16:37:53.229245+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts", + "tests/mobileSampleWorkbookExport.test.ts" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 4.36, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-scenarios-after-03.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" +} diff --git a/evidence/desktop-account-20260905/operator/account-scenarios-after-03.log b/evidence/desktop-account-20260905/operator/account-scenarios-after-03.log new file mode 100644 index 00000000..7824ca6e --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-scenarios-after-03.log @@ -0,0 +1,13 @@ + +> noderoom@0.1.1 test +> vitest run --run tests/artifactXlsxExport.test.ts tests/mobileSampleWorkbookExport.test.ts + + + RUN v4.1.10 D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905 + + + Test Files 2 passed (2) + Tests 9 passed (9) + Start at 09:37:49 + Duration 3.45s (transform 561ms, setup 177ms, import 2.41s, tests 737ms, environment 576ms) + diff --git a/evidence/desktop-account-20260905/operator/account-scenarios-after.command.json b/evidence/desktop-account-20260905/operator/account-scenarios-after.command.json new file mode 100644 index 00000000..5fa65cb7 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-scenarios-after.command.json @@ -0,0 +1,19 @@ +{ + "startedAt": "2026-09-05T16:35:06.877891+00:00", + "finishedAt": "2026-09-05T16:35:11.192289+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts", + "tests/mobileSampleWorkbookExport.test.ts" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 1, + "elapsedSeconds": 4.313, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-scenarios-after.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" +} diff --git a/evidence/desktop-account-20260905/operator/account-scenarios-after.log b/evidence/desktop-account-20260905/operator/account-scenarios-after.log new file mode 100644 index 00000000..4f3bdd5e --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-scenarios-after.log @@ -0,0 +1,37 @@ + +> noderoom@0.1.1 test +> vitest run --run tests/artifactXlsxExport.test.ts tests/mobileSampleWorkbookExport.test.ts + + + RUN v4.1.10 D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905 + + ❯ |node| tests/artifactXlsxExport.test.ts (6 tests | 1 failed) 398ms + × keeps Account labels through repeated reviewer exports of the sibling sheet 63ms + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL |node| tests/artifactXlsxExport.test.ts > NodeRoom XLSX cell export > keeps Account labels through repeated reviewer exports of the sibling sheet +AssertionError: expected null to be 'Review workbook' // Object.is equality + +- Expected: +"Review workbook" + ++ Received: +null + + ❯ tests/artifactXlsxExport.test.ts:177:71 + 175| expect(sheet.getCell("E2").value).toBe(note); + 176| if (surface === "sibling sheet") { + 177| expect(reopened.getWorksheet("Summary")!.getCell("A1").value).… + | ^ + 178| expect(reopened.getWorksheet("Summary")!.getCell("B1").formula… + 179| expect(reopened.getWorksheet("Summary")!.getCell("B1").result)… + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + + Test Files 1 failed | 1 passed (2) + Tests 1 failed | 8 passed (9) + Start at 09:35:07 + Duration 3.40s (transform 550ms, setup 171ms, import 2.58s, tests 557ms, environment 549ms) + diff --git a/evidence/desktop-account-20260905/operator/account-scenarios-before-02.command.json b/evidence/desktop-account-20260905/operator/account-scenarios-before-02.command.json new file mode 100644 index 00000000..f8863c4d --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-scenarios-before-02.command.json @@ -0,0 +1,18 @@ +{ + "startedAt": "2026-09-05T16:34:42.752230+00:00", + "finishedAt": "2026-09-05T16:34:46.920539+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 1, + "elapsedSeconds": 4.172, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-scenarios-before-02.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" +} diff --git a/evidence/desktop-account-20260905/operator/account-scenarios-before-02.log b/evidence/desktop-account-20260905/operator/account-scenarios-before-02.log new file mode 100644 index 00000000..142945ee --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-scenarios-before-02.log @@ -0,0 +1,49 @@ + +> noderoom@0.1.1 test +> vitest run --run tests/artifactXlsxExport.test.ts + + + RUN v4.1.10 D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905 + + ❯ |node| tests/artifactXlsxExport.test.ts (6 tests | 2 failed) 226ms + × keeps Account labels through repeated reviewer exports of the current sheet 124ms + × keeps Account labels through repeated reviewer exports of the sibling sheet 56ms + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 2 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL |node| tests/artifactXlsxExport.test.ts > NodeRoom XLSX cell export > keeps Account labels through repeated reviewer exports of the current sheet + FAIL |node| tests/artifactXlsxExport.test.ts > NodeRoom XLSX cell export > keeps Account labels through repeated reviewer exports of the sibling sheet +AssertionError: expected [ null, null, null, null, null ] to deeply equal [ 'Revenue', 'COGS', …(3) ] + +- Expected ++ Received + + [ +- "Revenue", +- "COGS", +- "Gross profit", +- "OpEx", +- "Net income", ++ null, ++ null, ++ null, ++ null, ++ null, + ] + + ❯ tests/artifactXlsxExport.test.ts:169:79 + 167| await reopened.xlsx.load(exportFixture.bytes[revision - 1]); + 168| const sheet = reopened.getWorksheet("Q3 variance")!; + 169| expect(SHEET_ROWS.map((_, index) => sheet.getCell(index + 2, 1).… + | ^ + 170| expect(sheet.getCell("B2").value).toBe(SHEET_ROWS[0].q2); + 171| expect(sheet.getCell("C2").value).toBe(SHEET_ROWS[0].q3); + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/2]⎯ + + + Test Files 1 failed (1) + Tests 2 failed | 4 passed (6) + Start at 09:34:43 + Duration 3.28s (transform 506ms, setup 164ms, import 2.20s, tests 226ms, environment 549ms) + diff --git a/evidence/desktop-account-20260905/operator/account-scenarios-before.command.json b/evidence/desktop-account-20260905/operator/account-scenarios-before.command.json new file mode 100644 index 00000000..b2943b88 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-scenarios-before.command.json @@ -0,0 +1,18 @@ +{ + "startedAt": "2026-09-05T16:32:27.818950+00:00", + "finishedAt": "2026-09-05T16:33:15.159735+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 1, + "elapsedSeconds": 47.344, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-scenarios-before.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" +} diff --git a/evidence/desktop-account-20260905/operator/account-scenarios-before.log b/evidence/desktop-account-20260905/operator/account-scenarios-before.log new file mode 100644 index 00000000..d8e77fef --- /dev/null +++ b/evidence/desktop-account-20260905/operator/account-scenarios-before.log @@ -0,0 +1,75 @@ + +> noderoom@0.1.1 test +> vitest run --run tests/artifactXlsxExport.test.ts + + + RUN v4.1.10 D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905 + + ❯ |node| tests/artifactXlsxExport.test.ts (6 tests | 2 failed) 167ms + × keeps Account labels through repeated reviewer exports of the current sheet 42ms + × keeps Account labels through repeated reviewer exports of the sibling sheet 75ms + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 2 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL |node| tests/artifactXlsxExport.test.ts > NodeRoom XLSX cell export > keeps Account labels through repeated reviewer exports of the current sheet +TypeError: store.canUndo is not a function + ❯ Sheet src/ui/panels/Artifact.tsx:2710:57 + 2708| + 2709|
+ 2710|
Room Binder9 items9
Room sheets
3 sheets
3
Boards
1 item
1
Knowledge
1 item
1
Notes & memos
4 items
4
Review queue
no pending proposals
Permissions
host controls - 35 trace events
People & agents · 3 live
H
Homen
Host
P
Priya
Finance lead
GQ
guest · quokka
Member
+3
Downloaded Q3_variance.xlsx · 5 rows · 1 sheet · 6,685 bytes · 9:48 AM
Q3 varianceversionedSyncv6
AccountQ2Q3VarianceNote
{i + 1}{cellVal(art, rid, \"label\")}{cellVal(art, rid, \"q2\")}{cellVal(art, rid, \"q3\")}
AccountQ2Q3VarianceNote
1Revenue$10,000$12,400
2COGS$4,000$5,100
3Gross profit$6,000$7,300
4OpEx$2,200$2,650
5Net income$3,800$4,650
click a Variance or Note cell to edit by hand
Room chat Everyone9NRoom NodeAgent
H
Homen9:39

Can the room reconcile Q3 variance against the NetSuite close before the board read?

H
Homen9:39
@nodeagent reconcile Q3 revenue and COGS variance
N
Room NodeAgentagent9:40
v1 -> v1Complete lock releasedCardioNovaPrimary source: CardioNova: product, buyer, and diligence context captured from the company site.
P
Priya9:42

The +27.5% on COGS is volume, not price - noting it on the row so it survives the sync.

GQ
guest · quokka9:43

anon - quokka joined as guest · view + chat

N
Room NodeAgentagent9:45
v1 -> v1Complete lock releasedCardioNovaPrimary source: CardioNova: product, buyer, and diligence context captured from the company site.
H
Homen9:47

Good. Draft the reconciliation memo and clip the variance exhibit for the board read.

H
Homen9:48
@nodeagent recompute the Q3 variance column
N
Room NodeAgentagent9:48

Committed r_rev +24%, r_cogs +27.5%, r_gp +21.7%, r_ni +22.4%. Lock released.

IntakeEvidenceDraftReviewExport
Room NodeAgent ·Room NodeAgent · edit_applied
+ + + \ No newline at end of file diff --git a/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-downloaded.json b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-downloaded.json new file mode 100644 index 00000000..47edc2e3 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-downloaded.json @@ -0,0 +1,701 @@ +{ + "url": "http://127.0.0.1:54522/?mode=memory&surface=desktop", + "title": "NodeRoom - live collaborative AI rooms with NodeAgents", + "body": "N\nNodeRoom · Q3 diligence\nSFT-RFT\nH\nP\nGQ\n◆\n5 live\nRoom Binder\n9\nPINNED\n2\nQ3 variance\nAgent wiki\nRECENT\n6\nCapture Notebook\nAgent wiki\nToday's Brief\nDiligence memo\nOpen questions / workplan\nRisk / opportunity wall\nSHEETS\n3\nRoom sheets\n3\nCompany research\nQ3 variance\nRunway / milestones\nDOCS\n6\nBoards\n1\nRisk / opportunity wall\nKnowledge\n1\nAgent wiki\nNotes & memos\n4\nCapture Notebook\nDiligence memo\nOpen questions / workplan\nToday's Brief\nUpload file\nREVIEW & PROOF\n2\nReview queue\nPermissions\nPEOPLE & AGENTS\n4 LIVE\nH\nHomen\nHost\nP\nPriya\nFinance lead\nGQ\nguest · quokka\nMember\n◆\nRoom NodeAgent\nPublic agent · done · rc_neuronova__status:rc_nimbusnova__status\nHome\nQ3 variance\nCompany research\n+3\nArtifacts\nNodeBook\nInvestigation\nRun trace\nExport XLSX\nDownloaded Q3_variance.xlsx · 5 rows · 1 sheet · 6,685 bytes · 9:48 AM\nShared\nQ3 variance\nversionedSync\nv6\n\tACCOUNT\tQ2\tQ3\tVARIANCE\tNOTE\n1\tRevenue\t$10,000\t$12,400\t\n+24%\n\t\nReviewer note: baseline input\n\n2\tCOGS\t$4,000\t$5,100\t\n+27.5%\n\t\nnote\n\n3\tGross profit\t$6,000\t$7,300\t\n+21.7%\n\t\nnote\n\n4\tOpEx\t$2,200\t$2,650\t\nadd\n\t\nnote\n\n5\tNet income\t$3,800\t$4,650\t\n+22.4%\n\t\nnote\n\n6\t\t\t\t\t\n7\t\t\t\t\t\n8\t\t\t\t\t\n9\t\t\t\t\t\n10\t\t\t\t\t\n11\t\t\t\t\t\n12\t\t\t\t\t\n13\t\t\t\t\t\n14\t\t\t\t\t\n15\t\t\t\t\t\n16\t\t\t\t\t\n17\t\t\t\t\t\n18\t\t\t\t\t\n19\t\t\t\t\t\n20\t\t\t\t\t\n21\t\t\t\t\t\n22\t\t\t\t\t\n23\t\t\t\t\t\n24\t\t\t\t\t\nUndo\nclick a Variance or Note cell to edit by hand\nRoom trace\n· 35 events\nEntity graph\nRoom chat\n9\nRoom\nPrivate\nTODAY\nH\nHomen\n9:39\n\nCan the room reconcile Q3 variance against the NetSuite close before the board read?\n\nCopy\nEdit\nH\nHomen\n9:39\n@nodeagent reconcile Q3 revenue and COGS variance\nCopy\nEdit\nN\nRoom NodeAgent\nagent\n9:40\nResearched 2 companies with structured fields · 2 sources\nv1 -> v1\nComplete\nCopy\nP\nPriya\n9:42\n\nThe +27.5% on COGS is volume, not price - noting it on the row so it survives the sync.\n\nCopy\nGQ\nguest · quokka\n9:43\n\nanon - quokka joined as guest · view + chat\n\nCopy\nN\nRoom NodeAgent\nagent\n9:45\nResearched 3 companies with structured fields · 2 sources\nv1 -> v1\nComplete\nCopy\nH\nHomen\n9:47\n\nGood. Draft the reconciliation memo and clip the variance exhibit for the board read.\n\nCopy\nEdit\nH\nHomen\n9:48\n@nodeagent recompute the Q3 variance column\nCopy\nEdit\nN\nRoom NodeAgent\nagent\n9:48\n\nCommitted r_rev +24%, r_cogs +27.5%, r_gp +21.7%, r_ni +22.4%. Lock released.\n\nCopy\n@nodeagent diligence CardioNova\n@nodeagent runway gaps\nIntake\nEvidence\nDraft\nReview\nExport\nRoom NodeAgent ·\nreconciled Q3 variance · v42\nLive graph · 14", + "horizontalOverflow": 0, + "viewport": { + "width": 1440, + "height": 960 + }, + "build": "034a8f963dfa037d860f5364032319506be3e2e0", + "buttons": [ + { + "tag": "BUTTON", + "testId": null, + "label": "Copy invite link for room r-86w", + "text": "SFT-RFT", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "people-trigger", + "label": "Open people panel — 5 live", + "text": "HPGQ◆5 live", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "room-settings-btn", + "label": "Open room controls", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "INPUT", + "testId": null, + "label": null, + "text": "", + "placeholder": "Find in binder...", + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Pinned2", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Q3 varianceOpen now - Sheet · v6 · 5 rows", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Agent wikiPinned - v1 · live TOC", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Recent6", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Capture Notebookedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Agent wikiv1 · live TOC", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Today's Briefedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Diligence memoedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Open questions / workplanedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Risk / opportunity wall3 notes", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Sheets3", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Company researchSheet · v1 · 14 rows", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Q3 varianceSheet · v6 · 5 rows", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Runway / milestonesSheet · v1 · 2 rows", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Docs6", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Risk / opportunity wall3 notes", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Agent wikiv1 · live TOC", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Capture Notebookedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Diligence memoedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Open questions / workplanedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Today's Briefedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Upload fileCSV, XLSX, text, image, PDF", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Review & proof2", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "People & agents4 live", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-agent", + "label": null, + "text": "◆Room NodeAgentPublic agent · done · rc_neuronova__status:rc_nimbusnova__status", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Resize files panel", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "home-tab", + "label": null, + "text": "Home", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-filetab", + "label": null, + "text": "Q3 variance", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-filetab", + "label": null, + "text": "Company research", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Q3 variance", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Company research", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Capture Notebook", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Risk / opportunity wall", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Agent wiki", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "work-artifacts-tab", + "label": null, + "text": "Artifacts", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "nodebook-tab", + "label": null, + "text": "NodeBook", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "investigation-tab", + "label": null, + "text": "Investigation", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "trace-tab", + "label": null, + "text": "Run trace", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-split-toggle", + "label": "Split the work surface", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-export-xlsx", + "label": "Export workbook to XLSX", + "text": "Export XLSX", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-visibility-toggle", + "label": null, + "text": "Shared", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "+24%", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "Reviewer note: baseline input", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "+27.5%", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "+21.7%", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "add", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "+22.4%", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Undo", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Expand room trace", + "text": "Room trace· 35 events", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Entity graph", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Resize Copilot panel", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Room chat9", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "copilot-tab-public", + "label": null, + "text": "Room", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "copilot-tab-private", + "label": null, + "text": "Private", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-edit", + "label": "Edit message", + "text": "Edit", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-edit", + "label": "Edit message", + "text": "Edit", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "agent-view-row", + "label": null, + "text": "Researched 2 companies with structured fields · 2 sources", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "agent-view-row", + "label": null, + "text": "Researched 3 companies with structured fields · 2 sources", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-edit", + "label": "Edit message", + "text": "Edit", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-edit", + "label": "Edit message", + "text": "Edit", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "TEXTAREA", + "testId": "chat-composer", + "label": "Message the room", + "text": "", + "placeholder": "Message the room or @nodeagent", + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-attach", + "label": "Attach files", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-voice", + "label": "Start voice input", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-context", + "label": "Attach work context", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-send", + "label": "Send message", + "text": "", + "placeholder": null, + "disabled": true + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "@nodeagent diligence CardioNova", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "@nodeagent runway gaps", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "status-open", + "label": null, + "text": "reconciled Q3 variance · v42", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "live-graph-rail-toggle", + "label": "Open live session graph (14 entities)", + "text": "Live graph · 14", + "placeholder": null, + "disabled": false + } + ] +} \ No newline at end of file diff --git a/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-downloaded.png b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-downloaded.png new file mode 100644 index 00000000..31820cd4 Binary files /dev/null and b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-downloaded.png differ diff --git a/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-entry.html.txt b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-entry.html.txt new file mode 100644 index 00000000..3fd9c271 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-entry.html.txt @@ -0,0 +1,140 @@ + + + + NodeRoom - live collaborative AI rooms with NodeAgents + + + + + + + + + + + + + + + + + + + + + + + + +
Shared workrooms for people and NodeAgents

Work with AI. Review every change.

NodeRoom is a shared workspace where people and NodeAgents work on the same files, spreadsheets, and notes. Every agent edit can stay reviewable and source-backed.

312rooms live
1,284cells committed today
demo
Sign-in requiredCode-access roomsReview-first agent edits
N
Q3 X-7K
Live demo
HS
PR
qk
NA
NA
Room NodeAgent

Locking the rows I’m about to write — read-only for others, still readable.

AccountQ3Variance
Revenue$12,400 NA
COGS$5,100 NA
Gross profit$7,300
versionedSyncv41traced · NetSuite p.4
Q3X-7K
sign in · join with code

Share a code, not a seat

Sign in, then join with a six-character room code. Share it only with people you intend to invite.

Open only what you need

Files, chat, a live artifact, and your private agent — one to four panels.

NA Revenue · locked
draft Gross profit · smart-merge
v41 → v42

Locks, then smart-merge

Agents lock the rows they touch and merge drafts on release. No collisions.

apps/web · noderoom.live shell
+ + + \ No newline at end of file diff --git a/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-entry.json b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-entry.json new file mode 100644 index 00000000..28ca574f --- /dev/null +++ b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-entry.json @@ -0,0 +1,61 @@ +{ + "url": "http://127.0.0.1:54522/?mode=memory&surface=desktop", + "title": "NodeRoom - live collaborative AI rooms with NodeAgents", + "body": "N\nNodeRoom\nShared workrooms for people and NodeAgents\nWork with AI. Review every change.\n\nNodeRoom is a shared workspace where people and NodeAgents work on the same files, spreadsheets, and notes. Every agent edit can stay reviewable and source-backed.\n\nTry sample room\nJoin room\n312\nrooms live\n1,284\ncells committed today\nDEMO\nSign-in required\nCode-access rooms\nReview-first agent edits\nN\nQ3\nX-7K\nLIVE DEMO\nHS\nPR\nqk\nNA\nNA\nRoom NodeAgent\n\nLocking the rows I’m about to write — read-only for others, still readable.\n\nACCOUNT\tQ3\tVARIANCE\nRevenue\t$12,400\t\nNA\nCOGS\t$5,100\t\nNA\nGross profit\t$7,300\t—\nversionedSync\nv41\ntraced · NetSuite p.4\nQ3X\n-7K\nsign in · join with code\nShare a code, not a seat\n\nSign in, then join with a six-character room code. Share it only with people you intend to invite.\n\nOpen only what you need\n\nFiles, chat, a live artifact, and your private agent — one to four panels.\n\nNA\nRevenue · locked\ndraft\nGross profit · smart-merge\nv41 → v42\nLocks, then smart-merge\n\nAgents lock the rows they touch and merge drafts on release. No collisions.\n\n01 · SURFACE\nThe public surface\napps/web · noderoom.live shell", + "horizontalOverflow": 0, + "viewport": { + "width": 1440, + "height": 960 + }, + "build": "034a8f963dfa037d860f5364032319506be3e2e0", + "buttons": [ + { + "tag": "BUTTON", + "testId": null, + "label": "NodeRoom home", + "text": "NNodeRoom", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Toggle light / dark", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "start-demo-room", + "label": null, + "text": "Try sample room", + "placeholder": null, + "disabled": false + }, + { + "tag": "INPUT", + "testId": "join-room-code", + "label": "Room code", + "text": "", + "placeholder": "ENTER CODE", + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "join-room", + "label": null, + "text": "Join room", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Open product story", + "text": "", + "placeholder": null, + "disabled": false + } + ] +} \ No newline at end of file diff --git a/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-entry.png b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-entry.png new file mode 100644 index 00000000..b8d5f906 Binary files /dev/null and b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-entry.png differ diff --git a/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-later-download.html.txt b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-later-download.html.txt new file mode 100644 index 00000000..16a96d89 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-later-download.html.txt @@ -0,0 +1,157 @@ + + + + NodeRoom - live collaborative AI rooms with NodeAgents + + + + + + + + + + + + + + + + + + + + + + + + +
N
NodeRoom · Q3 diligence
Room Binder9 items9
Room sheets
3 sheets
3
Boards
1 item
1
Knowledge
1 item
1
Notes & memos
4 items
4
Review queue
no pending proposals
Permissions
host controls - 36 trace events
People & agents · 3 live
H
Homen
Host
P
Priya
Finance lead
GQ
guest · quokka
Member
+3
Downloaded Q3_variance.xlsx · 5 rows · 1 sheet · 6,691 bytes · 9:48 AM
Q3 varianceversionedSyncv7
AccountQ2Q3VarianceNote
1Revenue$10,000$12,400
2COGS$4,000$5,100
3Gross profit$6,000$7,300
4OpEx$2,200$2,650
5Net income$3,800$4,650
click a Variance or Note cell to edit by hand
Room chat Everyone9NRoom NodeAgent
H
Homen9:39

Can the room reconcile Q3 variance against the NetSuite close before the board read?

H
Homen9:39
@nodeagent reconcile Q3 revenue and COGS variance
N
Room NodeAgentagent9:40
v1 -> v1Complete lock releasedCardioNovaPrimary source: CardioNova: product, buyer, and diligence context captured from the company site.
P
Priya9:42

The +27.5% on COGS is volume, not price - noting it on the row so it survives the sync.

GQ
guest · quokka9:43

anon - quokka joined as guest · view + chat

N
Room NodeAgentagent9:45
v1 -> v1Complete lock releasedCardioNovaPrimary source: CardioNova: product, buyer, and diligence context captured from the company site.
H
Homen9:47

Good. Draft the reconciliation memo and clip the variance exhibit for the board read.

H
Homen9:48
@nodeagent recompute the Q3 variance column
N
Room NodeAgentagent9:48

Committed r_rev +24%, r_cogs +27.5%, r_gp +21.7%, r_ni +22.4%. Lock released.

IntakeEvidenceDraftReviewExport
Room NodeAgent ·Room NodeAgent · edit_applied
+ + + \ No newline at end of file diff --git a/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-later-download.json b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-later-download.json new file mode 100644 index 00000000..b9390e77 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-later-download.json @@ -0,0 +1,701 @@ +{ + "url": "http://127.0.0.1:54522/?mode=memory&surface=desktop", + "title": "NodeRoom - live collaborative AI rooms with NodeAgents", + "body": "N\nNodeRoom · Q3 diligence\nSFT-RFT\nH\nP\nGQ\n◆\n5 live\nRoom Binder\n9\nPINNED\n2\nQ3 variance\nAgent wiki\nRECENT\n6\nCapture Notebook\nAgent wiki\nToday's Brief\nDiligence memo\nOpen questions / workplan\nRisk / opportunity wall\nSHEETS\n3\nRoom sheets\n3\nCompany research\nQ3 variance\nRunway / milestones\nDOCS\n6\nBoards\n1\nRisk / opportunity wall\nKnowledge\n1\nAgent wiki\nNotes & memos\n4\nCapture Notebook\nDiligence memo\nOpen questions / workplan\nToday's Brief\nUpload file\nREVIEW & PROOF\n2\nReview queue\nPermissions\nPEOPLE & AGENTS\n4 LIVE\nH\nHomen\nHost\nP\nPriya\nFinance lead\nGQ\nguest · quokka\nMember\n◆\nRoom NodeAgent\nPublic agent · done · rc_neuronova__status:rc_nimbusnova__status\nHome\nQ3 variance\nCompany research\n+3\nArtifacts\nNodeBook\nInvestigation\nRun trace\nExport XLSX\nDownloaded Q3_variance.xlsx · 5 rows · 1 sheet · 6,691 bytes · 9:48 AM\nShared\nQ3 variance\nversionedSync\nv7\n\tACCOUNT\tQ2\tQ3\tVARIANCE\tNOTE\n1\tRevenue\t$10,000\t$12,400\t\n+24%\n\t\nReviewer note: revised before handoff\n\n2\tCOGS\t$4,000\t$5,100\t\n+27.5%\n\t\nnote\n\n3\tGross profit\t$6,000\t$7,300\t\n+21.7%\n\t\nnote\n\n4\tOpEx\t$2,200\t$2,650\t\nadd\n\t\nnote\n\n5\tNet income\t$3,800\t$4,650\t\n+22.4%\n\t\nnote\n\n6\t\t\t\t\t\n7\t\t\t\t\t\n8\t\t\t\t\t\n9\t\t\t\t\t\n10\t\t\t\t\t\n11\t\t\t\t\t\n12\t\t\t\t\t\n13\t\t\t\t\t\n14\t\t\t\t\t\n15\t\t\t\t\t\n16\t\t\t\t\t\n17\t\t\t\t\t\n18\t\t\t\t\t\n19\t\t\t\t\t\n20\t\t\t\t\t\n21\t\t\t\t\t\n22\t\t\t\t\t\n23\t\t\t\t\t\n24\t\t\t\t\t\nUndo\nclick a Variance or Note cell to edit by hand\nRoom trace\n· 36 events\nEntity graph\nRoom chat\n9\nRoom\nPrivate\nTODAY\nH\nHomen\n9:39\n\nCan the room reconcile Q3 variance against the NetSuite close before the board read?\n\nCopy\nEdit\nH\nHomen\n9:39\n@nodeagent reconcile Q3 revenue and COGS variance\nCopy\nEdit\nN\nRoom NodeAgent\nagent\n9:40\nResearched 2 companies with structured fields · 2 sources\nv1 -> v1\nComplete\nCopy\nP\nPriya\n9:42\n\nThe +27.5% on COGS is volume, not price - noting it on the row so it survives the sync.\n\nCopy\nGQ\nguest · quokka\n9:43\n\nanon - quokka joined as guest · view + chat\n\nCopy\nN\nRoom NodeAgent\nagent\n9:45\nResearched 3 companies with structured fields · 2 sources\nv1 -> v1\nComplete\nCopy\nH\nHomen\n9:47\n\nGood. Draft the reconciliation memo and clip the variance exhibit for the board read.\n\nCopy\nEdit\nH\nHomen\n9:48\n@nodeagent recompute the Q3 variance column\nCopy\nEdit\nN\nRoom NodeAgent\nagent\n9:48\n\nCommitted r_rev +24%, r_cogs +27.5%, r_gp +21.7%, r_ni +22.4%. Lock released.\n\nCopy\n@nodeagent diligence CardioNova\n@nodeagent runway gaps\nIntake\nEvidence\nDraft\nReview\nExport\nRoom NodeAgent ·\nreconciled Q3 variance · v42\nLive graph · 14", + "horizontalOverflow": 0, + "viewport": { + "width": 1440, + "height": 960 + }, + "build": "034a8f963dfa037d860f5364032319506be3e2e0", + "buttons": [ + { + "tag": "BUTTON", + "testId": null, + "label": "Copy invite link for room r-86w", + "text": "SFT-RFT", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "people-trigger", + "label": "Open people panel — 5 live", + "text": "HPGQ◆5 live", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "room-settings-btn", + "label": "Open room controls", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "INPUT", + "testId": null, + "label": null, + "text": "", + "placeholder": "Find in binder...", + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Pinned2", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Q3 varianceOpen now - Sheet · v7 · 5 rows", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Agent wikiPinned - v1 · live TOC", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Recent6", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Capture Notebookedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Agent wikiv1 · live TOC", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Today's Briefedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Diligence memoedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Open questions / workplanedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Risk / opportunity wall3 notes", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Sheets3", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Company researchSheet · v1 · 14 rows", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Q3 varianceSheet · v7 · 5 rows", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Runway / milestonesSheet · v1 · 2 rows", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Docs6", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Risk / opportunity wall3 notes", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Agent wikiv1 · live TOC", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Capture Notebookedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Diligence memoedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Open questions / workplanedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Today's Briefedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Upload fileCSV, XLSX, text, image, PDF", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Review & proof2", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "People & agents4 live", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-agent", + "label": null, + "text": "◆Room NodeAgentPublic agent · done · rc_neuronova__status:rc_nimbusnova__status", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Resize files panel", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "home-tab", + "label": null, + "text": "Home", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-filetab", + "label": null, + "text": "Q3 variance", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-filetab", + "label": null, + "text": "Company research", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Q3 variance", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Company research", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Capture Notebook", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Risk / opportunity wall", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Agent wiki", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "work-artifacts-tab", + "label": null, + "text": "Artifacts", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "nodebook-tab", + "label": null, + "text": "NodeBook", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "investigation-tab", + "label": null, + "text": "Investigation", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "trace-tab", + "label": null, + "text": "Run trace", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-split-toggle", + "label": "Split the work surface", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-export-xlsx", + "label": "Export workbook to XLSX", + "text": "Export XLSX", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-visibility-toggle", + "label": null, + "text": "Shared", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "+24%", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "Reviewer note: revised before handoff", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "+27.5%", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "+21.7%", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "add", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "+22.4%", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Undo", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Expand room trace", + "text": "Room trace· 36 events", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Entity graph", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Resize Copilot panel", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Room chat9", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "copilot-tab-public", + "label": null, + "text": "Room", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "copilot-tab-private", + "label": null, + "text": "Private", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-edit", + "label": "Edit message", + "text": "Edit", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-edit", + "label": "Edit message", + "text": "Edit", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "agent-view-row", + "label": null, + "text": "Researched 2 companies with structured fields · 2 sources", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "agent-view-row", + "label": null, + "text": "Researched 3 companies with structured fields · 2 sources", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-edit", + "label": "Edit message", + "text": "Edit", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-edit", + "label": "Edit message", + "text": "Edit", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "TEXTAREA", + "testId": "chat-composer", + "label": "Message the room", + "text": "", + "placeholder": "Message the room or @nodeagent", + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-attach", + "label": "Attach files", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-voice", + "label": "Start voice input", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-context", + "label": "Attach work context", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-send", + "label": "Send message", + "text": "", + "placeholder": null, + "disabled": true + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "@nodeagent diligence CardioNova", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "@nodeagent runway gaps", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "status-open", + "label": null, + "text": "reconciled Q3 variance · v42", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "live-graph-rail-toggle", + "label": "Open live session graph (14 entities)", + "text": "Live graph · 14", + "placeholder": null, + "disabled": false + } + ] +} \ No newline at end of file diff --git a/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-later-download.png b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-later-download.png new file mode 100644 index 00000000..7d76802a Binary files /dev/null and b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-later-download.png differ diff --git a/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-sample.html.txt b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-sample.html.txt new file mode 100644 index 00000000..6a3b67b3 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-sample.html.txt @@ -0,0 +1,157 @@ + + + + NodeRoom - live collaborative AI rooms with NodeAgents + + + + + + + + + + + + + + + + + + + + + + + + +
N
NodeRoom · Q3 diligence
Room Binder9 items9
Room sheets
3 sheets
3
Boards
1 item
1
Knowledge
1 item
1
Notes & memos
4 items
4
Review queue
no pending proposals
Permissions
host controls - 26 trace events
People & agents · 3 live
H
Homen
Host
P
Priya
Finance lead
GQ
guest · quokka
Member
+3
Q3 varianceversionedSyncv1
AccountQ2Q3VarianceNote
1Revenue$10,000$12,400
2COGS$4,000$5,100
3Gross profit$6,000$7,300
4OpEx$2,200$2,650
5Net income$3,800$4,650
click a Variance or Note cell to edit by hand
Room chat Everyone7NRoom NodeAgent
H
Homen9:39

Can the room reconcile Q3 variance against the NetSuite close before the board read?

H
Homen9:39
@nodeagent reconcile Q3 revenue and COGS variance
N
Room NodeAgentagent9:40
v1 -> v1Complete lock releasedCardioNovaPrimary source: CardioNova: product, buyer, and diligence context captured from the company site.
P
Priya9:42

The +27.5% on COGS is volume, not price - noting it on the row so it survives the sync.

GQ
guest · quokka9:43

anon - quokka joined as guest · view + chat

N
Room NodeAgentagent9:45
v1 -> v1Complete lock releasedCardioNovaPrimary source: CardioNova: product, buyer, and diligence context captured from the company site.
H
Homen9:47

Good. Draft the reconciliation memo and clip the variance exhibit for the board read.

01 - Welcome to NodeRoomA live diligence room where bankers, guests, and NodeAgents gather company facts, enrich shared grids, and prepare runway, milestone, and handoff artifacts without clobbering each other. This memory demo is safe: nothing is sent anywhere.
standard
IntakeEvidenceDraftReviewExport
Room NodeAgent ·Room NodeAgent · edit_applied
+ + + \ No newline at end of file diff --git a/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-sample.json b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-sample.json new file mode 100644 index 00000000..d401987b --- /dev/null +++ b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-sample.json @@ -0,0 +1,765 @@ +{ + "url": "http://127.0.0.1:54522/?mode=memory&surface=desktop", + "title": "NodeRoom - live collaborative AI rooms with NodeAgents", + "body": "N\nNodeRoom · Q3 diligence\nSFT-RFT\nH\nP\nGQ\n◆\n5 live\nRoom Binder\n9\nPINNED\n2\nQ3 variance\nAgent wiki\nRECENT\n6\nCapture Notebook\nAgent wiki\nToday's Brief\nDiligence memo\nOpen questions / workplan\nRisk / opportunity wall\nSHEETS\n3\nRoom sheets\n3\nCompany research\nQ3 variance\nRunway / milestones\nDOCS\n6\nBoards\n1\nRisk / opportunity wall\nKnowledge\n1\nAgent wiki\nNotes & memos\n4\nCapture Notebook\nDiligence memo\nOpen questions / workplan\nToday's Brief\nUpload file\nREVIEW & PROOF\n2\nReview queue\nPermissions\nPEOPLE & AGENTS\n4 LIVE\nH\nHomen\nHost\nP\nPriya\nFinance lead\nGQ\nguest · quokka\nMember\n◆\nRoom NodeAgent\nPublic agent · working · rc_neuronova__status:rc_nimbusnova__status\nHome\nQ3 variance\nCompany research\n+3\nArtifacts\nNodeBook\nInvestigation\nRun trace\nExport XLSX\nShared\nQ3 variance\nversionedSync\nv1\n\tACCOUNT\tQ2\tQ3\tVARIANCE\tNOTE\n1\tRevenue\t$10,000\t$12,400\t\nadd\n\t\nnote\n\n2\tCOGS\t$4,000\t$5,100\t\nadd\n\t\nnote\n\n3\tGross profit\t$6,000\t$7,300\t\nadd\n\t\nnote\n\n4\tOpEx\t$2,200\t$2,650\t\nadd\n\t\nnote\n\n5\tNet income\t$3,800\t$4,650\t\nadd\n\t\nnote\n\n6\t\t\t\t\t\n7\t\t\t\t\t\n8\t\t\t\t\t\n9\t\t\t\t\t\n10\t\t\t\t\t\n11\t\t\t\t\t\n12\t\t\t\t\t\n13\t\t\t\t\t\n14\t\t\t\t\t\n15\t\t\t\t\t\n16\t\t\t\t\t\n17\t\t\t\t\t\n18\t\t\t\t\t\n19\t\t\t\t\t\n20\t\t\t\t\t\n21\t\t\t\t\t\n22\t\t\t\t\t\n23\t\t\t\t\t\n24\t\t\t\t\t\nUndo\nclick a Variance or Note cell to edit by hand\nRoom trace\n· 26 events\nEntity graph\nRoom chat\n7\nRoom\nPrivate\nTODAY\nH\nHomen\n9:39\n\nCan the room reconcile Q3 variance against the NetSuite close before the board read?\n\nCopy\nEdit\nH\nHomen\n9:39\n@nodeagent reconcile Q3 revenue and COGS variance\nCopy\nEdit\nN\nRoom NodeAgent\nagent\n9:40\nResearched 2 companies with structured fields · 2 sources\nv1 -> v1\nComplete\nCopy\nP\nPriya\n9:42\n\nThe +27.5% on COGS is volume, not price - noting it on the row so it survives the sync.\n\nCopy\nGQ\nguest · quokka\n9:43\n\nanon - quokka joined as guest · view + chat\n\nCopy\nN\nRoom NodeAgent\nagent\n9:45\nResearched 3 companies with structured fields · 2 sources\nv1 -> v1\nComplete\nCopy\nH\nHomen\n9:47\n\nGood. Draft the reconciliation memo and clip the variance exhibit for the board read.\n\nCopy\nEdit\n@nodeagent diligence CardioNova\n@nodeagent runway gaps\n01 - WELCOME TO NODEROOM\nA live diligence room where bankers, guests, and NodeAgents gather company facts, enrich shared grids, and prepare runway, milestone, and handoff artifacts without clobbering each other. This memory demo is safe: nothing is sent anywhere.\nStandard\nReplay\nIntake\nEvidence\nDraft\nReview\nExport\nRoom NodeAgent ·\nreconciled Q3 variance · v42\nLive graph · 9", + "horizontalOverflow": 0, + "viewport": { + "width": 1440, + "height": 960 + }, + "build": "034a8f963dfa037d860f5364032319506be3e2e0", + "buttons": [ + { + "tag": "BUTTON", + "testId": null, + "label": "Copy invite link for room r-86w", + "text": "SFT-RFT", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "people-trigger", + "label": "Open people panel — 5 live", + "text": "HPGQ◆5 live", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "room-settings-btn", + "label": "Open room controls", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "INPUT", + "testId": null, + "label": null, + "text": "", + "placeholder": "Find in binder...", + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Pinned2", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Q3 varianceOpen now - Sheet · v1 · 5 rows", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Agent wikiPinned - v1 · live TOC", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Recent6", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Capture Notebookedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Agent wikiv1 · live TOC", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Today's Briefedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Diligence memoedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Open questions / workplanedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Risk / opportunity wall3 notes", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Sheets3", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Company researchSheet · v1 · 14 rows", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Q3 varianceSheet · v1 · 5 rows", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Runway / milestonesSheet · v1 · 2 rows", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Docs6", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Risk / opportunity wall3 notes", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Agent wikiv1 · live TOC", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Capture Notebookedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Diligence memoedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Open questions / workplanedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Today's Briefedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Upload fileCSV, XLSX, text, image, PDF", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Review & proof2", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "People & agents4 live", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-agent", + "label": null, + "text": "◆Room NodeAgentPublic agent · working · rc_neuronova__status:rc_nimbusnova__status", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Resize files panel", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "home-tab", + "label": null, + "text": "Home", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-filetab", + "label": null, + "text": "Q3 variance", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-filetab", + "label": null, + "text": "Company research", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Q3 variance", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Company research", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Capture Notebook", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Risk / opportunity wall", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Agent wiki", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "work-artifacts-tab", + "label": null, + "text": "Artifacts", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "nodebook-tab", + "label": null, + "text": "NodeBook", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "investigation-tab", + "label": null, + "text": "Investigation", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "trace-tab", + "label": null, + "text": "Run trace", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-split-toggle", + "label": "Split the work surface", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-export-xlsx", + "label": "Export workbook to XLSX", + "text": "Export XLSX", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-visibility-toggle", + "label": null, + "text": "Shared", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "add", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "add", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "add", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "add", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "add", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Undo", + "placeholder": null, + "disabled": true + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Expand room trace", + "text": "Room trace· 26 events", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Entity graph", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Resize Copilot panel", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Room chat7", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "copilot-tab-public", + "label": null, + "text": "Room", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "copilot-tab-private", + "label": null, + "text": "Private", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-edit", + "label": "Edit message", + "text": "Edit", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-edit", + "label": "Edit message", + "text": "Edit", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "agent-view-row", + "label": null, + "text": "Researched 2 companies with structured fields · 2 sources", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "agent-view-row", + "label": null, + "text": "Researched 3 companies with structured fields · 2 sources", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-edit", + "label": "Edit message", + "text": "Edit", + "placeholder": null, + "disabled": false + }, + { + "tag": "TEXTAREA", + "testId": "chat-composer", + "label": "Message the room", + "text": "", + "placeholder": "Message the room or @nodeagent", + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-attach", + "label": "Attach files", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-voice", + "label": "Start voice input", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-context", + "label": "Attach work context", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-send", + "label": "Send message", + "text": "", + "placeholder": null, + "disabled": true + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "@nodeagent diligence CardioNova", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "@nodeagent runway gaps", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Show step 1", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Show step 2", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Show step 3", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Show step 4", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Show step 5", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Show step 6", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Show step 7", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Previous walkthrough step", + "text": "", + "placeholder": null, + "disabled": true + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Next walkthrough step", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Replay", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "walkthrough-dock-dismiss", + "label": "Dismiss walkthrough dock", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "status-open", + "label": null, + "text": "reconciled Q3 variance · v42", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "live-graph-rail-toggle", + "label": "Open live session graph (9 entities)", + "text": "Live graph · 9", + "placeholder": null, + "disabled": false + } + ] +} \ No newline at end of file diff --git a/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-sample.png b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-sample.png new file mode 100644 index 00000000..0d9ba02d Binary files /dev/null and b/evidence/desktop-account-20260905/operator/after/desktop-memory-1440-sample.png differ diff --git a/evidence/desktop-account-20260905/operator/after/report.json b/evidence/desktop-account-20260905/operator/after/report.json new file mode 100644 index 00000000..b5f89216 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/after/report.json @@ -0,0 +1,502 @@ +{ + "schema": "noderoom-entry-observation/v1", + "startedAt": "2026-09-05T16:48:03.654Z", + "baseCommit": "034a8f963dfa037d860f5364032319506be3e2e0", + "sourceBindings": "../after-source-bindings.json", + "sourceState": "Merged034a8f9 plus uncommitted exact four-owner Account repair; approved dependencies unchanged; build SHA identifies base, source hash receipt identifies candidate", + "cells": [ + { + "width": 1440, + "routeName": "desktop-memory", + "captures": [ + { + "name": "desktop-memory-1440-entry", + "pngSha256": "1edf336806df3b4be374f010335643257d918860f3c30ee786b75ec4754c44a3", + "domSha256": "6a97e3ae6b9c591ee81637e32ee4b1cdaa2ce1151c834bc8d606d0f6c003f710", + "url": "http://127.0.0.1:54522/?mode=memory&surface=desktop", + "horizontalOverflow": 0, + "build": "034a8f963dfa037d860f5364032319506be3e2e0" + }, + { + "name": "desktop-memory-1440-sample", + "pngSha256": "35ee01f36f1e96ff6f5a76166979884ba97c72cf17454ce6c1eae3fb809b1dc5", + "domSha256": "835b624532ae30303e5c119201f6c04d8cc1fa8fb1780105bd32b044b9010df4", + "url": "http://127.0.0.1:54522/?mode=memory&surface=desktop", + "horizontalOverflow": 0, + "build": "034a8f963dfa037d860f5364032319506be3e2e0" + }, + { + "name": "desktop-memory-1440-downloaded", + "pngSha256": "ef099b2a6b9c226ab4c6508b80dd36dd79818af70b840ae573ed651d16ba988a", + "domSha256": "d8835c7c4006f6c3e6641f2bf60a42ebd548ed2e6dcf54a5a2db977dc058fabd", + "url": "http://127.0.0.1:54522/?mode=memory&surface=desktop", + "horizontalOverflow": 0, + "build": "034a8f963dfa037d860f5364032319506be3e2e0" + }, + { + "name": "desktop-memory-1440-later-download", + "pngSha256": "57012fa7146507f83b6a39a41d224bdb73818a38c15bc283783edc379c3ecce5", + "domSha256": "e5be86de764b545a1015b09f714b3f4b022a1bf57dff0bd2a69b79b9ab8b9c37", + "url": "http://127.0.0.1:54522/?mode=memory&surface=desktop", + "horizontalOverflow": 0, + "build": "034a8f963dfa037d860f5364032319506be3e2e0" + } + ], + "console": [ + { + "type": "error", + "text": "Failed to load resource: net::ERR_BLOCKED_BY_CLIENT.Inspector" + } + ], + "pageErrors": [], + "workbook": [ + { + "name": "Q3 variance", + "rows": [ + null, + [ + null, + "Account", + "Q2", + "Q3", + "Variance", + "Note" + ], + [ + null, + "Revenue", + "$10,000", + "$12,400", + "+24%", + "Reviewer note: baseline input" + ], + [ + null, + "COGS", + "$4,000", + "$5,100", + "+27.5%" + ], + [ + null, + "Gross profit", + "$6,000", + "$7,300", + "+21.7%" + ], + [ + null, + "OpEx", + "$2,200", + "$2,650" + ], + [ + null, + "Net income", + "$3,800", + "$4,650", + "+22.4%" + ] + ] + } + ], + "download": { + "fileName": "Q3_variance.xlsx", + "sha256": "f932564a012f2cb46dea3a92eb90c80004895f5d55a0460c47ad7573379aa52f", + "byteCount": 6685 + }, + "accountComparison": { + "ui": { + "title": "Q3 variance", + "headers": [ + "", + "Account", + "Q2", + "Q3", + "Variance", + "Note" + ], + "rows": [ + { + "id": "r_rev", + "account": "Revenue", + "cells": [ + "Revenue", + "$10,000", + "$12,400", + "+24%", + "Reviewer note: baseline input" + ] + }, + { + "id": "r_cogs", + "account": "COGS", + "cells": [ + "COGS", + "$4,000", + "$5,100", + "+27.5%", + " note" + ] + }, + { + "id": "r_gp", + "account": "Gross profit", + "cells": [ + "Gross profit", + "$6,000", + "$7,300", + "+21.7%", + " note" + ] + }, + { + "id": "r_opex", + "account": "OpEx", + "cells": [ + "OpEx", + "$2,200", + "$2,650", + " add", + " note" + ] + }, + { + "id": "r_ni", + "account": "Net income", + "cells": [ + "Net income", + "$3,800", + "$4,650", + "+22.4%", + " note" + ] + } + ] + }, + "rows": [ + { + "rowId": "r_rev", + "uiAccount": "Revenue", + "xlsxAccount": "Revenue", + "matches": true + }, + { + "rowId": "r_cogs", + "uiAccount": "COGS", + "xlsxAccount": "COGS", + "matches": true + }, + { + "rowId": "r_gp", + "uiAccount": "Gross profit", + "xlsxAccount": "Gross profit", + "matches": true + }, + { + "rowId": "r_opex", + "uiAccount": "OpEx", + "xlsxAccount": "OpEx", + "matches": true + }, + { + "rowId": "r_ni", + "uiAccount": "Net income", + "xlsxAccount": "Net income", + "matches": true + } + ], + "allFiveMatch": true, + "workbook": { + "fileName": "Q3_variance.xlsx", + "sha256": "f932564a012f2cb46dea3a92eb90c80004895f5d55a0460c47ad7573379aa52f", + "byteCount": 6685 + } + }, + "baselineParity": { + "beforeWorkbookSha256": "06dd606710f763f7e6016e81a8022667d69ab61f871cf50328484dec5f98dc31", + "afterWorkbookSha256": "f932564a012f2cb46dea3a92eb90c80004895f5d55a0460c47ad7573379aa52f", + "cells": [ + { + "cell": "A1", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": "Account", + "after": "Account" + }, + { + "cell": "B1", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": "Q2", + "after": "Q2" + }, + { + "cell": "C1", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": "Q3", + "after": "Q3" + }, + { + "cell": "D1", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": "Variance", + "after": "Variance" + }, + { + "cell": "E1", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": "Note", + "after": "Note" + }, + { + "cell": "A2", + "valueMatches": false, + "styleMatches": true, + "allowedLabelChange": true, + "before": null, + "after": "Revenue" + }, + { + "cell": "B2", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": "$10,000", + "after": "$10,000" + }, + { + "cell": "C2", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": "$12,400", + "after": "$12,400" + }, + { + "cell": "D2", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": "+24%", + "after": "+24%" + }, + { + "cell": "E2", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": "Reviewer note: baseline input", + "after": "Reviewer note: baseline input" + }, + { + "cell": "A3", + "valueMatches": false, + "styleMatches": true, + "allowedLabelChange": true, + "before": null, + "after": "COGS" + }, + { + "cell": "B3", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": "$4,000", + "after": "$4,000" + }, + { + "cell": "C3", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": "$5,100", + "after": "$5,100" + }, + { + "cell": "D3", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": "+27.5%", + "after": "+27.5%" + }, + { + "cell": "E3", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": null, + "after": null + }, + { + "cell": "A4", + "valueMatches": false, + "styleMatches": true, + "allowedLabelChange": true, + "before": null, + "after": "Gross profit" + }, + { + "cell": "B4", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": "$6,000", + "after": "$6,000" + }, + { + "cell": "C4", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": "$7,300", + "after": "$7,300" + }, + { + "cell": "D4", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": "+21.7%", + "after": "+21.7%" + }, + { + "cell": "E4", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": null, + "after": null + }, + { + "cell": "A5", + "valueMatches": false, + "styleMatches": true, + "allowedLabelChange": true, + "before": null, + "after": "OpEx" + }, + { + "cell": "B5", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": "$2,200", + "after": "$2,200" + }, + { + "cell": "C5", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": "$2,650", + "after": "$2,650" + }, + { + "cell": "D5", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": null, + "after": null + }, + { + "cell": "E5", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": null, + "after": null + }, + { + "cell": "A6", + "valueMatches": false, + "styleMatches": true, + "allowedLabelChange": true, + "before": null, + "after": "Net income" + }, + { + "cell": "B6", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": "$3,800", + "after": "$3,800" + }, + { + "cell": "C6", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": "$4,650", + "after": "$4,650" + }, + { + "cell": "D6", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": "+22.4%", + "after": "+22.4%" + }, + { + "cell": "E6", + "valueMatches": true, + "styleMatches": true, + "allowedLabelChange": false, + "before": null, + "after": null + } + ], + "sheetNameUnchanged": true, + "columnsUnchanged": true + }, + "boundary": { + "rect": { + "x": 336.078125, + "y": 163, + "width": 131.640625, + "height": 177 + }, + "pngSha256": "7efd166666c487ff28c3659bb7dc4a08a9fe2c2af9c02f134e6880094b27b40d", + "domRestored": true + }, + "laterExport": { + "fileName": "review-2-Q3_variance.xlsx", + "sha256": "fd854667bbd9f4c8cb55d62abc7f98fedd1b5c8b332f827f889a163f7952c1aa", + "note": "Reviewer note: revised before handoff", + "labels": [ + "Revenue", + "COGS", + "Gross profit", + "OpEx", + "Net income" + ], + "earlierBytesPreserved": true, + "earlierStatePreserved": true + }, + "status": "OBSERVED" + } + ], + "externalRequests": [ + { + "width": 1440, + "routeName": "desktop-memory", + "url": "https://fonts.googleapis.com/css2", + "action": "blocked" + } + ], + "errors": [], + "status": "OBSERVED", + "finishedAt": "2026-09-05T16:48:10.746Z" +} \ No newline at end of file diff --git a/evidence/desktop-account-20260905/operator/after/review-2-Q3_variance.xlsx b/evidence/desktop-account-20260905/operator/after/review-2-Q3_variance.xlsx new file mode 100644 index 00000000..6bec4b4d Binary files /dev/null and b/evidence/desktop-account-20260905/operator/after/review-2-Q3_variance.xlsx differ diff --git a/evidence/desktop-account-20260905/operator/after/server.log b/evidence/desktop-account-20260905/operator/after/server.log new file mode 100644 index 00000000..6e5f17b3 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/after/server.log @@ -0,0 +1 @@ + ➜ Local: http://127.0.0.1:54522/ diff --git a/evidence/desktop-account-20260905/operator/after/ui-to-workbook.json b/evidence/desktop-account-20260905/operator/after/ui-to-workbook.json new file mode 100644 index 00000000..dd704fd5 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/after/ui-to-workbook.json @@ -0,0 +1,108 @@ +{ + "ui": { + "title": "Q3 variance", + "headers": [ + "", + "Account", + "Q2", + "Q3", + "Variance", + "Note" + ], + "rows": [ + { + "id": "r_rev", + "account": "Revenue", + "cells": [ + "Revenue", + "$10,000", + "$12,400", + "+24%", + "Reviewer note: baseline input" + ] + }, + { + "id": "r_cogs", + "account": "COGS", + "cells": [ + "COGS", + "$4,000", + "$5,100", + "+27.5%", + " note" + ] + }, + { + "id": "r_gp", + "account": "Gross profit", + "cells": [ + "Gross profit", + "$6,000", + "$7,300", + "+21.7%", + " note" + ] + }, + { + "id": "r_opex", + "account": "OpEx", + "cells": [ + "OpEx", + "$2,200", + "$2,650", + " add", + " note" + ] + }, + { + "id": "r_ni", + "account": "Net income", + "cells": [ + "Net income", + "$3,800", + "$4,650", + "+22.4%", + " note" + ] + } + ] + }, + "rows": [ + { + "rowId": "r_rev", + "uiAccount": "Revenue", + "xlsxAccount": "Revenue", + "matches": true + }, + { + "rowId": "r_cogs", + "uiAccount": "COGS", + "xlsxAccount": "COGS", + "matches": true + }, + { + "rowId": "r_gp", + "uiAccount": "Gross profit", + "xlsxAccount": "Gross profit", + "matches": true + }, + { + "rowId": "r_opex", + "uiAccount": "OpEx", + "xlsxAccount": "OpEx", + "matches": true + }, + { + "rowId": "r_ni", + "uiAccount": "Net income", + "xlsxAccount": "Net income", + "matches": true + } + ], + "allFiveMatch": true, + "workbook": { + "fileName": "Q3_variance.xlsx", + "sha256": "f932564a012f2cb46dea3a92eb90c80004895f5d55a0460c47ad7573379aa52f", + "byteCount": 6685 + } +} \ No newline at end of file diff --git a/evidence/desktop-account-20260905/operator/before-browser.command.json b/evidence/desktop-account-20260905/operator/before-browser.command.json new file mode 100644 index 00000000..c7181d02 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/before-browser.command.json @@ -0,0 +1,15 @@ +{ + "startedAt": "2026-09-05T16:25:42.189978+00:00", + "finishedAt": "2026-09-05T16:26:06.097882+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "C:/Users/hshum/.codex/worktrees/5dba/nodebench-ai/docs/plans/portfolio-recovery-20260904/E6f-noderoom-desktop-account-repair-01/observe-before.mjs" + ], + "timeoutSeconds": 180, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 23.906, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\before-browser.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" +} diff --git a/evidence/desktop-account-20260905/operator/before-browser.log b/evidence/desktop-account-20260905/operator/before-browser.log new file mode 100644 index 00000000..4e93f486 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/before-browser.log @@ -0,0 +1 @@ +{"status":"OBSERVED","cells":1,"output":"C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\before"} diff --git a/evidence/desktop-account-20260905/operator/before-build.command.json b/evidence/desktop-account-20260905/operator/before-build.command.json new file mode 100644 index 00000000..b0862a6b --- /dev/null +++ b/evidence/desktop-account-20260905/operator/before-build.command.json @@ -0,0 +1,16 @@ +{ + "startedAt": "2026-09-05T16:22:53.001124+00:00", + "finishedAt": "2026-09-05T16:25:32.694036+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "run", + "build" + ], + "timeoutSeconds": 360, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 159.688, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\before-build.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" +} diff --git a/evidence/desktop-account-20260905/operator/before-build.log b/evidence/desktop-account-20260905/operator/before-build.log new file mode 100644 index 00000000..146359d9 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/before-build.log @@ -0,0 +1,440 @@ + +> noderoom@0.1.1 build +> tsc --noEmit && vite build && tsx scripts/verify-build-provenance.ts + +vite v6.4.3 building for production... +transforming... +✓ 7759 modules transformed. +rendering chunks... +computing gzip size... +dist/assets/pyodideKernel.worker-DHEMhrGh.js 4.81 kB +dist/index.html 17.04 kB │ gzip: 4.78 kB +dist/pyodide/pyodide.mjs 17.84 kB +dist/pyodide/pyodide-lock.json 113.80 kB │ gzip: 25.46 kB +dist/assets/pdf.worker.min-qwK7q_zL.mjs 1,046.21 kB +dist/pyodide/pyodide.asm.mjs 1,250.26 kB +dist/pyodide/python_stdlib.zip 2,552.46 kB +dist/pyodide/pyodide.asm.wasm 9,610.00 kB │ gzip: 3,605.46 kB +dist/assets/tokens-D_FyPjo0.css 1.33 kB │ gzip: 0.53 kB +dist/assets/pdf-vendor-DThUiFH8.css 1.53 kB │ gzip: 0.61 kB +dist/assets/TraceSurface-3Mc5xPHl.css 11.60 kB │ gzip: 2.40 kB +dist/assets/InvestigationReport-DdZK31A3.css 14.32 kB │ gzip: 2.66 kB +dist/assets/graph-vendor-C5ap-Sga.css 15.87 kB │ gzip: 2.67 kB +dist/assets/RoomTour-DRYXy7Ep.css 23.70 kB │ gzip: 5.04 kB +dist/assets/primitives-BSN9ZDgJ.css 41.72 kB │ gzip: 7.13 kB +dist/assets/WorkArtifactsPanel-Dagy3OZH.css 45.07 kB │ gzip: 6.11 kB +dist/assets/ai-elements-DlCQiZA9.css 49.55 kB │ gzip: 9.74 kB +dist/assets/mermaid-GHXKKRXX-DXxw6UAo.css 97.57 kB │ gzip: 17.59 kB +dist/assets/MobileRoot-C_RVAb0O.css 175.42 kB │ gzip: 27.48 kB +dist/assets/styles-ClFGusx6.css 226.19 kB │ gzip: 36.42 kB +dist/assets/colors-Cc3OSVma.js 0.11 kB │ gzip: 0.12 kB +dist/assets/channel-Bs3xekKy.js 0.11 kB │ gzip: 0.13 kB +dist/assets/range-OtVwhkKS.js 0.18 kB │ gzip: 0.17 kB +dist/assets/chunk-2Q5K7J3B-DbIvYLQM.js 0.19 kB │ gzip: 0.16 kB +dist/assets/chunk-XXDRQBXY-CtrdDOvR.js 0.28 kB │ gzip: 0.24 kB +dist/assets/chunk-JWPE2WC7-yaU7urOn.js 0.30 kB │ gzip: 0.21 kB +dist/assets/chunk-5VM5RSS4-wDObTWnN.js 0.37 kB │ gzip: 0.27 kB +dist/assets/init-Dmth1JHB.js 0.38 kB │ gzip: 0.19 kB +dist/assets/sanitizeArtifactSvg-DK6rc30l.js 0.48 kB │ gzip: 0.33 kB +dist/assets/chunk-KBJHAD2P-XFNcP8B8.js 0.53 kB │ gzip: 0.38 kB +dist/assets/codeowners-Bp6g37R7.js 0.55 kB │ gzip: 0.32 kB +dist/assets/stateDiagram-v2-UEYNNEHI-0szo7Drc.js 0.56 kB │ gzip: 0.36 kB +dist/assets/classDiagram-JCYQIIEL-G8U2nA66.js 0.60 kB │ gzip: 0.38 kB +dist/assets/classDiagram-v2-OCEON4UE-G8U2nA66.js 0.60 kB │ gzip: 0.38 kB +dist/assets/index-DjlIiZGG.js 0.66 kB │ gzip: 0.41 kB +dist/assets/swimlanesDiagram-ULZ7WXOC-DeZIxC-T.js 0.68 kB │ gzip: 0.43 kB +dist/assets/highlighted-body-OFNGDK62-CFEvFKUz.js 0.70 kB │ gzip: 0.44 kB +dist/assets/shellsession-BADoaaVG.js 0.71 kB │ gzip: 0.43 kB +dist/assets/infoDiagram-6WML65LV-BqJB0Wzr.js 0.71 kB │ gzip: 0.47 kB +dist/assets/tsv-B_m7g4N7.js 0.74 kB │ gzip: 0.34 kB +dist/assets/html-derivative-BFtXZ54Q.js 0.90 kB │ gzip: 0.50 kB +dist/assets/git-rebase-r7XF79zn.js 0.98 kB │ gzip: 0.44 kB +dist/assets/qmldir-C8lEn-DE.js 1.00 kB │ gzip: 0.45 kB +dist/assets/sizeCapture-X5ZJPWSS-869se4DW.js 1.13 kB │ gzip: 0.62 kB +dist/assets/csv-fuZLfV_i.js 1.14 kB │ gzip: 0.37 kB +dist/assets/git-commit-F4YmCXRG.js 1.23 kB │ gzip: 0.53 kB +dist/assets/mermaid.client-CVhdbIqJ.js 1.28 kB │ gzip: 0.70 kB +dist/assets/xsl-CtQFsRM5.js 1.39 kB │ gzip: 0.52 kB +dist/assets/dotenv-Da5cRb03.js 1.42 kB │ gzip: 0.53 kB +dist/assets/ordinal-BeghXfj9.js 1.47 kB │ gzip: 0.61 kB +dist/assets/sparql-rVzFXLq3.js 1.48 kB │ gzip: 0.82 kB +dist/assets/ini-BEwlwnbL.js 1.53 kB │ gzip: 0.50 kB +dist/assets/fortran-fixed-form-CkoXwp7k.js 1.67 kB │ gzip: 0.69 kB +dist/assets/railroadDiagram-AXF67PYL-C3ytuEAu.js 1.74 kB │ gzip: 0.82 kB +dist/assets/docker-BcOcwvcX.js 1.74 kB │ gzip: 0.60 kB +dist/assets/hxml-Bvhsp5Yf.js 1.74 kB │ gzip: 0.88 kB +dist/assets/desktop-BmXAJ9_W.js 1.83 kB │ gzip: 0.76 kB +dist/assets/chunk-2GRJ4B5K-Di71AH5G.js 1.92 kB │ gzip: 0.85 kB +dist/assets/abnfDiagram-N423BO3Z-C5xWdNqP.js 1.94 kB │ gzip: 0.95 kB +dist/assets/PdfCitation-Dl-_NvBL.js 2.02 kB │ gzip: 0.95 kB +dist/assets/pegDiagram-VL7TDLO6-Cepz3zJl.js 2.09 kB │ gzip: 0.99 kB +dist/assets/ebnfDiagram-BXEA7PRR-e6lJ4fZw.js 2.14 kB │ gzip: 0.94 kB +dist/assets/wenyan-BV7otONQ.js 2.16 kB │ gzip: 1.09 kB +dist/assets/jssm-C2t-YnRu.js 2.24 kB │ gzip: 0.62 kB +dist/assets/reg-C-SQnVFl.js 2.35 kB │ gzip: 0.70 kB +dist/assets/edge-BkV0erSs.js 2.36 kB │ gzip: 0.70 kB +dist/assets/diff-D97Zzqfu.js 2.57 kB │ gzip: 0.70 kB +dist/assets/gleam-BspZqrRM.js 2.58 kB │ gzip: 0.82 kB +dist/assets/erb-B12qg9BL.js 2.61 kB │ gzip: 0.84 kB +dist/assets/vegaLite.client-DyLKQsB8.js 2.62 kB │ gzip: 1.32 kB +dist/assets/hy-DFXneXwc.js 2.65 kB │ gzip: 1.18 kB +dist/assets/json-Cp-IABpG.js 2.82 kB │ gzip: 0.78 kB +dist/assets/openscad-C4EeE6gA.js 2.82 kB │ gzip: 1.01 kB +dist/assets/log-2UxHyX5q.js 2.85 kB │ gzip: 0.90 kB +dist/assets/cairo-KRGpt6FW.js 2.94 kB │ gzip: 0.81 kB +dist/assets/berry-uYugtg8r.js 3.01 kB │ gzip: 0.81 kB +dist/assets/jsonl-DcaNXYhu.js 3.01 kB │ gzip: 0.79 kB +dist/assets/jsonc-Des-eS-w.js 3.11 kB │ gzip: 0.80 kB +dist/assets/logo-BtOb2qkB.js 3.13 kB │ gzip: 1.47 kB +dist/assets/po-BTJTHyun.js 3.24 kB │ gzip: 0.91 kB +dist/assets/json5-C9tS-k6U.js 3.25 kB │ gzip: 0.83 kB +dist/assets/mipsasm-CKIfxQSi.js 3.26 kB │ gzip: 1.18 kB +dist/assets/tasl-QIJgUcNo.js 3.29 kB │ gzip: 0.85 kB +dist/assets/genie-D0YGMca9.js 3.36 kB │ gzip: 1.21 kB +dist/assets/rel-C3B-1QV4.js 3.37 kB │ gzip: 1.11 kB +dist/assets/vala-CsfeWuGM.js 3.37 kB │ gzip: 1.19 kB +dist/assets/arc-BNTOC954.js 3.42 kB │ gzip: 1.46 kB +dist/assets/splunk-BtCnVYZw.js 3.44 kB │ gzip: 1.52 kB +dist/assets/fluent-C4IJs8-o.js 3.61 kB │ gzip: 0.90 kB +dist/assets/ssh-config-_ykCGR6B.js 3.62 kB │ gzip: 1.60 kB +dist/assets/jsonnet-DFQXde-d.js 3.62 kB │ gzip: 1.05 kB +dist/assets/kdl-DV7GczEv.js 3.63 kB │ gzip: 1.04 kB +dist/assets/glsl-DplSGwfg.js 3.63 kB │ gzip: 1.41 kB +dist/assets/hurl-irOxFIW8.js 3.65 kB │ gzip: 1.16 kB +dist/assets/narrat-DRg8JJMk.js 3.67 kB │ gzip: 1.11 kB +dist/assets/turtle-BsS91CYL.js 3.70 kB │ gzip: 0.98 kB +dist/assets/zenscript-DVFEvuxE.js 3.91 kB │ gzip: 1.28 kB +dist/assets/ron-D8l8udqQ.js 3.91 kB │ gzip: 0.98 kB +dist/assets/gn-n2N0HUVH.js 4.00 kB │ gzip: 1.49 kB +dist/assets/pascal-D93ZcfNL.js 4.15 kB │ gzip: 1.67 kB +dist/assets/diagram-LBJQPF4R-Cqa_DIDo.js 4.38 kB │ gzip: 1.92 kB +dist/assets/tcl-dwOrl1Do.js 4.43 kB │ gzip: 1.52 kB +dist/assets/nextflow-Zz6hmt5N.js 4.51 kB │ gzip: 1.17 kB +dist/assets/rosmsg-BJDFO7_C.js 4.52 kB │ gzip: 1.06 kB +dist/assets/http-jrhK8wxY.js 4.55 kB │ gzip: 1.12 kB +dist/assets/polar-C0HS_06l.js 4.67 kB │ gzip: 1.12 kB +dist/assets/defaultLocale-CzDG__Ur.js 4.70 kB │ gzip: 2.19 kB +dist/assets/sdbl-DVxCFoDh.js 4.70 kB │ gzip: 2.01 kB +dist/assets/fennel-BYunw83y.js 4.77 kB │ gzip: 1.53 kB +dist/assets/bibtex-CHM0blh-.js 4.80 kB │ gzip: 0.83 kB +dist/assets/linear-D_qmF9Am.js 4.82 kB │ gzip: 2.00 kB +dist/assets/index-DVBvMn51.js 4.86 kB │ gzip: 1.93 kB +dist/assets/main-DfI79bPM.js 4.93 kB │ gzip: 2.12 kB +dist/assets/llvm-DjAJT7YJ.js 5.05 kB │ gzip: 2.01 kB +dist/assets/map-Czzmt4hB.js 5.07 kB │ gzip: 2.07 kB +dist/assets/OpsPanel-Cv44ppUZ.js 5.11 kB │ gzip: 1.80 kB +dist/assets/wgsl-Dx-B1_4e.js 5.14 kB │ gzip: 1.39 kB +dist/assets/gdresource-BOOCDP_w.js 5.29 kB │ gzip: 1.34 kB +dist/assets/qml-3beO22l8.js 5.34 kB │ gzip: 1.38 kB +dist/assets/zig-VOosw3JB.js 5.34 kB │ gzip: 1.55 kB +dist/assets/dax-CEL-wOlO.js 5.37 kB │ gzip: 2.23 kB +dist/assets/infographic.client-CrhtzGAz.js 5.38 kB │ gzip: 2.42 kB +dist/assets/bicep-Bmn6On1c.js 5.38 kB │ gzip: 1.15 kB +dist/assets/xml-sdJ4AIDG.js 5.38 kB │ gzip: 1.21 kB +dist/assets/awk-DMzUqQB5.js 5.46 kB │ gzip: 1.38 kB +dist/assets/coq-DkFqJrB1.js 5.53 kB │ gzip: 1.92 kB +dist/assets/jinja-4LBKfQ-Z.js 5.69 kB │ gzip: 1.40 kB +dist/assets/lean-BZvkOJ9d.js 5.78 kB │ gzip: 1.92 kB +dist/assets/moonbit-_H4v1dQx.js 5.90 kB │ gzip: 1.68 kB +dist/assets/powerquery-CEu0bR-o.js 5.90 kB │ gzip: 1.52 kB +dist/assets/shaderlab-Dg9Lc6iA.js 5.92 kB │ gzip: 2.08 kB +dist/assets/verilog-BQ8w6xss.js 5.93 kB │ gzip: 1.89 kB +dist/assets/cypher-COkxafJQ.js 5.96 kB │ gzip: 1.73 kB +dist/assets/vb-D17OF-Vu.js 6.09 kB │ gzip: 2.34 kB +dist/assets/red-bN70gL4F.js 6.26 kB │ gzip: 1.60 kB +dist/assets/min-dark-CafNBF8u.js 6.29 kB │ gzip: 1.71 kB +dist/assets/structuredDiagram.client-B0g9-ub2.js 6.29 kB │ gzip: 2.65 kB +dist/assets/gdshader-DkwncUOv.js 6.33 kB │ gzip: 1.73 kB +dist/assets/prisma-Dd19v3D-.js 6.33 kB │ gzip: 1.39 kB +dist/assets/diagram-UB23O5K3-BavEiXTI.js 6.36 kB │ gzip: 2.74 kB +dist/assets/ara-BRHolxvo.js 6.36 kB │ gzip: 1.81 kB +dist/assets/clojure-P80f7IUj.js 6.41 kB │ gzip: 1.42 kB +dist/assets/postcss-CXtECtnM.js 6.42 kB │ gzip: 1.91 kB +dist/assets/toml-vGWfd6FD.js 6.43 kB │ gzip: 1.28 kB +dist/assets/solarized-light-L9t79GZl.js 6.48 kB │ gzip: 1.73 kB +dist/assets/pieDiagram-7S7Q4E2Y-h1HEDu6b.js 6.49 kB │ gzip: 2.72 kB +dist/assets/r-Dspwwk_N.js 6.54 kB │ gzip: 1.78 kB +dist/assets/proto-C7zT0LnQ.js 6.55 kB │ gzip: 1.42 kB +dist/assets/smalltalk-BERRCDM3.js 6.59 kB │ gzip: 1.62 kB +dist/assets/talonscript-CkByrt1z.js 6.76 kB │ gzip: 1.49 kB +dist/assets/solarized-dark-DXbdFlpD.js 6.85 kB │ gzip: 1.80 kB +dist/assets/riscv-BM1_JUlF.js 6.91 kB │ gzip: 1.98 kB +dist/assets/min-light-CTRr51gU.js 6.97 kB │ gzip: 1.89 kB +dist/assets/soy-Brmx7dQM.js 6.98 kB │ gzip: 1.66 kB +dist/assets/scheme-C98Dy4si.js 7.17 kB │ gzip: 2.05 kB +dist/assets/chunk-RYQCIY6F-BW2ILQH7.js 7.18 kB │ gzip: 2.77 kB +dist/assets/hlsl-D3lLCCz7.js 7.26 kB │ gzip: 2.19 kB +dist/assets/qss-IeuSbFQv.js 7.47 kB │ gzip: 2.58 kB +dist/assets/dart-CF10PKvl.js 7.81 kB │ gzip: 1.91 kB +dist/assets/systemd-4A_iFExJ.js 7.87 kB │ gzip: 2.55 kB +dist/assets/monokai-D4h5O-jR.js 7.88 kB │ gzip: 1.91 kB +dist/assets/regexp-CDVJQ6XC.js 7.99 kB │ gzip: 1.42 kB +dist/assets/haml-B8DHNrY2.js 8.26 kB │ gzip: 1.81 kB +dist/assets/typst-DHCkPAjA.js 8.39 kB │ gzip: 1.67 kB +dist/assets/vue-html-AaS7Mt5G.js 8.47 kB │ gzip: 1.68 kB +dist/assets/plsql-ChMvpjG-.js 8.51 kB │ gzip: 3.00 kB +dist/assets/diagram-7IWD3JNH-DepauWqw.js 8.61 kB │ gzip: 3.83 kB +dist/assets/horizon-BUw7H-hv.js 8.78 kB │ gzip: 1.96 kB +dist/assets/kotlin-BdnUsdx6.js 8.79 kB │ gzip: 2.13 kB +dist/assets/horizon-bright-Cn-bp-IR.js 8.79 kB │ gzip: 1.97 kB +dist/assets/ts-tags-zn1MmPIZ.js 8.95 kB │ gzip: 1.22 kB +dist/assets/make-CHLpvVh8.js 8.96 kB │ gzip: 1.77 kB +dist/assets/andromeeda-C4gqWexZ.js 9.02 kB │ gzip: 2.36 kB +dist/assets/dagre-VZM6K2ZE-BkQKlFy1.js 9.03 kB │ gzip: 3.46 kB +dist/assets/sas-cz2c8ADy.js 9.06 kB │ gzip: 3.81 kB +dist/assets/dark-plus-C3mMm8J8.js 9.10 kB │ gzip: 2.10 kB +dist/assets/slack-dark-BthQWCQV.js 9.12 kB │ gzip: 1.97 kB +dist/assets/sass-Cj5Yp3dK.js 9.29 kB │ gzip: 2.49 kB +dist/assets/plastic-3e1v2bzS.js 9.30 kB │ gzip: 1.98 kB +dist/assets/slack-ochin-DqwNpetd.js 9.43 kB │ gzip: 2.10 kB +dist/assets/tex-idrVyKtj.js 9.67 kB │ gzip: 3.06 kB +dist/assets/jison-wvAkD_A8.js 9.69 kB │ gzip: 1.85 kB +dist/assets/cmake-D1j8_8rp.js 9.86 kB │ gzip: 3.37 kB +dist/assets/light-plus-B7mTdjB0.js 9.94 kB │ gzip: 2.27 kB +dist/assets/hcl-BWvSN4gD.js 10.05 kB │ gzip: 1.93 kB +dist/assets/cynefinDiagram-MW4NZA55-DkXHVoNO.js 10.23 kB │ gzip: 3.69 kB +dist/assets/pkl-u5AG7uiY.js 10.37 kB │ gzip: 1.38 kB +dist/assets/beancount-k_qm7-4y.js 10.37 kB │ gzip: 1.44 kB +dist/assets/nextflow-groovy-BeH2EWoN.js 10.41 kB │ gzip: 2.13 kB +dist/assets/dream-maker-BtqSS_iP.js 10.47 kB │ gzip: 2.25 kB +dist/assets/raku-DXvB9xmW.js 10.47 kB │ gzip: 2.94 kB +dist/assets/yaml-Buea-lGh.js 10.51 kB │ gzip: 2.27 kB +dist/assets/stateDiagram-OKZ733FA-DvqK4U94.js 10.56 kB │ gzip: 3.71 kB +dist/assets/rst-BrH8l1NY.js 10.67 kB │ gzip: 2.42 kB +dist/assets/diagram-B4RE2ZJO-D73ODiJp.js 10.96 kB │ gzip: 4.23 kB +dist/assets/elm-DbKCFpqz.js 10.97 kB │ gzip: 2.12 kB +dist/assets/just-Cw27pwNe.js 11.16 kB │ gzip: 2.78 kB +dist/assets/github-light-DAi9KRSo.js 11.18 kB │ gzip: 2.51 kB +dist/assets/prolog-CbFg5uaA.js 11.36 kB │ gzip: 3.83 kB +dist/assets/terraform-BETggiCN.js 11.39 kB │ gzip: 2.51 kB +dist/assets/github-dark-DHJKELXO.js 11.41 kB │ gzip: 2.55 kB +dist/assets/puppet-BMWR74SV.js 11.44 kB │ gzip: 2.11 kB +dist/assets/diagram-Q27KOJAE-D68pJNBd.js 11.47 kB │ gzip: 4.07 kB +dist/assets/laserwave-DUszq2jm.js 11.50 kB │ gzip: 2.58 kB +dist/assets/convex-vendor-BdEFRSg5.js 11.69 kB │ gzip: 4.41 kB +dist/assets/gherkin-DyxjwDmM.js 11.95 kB │ gzip: 5.05 kB +dist/assets/wasm-MzD3tlZU.js 12.01 kB │ gzip: 2.19 kB +dist/assets/hjson-D5-asLiD.js 12.05 kB │ gzip: 1.64 kB +dist/assets/handlebars-BL8al0AC.js 12.15 kB │ gzip: 2.38 kB +dist/assets/deckPptxExport-a5Ky08C2.js 12.45 kB │ gzip: 3.39 kB +dist/assets/apache-Pmp26Uib.js 12.46 kB │ gzip: 3.72 kB +dist/assets/index-DvbDVNBX.js 12.52 kB │ gzip: 4.88 kB +dist/assets/vesper-DU1UobuO.js 12.69 kB │ gzip: 1.97 kB +dist/assets/bat-BkioyH1T.js 12.89 kB │ gzip: 3.22 kB +dist/assets/fish-BvzEVeQv.js 13.04 kB │ gzip: 1.74 kB +dist/assets/v-BcVCzyr7.js 13.21 kB │ gzip: 2.74 kB +dist/assets/vitesse-light-CVO1_9PV.js 13.62 kB │ gzip: 3.04 kB +dist/assets/aurora-x-D-2ljcwZ.js 13.66 kB │ gzip: 2.28 kB +dist/assets/vitesse-black-Bkuqu6BP.js 13.68 kB │ gzip: 3.06 kB +dist/assets/vitesse-dark-D0r3Knsf.js 13.76 kB │ gzip: 3.06 kB +dist/assets/pug-CGlum2m_.js 13.84 kB │ gzip: 2.58 kB +dist/assets/luau-C-HG3fhB.js 13.96 kB │ gzip: 3.18 kB +dist/assets/synthwave-84-CbfX1IO0.js 14.04 kB │ gzip: 2.87 kB +dist/assets/github-light-default-D7oLnXFd.js 14.16 kB │ gzip: 3.04 kB +dist/assets/clarity-D53aC0YG.js 14.28 kB │ gzip: 2.46 kB +dist/assets/github-light-high-contrast-BfjtVDDH.js 14.28 kB │ gzip: 3.02 kB +dist/assets/github-dark-dimmed-DH5Ifo-i.js 14.43 kB │ gzip: 3.13 kB +dist/assets/github-dark-default-Cuk6v7N8.js 14.44 kB │ gzip: 3.13 kB +dist/assets/github-dark-high-contrast-E3gJ1_iC.js 14.60 kB │ gzip: 3.09 kB +dist/assets/gnuplot-DdkO51Og.js 14.78 kB │ gzip: 3.27 kB +dist/assets/rust-B1yitclQ.js 15.07 kB │ gzip: 2.72 kB +dist/assets/kusto-DZf3V79B.js 15.17 kB │ gzip: 3.92 kB +dist/assets/time-CF6dPw0p.js 15.18 kB │ gzip: 4.95 kB +dist/assets/actionscript-3-CoDkCxhg.js 15.21 kB │ gzip: 2.66 kB +dist/assets/nix-CwoSXNpI.js 15.51 kB │ gzip: 2.48 kB +dist/assets/lua-BaeVxFsk.js 15.54 kB │ gzip: 3.16 kB +dist/assets/chunk-6Q2QTUOP-BJu9QaCq.js 15.76 kB │ gzip: 4.43 kB +dist/assets/abap-BdImnpbu.js 15.85 kB │ gzip: 5.91 kB +dist/assets/solidity-rGO070M0.js 16.07 kB │ gzip: 3.11 kB +dist/assets/matlab-D7o27uSR.js 16.09 kB │ gzip: 3.06 kB +dist/assets/cue-D82EKSYY.js 16.20 kB │ gzip: 2.06 kB +dist/assets/elixir-CDX3lj18.js 16.32 kB │ gzip: 2.80 kB +dist/assets/odin-BBf5iR-q.js 16.51 kB │ gzip: 2.94 kB +dist/assets/bird2-DPOp833l.js 16.97 kB │ gzip: 3.85 kB +dist/assets/kanagawa-wave-DWedfzmr.js 17.12 kB │ gzip: 2.93 kB +dist/assets/kanagawa-lotus-CfQXZHmo.js 17.13 kB │ gzip: 2.93 kB +dist/assets/kanagawa-dragon-CkXjmgJE.js 17.13 kB │ gzip: 2.95 kB +dist/assets/move-IF9eRakj.js 17.51 kB │ gzip: 3.07 kB +dist/assets/ishikawaDiagram-WSZJBQD7-DFeoTXsT.js 17.70 kB │ gzip: 6.74 kB +dist/assets/graphql-ChdNCCLP.js 18.00 kB │ gzip: 2.52 kB +dist/assets/liquid-DYVedYrR.js 18.09 kB │ gzip: 3.16 kB +dist/assets/step-Cl5gnEYj.js 18.21 kB │ gzip: 3.84 kB +dist/assets/svelte-C_ipcX3V.js 18.24 kB │ gzip: 3.14 kB +dist/assets/material-theme-D5KoaKCx.js 18.62 kB │ gzip: 3.11 kB +dist/assets/material-theme-darker-BfHTSMKl.js 18.63 kB │ gzip: 3.11 kB +dist/assets/material-theme-ocean-CyktbL80.js 18.63 kB │ gzip: 3.14 kB +dist/assets/material-theme-lighter-B0m2ddpp.js 18.63 kB │ gzip: 3.11 kB +dist/assets/material-theme-palenight-Csfq5Kiy.js 18.64 kB │ gzip: 3.13 kB +dist/assets/gdscript-C5YyOfLZ.js 18.99 kB │ gzip: 3.75 kB +dist/assets/groovy-gcz8RCvz.js 19.18 kB │ gzip: 3.60 kB +dist/assets/mdc-BMNejdWA.js 19.63 kB │ gzip: 6.66 kB +dist/assets/glimmer-js-Rg0-pVw9.js 20.07 kB │ gzip: 2.95 kB +dist/assets/glimmer-ts-U6CK756n.js 20.07 kB │ gzip: 2.94 kB +dist/assets/ayu-dark-DYE7WIF3.js 20.08 kB │ gzip: 3.94 kB +dist/assets/ayu-mirage-32ctXXKs.js 20.09 kB │ gzip: 3.94 kB +dist/assets/powershell-Dpen1YoG.js 20.15 kB │ gzip: 4.07 kB +dist/assets/ayu-light-BA47KaF1.js 20.15 kB │ gzip: 3.93 kB +dist/assets/index-BMzSW53F.js 20.25 kB │ gzip: 7.30 kB +dist/assets/viml-CJc9bBzg.js 20.37 kB │ gzip: 6.73 kB +dist/assets/nushell-Cz2AlsmD.js 20.41 kB │ gzip: 5.22 kB +dist/assets/snazzy-light-Bw305WKR.js 20.77 kB │ gzip: 3.83 kB +dist/assets/kanban-definition-27J2QSJJ-CmHd5Glj.js 20.83 kB │ gzip: 7.35 kB +dist/assets/dracula-BzJJZx-M.js 21.07 kB │ gzip: 4.00 kB +dist/assets/dracula-soft-BXkSAIEj.js 21.08 kB │ gzip: 4.04 kB +dist/assets/PublicRoomPage-4DVXi3Kc.js 21.08 kB │ gzip: 6.51 kB +dist/assets/twig-DNn4PbVi.js 21.36 kB │ gzip: 3.87 kB +dist/assets/wit-5i3qLPDT.js 21.47 kB │ gzip: 2.89 kB +dist/assets/rose-pine-qdsjHGoJ.js 21.74 kB │ gzip: 3.87 kB +dist/assets/rose-pine-moon-D4_iv3hh.js 21.75 kB │ gzip: 3.89 kB +dist/assets/rose-pine-dawn-DHQR4-dF.js 21.75 kB │ gzip: 3.89 kB +dist/assets/InvestigationReport-fFt6-np0.js 21.90 kB │ gzip: 6.02 kB +dist/assets/nim-CVrawwO9.js 22.46 kB │ gzip: 3.16 kB +dist/assets/common-lisp-Cg-RD9OK.js 22.58 kB │ gzip: 6.06 kB +dist/assets/surrealql-Bq5Q-fJD.js 22.58 kB │ gzip: 4.32 kB +dist/assets/gruvbox-dark-hard-CFHQjOhq.js 22.63 kB │ gzip: 4.18 kB +dist/assets/gruvbox-dark-soft-CVdnzihN.js 22.63 kB │ gzip: 4.17 kB +dist/assets/gruvbox-light-hard-CH1njM8p.js 22.64 kB │ gzip: 4.18 kB +dist/assets/gruvbox-light-soft-hJgmCMqR.js 22.64 kB │ gzip: 4.18 kB +dist/assets/gruvbox-dark-medium-GsRaNv29.js 22.64 kB │ gzip: 4.18 kB +dist/assets/gruvbox-light-medium-DRw_LuNl.js 22.64 kB │ gzip: 4.18 kB +dist/assets/sql-BLtJtn59.js 23.41 kB │ gzip: 7.40 kB +dist/assets/sankeyDiagram-W5VNT64P-CslkT_yU.js 23.47 kB │ gzip: 8.62 kB +dist/assets/cadence-Bv_4Rxtq.js 23.67 kB │ gzip: 3.67 kB +dist/assets/journeyDiagram-NVQOT4AX-BPteGnmz.js 23.71 kB │ gzip: 8.41 kB +dist/assets/mindmap-definition-FAOFIHXS-CZlMeQTi.js 23.77 kB │ gzip: 8.06 kB +dist/assets/graph-C9eacEi8.js 23.95 kB │ gzip: 8.32 kB +dist/assets/astro-CbQHKStN.js 24.01 kB │ gzip: 7.54 kB +dist/assets/typespec-BGHnOYBU.js 24.02 kB │ gzip: 2.59 kB +dist/assets/apl-dKokRX4l.js 24.04 kB │ gzip: 4.20 kB +dist/assets/templ-P3uqSqPl.js 24.06 kB │ gzip: 5.40 kB +dist/assets/vhdl-CeAyd5Ju.js 24.26 kB │ gzip: 3.87 kB +dist/assets/angular-html-CU67Zn6k.js 24.29 kB │ gzip: 4.01 kB +dist/assets/vue-DN_0RTcg.js 24.48 kB │ gzip: 2.97 kB +dist/assets/purescript-CklMAg4u.js 24.69 kB │ gzip: 3.25 kB +dist/assets/one-light-C3Wv6jpd.js 25.30 kB │ gzip: 3.67 kB +dist/assets/fsharp-CXgrBDvD.js 25.31 kB │ gzip: 4.13 kB +dist/assets/marko-CnJfTvn9.js 25.48 kB │ gzip: 3.59 kB +dist/assets/c3-eo99z4R2.js 25.63 kB │ gzip: 3.87 kB +dist/assets/night-owl-light-CMTm3GFP.js 25.90 kB │ gzip: 4.26 kB +dist/assets/system-verilog-CnnmHF94.js 26.20 kB │ gzip: 4.85 kB +dist/assets/wardleyDiagram-T6FBY63Y-Dyr7Pran.js 26.23 kB │ gzip: 7.00 kB +dist/assets/drawio.client-BONxGk44.js 26.40 kB │ gzip: 9.73 kB +dist/assets/nord-Ddv68eIx.js 26.72 kB │ gzip: 4.40 kB +dist/assets/codeql-DsOJ9woJ.js 26.88 kB │ gzip: 3.79 kB +dist/assets/scss-OYdSNvt2.js 27.20 kB │ gzip: 4.20 kB +dist/assets/java-CylS5w8V.js 27.22 kB │ gzip: 4.26 kB +dist/assets/erDiagram-JOGREHBK-CFYjWU4S.js 27.35 kB │ gzip: 9.51 kB +dist/assets/coffee-Ch7k5sss.js 27.42 kB │ gzip: 6.35 kB +dist/assets/razor-Uh8Bk_45.js 27.51 kB │ gzip: 3.57 kB +dist/assets/scala-C151Ov-r.js 28.88 kB │ gzip: 3.94 kB +dist/assets/night-owl-C39BiMTA.js 28.91 kB │ gzip: 5.16 kB +dist/assets/crystal-tKQVLTB8.js 29.39 kB │ gzip: 4.44 kB +dist/assets/mermaid-mWjccvbQ.js 29.51 kB │ gzip: 3.66 kB +dist/assets/applescript-Co6uUVPk.js 29.57 kB │ gzip: 5.93 kB +dist/assets/gitGraphDiagram-DS77QQ5N-evOar-L7.js 30.07 kB │ gzip: 8.94 kB +dist/assets/semanticGraph-CTg4iCsn.js 30.51 kB │ gzip: 8.95 kB +dist/assets/layout-DEXfKzaS.js 31.00 kB │ gzip: 11.19 kB +dist/assets/julia-CxzCAyBv.js 31.07 kB │ gzip: 4.33 kB +dist/assets/stylus-BEDo0Tqx.js 31.07 kB │ gzip: 7.99 kB +dist/assets/requirementDiagram-LRYGKXZP-hZPvV5fI.js 31.34 kB │ gzip: 9.88 kB +dist/assets/timeline-definition-Z64GVDOM-7q6s0E18.js 31.48 kB │ gzip: 10.49 kB +dist/assets/poimandres-CS3Unz2-.js 33.49 kB │ gzip: 5.50 kB +dist/assets/one-dark-pro-DVMEJ2y_.js 33.79 kB │ gzip: 5.52 kB +dist/assets/bsl-BO_Y6i37.js 33.87 kB │ gzip: 8.35 kB +dist/assets/quadrantDiagram-CIZ2JOQS-BJ8EgoRf.js 34.63 kB │ gzip: 10.19 kB +dist/assets/haxe-CzTSHFRz.js 35.16 kB │ gzip: 5.91 kB +dist/assets/nginx-BpAMiNFr.js 35.37 kB │ gzip: 4.43 kB +dist/assets/houston-DnULxvSX.js 35.42 kB │ gzip: 5.78 kB +dist/assets/tokyo-night-hegEt444.js 35.67 kB │ gzip: 6.24 kB +dist/assets/erlang-DsQrWhSR.js 37.48 kB │ gzip: 4.40 kB +dist/assets/chunk-5RXB4S5H-QIkJ3mgq.js 38.66 kB │ gzip: 12.70 kB +dist/assets/RoomTour-B3ofJfEV.js 39.04 kB │ gzip: 12.84 kB +dist/assets/cobol-nwyudZeR.js 39.15 kB │ gzip: 10.87 kB +dist/assets/asm-D_Q5rh1f.js 40.72 kB │ gzip: 8.21 kB +dist/assets/shellscript-Yzrsuije.js 41.48 kB │ gzip: 6.09 kB +dist/assets/haskell-Df6bDoY_.js 41.49 kB │ gzip: 6.44 kB +dist/assets/xychartDiagram-ELKLHX3M-QuMVaLQv.js 41.96 kB │ gzip: 12.04 kB +dist/assets/vennDiagram-T6HMQDX7-Dh8nteQS.js 42.51 kB │ gzip: 15.87 kB +dist/assets/perl-C0TMdlhV.js 43.16 kB │ gzip: 4.67 kB +dist/assets/d-85-TOEBH.js 43.80 kB │ gzip: 8.47 kB +dist/assets/ruby-Dw2BHqvy.js 45.95 kB │ gzip: 5.68 kB +dist/assets/go-CxLEBnE3.js 46.81 kB │ gzip: 5.18 kB +dist/assets/icons-vendor-VKpO2iRi.js 46.82 kB │ gzip: 8.96 kB +dist/assets/apex-D8_7TLub.js 46.99 kB │ gzip: 6.77 kB +dist/assets/catppuccin-mocha-D87Tk5Gz.js 47.26 kB │ gzip: 8.00 kB +dist/assets/catppuccin-latte-C9dUb6Cb.js 47.26 kB │ gzip: 8.00 kB +dist/assets/catppuccin-frappe-DFWUc33u.js 47.26 kB │ gzip: 8.02 kB +dist/assets/catppuccin-macchiato-DQyhUUbL.js 47.26 kB │ gzip: 8.01 kB +dist/assets/ada-bCR0ucgS.js 48.08 kB │ gzip: 6.03 kB +dist/assets/css-DPfMkruS.js 49.02 kB │ gzip: 11.85 kB +dist/assets/chunk-GF5L2VYU-BOpHuU_v.js 49.34 kB │ gzip: 15.80 kB +dist/assets/imba-DGztddWO.js 49.93 kB │ gzip: 9.46 kB +dist/assets/ganttDiagram-PKOTCBZU-L8COplAR.js 52.68 kB │ gzip: 18.10 kB +dist/assets/types-BSuKp-ii.js 53.42 kB │ gzip: 12.20 kB +dist/assets/everforest-dark-BgDCqdQA.js 53.75 kB │ gzip: 8.42 kB +dist/assets/everforest-light-C8M2exoo.js 53.75 kB │ gzip: 8.42 kB +dist/assets/wikitext-BhOHFoWU.js 55.89 kB │ gzip: 4.76 kB +dist/assets/stata-BH5u7GGu.js 56.99 kB │ gzip: 12.36 kB +dist/assets/html-GMplVEZG.js 57.25 kB │ gzip: 11.69 kB +dist/assets/ballerina-BFfxhgS-.js 58.69 kB │ gzip: 8.15 kB +dist/assets/markdown-Cvjx9yec.js 59.34 kB │ gzip: 5.64 kB +dist/assets/flowDiagram-UKHOOZJN-CmmQ-9qt.js 61.44 kB │ gzip: 19.69 kB +dist/assets/TraceSurface-Ce9louCG.js 61.93 kB │ gzip: 19.44 kB +dist/assets/ocaml-C0hk2d4L.js 62.45 kB │ gzip: 5.02 kB +dist/assets/mojo-rZm6bMo-.js 69.80 kB │ gzip: 9.27 kB +dist/assets/python-B6aJPvgy.js 69.95 kB │ gzip: 9.13 kB +dist/assets/c4Diagram-5PPSVZJV-DC762kA5.js 70.11 kB │ gzip: 19.71 kB +dist/assets/c-BIGW1oBm.js 72.11 kB │ gzip: 10.51 kB +dist/assets/latex-CWtU0Tv5.js 72.64 kB │ gzip: 6.72 kB +dist/assets/vyper-CDx5xZoG.js 74.65 kB │ gzip: 10.74 kB +dist/assets/blockDiagram-VBNYF7ZC-frJfP_FX.js 75.27 kB │ gzip: 21.66 kB +dist/assets/hack-CaT9iCJl.js 80.24 kB │ gzip: 26.21 kB +dist/assets/cose-bilkent-JH36ORCC-DN328p1z.js 81.85 kB │ gzip: 22.55 kB +dist/assets/swift-D82vCrfD.js 86.69 kB │ gzip: 14.73 kB +dist/assets/fortran-free-form-BxgE0vQu.js 88.97 kB │ gzip: 11.27 kB +dist/assets/csharp-COcwbKMJ.js 89.69 kB │ gzip: 10.69 kB +dist/assets/racket-BqYA7rlc.js 92.39 kB │ gzip: 15.02 kB +dist/assets/less-B1dDrJ26.js 97.63 kB │ gzip: 14.70 kB +dist/assets/blade-D4QpJJKB.js 104.98 kB │ gzip: 28.20 kB +dist/assets/objective-c-DXmwc3jG.js 105.41 kB │ gzip: 23.33 kB +dist/assets/php-Dhbhpdrm.js 111.06 kB │ gzip: 28.52 kB +dist/assets/KnowledgeGraph-5vVU_NOr.js 117.25 kB │ gzip: 33.16 kB +dist/assets/sequenceDiagram-SI44F4Z6-Cltjxjh5.js 117.58 kB │ gzip: 31.34 kB +dist/assets/swimlanes-SLNWSIFB-BJzbIiL4.js 120.52 kB │ gzip: 44.08 kB +dist/assets/asciidoc-Ve4PFQV2.js 131.53 kB │ gzip: 9.34 kB +dist/assets/react-CRbEC-TR.js 132.12 kB │ gzip: 37.65 kB +dist/assets/mdx-Cmh6b_Ma.js 136.11 kB │ gzip: 23.35 kB +dist/assets/WorkArtifactsPanel-D_e0NkQ-.js 149.99 kB │ gzip: 43.94 kB +dist/assets/architectureDiagram-T3A2C74G-_GsCETVd.js 152.16 kB │ gzip: 43.29 kB +dist/assets/objective-cpp-CLxacb5B.js 171.97 kB │ gzip: 30.62 kB +dist/assets/javascript-wDzz0qaB.js 174.83 kB │ gzip: 16.51 kB +dist/assets/tsx-COt5Ahok.js 175.54 kB │ gzip: 16.51 kB +dist/assets/jsx-g9-lgVsj.js 177.79 kB │ gzip: 16.61 kB +dist/assets/typescript-BPQ3VLAy.js 181.08 kB │ gzip: 16.04 kB +dist/assets/angular-ts-BwZT4LLn.js 183.82 kB │ gzip: 16.63 kB +dist/assets/graph-vendor-Dz3KpPvp.js 186.11 kB │ gzip: 60.95 kB +dist/assets/vue-vine-CQOfvN7w.js 190.05 kB │ gzip: 17.98 kB +dist/assets/index-CNetDHp7.js 192.90 kB │ gzip: 62.50 kB +dist/assets/react-vendor-Ba019tNT.js 194.40 kB │ gzip: 60.78 kB +dist/assets/MobileRoot-CavR3dmJ.js 239.46 kB │ gzip: 67.59 kB +dist/assets/katex-C5jXJg4s.js 261.33 kB │ gzip: 77.57 kB +dist/assets/wolfram-lXgVvXCa.js 262.39 kB │ gzip: 77.14 kB +dist/assets/index-TeonLBog.js 279.30 kB │ gzip: 90.23 kB +dist/assets/editor-vendor-CE6Sek4k.js 400.39 kB │ gzip: 127.48 kB +dist/assets/cytoscape.esm-DTSO7Bv0.js 443.72 kB │ gzip: 142.36 kB +dist/assets/vega.module-CiZgPkdT.js 448.42 kB │ gzip: 162.47 kB +dist/assets/pdf-vendor-BRfqYs8T.js 462.90 kB │ gzip: 136.83 kB +dist/assets/mermaid.core-DU80g2JW.js 580.71 kB │ gzip: 136.54 kB +dist/assets/wasm-CG6Dc4jp.js 622.34 kB │ gzip: 230.29 kB +dist/assets/cpp-CofmeUqb.js 626.08 kB │ gzip: 44.82 kB +dist/assets/cynefin-VYW2F7L2-aX9XjdNe.js 690.83 kB │ gzip: 155.11 kB +dist/assets/emacs-lisp-C9XAeP06.js 779.85 kB │ gzip: 196.03 kB +dist/assets/workbook-vendor-CUPSAa_W.js 1,037.65 kB │ gzip: 300.38 kB +dist/assets/mermaid-GHXKKRXX-mofioVct.js 1,911.91 kB │ gzip: 586.48 kB + +(!) Some chunks are larger than 1100 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 1m 23s +{"status":"pass","entries":["index.html"],"expectedSha":"034a8f963dfa037d860f5364032319506be3e2e0"} diff --git a/evidence/desktop-account-20260905/operator/before-current-dist-bindings.json b/evidence/desktop-account-20260905/operator/before-current-dist-bindings.json new file mode 100644 index 00000000..fe30cedc --- /dev/null +++ b/evidence/desktop-account-20260905/operator/before-current-dist-bindings.json @@ -0,0 +1,2381 @@ +{ + "archive": "before-current-dist.zip", + "sha256": "bbe97176b7eb84b4e117c180b3dbe7141cd62a33193cc762e563ac9d1678f98f", + "files": [ + { + "path": ".well-known/agent-ui.json", + "bytes": 9929, + "sha256": "380ee1ba3f174029ad94df9e2f37510acedb1c7b7f174135ad062146f3394062" + }, + { + "path": "assets/abap-BdImnpbu.js", + "bytes": 15852, + "sha256": "d0a7972c37e141f01cc3aaf9aabbbb3e87c4778b9fdd3ccb575d1e1ff279c0fc" + }, + { + "path": "assets/abnfDiagram-N423BO3Z-C5xWdNqP.js", + "bytes": 1941, + "sha256": "8d11e5ff102885acf6550763adb2915d3a0de2a4f4c3cc5992770e59e7b1517c" + }, + { + "path": "assets/actionscript-3-CoDkCxhg.js", + "bytes": 15205, + "sha256": "cc3e3792f3b16d9244f17680e20712184eac64175649df8add097ca3be123c84" + }, + { + "path": "assets/ada-bCR0ucgS.js", + "bytes": 48082, + "sha256": "fc5d05054dc584a01ec795083de1774ef07f3a29fc6cfbc1902c208a09862313" + }, + { + "path": "assets/ai-elements-DlCQiZA9.css", + "bytes": 49553, + "sha256": "454ac1fc7db8694834ba1ff2220fb60d6f0cc6556d765fcb03e9331b54f21917" + }, + { + "path": "assets/andromeeda-C4gqWexZ.js", + "bytes": 9015, + "sha256": "7fcfeda6c4e4d7cc1ce1c72aaca6d802bc7e107858bf0d34eca95ff4223669bd" + }, + { + "path": "assets/angular-html-CU67Zn6k.js", + "bytes": 24287, + "sha256": "8b8969f7cdcc7690bbf9a1c6421e3c823293438e7f2261c43fe8b72e33a7ce88" + }, + { + "path": "assets/angular-ts-BwZT4LLn.js", + "bytes": 183820, + "sha256": "635b4186a60332a7951ec43858e8b0020e08e4c36127f2b1885e1070de7f1b5c" + }, + { + "path": "assets/apache-Pmp26Uib.js", + "bytes": 12456, + "sha256": "35abb1e73308f0f43a4f76af3a4c1157bf524cbfb2908581305f6fb1cf743b24" + }, + { + "path": "assets/apex-D8_7TLub.js", + "bytes": 46985, + "sha256": "9dfc38d42bc443b42f6bb4ddc6fa16c6634977292fd5e9d1e5e0b74fcd480f80" + }, + { + "path": "assets/apl-dKokRX4l.js", + "bytes": 24039, + "sha256": "56e152c88b86ed1488ff5851bdd9fe9a5b7e92d4e0dc66fe96ceba395181cc89" + }, + { + "path": "assets/applescript-Co6uUVPk.js", + "bytes": 29571, + "sha256": "e681551fbe1ac7d862ad06eae5833e6a32871de76532de01b27c5004c71c79df" + }, + { + "path": "assets/ara-BRHolxvo.js", + "bytes": 6362, + "sha256": "f3c7f066af4d1907c2249c7089ae8b763d88ad2f25e88f867f20e3dbb256cffb" + }, + { + "path": "assets/arc-BNTOC954.js", + "bytes": 3418, + "sha256": "10f3f00d370afc5d0a15178b74e47b7fee0623f48c7625f2e24a112b80a15d09" + }, + { + "path": "assets/architectureDiagram-T3A2C74G-_GsCETVd.js", + "bytes": 152155, + "sha256": "24c06567fdf09f7543e0fa160d260d16733b68a3c8ae37bf10ce1b317685febe" + }, + { + "path": "assets/asciidoc-Ve4PFQV2.js", + "bytes": 131527, + "sha256": "31a90af692b01a0eb491b19725d0abe705a13cf6baf2cef9de85467aab4b2b0c" + }, + { + "path": "assets/asm-D_Q5rh1f.js", + "bytes": 40717, + "sha256": "a43218a06da8dd93a8dd3c2b458479674d973079fe18922fe556dafa17be50a9" + }, + { + "path": "assets/astro-CbQHKStN.js", + "bytes": 24008, + "sha256": "1ba34d62178b804e9c49cbe8f7c45c349c8e9cd701ccad01c655b8db87a93f96" + }, + { + "path": "assets/aurora-x-D-2ljcwZ.js", + "bytes": 13659, + "sha256": "e47c699d4515a3e898860e171aa49e276c80d475e49d57ec002afdccdd760781" + }, + { + "path": "assets/awk-DMzUqQB5.js", + "bytes": 5461, + "sha256": "ff7d9aed38679838b5bbaae495275ae2e8fc5215811062e4eef19f6f786089cb" + }, + { + "path": "assets/ayu-dark-DYE7WIF3.js", + "bytes": 20081, + "sha256": "7a9244f8489f4c2f8d98500f3b9d33bf84d934cde79120ddd1de6078b8c9dbc1" + }, + { + "path": "assets/ayu-light-BA47KaF1.js", + "bytes": 20152, + "sha256": "3bfa9a52cf22931b3f65091b27f150d07deba32f82ec02488e36a4a24fe8ae31" + }, + { + "path": "assets/ayu-mirage-32ctXXKs.js", + "bytes": 20085, + "sha256": "93f93dd14750e6e3453f99e549701050a9ca11ead2186befb232bb7bc6a173d1" + }, + { + "path": "assets/ballerina-BFfxhgS-.js", + "bytes": 58693, + "sha256": "148a30bb0b51d5e1f00536337facfc90f70e659b3310d5875fc6d8db62c98f0c" + }, + { + "path": "assets/bat-BkioyH1T.js", + "bytes": 12888, + "sha256": "132a59df54049c90dfab94c0a95eae938352a227a86ad53d37bcabc8be4b13ef" + }, + { + "path": "assets/beancount-k_qm7-4y.js", + "bytes": 10373, + "sha256": "62cf81ef2432aa71aba4a8559e5c5970ce13576b19db0d75c421de19f0a662c6" + }, + { + "path": "assets/berry-uYugtg8r.js", + "bytes": 3005, + "sha256": "6f2394fb74b945c92dea425f90c70222f319b72a6dd9c093a7e32ebfdf60d026" + }, + { + "path": "assets/bibtex-CHM0blh-.js", + "bytes": 4795, + "sha256": "0a3dd8093d3aa1baaad2d1d98ecbf09c7f093517baee20e4d8e7de768c8dca37" + }, + { + "path": "assets/bicep-Bmn6On1c.js", + "bytes": 5382, + "sha256": "77925b291b8d048086f7fd14d23fa4ab0a4831551b1e9512c035948cfab402ee" + }, + { + "path": "assets/bird2-DPOp833l.js", + "bytes": 16968, + "sha256": "13099dd59c5fc002eeafc5275ca7f741d08de1c36c63ffeb4b3273822dce7794" + }, + { + "path": "assets/blade-D4QpJJKB.js", + "bytes": 104981, + "sha256": "b90446141cc91956721af5d8aef50fd0819e6af63bdb5cc5818c612c41d957a3" + }, + { + "path": "assets/blockDiagram-VBNYF7ZC-frJfP_FX.js", + "bytes": 75269, + "sha256": "3f63915cb2dae7fb84c6cde0c96368cad6dc3b76c804e8989297992763f963fa" + }, + { + "path": "assets/bsl-BO_Y6i37.js", + "bytes": 33867, + "sha256": "b9f7294b744652f494389fbdff06c427ea8a239a891647186c4ffe76779993a8" + }, + { + "path": "assets/c-BIGW1oBm.js", + "bytes": 72113, + "sha256": "d6cf83167ef5e3f3ce64b34b57082b5ad6824eba4970eae9a278ab9285c9f3d8" + }, + { + "path": "assets/c3-eo99z4R2.js", + "bytes": 25631, + "sha256": "d9cb0a3eb6e94d7f49445602ee073bf051042e6913129fb61a19f781ce952e80" + }, + { + "path": "assets/c4Diagram-5PPSVZJV-DC762kA5.js", + "bytes": 70107, + "sha256": "89aa94395dbe853fa2ba5eeb7c4703ae612f3bef29e609d187c7abdc657cdd57" + }, + { + "path": "assets/cadence-Bv_4Rxtq.js", + "bytes": 23669, + "sha256": "eb6ab19c5a35cd1da0a04c8a01c5be50284f5655462475a7f8656a32075de3df" + }, + { + "path": "assets/cairo-KRGpt6FW.js", + "bytes": 2936, + "sha256": "cb3ef520248905e08410aa414b326b0a1ad308ef13c23dc9741340ba5d1ba610" + }, + { + "path": "assets/catppuccin-frappe-DFWUc33u.js", + "bytes": 47258, + "sha256": "af29d7afc5c6014349681c54ab1e9ef49c368d7ed84cff5e864caff0a233d085" + }, + { + "path": "assets/catppuccin-latte-C9dUb6Cb.js", + "bytes": 47256, + "sha256": "621f81dbc7293ff13fd2b0085dc3a84d5d0dbc3bfca4c1414c9e59b4ac43b3e8" + }, + { + "path": "assets/catppuccin-macchiato-DQyhUUbL.js", + "bytes": 47263, + "sha256": "4b0c204a8d4775c3b97c90fd9ebdf8734bd8fb4d270f4eda4398997a75e72505" + }, + { + "path": "assets/catppuccin-mocha-D87Tk5Gz.js", + "bytes": 47255, + "sha256": "b10b92891fde2ac93b551d568f8ca2ce7deb12701a0cdab40d13ad1bc7cd6872" + }, + { + "path": "assets/channel-Bs3xekKy.js", + "bytes": 113, + "sha256": "e1cdc8cdc79e78745b0935da29b30ed0be9167bc40c0878e723cb45f052f1288" + }, + { + "path": "assets/chunk-2GRJ4B5K-Di71AH5G.js", + "bytes": 1923, + "sha256": "570cb642749ed401d09867cab532f7a2950f88134da4379a56a032aa003c089d" + }, + { + "path": "assets/chunk-2Q5K7J3B-DbIvYLQM.js", + "bytes": 193, + "sha256": "409b6b4b5ef9bc5f8f0b5a49f4b185202817099a4997a9e58e5ad1e1cd235541" + }, + { + "path": "assets/chunk-5RXB4S5H-QIkJ3mgq.js", + "bytes": 38663, + "sha256": "b06d4667295cde937d9ba7b56b5a62242b2fd17b40599bae7331c3f1d17b612a" + }, + { + "path": "assets/chunk-5VM5RSS4-wDObTWnN.js", + "bytes": 366, + "sha256": "c1fb452c484105835de64cbf2a3f45d1d188237cfe4e33887629c69a74d1da44" + }, + { + "path": "assets/chunk-6Q2QTUOP-BJu9QaCq.js", + "bytes": 15755, + "sha256": "576fdd44fab2a7735791032df7485e5564d94213d6304b56d155cfd80ba634f0" + }, + { + "path": "assets/chunk-GF5L2VYU-BOpHuU_v.js", + "bytes": 49340, + "sha256": "d6a6aac3c17e67333159e60d0a2a3e3d035fa10e6ff8326e734fafa5dd7e285a" + }, + { + "path": "assets/chunk-JWPE2WC7-yaU7urOn.js", + "bytes": 297, + "sha256": "27b93472e37805f701b303ac96b0693ed05ad4816be698c265cc33a7bfd207db" + }, + { + "path": "assets/chunk-KBJHAD2P-XFNcP8B8.js", + "bytes": 532, + "sha256": "b40f774060fc5cda765ff2238627517de53eb95de5ded11f460122f215ab3ea9" + }, + { + "path": "assets/chunk-RYQCIY6F-BW2ILQH7.js", + "bytes": 7181, + "sha256": "9937b20a342aaf90c850f0a5e534ae0918e8e3abf06ab07f143ef4ab199ad8f1" + }, + { + "path": "assets/chunk-XXDRQBXY-CtrdDOvR.js", + "bytes": 275, + "sha256": "97c6601921ce5fc8250f31e97a9fe533d6318507ece0547b1a328ef248182705" + }, + { + "path": "assets/clarity-D53aC0YG.js", + "bytes": 14275, + "sha256": "fb9051f589b58016a4aa61d4a5e54fd1495cc6ef104ea387971ce67df8ac8bcb" + }, + { + "path": "assets/classDiagram-JCYQIIEL-G8U2nA66.js", + "bytes": 599, + "sha256": "e24efed4ab2e1b3f3414b47b18ddb83299b0a4ba21e867827ac22d0cb6b84a2f" + }, + { + "path": "assets/classDiagram-v2-OCEON4UE-G8U2nA66.js", + "bytes": 599, + "sha256": "e24efed4ab2e1b3f3414b47b18ddb83299b0a4ba21e867827ac22d0cb6b84a2f" + }, + { + "path": "assets/clojure-P80f7IUj.js", + "bytes": 6413, + "sha256": "d84e3798038c4ac8cc2748cd8a7b606de826d38cda40fcd1af0157a2c205fad3" + }, + { + "path": "assets/cmake-D1j8_8rp.js", + "bytes": 9855, + "sha256": "20de18825679753afc48318521d760d4daea701c95137a58b7343f6ad6bed4f9" + }, + { + "path": "assets/cobol-nwyudZeR.js", + "bytes": 39148, + "sha256": "eaf6edc5d2a50ea8a6b21d857e035f60b7aae6860c71bd63258a0938dad94955" + }, + { + "path": "assets/codeowners-Bp6g37R7.js", + "bytes": 547, + "sha256": "748b547cc141abd1b350d2f2e3b0562606ffaf23e88bb89c8b4e7f7df3c425f7" + }, + { + "path": "assets/codeql-DsOJ9woJ.js", + "bytes": 26883, + "sha256": "d06a0d7ec54beba6ac8aac8db0675b696bda5a7756273663bf7b5cdab0d3285e" + }, + { + "path": "assets/coffee-Ch7k5sss.js", + "bytes": 27422, + "sha256": "2cf05264d5ada366f643b56fa1145af2af574ed8bcd8ce653ffff95b24d8ab89" + }, + { + "path": "assets/colors-Cc3OSVma.js", + "bytes": 109, + "sha256": "d76cd6ab120c4451838cf8f44dd019583c1368aef4f05f58df4d948c70d66a2e" + }, + { + "path": "assets/common-lisp-Cg-RD9OK.js", + "bytes": 22581, + "sha256": "2fc697c25d367e1f9f950e7bae36f1a739b500bb1e646396484edb3c7e23a96b" + }, + { + "path": "assets/convex-vendor-BdEFRSg5.js", + "bytes": 11689, + "sha256": "7dbaca7351c29ab9544f4ff7aea61e0c8f5c1a6cedcb1bf6aedaca5aa42a4dd4" + }, + { + "path": "assets/coq-DkFqJrB1.js", + "bytes": 5526, + "sha256": "142db296843c6d3167305b3c9da4abee5ac6bf9c901947299e0853fce02216f3" + }, + { + "path": "assets/cose-bilkent-JH36ORCC-DN328p1z.js", + "bytes": 81854, + "sha256": "06c615b0e76deef211897768a2bac52b527297764255f5123ad870412dca4d14" + }, + { + "path": "assets/cpp-CofmeUqb.js", + "bytes": 626081, + "sha256": "dc4aa50510e3eebba4fde0eb3f11c2f4ca51da37953fb2518553272497b316d4" + }, + { + "path": "assets/crystal-tKQVLTB8.js", + "bytes": 29388, + "sha256": "de1fc7a75f97f97be146fdd7d3890ecd28384ed44db8da9dc4932c92c9a8e714" + }, + { + "path": "assets/csharp-COcwbKMJ.js", + "bytes": 89687, + "sha256": "cf21c0244a3f8883cb070f404dcf629acfc640079e3edf473d91cb0960237ecb" + }, + { + "path": "assets/css-DPfMkruS.js", + "bytes": 49023, + "sha256": "ecb96a4c835492cc7ca23bbfbfaa97e5213dddb412363bdb4d2ca4851057f193" + }, + { + "path": "assets/csv-fuZLfV_i.js", + "bytes": 1143, + "sha256": "e78e725cd6790c0062e5e941943b776280c971046b16144a117a28f248156091" + }, + { + "path": "assets/cue-D82EKSYY.js", + "bytes": 16204, + "sha256": "d462534c02551b41f1b3198ef6faa32fdfda6bc5aa14e441e6df367fb0485ea7" + }, + { + "path": "assets/cynefin-VYW2F7L2-aX9XjdNe.js", + "bytes": 690829, + "sha256": "78747b25adee505c5ffd5c166cc7f80eb92f97ed4531bb1c4e433c3fa48f6d5f" + }, + { + "path": "assets/cynefinDiagram-MW4NZA55-DkXHVoNO.js", + "bytes": 10229, + "sha256": "03ef1c2871e32882d30b034c85ea667c9abfecb1d6f78647011eb59fff41d4f9" + }, + { + "path": "assets/cypher-COkxafJQ.js", + "bytes": 5956, + "sha256": "6953f20dbca19c201dd4a7845f0fb4f3f52a82ad0a0ec6e4a418e49dd7f50666" + }, + { + "path": "assets/cytoscape.esm-DTSO7Bv0.js", + "bytes": 443722, + "sha256": "ae4fe0587749c1a3835611d80563e8db69b60ae070f74d4cbd25e53d7ec7225c" + }, + { + "path": "assets/d-85-TOEBH.js", + "bytes": 43795, + "sha256": "bc9e087cec1757269bb3e28c1df26140f6fc454de2ec7e453385d27ed3b39c18" + }, + { + "path": "assets/dagre-VZM6K2ZE-BkQKlFy1.js", + "bytes": 9033, + "sha256": "dd4006c5c8e6e71e2edae95cb19dda61907cf48380823061ed251bf7a7637382" + }, + { + "path": "assets/dark-plus-C3mMm8J8.js", + "bytes": 9097, + "sha256": "b8b869d6edc688a6855924a0fcbb663d8c22897e84f94f8273f53cb432be2d3a" + }, + { + "path": "assets/dart-CF10PKvl.js", + "bytes": 7812, + "sha256": "0b3d4673f8a761354d95b580fd5b46c05715ffc9f5e203860de51e62d50a407e" + }, + { + "path": "assets/dax-CEL-wOlO.js", + "bytes": 5365, + "sha256": "e112cfc4f22edb11cf16e6cc9c6f30c1bc44d399442a826e1c2fa68be217f4b1" + }, + { + "path": "assets/deckPptxExport-a5Ky08C2.js", + "bytes": 12452, + "sha256": "d4b6a7368fbfe7b0a20a3ca36c2751bc9b732fa5017b1cc15a1554fa268e22dc" + }, + { + "path": "assets/defaultLocale-CzDG__Ur.js", + "bytes": 4696, + "sha256": "7e6b8586489ac7ae297c72d3175d67440af661406d25f6a3a3b31d55b9c3448d" + }, + { + "path": "assets/desktop-BmXAJ9_W.js", + "bytes": 1833, + "sha256": "fbbe32cc99e0e74b11e742aaae97dfaf0a7b553719ec179638313cc8a8039cbe" + }, + { + "path": "assets/diagram-7IWD3JNH-DepauWqw.js", + "bytes": 8606, + "sha256": "3acc4d2c39ae71599bc4d5ce3d41f87a4c0a450c1e1d084757dc318a214a8e5c" + }, + { + "path": "assets/diagram-B4RE2ZJO-D73ODiJp.js", + "bytes": 10955, + "sha256": "6c47eaa7bf9da3cac63672879eade65d61e059e4009fb9b22a9054a47e971fc5" + }, + { + "path": "assets/diagram-LBJQPF4R-Cqa_DIDo.js", + "bytes": 4378, + "sha256": "50f03f49234c069544a6da176f384a6814b483466003a4ea604700e62a56b98d" + }, + { + "path": "assets/diagram-Q27KOJAE-D68pJNBd.js", + "bytes": 11465, + "sha256": "e7c1f48847d5be9c4bcff1b24e6677e913986d2f7f721dc82b06d2064b9cf919" + }, + { + "path": "assets/diagram-UB23O5K3-BavEiXTI.js", + "bytes": 6359, + "sha256": "fd6523108c0c12beb36002894ff40e5c45ee875a09333812484e740707f143b5" + }, + { + "path": "assets/diff-D97Zzqfu.js", + "bytes": 2569, + "sha256": "071f6c7f36d51227bb0701147c7508f96a0f342ba5df808ed83a820ee486c17b" + }, + { + "path": "assets/docker-BcOcwvcX.js", + "bytes": 1741, + "sha256": "0995ae194f7a702d1572e90b064fd0b1ee0a8da03b8f587c12261c00306eb145" + }, + { + "path": "assets/dotenv-Da5cRb03.js", + "bytes": 1422, + "sha256": "551287cfbe5723329a252cc084780c0511bcf7e9fc6370c241cc458fe2b7dc62" + }, + { + "path": "assets/dracula-BzJJZx-M.js", + "bytes": 21066, + "sha256": "6349dc749f3cf65b72d22a359e6dff84401fee8b3fccb62812bd8463e9e838c9" + }, + { + "path": "assets/dracula-soft-BXkSAIEj.js", + "bytes": 21076, + "sha256": "77ad2cd2bdedc3fb6c78edb3fc9bacf6838ffcad1ec6927f3a7bb6e75e1cd8b7" + }, + { + "path": "assets/drawio.client-BONxGk44.js", + "bytes": 26395, + "sha256": "1d8f02c65e3032b66f56217f9990653d9e8c57a66bde287a4ae17b4074e05ab7" + }, + { + "path": "assets/dream-maker-BtqSS_iP.js", + "bytes": 10469, + "sha256": "44d40108b2579475555c0727913f37bf2f696a0ed48a68fd264cb601fde06cb6" + }, + { + "path": "assets/ebnfDiagram-BXEA7PRR-e6lJ4fZw.js", + "bytes": 2137, + "sha256": "dd039682364507afbd2a015a87479a8a51cb398543fc393c9cc182b218eed54f" + }, + { + "path": "assets/edge-BkV0erSs.js", + "bytes": 2363, + "sha256": "00bc29007f0aff82154ad02b269087703e4ffadb454ec2099d9da603d13b84e6" + }, + { + "path": "assets/editor-vendor-CE6Sek4k.js", + "bytes": 400394, + "sha256": "45e89cb04b6cce3760ead3fad5b1492681723e318e2d0d4258524d98def1edb6" + }, + { + "path": "assets/elixir-CDX3lj18.js", + "bytes": 16321, + "sha256": "e48d53b18b22d40fd0822880baaf55fc521b6398087ac49e878cdaf3fc99cf9f" + }, + { + "path": "assets/elm-DbKCFpqz.js", + "bytes": 10968, + "sha256": "7deaadb185bfb1298a8ac5fed1a531457c7fdc5745a583ad0f783e16b8bcc1d6" + }, + { + "path": "assets/emacs-lisp-C9XAeP06.js", + "bytes": 779854, + "sha256": "096ee2b27ea479a6d9ce76ea4de53edad90a0d1d7f4b17639caa170824296775" + }, + { + "path": "assets/erb-B12qg9BL.js", + "bytes": 2607, + "sha256": "c7a12b8ac182947d30165edb44f2ed4065d89b552d4062a616ff30596560225a" + }, + { + "path": "assets/erDiagram-JOGREHBK-CFYjWU4S.js", + "bytes": 27352, + "sha256": "e28d2506a119080be2d6828b2f67a74e72700fa1e9314c0703d2cc7df107564c" + }, + { + "path": "assets/erlang-DsQrWhSR.js", + "bytes": 37480, + "sha256": "5dea30124e59e6a84f9519a5da5944d3470182989e62d9aa65bb9b068df90c13" + }, + { + "path": "assets/everforest-dark-BgDCqdQA.js", + "bytes": 53745, + "sha256": "826c6890db7a065c9d4ac75850fbadde410ca10872705c74bb6c1f543f051676" + }, + { + "path": "assets/everforest-light-C8M2exoo.js", + "bytes": 53748, + "sha256": "2ac34042eb335675bd7c5035f2c81ccd503e6a60fe8b047396ab6486fa4f20f3" + }, + { + "path": "assets/fennel-BYunw83y.js", + "bytes": 4768, + "sha256": "0bb4581df6bc62ce293fd6715c42bfe54b77ffb18ce9761d0262eee728079c6e" + }, + { + "path": "assets/fish-BvzEVeQv.js", + "bytes": 13038, + "sha256": "31e609691f04394f54edcf86890e0f7a66aa8fed436d63da5480381875b1a3e5" + }, + { + "path": "assets/flowDiagram-UKHOOZJN-CmmQ-9qt.js", + "bytes": 61441, + "sha256": "1face773fbc6fa3f3443835b30c3474e8913bacdccd00ac775a0df99403b3ce5" + }, + { + "path": "assets/fluent-C4IJs8-o.js", + "bytes": 3610, + "sha256": "2929a3bca0b053d7bf7abbe02db3da7d65692836a281dc04510baaa635514cb0" + }, + { + "path": "assets/fortran-fixed-form-CkoXwp7k.js", + "bytes": 1665, + "sha256": "5368f7fe5dc74f0601978b78fea6617eaf5c03090f9f8600d67bd126729f9283" + }, + { + "path": "assets/fortran-free-form-BxgE0vQu.js", + "bytes": 88969, + "sha256": "9aa28f072525e1fd2c4963431f29d5d0918c6bd422142c98e6182e4b998370dc" + }, + { + "path": "assets/fsharp-CXgrBDvD.js", + "bytes": 25305, + "sha256": "2c0618c951b62650650d0c44950072534f0cfe3b4fcd58573a0024a64e53c52a" + }, + { + "path": "assets/ganttDiagram-PKOTCBZU-L8COplAR.js", + "bytes": 52684, + "sha256": "c160b710841b653bbecd24ac4eabe6aed95ec575ebb6df7ca2a0b380d74e001c" + }, + { + "path": "assets/gdresource-BOOCDP_w.js", + "bytes": 5285, + "sha256": "b62c5b30cb3163053b3315e0c340475e6584a76363c80c553641fbeb9d243b9e" + }, + { + "path": "assets/gdscript-C5YyOfLZ.js", + "bytes": 18992, + "sha256": "05e593d1c80b8f314bd99795db1ebd519c2389ce3850674c1affc5e0472b630d" + }, + { + "path": "assets/gdshader-DkwncUOv.js", + "bytes": 6326, + "sha256": "73f353c2c614fec2d8cfae89fb40ee57d4c406bc00b8aeafe4f7a0aa3395f603" + }, + { + "path": "assets/genie-D0YGMca9.js", + "bytes": 3356, + "sha256": "1ae6367d77ad7ef0abbac818ca67a213ee812abb47d1aefc5427120b1a6fd13c" + }, + { + "path": "assets/gherkin-DyxjwDmM.js", + "bytes": 11946, + "sha256": "c7bd366597ab12a5977d62813a92022bfbce506f2a3c70d0b3819aa39344c7ae" + }, + { + "path": "assets/git-commit-F4YmCXRG.js", + "bytes": 1230, + "sha256": "783b8cb9af4cb9b869335cd5cca6a2125bb97719b21ef21b004c0974181bcae6" + }, + { + "path": "assets/git-rebase-r7XF79zn.js", + "bytes": 983, + "sha256": "88402cafff4897e7d7931bdb17acfcad0916e1f54353e578e876b21055ccbef9" + }, + { + "path": "assets/gitGraphDiagram-DS77QQ5N-evOar-L7.js", + "bytes": 30072, + "sha256": "ed2af497760d4400d9d982a8ec0f4cfb1827ac34a6d69d083f6be3d2cf01fe39" + }, + { + "path": "assets/github-dark-default-Cuk6v7N8.js", + "bytes": 14435, + "sha256": "c748b560af550be6ed802ebe5433b0688f617925feafdd98d8e3d43470c24a1b" + }, + { + "path": "assets/github-dark-DHJKELXO.js", + "bytes": 11405, + "sha256": "8f7ccd8274e8950ef099d389c70d379782cf17f39424090949ba45833eeee022" + }, + { + "path": "assets/github-dark-dimmed-DH5Ifo-i.js", + "bytes": 14433, + "sha256": "8bb97e7c16cb22f8acf952c9e0af4d9bc1e13cc7ad44fadd98b5df37bf3ba5f4" + }, + { + "path": "assets/github-dark-high-contrast-E3gJ1_iC.js", + "bytes": 14595, + "sha256": "18f1a70b963db803f141be93c79c80a0dc38f78cd47fea1ff8b05cec409b7fe9" + }, + { + "path": "assets/github-light-DAi9KRSo.js", + "bytes": 11184, + "sha256": "9ad9f268476dc0edc85cdb9a9ae940ee7d0ad267d5de82810fef40d2f13462ab" + }, + { + "path": "assets/github-light-default-D7oLnXFd.js", + "bytes": 14156, + "sha256": "212b28c6987d30991d6bc3f812cf69d93694a557235bd9e1e4460855edb2e4f4" + }, + { + "path": "assets/github-light-high-contrast-BfjtVDDH.js", + "bytes": 14275, + "sha256": "1b1d4ff8b3fccaa0e7cfcf8688e7fb75b086e8b879c62353f6c580f8cd260e54" + }, + { + "path": "assets/gleam-BspZqrRM.js", + "bytes": 2577, + "sha256": "96ee8ab10150415113386ffb698a6e578947cf099f72daf24984f09da77c2118" + }, + { + "path": "assets/glimmer-js-Rg0-pVw9.js", + "bytes": 20071, + "sha256": "41ff2390d3d87dbba88aed68a5dbc6af2a074697412a69d93ecf92c265c615dd" + }, + { + "path": "assets/glimmer-ts-U6CK756n.js", + "bytes": 20071, + "sha256": "90bd2b279afd03f599ec90b7323e3c414cf7f3b44038551ece8f9e59522beaac" + }, + { + "path": "assets/glsl-DplSGwfg.js", + "bytes": 3634, + "sha256": "d73db15d8c26ce44204eccdc3f250039018f34902874d55920b51f171d75a737" + }, + { + "path": "assets/gn-n2N0HUVH.js", + "bytes": 4002, + "sha256": "8ebd06d1b7db73d2b6a50f2072c23af6b2164783b8268fa8c8d643d4d3e72ae0" + }, + { + "path": "assets/gnuplot-DdkO51Og.js", + "bytes": 14783, + "sha256": "44e79156d6f1fda5d964731ffbf67170dfc593edd18e9ad76f2e984d5e90a17c" + }, + { + "path": "assets/go-CxLEBnE3.js", + "bytes": 46808, + "sha256": "7a9b30622fce8b7e26e4d4fdad80993b0a63471268cdd171d3b9de7b1a273261" + }, + { + "path": "assets/graph-C9eacEi8.js", + "bytes": 23950, + "sha256": "b18a97cacd3305f14dc7cd4434886925cd892c17ee7e8617b760c87540646723" + }, + { + "path": "assets/graph-vendor-C5ap-Sga.css", + "bytes": 15869, + "sha256": "d34cf723b92d9c85640db4d0e5b6270630c3cd6e08823df16ee5a1ff55def948" + }, + { + "path": "assets/graph-vendor-Dz3KpPvp.js", + "bytes": 186112, + "sha256": "e1fba6a6c2d50aefcb60911985f32ec71a347eeffaed1019075420d88bb86b0b" + }, + { + "path": "assets/graphql-ChdNCCLP.js", + "bytes": 18002, + "sha256": "ce3367ffe23232e3d6d2ce940d1bb233839c0ebf02b9f12b151108c8bc2d4b58" + }, + { + "path": "assets/groovy-gcz8RCvz.js", + "bytes": 19179, + "sha256": "a03245cec1dc1cbbf9d68a083dcc04b77cbf748ad95bdd0291bf7ae3555bc1b2" + }, + { + "path": "assets/gruvbox-dark-hard-CFHQjOhq.js", + "bytes": 22633, + "sha256": "d298e64968c577792359edbd2bee987149cd3b6252b82836f28dbd96cb521d3f" + }, + { + "path": "assets/gruvbox-dark-medium-GsRaNv29.js", + "bytes": 22637, + "sha256": "cd2d75705169e923822a9f8bc1141e8f5e7c0a5af0b5ded469dc76e5d03ada21" + }, + { + "path": "assets/gruvbox-dark-soft-CVdnzihN.js", + "bytes": 22633, + "sha256": "fdbd1d78ed6a4fce75feefb8797570a4568edce8ded59af0d99f83e20f3307dc" + }, + { + "path": "assets/gruvbox-light-hard-CH1njM8p.js", + "bytes": 22636, + "sha256": "7b2fa3d574f3ef80a213d88fddb684431e94bdb472d523d8f0caad96d5d376f8" + }, + { + "path": "assets/gruvbox-light-medium-DRw_LuNl.js", + "bytes": 22640, + "sha256": "62a938850d5e4fc934e44213eff465fb3618456b0490adc4887d4a83bd0d9e29" + }, + { + "path": "assets/gruvbox-light-soft-hJgmCMqR.js", + "bytes": 22636, + "sha256": "090f38c249b8bccd7b283926da32fa0095e8c27b5dd88ae2746863f7b7bc4ccd" + }, + { + "path": "assets/hack-CaT9iCJl.js", + "bytes": 80241, + "sha256": "e1a5064e1ee240147e7a5000884c157de6a4b6ff9a6a140bcd3194a09106d5d2" + }, + { + "path": "assets/haml-B8DHNrY2.js", + "bytes": 8263, + "sha256": "d10c129fed07a700ec284adfba6c8bba53540c90fc6f881d7ff816eba26f16a6" + }, + { + "path": "assets/handlebars-BL8al0AC.js", + "bytes": 12150, + "sha256": "7ae55c034a41370a303c867c5e5bd40a4e8eea6baa69a4dd9b10a28e98fc4236" + }, + { + "path": "assets/haskell-Df6bDoY_.js", + "bytes": 41490, + "sha256": "164e3b023115e70432602c2da71d1c0ac7184ea91deea1dc70cf17ef74b84fa6" + }, + { + "path": "assets/haxe-CzTSHFRz.js", + "bytes": 35164, + "sha256": "9758d15765769f46874c4bc90d672c3a465b8ce0a1b2db6ffed3a116e6d5a7b8" + }, + { + "path": "assets/hcl-BWvSN4gD.js", + "bytes": 10053, + "sha256": "2d11254542388410861c6a6a3c0f57deb9c218fdc2c1c5ffac901bdb876fe80a" + }, + { + "path": "assets/highlighted-body-OFNGDK62-CFEvFKUz.js", + "bytes": 700, + "sha256": "d435f2823318dfb74541d98a2f890d610d7aa34f4947f929b84cc42a144bf892" + }, + { + "path": "assets/hjson-D5-asLiD.js", + "bytes": 12053, + "sha256": "6a7e74cb9d734dfd58aeeae9224a7b4b69a86edcc6b73d0e3e36e98dacb3300b" + }, + { + "path": "assets/hlsl-D3lLCCz7.js", + "bytes": 7264, + "sha256": "f5bff090211e17e314660363157f351c5a0b8e707db3ef26cdd78c8522c7d133" + }, + { + "path": "assets/horizon-bright-Cn-bp-IR.js", + "bytes": 8786, + "sha256": "b69099a7451825f86a289c6741582f048f9518965229156fb84552d8d64ca575" + }, + { + "path": "assets/horizon-BUw7H-hv.js", + "bytes": 8780, + "sha256": "d43f28552f920fd99607f754ce527ee0be5654097c479c446d86df933c911b72" + }, + { + "path": "assets/houston-DnULxvSX.js", + "bytes": 35422, + "sha256": "91c981557306d7a18f7ff39d9060dd2b582604a75aff38ae79edc647e4d9ff93" + }, + { + "path": "assets/html-derivative-BFtXZ54Q.js", + "bytes": 900, + "sha256": "8af372f33242dcdabf3c39a52c2354419f00ec560b589269d03c05e0e799b84c" + }, + { + "path": "assets/html-GMplVEZG.js", + "bytes": 57247, + "sha256": "b50c5444419c4bdd9464606b005a02ec2dab4f9a21f26651bee94332f213c567" + }, + { + "path": "assets/http-jrhK8wxY.js", + "bytes": 4549, + "sha256": "5bb8464898add03e8c22970d9eb4cc467b40ae2888e4d5623c9fde4209dd4d29" + }, + { + "path": "assets/hurl-irOxFIW8.js", + "bytes": 3652, + "sha256": "f87e3fbbc06d52e9d69c1a8cb0a3d64e430ccb85faddeb7a5f87aa12ed6d01a2" + }, + { + "path": "assets/hxml-Bvhsp5Yf.js", + "bytes": 1743, + "sha256": "59530b894cd868887490a330da6b8366214246b8eef502a261bc99ca7ccf63af" + }, + { + "path": "assets/hy-DFXneXwc.js", + "bytes": 2648, + "sha256": "22df29d8b5c5119f1bd25e998bf7b359a29dc5b826e50597cee67731679cca68" + }, + { + "path": "assets/icons-vendor-VKpO2iRi.js", + "bytes": 46816, + "sha256": "62b4c29b4ac83d6a8cbc2379a17d1562357f43b55037ab9bf26263484fa5af29" + }, + { + "path": "assets/imba-DGztddWO.js", + "bytes": 49930, + "sha256": "73402caea94e54100c970c652577abf4995f79310e7528744b46a37227057e35" + }, + { + "path": "assets/index-BMzSW53F.js", + "bytes": 20246, + "sha256": "e45600964f643ae34f3542ab55a536a694a956f686f65309656f3e5e93f966ae" + }, + { + "path": "assets/index-CNetDHp7.js", + "bytes": 192895, + "sha256": "efb90a1cb3f77e0838e1dab5b1c27e28305ddb7ffff9af023493abff0f69cd22" + }, + { + "path": "assets/index-DjlIiZGG.js", + "bytes": 660, + "sha256": "4b41cdb66d42c49a77c3ff26b88e029e84a498780f2d51373bcee28379306340" + }, + { + "path": "assets/index-DvbDVNBX.js", + "bytes": 12520, + "sha256": "43f812d8684e1b2f29d664f846342ba407128305d391485de474c28d4c0910db" + }, + { + "path": "assets/index-DVBvMn51.js", + "bytes": 4860, + "sha256": "b2d8f00c4549e9beff84571befc6d5fda5917cab384f9b20670e408ea4d1d361" + }, + { + "path": "assets/index-TeonLBog.js", + "bytes": 279295, + "sha256": "1f27435d9e2d33e4d89c17a5b478f15c8cafe713b22337c2af63e5ae4862f20e" + }, + { + "path": "assets/infoDiagram-6WML65LV-BqJB0Wzr.js", + "bytes": 714, + "sha256": "6ba73b1fa9b1927abb35ece8ba11849762df5816fa9dc97d6a753bfe6b2c25bf" + }, + { + "path": "assets/infographic.client-CrhtzGAz.js", + "bytes": 5381, + "sha256": "f192f5e06806ede5883e5d2060cccd96c6b3142a4eb54d25d5fc0e9b819e6a2d" + }, + { + "path": "assets/ini-BEwlwnbL.js", + "bytes": 1525, + "sha256": "7830e62a2a96e22c418b5a1e52ba15545ece3c5684346dd50fc174a60b3c225f" + }, + { + "path": "assets/init-Dmth1JHB.js", + "bytes": 377, + "sha256": "6dfdcbf6754983698ab29a22640e4942b8ae02ea0a205b896691b2748f2d155e" + }, + { + "path": "assets/InvestigationReport-DdZK31A3.css", + "bytes": 14324, + "sha256": "96a262833c90bc12e57d76bc4012c99bba83590f9648d5344ebbaef4fd54b11e" + }, + { + "path": "assets/InvestigationReport-fFt6-np0.js", + "bytes": 21903, + "sha256": "ddc75c0e438fb221912f6437007b9d49498d5f7f03829f2dbb29e8b4b95892b4" + }, + { + "path": "assets/ishikawaDiagram-WSZJBQD7-DFeoTXsT.js", + "bytes": 17698, + "sha256": "14a2d54ad69b3aac6def21841f0bd71f6953a726e8d760de8b328b531e6f45c7" + }, + { + "path": "assets/java-CylS5w8V.js", + "bytes": 27219, + "sha256": "2bec4be5ba0dea3d8258669df1e6957e1ba2590a1ad56c6e103ea8c00baeba7e" + }, + { + "path": "assets/javascript-wDzz0qaB.js", + "bytes": 174827, + "sha256": "a4a56cc72c7d0f1ecbbeb1ba6bf5f532193c8d13fc3de19910f8d64c70aec4e9" + }, + { + "path": "assets/jinja-4LBKfQ-Z.js", + "bytes": 5685, + "sha256": "1801f5eb0d83c09dabe24151cd4cb508b2d0e2c1db33ef92dcf691f240db83f2" + }, + { + "path": "assets/jison-wvAkD_A8.js", + "bytes": 9690, + "sha256": "3d09bd59c47dffe52f1eee5bd2371ecc2c8340daac0400872472affdf0c95392" + }, + { + "path": "assets/journeyDiagram-NVQOT4AX-BPteGnmz.js", + "bytes": 23707, + "sha256": "1d9a3fae7456258ed84e1845dbf966e255c315464314cdbfe4ba5b2d199992a4" + }, + { + "path": "assets/json-Cp-IABpG.js", + "bytes": 2824, + "sha256": "ca32840cab9c2eb61da2afd6581e7a22c9937229f6b1a47115eea432794e7740" + }, + { + "path": "assets/json5-C9tS-k6U.js", + "bytes": 3254, + "sha256": "84985fb6e4953e5eccc4d704e4db9eb5c0045b74a11d3edd3a9b4c0bd3d5c2e4" + }, + { + "path": "assets/jsonc-Des-eS-w.js", + "bytes": 3109, + "sha256": "1a23e00b91a35d38fba019125c68139ed9c6b9a0bdb953e9b21a709875f41125" + }, + { + "path": "assets/jsonl-DcaNXYhu.js", + "bytes": 3011, + "sha256": "10ebbfda6fda38f977a98ef80441310d350b084c6c27c811296ddcf2d84ba3ea" + }, + { + "path": "assets/jsonnet-DFQXde-d.js", + "bytes": 3618, + "sha256": "198a5e9985d5d96fae3f00e0d707841393882f4b9e2bf60ab5145af13c88b513" + }, + { + "path": "assets/jssm-C2t-YnRu.js", + "bytes": 2238, + "sha256": "5b09940400c8fb823c95c198c9363791948e6a9229da2873bdf27b806452b831" + }, + { + "path": "assets/jsx-g9-lgVsj.js", + "bytes": 177792, + "sha256": "abb8a7007d9a1f743c33283c233a509dc702eb618d1447d128b1330b73851bf2" + }, + { + "path": "assets/julia-CxzCAyBv.js", + "bytes": 31066, + "sha256": "44816ad3fcafca4b4b97959c2bec42e38f18bbb02d7a7ed8f4f6ef8a884697a9" + }, + { + "path": "assets/just-Cw27pwNe.js", + "bytes": 11162, + "sha256": "816a83790036ab1865d99440ad98d3cc3d40fb3fc48ea23c1cbee4d52d1bcfa7" + }, + { + "path": "assets/kanagawa-dragon-CkXjmgJE.js", + "bytes": 17127, + "sha256": "d45808ad5de1205ef39b8a53037311667253a7a4b13ed40e4ebd70faf55e4089" + }, + { + "path": "assets/kanagawa-lotus-CfQXZHmo.js", + "bytes": 17126, + "sha256": "4a9b14832c6f978395fb8fc63107094b3d51ef6aa92003b38bc21e00b769fb54" + }, + { + "path": "assets/kanagawa-wave-DWedfzmr.js", + "bytes": 17123, + "sha256": "25c129a062f9ac87decb56e2299d4a6aa652d1b20f3488c4e30f80eb9f8aa78d" + }, + { + "path": "assets/kanban-definition-27J2QSJJ-CmHd5Glj.js", + "bytes": 20827, + "sha256": "a12f024ece82ca147eebad3e787a50441f79036494ac450249fd3168cc94ebbd" + }, + { + "path": "assets/katex-C5jXJg4s.js", + "bytes": 261329, + "sha256": "9e8127e147ae576d0129e22677e6949eff48f7a5f4313e2629967938126dcd16" + }, + { + "path": "assets/kdl-DV7GczEv.js", + "bytes": 3629, + "sha256": "24eccbf01c8c213cb407ee8b0294e0fe4d362c2a6c173a9516d41bf76e8cd387" + }, + { + "path": "assets/KnowledgeGraph-5vVU_NOr.js", + "bytes": 117251, + "sha256": "0228fe36011961afe525cfb61d454ea1b3bf50daa02814358b3bde10854a352c" + }, + { + "path": "assets/kotlin-BdnUsdx6.js", + "bytes": 8785, + "sha256": "2a95758b9ec1532516fb3fa38cdd82fed5534d944ca791f327e624ec94e829ac" + }, + { + "path": "assets/kusto-DZf3V79B.js", + "bytes": 15173, + "sha256": "a5d665eee0a12fcab22699da3b1c2cab4a1726b94a9947c1b6da3f3709d0d96b" + }, + { + "path": "assets/laserwave-DUszq2jm.js", + "bytes": 11499, + "sha256": "d56a0486f8b143d6d31a0b0230ccc5914ffbb751543a7dc97d697cbc1152da69" + }, + { + "path": "assets/latex-CWtU0Tv5.js", + "bytes": 72644, + "sha256": "a544f1361ee85779a47677047f3b2f002820d522f10ee48bc98bb045ab06d2af" + }, + { + "path": "assets/layout-DEXfKzaS.js", + "bytes": 30997, + "sha256": "92d8105d9b991903e6bc7b63938385ad1ecc97dc6b9ba531b08a2a9dd96cfdf1" + }, + { + "path": "assets/lean-BZvkOJ9d.js", + "bytes": 5784, + "sha256": "b34bf987976167f4de82af23930eaa4471b06320f236a5d00e3e9098fc704301" + }, + { + "path": "assets/less-B1dDrJ26.js", + "bytes": 97633, + "sha256": "ed3ea44927fda1db6ba56ae932f08ce7f82f8d8a06d2b3d63e3b29db54ec5c65" + }, + { + "path": "assets/light-plus-B7mTdjB0.js", + "bytes": 9941, + "sha256": "44ec2993b3cc158ca691da352114658cacc0812ba4678faec2a6370262415979" + }, + { + "path": "assets/linear-D_qmF9Am.js", + "bytes": 4820, + "sha256": "94165cb971b0e52e745dab2ff61451e1421f447a6832fce3d68144da96a26e1a" + }, + { + "path": "assets/liquid-DYVedYrR.js", + "bytes": 18089, + "sha256": "4d5bb9fbbd8f34a140dc9fdbc4e17c56fd7bb686805e5822be6326dd0288233d" + }, + { + "path": "assets/llvm-DjAJT7YJ.js", + "bytes": 5050, + "sha256": "4937d05e28115e0d9161616a786aecdcce209dfbe4c8ef070150937a58befab4" + }, + { + "path": "assets/log-2UxHyX5q.js", + "bytes": 2852, + "sha256": "784500daa4b6a6ac32f95c19dc166914133189decc3ed10faf43578fe522a786" + }, + { + "path": "assets/logo-BtOb2qkB.js", + "bytes": 3127, + "sha256": "0ded9d4454ae3e08017b17f93c117c3e451698f42109e15d69380ec089406060" + }, + { + "path": "assets/lua-BaeVxFsk.js", + "bytes": 15535, + "sha256": "890724e2d1bc79e6f6498ce6cedd5a4bed0d9489121621c1946ef05e209f5623" + }, + { + "path": "assets/luau-C-HG3fhB.js", + "bytes": 13964, + "sha256": "b969611adf3271fd488730a32acb9dbbab5c0377231c610ed0bee0bf4719ffa3" + }, + { + "path": "assets/main-DfI79bPM.js", + "bytes": 4930, + "sha256": "936607fb65cd771e95b6707e55fe007519d53fe3cbedc37e010ad93791d18181" + }, + { + "path": "assets/make-CHLpvVh8.js", + "bytes": 8961, + "sha256": "50df72a259773a4ca73a97534238010cdef78d632729871d880b58fcc6d3112f" + }, + { + "path": "assets/map-Czzmt4hB.js", + "bytes": 5070, + "sha256": "f15e10db8661ed2bf93075bcb018f62927333b9c2be5437933414af533c2d83c" + }, + { + "path": "assets/markdown-Cvjx9yec.js", + "bytes": 59335, + "sha256": "ce6a8b1a6ed9b803b1847231214ba37621c2fa51611ec3037d38b561b360c278" + }, + { + "path": "assets/marko-CnJfTvn9.js", + "bytes": 25479, + "sha256": "c6d06de9c7098dd02d0d4d0b60a78cde16bb039c5cefecc2573f12f8bc124e1a" + }, + { + "path": "assets/material-theme-D5KoaKCx.js", + "bytes": 18615, + "sha256": "d0950f3965aecb678089843c133f238db6b308f218e98bdee1412de56b0af425" + }, + { + "path": "assets/material-theme-darker-BfHTSMKl.js", + "bytes": 18629, + "sha256": "ec892813b7a31e9e2d83f54a05450f9a406de273628838b016e828db7ed72572" + }, + { + "path": "assets/material-theme-lighter-B0m2ddpp.js", + "bytes": 18634, + "sha256": "4547e1325624259cb17dfa811e29b0d3e3f9a07c9f37b4cb8d4b4f945d9f2f5b" + }, + { + "path": "assets/material-theme-ocean-CyktbL80.js", + "bytes": 18629, + "sha256": "f80d8209f2d352d0aea9f47759017fa0f994e71e79db1e722be9d82a974692a4" + }, + { + "path": "assets/material-theme-palenight-Csfq5Kiy.js", + "bytes": 18635, + "sha256": "6261dfa64833f4e0c0316a1d41efc5ba6fc43a376bca6f936b4f3b76a6396af7" + }, + { + "path": "assets/matlab-D7o27uSR.js", + "bytes": 16086, + "sha256": "463b698b6acd5b08065007f5376b060dda4fe19f9e27259da52d40a30bc2bc66" + }, + { + "path": "assets/mdc-BMNejdWA.js", + "bytes": 19632, + "sha256": "7a05fb8bd772509b14aad9b776fea0e8734c4a3099a3e68f4d1887bbaef0ef00" + }, + { + "path": "assets/mdx-Cmh6b_Ma.js", + "bytes": 136114, + "sha256": "c2c652334464f6085341dd1c46e32717e22556890fbc0d2651d9200f372069bb" + }, + { + "path": "assets/mermaid-GHXKKRXX-DXxw6UAo.css", + "bytes": 97568, + "sha256": "6329846859f81cfc6006ce2c9a391c64e7a614412664ecbdda9cd158dba5dd5c" + }, + { + "path": "assets/mermaid-GHXKKRXX-mofioVct.js", + "bytes": 1911905, + "sha256": "d3805d3eb3dff4b22b590a9e9a2be8cf5ec7454a2ddca116d02fa786f73a580c" + }, + { + "path": "assets/mermaid-mWjccvbQ.js", + "bytes": 29511, + "sha256": "6802dd4aaed6afb26068d1b0acc945071cd5360809baec6b102fc2ac23d8a322" + }, + { + "path": "assets/mermaid.client-CVhdbIqJ.js", + "bytes": 1281, + "sha256": "f0023c4dbb2cde3071b47b769a4c849099fd84a5067bd967383846e37e2f3b25" + }, + { + "path": "assets/mermaid.core-DU80g2JW.js", + "bytes": 580708, + "sha256": "817f25a6651837ee4cbe0aaaccc233dbe50011881308f62dbc57fa978a9ee1b0" + }, + { + "path": "assets/min-dark-CafNBF8u.js", + "bytes": 6291, + "sha256": "4c0956f147c2dd5aef71894b78d7e95b7a766deeb20712ad94e5897bed620792" + }, + { + "path": "assets/min-light-CTRr51gU.js", + "bytes": 6969, + "sha256": "27e91e09c261ea328ed371e734655f83543da150143a49d5ae39598dad6cd844" + }, + { + "path": "assets/mindmap-definition-FAOFIHXS-CZlMeQTi.js", + "bytes": 23766, + "sha256": "22911f524e5e9c84848b49904fdbf92522e77478b9db226a376f3c5c99331f1a" + }, + { + "path": "assets/mipsasm-CKIfxQSi.js", + "bytes": 3259, + "sha256": "c2cdb4e8e7172f68f5bb6e0615696c2a023a2b8bfe008f424c8bbae1e120dd2b" + }, + { + "path": "assets/MobileRoot-C_RVAb0O.css", + "bytes": 175424, + "sha256": "b72fed66fd4cd59d38f032a7023c8a13e853a26d2fde62d6c5c5c7021e77af6d" + }, + { + "path": "assets/MobileRoot-CavR3dmJ.js", + "bytes": 239458, + "sha256": "62f407911184105a274f32c6bddbce2e25849c92c5f36709b3240acba6f74b1e" + }, + { + "path": "assets/mojo-rZm6bMo-.js", + "bytes": 69799, + "sha256": "9e70dea75c07fa27e22d7f5bce1afe758f65ecfcaa4c48682e67a83f00d17dc5" + }, + { + "path": "assets/monokai-D4h5O-jR.js", + "bytes": 7884, + "sha256": "cff833ee8a81cd91ccfa57ee0d5924577aa1406e209a80087bb9675ad2ea8d0f" + }, + { + "path": "assets/moonbit-_H4v1dQx.js", + "bytes": 5900, + "sha256": "ce085206edfae15f55e78824eac04480d7169ea96755d6fc4e57642c5641c0a4" + }, + { + "path": "assets/move-IF9eRakj.js", + "bytes": 17505, + "sha256": "e90046ae9e34086d261731f85a1399439ece1b8cd11635066a2fb910eb3f73f5" + }, + { + "path": "assets/narrat-DRg8JJMk.js", + "bytes": 3672, + "sha256": "37b1a4a08e1a0d4cf06e1ca8adddf1c51b9600b695f017b911799099ac5d8671" + }, + { + "path": "assets/nextflow-groovy-BeH2EWoN.js", + "bytes": 10406, + "sha256": "26c7440b7660ef7115c3b7fd6f6cd4fd1a7215bc8b574def16c547cca3546730" + }, + { + "path": "assets/nextflow-Zz6hmt5N.js", + "bytes": 4510, + "sha256": "de0fbf3f19a3e632ab10ce7df53ec378e2f7f210b286d5a7dd69aedce0827f9c" + }, + { + "path": "assets/nginx-BpAMiNFr.js", + "bytes": 35374, + "sha256": "25b53af8ecce64bdefc084c8b7af5f27537ef7022618e8d90e4b20fd1ebe485f" + }, + { + "path": "assets/night-owl-C39BiMTA.js", + "bytes": 28913, + "sha256": "2b8554d4a01b6e062bb929507c741070c04d4f194b424942c5f208891afa1360" + }, + { + "path": "assets/night-owl-light-CMTm3GFP.js", + "bytes": 25902, + "sha256": "68b5b21d900e1409b772220982c7837bd77003f084069160edc37f9eccd46758" + }, + { + "path": "assets/nim-CVrawwO9.js", + "bytes": 22460, + "sha256": "2a0ac9212274e3ae8926531fdf55664e68594051f02f3e46107551d7fd087cf3" + }, + { + "path": "assets/nix-CwoSXNpI.js", + "bytes": 15511, + "sha256": "1d064eb88b18c48846c1ad0e438c869aa25813361efba72de9725932c0310449" + }, + { + "path": "assets/nord-Ddv68eIx.js", + "bytes": 26723, + "sha256": "243a9dfea9c93c40586d279de5ea4cd8f3de380c2e3c0ea7ba58e93ef12cbcf5" + }, + { + "path": "assets/nushell-Cz2AlsmD.js", + "bytes": 20413, + "sha256": "14a523801c0d9238c1c62d5f5055c80cffc460564875f4b3e020f7e4d27a72c6" + }, + { + "path": "assets/objective-c-DXmwc3jG.js", + "bytes": 105413, + "sha256": "aa3b80179150c0bf74649497bbeb60a36f025631ea64ca23c9e2aca64ec71c44" + }, + { + "path": "assets/objective-cpp-CLxacb5B.js", + "bytes": 171972, + "sha256": "9841e552a948f571c39f594fc27661f1262e589c9f53898c8ac2de469b1d85f3" + }, + { + "path": "assets/ocaml-C0hk2d4L.js", + "bytes": 62449, + "sha256": "eb5a88927867a33e866a8fea38c91799b28739c6038264e5a3560519951d1dc3" + }, + { + "path": "assets/odin-BBf5iR-q.js", + "bytes": 16513, + "sha256": "886d9212bdf48ee8eb6ba85adb1a07ca6519e5c60e4e73b5323c1cb4d8969939" + }, + { + "path": "assets/one-dark-pro-DVMEJ2y_.js", + "bytes": 33787, + "sha256": "7c55d00426abb85391f3432fd1282150e0bd7d54a8e5de7553a1d65c31459eb2" + }, + { + "path": "assets/one-light-C3Wv6jpd.js", + "bytes": 25300, + "sha256": "8f9b7f248dd34ae2acccfb35c8c095f0b581ea4e0d3351c7fe25721b914ae177" + }, + { + "path": "assets/openscad-C4EeE6gA.js", + "bytes": 2824, + "sha256": "36bb06e21f4dae2e8f47a92050501a4c989273bafde4096e151f591635fbed55" + }, + { + "path": "assets/OpsPanel-Cv44ppUZ.js", + "bytes": 5106, + "sha256": "7e5762f44b7c4efd826aa805d8abc38b43566a7d8d3333b60bbf1d670e257acb" + }, + { + "path": "assets/ordinal-BeghXfj9.js", + "bytes": 1473, + "sha256": "227a80a1f5eca2378a9db259bf2668cb10d889a5d5e56b254d9127db5ea9910e" + }, + { + "path": "assets/pascal-D93ZcfNL.js", + "bytes": 4150, + "sha256": "65c2b6be568561feb139eb54e384137c54c3d53b49be7be851e28aa0fc2f8c22" + }, + { + "path": "assets/pdf-vendor-BRfqYs8T.js", + "bytes": 462899, + "sha256": "2dbf01d32335bde2d995a1d2b31348aab86fcccce047eaaa76de78c97b22669f" + }, + { + "path": "assets/pdf-vendor-DThUiFH8.css", + "bytes": 1527, + "sha256": "1483b5916fa619aca85a6bc34bd5fe2494d805c9a7b2a4f2d02473fcbf002282" + }, + { + "path": "assets/pdf.worker.min-qwK7q_zL.mjs", + "bytes": 1046214, + "sha256": "dbcae78a691b3c501508f74b774c6066a57a14a76cefdc9e25ad86b651bb75d5" + }, + { + "path": "assets/PdfCitation-Dl-_NvBL.js", + "bytes": 2020, + "sha256": "b15db00ed5a94d4bc13d77fad68379c7120cb7da0d2f39cc7c88e692ed3ec9bc" + }, + { + "path": "assets/pegDiagram-VL7TDLO6-Cepz3zJl.js", + "bytes": 2088, + "sha256": "f0092aa8cf6b88f9c0e99f1656c448f77de23855dcd48108d03699f85c36316f" + }, + { + "path": "assets/perl-C0TMdlhV.js", + "bytes": 43156, + "sha256": "7e84c2f819dc04b8dabc2f0f1871151fcc710a8822ba9abc849922440eb6de54" + }, + { + "path": "assets/php-Dhbhpdrm.js", + "bytes": 111058, + "sha256": "498359c1dd0c0109bf7aefba4f4ddf6ebabeeae8d0332b0e69d953c79d2ca218" + }, + { + "path": "assets/pieDiagram-7S7Q4E2Y-h1HEDu6b.js", + "bytes": 6487, + "sha256": "3427f177c883ea3466a1a3e8d7692e5de2890a0e784eda2e7a7dc1804ac2df9c" + }, + { + "path": "assets/pkl-u5AG7uiY.js", + "bytes": 10372, + "sha256": "1acafc1de9c65cd06c2b6a3b0bfb928a92fd13fa5182fbc4df0f03f41ca79c24" + }, + { + "path": "assets/plastic-3e1v2bzS.js", + "bytes": 9295, + "sha256": "f507b7e3105e92c0d7de6346751da2f369d9d10a9237539fb2f41ca22f3f674d" + }, + { + "path": "assets/plsql-ChMvpjG-.js", + "bytes": 8512, + "sha256": "5b08ff2f2caca88ca87a1e02c740ec32d06d8b96d70e210abcc2729858cd9a2e" + }, + { + "path": "assets/po-BTJTHyun.js", + "bytes": 3239, + "sha256": "c6925708c8b9b9a2793d10218ab601e30f79eab0c2892985fd6b3f8382377b32" + }, + { + "path": "assets/poimandres-CS3Unz2-.js", + "bytes": 33494, + "sha256": "f3a6399c5ae3fe8b7ce02c29c7278199a4ca3ff9b39be1b455a9124c17227de3" + }, + { + "path": "assets/polar-C0HS_06l.js", + "bytes": 4671, + "sha256": "b6205f4f60671b327a436f3a5c02197826ed563c0c23d22d8231095515274c6d" + }, + { + "path": "assets/postcss-CXtECtnM.js", + "bytes": 6417, + "sha256": "748810304adf9da83f71983e99219a242fac24424483e68c0145e0edb6610136" + }, + { + "path": "assets/powerquery-CEu0bR-o.js", + "bytes": 5903, + "sha256": "2560bd4cef47cf5dee7b8c2204ae8008ce73f85f41764683afa1d0988f4d1d7e" + }, + { + "path": "assets/powershell-Dpen1YoG.js", + "bytes": 20151, + "sha256": "97259eb4370f2ded7fb394e103aec42e12ff7c2ba37c846a43506410672cb473" + }, + { + "path": "assets/primitives-BSN9ZDgJ.css", + "bytes": 41722, + "sha256": "6a6d3e91f7b00a35afdca4fc55262c6fe490c86393081fa3fa23fc764a50e92c" + }, + { + "path": "assets/prisma-Dd19v3D-.js", + "bytes": 6330, + "sha256": "82e0167743a332958b14c0e40875bf207de8def0521189323b3ae3066e715615" + }, + { + "path": "assets/prolog-CbFg5uaA.js", + "bytes": 11356, + "sha256": "3cbc885011b27249f5a0b7660b6f7c87ac5ab4f44487107cc1e92d0c19ebb3cd" + }, + { + "path": "assets/proto-C7zT0LnQ.js", + "bytes": 6548, + "sha256": "2f6893062281306a31a73dcc50949a332ade86a11565f7b78d66e28ed2aaa627" + }, + { + "path": "assets/PublicRoomPage-4DVXi3Kc.js", + "bytes": 21082, + "sha256": "d1725ada618d81a6efa43b9eb4501a43545df08fc38b38a465ce3823e4657822" + }, + { + "path": "assets/pug-CGlum2m_.js", + "bytes": 13842, + "sha256": "1afaa5bff782f8df502f7c03fbeaba94cd8921a5f1f690e27508e45c27e2e8ed" + }, + { + "path": "assets/puppet-BMWR74SV.js", + "bytes": 11437, + "sha256": "a7a22bdeccfe37f60d59da8851019f47f08eef8250f9a1e2f25560c12a021467" + }, + { + "path": "assets/purescript-CklMAg4u.js", + "bytes": 24686, + "sha256": "8fd484a61ea9faa0ef7e299f9188cb74dabea59625c822f537f7ae850d18daac" + }, + { + "path": "assets/pyodideKernel.worker-DHEMhrGh.js", + "bytes": 4812, + "sha256": "9ce828ede05b97254740331c162eaf022339491470569bd21d2e6bc6ee3369b6" + }, + { + "path": "assets/python-B6aJPvgy.js", + "bytes": 69952, + "sha256": "7652ab863f920a5959c4aa52d6decb8c11d23fd590773977ce8aa0fbb3c555c4" + }, + { + "path": "assets/qml-3beO22l8.js", + "bytes": 5336, + "sha256": "5c58408fde8b3b813f2519a720d074dc688eaff4cc4b6db2fb1b6215dd4aff65" + }, + { + "path": "assets/qmldir-C8lEn-DE.js", + "bytes": 1002, + "sha256": "ad76c02c2bb338b0314af1cb1514f1fbbd31a1a78d5d931632e313fb9b374480" + }, + { + "path": "assets/qss-IeuSbFQv.js", + "bytes": 7472, + "sha256": "24a87ea2b74ac3f815e14d173752f42380cd4ad6faabba3b0737c66c83d7e8c3" + }, + { + "path": "assets/quadrantDiagram-CIZ2JOQS-BJ8EgoRf.js", + "bytes": 34630, + "sha256": "2487ac8260ce9a497047324d3c78b18eea7aef846f302075cd50dc9ac867457a" + }, + { + "path": "assets/r-Dspwwk_N.js", + "bytes": 6541, + "sha256": "a535cd6fea8b2a66a5f5433a367db740066053ae8ad3a531d8ed351b5fadf5a1" + }, + { + "path": "assets/racket-BqYA7rlc.js", + "bytes": 92389, + "sha256": "34061595fb5ce70cda2139f9d82f5a980821fd92ea3ad48c6bbdde5ce887ff01" + }, + { + "path": "assets/railroadDiagram-AXF67PYL-C3ytuEAu.js", + "bytes": 1738, + "sha256": "b3a26594570b6e7f60de1e5c5be8f484c0a4fdae9e01893474d545aafb552254" + }, + { + "path": "assets/raku-DXvB9xmW.js", + "bytes": 10472, + "sha256": "5fcd9c398ef0361d59c9d8122e3f949d13316c2f9dd673a3385c951b768ca711" + }, + { + "path": "assets/range-OtVwhkKS.js", + "bytes": 180, + "sha256": "e345dbcea93468c7665e5852c3100b230acfa238019bd48c42f1b1ba696c7d1a" + }, + { + "path": "assets/razor-Uh8Bk_45.js", + "bytes": 27510, + "sha256": "da4924826de242f392eee4bdbc5b6eb9974488520a6bbf81310fc42ba12acc98" + }, + { + "path": "assets/react-CRbEC-TR.js", + "bytes": 132118, + "sha256": "8cc56facad736ccc5b05d8bb59c09bcdc576e84d4954d7fe0c1754eb4494d23f" + }, + { + "path": "assets/react-vendor-Ba019tNT.js", + "bytes": 194398, + "sha256": "e9c7da5d9485026349e3c6cd194155c1dd69ce4a99084800fe96d44b89dacada" + }, + { + "path": "assets/red-bN70gL4F.js", + "bytes": 6262, + "sha256": "e16c7107408cb6110f4ef29bac94c1769e589df38f271160e6f52b1a4d27b6df" + }, + { + "path": "assets/reg-C-SQnVFl.js", + "bytes": 2345, + "sha256": "c944196b442e75be8722bce04f9aa6ef7698200cfe314e998cd29b70faa75fff" + }, + { + "path": "assets/regexp-CDVJQ6XC.js", + "bytes": 7988, + "sha256": "4f4da7e45d7bac4acaf584b492337cc0fcfc0b2453073026b7f2d2878935ed7a" + }, + { + "path": "assets/rel-C3B-1QV4.js", + "bytes": 3368, + "sha256": "5e46343461aedbfdd92b75bcc78bf3f40b0383490f4e139874221766c4c73158" + }, + { + "path": "assets/requirementDiagram-LRYGKXZP-hZPvV5fI.js", + "bytes": 31340, + "sha256": "e902a1162456ff96a635cb03ed1558b7329c506db2106cf4a7f397ea5f3fb9f3" + }, + { + "path": "assets/riscv-BM1_JUlF.js", + "bytes": 6914, + "sha256": "287e2bda433a92ccd15dbd75b8b95e2ee9ca016d3501387d1b923660fa69a52c" + }, + { + "path": "assets/ron-D8l8udqQ.js", + "bytes": 3914, + "sha256": "c91a2f5aabc02f69e8844c66e8abbb5e2d6997c5868b974679b0dca8e68a6746" + }, + { + "path": "assets/RoomTour-B3ofJfEV.js", + "bytes": 39035, + "sha256": "c913f9027e947afb74a9b0c83d7a9589937849e219538c198d1901b2a9bad444" + }, + { + "path": "assets/RoomTour-DRYXy7Ep.css", + "bytes": 23695, + "sha256": "f131cc82809364ba3fe1a0c6422d8b71749b6c15c591a453c1c02df544e71b36" + }, + { + "path": "assets/rose-pine-dawn-DHQR4-dF.js", + "bytes": 21754, + "sha256": "28569d6dc3cdbec1638a55294d4703993fffc7de3c4f96f9a9e7e0ee58271b45" + }, + { + "path": "assets/rose-pine-moon-D4_iv3hh.js", + "bytes": 21753, + "sha256": "54f8cee6d3bb36072d095cf6f3c42304149f984bb8ac005b4329502e469e4f58" + }, + { + "path": "assets/rose-pine-qdsjHGoJ.js", + "bytes": 21743, + "sha256": "bd1f7abe9b7645a7d2ea4769311d5b60b694a0577005cf76f13a76ef5c07034b" + }, + { + "path": "assets/rosmsg-BJDFO7_C.js", + "bytes": 4523, + "sha256": "895c74a701284063ecd96cff31b08b9e7d913b68d069907bd562b6db4f2a078d" + }, + { + "path": "assets/rst-BrH8l1NY.js", + "bytes": 10673, + "sha256": "d6c50859a0348550f4b31759c5538b6a44a7de757022ed08231d4944c7624cc6" + }, + { + "path": "assets/ruby-Dw2BHqvy.js", + "bytes": 45953, + "sha256": "ab3d7f8c774ddb0ac21c4666d98177263fa5e5640fb15513b68fcb1331b84e36" + }, + { + "path": "assets/rust-B1yitclQ.js", + "bytes": 15069, + "sha256": "c48161f6b21740ac415d982a627f24bb81081225f7405632784f667cf915d985" + }, + { + "path": "assets/sanitizeArtifactSvg-DK6rc30l.js", + "bytes": 481, + "sha256": "6fdd324919bf9a02f0d0e28680a05d8531c4854bb41888a84f5ef74b03b06371" + }, + { + "path": "assets/sankeyDiagram-W5VNT64P-CslkT_yU.js", + "bytes": 23470, + "sha256": "cd0e25ba3bfecd3863f31f571fe6fcad37be6c22624e0d6cf8a08d8ecb7d4a89" + }, + { + "path": "assets/sas-cz2c8ADy.js", + "bytes": 9062, + "sha256": "0605b0f0b9c6e33e0db7008a1ae9ee5d8bfed82f5db17d1124905ab226e320bc" + }, + { + "path": "assets/sass-Cj5Yp3dK.js", + "bytes": 9289, + "sha256": "d3d1152bdf9e9582f0d94521982944d7dacd0e8ece70a6a51dc621b146f90c05" + }, + { + "path": "assets/scala-C151Ov-r.js", + "bytes": 28884, + "sha256": "f4811c36dc6a16b2500146c2450c441e8ea673f57505a20c2a03c8b965248c65" + }, + { + "path": "assets/scheme-C98Dy4si.js", + "bytes": 7169, + "sha256": "743503a0223f9e794eaa6e2ec9b1a4b9e23870ea92f8a91c608bd5632159a820" + }, + { + "path": "assets/scss-OYdSNvt2.js", + "bytes": 27204, + "sha256": "b1026ec94017417e3c24178ae96e4134fe9ffadc50d1fbd8f622da7961ca70a7" + }, + { + "path": "assets/sdbl-DVxCFoDh.js", + "bytes": 4702, + "sha256": "09bba6eb98cb1660429de423a032b8ecc9e943af9b2ae4dc798fe665b2f4de19" + }, + { + "path": "assets/semanticGraph-CTg4iCsn.js", + "bytes": 30505, + "sha256": "f0a3b732dea02ffec3c0da87c7c9b3288da4171f0cf0035202f70f6610ed05cc" + }, + { + "path": "assets/sequenceDiagram-SI44F4Z6-Cltjxjh5.js", + "bytes": 117583, + "sha256": "bc64a49119829692651c573747ba6fa14c000e21b10bef2341f78f8425fe6b0b" + }, + { + "path": "assets/shaderlab-Dg9Lc6iA.js", + "bytes": 5922, + "sha256": "0f15272ff852b3807636b594b3f7ee05de4f01acf6cd35622e94c14eed99353f" + }, + { + "path": "assets/shellscript-Yzrsuije.js", + "bytes": 41479, + "sha256": "6a7311ff85af4098e170435bf140299e6be66e458e51d97ff91b2cea51300438" + }, + { + "path": "assets/shellsession-BADoaaVG.js", + "bytes": 711, + "sha256": "8bb2a6459a5dbbe5364b504567be9b0eec02b9271d893c6377a1bb64d3f13c25" + }, + { + "path": "assets/sizeCapture-X5ZJPWSS-869se4DW.js", + "bytes": 1130, + "sha256": "1392ad96e4fee7580714188f8e005f8d896b52e02471ca65832c1f4dcc853972" + }, + { + "path": "assets/slack-dark-BthQWCQV.js", + "bytes": 9117, + "sha256": "f9254bd3bd7981950384332249c3bd31ff108fc659edd24b49ee6716bc23fac0" + }, + { + "path": "assets/slack-ochin-DqwNpetd.js", + "bytes": 9431, + "sha256": "1ede16ae081bae361e415891901a4aa6dc20de301aef52403863933d74b76783" + }, + { + "path": "assets/smalltalk-BERRCDM3.js", + "bytes": 6587, + "sha256": "0920bbda736cbf5dc1c5acdeb961dedcdaf98dec24e153fb473c540f21347d6e" + }, + { + "path": "assets/snazzy-light-Bw305WKR.js", + "bytes": 20773, + "sha256": "7721708cf2d4a690c8c599de620236acddccbbfedacf09ab0c6cc463f60ebe00" + }, + { + "path": "assets/solarized-dark-DXbdFlpD.js", + "bytes": 6846, + "sha256": "2b283375c0600da201944caca3a2620bb9890d6bc28d69f4b989cca5ec11cb7b" + }, + { + "path": "assets/solarized-light-L9t79GZl.js", + "bytes": 6480, + "sha256": "873638320dde0e3d4261407d298960260305fd39179da30458271ffc0d6fae56" + }, + { + "path": "assets/solidity-rGO070M0.js", + "bytes": 16074, + "sha256": "6c8c7573726b8dec0ce1e54415c33e590f4551b15f97dbb34c2eb4426d21543e" + }, + { + "path": "assets/soy-Brmx7dQM.js", + "bytes": 6981, + "sha256": "dcd5c00fd4b67322d89a1930edfb14e841ff11cf98a332303b218d5568dfdecb" + }, + { + "path": "assets/sparql-rVzFXLq3.js", + "bytes": 1480, + "sha256": "7ad999b9fba56728f2297fbee2250f845093f2b57eacd1fcb045d6f5a32d7de2" + }, + { + "path": "assets/splunk-BtCnVYZw.js", + "bytes": 3436, + "sha256": "64ebc92eebd3550e91fbfc5fcbd72bfdec37d3e1d299660140ca28c2cd30cc1f" + }, + { + "path": "assets/sql-BLtJtn59.js", + "bytes": 23407, + "sha256": "e2621cd8e6d6bc3aad625e5da5afd16b8f1c64a40c77649ac6948a4b306174e5" + }, + { + "path": "assets/ssh-config-_ykCGR6B.js", + "bytes": 3617, + "sha256": "59773508bec4b474f7a01df0c9a1d67d9cc6a5e90cd8be3355e7a51d45a48718" + }, + { + "path": "assets/stata-BH5u7GGu.js", + "bytes": 56991, + "sha256": "11bb422f2421e05ce75bcfb2c8c8c0795309ac0462249ddc6a8f82cccd985ac9" + }, + { + "path": "assets/stateDiagram-OKZ733FA-DvqK4U94.js", + "bytes": 10562, + "sha256": "4f9959b68bbc22903161de394832be6fa7150d8bae30ecb8b7e5adc67a2c6d02" + }, + { + "path": "assets/stateDiagram-v2-UEYNNEHI-0szo7Drc.js", + "bytes": 560, + "sha256": "8356c77abdb01e486d1c803478b5d914d494642543f2bde11e1cb80f1e92b3a7" + }, + { + "path": "assets/step-Cl5gnEYj.js", + "bytes": 18212, + "sha256": "86f975c64771b1950d446b84be4e96ad5ffdd104e9570775c05a536cda375e35" + }, + { + "path": "assets/structuredDiagram.client-B0g9-ub2.js", + "bytes": 6291, + "sha256": "30e19c9e776155d51f1dcc5cbeb085400a96fb028b4080eb1e3fa8cdbe62efc7" + }, + { + "path": "assets/styles-ClFGusx6.css", + "bytes": 226185, + "sha256": "61c03a704d1b67e986fa4c2d94ac45c34d9b992776793404570ebb81f9ae4bca" + }, + { + "path": "assets/stylus-BEDo0Tqx.js", + "bytes": 31074, + "sha256": "7f4744cdde011a08696b25091cb57a8af8762c48fe52bda2f929376600a17f23" + }, + { + "path": "assets/surrealql-Bq5Q-fJD.js", + "bytes": 22583, + "sha256": "3ca44462a4b2e800e70e918dc6a861fcfb303df674f0109c9373fdac8dfcc130" + }, + { + "path": "assets/svelte-C_ipcX3V.js", + "bytes": 18242, + "sha256": "b070641a497d9730f796568d9242c5ac7061f9f839af423649b8647267ad0155" + }, + { + "path": "assets/swift-D82vCrfD.js", + "bytes": 86687, + "sha256": "8b87fd88e98da6fee33e181d3a03ad5e7fdec59008fa592c28a9ab28e28d8fbe" + }, + { + "path": "assets/swimlanes-SLNWSIFB-BJzbIiL4.js", + "bytes": 120519, + "sha256": "887a7a3cb060cf5e0845f02e3c1025474fc0db4daf10301a8c67bc37353b7301" + }, + { + "path": "assets/swimlanesDiagram-ULZ7WXOC-DeZIxC-T.js", + "bytes": 680, + "sha256": "285199d0b88086f72e93cfa1b4fd5954a108b92bc67e7dba14184af8cf4c57f7" + }, + { + "path": "assets/synthwave-84-CbfX1IO0.js", + "bytes": 14036, + "sha256": "345be8ec59dedde8193a830c5119b99ab1a263d8a0b8d0d98580b21e5b53856f" + }, + { + "path": "assets/system-verilog-CnnmHF94.js", + "bytes": 26203, + "sha256": "911a3857f3ec086298e981939056da2893098881fe5c100ec44132ba87f011ba" + }, + { + "path": "assets/systemd-4A_iFExJ.js", + "bytes": 7869, + "sha256": "7ee808ec3ed0bd4d87a6c0b5f034ce21b5522664b1a956381a3c287c674c0ffa" + }, + { + "path": "assets/talonscript-CkByrt1z.js", + "bytes": 6757, + "sha256": "df10bc43abea3666beac95f07c8082bbd953cfcce01b384cac1e5bb783e3d656" + }, + { + "path": "assets/tasl-QIJgUcNo.js", + "bytes": 3288, + "sha256": "f8ad184dcd423a710bfe0a7c84487334383318e2e1b7b98ef0371be9f3e6c130" + }, + { + "path": "assets/tcl-dwOrl1Do.js", + "bytes": 4429, + "sha256": "a1a8b949384eb718737fa7f088b806e0ab6736264dbd3135ca01eaee68295f12" + }, + { + "path": "assets/templ-P3uqSqPl.js", + "bytes": 24064, + "sha256": "5bc6bac791203f2e943afcfabbeb84ae08128397aefb7a5f319ae1645eaac7b4" + }, + { + "path": "assets/terraform-BETggiCN.js", + "bytes": 11389, + "sha256": "845d38e761505099172e28bb36870b326f66ab907aaa625fcc9c4d0fee4eca49" + }, + { + "path": "assets/tex-idrVyKtj.js", + "bytes": 9669, + "sha256": "0fb7d18ae0984bfed6a46009afb2a3c59e1b8d2fabd2c9088f66de457306a25a" + }, + { + "path": "assets/time-CF6dPw0p.js", + "bytes": 15183, + "sha256": "7f5d474122ebb97ca0001e8a9d9f90527d7362094aec2978d6b24b75fb4e85f5" + }, + { + "path": "assets/timeline-definition-Z64GVDOM-7q6s0E18.js", + "bytes": 31481, + "sha256": "b6cfb43181478ce4bfc76f5a5c947a1876475982f7eac5cf53b47b2343a5968f" + }, + { + "path": "assets/tokens-D_FyPjo0.css", + "bytes": 1333, + "sha256": "87cc97cbed8a9f1dbba624198de2a1bae08ddc3d6d44ffd57f903ff27c892d28" + }, + { + "path": "assets/tokyo-night-hegEt444.js", + "bytes": 35665, + "sha256": "e00a860ce7f328571e523246063124ac104fd16c7c4a1939985c04e2912dc8dc" + }, + { + "path": "assets/toml-vGWfd6FD.js", + "bytes": 6426, + "sha256": "13957c3e75de850523d59c55223a274de54f38319159b54c11a41e1e909965de" + }, + { + "path": "assets/TraceSurface-3Mc5xPHl.css", + "bytes": 11603, + "sha256": "9d3ecd1e704e5eb31b61dcf66e605ef30690cafefd088e005d1a0f5cf7d0b0c0" + }, + { + "path": "assets/TraceSurface-Ce9louCG.js", + "bytes": 61925, + "sha256": "f8afc539d49ee37cba404d279bdbc5fb888765fe9c087d17dbf6872fa0161605" + }, + { + "path": "assets/ts-tags-zn1MmPIZ.js", + "bytes": 8948, + "sha256": "69bcc441aa876587e58720c6b99457b56a6b08643249c262d3efee8bd69acd67" + }, + { + "path": "assets/tsv-B_m7g4N7.js", + "bytes": 739, + "sha256": "1a04ec966e09f3783309f7536dae8e824d4f8ec6ec0b6e1880c1b95a3d17762b" + }, + { + "path": "assets/tsx-COt5Ahok.js", + "bytes": 175536, + "sha256": "6f65bdaf80285d2241cf747f58b0c2bdd7485e25bbfbc0144840ed8e13f31a4d" + }, + { + "path": "assets/turtle-BsS91CYL.js", + "bytes": 3700, + "sha256": "b39750a94e32101604c09b24cbc2b03cfec7089ea6b3af27863d2889003046bd" + }, + { + "path": "assets/twig-DNn4PbVi.js", + "bytes": 21364, + "sha256": "8522bd1c3bbd67de36a3de2ab1864071d3264513ef45cbe587590a59a74370cb" + }, + { + "path": "assets/types-BSuKp-ii.js", + "bytes": 53421, + "sha256": "6f2ed4af532480a0a30a3f914e3740d89a0394f8ffa776752a42aede0163bec7" + }, + { + "path": "assets/typescript-BPQ3VLAy.js", + "bytes": 181080, + "sha256": "fcdcca54a7ccb637627d4dba50774a3dc7a5bae93a9f0a43c7748114b1d1d75f" + }, + { + "path": "assets/typespec-BGHnOYBU.js", + "bytes": 24020, + "sha256": "5dfdba0ad831c33537dfdd6bceecdde8c788b953500fa5b006027287949fa461" + }, + { + "path": "assets/typst-DHCkPAjA.js", + "bytes": 8387, + "sha256": "ff1b2bfc233e39112abd22f9ac638a833f1a2504929034f4559c9d88a1ecbcb2" + }, + { + "path": "assets/v-BcVCzyr7.js", + "bytes": 13214, + "sha256": "3580b3a6f9b7d1b570299b26518f866efd3d264369f1569395ddee1c39918af6" + }, + { + "path": "assets/vala-CsfeWuGM.js", + "bytes": 3370, + "sha256": "9ca40f96a2c5ea6c15a4aa070af170b6a4fb19dce1aea0162639c456e88c1ee6" + }, + { + "path": "assets/vb-D17OF-Vu.js", + "bytes": 6093, + "sha256": "c07bc7f87b29209a696181ee1952faa6855fc8424975a04514315972d652da0a" + }, + { + "path": "assets/vega.module-CiZgPkdT.js", + "bytes": 448416, + "sha256": "121f05965b1ae681d08efbb47bd1d3b41804a14a7621a8361a99f35b1400de8d" + }, + { + "path": "assets/vegaLite.client-DyLKQsB8.js", + "bytes": 2620, + "sha256": "416bf73edef80b588e5d8550e66435a65b80ef021992085cf6fb538532840da4" + }, + { + "path": "assets/vennDiagram-T6HMQDX7-Dh8nteQS.js", + "bytes": 42506, + "sha256": "4bea4fea9e08e951a3f046d5bab0c95cb933fa74a1e5dd063d23b988c2198b47" + }, + { + "path": "assets/verilog-BQ8w6xss.js", + "bytes": 5931, + "sha256": "d4e90d3476e4c94e05271d13254bb7ce735ba6fd8ed49292337d9356368a9eaa" + }, + { + "path": "assets/vesper-DU1UobuO.js", + "bytes": 12692, + "sha256": "ad07a972a70962a9f68b1028c90126dc75057cf9dd98f079d050a1bd11e6e19e" + }, + { + "path": "assets/vhdl-CeAyd5Ju.js", + "bytes": 24264, + "sha256": "4aa59b0e56b6ade915050f27c9359de4b33c7435f1e715b1027f6c44ff08d05f" + }, + { + "path": "assets/viml-CJc9bBzg.js", + "bytes": 20365, + "sha256": "255a5fbaf5961b394d403c022e2b57baf6855132db6ab4e8b3f8b6ccffdc5fc6" + }, + { + "path": "assets/vitesse-black-Bkuqu6BP.js", + "bytes": 13677, + "sha256": "f25530f6e39e64d7dcc0464821c2fff73bf5aab1e311d61645cd740e886a2160" + }, + { + "path": "assets/vitesse-dark-D0r3Knsf.js", + "bytes": 13759, + "sha256": "f3a4064c8e89ebd2349cf3dbf3e211d73b05d11cbd9bbc00feefa1820d74990b" + }, + { + "path": "assets/vitesse-light-CVO1_9PV.js", + "bytes": 13616, + "sha256": "272401bf8f7fa77313d7d3dbdc609a59bde479c8d69763047b5aa508e16ead9d" + }, + { + "path": "assets/vue-DN_0RTcg.js", + "bytes": 24484, + "sha256": "f281a5b5a38f6d7aca7ad2c5cfc54c5531603ef963798eddef0ca3a9bbdb600a" + }, + { + "path": "assets/vue-html-AaS7Mt5G.js", + "bytes": 8472, + "sha256": "a9066b052de965759c4456bed9e3e412c25f1050f3585a2dc6714747bbec1c0e" + }, + { + "path": "assets/vue-vine-CQOfvN7w.js", + "bytes": 190051, + "sha256": "95c5be9942daee9da06a3a00052df782c2a7f6b1c85ecbe261da63d35d5d09e7" + }, + { + "path": "assets/vyper-CDx5xZoG.js", + "bytes": 74648, + "sha256": "ff66f70ed9d0a15a77389cfc35cef85ff1f4932bef9e508f9a19b1c87d7f46e9" + }, + { + "path": "assets/wardleyDiagram-T6FBY63Y-Dyr7Pran.js", + "bytes": 26228, + "sha256": "fdfb254cea1c276fe7aa3c5cf1340e0a794f8cc6c2a625fd7956edd3af65549b" + }, + { + "path": "assets/wasm-CG6Dc4jp.js", + "bytes": 622336, + "sha256": "8deb47b0d7b203f733275b554ccf654df3b76026bd14cab89130ae2a61abd719" + }, + { + "path": "assets/wasm-MzD3tlZU.js", + "bytes": 12007, + "sha256": "ecac025bef526964873260d057a8af935fe8b86da2b9845051051266b019c8da" + }, + { + "path": "assets/wenyan-BV7otONQ.js", + "bytes": 2157, + "sha256": "40ed524c0cfce810853c17a6e99f8c357dc1ea9d5df901dcf60a2b7a45e63f7f" + }, + { + "path": "assets/wgsl-Dx-B1_4e.js", + "bytes": 5144, + "sha256": "97dee41e3f719e15ac2c06cbf36677252c7654e254f178128113744841a4806e" + }, + { + "path": "assets/wikitext-BhOHFoWU.js", + "bytes": 55885, + "sha256": "22c8b6a379a9a1aa4df1fa90a85d054b78c5414e772c062611997d98de2cdb64" + }, + { + "path": "assets/wit-5i3qLPDT.js", + "bytes": 21467, + "sha256": "2b2cfcdfceebf61cad332a1b126a7bce2afe89b0b5c6bf8791067154e8229bb9" + }, + { + "path": "assets/wolfram-lXgVvXCa.js", + "bytes": 262391, + "sha256": "5077bf9f804422eafafce9c7bc5bfd04f094ae624f0136c9a33daeac942fe75d" + }, + { + "path": "assets/WorkArtifactsPanel-D_e0NkQ-.js", + "bytes": 149992, + "sha256": "f763066cf152d302eed6874b001ec67354f6c684890f24e4848761de910e901e" + }, + { + "path": "assets/WorkArtifactsPanel-Dagy3OZH.css", + "bytes": 45068, + "sha256": "6f14e9ce7d8ce49125c2602074168ba4eab5e1f261ec4e6c906d943c17ca076c" + }, + { + "path": "assets/workbook-vendor-CUPSAa_W.js", + "bytes": 1037646, + "sha256": "eccb72317cb2fce48c2a945309525acb373add0f0d0c9794e34c568ec6187e71" + }, + { + "path": "assets/xml-sdJ4AIDG.js", + "bytes": 5384, + "sha256": "50f00554f7503986c098ada8706f8e6a8fdad39e5158c7626d31532a883a51e8" + }, + { + "path": "assets/xsl-CtQFsRM5.js", + "bytes": 1385, + "sha256": "b47bbb39b319947a57525dc114ec30eb2e697bf451be75f0b79850866f6811be" + }, + { + "path": "assets/xychartDiagram-ELKLHX3M-QuMVaLQv.js", + "bytes": 41956, + "sha256": "3e491e965de0499a64b3d698247b6e27f80322e3b3fe5de4c4e88fc1821dab07" + }, + { + "path": "assets/yaml-Buea-lGh.js", + "bytes": 10506, + "sha256": "a7a8b4fc14fa7ba338598f61185a3a13e49d7450830af367407ae61b9634bede" + }, + { + "path": "assets/zenscript-DVFEvuxE.js", + "bytes": 3912, + "sha256": "58a812eb8d71121ee3bd6e513b8a20555bec44f968f7c378bd7ecbfde05866a7" + }, + { + "path": "assets/zig-VOosw3JB.js", + "bytes": 5340, + "sha256": "7c369292579d89b781e91b76a4df1bfba604287c7a5e2c426925935ef08c0841" + }, + { + "path": "blog/index.html", + "bytes": 2055, + "sha256": "cccbc956a6a224efa4287aa00d71c61bf9ea2af8d608cac5343acb7ed3bac744" + }, + { + "path": "brand/noderoom/index.html", + "bytes": 3639, + "sha256": "fdad1e3ed56ff7c7cbda3c91498bac25c3c8cfd9a876b7bd896059db07d0073d" + }, + { + "path": "compare/google-docs/index.html", + "bytes": 2395, + "sha256": "a4bf38d36e6e293935f0394efa747c50179fbe24e66e446a3bdceda170cdf3f0" + }, + { + "path": "compare/notion-ai/index.html", + "bytes": 2434, + "sha256": "7497dc85d3cd791fb222c629932ab757339f4855a0be99a11c1a6667b4fe0c7e" + }, + { + "path": "compare/slack-ai/index.html", + "bytes": 2497, + "sha256": "ea03829eff25fff01624f0a45be9b89e4ff23c5e8d34447a8e1bfc8b52f0b610" + }, + { + "path": "eval/proofloop-prod-proxy-benchmark-matrix.html", + "bytes": 3402, + "sha256": "c1bb9341028d94aae86accba4bcd2e51bf60125f77cd407437e55e2f4769c7b0" + }, + { + "path": "eval/proofloop-prod-proxy-benchmark-matrix.json", + "bytes": 2462816, + "sha256": "f71b8e350c00b859ede53186693358a46dd4b0ec90c22ce3ed58a1508676ffb9" + }, + { + "path": "eval/proofloop-two-layer-certification-runner-plan.json", + "bytes": 74535, + "sha256": "0c9607ef492ee518c8d9bf7e8b8a7968ef4f1eec89a1574de9eace37280d0095" + }, + { + "path": "eval/PROOFLOOP_TWO_LAYER_CERTIFICATION.md", + "bytes": 5698, + "sha256": "34b9e95a706489a08f49b00e2a8159f2fc9bc2e5204350fe26b941431f167a2a" + }, + { + "path": "faq/index.html", + "bytes": 3513, + "sha256": "044bc9bd01cddde04356db57fdbb016244e4d19dd7451cf8d91d40c8879fdf55" + }, + { + "path": "google738995d085550980.html", + "bytes": 54, + "sha256": "08f485fc89765bcc0d72649b913d93425685e3395672e0ff8052e9214ee9783c" + }, + { + "path": "index.html", + "bytes": 17037, + "sha256": "d2e20740444bece5598ef470eb88bdfdfe2a4776d433b2e9f85058aa5d265652" + }, + { + "path": "learn/index.html", + "bytes": 2270, + "sha256": "a561cae59f23493d70b9f025c7247f3e431cb086ad9e17c7b25212e55f3f5892" + }, + { + "path": "llms.txt", + "bytes": 2022, + "sha256": "7ff4e14d42d00779d0189eca791062fbaa84a42f6b4f26cd9b4cc93b273c0ba7" + }, + { + "path": "pdf-fixtures/cropbox-offset.pdf", + "bytes": 658, + "sha256": "7291c8375ded0ffa802e93788bbf14afea8a86225de4783ac3accaef6cfdba45" + }, + { + "path": "pdf-fixtures/manifest.json", + "bytes": 1701, + "sha256": "73e5e626d14df0ed96ddc91909efc4571046bfbf624323c01f452d90a9c7928c" + }, + { + "path": "pdf-fixtures/multipage.pdf", + "bytes": 924, + "sha256": "35a808c4a76d3ecf392c497342dcefa3d692d7f9e74c87f53ce55c9100651eaf" + }, + { + "path": "pdf-fixtures/normal.pdf", + "bytes": 672, + "sha256": "4c328351f6ee4b76d9de79824762df88031b5ada40ac434cec058af8b8fda481" + }, + { + "path": "pdf-fixtures/rotated90.pdf", + "bytes": 628, + "sha256": "0328dbbdece51cc972a1dca0997f431d3e2a9d09d89e2a4d0e76bc7740cf628a" + }, + { + "path": "pdf-fixtures/shots/cropbox-offset.png", + "bytes": 10300, + "sha256": "e244a1893b2ff9b223f7b04db637e02ce124d1c4d573d44a12ed828afd47b754" + }, + { + "path": "pdf-fixtures/shots/multipage.png", + "bytes": 16382, + "sha256": "7540b37725a5ead0a682215a1228d9c70bb9f2bb3f7cac3aeb686123b944ffe4" + }, + { + "path": "pdf-fixtures/shots/normal.png", + "bytes": 24167, + "sha256": "b210b0fe8a9bc34950a7209e24cd3a3aed360f5ebd3b96dc9f363883cfd62672" + }, + { + "path": "pdf-fixtures/shots/rotated90.png", + "bytes": 16342, + "sha256": "793e4639ff94dea403f2fc37f8313060572b688031c2ef49e7ef5fdf8ee47b0c" + }, + { + "path": "pricing/index.html", + "bytes": 2232, + "sha256": "3e03834bc9c15e37b35592817a0fd4d86dd47aa108a44affd16d6a07c38033a8" + }, + { + "path": "pyodide/pyodide-lock.json", + "bytes": 113804, + "sha256": "c963d22858f6bcb8f41586a2142f03905ab370c88ea22a86a2736e95fac2a8f3" + }, + { + "path": "pyodide/pyodide.asm.mjs", + "bytes": 1250259, + "sha256": "c7eccdfeb7a8419d61f910f0685b45cd5610b7ff5bbe844c3c1050ee6623b641" + }, + { + "path": "pyodide/pyodide.asm.wasm", + "bytes": 9609998, + "sha256": "f7a8a169e513791e18fa0790fb69d6f2656b779e9012ba57e03e973f0df0b39f" + }, + { + "path": "pyodide/pyodide.mjs", + "bytes": 17843, + "sha256": "a09c81722a82cbd7ae9d0406cc5ccacd19a93b12612f837c7981189a35672919" + }, + { + "path": "pyodide/python_stdlib.zip", + "bytes": 2552456, + "sha256": "101a9c94ca6304c1478c89b7b595136b9a51b4289bdc5b467d86db553efee9b3" + }, + { + "path": "qa-trace/blank-room.png", + "bytes": 197813, + "sha256": "ad3c39e8ac019f5baffec7e55d64ddfcb8027c0ea1b829f728a64cc0bb5bdc12" + }, + { + "path": "qa-trace/btb-source.png", + "bytes": 108450, + "sha256": "fe82531784144930dfa51fdb8c3d7936b9e073d87e0ad32dbd41dcf80e87fdb2" + }, + { + "path": "qa-trace/demo-room-desktop.png", + "bytes": 383726, + "sha256": "cd5cc95160e1b813382840a643b8314a69aaead7c71fd39f55a5486eda5bc851" + }, + { + "path": "qa-trace/demo-room-mobile.png", + "bytes": 166439, + "sha256": "2c0932b7b37e9a4ca1dcce3449edb32339a2f1261ee824c681a3b71d27cfdcbd" + }, + { + "path": "qa-trace/walkthrough/step-1.png", + "bytes": 150272, + "sha256": "47c56f5d63373c7c6e4140e4c2108cbf262bafb879bc03beefa96de0bf045e94" + }, + { + "path": "qa-trace/walkthrough/step-2.png", + "bytes": 150272, + "sha256": "47c56f5d63373c7c6e4140e4c2108cbf262bafb879bc03beefa96de0bf045e94" + }, + { + "path": "qa-trace/walkthrough/step-3.png", + "bytes": 116252, + "sha256": "a24eb3c7db89a680468d6fafb5d8cd57c425520348fd0d923e2d9217901430aa" + }, + { + "path": "qa-trace/walkthrough/step-4.png", + "bytes": 149774, + "sha256": "ba56a7147c78b7c3cee66fe073cbc56b52084e633e7c58e485855a816a62badd" + }, + { + "path": "qa-trace/walkthrough/step-5.png", + "bytes": 142975, + "sha256": "073ac58ad67b39d331bbf533df5f1ac89fb62010d425267c83e4da2b564443ca" + }, + { + "path": "qa-trace/walkthrough/step-6.png", + "bytes": 195236, + "sha256": "43363ec329c72addeb9c72c57a048f9d83e80e63f80bb4005fd60e8c3ac78023" + }, + { + "path": "qa-trace/walkthrough/step-7.png", + "bytes": 191514, + "sha256": "b7ef0721663fec426940f035f2b85d41241a5cbf2e688c17c6bd7be18b7733c6" + }, + { + "path": "qa-trace/walkthrough/step-8.png", + "bytes": 240147, + "sha256": "f4d8c4deeee3edd0269cd05ac13d2e49f2c24df8ccc3474cc7c48db0466271af" + }, + { + "path": "qa-trace/web-source/source.png", + "bytes": 174002, + "sha256": "6f812deb6289250d33e92563790558fedede239db4206d9ac799197f9c3b3dcd" + }, + { + "path": "robots.txt", + "bytes": 371, + "sha256": "402604606ee7fd0c2fc452eb0aa97fd88a9defa539ecbebc47cba8d09f6f8ff7" + }, + { + "path": "seo/page.css", + "bytes": 3901, + "sha256": "850756416fee54416878e47a03495befa5e33343c1c32da3ee6512b001156d53" + }, + { + "path": "sitemap.xml", + "bytes": 2508, + "sha256": "a5d242d02415c64f7dd2c21e9e86faa34d056687bb1f39e656b7702cab7a78b9" + }, + { + "path": "solutions/ai-agent-collaboration/index.html", + "bytes": 2777, + "sha256": "aa0f5a3e0b9af6a478a9f196997d8fd99d5e3fe37ba293c6b46cde9166a09139" + }, + { + "path": "solutions/ai-diligence-room/index.html", + "bytes": 2778, + "sha256": "36ad2af8b880e26b14352c9a812b334661b88dcb090d250798a8c6e3f9387440" + }, + { + "path": "solutions/ai-research-workspace/index.html", + "bytes": 2804, + "sha256": "3e4e4b604938e776d33c4bd9fda27bb05899a9b907fb34c79004658c0cd12889" + }, + { + "path": "solutions/collaborative-ai-workspace/index.html", + "bytes": 2869, + "sha256": "bdd0786849d3efec943d54f5a5ca969eb183122a2f6f19831fa1d0759e23b0c5" + }, + { + "path": "solutions/index.html", + "bytes": 3414, + "sha256": "27e94959f7d9bc401ded10af7aa2c82c2c5ef38beed0f64689c4b8e9ce516ced" + }, + { + "path": "solutions/source-backed-ai-workflows/index.html", + "bytes": 2763, + "sha256": "24ae11666ed351e53848defc6dbe713926abb7217c547975e19f6ff8e0d8db48" + }, + { + "path": "use-cases/finance/index.html", + "bytes": 2362, + "sha256": "cbc3ee07c126e2b5eafe81f3ea547d06f7c6eac6cdcaf398233092fd104558f4" + }, + { + "path": "use-cases/index.html", + "bytes": 3053, + "sha256": "f4909dbe176c221a520af772d5b6d5ea283016bb00a3f7294583be2a2a7a48dd" + }, + { + "path": "use-cases/sales/index.html", + "bytes": 2255, + "sha256": "52313cb0a33729cb34a0cbf6c5259545065cd417e66142b95b66a43821d5496a" + }, + { + "path": "use-cases/startups/index.html", + "bytes": 2358, + "sha256": "1e1fa83dc61e7f8e93c39b1ca2dd72cf834fa817b8195454b3e44e3934775f71" + }, + { + "path": "use-cases/students/index.html", + "bytes": 2199, + "sha256": "7dba4e37246a193b568a2648fd270e0a1cb54bde281cd9a6a4a8983686174c10" + } + ] +} diff --git a/evidence/desktop-account-20260905/operator/before-design-manifest.command.json b/evidence/desktop-account-20260905/operator/before-design-manifest.command.json new file mode 100644 index 00000000..63d09199 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/before-design-manifest.command.json @@ -0,0 +1,16 @@ +{ + "startedAt": "2026-09-05T16:28:26.335288+00:00", + "finishedAt": "2026-09-05T16:28:27.089737+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "run", + "design:manifest" + ], + "timeoutSeconds": 60, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 0.75, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\before-design-manifest.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" +} diff --git a/evidence/desktop-account-20260905/operator/before-design-manifest.log b/evidence/desktop-account-20260905/operator/before-design-manifest.log new file mode 100644 index 00000000..28b7656d --- /dev/null +++ b/evidence/desktop-account-20260905/operator/before-design-manifest.log @@ -0,0 +1,290 @@ + +> noderoom@0.1.1 design:manifest +> tsx scripts/design-system.ts manifest --json + +{ + "apiVersion": 1, + "type": "noderoom.design-system.manifest", + "data": { + "name": "NodeRoom Design System", + "version": 1, + "inspiration": [ + { + "source": "facebook/astryx", + "appliedAs": "CLI-readable manifest and audit, not runtime component replacement." + }, + { + "source": "Astryx principle: guidance over enforcement", + "appliedAs": "Document concrete component roles and catch the highest-risk regressions with checks." + }, + { + "source": "Astryx principle: one system for humans and agents", + "appliedAs": "The same manifest is readable by people, tests, and coding agents." + } + ], + "principles": [ + "Default state shows data; hover or focus reveals apparatus.", + "Receipts are product objects, not status-bar prose.", + "Selection is terracotta or neutral; green is reserved for success semantics.", + "Dense work surfaces use fixed dimensions and ellipsis instead of mid-word wrapping.", + "Mobile exposes desktop hover details through sheets or compact controls, without page overflow.", + "Demo or walkthrough chrome must be dismissible and must not become permanent product furniture." + ], + "tokens": [ + { + "name": "--space-1", + "role": "4px spacing base", + "value": "4px" + }, + { + "name": "--accent-primary", + "role": "selection, focus, and agent provenance accent", + "value": "#D97757" + }, + { + "name": "--success", + "role": "completed/success only, never selection", + "value": "#2E9E6B" + }, + { + "name": "--focus-ring", + "role": "keyboard-visible focus halo", + "value": "terracotta alpha ring" + }, + { + "name": "--r", + "role": "default container radius ceiling", + "value": "12px" + } + ], + "components": [ + { + "name": "SheetGrid", + "selectors": [ + ".r-sheet", + ".r-cell", + ".r-sheet-bar" + ], + "role": "Dense spreadsheet surface for diligence data.", + "must": [ + "Rows are 44px in the generic sheet.", + "Cell values ellipsize and retain full value in title or detail path.", + "Column count lives in the sheet bar.", + "Agent-written cells can pulse without changing layout." + ], + "avoid": [ + "word-break: break-all on grid values.", + "Green selection rings.", + "Rows stretched by badges or receipts." + ] + }, + { + "name": "ReceiptChips", + "selectors": [ + ".r-cite-chip", + ".r-agent-receipt", + ".r-agent-receipt-chip" + ], + "role": "Visible provenance for sources, versions, locks, and row targets.", + "must": [ + "Agent research messages expose source count, version delta, lock release, and row navigation.", + "In-cell cite chips reveal source detail without expanding row height.", + "Large sheets gate passive evidence overlays so receipts do not blanket the grid." + ], + "avoid": [ + "Claims only in chat prose.", + "Source badges that stretch row height.", + "Duplicate source-chip plus cite-chip treatment in source columns." + ] + }, + { + "name": "IdentityChips", + "selectors": [ + ".r-owner-chip", + ".r-owner-avatar", + ".r-avatars" + ], + "role": "Consistent person/agent identity language across chat, grid, and shell.", + "must": [ + "Owner cells use avatar chips instead of bare names.", + "Avatar labels remain compact and ellipsized." + ], + "avoid": [ + "Plain owner text in dense grids." + ] + }, + { + "name": "WalkthroughDock", + "selectors": [ + ".r-walkdock", + "[data-testid=\"walkthrough-dock-dismiss\"]" + ], + "role": "Optional learning chrome that never traps the product viewport.", + "must": [ + "Dismiss control is always present.", + "Phone layout fits without body overflow." + ], + "avoid": [ + "Permanent second status bar." + ] + }, + { + "name": "ScaleBinder", + "selectors": [ + ".r-binder-search", + ".r-binder-count", + ".r-tree-section-head", + ".r-tree-row", + ".sc-count" + ], + "role": "Large-room Binder navigation for hundreds of workbooks and dozens of live people.", + "must": [ + "Large rooms expose real workbook counts and search.", + "Pinned, recent, sheet, doc, notebook, and upload sections render as a nested tree.", + "People lists collapse while preserving the live count." + ], + "avoid": [ + "Rendering every artifact or participant row in the default scale viewport.", + "Summary-card groups that duplicate the tree navigation." + ] + }, + { + "name": "SharedDialog", + "selectors": [ + "FocusTrapDialog", + "[role=\"dialog\"][aria-modal=\"true\"]" + ], + "role": "Shared modal behavior for regular rooms and public room overlays.", + "must": [ + "Trap focus inside the dialog.", + "Close on Escape and scrim click.", + "Restore focus to the opener when the caller provides a trigger path." + ], + "avoid": [ + "One-off modal traps in feature bundles." + ] + }, + { + "name": "MobileTerracottaRoom", + "selectors": [ + ".na-app", + ".na-nav", + ".na-sheet", + ".na-ios-bleed" + ], + "role": "NodeRoom mobile system: cream, terracotta, stable room commands, bottom navigation, and governed sheets.", + "must": [ + "Use the terracotta mobile tokens, not the dark Always-On public-room shell.", + "Render the same .na-app shell in memory preview and live room mode.", + "Render synthetic device chrome only in explicit preview mode and keep production full-bleed.", + "Expose room, agent, inbox, artifact, and sheet actions through mobile-native controls." + ], + "avoid": [ + "Calling public #rooms mobile parity proof for the #mobile product route.", + "Proving only #mobile?mode=memory when validating live user usage.", + "Replacing bottom sheets with clipped desktop tables on phones." + ] + }, + { + "name": "MobileLiveBootstrap", + "selectors": [ + "?demo=review", + "?room=", + "#mobile?demo=review", + "#mobile?room=", + ".na-join", + "RoomJoinConsent" + ], + "role": "Universal mobile entry path that routes phone-sized NodeRoom URLs into live terracotta create/join before mounting MobileTerracottaRoom.", + "must": [ + "Route phone-sized standard NodeRoom URLs into #mobile before desktop or public-room shells render.", + "Keep a named surface=desktop harness escape for desktop responsive QA, not for normal users.", + "Route demo creation through explicit consent before minting the room.", + "Support join, demo, and create intents from standard URL parameters.", + "Replace the URL with #mobile?room= after a live room is created or joined.", + "Mount MobileAppLive inside the same terracotta shell as memory mode." + ], + "avoid": [ + "Requiring real mobile users to know or type a #mobile hash.", + "Landing first-time phone users on the dark public-room shell.", + "Auto-firing live room mutations from URL parsing.", + "Using ?mode=memory as proof of live room behavior." + ] + }, + { + "name": "PublicRoomFrame", + "selectors": [ + ".ao-public", + ".ao-frame", + ".ao-proof" + ], + "role": "Always-On public room variant of the NodeRoom work surface.", + "must": [ + "Expose data-ao-source so demo and live states are distinguishable.", + "Use the shared token system for surfaces, focus, ink, and semantic states.", + "Keep proof receipts visible as product objects." + ], + "avoid": [ + "Demo-only metrics in live bundles.", + "Fake proof copy without a stored receipt." + ] + }, + { + "name": "PublicRoomControls", + "selectors": [ + ".ao-btn", + ".ao-chip", + ".ao-tab", + ".ao-filter" + ], + "role": "Public-room button, chip, tab, and filter variants.", + "must": [ + "Use the same focus-ring and accent semantics as .r-* controls.", + "Support keyboard tab roving on tablists and radio groups.", + "Keep mobile controls clickable without horizontal page overflow." + ], + "avoid": [ + "Invisible focus state.", + "Duplicated dialog behavior." + ] + }, + { + "name": "PublicRoomDataSurfaces", + "selectors": [ + ".ao-sheet", + ".ao-paper-cards", + ".ao-runlog" + ], + "role": "Read-only public data surfaces for papers, mobile cards, and proof traces.", + "must": [ + "Keep desktop tables dense and ellipsized.", + "Use mobile cards for small screens instead of clipped tables.", + "Keep trace rows bounded so costs, retries, and skipped work remain inspectable." + ], + "avoid": [ + "Unbounded table overflow on phones.", + "Trace rows whose child content escapes the row." + ] + } + ], + "auditChecks": [ + "required token aliases exist", + "generic sheet rows stay 44px", + "grid values ellipsize instead of breaking words", + "selected sheet cell is not success green", + "agent research receipt exposes source, version, lock, and row target", + "scale sheets expose filters and rendered-row window proof", + "large sheets demote passive evidence overlays and duplicate source badges", + "scale columns use domain widths instead of generic label-length compression", + "large binders expose count, search, nested tree navigation, and collapsed people", + "walkthrough dock is dismissible", + "phone top bar hides secondary utilities instead of clipping them", + "shared dialog primitive backs both regular-room and public-room modals", + "mobile terracotta room is tracked separately from public Always-On rooms", + "mobile live bootstrap can enter a Convex room without memory-mode shortcuts", + "public Always-On room exposes live/demo source, keyboard tabs, mobile cards, and proof receipts", + "public subscription copy does not claim a confirmation email was sent before a sender exists", + "token drift (off-palette hex, off-scale font-size, off-scale border-radius) is reported as warnings" + ] + } +} diff --git a/evidence/desktop-account-20260905/operator/before-head.txt b/evidence/desktop-account-20260905/operator/before-head.txt new file mode 100644 index 00000000..72a617a6 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/before-head.txt @@ -0,0 +1,2 @@ +034a8f963dfa037d860f5364032319506be3e2e0 +8fbd0d5d0ca31a71a70c45208ba8a5fd6a64a831 diff --git a/evidence/desktop-account-20260905/operator/before-refs.txt b/evidence/desktop-account-20260905/operator/before-refs.txt new file mode 100644 index 00000000..6116c8a4 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/before-refs.txt @@ -0,0 +1,107 @@ +refs/codex/turn-diffs/captures/1784577718666/fd50487b-60f8-4775-a912-d706336b88d8/base 24881e0f798a3d4223078cdb56b991a2fe87e62c +refs/codex/turn-diffs/captures/1784594690139/97ba2c25-42ec-4ab0-83a5-52123669780e/base 24881e0f798a3d4223078cdb56b991a2fe87e62c +refs/codex/turn-diffs/captures/1784597946230/ee663a3e-cef1-48e8-b1b3-d15d4ca9070e/base 24881e0f798a3d4223078cdb56b991a2fe87e62c +refs/codex/turn-diffs/captures/1784614599853/245317cf-560a-4243-bb22-e8c57dbd0206/base 24881e0f798a3d4223078cdb56b991a2fe87e62c +refs/codex/turn-diffs/checkpoints/11ce1718621b8c19888f21276820eec0f806d6d21a30d5800dd595f6d41c0e4a/eb48d4aa73373414ee7aedd7a21c3e5c1ce54be4cf1928bbba288a224ff025b5/1784627460885/420ee823-6777-41fa-8090-32d6dada00af 24881e0f798a3d4223078cdb56b991a2fe87e62c +refs/codex/turn-diffs/checkpoints/6cd1e51c2dc200ebdd45b0ec705e9b21b17248e61742cb4172fa80c36ae1761e/40daa58ac95334dff03d1e10489f36667a85f9ac4c106e805c3c391f05321746/1784516846400/5ef4357d-774b-4bb3-9ad4-ddd920a5289e 5fd9ea278c6b6830008bb12c5a34194e3d397af5 +refs/codex/turn-diffs/checkpoints/9ee51a43de9735d7ab41129d8a0cc1a338fe9c54f9107d3f79c8b7cded846af3/eba81e866a7a77bacaf14d42d283db4e3d7f8381f440aa204d073655ea9af552/1784537149963/0e9870c1-1b1f-4079-b50e-4ffe5489ae81 24881e0f798a3d4223078cdb56b991a2fe87e62c +refs/codex/turn-diffs/checkpoints/c0cc4334a8defecc660a2aadaab3a1cd03a403dd78e445edbbff9593b1dee4f6/b0552934ef3d3a5098b9f6a31485d64787071514d5553a7f71327bcc674243c3/1784157400890/545c9cfa-1b3f-4563-9f83-944ba0f55ee3 a966f9d3c9c509b97c871a324d4bc4e269f5bfd5 +refs/codex/turn-diffs/checkpoints/f3944cb5dbcea3aae809641adb69e4569a1fe9a235c386cc9be6b469a245867b/f692d67644f958ada4ea4e62dc80f55892dc85e5403741c100cdde0bb2548c7f/1784259268834/c2a7e86e-5f64-4414-ad58-13bde2ea67d6 af0bb99f6215ddf5777d6cbe9d55bfccb32f414e +refs/heads/codex/noderoom-current-consumer-20260905 3576237259535dbcddb5faa0925e4c5a0ceb8979 +refs/heads/codex/noderoom-desktop-account-20260905 034a8f963dfa037d860f5364032319506be3e2e0 +refs/heads/demo/motion-landing 558460c874e98a816e90f5077b266e1a84955a13 +refs/heads/demo/plain-words-copy 558460c874e98a816e90f5077b266e1a84955a13 +refs/heads/main 2b3e5bd718b80747f32257a8b8af5f15e2310699 +refs/remotes/origin/claude/brave-einstein-e177ab 3bc04193ff8da20ece7fb70168b80aea83e59b14 +refs/remotes/origin/claude/charming-lumiere-1a943f 156485e04f5bcecca0944560f1decad8cc4620fe +refs/remotes/origin/claude/crazy-wilson-89b3a4 2085c572042d8f9324d13e01cec2a0ba1f4acd0b +refs/remotes/origin/claude/inspiring-newton-187f71 c74a2fcc38d1d2ee46e8a301fac61e041b8ab28b +refs/remotes/origin/claude/magical-yonath-86a48c 9d96ed02247311c9972b0756dbb8901fa03dbeb0 +refs/remotes/origin/claude/notebook-deploy-follow 126b8fa2518a99437128a2c56b6bd3d7b8341e34 +refs/remotes/origin/claude/notebook-pickups 95095a58197aca3203847466f9d27b33c2c5339f +refs/remotes/origin/cleanup/ui-legacy-wave1 045101fd5df91b3a063fb996691df508ecff48ee +refs/remotes/origin/codex/always-on-design-honesty 3eb7b40287508553a9d5f2ec71c4446c9bda4d74 +refs/remotes/origin/codex/always-on-responsive-analysis 6e06283e0f7a104758058c12d5ca38b86ad63944 +refs/remotes/origin/codex/casca-fde-evidence-package 82e149427bedb573ec62137364c6851596c67e73 +refs/remotes/origin/codex/design-parity-proof 33b77628133146c5b6a1385d014ad18382fdf2e5 +refs/remotes/origin/codex/design-ui-contract 84152051661afd3d8c023195d74f5fae3ed0c480 +refs/remotes/origin/codex/finalize-remaining bd3881dfe452d43280d5dfbdcd09b05e01150860 +refs/remotes/origin/codex/finish-all-remaining bd3881dfe452d43280d5dfbdcd09b05e01150860 +refs/remotes/origin/codex/free-proxy-all-night bcbd28c50367e77ad8b24c09a933159bb50b862c +refs/remotes/origin/codex/full-proxy-benchmark-sweep a9c47b56d5faf5d920be117238421502a020161f +refs/remotes/origin/codex/hackwithbay-3.0 387a924c5880eece5ad477c29df4b6166e5b19d6 +refs/remotes/origin/codex/i7-mounted-browser-proof f40f48aebd9fb213df52fdbaf50711a7e2714736 +refs/remotes/origin/codex/live-first-user-ai-elements d2ed30438a486855a70baf3e042cbc7b804a41e8 +refs/remotes/origin/codex/live-starter-room-main c9bb8aec5ab23c554dc6899d043681f8de553a06 +refs/remotes/origin/codex/mobile-terracotta-launch 77757c42a9783072efca1317ef85789557dfea3f +refs/remotes/origin/codex/model-picker-cleanup 41b6e0ebb0a5fe8b7c27d8f3ca2acf94a4f092eb +refs/remotes/origin/codex/model-picker-polish 814a27ab8d1bc94afb4c1ff3164218d17d940299 +refs/remotes/origin/codex/nodeagent-prod-route-evidence e985074a4cc347bb52592b58ea65ea6f3411e53c +refs/remotes/origin/codex/nodekit-caseflow-consumer bf1c905bebf18e1f758e8d1abe5caa1c98662242 +refs/remotes/origin/codex/nodekit-contract-alignment a4998c91ca04670adddc26b80551f415c3f195ce +refs/remotes/origin/codex/nodekit-contract-reconcile 65f8cfe4b2bd0c3665e7d111ce3e9e1b0df702d4 +refs/remotes/origin/codex/noderoom-current-consumer-20260905 3576237259535dbcddb5faa0925e4c5a0ceb8979 +refs/remotes/origin/codex/noderoom-smb-lending 985afeb2f48ee6bd70d7958163adf86ce276b90f +refs/remotes/origin/codex/noderoom-smb-lending-convex 5032ec91076488dea48bb1f4f18b32961184455d +refs/remotes/origin/codex/noderoom-smb-lending-production-proof 3a8f4209893e80104aef793149496542369a080d +refs/remotes/origin/codex/noderoom-split-before-rebase caadbf93df3e51610a3e2761f02e0b898211cd2b +refs/remotes/origin/codex/nodeslide-consumer-contract b79623349eb8aaf321ca53a3b68788862ed3ca80 +refs/remotes/origin/codex/nodeslide-consumer-proof 2cced7395df623392c8692b40cdad791f5a1cf4d +refs/remotes/origin/codex/nodeslide-v0.2.2 cfe8069ead0cc637f6f7de908b05b95be302e1d9 +refs/remotes/origin/codex/nodeslide-v0.2.2-bind 1c7a3101464cbab6a8768142d8bde46779da8221 +refs/remotes/origin/codex/non-memory-live-proof 80f8ee7a6f8deab1099192b6739a5820ddcf72b9 +refs/remotes/origin/codex/non-memory-prod-proof-evidence 527918a4b08751814fac2d16c1f204e037c3e349 +refs/remotes/origin/codex/notebook-read-model-kernel dce4e3bfa6f51e9bebebce59ef2767cd10f8bdb2 +refs/remotes/origin/codex/prod-convex-deploy 15d8beaf910d1bac76add8368518663cb36678a4 +refs/remotes/origin/codex/prod-proxy-benchmark-runner 86bd2e28d8398d94c91e8658cc0e32c4e12a06b4 +refs/remotes/origin/codex/prod-proxy-matrix-public 0a006fe47a744477e4710af8ce5257fed4d095d2 +refs/remotes/origin/codex/prod-walkthrough-copy 3925d18329906ebace6a00a02e0a16cf464d773b +refs/remotes/origin/codex/product-hunt-readiness 029906739a9b0e903b7627b363364eaff7ab9653 +refs/remotes/origin/codex/proofloop-adapter-blocker-receipts 4cf02535746f8ba2c532f0dadd18098a50fb7c3c +refs/remotes/origin/codex/proofloop-agent-friendly-cli 92fc5bee801638caa4cca342d19f7903cc63c2a1 +refs/remotes/origin/codex/proofloop-astryx-setup-complete b8ee36a4dfb55ef614c0e7626a0d13024383d9b7 +refs/remotes/origin/codex/proofloop-auth-boundary 25cd1e642cc523746cba8d165beed24411d4da22 +refs/remotes/origin/codex/proofloop-benchmark-separation 9182995517fa9fb4529d69641b9e199bebc7e7f5 +refs/remotes/origin/codex/proofloop-blocker-solver a4da2ece549c520db59196cb3787737c2dc7c557 +refs/remotes/origin/codex/proofloop-company-harness-economics c2d8b542a51b4331feae96ae120d503cf3026e19 +refs/remotes/origin/codex/proofloop-local-adapter-proofs 0a756f10a51d39dffc4e334db31f38b766736d5d +refs/remotes/origin/codex/proofloop-longrun-budgeted-matrix 813b4bf95cb8b1cdfb2d5c448a31857188771adb +refs/remotes/origin/codex/proofloop-loop-contracts 28ae67749cffe9d68a918faaae3f132be1b9dd12 +refs/remotes/origin/codex/proofloop-normalized-benchmark-ir 979bfe8c8121c844ee619ead7d4f8a20c0dea92e +refs/remotes/origin/codex/proofloop-official-score-scorers e5ed572a2c9275818a093ddd6f48ec9a12b79268 +refs/remotes/origin/codex/proofloop-orchestrator-v1 1b9eaf584ba73d8d65ba2566e37b6c44b8e8ef37 +refs/remotes/origin/codex/proofloop-prod-classifier 9eb2b502c94f3c90cfdf8463be95fb6da9bdcd14 +refs/remotes/origin/codex/proofloop-strict-live-official 81f86c6ed17f472239799fc05d42c5ce4249bf60 +refs/remotes/origin/codex/proofloop-supervisor-governance 706f7bc6fac2649a4e973316495d9c11526fc6b1 +refs/remotes/origin/codex/remediate-npm-audit 4fd2671454674de391da51808f2440f53dbd70b0 +refs/remotes/origin/codex/rocketride-execution-port 353ddcce5b4ee791c4a0d70713a47ab302a643b9 +refs/remotes/origin/codex/two-layer-proofloop-orchestration 85d47a13cd5c70ee5c8e5380b1c7ad950c44a8e8 +refs/remotes/origin/codex/vitest-audit dd28283e8e9abe9632ec069804ba892cfd0aaae7 +refs/remotes/origin/codex/workbook-identifier-reference-fix a40746b7b3bc2f79782adabe08d6e220ef446c23 +refs/remotes/origin/demo/plain-words-copy 558460c874e98a816e90f5077b266e1a84955a13 +refs/remotes/origin/design/clean-room-parity 2a28b3a8a4130947190c26f7ff84e50e8b24e2f1 +refs/remotes/origin/feat/attention-overlay 5f0c738cfdf810f80ae6005b5dd2e93e67c7ac42 +refs/remotes/origin/feat/nodekit-note-reference-receipts 34d5a16181c8d447a91f39f96670319e6234bf53 +refs/remotes/origin/feat/nodekit-opportunity-contract 70c02b7b456d1f5126bc42732f2370b57b91509f +refs/remotes/origin/feat/note-surface-dna a161cec872b1e0c80535774713c0b0c545923f70 +refs/remotes/origin/fix/gitignore-deploy-secrets 69f168f7c559a44977d2ea8a53f04b16a59a2484 +refs/remotes/origin/main 034a8f963dfa037d860f5364032319506be3e2e0 +refs/remotes/origin/notebook-pickups/main a6b78041ebf1f10af3020d29e8d7199dd36e04a4 +refs/remotes/origin/parity-recheck 839d2bdd1962f8051f7157bcc8e55bda5df4b1a1 +refs/remotes/origin/parity-wave1 04e9818653800a9860f2b09ff65d8ad898f2c4a6 +refs/remotes/origin/parity-wave2 8d840b5cdeb3f04beb09ecd8d6d01c74941f5ce0 +refs/remotes/origin/parity-wave3 27d5e8c9acf800a39f94c99f80c2130cad508732 +refs/remotes/origin/preserve/fleet-routing-fix-wip-20260706b 086118261799ccdd63ce040872f9dc7cd8e5d614 +refs/remotes/origin/preserve/fleet-underwriting-wip-20260706 1e5cc4fbfc075b222c30fd2c8e845d37d4018882 +refs/remotes/origin/preserved/finish-all-remaining-20260803 56e24f4c107985a484b5337322c7022103058208 +refs/remotes/origin/preserved/noderoom-smb-lending-20260803 985afeb2f48ee6bd70d7958163adf86ce276b90f +refs/remotes/origin/ship-wave4 f3a417d9c5b13bf2cb714435483639b2c7ca9e4b +refs/remotes/origin/visual/motion-landing 13d9ef8a0926c7329326fcdb0044f4bacbef5338 +refs/remotes/origin/walkthrough-notebook e0f894dd9d6c43f4d2ff9a1cb48055f2e46f24c8 +refs/remotes/origin/wave3-human-ready d022d42d3c9b529779d6a922ae2e191f8bbb2c87 +refs/remotes/origin/wip/full-tree-backup-20260717 018b454c19d996a14d0a3d0d07d7ef3c201b2975 +refs/remotes/pr/109 9b94918547614f8f07d05a396a5534dd0b67b4f7 +refs/remotes/pr/113 0ac1179be64e0bb23036439c54d7f140b5280687 +refs/remotes/pr/126 b36ede4c84be303ee60bcf81b4d40bb808c41709 +refs/remotes/pr/127 3c022bfcb03ace1d8027925c49dd2ebff29831d5 +refs/stash 383529bc53245247d46720652dfd047242d79be3 diff --git a/evidence/desktop-account-20260905/operator/before-status.txt b/evidence/desktop-account-20260905/operator/before-status.txt new file mode 100644 index 00000000..e69de29b diff --git a/evidence/desktop-account-20260905/operator/before-worktrees.txt b/evidence/desktop-account-20260905/operator/before-worktrees.txt new file mode 100644 index 00000000..014d6a2d --- /dev/null +++ b/evidence/desktop-account-20260905/operator/before-worktrees.txt @@ -0,0 +1,16 @@ +worktree D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/noderoom +HEAD 2b3e5bd718b80747f32257a8b8af5f15e2310699 +branch refs/heads/main + +worktree C:/Users/hshum/AppData/Local/Temp/claude/D--VSCode-Projects-cafecorner-nodebench-nodebench-ai4-node-platform/f7b21934-d259-4766-82d4-3607f84fcbbe/scratchpad/noderoom-copy +HEAD 558460c874e98a816e90f5077b266e1a84955a13 +branch refs/heads/demo/plain-words-copy + +worktree C:/Users/hshum/AppData/Local/Temp/claude/D--VSCode-Projects-cafecorner-nodebench-nodebench-ai4-node-platform/f7b21934-d259-4766-82d4-3607f84fcbbe/scratchpad/noderoom-motion +HEAD 558460c874e98a816e90f5077b266e1a84955a13 +branch refs/heads/demo/motion-landing + +worktree D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905 +HEAD 034a8f963dfa037d860f5364032319506be3e2e0 +branch refs/heads/codex/noderoom-desktop-account-20260905 + diff --git a/evidence/desktop-account-20260905/operator/before/Q3_variance.xlsx b/evidence/desktop-account-20260905/operator/before/Q3_variance.xlsx new file mode 100644 index 00000000..98f62b33 Binary files /dev/null and b/evidence/desktop-account-20260905/operator/before/Q3_variance.xlsx differ diff --git a/evidence/desktop-account-20260905/operator/before/change-boundary.md.txt b/evidence/desktop-account-20260905/operator/before/change-boundary.md.txt new file mode 100644 index 00000000..0128c3c7 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/before/change-boundary.md.txt @@ -0,0 +1,3 @@ +# CHANGE A: exported Account values + +A reviewer sees five Account labels but receives five blank cells in the real XLSX. The3px box marks the current Account column, not a proposed screen redesign. Change only the two current canonical Q3 workbook field lookups; preserve visible table, computed variance, edited note, numeric/formula/format behavior, uploaded sheets and shared download transport. Captured on merged034a8f9 current source and installed reviewed dependencies at1440x960, actual memory journey, fallback fonts, no provider. DOM restored exactly after removing the overlay. The workbook is parsed directly; no native Excel claim. diff --git a/evidence/desktop-account-20260905/operator/before/change-boundary.png b/evidence/desktop-account-20260905/operator/before/change-boundary.png new file mode 100644 index 00000000..0800e17c Binary files /dev/null and b/evidence/desktop-account-20260905/operator/before/change-boundary.png differ diff --git a/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-downloaded.html.txt b/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-downloaded.html.txt new file mode 100644 index 00000000..16732a58 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-downloaded.html.txt @@ -0,0 +1,157 @@ + + + + NodeRoom - live collaborative AI rooms with NodeAgents + + + + + + + + + + + + + + + + + + + + + + + + +
N
NodeRoom · Q3 diligence
Room Binder9 items9
Room sheets
3 sheets
3
Boards
1 item
1
Knowledge
1 item
1
Notes & memos
4 items
4
Review queue
no pending proposals
Permissions
host controls - 35 trace events
People & agents · 3 live
H
Homen
Host
P
Priya
Finance lead
GQ
guest · quokka
Member
+3
Q3 varianceversionedSyncv6
AccountQ2Q3VarianceNote
1Revenue$10,000$12,400
2COGS$4,000$5,100
3Gross profit$6,000$7,300
4OpEx$2,200$2,650
5Net income$3,800$4,650
click a Variance or Note cell to edit by hand
Room chat Everyone9NRoom NodeAgent
H
Homen9:16

Can the room reconcile Q3 variance against the NetSuite close before the board read?

H
Homen9:16
@nodeagent reconcile Q3 revenue and COGS variance
N
Room NodeAgentagent9:17
v1 -> v1Complete lock releasedCardioNovaPrimary source: CardioNova: product, buyer, and diligence context captured from the company site.
P
Priya9:19

The +27.5% on COGS is volume, not price - noting it on the row so it survives the sync.

GQ
guest · quokka9:20

anon - quokka joined as guest · view + chat

N
Room NodeAgentagent9:22
v1 -> v1Complete lock releasedCardioNovaPrimary source: CardioNova: product, buyer, and diligence context captured from the company site.
H
Homen9:24

Good. Draft the reconciliation memo and clip the variance exhibit for the board read.

H
Homen9:25
@nodeagent recompute the Q3 variance column
N
Room NodeAgentagent9:25

Committed r_rev +24%, r_cogs +27.5%, r_gp +21.7%, r_ni +22.4%. Lock released.

IntakeEvidenceDraftReviewExport
Room NodeAgent ·Room NodeAgent · edit_applied
+ + + \ No newline at end of file diff --git a/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-downloaded.json b/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-downloaded.json new file mode 100644 index 00000000..0b154c31 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-downloaded.json @@ -0,0 +1,701 @@ +{ + "url": "http://127.0.0.1:54521/?mode=memory&surface=desktop", + "title": "NodeRoom - live collaborative AI rooms with NodeAgents", + "body": "N\nNodeRoom · Q3 diligence\nSFT-RFT\nH\nP\nGQ\n◆\n5 live\nRoom Binder\n9\nPINNED\n2\nQ3 variance\nAgent wiki\nRECENT\n6\nAgent wiki\nToday's Brief\nDiligence memo\nOpen questions / workplan\nRisk / opportunity wall\nCapture Notebook\nSHEETS\n3\nRoom sheets\n3\nCompany research\nQ3 variance\nRunway / milestones\nDOCS\n6\nBoards\n1\nRisk / opportunity wall\nKnowledge\n1\nAgent wiki\nNotes & memos\n4\nCapture Notebook\nDiligence memo\nOpen questions / workplan\nToday's Brief\nUpload file\nREVIEW & PROOF\n2\nReview queue\nPermissions\nPEOPLE & AGENTS\n4 LIVE\nH\nHomen\nHost\nP\nPriya\nFinance lead\nGQ\nguest · quokka\nMember\n◆\nRoom NodeAgent\nPublic agent · done · rc_neuronova__status:rc_nimbusnova__status\nHome\nQ3 variance\nCompany research\n+3\nArtifacts\nNodeBook\nInvestigation\nRun trace\nExport XLSX\nShared\nQ3 variance\nversionedSync\nv6\n\tACCOUNT\tQ2\tQ3\tVARIANCE\tNOTE\n1\tRevenue\t$10,000\t$12,400\t\n+24%\n\t\nReviewer note: baseline input\n\n2\tCOGS\t$4,000\t$5,100\t\n+27.5%\n\t\nnote\n\n3\tGross profit\t$6,000\t$7,300\t\n+21.7%\n\t\nnote\n\n4\tOpEx\t$2,200\t$2,650\t\nadd\n\t\nnote\n\n5\tNet income\t$3,800\t$4,650\t\n+22.4%\n\t\nnote\n\n6\t\t\t\t\t\n7\t\t\t\t\t\n8\t\t\t\t\t\n9\t\t\t\t\t\n10\t\t\t\t\t\n11\t\t\t\t\t\n12\t\t\t\t\t\n13\t\t\t\t\t\n14\t\t\t\t\t\n15\t\t\t\t\t\n16\t\t\t\t\t\n17\t\t\t\t\t\n18\t\t\t\t\t\n19\t\t\t\t\t\n20\t\t\t\t\t\n21\t\t\t\t\t\n22\t\t\t\t\t\n23\t\t\t\t\t\n24\t\t\t\t\t\nUndo\nclick a Variance or Note cell to edit by hand\nRoom trace\n· 35 events\nEntity graph\nRoom chat\n9\nRoom\nPrivate\nTODAY\nH\nHomen\n9:16\n\nCan the room reconcile Q3 variance against the NetSuite close before the board read?\n\nCopy\nEdit\nH\nHomen\n9:16\n@nodeagent reconcile Q3 revenue and COGS variance\nCopy\nEdit\nN\nRoom NodeAgent\nagent\n9:17\nResearched 2 companies with structured fields · 2 sources\nv1 -> v1\nComplete\nCopy\nP\nPriya\n9:19\n\nThe +27.5% on COGS is volume, not price - noting it on the row so it survives the sync.\n\nCopy\nGQ\nguest · quokka\n9:20\n\nanon - quokka joined as guest · view + chat\n\nCopy\nN\nRoom NodeAgent\nagent\n9:22\nResearched 3 companies with structured fields · 2 sources\nv1 -> v1\nComplete\nCopy\nH\nHomen\n9:24\n\nGood. Draft the reconciliation memo and clip the variance exhibit for the board read.\n\nCopy\nEdit\nH\nHomen\n9:25\n@nodeagent recompute the Q3 variance column\nCopy\nEdit\nN\nRoom NodeAgent\nagent\n9:25\n\nCommitted r_rev +24%, r_cogs +27.5%, r_gp +21.7%, r_ni +22.4%. Lock released.\n\nCopy\n@nodeagent diligence CardioNova\n@nodeagent runway gaps\nIntake\nEvidence\nDraft\nReview\nExport\nRoom NodeAgent ·\nreconciled Q3 variance · v42\nLive graph · 14", + "horizontalOverflow": 0, + "viewport": { + "width": 1440, + "height": 960 + }, + "build": "034a8f963dfa037d860f5364032319506be3e2e0", + "buttons": [ + { + "tag": "BUTTON", + "testId": null, + "label": "Copy invite link for room r-86w", + "text": "SFT-RFT", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "people-trigger", + "label": "Open people panel — 5 live", + "text": "HPGQ◆5 live", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "room-settings-btn", + "label": "Open room controls", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "INPUT", + "testId": null, + "label": null, + "text": "", + "placeholder": "Find in binder...", + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Pinned2", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Q3 varianceOpen now - Sheet · v6 · 5 rows", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Agent wikiPinned - v1 · live TOC", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Recent6", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Agent wikiv1 · live TOC", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Today's Briefedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Diligence memoedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Open questions / workplanedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Risk / opportunity wall3 notes", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Capture Notebookedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Sheets3", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Company researchSheet · v1 · 14 rows", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Q3 varianceSheet · v6 · 5 rows", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Runway / milestonesSheet · v1 · 2 rows", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Docs6", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Risk / opportunity wall3 notes", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Agent wikiv1 · live TOC", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Capture Notebookedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Diligence memoedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Open questions / workplanedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Today's Briefedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Upload fileCSV, XLSX, text, image, PDF", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Review & proof2", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "People & agents4 live", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-agent", + "label": null, + "text": "◆Room NodeAgentPublic agent · done · rc_neuronova__status:rc_nimbusnova__status", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Resize files panel", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "home-tab", + "label": null, + "text": "Home", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-filetab", + "label": null, + "text": "Q3 variance", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-filetab", + "label": null, + "text": "Company research", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Q3 variance", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Company research", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Capture Notebook", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Risk / opportunity wall", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Agent wiki", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "work-artifacts-tab", + "label": null, + "text": "Artifacts", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "nodebook-tab", + "label": null, + "text": "NodeBook", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "investigation-tab", + "label": null, + "text": "Investigation", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "trace-tab", + "label": null, + "text": "Run trace", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-split-toggle", + "label": "Split the work surface", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-export-xlsx", + "label": "Export workbook to XLSX", + "text": "Export XLSX", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-visibility-toggle", + "label": null, + "text": "Shared", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "+24%", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "Reviewer note: baseline input", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "+27.5%", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "+21.7%", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "add", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "+22.4%", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Undo", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Expand room trace", + "text": "Room trace· 35 events", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Entity graph", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Resize Copilot panel", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Room chat9", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "copilot-tab-public", + "label": null, + "text": "Room", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "copilot-tab-private", + "label": null, + "text": "Private", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-edit", + "label": "Edit message", + "text": "Edit", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-edit", + "label": "Edit message", + "text": "Edit", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "agent-view-row", + "label": null, + "text": "Researched 2 companies with structured fields · 2 sources", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "agent-view-row", + "label": null, + "text": "Researched 3 companies with structured fields · 2 sources", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-edit", + "label": "Edit message", + "text": "Edit", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-edit", + "label": "Edit message", + "text": "Edit", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "TEXTAREA", + "testId": "chat-composer", + "label": "Message the room", + "text": "", + "placeholder": "Message the room or @nodeagent", + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-attach", + "label": "Attach files", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-voice", + "label": "Start voice input", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-context", + "label": "Attach work context", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-send", + "label": "Send message", + "text": "", + "placeholder": null, + "disabled": true + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "@nodeagent diligence CardioNova", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "@nodeagent runway gaps", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "status-open", + "label": null, + "text": "reconciled Q3 variance · v42", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "live-graph-rail-toggle", + "label": "Open live session graph (14 entities)", + "text": "Live graph · 14", + "placeholder": null, + "disabled": false + } + ] +} \ No newline at end of file diff --git a/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-downloaded.png b/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-downloaded.png new file mode 100644 index 00000000..12ffb4cd Binary files /dev/null and b/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-downloaded.png differ diff --git a/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-entry.html.txt b/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-entry.html.txt new file mode 100644 index 00000000..c913c8aa --- /dev/null +++ b/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-entry.html.txt @@ -0,0 +1,140 @@ + + + + NodeRoom - live collaborative AI rooms with NodeAgents + + + + + + + + + + + + + + + + + + + + + + + + +
Shared workrooms for people and NodeAgents

Work with AI. Review every change.

NodeRoom is a shared workspace where people and NodeAgents work on the same files, spreadsheets, and notes. Every agent edit can stay reviewable and source-backed.

312rooms live
1,284cells committed today
demo
Sign-in requiredCode-access roomsReview-first agent edits
N
Q3 X-7K
Live demo
HS
PR
qk
NA
NA
Room NodeAgent

Locking the rows I’m about to write — read-only for others, still readable.

AccountQ3Variance
Revenue$12,400 NA
COGS$5,100 NA
Gross profit$7,300
versionedSyncv41traced · NetSuite p.4
Q3X-7K
sign in · join with code

Share a code, not a seat

Sign in, then join with a six-character room code. Share it only with people you intend to invite.

Open only what you need

Files, chat, a live artifact, and your private agent — one to four panels.

NA Revenue · locked
draft Gross profit · smart-merge
v41 → v42

Locks, then smart-merge

Agents lock the rows they touch and merge drafts on release. No collisions.

apps/web · noderoom.live shell
+ + + \ No newline at end of file diff --git a/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-entry.json b/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-entry.json new file mode 100644 index 00000000..7f163245 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-entry.json @@ -0,0 +1,61 @@ +{ + "url": "http://127.0.0.1:54521/?mode=memory&surface=desktop", + "title": "NodeRoom - live collaborative AI rooms with NodeAgents", + "body": "N\nNodeRoom\nShared workrooms for people and NodeAgents\nWork with AI. Review every change.\n\nNodeRoom is a shared workspace where people and NodeAgents work on the same files, spreadsheets, and notes. Every agent edit can stay reviewable and source-backed.\n\nTry sample room\nJoin room\n312\nrooms live\n1,284\ncells committed today\nDEMO\nSign-in required\nCode-access rooms\nReview-first agent edits\nN\nQ3\nX-7K\nLIVE DEMO\nHS\nPR\nqk\nNA\nNA\nRoom NodeAgent\n\nLocking the rows I’m about to write — read-only for others, still readable.\n\nACCOUNT\tQ3\tVARIANCE\nRevenue\t$12,400\t\nNA\nCOGS\t$5,100\t\nNA\nGross profit\t$7,300\t—\nversionedSync\nv41\ntraced · NetSuite p.4\nQ3X\n-7K\nsign in · join with code\nShare a code, not a seat\n\nSign in, then join with a six-character room code. Share it only with people you intend to invite.\n\nOpen only what you need\n\nFiles, chat, a live artifact, and your private agent — one to four panels.\n\nNA\nRevenue · locked\ndraft\nGross profit · smart-merge\nv41 → v42\nLocks, then smart-merge\n\nAgents lock the rows they touch and merge drafts on release. No collisions.\n\n01 · SURFACE\nThe public surface\napps/web · noderoom.live shell", + "horizontalOverflow": 0, + "viewport": { + "width": 1440, + "height": 960 + }, + "build": "034a8f963dfa037d860f5364032319506be3e2e0", + "buttons": [ + { + "tag": "BUTTON", + "testId": null, + "label": "NodeRoom home", + "text": "NNodeRoom", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Toggle light / dark", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "start-demo-room", + "label": null, + "text": "Try sample room", + "placeholder": null, + "disabled": false + }, + { + "tag": "INPUT", + "testId": "join-room-code", + "label": "Room code", + "text": "", + "placeholder": "ENTER CODE", + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "join-room", + "label": null, + "text": "Join room", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Open product story", + "text": "", + "placeholder": null, + "disabled": false + } + ] +} \ No newline at end of file diff --git a/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-entry.png b/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-entry.png new file mode 100644 index 00000000..b72b9a39 Binary files /dev/null and b/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-entry.png differ diff --git a/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-sample.html.txt b/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-sample.html.txt new file mode 100644 index 00000000..c513a041 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-sample.html.txt @@ -0,0 +1,157 @@ + + + + NodeRoom - live collaborative AI rooms with NodeAgents + + + + + + + + + + + + + + + + + + + + + + + + +
N
NodeRoom · Q3 diligence
Room Binder9 items9
Room sheets
3 sheets
3
Boards
1 item
1
Knowledge
1 item
1
Notes & memos
4 items
4
Review queue
no pending proposals
Permissions
host controls - 26 trace events
People & agents · 3 live
H
Homen
Host
P
Priya
Finance lead
GQ
guest · quokka
Member
+3
Q3 varianceversionedSyncv1
AccountQ2Q3VarianceNote
1Revenue$10,000$12,400
2COGS$4,000$5,100
3Gross profit$6,000$7,300
4OpEx$2,200$2,650
5Net income$3,800$4,650
click a Variance or Note cell to edit by hand
Room chat Everyone7NRoom NodeAgent
H
Homen9:16

Can the room reconcile Q3 variance against the NetSuite close before the board read?

H
Homen9:16
@nodeagent reconcile Q3 revenue and COGS variance
N
Room NodeAgentagent9:17
v1 -> v1Complete lock releasedCardioNovaPrimary source: CardioNova: product, buyer, and diligence context captured from the company site.
P
Priya9:19

The +27.5% on COGS is volume, not price - noting it on the row so it survives the sync.

GQ
guest · quokka9:20

anon - quokka joined as guest · view + chat

N
Room NodeAgentagent9:22
v1 -> v1Complete lock releasedCardioNovaPrimary source: CardioNova: product, buyer, and diligence context captured from the company site.
H
Homen9:24

Good. Draft the reconciliation memo and clip the variance exhibit for the board read.

01 - Welcome to NodeRoomA live diligence room where bankers, guests, and NodeAgents gather company facts, enrich shared grids, and prepare runway, milestone, and handoff artifacts without clobbering each other. This memory demo is safe: nothing is sent anywhere.
standard
IntakeEvidenceDraftReviewExport
Room NodeAgent ·Room NodeAgent · edit_applied
+ + + \ No newline at end of file diff --git a/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-sample.json b/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-sample.json new file mode 100644 index 00000000..e45a02eb --- /dev/null +++ b/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-sample.json @@ -0,0 +1,765 @@ +{ + "url": "http://127.0.0.1:54521/?mode=memory&surface=desktop", + "title": "NodeRoom - live collaborative AI rooms with NodeAgents", + "body": "N\nNodeRoom · Q3 diligence\nSFT-RFT\nH\nP\nGQ\n◆\n5 live\nRoom Binder\n9\nPINNED\n2\nQ3 variance\nAgent wiki\nRECENT\n6\nAgent wiki\nToday's Brief\nDiligence memo\nOpen questions / workplan\nRisk / opportunity wall\nCapture Notebook\nSHEETS\n3\nRoom sheets\n3\nCompany research\nQ3 variance\nRunway / milestones\nDOCS\n6\nBoards\n1\nRisk / opportunity wall\nKnowledge\n1\nAgent wiki\nNotes & memos\n4\nCapture Notebook\nDiligence memo\nOpen questions / workplan\nToday's Brief\nUpload file\nREVIEW & PROOF\n2\nReview queue\nPermissions\nPEOPLE & AGENTS\n4 LIVE\nH\nHomen\nHost\nP\nPriya\nFinance lead\nGQ\nguest · quokka\nMember\n◆\nRoom NodeAgent\nPublic agent · working · rc_neuronova__status:rc_nimbusnova__status\nHome\nQ3 variance\nCompany research\n+3\nArtifacts\nNodeBook\nInvestigation\nRun trace\nExport XLSX\nShared\nQ3 variance\nversionedSync\nv1\n\tACCOUNT\tQ2\tQ3\tVARIANCE\tNOTE\n1\tRevenue\t$10,000\t$12,400\t\nadd\n\t\nnote\n\n2\tCOGS\t$4,000\t$5,100\t\nadd\n\t\nnote\n\n3\tGross profit\t$6,000\t$7,300\t\nadd\n\t\nnote\n\n4\tOpEx\t$2,200\t$2,650\t\nadd\n\t\nnote\n\n5\tNet income\t$3,800\t$4,650\t\nadd\n\t\nnote\n\n6\t\t\t\t\t\n7\t\t\t\t\t\n8\t\t\t\t\t\n9\t\t\t\t\t\n10\t\t\t\t\t\n11\t\t\t\t\t\n12\t\t\t\t\t\n13\t\t\t\t\t\n14\t\t\t\t\t\n15\t\t\t\t\t\n16\t\t\t\t\t\n17\t\t\t\t\t\n18\t\t\t\t\t\n19\t\t\t\t\t\n20\t\t\t\t\t\n21\t\t\t\t\t\n22\t\t\t\t\t\n23\t\t\t\t\t\n24\t\t\t\t\t\nUndo\nclick a Variance or Note cell to edit by hand\nRoom trace\n· 26 events\nEntity graph\nRoom chat\n7\nRoom\nPrivate\nTODAY\nH\nHomen\n9:16\n\nCan the room reconcile Q3 variance against the NetSuite close before the board read?\n\nCopy\nEdit\nH\nHomen\n9:16\n@nodeagent reconcile Q3 revenue and COGS variance\nCopy\nEdit\nN\nRoom NodeAgent\nagent\n9:17\nResearched 2 companies with structured fields · 2 sources\nv1 -> v1\nComplete\nCopy\nP\nPriya\n9:19\n\nThe +27.5% on COGS is volume, not price - noting it on the row so it survives the sync.\n\nCopy\nGQ\nguest · quokka\n9:20\n\nanon - quokka joined as guest · view + chat\n\nCopy\nN\nRoom NodeAgent\nagent\n9:22\nResearched 3 companies with structured fields · 2 sources\nv1 -> v1\nComplete\nCopy\nH\nHomen\n9:24\n\nGood. Draft the reconciliation memo and clip the variance exhibit for the board read.\n\nCopy\nEdit\n@nodeagent diligence CardioNova\n@nodeagent runway gaps\n01 - WELCOME TO NODEROOM\nA live diligence room where bankers, guests, and NodeAgents gather company facts, enrich shared grids, and prepare runway, milestone, and handoff artifacts without clobbering each other. This memory demo is safe: nothing is sent anywhere.\nStandard\nReplay\nIntake\nEvidence\nDraft\nReview\nExport\nRoom NodeAgent ·\nreconciled Q3 variance · v42\nLive graph · 9", + "horizontalOverflow": 0, + "viewport": { + "width": 1440, + "height": 960 + }, + "build": "034a8f963dfa037d860f5364032319506be3e2e0", + "buttons": [ + { + "tag": "BUTTON", + "testId": null, + "label": "Copy invite link for room r-86w", + "text": "SFT-RFT", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "people-trigger", + "label": "Open people panel — 5 live", + "text": "HPGQ◆5 live", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "room-settings-btn", + "label": "Open room controls", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "INPUT", + "testId": null, + "label": null, + "text": "", + "placeholder": "Find in binder...", + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Pinned2", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Q3 varianceOpen now - Sheet · v1 · 5 rows", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Agent wikiPinned - v1 · live TOC", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Recent6", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Agent wikiv1 · live TOC", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Today's Briefedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Diligence memoedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Open questions / workplanedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Risk / opportunity wall3 notes", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Capture Notebookedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Sheets3", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Company researchSheet · v1 · 14 rows", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Q3 varianceSheet · v1 · 5 rows", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Runway / milestonesSheet · v1 · 2 rows", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Docs6", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Risk / opportunity wall3 notes", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Agent wikiv1 · live TOC", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Capture Notebookedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Diligence memoedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Open questions / workplanedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-artifact", + "label": null, + "text": "Today's Briefedited recently", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Upload fileCSV, XLSX, text, image, PDF", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Review & proof2", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "People & agents4 live", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "binder-agent", + "label": null, + "text": "◆Room NodeAgentPublic agent · working · rc_neuronova__status:rc_nimbusnova__status", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Resize files panel", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "home-tab", + "label": null, + "text": "Home", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-filetab", + "label": null, + "text": "Q3 variance", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-filetab", + "label": null, + "text": "Company research", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Q3 variance", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Company research", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Capture Notebook", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Risk / opportunity wall", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Agent wiki", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "work-artifacts-tab", + "label": null, + "text": "Artifacts", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "nodebook-tab", + "label": null, + "text": "NodeBook", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "investigation-tab", + "label": null, + "text": "Investigation", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "trace-tab", + "label": null, + "text": "Run trace", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-split-toggle", + "label": "Split the work surface", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-export-xlsx", + "label": "Export workbook to XLSX", + "text": "Export XLSX", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "artifact-visibility-toggle", + "label": null, + "text": "Shared", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "add", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "add", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "add", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "add", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "add", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "cell-edit-control", + "label": null, + "text": "note", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Undo", + "placeholder": null, + "disabled": true + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Expand room trace", + "text": "Room trace· 26 events", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Entity graph", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Resize Copilot panel", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Room chat7", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "copilot-tab-public", + "label": null, + "text": "Room", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "copilot-tab-private", + "label": null, + "text": "Private", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-edit", + "label": "Edit message", + "text": "Edit", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-edit", + "label": "Edit message", + "text": "Edit", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "agent-view-row", + "label": null, + "text": "Researched 2 companies with structured fields · 2 sources", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "agent-view-row", + "label": null, + "text": "Researched 3 companies with structured fields · 2 sources", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Copy message", + "text": "Copy", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-edit", + "label": "Edit message", + "text": "Edit", + "placeholder": null, + "disabled": false + }, + { + "tag": "TEXTAREA", + "testId": "chat-composer", + "label": "Message the room", + "text": "", + "placeholder": "Message the room or @nodeagent", + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-attach", + "label": "Attach files", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-voice", + "label": "Start voice input", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-context", + "label": "Attach work context", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "chat-send", + "label": "Send message", + "text": "", + "placeholder": null, + "disabled": true + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "@nodeagent diligence CardioNova", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "@nodeagent runway gaps", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Show step 1", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Show step 2", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Show step 3", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Show step 4", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Show step 5", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Show step 6", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Show step 7", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Previous walkthrough step", + "text": "", + "placeholder": null, + "disabled": true + }, + { + "tag": "BUTTON", + "testId": null, + "label": "Next walkthrough step", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": null, + "label": null, + "text": "Replay", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "walkthrough-dock-dismiss", + "label": "Dismiss walkthrough dock", + "text": "", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "status-open", + "label": null, + "text": "reconciled Q3 variance · v42", + "placeholder": null, + "disabled": false + }, + { + "tag": "BUTTON", + "testId": "live-graph-rail-toggle", + "label": "Open live session graph (9 entities)", + "text": "Live graph · 9", + "placeholder": null, + "disabled": false + } + ] +} \ No newline at end of file diff --git a/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-sample.png b/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-sample.png new file mode 100644 index 00000000..c7297837 Binary files /dev/null and b/evidence/desktop-account-20260905/operator/before/desktop-memory-1440-sample.png differ diff --git a/evidence/desktop-account-20260905/operator/before/report.json b/evidence/desktop-account-20260905/operator/before/report.json new file mode 100644 index 00000000..0ab507f8 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/before/report.json @@ -0,0 +1,232 @@ +{ + "schema": "noderoom-entry-observation/v1", + "startedAt": "2026-09-05T16:25:44.941Z", + "baseCommit": "034a8f963dfa037d860f5364032319506be3e2e0", + "sourceBindings": "../before-tracked-bindings.json", + "sourceState": "Clean merged034a8f9 source and approved Tiptap3.30.4/ProseMirror cohort; current desktop defect baseline", + "cells": [ + { + "width": 1440, + "routeName": "desktop-memory", + "captures": [ + { + "name": "desktop-memory-1440-entry", + "pngSha256": "e507a0b6b569bf42ee5f62cd5dc6bfd31f280a4d147bc175b4c1a432251dee33", + "domSha256": "e0057268ff744c13eeb009343cc9a5132e7f5a3da7fd2ae832b4d8f3aab1d339", + "url": "http://127.0.0.1:54521/?mode=memory&surface=desktop", + "horizontalOverflow": 0, + "build": "034a8f963dfa037d860f5364032319506be3e2e0" + }, + { + "name": "desktop-memory-1440-sample", + "pngSha256": "3044c6e8b91dd77ae682d12c566fbdeac14e7a8100e07cda70ae096641006da7", + "domSha256": "38ad55be105664b0e2d053e56b3c32add132c209886aa19a528cf10be3a9ba61", + "url": "http://127.0.0.1:54521/?mode=memory&surface=desktop", + "horizontalOverflow": 0, + "build": "034a8f963dfa037d860f5364032319506be3e2e0" + }, + { + "name": "desktop-memory-1440-downloaded", + "pngSha256": "d748f5992dec7ddee8816c83d8c6d8be7ddf754456cf64142417a2178afcee57", + "domSha256": "b89c9b2057e9f2d7e901acdd6f5226291a6fa3956e655c32b13914b8c559e3a5", + "url": "http://127.0.0.1:54521/?mode=memory&surface=desktop", + "horizontalOverflow": 0, + "build": "034a8f963dfa037d860f5364032319506be3e2e0" + } + ], + "console": [ + { + "type": "error", + "text": "Failed to load resource: net::ERR_BLOCKED_BY_CLIENT.Inspector" + } + ], + "pageErrors": [], + "workbook": [ + { + "name": "Q3 variance", + "rows": [ + null, + [ + null, + "Account", + "Q2", + "Q3", + "Variance", + "Note" + ], + [ + null, + null, + "$10,000", + "$12,400", + "+24%", + "Reviewer note: baseline input" + ], + [ + null, + null, + "$4,000", + "$5,100", + "+27.5%" + ], + [ + null, + null, + "$6,000", + "$7,300", + "+21.7%" + ], + [ + null, + null, + "$2,200", + "$2,650" + ], + [ + null, + null, + "$3,800", + "$4,650", + "+22.4%" + ] + ] + } + ], + "download": { + "fileName": "Q3_variance.xlsx", + "sha256": "06dd606710f763f7e6016e81a8022667d69ab61f871cf50328484dec5f98dc31", + "byteCount": 6631 + }, + "accountComparison": { + "ui": { + "title": "Q3 variance", + "headers": [ + "", + "Account", + "Q2", + "Q3", + "Variance", + "Note" + ], + "rows": [ + { + "id": "r_rev", + "account": "Revenue", + "cells": [ + "Revenue", + "$10,000", + "$12,400", + "+24%", + "Reviewer note: baseline input" + ] + }, + { + "id": "r_cogs", + "account": "COGS", + "cells": [ + "COGS", + "$4,000", + "$5,100", + "+27.5%", + " note" + ] + }, + { + "id": "r_gp", + "account": "Gross profit", + "cells": [ + "Gross profit", + "$6,000", + "$7,300", + "+21.7%", + " note" + ] + }, + { + "id": "r_opex", + "account": "OpEx", + "cells": [ + "OpEx", + "$2,200", + "$2,650", + " add", + " note" + ] + }, + { + "id": "r_ni", + "account": "Net income", + "cells": [ + "Net income", + "$3,800", + "$4,650", + "+22.4%", + " note" + ] + } + ] + }, + "rows": [ + { + "rowId": "r_rev", + "uiAccount": "Revenue", + "xlsxAccount": null, + "matches": false + }, + { + "rowId": "r_cogs", + "uiAccount": "COGS", + "xlsxAccount": null, + "matches": false + }, + { + "rowId": "r_gp", + "uiAccount": "Gross profit", + "xlsxAccount": null, + "matches": false + }, + { + "rowId": "r_opex", + "uiAccount": "OpEx", + "xlsxAccount": null, + "matches": false + }, + { + "rowId": "r_ni", + "uiAccount": "Net income", + "xlsxAccount": null, + "matches": false + } + ], + "allFiveMismatch": true, + "workbook": { + "fileName": "Q3_variance.xlsx", + "sha256": "06dd606710f763f7e6016e81a8022667d69ab61f871cf50328484dec5f98dc31", + "byteCount": 6631 + } + }, + "boundary": { + "rect": { + "x": 336.078125, + "y": 163, + "width": 131.640625, + "height": 177 + }, + "pngSha256": "fceb0dc7ca8665b6c3d49ce5ecf226c80293c571c17dbdbb57ddf1dbf896671d", + "domRestored": true + }, + "status": "OBSERVED" + } + ], + "externalRequests": [ + { + "width": 1440, + "routeName": "desktop-memory", + "url": "https://fonts.googleapis.com/css2", + "action": "blocked" + } + ], + "errors": [], + "status": "OBSERVED", + "finishedAt": "2026-09-05T16:26:06.079Z" +} \ No newline at end of file diff --git a/evidence/desktop-account-20260905/operator/before/server.log b/evidence/desktop-account-20260905/operator/before/server.log new file mode 100644 index 00000000..1d3ce8fa --- /dev/null +++ b/evidence/desktop-account-20260905/operator/before/server.log @@ -0,0 +1 @@ + ➜ Local: http://127.0.0.1:54521/ diff --git a/evidence/desktop-account-20260905/operator/before/ui-to-workbook.json b/evidence/desktop-account-20260905/operator/before/ui-to-workbook.json new file mode 100644 index 00000000..1d114a2a --- /dev/null +++ b/evidence/desktop-account-20260905/operator/before/ui-to-workbook.json @@ -0,0 +1,108 @@ +{ + "ui": { + "title": "Q3 variance", + "headers": [ + "", + "Account", + "Q2", + "Q3", + "Variance", + "Note" + ], + "rows": [ + { + "id": "r_rev", + "account": "Revenue", + "cells": [ + "Revenue", + "$10,000", + "$12,400", + "+24%", + "Reviewer note: baseline input" + ] + }, + { + "id": "r_cogs", + "account": "COGS", + "cells": [ + "COGS", + "$4,000", + "$5,100", + "+27.5%", + " note" + ] + }, + { + "id": "r_gp", + "account": "Gross profit", + "cells": [ + "Gross profit", + "$6,000", + "$7,300", + "+21.7%", + " note" + ] + }, + { + "id": "r_opex", + "account": "OpEx", + "cells": [ + "OpEx", + "$2,200", + "$2,650", + " add", + " note" + ] + }, + { + "id": "r_ni", + "account": "Net income", + "cells": [ + "Net income", + "$3,800", + "$4,650", + "+22.4%", + " note" + ] + } + ] + }, + "rows": [ + { + "rowId": "r_rev", + "uiAccount": "Revenue", + "xlsxAccount": null, + "matches": false + }, + { + "rowId": "r_cogs", + "uiAccount": "COGS", + "xlsxAccount": null, + "matches": false + }, + { + "rowId": "r_gp", + "uiAccount": "Gross profit", + "xlsxAccount": null, + "matches": false + }, + { + "rowId": "r_opex", + "uiAccount": "OpEx", + "xlsxAccount": null, + "matches": false + }, + { + "rowId": "r_ni", + "uiAccount": "Net income", + "xlsxAccount": null, + "matches": false + } + ], + "allFiveMismatch": true, + "workbook": { + "fileName": "Q3_variance.xlsx", + "sha256": "06dd606710f763f7e6016e81a8022667d69ab61f871cf50328484dec5f98dc31", + "byteCount": 6631 + } +} \ No newline at end of file diff --git a/evidence/desktop-account-20260905/operator/bind-after-source.py.txt b/evidence/desktop-account-20260905/operator/bind-after-source.py.txt new file mode 100644 index 00000000..a49dd0f1 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/bind-after-source.py.txt @@ -0,0 +1,11 @@ +import datetime, hashlib, json +from pathlib import Path +o=Path(__file__).parent +r=Path('D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905') +names=['src/ui/panels/Artifact.tsx','tests/artifactXlsxExport.test.ts','e2e/excel-grid.spec.ts','HANDOFF.md','package.json','package-lock.json','src/ui/workArtifacts/xlsxDownload.ts'] +rows=[] +for name in names: + b=(r/name).read_bytes() + rows.append({'path':name,'bytes':len(b),'sha256':hashlib.sha256(b).hexdigest(),'gitBlob':hashlib.sha1(b'blob '+str(len(b)).encode()+b'\0'+b).hexdigest()}) +(o/'after-source-bindings.json').write_text(json.dumps({'at':datetime.datetime.now(datetime.timezone.utc).isoformat(),'baseCommit':'034a8f963dfa037d860f5364032319506be3e2e0','note':'Written after browser completion. The initial writer failed before output because it used nonexistent src/ui/export/xlsxDownload.ts; corrected to actual workArtifacts owner. Three edited source/test hashes match pre-build source-normalization.json, untouched owners match before custody. HANDOFF remains pre-result text and is separately final-bound. No source change occurred during browser proof.','files':rows},indent=2)+'\n',encoding='utf-8') +print(json.dumps({'files':len(rows)})) diff --git a/evidence/desktop-account-20260905/operator/browser-suite/command.json b/evidence/desktop-account-20260905/operator/browser-suite/command.json new file mode 100644 index 00000000..c3a759e9 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/browser-suite/command.json @@ -0,0 +1,20 @@ +{ + "startedAt": "2026-09-05T16:49:31.902Z", + "base": "http://127.0.0.1:54523", + "config": "playwright.config.ts unchanged", + "timeoutPolicy": "Existing30s; no retries/timeout/skip/config override", + "oldScreenshotExisted": true, + "argv": [ + "C:\\nvm4w\\nodejs\\node.exe", + "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905\\node_modules\\@playwright\\test\\cli.js", + "test", + "e2e/excel-grid.spec.ts", + "--output", + "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\browser-suite\\results", + "--reporter=json" + ], + "exitCode": 0, + "producedHardcodedScreenshotSha256": "d31c290f875c48b83a91941e95f125b16ec1335cc67080a41e7755bec1fde7ea", + "oldScreenshotRestored": true, + "finishedAt": "2026-09-05T16:49:48.008Z" +} diff --git a/evidence/desktop-account-20260905/operator/browser-suite/playwright.json b/evidence/desktop-account-20260905/operator/browser-suite/playwright.json new file mode 100644 index 00000000..ae107111 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/browser-suite/playwright.json @@ -0,0 +1,190 @@ +{ + "config": { + "configFile": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905\\playwright.config.ts", + "rootDir": "D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905/e2e", + "forbidOnly": false, + "fullyParallel": false, + "globalSetup": null, + "globalTeardown": null, + "globalTimeout": 0, + "grep": {}, + "grepInvert": null, + "maxFailures": 0, + "metadata": { + "actualWorkers": 1 + }, + "preserveOutput": "always", + "projects": [ + { + "outputDir": "C:/Users/hshum/.codex/worktrees/5dba/nodebench-ai/docs/plans/portfolio-recovery-20260904/E6f-noderoom-desktop-account-repair-01/browser-suite/results", + "repeatEach": 1, + "retries": 0, + "metadata": { + "actualWorkers": 1 + }, + "id": "chromium", + "name": "chromium", + "testDir": "D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905/e2e", + "testIgnore": [], + "testMatch": [ + "**/*.@(spec|test).?(c|m)[jt]s?(x)" + ], + "timeout": 30000 + } + ], + "quiet": false, + "reporter": [ + [ + "json" + ] + ], + "reportSlowTests": { + "max": 5, + "threshold": 300000 + }, + "shard": null, + "tags": [], + "updateSnapshots": "missing", + "updateSourceMethod": "patch", + "version": "1.60.0", + "workers": 1, + "webServer": { + "command": "npm run dev -- --host 127.0.0.1 --port 54523 --strictPort", + "url": "http://127.0.0.1:54523", + "reuseExistingServer": true, + "timeout": 120000 + } + }, + "suites": [ + { + "title": "excel-grid.spec.ts", + "file": "excel-grid.spec.ts", + "column": 0, + "line": 0, + "specs": [ + { + "title": "an uploaded plain sheet renders as an aligned dark work-surface grid, not the Excel-paper UI", + "ok": true, + "tags": [], + "tests": [ + { + "timeout": 30000, + "annotations": [], + "expectedStatus": "passed", + "projectId": "chromium", + "projectName": "chromium", + "results": [ + { + "workerIndex": 0, + "parallelIndex": 0, + "status": "passed", + "duration": 4521, + "errors": [], + "stdout": [], + "stderr": [], + "retry": 0, + "startTime": "2026-09-05T16:49:37.140Z", + "annotations": [], + "attachments": [] + } + ], + "status": "expected" + } + ], + "id": "e0ec758d0fdacb2b3a2a-b195b6e5bc8d3d8128c4", + "file": "excel-grid.spec.ts", + "line": 69, + "column": 1 + }, + { + "title": "uploaded workbook renders in the shared Sheet 1 grid, not the false Excel-paper UI", + "ok": true, + "tags": [], + "tests": [ + { + "timeout": 30000, + "annotations": [], + "expectedStatus": "passed", + "projectId": "chromium", + "projectName": "chromium", + "results": [ + { + "workerIndex": 0, + "parallelIndex": 0, + "status": "passed", + "duration": 1639, + "errors": [], + "stdout": [], + "stderr": [], + "retry": 0, + "startTime": "2026-09-05T16:49:41.891Z", + "annotations": [], + "attachments": [] + } + ], + "status": "expected" + } + ], + "id": "e0ec758d0fdacb2b3a2a-9876f6b23ac910abcb92", + "file": "excel-grid.spec.ts", + "line": 94, + "column": 1 + }, + { + "title": "a reviewer reopens every visible Account label after current-sheet edits and repeated exports", + "ok": true, + "tags": [], + "tests": [ + { + "timeout": 30000, + "annotations": [], + "expectedStatus": "passed", + "projectId": "chromium", + "projectName": "chromium", + "results": [ + { + "workerIndex": 0, + "parallelIndex": 0, + "status": "passed", + "duration": 3731, + "errors": [], + "stdout": [], + "stderr": [], + "retry": 0, + "startTime": "2026-09-05T16:49:43.536Z", + "annotations": [], + "attachments": [ + { + "name": "review-1.xlsx", + "contentType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "path": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\browser-suite\\results\\excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium\\attachments\\review-1-xlsx-8d322e6991638bbf510ae3e72dba7d7b1229f8bd.xlsx" + }, + { + "name": "review-2.xlsx", + "contentType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "path": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\browser-suite\\results\\excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium\\attachments\\review-2-xlsx-d8bd07bada085ad796bb49244ecd789b4ea58285.xlsx" + } + ] + } + ], + "status": "expected" + } + ], + "id": "e0ec758d0fdacb2b3a2a-3b57aad947a0320c5c30", + "file": "excel-grid.spec.ts", + "line": 134, + "column": 1 + } + ] + } + ], + "errors": [], + "stats": { + "startTime": "2026-09-05T16:49:35.740Z", + "duration": 11667.976, + "expected": 3, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + } +} diff --git a/evidence/desktop-account-20260905/operator/browser-suite/playwright.stderr.log b/evidence/desktop-account-20260905/operator/browser-suite/playwright.stderr.log new file mode 100644 index 00000000..e69de29b diff --git a/evidence/desktop-account-20260905/operator/browser-suite/prior-hardcoded-screenshot.png b/evidence/desktop-account-20260905/operator/browser-suite/prior-hardcoded-screenshot.png new file mode 100644 index 00000000..e8b7287c Binary files /dev/null and b/evidence/desktop-account-20260905/operator/browser-suite/prior-hardcoded-screenshot.png differ diff --git a/evidence/desktop-account-20260905/operator/browser-suite/results/.last-run.json b/evidence/desktop-account-20260905/operator/browser-suite/results/.last-run.json new file mode 100644 index 00000000..cbcc1fba --- /dev/null +++ b/evidence/desktop-account-20260905/operator/browser-suite/results/.last-run.json @@ -0,0 +1,4 @@ +{ + "status": "passed", + "failedTests": [] +} \ No newline at end of file diff --git a/evidence/desktop-account-20260905/operator/browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/attachments/review-1-xlsx-8d322e6991638bbf510ae3e72dba7d7b1229f8bd.xlsx b/evidence/desktop-account-20260905/operator/browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/attachments/review-1-xlsx-8d322e6991638bbf510ae3e72dba7d7b1229f8bd.xlsx new file mode 100644 index 00000000..a128b1df Binary files /dev/null and b/evidence/desktop-account-20260905/operator/browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/attachments/review-1-xlsx-8d322e6991638bbf510ae3e72dba7d7b1229f8bd.xlsx differ diff --git a/evidence/desktop-account-20260905/operator/browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/attachments/review-2-xlsx-d8bd07bada085ad796bb49244ecd789b4ea58285.xlsx b/evidence/desktop-account-20260905/operator/browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/attachments/review-2-xlsx-d8bd07bada085ad796bb49244ecd789b4ea58285.xlsx new file mode 100644 index 00000000..124cef5b Binary files /dev/null and b/evidence/desktop-account-20260905/operator/browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/attachments/review-2-xlsx-d8bd07bada085ad796bb49244ecd789b4ea58285.xlsx differ diff --git a/evidence/desktop-account-20260905/operator/browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/desktop-account-current-export.png b/evidence/desktop-account-20260905/operator/browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/desktop-account-current-export.png new file mode 100644 index 00000000..232f6e2d Binary files /dev/null and b/evidence/desktop-account-20260905/operator/browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/desktop-account-current-export.png differ diff --git a/evidence/desktop-account-20260905/operator/browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/review-1-Q3_variance.xlsx b/evidence/desktop-account-20260905/operator/browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/review-1-Q3_variance.xlsx new file mode 100644 index 00000000..a128b1df Binary files /dev/null and b/evidence/desktop-account-20260905/operator/browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/review-1-Q3_variance.xlsx differ diff --git a/evidence/desktop-account-20260905/operator/browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/review-2-Q3_variance.xlsx b/evidence/desktop-account-20260905/operator/browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/review-2-Q3_variance.xlsx new file mode 100644 index 00000000..124cef5b Binary files /dev/null and b/evidence/desktop-account-20260905/operator/browser-suite/results/excel-grid-a-reviewer-reop-1660a--edits-and-repeated-exports-chromium/review-2-Q3_variance.xlsx differ diff --git a/evidence/desktop-account-20260905/operator/browser-suite/server.log b/evidence/desktop-account-20260905/operator/browser-suite/server.log new file mode 100644 index 00000000..0f334470 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/browser-suite/server.log @@ -0,0 +1 @@ + ➜ Local: http://127.0.0.1:54523/ diff --git a/evidence/desktop-account-20260905/operator/browser-suite/uploaded-workbook-shared-grid.png b/evidence/desktop-account-20260905/operator/browser-suite/uploaded-workbook-shared-grid.png new file mode 100644 index 00000000..22431aa8 Binary files /dev/null and b/evidence/desktop-account-20260905/operator/browser-suite/uploaded-workbook-shared-grid.png differ diff --git a/evidence/desktop-account-20260905/operator/custody-environment-wording-addendum.json b/evidence/desktop-account-20260905/operator/custody-environment-wording-addendum.json new file mode 100644 index 00000000..58ea52cc --- /dev/null +++ b/evidence/desktop-account-20260905/operator/custody-environment-wording-addendum.json @@ -0,0 +1,10 @@ +{ + "corrects": "custody.json noEnvFilesRead wording", + "ignoredOrLocalEnvironmentFilesRead": false, + "secretOrEnvironmentValuesInspectedOrPrinted": false, + "trackedPublicTemplateBytesIncludedInHashOnlyCustody": [ + ".env.example", + "backend/.env.example" + ], + "scope": "No values were emitted or used for configuration. The initial noEnvFilesRead field was overbroad because tracked public templates were hashed with all other tracked files." +} diff --git a/evidence/desktop-account-20260905/operator/custody.json b/evidence/desktop-account-20260905/operator/custody.json new file mode 100644 index 00000000..507937dc --- /dev/null +++ b/evidence/desktop-account-20260905/operator/custody.json @@ -0,0 +1,19 @@ +{ + "at": "2026-09-05T16:21:02.394719+00:00", + "base": "034a8f963dfa037d860f5364032319506be3e2e0", + "tree": "8fbd0d5d0ca31a71a70c45208ba8a5fd6a64a831", + "ownedPaths": [ + "src/ui/panels/Artifact.tsx", + "tests/artifactXlsxExport.test.ts", + "e2e/excel-grid.spec.ts", + "HANDOFF.md" + ], + "trackedFiles": 7512, + "installedManifests": 37, + "priorDistFiles": 475, + "priorDistZipSha256": "49f620f909df6054e5e910fb3271cdb92a5022e9059856b83d8a07ca79a7c251", + "priorDistRestoredBytesVerified": true, + "sourceEdited": false, + "noEnvFilesRead": true, + "nativeOfficeCalls": 0 +} diff --git a/evidence/desktop-account-20260905/operator/final-commands.json b/evidence/desktop-account-20260905/operator/final-commands.json new file mode 100644 index 00000000..61cb6232 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/final-commands.json @@ -0,0 +1,281 @@ +[ + { + "startedAt": "2026-09-05T16:49:31.824933+00:00", + "finishedAt": "2026-09-05T16:49:48.017732+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "C:/Users/hshum/.codex/worktrees/5dba/nodebench-ai/docs/plans/portfolio-recovery-20260904/E6f-noderoom-desktop-account-repair-01/run-browser-suite.mjs" + ], + "timeoutSeconds": 240, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 16.188, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-browser-suite.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:50:11.238280+00:00", + "finishedAt": "2026-09-05T16:50:17.484680+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905/node_modules/typescript/bin/tsc", + "--noEmit", + "--project", + "convex/tsconfig.json", + "--pretty", + "false" + ], + "timeoutSeconds": 180, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 6.25, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-convex-typecheck.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:50:35.099323+00:00", + "finishedAt": "2026-09-05T16:50:37.487250+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "run", + "design:audit" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 2.391, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-design-audit.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:45:52.517234+00:00", + "finishedAt": "2026-09-05T16:46:37.607725+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "run", + "build" + ], + "timeoutSeconds": 300, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 45.094, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-final-build.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:45:35.596568+00:00", + "finishedAt": "2026-09-05T16:45:40.046441+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 1, + "elapsedSeconds": 4.453, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-final-fixture-knockout.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:50:38.493021+00:00", + "finishedAt": "2026-09-05T16:50:42.864967+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts", + "tests/mobileSampleWorkbookExport.test.ts", + "tests/mobileSheetDialog.test.tsx" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 4.36, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-final-scenarios.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:48:03.345579+00:00", + "finishedAt": "2026-09-05T16:48:10.759509+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "C:/Users/hshum/.codex/worktrees/5dba/nodebench-ai/docs/plans/portfolio-recovery-20260904/E6f-noderoom-desktop-account-repair-01/observe-after.mjs" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 7.422, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-matched-after.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:36:08.191716+00:00", + "finishedAt": "2026-09-05T16:36:12.464936+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts", + "tests/mobileSampleWorkbookExport.test.ts" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 1, + "elapsedSeconds": 4.281, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-scenarios-after-02.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:37:48.875680+00:00", + "finishedAt": "2026-09-05T16:37:53.229245+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts", + "tests/mobileSampleWorkbookExport.test.ts" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 4.36, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-scenarios-after-03.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:35:06.877891+00:00", + "finishedAt": "2026-09-05T16:35:11.192289+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts", + "tests/mobileSampleWorkbookExport.test.ts" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 1, + "elapsedSeconds": 4.313, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-scenarios-after.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:34:42.752230+00:00", + "finishedAt": "2026-09-05T16:34:46.920539+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 1, + "elapsedSeconds": 4.172, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-scenarios-before-02.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:32:27.818950+00:00", + "finishedAt": "2026-09-05T16:33:15.159735+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "test", + "--", + "--run", + "tests/artifactXlsxExport.test.ts" + ], + "timeoutSeconds": 120, + "timedOut": false, + "exitCode": 1, + "elapsedSeconds": 47.344, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-scenarios-before.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:36:13.542669+00:00", + "finishedAt": "2026-09-05T16:36:34.743435+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "run", + "typecheck", + "--", + "--pretty", + "false" + ], + "timeoutSeconds": 180, + "timedOut": false, + "exitCode": 2, + "elapsedSeconds": 21.203, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\account-typecheck.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:25:42.189978+00:00", + "finishedAt": "2026-09-05T16:26:06.097882+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "C:/Users/hshum/.codex/worktrees/5dba/nodebench-ai/docs/plans/portfolio-recovery-20260904/E6f-noderoom-desktop-account-repair-01/observe-before.mjs" + ], + "timeoutSeconds": 180, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 23.906, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\before-browser.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:22:53.001124+00:00", + "finishedAt": "2026-09-05T16:25:32.694036+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "run", + "build" + ], + "timeoutSeconds": 360, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 159.688, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\before-build.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + }, + { + "startedAt": "2026-09-05T16:28:26.335288+00:00", + "finishedAt": "2026-09-05T16:28:27.089737+00:00", + "cwd": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "argv": [ + "C:/nvm4w/nodejs/npm.cmd", + "run", + "design:manifest" + ], + "timeoutSeconds": 60, + "timedOut": false, + "exitCode": 0, + "elapsedSeconds": 0.75, + "log": "C:\\Users\\hshum\\.codex\\worktrees\\5dba\\nodebench-ai\\docs\\plans\\portfolio-recovery-20260904\\E6f-noderoom-desktop-account-repair-01\\before-design-manifest.log", + "environmentPolicy": "Remove inherited provider/Vite/Convex/CI-SHA/proof-server variables without outputting values; no env files copied" + } +] diff --git a/evidence/desktop-account-20260905/operator/final-dist-bindings.json b/evidence/desktop-account-20260905/operator/final-dist-bindings.json new file mode 100644 index 00000000..55792ba0 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/final-dist-bindings.json @@ -0,0 +1,2856 @@ +{ + "files": [ + { + "path": ".well-known/agent-ui.json", + "bytes": 9929, + "sha256": "380ee1ba3f174029ad94df9e2f37510acedb1c7b7f174135ad062146f3394062", + "gitBlobSha1": "ed67a21b48790f6de547166f2b917bdd12475745" + }, + { + "path": "assets/abap-BdImnpbu.js", + "bytes": 15852, + "sha256": "d0a7972c37e141f01cc3aaf9aabbbb3e87c4778b9fdd3ccb575d1e1ff279c0fc", + "gitBlobSha1": "3cb643335fb82810d2c5df68de21c59b201bb822" + }, + { + "path": "assets/abnfDiagram-N423BO3Z-B8flrIaI.js", + "bytes": 1941, + "sha256": "de3ec2fe3b41c23cd070a391608a2714173aa47148f2a9e621eaf0ac10bcbe00", + "gitBlobSha1": "351240cc900d5cac9f881a4b249a7b03d28768dc" + }, + { + "path": "assets/actionscript-3-CoDkCxhg.js", + "bytes": 15205, + "sha256": "cc3e3792f3b16d9244f17680e20712184eac64175649df8add097ca3be123c84", + "gitBlobSha1": "ac22887a5bdfa781b910246e34fc2318563930b0" + }, + { + "path": "assets/ada-bCR0ucgS.js", + "bytes": 48082, + "sha256": "fc5d05054dc584a01ec795083de1774ef07f3a29fc6cfbc1902c208a09862313", + "gitBlobSha1": "1fa727085a3e3d5ad62c110f54cdadd3c637d6ed" + }, + { + "path": "assets/ai-elements-DlCQiZA9.css", + "bytes": 49553, + "sha256": "454ac1fc7db8694834ba1ff2220fb60d6f0cc6556d765fcb03e9331b54f21917", + "gitBlobSha1": "c2d7ddbc4fb439a6fdac885cba0ec51aff3a6e68" + }, + { + "path": "assets/andromeeda-C4gqWexZ.js", + "bytes": 9015, + "sha256": "7fcfeda6c4e4d7cc1ce1c72aaca6d802bc7e107858bf0d34eca95ff4223669bd", + "gitBlobSha1": "2b65c9b4c3678580dec894ed31b96389b7e29477" + }, + { + "path": "assets/angular-html-CU67Zn6k.js", + "bytes": 24287, + "sha256": "8b8969f7cdcc7690bbf9a1c6421e3c823293438e7f2261c43fe8b72e33a7ce88", + "gitBlobSha1": "401eb84d38ed6481d79cf4e3ef88f966029dc634" + }, + { + "path": "assets/angular-ts-BwZT4LLn.js", + "bytes": 183820, + "sha256": "635b4186a60332a7951ec43858e8b0020e08e4c36127f2b1885e1070de7f1b5c", + "gitBlobSha1": "8986de91bfe84619ecfd03a4b65de62f33d85902" + }, + { + "path": "assets/apache-Pmp26Uib.js", + "bytes": 12456, + "sha256": "35abb1e73308f0f43a4f76af3a4c1157bf524cbfb2908581305f6fb1cf743b24", + "gitBlobSha1": "6b0e4bdaa87f8463a0c51fbcc77715190f09868e" + }, + { + "path": "assets/apex-D8_7TLub.js", + "bytes": 46985, + "sha256": "9dfc38d42bc443b42f6bb4ddc6fa16c6634977292fd5e9d1e5e0b74fcd480f80", + "gitBlobSha1": "61a9cd62e3498001f8cda632e59658c475328ae8" + }, + { + "path": "assets/apl-dKokRX4l.js", + "bytes": 24039, + "sha256": "56e152c88b86ed1488ff5851bdd9fe9a5b7e92d4e0dc66fe96ceba395181cc89", + "gitBlobSha1": "a5dd81ba4fe4d5194f6302a94bdefc990cb19281" + }, + { + "path": "assets/applescript-Co6uUVPk.js", + "bytes": 29571, + "sha256": "e681551fbe1ac7d862ad06eae5833e6a32871de76532de01b27c5004c71c79df", + "gitBlobSha1": "38bcb1a23de7555cebe78603ac22d3b748b631a8" + }, + { + "path": "assets/ara-BRHolxvo.js", + "bytes": 6362, + "sha256": "f3c7f066af4d1907c2249c7089ae8b763d88ad2f25e88f867f20e3dbb256cffb", + "gitBlobSha1": "a20242200dd44a033da26d01fb3ba5644584c8e3" + }, + { + "path": "assets/arc-BNTOC954.js", + "bytes": 3418, + "sha256": "10f3f00d370afc5d0a15178b74e47b7fee0623f48c7625f2e24a112b80a15d09", + "gitBlobSha1": "9c17f95e3acfb16b79f72eafef0251cb54f8c6c6" + }, + { + "path": "assets/architectureDiagram-T3A2C74G-SzFEW10u.js", + "bytes": 152155, + "sha256": "06b3a9128d4872368d06ce04172473636b3037f5b651a384c82f8d9e996ea253", + "gitBlobSha1": "29fa3733d1ba17a10fed1e5b38bb9e3b8b64980a" + }, + { + "path": "assets/asciidoc-Ve4PFQV2.js", + "bytes": 131527, + "sha256": "31a90af692b01a0eb491b19725d0abe705a13cf6baf2cef9de85467aab4b2b0c", + "gitBlobSha1": "72b52140a4d457d6440d2d220b60a3d539a73181" + }, + { + "path": "assets/asm-D_Q5rh1f.js", + "bytes": 40717, + "sha256": "a43218a06da8dd93a8dd3c2b458479674d973079fe18922fe556dafa17be50a9", + "gitBlobSha1": "26ec3c1026a48076503b57e291703046d24d5f39" + }, + { + "path": "assets/astro-CbQHKStN.js", + "bytes": 24008, + "sha256": "1ba34d62178b804e9c49cbe8f7c45c349c8e9cd701ccad01c655b8db87a93f96", + "gitBlobSha1": "4d4ce098d39eb749299e14bb4a6e591e2554b291" + }, + { + "path": "assets/aurora-x-D-2ljcwZ.js", + "bytes": 13659, + "sha256": "e47c699d4515a3e898860e171aa49e276c80d475e49d57ec002afdccdd760781", + "gitBlobSha1": "39cb0949512fb5598080a1de0d6bed1680c709a9" + }, + { + "path": "assets/awk-DMzUqQB5.js", + "bytes": 5461, + "sha256": "ff7d9aed38679838b5bbaae495275ae2e8fc5215811062e4eef19f6f786089cb", + "gitBlobSha1": "c4a703c68e8a1bb5b3837fa8f24fd9b53b676823" + }, + { + "path": "assets/ayu-dark-DYE7WIF3.js", + "bytes": 20081, + "sha256": "7a9244f8489f4c2f8d98500f3b9d33bf84d934cde79120ddd1de6078b8c9dbc1", + "gitBlobSha1": "2469c483fb3d1c14b5767943c8031c28ee39e20a" + }, + { + "path": "assets/ayu-light-BA47KaF1.js", + "bytes": 20152, + "sha256": "3bfa9a52cf22931b3f65091b27f150d07deba32f82ec02488e36a4a24fe8ae31", + "gitBlobSha1": "1a219fad19667ce5542b26f59c14a7fb03bfe9ba" + }, + { + "path": "assets/ayu-mirage-32ctXXKs.js", + "bytes": 20085, + "sha256": "93f93dd14750e6e3453f99e549701050a9ca11ead2186befb232bb7bc6a173d1", + "gitBlobSha1": "4c9bff2e3d278f5454b4c645cda88818da86a18f" + }, + { + "path": "assets/ballerina-BFfxhgS-.js", + "bytes": 58693, + "sha256": "148a30bb0b51d5e1f00536337facfc90f70e659b3310d5875fc6d8db62c98f0c", + "gitBlobSha1": "f1f8dbbbdd3b046b6862531bcd3e1c78007323ab" + }, + { + "path": "assets/bat-BkioyH1T.js", + "bytes": 12888, + "sha256": "132a59df54049c90dfab94c0a95eae938352a227a86ad53d37bcabc8be4b13ef", + "gitBlobSha1": "d70e5330350e08c540e04ed45ff5f513bc7f48b2" + }, + { + "path": "assets/beancount-k_qm7-4y.js", + "bytes": 10373, + "sha256": "62cf81ef2432aa71aba4a8559e5c5970ce13576b19db0d75c421de19f0a662c6", + "gitBlobSha1": "28b83dc015a6744aca7363a8e0948474f7fae693" + }, + { + "path": "assets/berry-uYugtg8r.js", + "bytes": 3005, + "sha256": "6f2394fb74b945c92dea425f90c70222f319b72a6dd9c093a7e32ebfdf60d026", + "gitBlobSha1": "f95ac31076120bd39dbb1dbe21257545625f28b4" + }, + { + "path": "assets/bibtex-CHM0blh-.js", + "bytes": 4795, + "sha256": "0a3dd8093d3aa1baaad2d1d98ecbf09c7f093517baee20e4d8e7de768c8dca37", + "gitBlobSha1": "0e18a817706f452abf9ac7d82424cd5c2dfa9b90" + }, + { + "path": "assets/bicep-Bmn6On1c.js", + "bytes": 5382, + "sha256": "77925b291b8d048086f7fd14d23fa4ab0a4831551b1e9512c035948cfab402ee", + "gitBlobSha1": "03c40a25a444fc8737f744cc2c793c1f23cdb8ac" + }, + { + "path": "assets/bird2-DPOp833l.js", + "bytes": 16968, + "sha256": "13099dd59c5fc002eeafc5275ca7f741d08de1c36c63ffeb4b3273822dce7794", + "gitBlobSha1": "952a2d13d62388e9c67ea7051e361771675a472a" + }, + { + "path": "assets/blade-D4QpJJKB.js", + "bytes": 104981, + "sha256": "b90446141cc91956721af5d8aef50fd0819e6af63bdb5cc5818c612c41d957a3", + "gitBlobSha1": "87a4998110ef6cebda9f7a87448682411f5e01f7" + }, + { + "path": "assets/blockDiagram-VBNYF7ZC-eja4tJ6o.js", + "bytes": 75269, + "sha256": "a90139fbff59bb5c4a7fb8e454438a1f7f12bfa8bb10a1c5827773e56b60e801", + "gitBlobSha1": "49cbba23a56705f5897f09d6903ff5ad8b6c4515" + }, + { + "path": "assets/bsl-BO_Y6i37.js", + "bytes": 33867, + "sha256": "b9f7294b744652f494389fbdff06c427ea8a239a891647186c4ffe76779993a8", + "gitBlobSha1": "7fd23df50dd194440805d28faa3beecc7e590276" + }, + { + "path": "assets/c-BIGW1oBm.js", + "bytes": 72113, + "sha256": "d6cf83167ef5e3f3ce64b34b57082b5ad6824eba4970eae9a278ab9285c9f3d8", + "gitBlobSha1": "10eb5a7e323e952012bdc66c3599894af5b689ac" + }, + { + "path": "assets/c3-eo99z4R2.js", + "bytes": 25631, + "sha256": "d9cb0a3eb6e94d7f49445602ee073bf051042e6913129fb61a19f781ce952e80", + "gitBlobSha1": "d18692979de8feb3aae06735288b8cfb834c055e" + }, + { + "path": "assets/c4Diagram-5PPSVZJV-BTfR_pxU.js", + "bytes": 70107, + "sha256": "52da3e5a7a2e73fa56264b3d5e1fe11fda8d90911a062591dcda44ee699d574b", + "gitBlobSha1": "fb591eaf4034441bbbae205346807758ca11163f" + }, + { + "path": "assets/cadence-Bv_4Rxtq.js", + "bytes": 23669, + "sha256": "eb6ab19c5a35cd1da0a04c8a01c5be50284f5655462475a7f8656a32075de3df", + "gitBlobSha1": "e38c73daca447d9852946a4f35e6329977876ea3" + }, + { + "path": "assets/cairo-KRGpt6FW.js", + "bytes": 2936, + "sha256": "cb3ef520248905e08410aa414b326b0a1ad308ef13c23dc9741340ba5d1ba610", + "gitBlobSha1": "0b125918136b6fe2c1b611b266541264b15f9ffc" + }, + { + "path": "assets/catppuccin-frappe-DFWUc33u.js", + "bytes": 47258, + "sha256": "af29d7afc5c6014349681c54ab1e9ef49c368d7ed84cff5e864caff0a233d085", + "gitBlobSha1": "47a3a6bc80fd7f822a90a9c05ebdba311a74b9d1" + }, + { + "path": "assets/catppuccin-latte-C9dUb6Cb.js", + "bytes": 47256, + "sha256": "621f81dbc7293ff13fd2b0085dc3a84d5d0dbc3bfca4c1414c9e59b4ac43b3e8", + "gitBlobSha1": "79b07ec6f898fdcf282e8817cd462e20b6ee0543" + }, + { + "path": "assets/catppuccin-macchiato-DQyhUUbL.js", + "bytes": 47263, + "sha256": "4b0c204a8d4775c3b97c90fd9ebdf8734bd8fb4d270f4eda4398997a75e72505", + "gitBlobSha1": "2d851fd167dea5aae348a0cc925ec148def61e8d" + }, + { + "path": "assets/catppuccin-mocha-D87Tk5Gz.js", + "bytes": 47255, + "sha256": "b10b92891fde2ac93b551d568f8ca2ce7deb12701a0cdab40d13ad1bc7cd6872", + "gitBlobSha1": "11ae10e258536c654ecc7a60568b8af2939ce508" + }, + { + "path": "assets/channel-D7wJZFli.js", + "bytes": 113, + "sha256": "164effe219eefb566e1c82f65e4bd4d4ef86ec5fb2ab65da32582f830cb1b871", + "gitBlobSha1": "94f64ec475e6c2b4558f3f1f26daaa1ec9603e09" + }, + { + "path": "assets/chunk-2GRJ4B5K-CLAHGF8-.js", + "bytes": 1923, + "sha256": "c229ab8331c16d0350a1a23fd8490a78dad82542e2bd40274e5510c6881cf40b", + "gitBlobSha1": "971be5235a4be20dfb0befdae926fba270bebeee" + }, + { + "path": "assets/chunk-2Q5K7J3B-B7alykJD.js", + "bytes": 193, + "sha256": "7abe104c47d4698381b42ebefd243582015142c9405e124a81341977e999e30e", + "gitBlobSha1": "1d92c0484ac087a24d200cb447763277a1fb54c7" + }, + { + "path": "assets/chunk-5RXB4S5H-CtgLOMKP.js", + "bytes": 38663, + "sha256": "522265e25c087312f7247e46122035b2f100a0e649523fef7e4f5116616ff512", + "gitBlobSha1": "2d4b0212308687aabc19c4d424dac972d92225bb" + }, + { + "path": "assets/chunk-5VM5RSS4-CvDbOz7T.js", + "bytes": 366, + "sha256": "3d2e06b1ffc30954c37bc6d8c92967245d83fab626a7ac0619c75b53dae5ee37", + "gitBlobSha1": "808a03ff71cc36929abc446b7840c88c8ad5a1dc" + }, + { + "path": "assets/chunk-6Q2QTUOP-5djJkk30.js", + "bytes": 15755, + "sha256": "e0468fa6a567faac61e5f86a2a322ed94ab3340a7ef82525137112b223f4aec3", + "gitBlobSha1": "af75c76480b900ae645c950f49f70a6e99f3b66f" + }, + { + "path": "assets/chunk-GF5L2VYU-BfL3ARJ4.js", + "bytes": 49340, + "sha256": "1601cf6ebee3fe7109bb95b1428e195c7be6c87a5cae91f98b4b43845234dfac", + "gitBlobSha1": "94dd7065bbeb541191235766a0ddbfb304c976dd" + }, + { + "path": "assets/chunk-JWPE2WC7-DKwCoFi4.js", + "bytes": 297, + "sha256": "f7227b34b044d68970f72bf18187e9a6ac768ef1bb599656850ff538692ff5b3", + "gitBlobSha1": "1806b4851873756419efdf20f1f2797264d44970" + }, + { + "path": "assets/chunk-KBJHAD2P-DyHz5_Bd.js", + "bytes": 532, + "sha256": "bcc5914e6cfe89e395eab0dffce5dc94c501031cf194d4d4c1463aa227e8dacb", + "gitBlobSha1": "4bcb5ef1daad6e1cb9f07e74a7d390a0baa27e23" + }, + { + "path": "assets/chunk-RYQCIY6F-DHj6Rhjc.js", + "bytes": 7181, + "sha256": "4c8a72c360ee940681f8e18f62e85547f6dff13a4a69e9b141ed03f6492254ce", + "gitBlobSha1": "4dcbb2a741e778071e92826b744ea76924813f4f" + }, + { + "path": "assets/chunk-XXDRQBXY-DSy_Unjx.js", + "bytes": 275, + "sha256": "780df5599e2b8cb805c7010fb568894447d4458e03624dc97d792f07e268fc9d", + "gitBlobSha1": "6cfb550dcd90af403608ff5f1bbb3f5ea2871dee" + }, + { + "path": "assets/clarity-D53aC0YG.js", + "bytes": 14275, + "sha256": "fb9051f589b58016a4aa61d4a5e54fd1495cc6ef104ea387971ce67df8ac8bcb", + "gitBlobSha1": "47366f364279d8321392564b9c0326ad1e4c3e72" + }, + { + "path": "assets/classDiagram-JCYQIIEL-CVUWZNJN.js", + "bytes": 599, + "sha256": "4768ba349b280a99b9e4556242036cf450401ae7079f5c268769d73ebd57c4a6", + "gitBlobSha1": "94b48424e25864758c614075caa7470cf6cfc9f0" + }, + { + "path": "assets/classDiagram-v2-OCEON4UE-CVUWZNJN.js", + "bytes": 599, + "sha256": "4768ba349b280a99b9e4556242036cf450401ae7079f5c268769d73ebd57c4a6", + "gitBlobSha1": "94b48424e25864758c614075caa7470cf6cfc9f0" + }, + { + "path": "assets/clojure-P80f7IUj.js", + "bytes": 6413, + "sha256": "d84e3798038c4ac8cc2748cd8a7b606de826d38cda40fcd1af0157a2c205fad3", + "gitBlobSha1": "f661a7064e52acb26b21782f7d9d70fd92fa0a8c" + }, + { + "path": "assets/cmake-D1j8_8rp.js", + "bytes": 9855, + "sha256": "20de18825679753afc48318521d760d4daea701c95137a58b7343f6ad6bed4f9", + "gitBlobSha1": "a26a7fad5ae89d4f77f7926db88d40fa0ed52d63" + }, + { + "path": "assets/cobol-nwyudZeR.js", + "bytes": 39148, + "sha256": "eaf6edc5d2a50ea8a6b21d857e035f60b7aae6860c71bd63258a0938dad94955", + "gitBlobSha1": "08a6b2d42ff50ce8814808baa0a2d7c293485637" + }, + { + "path": "assets/codeowners-Bp6g37R7.js", + "bytes": 547, + "sha256": "748b547cc141abd1b350d2f2e3b0562606ffaf23e88bb89c8b4e7f7df3c425f7", + "gitBlobSha1": "94539135dab4ff7b31b1124da60e4593526a2128" + }, + { + "path": "assets/codeql-DsOJ9woJ.js", + "bytes": 26883, + "sha256": "d06a0d7ec54beba6ac8aac8db0675b696bda5a7756273663bf7b5cdab0d3285e", + "gitBlobSha1": "e0ee579b51abc3ce702efc3a9a6821581619d19c" + }, + { + "path": "assets/coffee-Ch7k5sss.js", + "bytes": 27422, + "sha256": "2cf05264d5ada366f643b56fa1145af2af574ed8bcd8ce653ffff95b24d8ab89", + "gitBlobSha1": "daea83b23e4b08f325e1575a1ee79ea51f301844" + }, + { + "path": "assets/colors-Cc3OSVma.js", + "bytes": 109, + "sha256": "d76cd6ab120c4451838cf8f44dd019583c1368aef4f05f58df4d948c70d66a2e", + "gitBlobSha1": "74622a9afd516df4f5365e3e3b8745170fed9d51" + }, + { + "path": "assets/common-lisp-Cg-RD9OK.js", + "bytes": 22581, + "sha256": "2fc697c25d367e1f9f950e7bae36f1a739b500bb1e646396484edb3c7e23a96b", + "gitBlobSha1": "b299e44b4654f2ab95e4ce44dd9e652dc5143967" + }, + { + "path": "assets/convex-vendor-BdEFRSg5.js", + "bytes": 11689, + "sha256": "7dbaca7351c29ab9544f4ff7aea61e0c8f5c1a6cedcb1bf6aedaca5aa42a4dd4", + "gitBlobSha1": "defe6492071c122786687acdc3f761e739b94163" + }, + { + "path": "assets/coq-DkFqJrB1.js", + "bytes": 5526, + "sha256": "142db296843c6d3167305b3c9da4abee5ac6bf9c901947299e0853fce02216f3", + "gitBlobSha1": "dd1101adf6bbd159f913a04d0a60adb614df3c3a" + }, + { + "path": "assets/cose-bilkent-JH36ORCC-UO66jrWZ.js", + "bytes": 81854, + "sha256": "a128806a657347cf8ed0144dcbe690ec172222d0a222589aaa3b9d4d7f5cb662", + "gitBlobSha1": "dbc6406f078f35b3ccfefe1b7f1b22df00a01bd2" + }, + { + "path": "assets/cpp-CofmeUqb.js", + "bytes": 626081, + "sha256": "dc4aa50510e3eebba4fde0eb3f11c2f4ca51da37953fb2518553272497b316d4", + "gitBlobSha1": "d331b0c0f53b468d157f8144e9eec77364044df4" + }, + { + "path": "assets/crystal-tKQVLTB8.js", + "bytes": 29388, + "sha256": "de1fc7a75f97f97be146fdd7d3890ecd28384ed44db8da9dc4932c92c9a8e714", + "gitBlobSha1": "a9ed539855dedec219df3753ed28bee1fcddda87" + }, + { + "path": "assets/csharp-COcwbKMJ.js", + "bytes": 89687, + "sha256": "cf21c0244a3f8883cb070f404dcf629acfc640079e3edf473d91cb0960237ecb", + "gitBlobSha1": "5b1f33679fb32ae2abace02018c897d68f116b08" + }, + { + "path": "assets/css-DPfMkruS.js", + "bytes": 49023, + "sha256": "ecb96a4c835492cc7ca23bbfbfaa97e5213dddb412363bdb4d2ca4851057f193", + "gitBlobSha1": "53d0380d872b1a5bdc17d724881657eb771c16ca" + }, + { + "path": "assets/csv-fuZLfV_i.js", + "bytes": 1143, + "sha256": "e78e725cd6790c0062e5e941943b776280c971046b16144a117a28f248156091", + "gitBlobSha1": "3a91577bc5e897568d0b4f8365ca617a801d2348" + }, + { + "path": "assets/cue-D82EKSYY.js", + "bytes": 16204, + "sha256": "d462534c02551b41f1b3198ef6faa32fdfda6bc5aa14e441e6df367fb0485ea7", + "gitBlobSha1": "1948536eba5e20ba6e3f325c82c3b3376f83fb1c" + }, + { + "path": "assets/cynefin-VYW2F7L2-CwX1EbjP.js", + "bytes": 690829, + "sha256": "f3eaaea10da5de9c325b2029ee4a24f5d790be6af67c578b06ff7adae55f8579", + "gitBlobSha1": "c3ce13cfa1520e79ff30afb78d78d39482555f34" + }, + { + "path": "assets/cynefinDiagram-MW4NZA55-B4CGDE4X.js", + "bytes": 10229, + "sha256": "223c4be48aa859cec90730a2e543086b0ca2e6315badafcae498c6f8692b2f6f", + "gitBlobSha1": "2e91c839bfccdea07314167becd1f271333a6a67" + }, + { + "path": "assets/cypher-COkxafJQ.js", + "bytes": 5956, + "sha256": "6953f20dbca19c201dd4a7845f0fb4f3f52a82ad0a0ec6e4a418e49dd7f50666", + "gitBlobSha1": "0c113fb2ff85312265562cbac1405483c2c49517" + }, + { + "path": "assets/cytoscape.esm-DTSO7Bv0.js", + "bytes": 443722, + "sha256": "ae4fe0587749c1a3835611d80563e8db69b60ae070f74d4cbd25e53d7ec7225c", + "gitBlobSha1": "f29e19347451afe49cabc80c81abb2417f222169" + }, + { + "path": "assets/d-85-TOEBH.js", + "bytes": 43795, + "sha256": "bc9e087cec1757269bb3e28c1df26140f6fc454de2ec7e453385d27ed3b39c18", + "gitBlobSha1": "41bc5bd03182f96bb934dfd6dd6578161ed1bf04" + }, + { + "path": "assets/dagre-VZM6K2ZE-BzLK1F8E.js", + "bytes": 9033, + "sha256": "4818d439734470405def945a930d26f0c35d22ef7c9ff85cc111f057273d8331", + "gitBlobSha1": "c54558642b8d976d78561379532e551079e2eca4" + }, + { + "path": "assets/dark-plus-C3mMm8J8.js", + "bytes": 9097, + "sha256": "b8b869d6edc688a6855924a0fcbb663d8c22897e84f94f8273f53cb432be2d3a", + "gitBlobSha1": "899a557e98be110294673156d574c9b7288ebced" + }, + { + "path": "assets/dart-CF10PKvl.js", + "bytes": 7812, + "sha256": "0b3d4673f8a761354d95b580fd5b46c05715ffc9f5e203860de51e62d50a407e", + "gitBlobSha1": "d4e478a2ccf3bf3282ff0e1f041e7aed6f4369de" + }, + { + "path": "assets/dax-CEL-wOlO.js", + "bytes": 5365, + "sha256": "e112cfc4f22edb11cf16e6cc9c6f30c1bc44d399442a826e1c2fa68be217f4b1", + "gitBlobSha1": "3159e3b8d4f2aeb205565c63a06241818197e2e4" + }, + { + "path": "assets/deckPptxExport-a5Ky08C2.js", + "bytes": 12452, + "sha256": "d4b6a7368fbfe7b0a20a3ca36c2751bc9b732fa5017b1cc15a1554fa268e22dc", + "gitBlobSha1": "279def56b8d7e81bf03cad596763ed3533f575df" + }, + { + "path": "assets/defaultLocale-CzDG__Ur.js", + "bytes": 4696, + "sha256": "7e6b8586489ac7ae297c72d3175d67440af661406d25f6a3a3b31d55b9c3448d", + "gitBlobSha1": "8bd198bc67d1cb1eb531a0f84fadefbf58de6364" + }, + { + "path": "assets/desktop-BmXAJ9_W.js", + "bytes": 1833, + "sha256": "fbbe32cc99e0e74b11e742aaae97dfaf0a7b553719ec179638313cc8a8039cbe", + "gitBlobSha1": "be3f8e705b389ac4e478faf83970b76e250f16ae" + }, + { + "path": "assets/diagram-7IWD3JNH-CAKOL2-2.js", + "bytes": 8606, + "sha256": "fc7f28f1e3ddc173cadc054dbaa04457818ae9037b3a9d7d23e241b115b6f566", + "gitBlobSha1": "fae1bfafeb5cf54527e3bd84ca79d5e8bf320789" + }, + { + "path": "assets/diagram-B4RE2ZJO-C9gNRDk2.js", + "bytes": 10955, + "sha256": "f1b7854886cb993354635ea5ef8f09f1279cc03aee9e2f808c3caecaeead8b9e", + "gitBlobSha1": "82a10cae0eeb2a7ae90307cb38b0c392fa97575a" + }, + { + "path": "assets/diagram-LBJQPF4R-BztK0VBJ.js", + "bytes": 4378, + "sha256": "823a05c027dc92471e5314399c3175b4e5e2cc8f8e5d813169a55f46cc4b7392", + "gitBlobSha1": "1077f123d178eea9bb9c30ce3457c6d9b4bc1a90" + }, + { + "path": "assets/diagram-Q27KOJAE-pPmldwAR.js", + "bytes": 11465, + "sha256": "06e14c833a51007bab026917cc29c3beb312c7fefa2b1bb8e68e0a7b79b62945", + "gitBlobSha1": "235a134a5aaf2cc6d78a8ed157ce9a8071ef0652" + }, + { + "path": "assets/diagram-UB23O5K3-BDAA4Qa4.js", + "bytes": 6359, + "sha256": "3ea18e3be5f1225b50370f1584fc4b5ccac35b3ef8e1561e209d47c2a7862dac", + "gitBlobSha1": "9d17eb025aaf42c3f36747741c76067f70721871" + }, + { + "path": "assets/diff-D97Zzqfu.js", + "bytes": 2569, + "sha256": "071f6c7f36d51227bb0701147c7508f96a0f342ba5df808ed83a820ee486c17b", + "gitBlobSha1": "587d11ef29a12e04e1c14d53c2fa8d9fcd6c22bf" + }, + { + "path": "assets/docker-BcOcwvcX.js", + "bytes": 1741, + "sha256": "0995ae194f7a702d1572e90b064fd0b1ee0a8da03b8f587c12261c00306eb145", + "gitBlobSha1": "9ad9aae0c9f33ed41d53e26a3d28cbc5b74ba099" + }, + { + "path": "assets/dotenv-Da5cRb03.js", + "bytes": 1422, + "sha256": "551287cfbe5723329a252cc084780c0511bcf7e9fc6370c241cc458fe2b7dc62", + "gitBlobSha1": "a413121437c6b1ef196ce532f20ad43d6356ab57" + }, + { + "path": "assets/dracula-BzJJZx-M.js", + "bytes": 21066, + "sha256": "6349dc749f3cf65b72d22a359e6dff84401fee8b3fccb62812bd8463e9e838c9", + "gitBlobSha1": "ae983a0411ecaa3be1622245fdc5a239cc370803" + }, + { + "path": "assets/dracula-soft-BXkSAIEj.js", + "bytes": 21076, + "sha256": "77ad2cd2bdedc3fb6c78edb3fc9bacf6838ffcad1ec6927f3a7bb6e75e1cd8b7", + "gitBlobSha1": "2892ee1cf139e48cedbc9f4d7e5c2f771412b0f2" + }, + { + "path": "assets/drawio.client-BONxGk44.js", + "bytes": 26395, + "sha256": "1d8f02c65e3032b66f56217f9990653d9e8c57a66bde287a4ae17b4074e05ab7", + "gitBlobSha1": "036d98a0298f64e593b313cc81e2eab640575792" + }, + { + "path": "assets/dream-maker-BtqSS_iP.js", + "bytes": 10469, + "sha256": "44d40108b2579475555c0727913f37bf2f696a0ed48a68fd264cb601fde06cb6", + "gitBlobSha1": "4b357e12152ef5c32989a82f61e8df295104d9a1" + }, + { + "path": "assets/ebnfDiagram-BXEA7PRR-ft3TnKcG.js", + "bytes": 2137, + "sha256": "06f453e75d0abac3bcfc6248f14c8f3766b355f59fd6fa0770205c3daf649a4f", + "gitBlobSha1": "dc7407f2b16545fad12c0ee2a90ea1031fba2284" + }, + { + "path": "assets/edge-BkV0erSs.js", + "bytes": 2363, + "sha256": "00bc29007f0aff82154ad02b269087703e4ffadb454ec2099d9da603d13b84e6", + "gitBlobSha1": "cc77f32221e6647038476252decfb222141001c5" + }, + { + "path": "assets/editor-vendor-CE6Sek4k.js", + "bytes": 400394, + "sha256": "45e89cb04b6cce3760ead3fad5b1492681723e318e2d0d4258524d98def1edb6", + "gitBlobSha1": "aa5529b0f738e21477f6c59cda7c070e5997e1f7" + }, + { + "path": "assets/elixir-CDX3lj18.js", + "bytes": 16321, + "sha256": "e48d53b18b22d40fd0822880baaf55fc521b6398087ac49e878cdaf3fc99cf9f", + "gitBlobSha1": "1d2188d4afa2cdc85f36701fdc40a2e338023bba" + }, + { + "path": "assets/elm-DbKCFpqz.js", + "bytes": 10968, + "sha256": "7deaadb185bfb1298a8ac5fed1a531457c7fdc5745a583ad0f783e16b8bcc1d6", + "gitBlobSha1": "744c1db2ae522587321f3a39fd4093a71705a84c" + }, + { + "path": "assets/emacs-lisp-C9XAeP06.js", + "bytes": 779854, + "sha256": "096ee2b27ea479a6d9ce76ea4de53edad90a0d1d7f4b17639caa170824296775", + "gitBlobSha1": "f27b6fb2d5e36f7e974078cd9b7fb73beb898b13" + }, + { + "path": "assets/erb-B12qg9BL.js", + "bytes": 2607, + "sha256": "c7a12b8ac182947d30165edb44f2ed4065d89b552d4062a616ff30596560225a", + "gitBlobSha1": "4ba4115905f14dc146377892ce78d58c8f5fc1ad" + }, + { + "path": "assets/erDiagram-JOGREHBK-CxpZ6DXV.js", + "bytes": 27352, + "sha256": "ff3a5263b03f98b8a11bb7219a2d134e013f6c666d3e53cff9fa035304f9fdb1", + "gitBlobSha1": "5df2ed1634f4798364f33f214babf580e11c605b" + }, + { + "path": "assets/erlang-DsQrWhSR.js", + "bytes": 37480, + "sha256": "5dea30124e59e6a84f9519a5da5944d3470182989e62d9aa65bb9b068df90c13", + "gitBlobSha1": "0b48faa71dc551dbb6c9d5b7411208dd218daf01" + }, + { + "path": "assets/everforest-dark-BgDCqdQA.js", + "bytes": 53745, + "sha256": "826c6890db7a065c9d4ac75850fbadde410ca10872705c74bb6c1f543f051676", + "gitBlobSha1": "66947738897e005197e599ae4866c806e6b2f9a1" + }, + { + "path": "assets/everforest-light-C8M2exoo.js", + "bytes": 53748, + "sha256": "2ac34042eb335675bd7c5035f2c81ccd503e6a60fe8b047396ab6486fa4f20f3", + "gitBlobSha1": "3fc12593b8c42768bdad8239bacc5e90164ba3c0" + }, + { + "path": "assets/fennel-BYunw83y.js", + "bytes": 4768, + "sha256": "0bb4581df6bc62ce293fd6715c42bfe54b77ffb18ce9761d0262eee728079c6e", + "gitBlobSha1": "fbef0540126440eb09f25899937f0772279a6a0c" + }, + { + "path": "assets/fish-BvzEVeQv.js", + "bytes": 13038, + "sha256": "31e609691f04394f54edcf86890e0f7a66aa8fed436d63da5480381875b1a3e5", + "gitBlobSha1": "90cbea68310184b9253e418a17c63d1de59ba95f" + }, + { + "path": "assets/flowDiagram-UKHOOZJN-_iGssQdz.js", + "bytes": 61441, + "sha256": "45bef7d308942d4852d70e218b8e04d501422b990f5f5c6661534b09b236aa22", + "gitBlobSha1": "ed14a8f10810ec44d62a6aea0cc6a59653d0b8d2" + }, + { + "path": "assets/fluent-C4IJs8-o.js", + "bytes": 3610, + "sha256": "2929a3bca0b053d7bf7abbe02db3da7d65692836a281dc04510baaa635514cb0", + "gitBlobSha1": "74b54740ab9a58d06789ebba152009109c79b3b1" + }, + { + "path": "assets/fortran-fixed-form-CkoXwp7k.js", + "bytes": 1665, + "sha256": "5368f7fe5dc74f0601978b78fea6617eaf5c03090f9f8600d67bd126729f9283", + "gitBlobSha1": "4925588768e3cb20623b0eec20f095d0b8a699fb" + }, + { + "path": "assets/fortran-free-form-BxgE0vQu.js", + "bytes": 88969, + "sha256": "9aa28f072525e1fd2c4963431f29d5d0918c6bd422142c98e6182e4b998370dc", + "gitBlobSha1": "86d1d4aa9a1d81685c347ef7d8e78e66f886c087" + }, + { + "path": "assets/fsharp-CXgrBDvD.js", + "bytes": 25305, + "sha256": "2c0618c951b62650650d0c44950072534f0cfe3b4fcd58573a0024a64e53c52a", + "gitBlobSha1": "05ff6ad6274c81ba1d430725a2d89d8ad1912139" + }, + { + "path": "assets/ganttDiagram-PKOTCBZU-BfXa0swZ.js", + "bytes": 52684, + "sha256": "78853101b423c83ab791d187ca9a06781c1452fd46f5ccf3c9f1e18f184a0f3d", + "gitBlobSha1": "761bf222b8ced6fb039625a0de8b38d2251dc31b" + }, + { + "path": "assets/gdresource-BOOCDP_w.js", + "bytes": 5285, + "sha256": "b62c5b30cb3163053b3315e0c340475e6584a76363c80c553641fbeb9d243b9e", + "gitBlobSha1": "d364c0020a86a15e283e9b4a3c391392fac68850" + }, + { + "path": "assets/gdscript-C5YyOfLZ.js", + "bytes": 18992, + "sha256": "05e593d1c80b8f314bd99795db1ebd519c2389ce3850674c1affc5e0472b630d", + "gitBlobSha1": "a63bb58ac904dc774d4720264856468d95756609" + }, + { + "path": "assets/gdshader-DkwncUOv.js", + "bytes": 6326, + "sha256": "73f353c2c614fec2d8cfae89fb40ee57d4c406bc00b8aeafe4f7a0aa3395f603", + "gitBlobSha1": "87c5bb474148e56ebd953407ea35d0641763166b" + }, + { + "path": "assets/genie-D0YGMca9.js", + "bytes": 3356, + "sha256": "1ae6367d77ad7ef0abbac818ca67a213ee812abb47d1aefc5427120b1a6fd13c", + "gitBlobSha1": "e8c0cba002ff61b410eaf176d22e881ba4b0a79a" + }, + { + "path": "assets/gherkin-DyxjwDmM.js", + "bytes": 11946, + "sha256": "c7bd366597ab12a5977d62813a92022bfbce506f2a3c70d0b3819aa39344c7ae", + "gitBlobSha1": "28a8824c10551f447a547beaca67569fdadee870" + }, + { + "path": "assets/git-commit-F4YmCXRG.js", + "bytes": 1230, + "sha256": "783b8cb9af4cb9b869335cd5cca6a2125bb97719b21ef21b004c0974181bcae6", + "gitBlobSha1": "25c2d3289bc007fe0a4ae3308dbd0a0efeedd84a" + }, + { + "path": "assets/git-rebase-r7XF79zn.js", + "bytes": 983, + "sha256": "88402cafff4897e7d7931bdb17acfcad0916e1f54353e578e876b21055ccbef9", + "gitBlobSha1": "1799ce280a412642c73e956e14b6e8960262a119" + }, + { + "path": "assets/gitGraphDiagram-DS77QQ5N-D_7OsUMk.js", + "bytes": 30072, + "sha256": "f0ce25aa8e3d408302fb2db109e6e2cd4432cf116bb16da12464b2efe6965991", + "gitBlobSha1": "c40732dada10fbf98351734d0cb137281493ff4c" + }, + { + "path": "assets/github-dark-default-Cuk6v7N8.js", + "bytes": 14435, + "sha256": "c748b560af550be6ed802ebe5433b0688f617925feafdd98d8e3d43470c24a1b", + "gitBlobSha1": "1b7077aef1d3ec675ed419fbf7d0d5d93e72fea5" + }, + { + "path": "assets/github-dark-DHJKELXO.js", + "bytes": 11405, + "sha256": "8f7ccd8274e8950ef099d389c70d379782cf17f39424090949ba45833eeee022", + "gitBlobSha1": "6fa9d4274d3e5c719bf2ac90ba90a0d211768570" + }, + { + "path": "assets/github-dark-dimmed-DH5Ifo-i.js", + "bytes": 14433, + "sha256": "8bb97e7c16cb22f8acf952c9e0af4d9bc1e13cc7ad44fadd98b5df37bf3ba5f4", + "gitBlobSha1": "2192e30440438d545b53552dc9e62a5ea710d6fd" + }, + { + "path": "assets/github-dark-high-contrast-E3gJ1_iC.js", + "bytes": 14595, + "sha256": "18f1a70b963db803f141be93c79c80a0dc38f78cd47fea1ff8b05cec409b7fe9", + "gitBlobSha1": "924234dfb030bb9ea784727e7457bd7b3ffcec6a" + }, + { + "path": "assets/github-light-DAi9KRSo.js", + "bytes": 11184, + "sha256": "9ad9f268476dc0edc85cdb9a9ae940ee7d0ad267d5de82810fef40d2f13462ab", + "gitBlobSha1": "28362e1b674a8d6d949cc748165da1ff0f60e85e" + }, + { + "path": "assets/github-light-default-D7oLnXFd.js", + "bytes": 14156, + "sha256": "212b28c6987d30991d6bc3f812cf69d93694a557235bd9e1e4460855edb2e4f4", + "gitBlobSha1": "bea8a9b8a4426e27869006b49fcf065d8f4a6cf2" + }, + { + "path": "assets/github-light-high-contrast-BfjtVDDH.js", + "bytes": 14275, + "sha256": "1b1d4ff8b3fccaa0e7cfcf8688e7fb75b086e8b879c62353f6c580f8cd260e54", + "gitBlobSha1": "5f5b8eeab013427a97f8195e76b079f60f1054d2" + }, + { + "path": "assets/gleam-BspZqrRM.js", + "bytes": 2577, + "sha256": "96ee8ab10150415113386ffb698a6e578947cf099f72daf24984f09da77c2118", + "gitBlobSha1": "05f3093a67d0af18944c83b4ea829074ca7400e7" + }, + { + "path": "assets/glimmer-js-Rg0-pVw9.js", + "bytes": 20071, + "sha256": "41ff2390d3d87dbba88aed68a5dbc6af2a074697412a69d93ecf92c265c615dd", + "gitBlobSha1": "7a02042e9014e8ccebdfc5da9cd2bfcc88128cf6" + }, + { + "path": "assets/glimmer-ts-U6CK756n.js", + "bytes": 20071, + "sha256": "90bd2b279afd03f599ec90b7323e3c414cf7f3b44038551ece8f9e59522beaac", + "gitBlobSha1": "7b779c94a3f8bfc4d25bb4e623e57d5f5888f696" + }, + { + "path": "assets/glsl-DplSGwfg.js", + "bytes": 3634, + "sha256": "d73db15d8c26ce44204eccdc3f250039018f34902874d55920b51f171d75a737", + "gitBlobSha1": "9acf86732dd67e3ef588c31c3a86f27ab1c75558" + }, + { + "path": "assets/gn-n2N0HUVH.js", + "bytes": 4002, + "sha256": "8ebd06d1b7db73d2b6a50f2072c23af6b2164783b8268fa8c8d643d4d3e72ae0", + "gitBlobSha1": "dbeee98835eb3594245255c3cea408e216e7a711" + }, + { + "path": "assets/gnuplot-DdkO51Og.js", + "bytes": 14783, + "sha256": "44e79156d6f1fda5d964731ffbf67170dfc593edd18e9ad76f2e984d5e90a17c", + "gitBlobSha1": "d1ec9056ed78f1e07e0f1cdae67cc0941a1f232f" + }, + { + "path": "assets/go-CxLEBnE3.js", + "bytes": 46808, + "sha256": "7a9b30622fce8b7e26e4d4fdad80993b0a63471268cdd171d3b9de7b1a273261", + "gitBlobSha1": "e864279454adb09698e924bac1546d8f3f66d32e" + }, + { + "path": "assets/graph-C9eacEi8.js", + "bytes": 23950, + "sha256": "b18a97cacd3305f14dc7cd4434886925cd892c17ee7e8617b760c87540646723", + "gitBlobSha1": "55ca2e2d1d37c77df496b7088ad3cce7fa89d059" + }, + { + "path": "assets/graph-vendor-C5ap-Sga.css", + "bytes": 15869, + "sha256": "d34cf723b92d9c85640db4d0e5b6270630c3cd6e08823df16ee5a1ff55def948", + "gitBlobSha1": "0ce43795fb6492c7525079c4b88f2b2616673724" + }, + { + "path": "assets/graph-vendor-Dz3KpPvp.js", + "bytes": 186112, + "sha256": "e1fba6a6c2d50aefcb60911985f32ec71a347eeffaed1019075420d88bb86b0b", + "gitBlobSha1": "9d3e5607bd8e326cfaa4b1a2787d1def46e95490" + }, + { + "path": "assets/graphql-ChdNCCLP.js", + "bytes": 18002, + "sha256": "ce3367ffe23232e3d6d2ce940d1bb233839c0ebf02b9f12b151108c8bc2d4b58", + "gitBlobSha1": "f5d88c9f4c19b947ed9b793345b9095244e39865" + }, + { + "path": "assets/groovy-gcz8RCvz.js", + "bytes": 19179, + "sha256": "a03245cec1dc1cbbf9d68a083dcc04b77cbf748ad95bdd0291bf7ae3555bc1b2", + "gitBlobSha1": "79c1016ea8c09865469a7c585a2e9727e9d2acb5" + }, + { + "path": "assets/gruvbox-dark-hard-CFHQjOhq.js", + "bytes": 22633, + "sha256": "d298e64968c577792359edbd2bee987149cd3b6252b82836f28dbd96cb521d3f", + "gitBlobSha1": "632729bb1e0224938dcfe3c8a31453454fab7fde" + }, + { + "path": "assets/gruvbox-dark-medium-GsRaNv29.js", + "bytes": 22637, + "sha256": "cd2d75705169e923822a9f8bc1141e8f5e7c0a5af0b5ded469dc76e5d03ada21", + "gitBlobSha1": "7dd4c68374be81bc619938a0f49453c4c7ba4344" + }, + { + "path": "assets/gruvbox-dark-soft-CVdnzihN.js", + "bytes": 22633, + "sha256": "fdbd1d78ed6a4fce75feefb8797570a4568edce8ded59af0d99f83e20f3307dc", + "gitBlobSha1": "190db16a87f6f5b37cf73304d85b13f80a598bc7" + }, + { + "path": "assets/gruvbox-light-hard-CH1njM8p.js", + "bytes": 22636, + "sha256": "7b2fa3d574f3ef80a213d88fddb684431e94bdb472d523d8f0caad96d5d376f8", + "gitBlobSha1": "e2dd2dddc587ad0cd7583c1df6c0362f32218f9e" + }, + { + "path": "assets/gruvbox-light-medium-DRw_LuNl.js", + "bytes": 22640, + "sha256": "62a938850d5e4fc934e44213eff465fb3618456b0490adc4887d4a83bd0d9e29", + "gitBlobSha1": "e43b6991e1bb814d1bbe57968af621313815444a" + }, + { + "path": "assets/gruvbox-light-soft-hJgmCMqR.js", + "bytes": 22636, + "sha256": "090f38c249b8bccd7b283926da32fa0095e8c27b5dd88ae2746863f7b7bc4ccd", + "gitBlobSha1": "8b8c4e75fe8ea60b5bb7faad075d7039e3180e99" + }, + { + "path": "assets/hack-CaT9iCJl.js", + "bytes": 80241, + "sha256": "e1a5064e1ee240147e7a5000884c157de6a4b6ff9a6a140bcd3194a09106d5d2", + "gitBlobSha1": "b0fcb9994160e309863bde3bf7c5c6a56522b118" + }, + { + "path": "assets/haml-B8DHNrY2.js", + "bytes": 8263, + "sha256": "d10c129fed07a700ec284adfba6c8bba53540c90fc6f881d7ff816eba26f16a6", + "gitBlobSha1": "8c335d613b6c9a42eb19a3db2e1c371daa4bec87" + }, + { + "path": "assets/handlebars-BL8al0AC.js", + "bytes": 12150, + "sha256": "7ae55c034a41370a303c867c5e5bd40a4e8eea6baa69a4dd9b10a28e98fc4236", + "gitBlobSha1": "74a78d02d29fe5bb23ce4db89ce1b9dbf32d3b13" + }, + { + "path": "assets/haskell-Df6bDoY_.js", + "bytes": 41490, + "sha256": "164e3b023115e70432602c2da71d1c0ac7184ea91deea1dc70cf17ef74b84fa6", + "gitBlobSha1": "98c6cd27bfa42791d8184b66f6ff5a966433663a" + }, + { + "path": "assets/haxe-CzTSHFRz.js", + "bytes": 35164, + "sha256": "9758d15765769f46874c4bc90d672c3a465b8ce0a1b2db6ffed3a116e6d5a7b8", + "gitBlobSha1": "974c4c8ae2b186dbdbf9617e9d7d6f95eba13ca0" + }, + { + "path": "assets/hcl-BWvSN4gD.js", + "bytes": 10053, + "sha256": "2d11254542388410861c6a6a3c0f57deb9c218fdc2c1c5ffac901bdb876fe80a", + "gitBlobSha1": "693cd337dcb3cba6f4bf2f34dcea8eb4ff44b0de" + }, + { + "path": "assets/highlighted-body-OFNGDK62-CQU1Slg-.js", + "bytes": 700, + "sha256": "187a3176822589a36ab0b78e5942d397fadf44e2b5bd616ae707b667ac95ea02", + "gitBlobSha1": "7a67b4062530a2768bed602e954a81d3876c6d09" + }, + { + "path": "assets/hjson-D5-asLiD.js", + "bytes": 12053, + "sha256": "6a7e74cb9d734dfd58aeeae9224a7b4b69a86edcc6b73d0e3e36e98dacb3300b", + "gitBlobSha1": "1605976e312d41212642308f793d5fa1d7d06f5e" + }, + { + "path": "assets/hlsl-D3lLCCz7.js", + "bytes": 7264, + "sha256": "f5bff090211e17e314660363157f351c5a0b8e707db3ef26cdd78c8522c7d133", + "gitBlobSha1": "1feb4873d24c61699543f314fb5ae1fb14f349df" + }, + { + "path": "assets/horizon-bright-Cn-bp-IR.js", + "bytes": 8786, + "sha256": "b69099a7451825f86a289c6741582f048f9518965229156fb84552d8d64ca575", + "gitBlobSha1": "12c175d3eea08cfbca5a343983b247a8ec2ce1ae" + }, + { + "path": "assets/horizon-BUw7H-hv.js", + "bytes": 8780, + "sha256": "d43f28552f920fd99607f754ce527ee0be5654097c479c446d86df933c911b72", + "gitBlobSha1": "c70f724e79d9985eeffde538bcb79bdb3f7149ab" + }, + { + "path": "assets/houston-DnULxvSX.js", + "bytes": 35422, + "sha256": "91c981557306d7a18f7ff39d9060dd2b582604a75aff38ae79edc647e4d9ff93", + "gitBlobSha1": "798d296e69fbe746fb50bac286f3619389315fce" + }, + { + "path": "assets/html-derivative-BFtXZ54Q.js", + "bytes": 900, + "sha256": "8af372f33242dcdabf3c39a52c2354419f00ec560b589269d03c05e0e799b84c", + "gitBlobSha1": "f1ca4479b8401ee8725eb391a7c1401d531c75a3" + }, + { + "path": "assets/html-GMplVEZG.js", + "bytes": 57247, + "sha256": "b50c5444419c4bdd9464606b005a02ec2dab4f9a21f26651bee94332f213c567", + "gitBlobSha1": "60f3f050ba0f83ca981807d35cb50f32f1d97c0b" + }, + { + "path": "assets/http-jrhK8wxY.js", + "bytes": 4549, + "sha256": "5bb8464898add03e8c22970d9eb4cc467b40ae2888e4d5623c9fde4209dd4d29", + "gitBlobSha1": "1357633c88bdd77e96b628301f71edb4d049f1f9" + }, + { + "path": "assets/hurl-irOxFIW8.js", + "bytes": 3652, + "sha256": "f87e3fbbc06d52e9d69c1a8cb0a3d64e430ccb85faddeb7a5f87aa12ed6d01a2", + "gitBlobSha1": "7ae407772406b08e4613de97315d1be261368394" + }, + { + "path": "assets/hxml-Bvhsp5Yf.js", + "bytes": 1743, + "sha256": "59530b894cd868887490a330da6b8366214246b8eef502a261bc99ca7ccf63af", + "gitBlobSha1": "0f470954dc47626cb701e8abb6ecfdda143c2e68" + }, + { + "path": "assets/hy-DFXneXwc.js", + "bytes": 2648, + "sha256": "22df29d8b5c5119f1bd25e998bf7b359a29dc5b826e50597cee67731679cca68", + "gitBlobSha1": "5282a0892aeacee780851af6da9d65d0c2ffb033" + }, + { + "path": "assets/icons-vendor-VKpO2iRi.js", + "bytes": 46816, + "sha256": "62b4c29b4ac83d6a8cbc2379a17d1562357f43b55037ab9bf26263484fa5af29", + "gitBlobSha1": "20fe8a2574d27aa188700b2a0f10634343736845" + }, + { + "path": "assets/imba-DGztddWO.js", + "bytes": 49930, + "sha256": "73402caea94e54100c970c652577abf4995f79310e7528744b46a37227057e35", + "gitBlobSha1": "f71ffead92a8025553ec071b0a07a3c6c6f3e21d" + }, + { + "path": "assets/index-C8lfCLIG.js", + "bytes": 12520, + "sha256": "5184fc5f4d566dde27f8ec85e0c9b142e97cac8278b4466eb6ea6b4197d31319", + "gitBlobSha1": "03a625bf5aeed77521e4e935e4a8ea9d5ec13d26" + }, + { + "path": "assets/index-CloyLe0J.js", + "bytes": 660, + "sha256": "22f4f091b75b89cdfa67c785b9bb7bf8cef1c5dd75edc6886b1197e07530d03e", + "gitBlobSha1": "0d604819d6780d0d87b7a8d049e8e35cbe41d125" + }, + { + "path": "assets/index-DRjmektm.js", + "bytes": 192895, + "sha256": "010e6a4f6c406cf3a65ca5f4b9af0e5b47417fb88d0c21b6ee8a3d376430a48b", + "gitBlobSha1": "baa95d80ac24b9f61186ae492949c639e35f706c" + }, + { + "path": "assets/index-DVBvMn51.js", + "bytes": 4860, + "sha256": "b2d8f00c4549e9beff84571befc6d5fda5917cab384f9b20670e408ea4d1d361", + "gitBlobSha1": "8c1f621487a6c414e5104b505b3092b69eca4c7e" + }, + { + "path": "assets/index-ERxDhA9M.js", + "bytes": 20246, + "sha256": "c847532508a95e3ede44f48784d6438541697fd934a06cd62f87ac7ecf083ce1", + "gitBlobSha1": "1e28540d7f623b4133897a870528745a332efbda" + }, + { + "path": "assets/index-TeonLBog.js", + "bytes": 279295, + "sha256": "1f27435d9e2d33e4d89c17a5b478f15c8cafe713b22337c2af63e5ae4862f20e", + "gitBlobSha1": "2ddf5a688807df9a8f4957cd6ac3bb0aecac545c" + }, + { + "path": "assets/infoDiagram-6WML65LV-BLo1fkVx.js", + "bytes": 714, + "sha256": "cbbfccfb8a845e4ff4326207bfd3ee30edac51f22cd823c83e614471ab851660", + "gitBlobSha1": "ad5a491cd18beda9050dfb1b3baf1f6248f91506" + }, + { + "path": "assets/infographic.client-CrhtzGAz.js", + "bytes": 5381, + "sha256": "f192f5e06806ede5883e5d2060cccd96c6b3142a4eb54d25d5fc0e9b819e6a2d", + "gitBlobSha1": "552b7ab34b2547d7143668ab4017ff873f7e0b6f" + }, + { + "path": "assets/ini-BEwlwnbL.js", + "bytes": 1525, + "sha256": "7830e62a2a96e22c418b5a1e52ba15545ece3c5684346dd50fc174a60b3c225f", + "gitBlobSha1": "46397f7b21ecc0c026b4755d0d192ede80672bb6" + }, + { + "path": "assets/init-Dmth1JHB.js", + "bytes": 377, + "sha256": "6dfdcbf6754983698ab29a22640e4942b8ae02ea0a205b896691b2748f2d155e", + "gitBlobSha1": "3b68f9cedb54ecfe4b6cedad20b7e17ee8e5de62" + }, + { + "path": "assets/InvestigationReport-CVViZO-z.js", + "bytes": 21903, + "sha256": "b634fae4ad620358a1d1fd588aedbb882fea1056656e79ffea54ed59072998d0", + "gitBlobSha1": "626413c00cc9d41957fa5ee9b773d8e27186cd5d" + }, + { + "path": "assets/InvestigationReport-DdZK31A3.css", + "bytes": 14324, + "sha256": "96a262833c90bc12e57d76bc4012c99bba83590f9648d5344ebbaef4fd54b11e", + "gitBlobSha1": "e67d7ee69179949f18f71ccf2c218862ae7bebfa" + }, + { + "path": "assets/ishikawaDiagram-WSZJBQD7-C0te4SxD.js", + "bytes": 17698, + "sha256": "02011d51cb6a8817cfe80b16d5f3e75542f54b05a74c7be9b9c0ac2d231d37e7", + "gitBlobSha1": "0003536aefa9b71718cb6f11de7be5b6b1e81e6e" + }, + { + "path": "assets/java-CylS5w8V.js", + "bytes": 27219, + "sha256": "2bec4be5ba0dea3d8258669df1e6957e1ba2590a1ad56c6e103ea8c00baeba7e", + "gitBlobSha1": "76cc63fd5edfa8bde1f763878630243aae76c5c1" + }, + { + "path": "assets/javascript-wDzz0qaB.js", + "bytes": 174827, + "sha256": "a4a56cc72c7d0f1ecbbeb1ba6bf5f532193c8d13fc3de19910f8d64c70aec4e9", + "gitBlobSha1": "2dc51b8adaf6a9cc76f3149c3f896703b7188b33" + }, + { + "path": "assets/jinja-4LBKfQ-Z.js", + "bytes": 5685, + "sha256": "1801f5eb0d83c09dabe24151cd4cb508b2d0e2c1db33ef92dcf691f240db83f2", + "gitBlobSha1": "9e4eb5d82fe7826fd6682d28d6bf67e84840bf8a" + }, + { + "path": "assets/jison-wvAkD_A8.js", + "bytes": 9690, + "sha256": "3d09bd59c47dffe52f1eee5bd2371ecc2c8340daac0400872472affdf0c95392", + "gitBlobSha1": "9e84d8611f2906e53eb464f1614a444e5a218247" + }, + { + "path": "assets/journeyDiagram-NVQOT4AX-Bbi8ZyJ-.js", + "bytes": 23707, + "sha256": "7daaf5daa07f1242d74df7b984913ce685e6ac6460b187877453d044114f12cc", + "gitBlobSha1": "1adc86ee4f40676b160c99eeb82d125d7dc86842" + }, + { + "path": "assets/json-Cp-IABpG.js", + "bytes": 2824, + "sha256": "ca32840cab9c2eb61da2afd6581e7a22c9937229f6b1a47115eea432794e7740", + "gitBlobSha1": "c8ece6ecca79b4d2190083809b0a3cb085a3f3bd" + }, + { + "path": "assets/json5-C9tS-k6U.js", + "bytes": 3254, + "sha256": "84985fb6e4953e5eccc4d704e4db9eb5c0045b74a11d3edd3a9b4c0bd3d5c2e4", + "gitBlobSha1": "627f3023471851a2263a83248dd10dc338c0e8ec" + }, + { + "path": "assets/jsonc-Des-eS-w.js", + "bytes": 3109, + "sha256": "1a23e00b91a35d38fba019125c68139ed9c6b9a0bdb953e9b21a709875f41125", + "gitBlobSha1": "4e602c0fd9b6dc7f52630acc61b9ae9b63fc01f1" + }, + { + "path": "assets/jsonl-DcaNXYhu.js", + "bytes": 3011, + "sha256": "10ebbfda6fda38f977a98ef80441310d350b084c6c27c811296ddcf2d84ba3ea", + "gitBlobSha1": "0e09f313fd42e5f843b6bf28e65430270a432bdf" + }, + { + "path": "assets/jsonnet-DFQXde-d.js", + "bytes": 3618, + "sha256": "198a5e9985d5d96fae3f00e0d707841393882f4b9e2bf60ab5145af13c88b513", + "gitBlobSha1": "371c89bf16c2f2095d3ae41ae4102a639b73a758" + }, + { + "path": "assets/jssm-C2t-YnRu.js", + "bytes": 2238, + "sha256": "5b09940400c8fb823c95c198c9363791948e6a9229da2873bdf27b806452b831", + "gitBlobSha1": "93f0fd1b124b5a7ef5408b347702045019bc9ac5" + }, + { + "path": "assets/jsx-g9-lgVsj.js", + "bytes": 177792, + "sha256": "abb8a7007d9a1f743c33283c233a509dc702eb618d1447d128b1330b73851bf2", + "gitBlobSha1": "47af49fae1db4955e91b1a2ef30a453d3f8d1bea" + }, + { + "path": "assets/julia-CxzCAyBv.js", + "bytes": 31066, + "sha256": "44816ad3fcafca4b4b97959c2bec42e38f18bbb02d7a7ed8f4f6ef8a884697a9", + "gitBlobSha1": "439f9b4861a0125bf8699406d789a8a30b3e6e87" + }, + { + "path": "assets/just-Cw27pwNe.js", + "bytes": 11162, + "sha256": "816a83790036ab1865d99440ad98d3cc3d40fb3fc48ea23c1cbee4d52d1bcfa7", + "gitBlobSha1": "6c7981e769433e3e4b21ac09fc1c9526af91b385" + }, + { + "path": "assets/kanagawa-dragon-CkXjmgJE.js", + "bytes": 17127, + "sha256": "d45808ad5de1205ef39b8a53037311667253a7a4b13ed40e4ebd70faf55e4089", + "gitBlobSha1": "b7fc25e1571d148371f0723f8c8c4d546ec85f44" + }, + { + "path": "assets/kanagawa-lotus-CfQXZHmo.js", + "bytes": 17126, + "sha256": "4a9b14832c6f978395fb8fc63107094b3d51ef6aa92003b38bc21e00b769fb54", + "gitBlobSha1": "118c6b75432063ecc0954daf51186927f3b8f920" + }, + { + "path": "assets/kanagawa-wave-DWedfzmr.js", + "bytes": 17123, + "sha256": "25c129a062f9ac87decb56e2299d4a6aa652d1b20f3488c4e30f80eb9f8aa78d", + "gitBlobSha1": "a7530718f911292b72eec557a013b6d30113e1c7" + }, + { + "path": "assets/kanban-definition-27J2QSJJ-DPx5LV-t.js", + "bytes": 20827, + "sha256": "b9964930b52088164a92faf5d9d3368e683309dd246ba4515f0050fd1d7e3213", + "gitBlobSha1": "7d933d02bacd298ed6a3d60b609bcdade5918628" + }, + { + "path": "assets/katex-C5jXJg4s.js", + "bytes": 261329, + "sha256": "9e8127e147ae576d0129e22677e6949eff48f7a5f4313e2629967938126dcd16", + "gitBlobSha1": "c651c8a36b8499949e8009601901239b9b93832d" + }, + { + "path": "assets/kdl-DV7GczEv.js", + "bytes": 3629, + "sha256": "24eccbf01c8c213cb407ee8b0294e0fe4d362c2a6c173a9516d41bf76e8cd387", + "gitBlobSha1": "637c0d815901ec015575698c568066b174c6c21d" + }, + { + "path": "assets/KnowledgeGraph-BMpmhnG4.js", + "bytes": 117251, + "sha256": "33581f808e4bbb84e06b756327736949756e1c6b721384973af2a4719a5a137f", + "gitBlobSha1": "82a51cb8d5ea9ef461b262c8e9abe61741021bf3" + }, + { + "path": "assets/kotlin-BdnUsdx6.js", + "bytes": 8785, + "sha256": "2a95758b9ec1532516fb3fa38cdd82fed5534d944ca791f327e624ec94e829ac", + "gitBlobSha1": "3e20beb0a4723691b7b0a704a9b92368fe97ef13" + }, + { + "path": "assets/kusto-DZf3V79B.js", + "bytes": 15173, + "sha256": "a5d665eee0a12fcab22699da3b1c2cab4a1726b94a9947c1b6da3f3709d0d96b", + "gitBlobSha1": "314466f2910339aa01882e2eb4e56c8a909f3609" + }, + { + "path": "assets/laserwave-DUszq2jm.js", + "bytes": 11499, + "sha256": "d56a0486f8b143d6d31a0b0230ccc5914ffbb751543a7dc97d697cbc1152da69", + "gitBlobSha1": "a050c7e8c29e4faa9917922cad31d33e9572351d" + }, + { + "path": "assets/latex-CWtU0Tv5.js", + "bytes": 72644, + "sha256": "a544f1361ee85779a47677047f3b2f002820d522f10ee48bc98bb045ab06d2af", + "gitBlobSha1": "ec61d11d7084918e20acaa2316a175ec3789ee69" + }, + { + "path": "assets/layout-DEXfKzaS.js", + "bytes": 30997, + "sha256": "92d8105d9b991903e6bc7b63938385ad1ecc97dc6b9ba531b08a2a9dd96cfdf1", + "gitBlobSha1": "28e1d2e33994bb3a7e46e8ac1ae17f561d9ecfcc" + }, + { + "path": "assets/lean-BZvkOJ9d.js", + "bytes": 5784, + "sha256": "b34bf987976167f4de82af23930eaa4471b06320f236a5d00e3e9098fc704301", + "gitBlobSha1": "1e8f2fdf5310def8da64fc6f428f61d617066f92" + }, + { + "path": "assets/less-B1dDrJ26.js", + "bytes": 97633, + "sha256": "ed3ea44927fda1db6ba56ae932f08ce7f82f8d8a06d2b3d63e3b29db54ec5c65", + "gitBlobSha1": "8d018465703fa41d19fea23f7691cbe4bedb1d73" + }, + { + "path": "assets/light-plus-B7mTdjB0.js", + "bytes": 9941, + "sha256": "44ec2993b3cc158ca691da352114658cacc0812ba4678faec2a6370262415979", + "gitBlobSha1": "e21cebb987a9af01cc4b49a70d1e75895f36c16e" + }, + { + "path": "assets/linear-D_qmF9Am.js", + "bytes": 4820, + "sha256": "94165cb971b0e52e745dab2ff61451e1421f447a6832fce3d68144da96a26e1a", + "gitBlobSha1": "05a4157424f39003c2273c2760b465d258fb2b7f" + }, + { + "path": "assets/liquid-DYVedYrR.js", + "bytes": 18089, + "sha256": "4d5bb9fbbd8f34a140dc9fdbc4e17c56fd7bb686805e5822be6326dd0288233d", + "gitBlobSha1": "33c08f76230585e5a4a1a9b34446be95bd49f5c1" + }, + { + "path": "assets/llvm-DjAJT7YJ.js", + "bytes": 5050, + "sha256": "4937d05e28115e0d9161616a786aecdcce209dfbe4c8ef070150937a58befab4", + "gitBlobSha1": "c7e0e59501391c97b05c3ffa141f5e9153e8a4f4" + }, + { + "path": "assets/log-2UxHyX5q.js", + "bytes": 2852, + "sha256": "784500daa4b6a6ac32f95c19dc166914133189decc3ed10faf43578fe522a786", + "gitBlobSha1": "9fbf05c499e5910b2f728fcf682cc4682b486926" + }, + { + "path": "assets/logo-BtOb2qkB.js", + "bytes": 3127, + "sha256": "0ded9d4454ae3e08017b17f93c117c3e451698f42109e15d69380ec089406060", + "gitBlobSha1": "575c93bbeba6f73056fef0f1f66d672d767051e6" + }, + { + "path": "assets/lua-BaeVxFsk.js", + "bytes": 15535, + "sha256": "890724e2d1bc79e6f6498ce6cedd5a4bed0d9489121621c1946ef05e209f5623", + "gitBlobSha1": "a1d67407a5046aa490ee510608c4cd0020c486b6" + }, + { + "path": "assets/luau-C-HG3fhB.js", + "bytes": 13964, + "sha256": "b969611adf3271fd488730a32acb9dbbab5c0377231c610ed0bee0bf4719ffa3", + "gitBlobSha1": "2fb2916de230697b14fc36bab6d13ebf9c960c17" + }, + { + "path": "assets/main-Bb0OMdhb.js", + "bytes": 4930, + "sha256": "9cf1ae171d3907f94537693e85d3e89d26367973fb25d9054d3aef1c8a00fa98", + "gitBlobSha1": "462b85909f4083381c4778163c114c0d24c49f82" + }, + { + "path": "assets/make-CHLpvVh8.js", + "bytes": 8961, + "sha256": "50df72a259773a4ca73a97534238010cdef78d632729871d880b58fcc6d3112f", + "gitBlobSha1": "5f619bd89cfe3b59337b71fcf1fcf9951529fb3f" + }, + { + "path": "assets/map-Czzmt4hB.js", + "bytes": 5070, + "sha256": "f15e10db8661ed2bf93075bcb018f62927333b9c2be5437933414af533c2d83c", + "gitBlobSha1": "a96c181928779a98a78a6b8fa4b20944e23f9084" + }, + { + "path": "assets/markdown-Cvjx9yec.js", + "bytes": 59335, + "sha256": "ce6a8b1a6ed9b803b1847231214ba37621c2fa51611ec3037d38b561b360c278", + "gitBlobSha1": "adfd7324fcb6c306b795f687aea078ddd0f97b86" + }, + { + "path": "assets/marko-CnJfTvn9.js", + "bytes": 25479, + "sha256": "c6d06de9c7098dd02d0d4d0b60a78cde16bb039c5cefecc2573f12f8bc124e1a", + "gitBlobSha1": "5cb70c22aa6d996505e11bcfe84abecc44f807e2" + }, + { + "path": "assets/material-theme-D5KoaKCx.js", + "bytes": 18615, + "sha256": "d0950f3965aecb678089843c133f238db6b308f218e98bdee1412de56b0af425", + "gitBlobSha1": "86eafd360aec77604a75dcf67843c8f78f740875" + }, + { + "path": "assets/material-theme-darker-BfHTSMKl.js", + "bytes": 18629, + "sha256": "ec892813b7a31e9e2d83f54a05450f9a406de273628838b016e828db7ed72572", + "gitBlobSha1": "7417c3157579379b80aff0b45245eeb94d66b310" + }, + { + "path": "assets/material-theme-lighter-B0m2ddpp.js", + "bytes": 18634, + "sha256": "4547e1325624259cb17dfa811e29b0d3e3f9a07c9f37b4cb8d4b4f945d9f2f5b", + "gitBlobSha1": "6f25cb805a71c4c7591d41a0fe6f54b97bcef36c" + }, + { + "path": "assets/material-theme-ocean-CyktbL80.js", + "bytes": 18629, + "sha256": "f80d8209f2d352d0aea9f47759017fa0f994e71e79db1e722be9d82a974692a4", + "gitBlobSha1": "ef7dbfefb5c4e1582ed3ae9654f01242bb192969" + }, + { + "path": "assets/material-theme-palenight-Csfq5Kiy.js", + "bytes": 18635, + "sha256": "6261dfa64833f4e0c0316a1d41efc5ba6fc43a376bca6f936b4f3b76a6396af7", + "gitBlobSha1": "54d78a718615f10fdbfe4e9b70485bad7d7fc7b9" + }, + { + "path": "assets/matlab-D7o27uSR.js", + "bytes": 16086, + "sha256": "463b698b6acd5b08065007f5376b060dda4fe19f9e27259da52d40a30bc2bc66", + "gitBlobSha1": "ea8bbf7e1fde869ee389d28c0ec58f9d49078d4a" + }, + { + "path": "assets/mdc-BMNejdWA.js", + "bytes": 19632, + "sha256": "7a05fb8bd772509b14aad9b776fea0e8734c4a3099a3e68f4d1887bbaef0ef00", + "gitBlobSha1": "1c32637ce0a8b948f49274819eb581dc4d785858" + }, + { + "path": "assets/mdx-Cmh6b_Ma.js", + "bytes": 136114, + "sha256": "c2c652334464f6085341dd1c46e32717e22556890fbc0d2651d9200f372069bb", + "gitBlobSha1": "2c3f35e7806abe56aae64cdead260da6291e8882" + }, + { + "path": "assets/mermaid-GHXKKRXX-CeF2pCk7.js", + "bytes": 1911901, + "sha256": "447b8aa622a27bd4fd8e1ca908268f16b9d8865c5f8ab515594ac5897610eea5", + "gitBlobSha1": "7d569f40d630f23d15dcdfa10e77fa7d823a7944" + }, + { + "path": "assets/mermaid-GHXKKRXX-DXxw6UAo.css", + "bytes": 97568, + "sha256": "6329846859f81cfc6006ce2c9a391c64e7a614412664ecbdda9cd158dba5dd5c", + "gitBlobSha1": "24f95917dad0747b3804f93606228864242e8cae" + }, + { + "path": "assets/mermaid-mWjccvbQ.js", + "bytes": 29511, + "sha256": "6802dd4aaed6afb26068d1b0acc945071cd5360809baec6b102fc2ac23d8a322", + "gitBlobSha1": "7d13d25ae2328f3bc07fb7eefeeae759a22a37b3" + }, + { + "path": "assets/mermaid.client-B7Mtf2KX.js", + "bytes": 1281, + "sha256": "8e401d5c5bf5c623b7ec5345e7c4069930ccf2435d5464eafe94af97658bc463", + "gitBlobSha1": "f81bc374f82aa45149387e99fa84d02e59ae995b" + }, + { + "path": "assets/mermaid.core-iu1cm3e6.js", + "bytes": 580708, + "sha256": "fe93544696ff7d529a5f025e81be770cb0e1a47b21b6f4c8608c1cb1e3172905", + "gitBlobSha1": "95a20e97a58797003943a821e8a3f038f50fe52a" + }, + { + "path": "assets/min-dark-CafNBF8u.js", + "bytes": 6291, + "sha256": "4c0956f147c2dd5aef71894b78d7e95b7a766deeb20712ad94e5897bed620792", + "gitBlobSha1": "258550f7e917a4b2405ad65f417cddf81e6517a5" + }, + { + "path": "assets/min-light-CTRr51gU.js", + "bytes": 6969, + "sha256": "27e91e09c261ea328ed371e734655f83543da150143a49d5ae39598dad6cd844", + "gitBlobSha1": "a85f8a2df28ed7e883c8dff85442032dac394bce" + }, + { + "path": "assets/mindmap-definition-FAOFIHXS-DuIJCnRM.js", + "bytes": 23766, + "sha256": "093ea46cf46f6522fd9f1438f7714765a1c905ec0e469d74b3f5a1a1c859e233", + "gitBlobSha1": "3eade88b43693d667ec79ba86521e5c491aa4b84" + }, + { + "path": "assets/mipsasm-CKIfxQSi.js", + "bytes": 3259, + "sha256": "c2cdb4e8e7172f68f5bb6e0615696c2a023a2b8bfe008f424c8bbae1e120dd2b", + "gitBlobSha1": "5c6517beb95f5a4011777905ed73fac3109f7784" + }, + { + "path": "assets/MobileRoot-C_RVAb0O.css", + "bytes": 175424, + "sha256": "b72fed66fd4cd59d38f032a7023c8a13e853a26d2fde62d6c5c5c7021e77af6d", + "gitBlobSha1": "1c53010664a3aa8382567185c798375d18246a4c" + }, + { + "path": "assets/MobileRoot-OMt04TWZ.js", + "bytes": 239458, + "sha256": "4dda311d84c48452012db97fb2271b3ae759977f4aea0411e0c1752ec0883384", + "gitBlobSha1": "861215275ef54e00669544e3f1a97d9e46cab415" + }, + { + "path": "assets/mojo-rZm6bMo-.js", + "bytes": 69799, + "sha256": "9e70dea75c07fa27e22d7f5bce1afe758f65ecfcaa4c48682e67a83f00d17dc5", + "gitBlobSha1": "b3172259b996e554ebcc0f244806cf552563c46f" + }, + { + "path": "assets/monokai-D4h5O-jR.js", + "bytes": 7884, + "sha256": "cff833ee8a81cd91ccfa57ee0d5924577aa1406e209a80087bb9675ad2ea8d0f", + "gitBlobSha1": "b3e8cd413b376d37f1da231558094f71a8df875a" + }, + { + "path": "assets/moonbit-_H4v1dQx.js", + "bytes": 5900, + "sha256": "ce085206edfae15f55e78824eac04480d7169ea96755d6fc4e57642c5641c0a4", + "gitBlobSha1": "6967a6381ef3f076a54b2554cdcd375e643e60b2" + }, + { + "path": "assets/move-IF9eRakj.js", + "bytes": 17505, + "sha256": "e90046ae9e34086d261731f85a1399439ece1b8cd11635066a2fb910eb3f73f5", + "gitBlobSha1": "ee0b097d7609c87d59fc5b544093c61ee3abc953" + }, + { + "path": "assets/narrat-DRg8JJMk.js", + "bytes": 3672, + "sha256": "37b1a4a08e1a0d4cf06e1ca8adddf1c51b9600b695f017b911799099ac5d8671", + "gitBlobSha1": "141c1c91f69888d190a6dcc3ec6e855493fc6adc" + }, + { + "path": "assets/nextflow-groovy-BeH2EWoN.js", + "bytes": 10406, + "sha256": "26c7440b7660ef7115c3b7fd6f6cd4fd1a7215bc8b574def16c547cca3546730", + "gitBlobSha1": "063453c69d57fd45e2427c02341ccee5553d0fcf" + }, + { + "path": "assets/nextflow-Zz6hmt5N.js", + "bytes": 4510, + "sha256": "de0fbf3f19a3e632ab10ce7df53ec378e2f7f210b286d5a7dd69aedce0827f9c", + "gitBlobSha1": "dacec2e10cf11cc57542887adaeed1edc45eebd0" + }, + { + "path": "assets/nginx-BpAMiNFr.js", + "bytes": 35374, + "sha256": "25b53af8ecce64bdefc084c8b7af5f27537ef7022618e8d90e4b20fd1ebe485f", + "gitBlobSha1": "c6ade0e6f2dea181edf82ad4892395ec5cb4803d" + }, + { + "path": "assets/night-owl-C39BiMTA.js", + "bytes": 28913, + "sha256": "2b8554d4a01b6e062bb929507c741070c04d4f194b424942c5f208891afa1360", + "gitBlobSha1": "e0c6fb446aa77ccf33aca52419079c8b798a39b0" + }, + { + "path": "assets/night-owl-light-CMTm3GFP.js", + "bytes": 25902, + "sha256": "68b5b21d900e1409b772220982c7837bd77003f084069160edc37f9eccd46758", + "gitBlobSha1": "cb229859c5422b37d478f6fc93220b83adb2bfd9" + }, + { + "path": "assets/nim-CVrawwO9.js", + "bytes": 22460, + "sha256": "2a0ac9212274e3ae8926531fdf55664e68594051f02f3e46107551d7fd087cf3", + "gitBlobSha1": "244b6b24b4dd683c15de6e857fc9a676fd3945cd" + }, + { + "path": "assets/nix-CwoSXNpI.js", + "bytes": 15511, + "sha256": "1d064eb88b18c48846c1ad0e438c869aa25813361efba72de9725932c0310449", + "gitBlobSha1": "4c4fe6b497e978b4c23e8cfed06b416280a9fb6a" + }, + { + "path": "assets/nord-Ddv68eIx.js", + "bytes": 26723, + "sha256": "243a9dfea9c93c40586d279de5ea4cd8f3de380c2e3c0ea7ba58e93ef12cbcf5", + "gitBlobSha1": "dc4b375ae7826f9098ccdb0d19209d9898b56bb7" + }, + { + "path": "assets/nushell-Cz2AlsmD.js", + "bytes": 20413, + "sha256": "14a523801c0d9238c1c62d5f5055c80cffc460564875f4b3e020f7e4d27a72c6", + "gitBlobSha1": "70d5716d4ef169e4cf450ed4941a8f3c96f0d510" + }, + { + "path": "assets/objective-c-DXmwc3jG.js", + "bytes": 105413, + "sha256": "aa3b80179150c0bf74649497bbeb60a36f025631ea64ca23c9e2aca64ec71c44", + "gitBlobSha1": "c43e34b84b17008c9419c0fe8ed059f4d17c7084" + }, + { + "path": "assets/objective-cpp-CLxacb5B.js", + "bytes": 171972, + "sha256": "9841e552a948f571c39f594fc27661f1262e589c9f53898c8ac2de469b1d85f3", + "gitBlobSha1": "160589e36b3eace8799185499a17c71275a082e4" + }, + { + "path": "assets/ocaml-C0hk2d4L.js", + "bytes": 62449, + "sha256": "eb5a88927867a33e866a8fea38c91799b28739c6038264e5a3560519951d1dc3", + "gitBlobSha1": "3c4c59bf752c99a8eeabd88c36a06afc72f8e150" + }, + { + "path": "assets/odin-BBf5iR-q.js", + "bytes": 16513, + "sha256": "886d9212bdf48ee8eb6ba85adb1a07ca6519e5c60e4e73b5323c1cb4d8969939", + "gitBlobSha1": "aa9fb127a3343592d335acf871aaf5f56a0582a9" + }, + { + "path": "assets/one-dark-pro-DVMEJ2y_.js", + "bytes": 33787, + "sha256": "7c55d00426abb85391f3432fd1282150e0bd7d54a8e5de7553a1d65c31459eb2", + "gitBlobSha1": "db3458b907b7b04166863868f784f9315325e33a" + }, + { + "path": "assets/one-light-C3Wv6jpd.js", + "bytes": 25300, + "sha256": "8f9b7f248dd34ae2acccfb35c8c095f0b581ea4e0d3351c7fe25721b914ae177", + "gitBlobSha1": "d3e9425942e6c7ada12e60913ee68ad4de4bf6c3" + }, + { + "path": "assets/openscad-C4EeE6gA.js", + "bytes": 2824, + "sha256": "36bb06e21f4dae2e8f47a92050501a4c989273bafde4096e151f591635fbed55", + "gitBlobSha1": "d9151c2f3078d67db83f5c008ce40e008b5830a4" + }, + { + "path": "assets/OpsPanel-CxcogtNq.js", + "bytes": 5106, + "sha256": "ecf39e94173447f9865212e41a08a2c992de6454e2382de0bb8f51006bbb5b86", + "gitBlobSha1": "12f85d2d6f3199adac5161364a4d8eaa28d32f87" + }, + { + "path": "assets/ordinal-BeghXfj9.js", + "bytes": 1473, + "sha256": "227a80a1f5eca2378a9db259bf2668cb10d889a5d5e56b254d9127db5ea9910e", + "gitBlobSha1": "7908cf03f736d9fe5593fc776051c9f4ccf4d90d" + }, + { + "path": "assets/pascal-D93ZcfNL.js", + "bytes": 4150, + "sha256": "65c2b6be568561feb139eb54e384137c54c3d53b49be7be851e28aa0fc2f8c22", + "gitBlobSha1": "4daf7321a7058ff995aa88262b9bb49adf3c03c9" + }, + { + "path": "assets/pdf-vendor-BRfqYs8T.js", + "bytes": 462899, + "sha256": "2dbf01d32335bde2d995a1d2b31348aab86fcccce047eaaa76de78c97b22669f", + "gitBlobSha1": "89a2cc511dfe1f5af885a08e7796a3aff73fe001" + }, + { + "path": "assets/pdf-vendor-DThUiFH8.css", + "bytes": 1527, + "sha256": "1483b5916fa619aca85a6bc34bd5fe2494d805c9a7b2a4f2d02473fcbf002282", + "gitBlobSha1": "4f17865b8f3b28820eac5fcbf4eb7b28194a5c36" + }, + { + "path": "assets/pdf.worker.min-qwK7q_zL.mjs", + "bytes": 1046214, + "sha256": "dbcae78a691b3c501508f74b774c6066a57a14a76cefdc9e25ad86b651bb75d5", + "gitBlobSha1": "0850e222af7c1b7b9961be1331146b876445a544" + }, + { + "path": "assets/PdfCitation-DPZL-wdn.js", + "bytes": 2020, + "sha256": "20bd1c829175a883443ebca0eac4814cf02a29dddb2b0f13d910d8edb4a25220", + "gitBlobSha1": "5778361cc72f906b85517fa3a12a35845be7388d" + }, + { + "path": "assets/pegDiagram-VL7TDLO6-bvam0ug0.js", + "bytes": 2088, + "sha256": "286087eff611e8bec10cdfb44d8266e4616919d1d3ac3e19709174d6f06d7558", + "gitBlobSha1": "1087da03a029d6f91147bcc20246c34407432df1" + }, + { + "path": "assets/perl-C0TMdlhV.js", + "bytes": 43156, + "sha256": "7e84c2f819dc04b8dabc2f0f1871151fcc710a8822ba9abc849922440eb6de54", + "gitBlobSha1": "bb57064b26b682572ff97e128321fef6a742ba41" + }, + { + "path": "assets/php-Dhbhpdrm.js", + "bytes": 111058, + "sha256": "498359c1dd0c0109bf7aefba4f4ddf6ebabeeae8d0332b0e69d953c79d2ca218", + "gitBlobSha1": "34c29d6ef1addc85a43e8f264a60719cf8b63e58" + }, + { + "path": "assets/pieDiagram-7S7Q4E2Y-D2nDqXR5.js", + "bytes": 6487, + "sha256": "804732db5f71913638b3dea9b2977d69042dc60b0ab9c4323f57efb0da5d8196", + "gitBlobSha1": "23d17e81fa37cbb6d6aa8f53cacf92255bd912f1" + }, + { + "path": "assets/pkl-u5AG7uiY.js", + "bytes": 10372, + "sha256": "1acafc1de9c65cd06c2b6a3b0bfb928a92fd13fa5182fbc4df0f03f41ca79c24", + "gitBlobSha1": "30894bbeaeff44426a74fa9e95f5ac7456a59d4c" + }, + { + "path": "assets/plastic-3e1v2bzS.js", + "bytes": 9295, + "sha256": "f507b7e3105e92c0d7de6346751da2f369d9d10a9237539fb2f41ca22f3f674d", + "gitBlobSha1": "d446cc67acd2d1410ecb417dd01dc0cd612d9fa9" + }, + { + "path": "assets/plsql-ChMvpjG-.js", + "bytes": 8512, + "sha256": "5b08ff2f2caca88ca87a1e02c740ec32d06d8b96d70e210abcc2729858cd9a2e", + "gitBlobSha1": "03d2fa6c29ce58a4667802bdbde7c512e9998a69" + }, + { + "path": "assets/po-BTJTHyun.js", + "bytes": 3239, + "sha256": "c6925708c8b9b9a2793d10218ab601e30f79eab0c2892985fd6b3f8382377b32", + "gitBlobSha1": "76c520c015eeaaef09bfacbea813a1e1b5851d76" + }, + { + "path": "assets/poimandres-CS3Unz2-.js", + "bytes": 33494, + "sha256": "f3a6399c5ae3fe8b7ce02c29c7278199a4ca3ff9b39be1b455a9124c17227de3", + "gitBlobSha1": "ce767ad7e4ed40fe35258fd0bf2f69330d652e32" + }, + { + "path": "assets/polar-C0HS_06l.js", + "bytes": 4671, + "sha256": "b6205f4f60671b327a436f3a5c02197826ed563c0c23d22d8231095515274c6d", + "gitBlobSha1": "112e2a1ac0aa4516947dfaed61346342ed4d0a7e" + }, + { + "path": "assets/postcss-CXtECtnM.js", + "bytes": 6417, + "sha256": "748810304adf9da83f71983e99219a242fac24424483e68c0145e0edb6610136", + "gitBlobSha1": "dd030f388c1f5afed487a8a90e8a7ef38ee956c7" + }, + { + "path": "assets/powerquery-CEu0bR-o.js", + "bytes": 5903, + "sha256": "2560bd4cef47cf5dee7b8c2204ae8008ce73f85f41764683afa1d0988f4d1d7e", + "gitBlobSha1": "1bc653fe1052490c5fd3dbf3b3a497eda8bb4d9d" + }, + { + "path": "assets/powershell-Dpen1YoG.js", + "bytes": 20151, + "sha256": "97259eb4370f2ded7fb394e103aec42e12ff7c2ba37c846a43506410672cb473", + "gitBlobSha1": "da0b7cd48d35175f2fbc5fd65b559b99776f11a0" + }, + { + "path": "assets/primitives-BSN9ZDgJ.css", + "bytes": 41722, + "sha256": "6a6d3e91f7b00a35afdca4fc55262c6fe490c86393081fa3fa23fc764a50e92c", + "gitBlobSha1": "741b1369b56e3eacc4231eba90ada7e1347b4650" + }, + { + "path": "assets/prisma-Dd19v3D-.js", + "bytes": 6330, + "sha256": "82e0167743a332958b14c0e40875bf207de8def0521189323b3ae3066e715615", + "gitBlobSha1": "0cd402e3732ffc443181b13232b49bcef83966c0" + }, + { + "path": "assets/prolog-CbFg5uaA.js", + "bytes": 11356, + "sha256": "3cbc885011b27249f5a0b7660b6f7c87ac5ab4f44487107cc1e92d0c19ebb3cd", + "gitBlobSha1": "bb8d880b9346187b96c66013d3591b4ea0f944e8" + }, + { + "path": "assets/proto-C7zT0LnQ.js", + "bytes": 6548, + "sha256": "2f6893062281306a31a73dcc50949a332ade86a11565f7b78d66e28ed2aaa627", + "gitBlobSha1": "40d8ad50828e4202a45c792597c4613503858a83" + }, + { + "path": "assets/PublicRoomPage-BDsqHQCE.js", + "bytes": 21082, + "sha256": "f7b2d838e3e541e23d7b37c2269fca6582cf6393fe44ce43932550fcd9d48b6b", + "gitBlobSha1": "9e2b25f89417d43dd5737fc3e52ae193727325a6" + }, + { + "path": "assets/pug-CGlum2m_.js", + "bytes": 13842, + "sha256": "1afaa5bff782f8df502f7c03fbeaba94cd8921a5f1f690e27508e45c27e2e8ed", + "gitBlobSha1": "5941dcbf3c9e92710cb3448e2f9c4b60e3571934" + }, + { + "path": "assets/puppet-BMWR74SV.js", + "bytes": 11437, + "sha256": "a7a22bdeccfe37f60d59da8851019f47f08eef8250f9a1e2f25560c12a021467", + "gitBlobSha1": "ad52ee37c2328f63c1922b9f45ecc607c5e3ca19" + }, + { + "path": "assets/purescript-CklMAg4u.js", + "bytes": 24686, + "sha256": "8fd484a61ea9faa0ef7e299f9188cb74dabea59625c822f537f7ae850d18daac", + "gitBlobSha1": "08363ce5101f87f672bb36ce95ce33e1f58cac4f" + }, + { + "path": "assets/pyodideKernel.worker-DHEMhrGh.js", + "bytes": 4812, + "sha256": "9ce828ede05b97254740331c162eaf022339491470569bd21d2e6bc6ee3369b6", + "gitBlobSha1": "b49baeecf388d61a4998dfe52013b403f338eaf0" + }, + { + "path": "assets/python-B6aJPvgy.js", + "bytes": 69952, + "sha256": "7652ab863f920a5959c4aa52d6decb8c11d23fd590773977ce8aa0fbb3c555c4", + "gitBlobSha1": "ec821589f25c3cb07617085e42931558f56684e8" + }, + { + "path": "assets/qml-3beO22l8.js", + "bytes": 5336, + "sha256": "5c58408fde8b3b813f2519a720d074dc688eaff4cc4b6db2fb1b6215dd4aff65", + "gitBlobSha1": "4f2f4ca186b0b6fa5a82955168241815c2bfeacb" + }, + { + "path": "assets/qmldir-C8lEn-DE.js", + "bytes": 1002, + "sha256": "ad76c02c2bb338b0314af1cb1514f1fbbd31a1a78d5d931632e313fb9b374480", + "gitBlobSha1": "0dbdd995c9d99b377cea937f6e195d21280a7d01" + }, + { + "path": "assets/qss-IeuSbFQv.js", + "bytes": 7472, + "sha256": "24a87ea2b74ac3f815e14d173752f42380cd4ad6faabba3b0737c66c83d7e8c3", + "gitBlobSha1": "9850e899fa70533c2422324574c7dcccbb8a130d" + }, + { + "path": "assets/quadrantDiagram-CIZ2JOQS-DfPb08xl.js", + "bytes": 34630, + "sha256": "e882ccaf317bcb570f0144aaf5af618878d87a18f011fdda1e3df3ea3856b77e", + "gitBlobSha1": "4353e3057554dd2105beb098378389596ccc89ee" + }, + { + "path": "assets/r-Dspwwk_N.js", + "bytes": 6541, + "sha256": "a535cd6fea8b2a66a5f5433a367db740066053ae8ad3a531d8ed351b5fadf5a1", + "gitBlobSha1": "5cc2b221cd91aa089b517666b85aeb33b7335120" + }, + { + "path": "assets/racket-BqYA7rlc.js", + "bytes": 92389, + "sha256": "34061595fb5ce70cda2139f9d82f5a980821fd92ea3ad48c6bbdde5ce887ff01", + "gitBlobSha1": "98a2b204e361fc3954b31f3894323228b8e69989" + }, + { + "path": "assets/railroadDiagram-AXF67PYL-C4z2KMPV.js", + "bytes": 1738, + "sha256": "dff0f71a5edfcae2ae6b00a50323ffe3b16c358ab43f44acb8b807578e6751cc", + "gitBlobSha1": "0bdbab31e1fde91f753120f9c801723339da32c2" + }, + { + "path": "assets/raku-DXvB9xmW.js", + "bytes": 10472, + "sha256": "5fcd9c398ef0361d59c9d8122e3f949d13316c2f9dd673a3385c951b768ca711", + "gitBlobSha1": "62a4bcac20ac3bcbf6e677d765be0eb46a74490e" + }, + { + "path": "assets/range-OtVwhkKS.js", + "bytes": 180, + "sha256": "e345dbcea93468c7665e5852c3100b230acfa238019bd48c42f1b1ba696c7d1a", + "gitBlobSha1": "9d2889f6f53880dca68f836ac49699c1bd4061c0" + }, + { + "path": "assets/razor-Uh8Bk_45.js", + "bytes": 27510, + "sha256": "da4924826de242f392eee4bdbc5b6eb9974488520a6bbf81310fc42ba12acc98", + "gitBlobSha1": "976813e069a972e0417bd1801496c655508725f4" + }, + { + "path": "assets/react-BV3Zsf62.js", + "bytes": 132118, + "sha256": "defb80efbad1010021dbc7ab365cc8340fa677e24046b76f47b231acc1271916", + "gitBlobSha1": "39f340cbf96e7be74104123995acba6a837747aa" + }, + { + "path": "assets/react-vendor-Ba019tNT.js", + "bytes": 194398, + "sha256": "e9c7da5d9485026349e3c6cd194155c1dd69ce4a99084800fe96d44b89dacada", + "gitBlobSha1": "c12f87c3f27220df52b96658b3913aded035ede8" + }, + { + "path": "assets/red-bN70gL4F.js", + "bytes": 6262, + "sha256": "e16c7107408cb6110f4ef29bac94c1769e589df38f271160e6f52b1a4d27b6df", + "gitBlobSha1": "271bc9ccb56190ac3b94b552c456373010cebe22" + }, + { + "path": "assets/reg-C-SQnVFl.js", + "bytes": 2345, + "sha256": "c944196b442e75be8722bce04f9aa6ef7698200cfe314e998cd29b70faa75fff", + "gitBlobSha1": "bebb5ff851ef1f0fa505f6410dfa794ddc7d8539" + }, + { + "path": "assets/regexp-CDVJQ6XC.js", + "bytes": 7988, + "sha256": "4f4da7e45d7bac4acaf584b492337cc0fcfc0b2453073026b7f2d2878935ed7a", + "gitBlobSha1": "d11d394600723c60312e22fe3ef21de76cfe07d5" + }, + { + "path": "assets/rel-C3B-1QV4.js", + "bytes": 3368, + "sha256": "5e46343461aedbfdd92b75bcc78bf3f40b0383490f4e139874221766c4c73158", + "gitBlobSha1": "565e2920821f52da895e430b9574a6b8938b520c" + }, + { + "path": "assets/requirementDiagram-LRYGKXZP-BDrHn9Y_.js", + "bytes": 31340, + "sha256": "8b08461be9ce78bca5d6d06bc326dbcdc2d971f575ab2f8ce8d4a7148c5f8daa", + "gitBlobSha1": "30b2770bd82264f0eda92ad71362d15dc7a41f25" + }, + { + "path": "assets/riscv-BM1_JUlF.js", + "bytes": 6914, + "sha256": "287e2bda433a92ccd15dbd75b8b95e2ee9ca016d3501387d1b923660fa69a52c", + "gitBlobSha1": "83dcacd6601b8d608f03f926cd6ff91d420d56ed" + }, + { + "path": "assets/ron-D8l8udqQ.js", + "bytes": 3914, + "sha256": "c91a2f5aabc02f69e8844c66e8abbb5e2d6997c5868b974679b0dca8e68a6746", + "gitBlobSha1": "4bdc9c0c1ed40697808da32c5e6eaf4228add5ed" + }, + { + "path": "assets/RoomTour-B3ofJfEV.js", + "bytes": 39035, + "sha256": "c913f9027e947afb74a9b0c83d7a9589937849e219538c198d1901b2a9bad444", + "gitBlobSha1": "efcdddf276a54eb2476a27dfabcd8cb38fc5348e" + }, + { + "path": "assets/RoomTour-DRYXy7Ep.css", + "bytes": 23695, + "sha256": "f131cc82809364ba3fe1a0c6422d8b71749b6c15c591a453c1c02df544e71b36", + "gitBlobSha1": "89761f2eab041d8daa70bfe6a2fb310e40f26ebc" + }, + { + "path": "assets/rose-pine-dawn-DHQR4-dF.js", + "bytes": 21754, + "sha256": "28569d6dc3cdbec1638a55294d4703993fffc7de3c4f96f9a9e7e0ee58271b45", + "gitBlobSha1": "9f81429724a97ab9141a51cecdf306d439c4ff57" + }, + { + "path": "assets/rose-pine-moon-D4_iv3hh.js", + "bytes": 21753, + "sha256": "54f8cee6d3bb36072d095cf6f3c42304149f984bb8ac005b4329502e469e4f58", + "gitBlobSha1": "2077e7f329831bdf240a77f629556fed66dc3931" + }, + { + "path": "assets/rose-pine-qdsjHGoJ.js", + "bytes": 21743, + "sha256": "bd1f7abe9b7645a7d2ea4769311d5b60b694a0577005cf76f13a76ef5c07034b", + "gitBlobSha1": "76af1861f94ba6f009cd047b5470beaba0594fb0" + }, + { + "path": "assets/rosmsg-BJDFO7_C.js", + "bytes": 4523, + "sha256": "895c74a701284063ecd96cff31b08b9e7d913b68d069907bd562b6db4f2a078d", + "gitBlobSha1": "4ef897e36ad7c8f36a3bed60258b6b7f649b1a02" + }, + { + "path": "assets/rst-BrH8l1NY.js", + "bytes": 10673, + "sha256": "d6c50859a0348550f4b31759c5538b6a44a7de757022ed08231d4944c7624cc6", + "gitBlobSha1": "146e30f4ed25e4398e589986e0f2a9723a386b9d" + }, + { + "path": "assets/ruby-Dw2BHqvy.js", + "bytes": 45953, + "sha256": "ab3d7f8c774ddb0ac21c4666d98177263fa5e5640fb15513b68fcb1331b84e36", + "gitBlobSha1": "54fbb5487fe0d92ca16321d2fdb1f526fccf345b" + }, + { + "path": "assets/rust-B1yitclQ.js", + "bytes": 15069, + "sha256": "c48161f6b21740ac415d982a627f24bb81081225f7405632784f667cf915d985", + "gitBlobSha1": "31c14d8a71e79a55c2f6e7cb70376b2e7a9c7c6d" + }, + { + "path": "assets/sanitizeArtifactSvg-DK6rc30l.js", + "bytes": 481, + "sha256": "6fdd324919bf9a02f0d0e28680a05d8531c4854bb41888a84f5ef74b03b06371", + "gitBlobSha1": "7fdb5169ea1c55bda0e7cf2d0ef46f0425e4e053" + }, + { + "path": "assets/sankeyDiagram-W5VNT64P-JHlZfT_q.js", + "bytes": 23470, + "sha256": "e576d4dcc80817657ad6b9aabf22d854868304f83088277ba88b4f9c4d011f2e", + "gitBlobSha1": "f4b7e704d030f9ec65774e09a496fb0fb4d72d4e" + }, + { + "path": "assets/sas-cz2c8ADy.js", + "bytes": 9062, + "sha256": "0605b0f0b9c6e33e0db7008a1ae9ee5d8bfed82f5db17d1124905ab226e320bc", + "gitBlobSha1": "69ef888c8f239f3d2c50b00323ab0679c56ccd05" + }, + { + "path": "assets/sass-Cj5Yp3dK.js", + "bytes": 9289, + "sha256": "d3d1152bdf9e9582f0d94521982944d7dacd0e8ece70a6a51dc621b146f90c05", + "gitBlobSha1": "47ca2df5355b701625bca177ae7d326089522115" + }, + { + "path": "assets/scala-C151Ov-r.js", + "bytes": 28884, + "sha256": "f4811c36dc6a16b2500146c2450c441e8ea673f57505a20c2a03c8b965248c65", + "gitBlobSha1": "218e9342dda65c414a3fe1777d72f2df8011847d" + }, + { + "path": "assets/scheme-C98Dy4si.js", + "bytes": 7169, + "sha256": "743503a0223f9e794eaa6e2ec9b1a4b9e23870ea92f8a91c608bd5632159a820", + "gitBlobSha1": "ca4c96d22528e972588bdfd411a096c99405f1a8" + }, + { + "path": "assets/scss-OYdSNvt2.js", + "bytes": 27204, + "sha256": "b1026ec94017417e3c24178ae96e4134fe9ffadc50d1fbd8f622da7961ca70a7", + "gitBlobSha1": "a54a1032a67cf39269cd416bff876f1c9ad5892d" + }, + { + "path": "assets/sdbl-DVxCFoDh.js", + "bytes": 4702, + "sha256": "09bba6eb98cb1660429de423a032b8ecc9e943af9b2ae4dc798fe665b2f4de19", + "gitBlobSha1": "6ca37ec49b59624abc7f806a325764c77de92d77" + }, + { + "path": "assets/semanticGraph-CTg4iCsn.js", + "bytes": 30505, + "sha256": "f0a3b732dea02ffec3c0da87c7c9b3288da4171f0cf0035202f70f6610ed05cc", + "gitBlobSha1": "af0ebc896badaf4babfe7f9752168ec75ee7c522" + }, + { + "path": "assets/sequenceDiagram-SI44F4Z6-DqDSr4iW.js", + "bytes": 117583, + "sha256": "cec4496e7e8491ebdf29abc4d9350653b748cf4d45de7c93efe14752f4672fd9", + "gitBlobSha1": "d8a3a24185b962bc4dfb0df81462fb3bbce2abff" + }, + { + "path": "assets/shaderlab-Dg9Lc6iA.js", + "bytes": 5922, + "sha256": "0f15272ff852b3807636b594b3f7ee05de4f01acf6cd35622e94c14eed99353f", + "gitBlobSha1": "885df4528190a91e3614f5d60102cdb8c5a602ea" + }, + { + "path": "assets/shellscript-Yzrsuije.js", + "bytes": 41479, + "sha256": "6a7311ff85af4098e170435bf140299e6be66e458e51d97ff91b2cea51300438", + "gitBlobSha1": "9e48d8706db0e6c613a6e73e9d02d31277520e64" + }, + { + "path": "assets/shellsession-BADoaaVG.js", + "bytes": 711, + "sha256": "8bb2a6459a5dbbe5364b504567be9b0eec02b9271d893c6377a1bb64d3f13c25", + "gitBlobSha1": "34081582473ee6a8aebdca2002c5867891d06b7d" + }, + { + "path": "assets/sizeCapture-X5ZJPWSS-DZmY1nw2.js", + "bytes": 1130, + "sha256": "f76e6422510d0922bb1aeae4ede7146586bf4babbad0a2e6e4ce87d1e9b0efd9", + "gitBlobSha1": "13c1ab25107b64f272718ee861e0edacbfa24933" + }, + { + "path": "assets/slack-dark-BthQWCQV.js", + "bytes": 9117, + "sha256": "f9254bd3bd7981950384332249c3bd31ff108fc659edd24b49ee6716bc23fac0", + "gitBlobSha1": "edb364e8f049c795702dea7337516a4f7b6b96d9" + }, + { + "path": "assets/slack-ochin-DqwNpetd.js", + "bytes": 9431, + "sha256": "1ede16ae081bae361e415891901a4aa6dc20de301aef52403863933d74b76783", + "gitBlobSha1": "5fbcb263cbda2988227c142e49ea74a8c236de79" + }, + { + "path": "assets/smalltalk-BERRCDM3.js", + "bytes": 6587, + "sha256": "0920bbda736cbf5dc1c5acdeb961dedcdaf98dec24e153fb473c540f21347d6e", + "gitBlobSha1": "d566c137ce316ad9a8225a3a8c8bb89140ffdbdc" + }, + { + "path": "assets/snazzy-light-Bw305WKR.js", + "bytes": 20773, + "sha256": "7721708cf2d4a690c8c599de620236acddccbbfedacf09ab0c6cc463f60ebe00", + "gitBlobSha1": "cc7436ff4c291511f9af3ff60b2f5f3de05ff135" + }, + { + "path": "assets/solarized-dark-DXbdFlpD.js", + "bytes": 6846, + "sha256": "2b283375c0600da201944caca3a2620bb9890d6bc28d69f4b989cca5ec11cb7b", + "gitBlobSha1": "c6b18bbc5059074f41253e793110ea4e321f77d5" + }, + { + "path": "assets/solarized-light-L9t79GZl.js", + "bytes": 6480, + "sha256": "873638320dde0e3d4261407d298960260305fd39179da30458271ffc0d6fae56", + "gitBlobSha1": "3e748349f23b4e62b82727961b03cfa1dcfc966c" + }, + { + "path": "assets/solidity-rGO070M0.js", + "bytes": 16074, + "sha256": "6c8c7573726b8dec0ce1e54415c33e590f4551b15f97dbb34c2eb4426d21543e", + "gitBlobSha1": "99546b09d409126cc4415271457ab57c65b75141" + }, + { + "path": "assets/soy-Brmx7dQM.js", + "bytes": 6981, + "sha256": "dcd5c00fd4b67322d89a1930edfb14e841ff11cf98a332303b218d5568dfdecb", + "gitBlobSha1": "dbcf1249ef2daf6b6e92ed9594b1f1bedeef6e90" + }, + { + "path": "assets/sparql-rVzFXLq3.js", + "bytes": 1480, + "sha256": "7ad999b9fba56728f2297fbee2250f845093f2b57eacd1fcb045d6f5a32d7de2", + "gitBlobSha1": "6972db9f2564ea06fe62dd218bdd5ccf07fc3270" + }, + { + "path": "assets/splunk-BtCnVYZw.js", + "bytes": 3436, + "sha256": "64ebc92eebd3550e91fbfc5fcbd72bfdec37d3e1d299660140ca28c2cd30cc1f", + "gitBlobSha1": "ea9d147ed684cf2e1aa845df5d51abbcc071b9cc" + }, + { + "path": "assets/sql-BLtJtn59.js", + "bytes": 23407, + "sha256": "e2621cd8e6d6bc3aad625e5da5afd16b8f1c64a40c77649ac6948a4b306174e5", + "gitBlobSha1": "4737001d6639d7e6259f387adbad3129263de761" + }, + { + "path": "assets/ssh-config-_ykCGR6B.js", + "bytes": 3617, + "sha256": "59773508bec4b474f7a01df0c9a1d67d9cc6a5e90cd8be3355e7a51d45a48718", + "gitBlobSha1": "26f8b7c45df0605e528e0d0db3073d1416c112d1" + }, + { + "path": "assets/stata-BH5u7GGu.js", + "bytes": 56991, + "sha256": "11bb422f2421e05ce75bcfb2c8c8c0795309ac0462249ddc6a8f82cccd985ac9", + "gitBlobSha1": "f9ec8c508097581f935b8c0d14ae345a16227403" + }, + { + "path": "assets/stateDiagram-OKZ733FA-bVrBohWF.js", + "bytes": 10562, + "sha256": "1bc0668e7a6d39480d8cd4e56de194599e9fd5299d7330987952c7c95ff42d80", + "gitBlobSha1": "4ed658c62363fd0d96d153dbed2a38c101cd46ed" + }, + { + "path": "assets/stateDiagram-v2-UEYNNEHI-DQK6vlIS.js", + "bytes": 560, + "sha256": "6ad42daf50df89e1da7d9c8f143023f8e33e7848c8d145e034482f7209ba51ba", + "gitBlobSha1": "88ccab33b3af7cb620970ec1cc6a127d0e43757b" + }, + { + "path": "assets/step-Cl5gnEYj.js", + "bytes": 18212, + "sha256": "86f975c64771b1950d446b84be4e96ad5ffdd104e9570775c05a536cda375e35", + "gitBlobSha1": "3c2648790f7b3d6179ad1d5e1819878b49f81545" + }, + { + "path": "assets/structuredDiagram.client-B0g9-ub2.js", + "bytes": 6291, + "sha256": "30e19c9e776155d51f1dcc5cbeb085400a96fb028b4080eb1e3fa8cdbe62efc7", + "gitBlobSha1": "cf069fd989102f9b7b80382563355e7f090a7ad9" + }, + { + "path": "assets/styles-ClFGusx6.css", + "bytes": 226185, + "sha256": "61c03a704d1b67e986fa4c2d94ac45c34d9b992776793404570ebb81f9ae4bca", + "gitBlobSha1": "435b93da4c7755034db465458d5314a69306d4da" + }, + { + "path": "assets/stylus-BEDo0Tqx.js", + "bytes": 31074, + "sha256": "7f4744cdde011a08696b25091cb57a8af8762c48fe52bda2f929376600a17f23", + "gitBlobSha1": "982a0dd2615039bfacc1f906b1691aad4692ebd9" + }, + { + "path": "assets/surrealql-Bq5Q-fJD.js", + "bytes": 22583, + "sha256": "3ca44462a4b2e800e70e918dc6a861fcfb303df674f0109c9373fdac8dfcc130", + "gitBlobSha1": "a2bb559639b3d4df56f0d09734bf1588aff76548" + }, + { + "path": "assets/svelte-C_ipcX3V.js", + "bytes": 18242, + "sha256": "b070641a497d9730f796568d9242c5ac7061f9f839af423649b8647267ad0155", + "gitBlobSha1": "9467fa44887ff365cb86221f17b96d8a88c5ef32" + }, + { + "path": "assets/swift-D82vCrfD.js", + "bytes": 86687, + "sha256": "8b87fd88e98da6fee33e181d3a03ad5e7fdec59008fa592c28a9ab28e28d8fbe", + "gitBlobSha1": "330f99aa9f192bac7e5b6fd8e0e6681f3ffbe625" + }, + { + "path": "assets/swimlanes-SLNWSIFB-CN6RrN7D.js", + "bytes": 120519, + "sha256": "6243a13883743449cf836ec61d71a7f5b5f457fce5fee91b21af30137017709c", + "gitBlobSha1": "33095927acea2367d7a8b06319d00e27f3c0a5e0" + }, + { + "path": "assets/swimlanesDiagram-ULZ7WXOC-7zvfhEXg.js", + "bytes": 680, + "sha256": "01aa2c33de1870ee52810365fac3023b9c705af7c3d977c6c931b930c0cb53c1", + "gitBlobSha1": "72e137eeced7f0b3276814dbc2c3f310430e40b5" + }, + { + "path": "assets/synthwave-84-CbfX1IO0.js", + "bytes": 14036, + "sha256": "345be8ec59dedde8193a830c5119b99ab1a263d8a0b8d0d98580b21e5b53856f", + "gitBlobSha1": "5c60d3811794c5807dcf66483b961342e4f26965" + }, + { + "path": "assets/system-verilog-CnnmHF94.js", + "bytes": 26203, + "sha256": "911a3857f3ec086298e981939056da2893098881fe5c100ec44132ba87f011ba", + "gitBlobSha1": "3fff46f0679223be3f029f5499685c01261da629" + }, + { + "path": "assets/systemd-4A_iFExJ.js", + "bytes": 7869, + "sha256": "7ee808ec3ed0bd4d87a6c0b5f034ce21b5522664b1a956381a3c287c674c0ffa", + "gitBlobSha1": "6dff8336bedef386ab09d0927cacfbe35125e255" + }, + { + "path": "assets/talonscript-CkByrt1z.js", + "bytes": 6757, + "sha256": "df10bc43abea3666beac95f07c8082bbd953cfcce01b384cac1e5bb783e3d656", + "gitBlobSha1": "f29cbe67625958a2272cf60f9be711c9ebefede5" + }, + { + "path": "assets/tasl-QIJgUcNo.js", + "bytes": 3288, + "sha256": "f8ad184dcd423a710bfe0a7c84487334383318e2e1b7b98ef0371be9f3e6c130", + "gitBlobSha1": "ff73ef83a275d54f06f999a9183690ead25b5a8b" + }, + { + "path": "assets/tcl-dwOrl1Do.js", + "bytes": 4429, + "sha256": "a1a8b949384eb718737fa7f088b806e0ab6736264dbd3135ca01eaee68295f12", + "gitBlobSha1": "e0e47cb0e19889a91d85f66ed26867f6353cd5d4" + }, + { + "path": "assets/templ-P3uqSqPl.js", + "bytes": 24064, + "sha256": "5bc6bac791203f2e943afcfabbeb84ae08128397aefb7a5f319ae1645eaac7b4", + "gitBlobSha1": "0b35c58e3810904f8fb211366bf1e72e0a131456" + }, + { + "path": "assets/terraform-BETggiCN.js", + "bytes": 11389, + "sha256": "845d38e761505099172e28bb36870b326f66ab907aaa625fcc9c4d0fee4eca49", + "gitBlobSha1": "7743cbbf2ae41aa6088fada927c9829e8c8f2883" + }, + { + "path": "assets/tex-idrVyKtj.js", + "bytes": 9669, + "sha256": "0fb7d18ae0984bfed6a46009afb2a3c59e1b8d2fabd2c9088f66de457306a25a", + "gitBlobSha1": "aa4c6f58b2d6a87c9a7824a76611b881a2198777" + }, + { + "path": "assets/time-CF6dPw0p.js", + "bytes": 15183, + "sha256": "7f5d474122ebb97ca0001e8a9d9f90527d7362094aec2978d6b24b75fb4e85f5", + "gitBlobSha1": "ba90279d62fabaf8cb45863e7e6416c3de5dca30" + }, + { + "path": "assets/timeline-definition-Z64GVDOM-j-jnW84O.js", + "bytes": 31481, + "sha256": "76932424370268b1f70bb116a5630fdde01068e1c7a97649d9b9249ad959a7e4", + "gitBlobSha1": "9f87bd4e9df3f5d72711707cc525dc6a2cddfc49" + }, + { + "path": "assets/tokens-D_FyPjo0.css", + "bytes": 1333, + "sha256": "87cc97cbed8a9f1dbba624198de2a1bae08ddc3d6d44ffd57f903ff27c892d28", + "gitBlobSha1": "b5a9793bdd1f266f6da95bf7b6015aeda9705302" + }, + { + "path": "assets/tokyo-night-hegEt444.js", + "bytes": 35665, + "sha256": "e00a860ce7f328571e523246063124ac104fd16c7c4a1939985c04e2912dc8dc", + "gitBlobSha1": "6eb1dd01bca259dbfc7953f9d71258eff2a551dd" + }, + { + "path": "assets/toml-vGWfd6FD.js", + "bytes": 6426, + "sha256": "13957c3e75de850523d59c55223a274de54f38319159b54c11a41e1e909965de", + "gitBlobSha1": "8bff2fd9a343eb961b85832025a87c20a81aa65f" + }, + { + "path": "assets/TraceSurface-3Mc5xPHl.css", + "bytes": 11603, + "sha256": "9d3ecd1e704e5eb31b61dcf66e605ef30690cafefd088e005d1a0f5cf7d0b0c0", + "gitBlobSha1": "f0c5c3d9713da253d47bb88b20401e5ca0eda2d4" + }, + { + "path": "assets/TraceSurface-B4eSbBGT.js", + "bytes": 61925, + "sha256": "ce1cf49af41e68fcf10b18c63f1123aca2365dd72116391abab24b1d15b999c3", + "gitBlobSha1": "9b8afc0ef8495f5f43bbb0b0e5ea7175cb0abfc7" + }, + { + "path": "assets/ts-tags-zn1MmPIZ.js", + "bytes": 8948, + "sha256": "69bcc441aa876587e58720c6b99457b56a6b08643249c262d3efee8bd69acd67", + "gitBlobSha1": "6f84f0c65577d26c5ccac3512f6b5757e1b2fb88" + }, + { + "path": "assets/tsv-B_m7g4N7.js", + "bytes": 739, + "sha256": "1a04ec966e09f3783309f7536dae8e824d4f8ec6ec0b6e1880c1b95a3d17762b", + "gitBlobSha1": "e2f968ce1f32848457462aa5c9230766598a931f" + }, + { + "path": "assets/tsx-COt5Ahok.js", + "bytes": 175536, + "sha256": "6f65bdaf80285d2241cf747f58b0c2bdd7485e25bbfbc0144840ed8e13f31a4d", + "gitBlobSha1": "9109ad9fba3bbeb22c98b5c2b97a8752b379a353" + }, + { + "path": "assets/turtle-BsS91CYL.js", + "bytes": 3700, + "sha256": "b39750a94e32101604c09b24cbc2b03cfec7089ea6b3af27863d2889003046bd", + "gitBlobSha1": "0788bf3563faf0af10cf802193bc64792bef2616" + }, + { + "path": "assets/twig-DNn4PbVi.js", + "bytes": 21364, + "sha256": "8522bd1c3bbd67de36a3de2ab1864071d3264513ef45cbe587590a59a74370cb", + "gitBlobSha1": "8d0b6c2ec7ed1afd3f9fa6fa46a28089d004b3e6" + }, + { + "path": "assets/types-BSuKp-ii.js", + "bytes": 53421, + "sha256": "6f2ed4af532480a0a30a3f914e3740d89a0394f8ffa776752a42aede0163bec7", + "gitBlobSha1": "92978c4c01224a09ed610922e470d752e7b5113e" + }, + { + "path": "assets/typescript-BPQ3VLAy.js", + "bytes": 181080, + "sha256": "fcdcca54a7ccb637627d4dba50774a3dc7a5bae93a9f0a43c7748114b1d1d75f", + "gitBlobSha1": "cad0e53a8d3a982375347d9cc59efe2d84e722e5" + }, + { + "path": "assets/typespec-BGHnOYBU.js", + "bytes": 24020, + "sha256": "5dfdba0ad831c33537dfdd6bceecdde8c788b953500fa5b006027287949fa461", + "gitBlobSha1": "df4c14062e9c4fa99244b1d8e12959e25054c469" + }, + { + "path": "assets/typst-DHCkPAjA.js", + "bytes": 8387, + "sha256": "ff1b2bfc233e39112abd22f9ac638a833f1a2504929034f4559c9d88a1ecbcb2", + "gitBlobSha1": "d7db7b9247bfe1673b946ad34847e664cbf74300" + }, + { + "path": "assets/v-BcVCzyr7.js", + "bytes": 13214, + "sha256": "3580b3a6f9b7d1b570299b26518f866efd3d264369f1569395ddee1c39918af6", + "gitBlobSha1": "4ee420114c8265e156dafd05a26c85dd7215cfc5" + }, + { + "path": "assets/vala-CsfeWuGM.js", + "bytes": 3370, + "sha256": "9ca40f96a2c5ea6c15a4aa070af170b6a4fb19dce1aea0162639c456e88c1ee6", + "gitBlobSha1": "954ffa22c866f8446805eac9fef0e82f6e6f7629" + }, + { + "path": "assets/vb-D17OF-Vu.js", + "bytes": 6093, + "sha256": "c07bc7f87b29209a696181ee1952faa6855fc8424975a04514315972d652da0a", + "gitBlobSha1": "2c7e95dbecc4f040d857a4163ec83b607d9c27f6" + }, + { + "path": "assets/vega.module-CiZgPkdT.js", + "bytes": 448416, + "sha256": "121f05965b1ae681d08efbb47bd1d3b41804a14a7621a8361a99f35b1400de8d", + "gitBlobSha1": "77686b03a201ce8321a0692a9260fc769528edcb" + }, + { + "path": "assets/vegaLite.client-jnpk0k4v.js", + "bytes": 2620, + "sha256": "09f2f01d825b12923d00b8b8d94577e433269f9a30a729076d2b8c58dbd71d97", + "gitBlobSha1": "107fb65b4d0249b3d74612d0a3f278dfe9cd8ae9" + }, + { + "path": "assets/vennDiagram-T6HMQDX7-eYVh29gT.js", + "bytes": 42506, + "sha256": "67637afc03fefb2f17d826a54523246485c371a02d7f778b3f91bdd9f72af74d", + "gitBlobSha1": "ade4403fc2a93d75e6bc01f5a0f5589160a5f882" + }, + { + "path": "assets/verilog-BQ8w6xss.js", + "bytes": 5931, + "sha256": "d4e90d3476e4c94e05271d13254bb7ce735ba6fd8ed49292337d9356368a9eaa", + "gitBlobSha1": "ae3d8c97edf10f651b75792182e2b50d32d62095" + }, + { + "path": "assets/vesper-DU1UobuO.js", + "bytes": 12692, + "sha256": "ad07a972a70962a9f68b1028c90126dc75057cf9dd98f079d050a1bd11e6e19e", + "gitBlobSha1": "d67264c19c17aee307e112472d086d80df8bc6f5" + }, + { + "path": "assets/vhdl-CeAyd5Ju.js", + "bytes": 24264, + "sha256": "4aa59b0e56b6ade915050f27c9359de4b33c7435f1e715b1027f6c44ff08d05f", + "gitBlobSha1": "dc2dfd15954e04eb7dfc5375bafa0cac48b1723b" + }, + { + "path": "assets/viml-CJc9bBzg.js", + "bytes": 20365, + "sha256": "255a5fbaf5961b394d403c022e2b57baf6855132db6ab4e8b3f8b6ccffdc5fc6", + "gitBlobSha1": "1bb97b9eb2b6a4a49ac195b464d3ecde96667329" + }, + { + "path": "assets/vitesse-black-Bkuqu6BP.js", + "bytes": 13677, + "sha256": "f25530f6e39e64d7dcc0464821c2fff73bf5aab1e311d61645cd740e886a2160", + "gitBlobSha1": "00368932bc824421836bee018688c26e9937808b" + }, + { + "path": "assets/vitesse-dark-D0r3Knsf.js", + "bytes": 13759, + "sha256": "f3a4064c8e89ebd2349cf3dbf3e211d73b05d11cbd9bbc00feefa1820d74990b", + "gitBlobSha1": "19a9aff5fe748af9cbd026cd06e341470ff4770d" + }, + { + "path": "assets/vitesse-light-CVO1_9PV.js", + "bytes": 13616, + "sha256": "272401bf8f7fa77313d7d3dbdc609a59bde479c8d69763047b5aa508e16ead9d", + "gitBlobSha1": "bcc542584c839a419bba6eace9f6c6ca564b4da0" + }, + { + "path": "assets/vue-DN_0RTcg.js", + "bytes": 24484, + "sha256": "f281a5b5a38f6d7aca7ad2c5cfc54c5531603ef963798eddef0ca3a9bbdb600a", + "gitBlobSha1": "7d756352114036b6c0ecb513421b952459ea3ee2" + }, + { + "path": "assets/vue-html-AaS7Mt5G.js", + "bytes": 8472, + "sha256": "a9066b052de965759c4456bed9e3e412c25f1050f3585a2dc6714747bbec1c0e", + "gitBlobSha1": "be144dbf0a3e3bef126ccf958abaf41c1cafb87a" + }, + { + "path": "assets/vue-vine-CQOfvN7w.js", + "bytes": 190051, + "sha256": "95c5be9942daee9da06a3a00052df782c2a7f6b1c85ecbe261da63d35d5d09e7", + "gitBlobSha1": "d79d4e8da2fc6f7761a77619c0fd0d42e52c5c2d" + }, + { + "path": "assets/vyper-CDx5xZoG.js", + "bytes": 74648, + "sha256": "ff66f70ed9d0a15a77389cfc35cef85ff1f4932bef9e508f9a19b1c87d7f46e9", + "gitBlobSha1": "6a56d3f149a310986ce191c2b9da906a8bde73c0" + }, + { + "path": "assets/wardleyDiagram-T6FBY63Y-B2C55azQ.js", + "bytes": 26228, + "sha256": "e4dad7e70af925b8531f527bf1ce725f8aceb09f06bd19d7f24d633ebae972c1", + "gitBlobSha1": "e3e337ecbbf9b6a54596b7ad1db855145658ca09" + }, + { + "path": "assets/wasm-CG6Dc4jp.js", + "bytes": 622336, + "sha256": "8deb47b0d7b203f733275b554ccf654df3b76026bd14cab89130ae2a61abd719", + "gitBlobSha1": "32735f7acd94c43f6fc1f6c0953ba45e72b6dfb6" + }, + { + "path": "assets/wasm-MzD3tlZU.js", + "bytes": 12007, + "sha256": "ecac025bef526964873260d057a8af935fe8b86da2b9845051051266b019c8da", + "gitBlobSha1": "590ad8c49f1d6e6b02014545aaf7bbb17e1d83e6" + }, + { + "path": "assets/wenyan-BV7otONQ.js", + "bytes": 2157, + "sha256": "40ed524c0cfce810853c17a6e99f8c357dc1ea9d5df901dcf60a2b7a45e63f7f", + "gitBlobSha1": "7085e5c12d72380bc24884802b3c00cae4037d27" + }, + { + "path": "assets/wgsl-Dx-B1_4e.js", + "bytes": 5144, + "sha256": "97dee41e3f719e15ac2c06cbf36677252c7654e254f178128113744841a4806e", + "gitBlobSha1": "f1ed9dd5456c40c672804bd9e9085372d91b2e46" + }, + { + "path": "assets/wikitext-BhOHFoWU.js", + "bytes": 55885, + "sha256": "22c8b6a379a9a1aa4df1fa90a85d054b78c5414e772c062611997d98de2cdb64", + "gitBlobSha1": "0e5c3366f14bbd74b995840681f0c26072ae3dc2" + }, + { + "path": "assets/wit-5i3qLPDT.js", + "bytes": 21467, + "sha256": "2b2cfcdfceebf61cad332a1b126a7bce2afe89b0b5c6bf8791067154e8229bb9", + "gitBlobSha1": "c038a826ccbc626ed214d09a827b51d355c808f7" + }, + { + "path": "assets/wolfram-lXgVvXCa.js", + "bytes": 262391, + "sha256": "5077bf9f804422eafafce9c7bc5bfd04f094ae624f0136c9a33daeac942fe75d", + "gitBlobSha1": "8de9d722b4190a585996ad076c0c3d7d75a520c6" + }, + { + "path": "assets/WorkArtifactsPanel-Dagy3OZH.css", + "bytes": 45068, + "sha256": "6f14e9ce7d8ce49125c2602074168ba4eab5e1f261ec4e6c906d943c17ca076c", + "gitBlobSha1": "813894b19a55e097ee3d5842b005af59f22a009e" + }, + { + "path": "assets/WorkArtifactsPanel-lLaxoygU.js", + "bytes": 149992, + "sha256": "8f49bb3d8f1951b23881340fb93fa93d76d81eac59eaaa623582219172ecea2e", + "gitBlobSha1": "edc4be4c1d6df415a9fa1291bfffcdf23803e5b5" + }, + { + "path": "assets/workbook-vendor-CUPSAa_W.js", + "bytes": 1037646, + "sha256": "eccb72317cb2fce48c2a945309525acb373add0f0d0c9794e34c568ec6187e71", + "gitBlobSha1": "08f39494cd37f4e8fe28034cb9036d5bc92ce7e5" + }, + { + "path": "assets/xml-sdJ4AIDG.js", + "bytes": 5384, + "sha256": "50f00554f7503986c098ada8706f8e6a8fdad39e5158c7626d31532a883a51e8", + "gitBlobSha1": "16c887d40e1445b763e002ef52555859776bd1ad" + }, + { + "path": "assets/xsl-CtQFsRM5.js", + "bytes": 1385, + "sha256": "b47bbb39b319947a57525dc114ec30eb2e697bf451be75f0b79850866f6811be", + "gitBlobSha1": "628b002b0beda8c8b4cc74d9aad2952632cc75e5" + }, + { + "path": "assets/xychartDiagram-ELKLHX3M-M1tv-9pj.js", + "bytes": 41956, + "sha256": "54ff7688788d9626c11ef951a418a0cd13f574a205bf64d81077284036c70ba3", + "gitBlobSha1": "201ec1571e7ecb093c4db9ae984efe05df8fbca6" + }, + { + "path": "assets/yaml-Buea-lGh.js", + "bytes": 10506, + "sha256": "a7a8b4fc14fa7ba338598f61185a3a13e49d7450830af367407ae61b9634bede", + "gitBlobSha1": "e5147a63a41ea3b0679583c868cd26cc4525eec9" + }, + { + "path": "assets/zenscript-DVFEvuxE.js", + "bytes": 3912, + "sha256": "58a812eb8d71121ee3bd6e513b8a20555bec44f968f7c378bd7ecbfde05866a7", + "gitBlobSha1": "a7ca9f63c72e4e608b459c934b16f17ef940ba5d" + }, + { + "path": "assets/zig-VOosw3JB.js", + "bytes": 5340, + "sha256": "7c369292579d89b781e91b76a4df1bfba604287c7a5e2c426925935ef08c0841", + "gitBlobSha1": "cf66ebade6fa91c4591eb0f81b9d5d80933519de" + }, + { + "path": "blog/index.html", + "bytes": 2055, + "sha256": "cccbc956a6a224efa4287aa00d71c61bf9ea2af8d608cac5343acb7ed3bac744", + "gitBlobSha1": "f24d0c659c6d5749c682cd6d919e17fed4616ee3" + }, + { + "path": "brand/noderoom/index.html", + "bytes": 3639, + "sha256": "fdad1e3ed56ff7c7cbda3c91498bac25c3c8cfd9a876b7bd896059db07d0073d", + "gitBlobSha1": "e4e7324714f208d322d2f3dd33f3188be712b136" + }, + { + "path": "compare/google-docs/index.html", + "bytes": 2395, + "sha256": "a4bf38d36e6e293935f0394efa747c50179fbe24e66e446a3bdceda170cdf3f0", + "gitBlobSha1": "2af8640d67fade7e63cc9e9049d3d0d411615da2" + }, + { + "path": "compare/notion-ai/index.html", + "bytes": 2434, + "sha256": "7497dc85d3cd791fb222c629932ab757339f4855a0be99a11c1a6667b4fe0c7e", + "gitBlobSha1": "e5b08d2c34e3832842fc8fbc9b91323ec80b038d" + }, + { + "path": "compare/slack-ai/index.html", + "bytes": 2497, + "sha256": "ea03829eff25fff01624f0a45be9b89e4ff23c5e8d34447a8e1bfc8b52f0b610", + "gitBlobSha1": "1456212fbecbc9e8f8294ea31850f2930b8ccc3a" + }, + { + "path": "eval/proofloop-prod-proxy-benchmark-matrix.html", + "bytes": 3402, + "sha256": "c1bb9341028d94aae86accba4bcd2e51bf60125f77cd407437e55e2f4769c7b0", + "gitBlobSha1": "9d9a248a5f51aea844ececd01f36f72a653bbc1f" + }, + { + "path": "eval/proofloop-prod-proxy-benchmark-matrix.json", + "bytes": 2462816, + "sha256": "f71b8e350c00b859ede53186693358a46dd4b0ec90c22ce3ed58a1508676ffb9", + "gitBlobSha1": "4d43e05578ece4eb2a2ee2cdcd5b72482e360329" + }, + { + "path": "eval/proofloop-two-layer-certification-runner-plan.json", + "bytes": 74535, + "sha256": "0c9607ef492ee518c8d9bf7e8b8a7968ef4f1eec89a1574de9eace37280d0095", + "gitBlobSha1": "cad8b3e7f995b613bcfb80be0ea52404a926f571" + }, + { + "path": "eval/PROOFLOOP_TWO_LAYER_CERTIFICATION.md", + "bytes": 5698, + "sha256": "34b9e95a706489a08f49b00e2a8159f2fc9bc2e5204350fe26b941431f167a2a", + "gitBlobSha1": "91fdee25d8cec1e08d53788a5505674cf9392e96" + }, + { + "path": "faq/index.html", + "bytes": 3513, + "sha256": "044bc9bd01cddde04356db57fdbb016244e4d19dd7451cf8d91d40c8879fdf55", + "gitBlobSha1": "ad73d22f2fe1401a503ccb0e063130ee16c8bf7e" + }, + { + "path": "google738995d085550980.html", + "bytes": 54, + "sha256": "08f485fc89765bcc0d72649b913d93425685e3395672e0ff8052e9214ee9783c", + "gitBlobSha1": "93c8f7d98c7b7e601f010100b59fdf89ad22d850" + }, + { + "path": "index.html", + "bytes": 17037, + "sha256": "88119d4f888220b3217a83a91acd4b82e709ba82323261a97a81734be3f6cd11", + "gitBlobSha1": "24ffe14bff7ab3c3e7be86cec7e68977a46df481" + }, + { + "path": "learn/index.html", + "bytes": 2270, + "sha256": "a561cae59f23493d70b9f025c7247f3e431cb086ad9e17c7b25212e55f3f5892", + "gitBlobSha1": "69965cf6f6e2cbe187b74049ebca736bb08f8ece" + }, + { + "path": "llms.txt", + "bytes": 2022, + "sha256": "7ff4e14d42d00779d0189eca791062fbaa84a42f6b4f26cd9b4cc93b273c0ba7", + "gitBlobSha1": "1510ffe4d59edbb9196426d549b7afa46da6c485" + }, + { + "path": "pdf-fixtures/cropbox-offset.pdf", + "bytes": 658, + "sha256": "7291c8375ded0ffa802e93788bbf14afea8a86225de4783ac3accaef6cfdba45", + "gitBlobSha1": "fbe74b97af0df230d9530d130f0010d5140cb886" + }, + { + "path": "pdf-fixtures/manifest.json", + "bytes": 1701, + "sha256": "73e5e626d14df0ed96ddc91909efc4571046bfbf624323c01f452d90a9c7928c", + "gitBlobSha1": "7155d69e8bcaae3cdf59905fd554c5edb78c7c50" + }, + { + "path": "pdf-fixtures/multipage.pdf", + "bytes": 924, + "sha256": "35a808c4a76d3ecf392c497342dcefa3d692d7f9e74c87f53ce55c9100651eaf", + "gitBlobSha1": "4bf0458a66a7ae992051d6d2ab2f689644152f0b" + }, + { + "path": "pdf-fixtures/normal.pdf", + "bytes": 672, + "sha256": "4c328351f6ee4b76d9de79824762df88031b5ada40ac434cec058af8b8fda481", + "gitBlobSha1": "8172236532ceb1c5265e210b7964d86cad475714" + }, + { + "path": "pdf-fixtures/rotated90.pdf", + "bytes": 628, + "sha256": "0328dbbdece51cc972a1dca0997f431d3e2a9d09d89e2a4d0e76bc7740cf628a", + "gitBlobSha1": "b1f3746c4cf9063cd62561a66195c5d01542d667" + }, + { + "path": "pdf-fixtures/shots/cropbox-offset.png", + "bytes": 10300, + "sha256": "e244a1893b2ff9b223f7b04db637e02ce124d1c4d573d44a12ed828afd47b754", + "gitBlobSha1": "5f5daa438d3f53ae4b0bb0dc4f99898aff6485ba" + }, + { + "path": "pdf-fixtures/shots/multipage.png", + "bytes": 16382, + "sha256": "7540b37725a5ead0a682215a1228d9c70bb9f2bb3f7cac3aeb686123b944ffe4", + "gitBlobSha1": "d972873f390610d76184003aa76cbdd1d03f42ed" + }, + { + "path": "pdf-fixtures/shots/normal.png", + "bytes": 24167, + "sha256": "b210b0fe8a9bc34950a7209e24cd3a3aed360f5ebd3b96dc9f363883cfd62672", + "gitBlobSha1": "f0e3b01a0e472339afa3730f2f7824cf96195857" + }, + { + "path": "pdf-fixtures/shots/rotated90.png", + "bytes": 16342, + "sha256": "793e4639ff94dea403f2fc37f8313060572b688031c2ef49e7ef5fdf8ee47b0c", + "gitBlobSha1": "90840082b2f91d33d0d18e6b31544fe237950ffd" + }, + { + "path": "pricing/index.html", + "bytes": 2232, + "sha256": "3e03834bc9c15e37b35592817a0fd4d86dd47aa108a44affd16d6a07c38033a8", + "gitBlobSha1": "0351f6d04f01e884e54bf1304962cc586046fcad" + }, + { + "path": "pyodide/pyodide-lock.json", + "bytes": 113804, + "sha256": "c963d22858f6bcb8f41586a2142f03905ab370c88ea22a86a2736e95fac2a8f3", + "gitBlobSha1": "8c9b0b6861abf53b7a9c2286616b59f404ff1800" + }, + { + "path": "pyodide/pyodide.asm.mjs", + "bytes": 1250259, + "sha256": "c7eccdfeb7a8419d61f910f0685b45cd5610b7ff5bbe844c3c1050ee6623b641", + "gitBlobSha1": "690c6d11ec73e6823c17f9368a4b9ea85710bdac" + }, + { + "path": "pyodide/pyodide.asm.wasm", + "bytes": 9609998, + "sha256": "f7a8a169e513791e18fa0790fb69d6f2656b779e9012ba57e03e973f0df0b39f", + "gitBlobSha1": "0f491c3d984b3bb5377ac530a344650690ab8cc7" + }, + { + "path": "pyodide/pyodide.mjs", + "bytes": 17843, + "sha256": "a09c81722a82cbd7ae9d0406cc5ccacd19a93b12612f837c7981189a35672919", + "gitBlobSha1": "93bf60943db28673f7a7677b6820c97741199a9c" + }, + { + "path": "pyodide/python_stdlib.zip", + "bytes": 2552456, + "sha256": "101a9c94ca6304c1478c89b7b595136b9a51b4289bdc5b467d86db553efee9b3", + "gitBlobSha1": "3ac9f44063d8a614f006d01a0602becbd76608f7" + }, + { + "path": "qa-trace/blank-room.png", + "bytes": 197813, + "sha256": "ad3c39e8ac019f5baffec7e55d64ddfcb8027c0ea1b829f728a64cc0bb5bdc12", + "gitBlobSha1": "49a78cdf1bc4c5b91065e8acb237b44acf73b115" + }, + { + "path": "qa-trace/btb-source.png", + "bytes": 108450, + "sha256": "fe82531784144930dfa51fdb8c3d7936b9e073d87e0ad32dbd41dcf80e87fdb2", + "gitBlobSha1": "090aa434fea8204a2b8e217db72cc7e59bc6ea47" + }, + { + "path": "qa-trace/demo-room-desktop.png", + "bytes": 383726, + "sha256": "cd5cc95160e1b813382840a643b8314a69aaead7c71fd39f55a5486eda5bc851", + "gitBlobSha1": "e61d8dc35b73a7ea998bcedb1cf6dbd1d5604916" + }, + { + "path": "qa-trace/demo-room-mobile.png", + "bytes": 166439, + "sha256": "2c0932b7b37e9a4ca1dcce3449edb32339a2f1261ee824c681a3b71d27cfdcbd", + "gitBlobSha1": "c5e3f4d028fe58399732b02ae1043fe0d7da889a" + }, + { + "path": "qa-trace/walkthrough/step-1.png", + "bytes": 150272, + "sha256": "47c56f5d63373c7c6e4140e4c2108cbf262bafb879bc03beefa96de0bf045e94", + "gitBlobSha1": "f5eb1bbe921dc1964b05dcd6ce5357716d33d5a4" + }, + { + "path": "qa-trace/walkthrough/step-2.png", + "bytes": 150272, + "sha256": "47c56f5d63373c7c6e4140e4c2108cbf262bafb879bc03beefa96de0bf045e94", + "gitBlobSha1": "f5eb1bbe921dc1964b05dcd6ce5357716d33d5a4" + }, + { + "path": "qa-trace/walkthrough/step-3.png", + "bytes": 116252, + "sha256": "a24eb3c7db89a680468d6fafb5d8cd57c425520348fd0d923e2d9217901430aa", + "gitBlobSha1": "d7d5210cbcd42815631f5373ffafb1c3315f8306" + }, + { + "path": "qa-trace/walkthrough/step-4.png", + "bytes": 149774, + "sha256": "ba56a7147c78b7c3cee66fe073cbc56b52084e633e7c58e485855a816a62badd", + "gitBlobSha1": "b88296518ba6fa78e6204ed9a3ca4a365dad2eb6" + }, + { + "path": "qa-trace/walkthrough/step-5.png", + "bytes": 142975, + "sha256": "073ac58ad67b39d331bbf533df5f1ac89fb62010d425267c83e4da2b564443ca", + "gitBlobSha1": "241473925830213b60020d0e0d6573cc4250ba2a" + }, + { + "path": "qa-trace/walkthrough/step-6.png", + "bytes": 195236, + "sha256": "43363ec329c72addeb9c72c57a048f9d83e80e63f80bb4005fd60e8c3ac78023", + "gitBlobSha1": "90d453d0d8faa59666d75d562ea297e46c6c2b20" + }, + { + "path": "qa-trace/walkthrough/step-7.png", + "bytes": 191514, + "sha256": "b7ef0721663fec426940f035f2b85d41241a5cbf2e688c17c6bd7be18b7733c6", + "gitBlobSha1": "26578e48c826278384705bef2b2c45119a93d908" + }, + { + "path": "qa-trace/walkthrough/step-8.png", + "bytes": 240147, + "sha256": "f4d8c4deeee3edd0269cd05ac13d2e49f2c24df8ccc3474cc7c48db0466271af", + "gitBlobSha1": "6e12177f62441da076e45db22e3f12b157917227" + }, + { + "path": "qa-trace/web-source/source.png", + "bytes": 174002, + "sha256": "6f812deb6289250d33e92563790558fedede239db4206d9ac799197f9c3b3dcd", + "gitBlobSha1": "89d1be16da78bc14918a5b11910882905b0fa33c" + }, + { + "path": "robots.txt", + "bytes": 371, + "sha256": "402604606ee7fd0c2fc452eb0aa97fd88a9defa539ecbebc47cba8d09f6f8ff7", + "gitBlobSha1": "2c9c5e6c764da6ee71310d56c52c3d97d16931ed" + }, + { + "path": "seo/page.css", + "bytes": 3901, + "sha256": "850756416fee54416878e47a03495befa5e33343c1c32da3ee6512b001156d53", + "gitBlobSha1": "a26a3e4fedef58581fb7c742138d585aa3cce2a3" + }, + { + "path": "sitemap.xml", + "bytes": 2508, + "sha256": "a5d242d02415c64f7dd2c21e9e86faa34d056687bb1f39e656b7702cab7a78b9", + "gitBlobSha1": "0f8c9242a91080dd52852744fc4de181f8f6e7a6" + }, + { + "path": "solutions/ai-agent-collaboration/index.html", + "bytes": 2777, + "sha256": "aa0f5a3e0b9af6a478a9f196997d8fd99d5e3fe37ba293c6b46cde9166a09139", + "gitBlobSha1": "712c6142088ac9dd8a77113e1fe5bd618c094797" + }, + { + "path": "solutions/ai-diligence-room/index.html", + "bytes": 2778, + "sha256": "36ad2af8b880e26b14352c9a812b334661b88dcb090d250798a8c6e3f9387440", + "gitBlobSha1": "5352aed0e8d603552b5135ce086f306541797315" + }, + { + "path": "solutions/ai-research-workspace/index.html", + "bytes": 2804, + "sha256": "3e4e4b604938e776d33c4bd9fda27bb05899a9b907fb34c79004658c0cd12889", + "gitBlobSha1": "62ea91351e6fdd1d7feecd54108a02f8be11fa1b" + }, + { + "path": "solutions/collaborative-ai-workspace/index.html", + "bytes": 2869, + "sha256": "bdd0786849d3efec943d54f5a5ca969eb183122a2f6f19831fa1d0759e23b0c5", + "gitBlobSha1": "e5468895485cc7e9a34d9ea789dbf9dd6595de74" + }, + { + "path": "solutions/index.html", + "bytes": 3414, + "sha256": "27e94959f7d9bc401ded10af7aa2c82c2c5ef38beed0f64689c4b8e9ce516ced", + "gitBlobSha1": "aa24b5b6d5a6a0539d5876c7c15a74abe8e32299" + }, + { + "path": "solutions/source-backed-ai-workflows/index.html", + "bytes": 2763, + "sha256": "24ae11666ed351e53848defc6dbe713926abb7217c547975e19f6ff8e0d8db48", + "gitBlobSha1": "1c481921673f8f8e4a15e5c606458c0cb75d4819" + }, + { + "path": "use-cases/finance/index.html", + "bytes": 2362, + "sha256": "cbc3ee07c126e2b5eafe81f3ea547d06f7c6eac6cdcaf398233092fd104558f4", + "gitBlobSha1": "a66b08b9e20f597fa60bfa101b8d0ae66da2ecdd" + }, + { + "path": "use-cases/index.html", + "bytes": 3053, + "sha256": "f4909dbe176c221a520af772d5b6d5ea283016bb00a3f7294583be2a2a7a48dd", + "gitBlobSha1": "0f12b2fc9a054b24211c3434fba5479cf1204d2d" + }, + { + "path": "use-cases/sales/index.html", + "bytes": 2255, + "sha256": "52313cb0a33729cb34a0cbf6c5259545065cd417e66142b95b66a43821d5496a", + "gitBlobSha1": "8a3255aef5f59495e86117ebd44a4959b8127fa6" + }, + { + "path": "use-cases/startups/index.html", + "bytes": 2358, + "sha256": "1e1fa83dc61e7f8e93c39b1ca2dd72cf834fa817b8195454b3e44e3934775f71", + "gitBlobSha1": "62ab7d5bfd1781ac1925314c30a2b696cc03e12b" + }, + { + "path": "use-cases/students/index.html", + "bytes": 2199, + "sha256": "7dba4e37246a193b568a2648fd270e0a1cb54bde281cd9a6a4a8983686174c10", + "gitBlobSha1": "834456751da5021afdfc7f1720bf128c293424d7" + } + ], + "archiveSha256": "beff80376f74dc220a4cc2d30b709218ca38bb25024b82f0d95fc9f894a2346e", + "rereadAllEntries": true +} diff --git a/evidence/desktop-account-20260905/operator/final-head.txt b/evidence/desktop-account-20260905/operator/final-head.txt new file mode 100644 index 00000000..72a617a6 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/final-head.txt @@ -0,0 +1,2 @@ +034a8f963dfa037d860f5364032319506be3e2e0 +8fbd0d5d0ca31a71a70c45208ba8a5fd6a64a831 diff --git a/evidence/desktop-account-20260905/operator/final-refs.txt b/evidence/desktop-account-20260905/operator/final-refs.txt new file mode 100644 index 00000000..6116c8a4 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/final-refs.txt @@ -0,0 +1,107 @@ +refs/codex/turn-diffs/captures/1784577718666/fd50487b-60f8-4775-a912-d706336b88d8/base 24881e0f798a3d4223078cdb56b991a2fe87e62c +refs/codex/turn-diffs/captures/1784594690139/97ba2c25-42ec-4ab0-83a5-52123669780e/base 24881e0f798a3d4223078cdb56b991a2fe87e62c +refs/codex/turn-diffs/captures/1784597946230/ee663a3e-cef1-48e8-b1b3-d15d4ca9070e/base 24881e0f798a3d4223078cdb56b991a2fe87e62c +refs/codex/turn-diffs/captures/1784614599853/245317cf-560a-4243-bb22-e8c57dbd0206/base 24881e0f798a3d4223078cdb56b991a2fe87e62c +refs/codex/turn-diffs/checkpoints/11ce1718621b8c19888f21276820eec0f806d6d21a30d5800dd595f6d41c0e4a/eb48d4aa73373414ee7aedd7a21c3e5c1ce54be4cf1928bbba288a224ff025b5/1784627460885/420ee823-6777-41fa-8090-32d6dada00af 24881e0f798a3d4223078cdb56b991a2fe87e62c +refs/codex/turn-diffs/checkpoints/6cd1e51c2dc200ebdd45b0ec705e9b21b17248e61742cb4172fa80c36ae1761e/40daa58ac95334dff03d1e10489f36667a85f9ac4c106e805c3c391f05321746/1784516846400/5ef4357d-774b-4bb3-9ad4-ddd920a5289e 5fd9ea278c6b6830008bb12c5a34194e3d397af5 +refs/codex/turn-diffs/checkpoints/9ee51a43de9735d7ab41129d8a0cc1a338fe9c54f9107d3f79c8b7cded846af3/eba81e866a7a77bacaf14d42d283db4e3d7f8381f440aa204d073655ea9af552/1784537149963/0e9870c1-1b1f-4079-b50e-4ffe5489ae81 24881e0f798a3d4223078cdb56b991a2fe87e62c +refs/codex/turn-diffs/checkpoints/c0cc4334a8defecc660a2aadaab3a1cd03a403dd78e445edbbff9593b1dee4f6/b0552934ef3d3a5098b9f6a31485d64787071514d5553a7f71327bcc674243c3/1784157400890/545c9cfa-1b3f-4563-9f83-944ba0f55ee3 a966f9d3c9c509b97c871a324d4bc4e269f5bfd5 +refs/codex/turn-diffs/checkpoints/f3944cb5dbcea3aae809641adb69e4569a1fe9a235c386cc9be6b469a245867b/f692d67644f958ada4ea4e62dc80f55892dc85e5403741c100cdde0bb2548c7f/1784259268834/c2a7e86e-5f64-4414-ad58-13bde2ea67d6 af0bb99f6215ddf5777d6cbe9d55bfccb32f414e +refs/heads/codex/noderoom-current-consumer-20260905 3576237259535dbcddb5faa0925e4c5a0ceb8979 +refs/heads/codex/noderoom-desktop-account-20260905 034a8f963dfa037d860f5364032319506be3e2e0 +refs/heads/demo/motion-landing 558460c874e98a816e90f5077b266e1a84955a13 +refs/heads/demo/plain-words-copy 558460c874e98a816e90f5077b266e1a84955a13 +refs/heads/main 2b3e5bd718b80747f32257a8b8af5f15e2310699 +refs/remotes/origin/claude/brave-einstein-e177ab 3bc04193ff8da20ece7fb70168b80aea83e59b14 +refs/remotes/origin/claude/charming-lumiere-1a943f 156485e04f5bcecca0944560f1decad8cc4620fe +refs/remotes/origin/claude/crazy-wilson-89b3a4 2085c572042d8f9324d13e01cec2a0ba1f4acd0b +refs/remotes/origin/claude/inspiring-newton-187f71 c74a2fcc38d1d2ee46e8a301fac61e041b8ab28b +refs/remotes/origin/claude/magical-yonath-86a48c 9d96ed02247311c9972b0756dbb8901fa03dbeb0 +refs/remotes/origin/claude/notebook-deploy-follow 126b8fa2518a99437128a2c56b6bd3d7b8341e34 +refs/remotes/origin/claude/notebook-pickups 95095a58197aca3203847466f9d27b33c2c5339f +refs/remotes/origin/cleanup/ui-legacy-wave1 045101fd5df91b3a063fb996691df508ecff48ee +refs/remotes/origin/codex/always-on-design-honesty 3eb7b40287508553a9d5f2ec71c4446c9bda4d74 +refs/remotes/origin/codex/always-on-responsive-analysis 6e06283e0f7a104758058c12d5ca38b86ad63944 +refs/remotes/origin/codex/casca-fde-evidence-package 82e149427bedb573ec62137364c6851596c67e73 +refs/remotes/origin/codex/design-parity-proof 33b77628133146c5b6a1385d014ad18382fdf2e5 +refs/remotes/origin/codex/design-ui-contract 84152051661afd3d8c023195d74f5fae3ed0c480 +refs/remotes/origin/codex/finalize-remaining bd3881dfe452d43280d5dfbdcd09b05e01150860 +refs/remotes/origin/codex/finish-all-remaining bd3881dfe452d43280d5dfbdcd09b05e01150860 +refs/remotes/origin/codex/free-proxy-all-night bcbd28c50367e77ad8b24c09a933159bb50b862c +refs/remotes/origin/codex/full-proxy-benchmark-sweep a9c47b56d5faf5d920be117238421502a020161f +refs/remotes/origin/codex/hackwithbay-3.0 387a924c5880eece5ad477c29df4b6166e5b19d6 +refs/remotes/origin/codex/i7-mounted-browser-proof f40f48aebd9fb213df52fdbaf50711a7e2714736 +refs/remotes/origin/codex/live-first-user-ai-elements d2ed30438a486855a70baf3e042cbc7b804a41e8 +refs/remotes/origin/codex/live-starter-room-main c9bb8aec5ab23c554dc6899d043681f8de553a06 +refs/remotes/origin/codex/mobile-terracotta-launch 77757c42a9783072efca1317ef85789557dfea3f +refs/remotes/origin/codex/model-picker-cleanup 41b6e0ebb0a5fe8b7c27d8f3ca2acf94a4f092eb +refs/remotes/origin/codex/model-picker-polish 814a27ab8d1bc94afb4c1ff3164218d17d940299 +refs/remotes/origin/codex/nodeagent-prod-route-evidence e985074a4cc347bb52592b58ea65ea6f3411e53c +refs/remotes/origin/codex/nodekit-caseflow-consumer bf1c905bebf18e1f758e8d1abe5caa1c98662242 +refs/remotes/origin/codex/nodekit-contract-alignment a4998c91ca04670adddc26b80551f415c3f195ce +refs/remotes/origin/codex/nodekit-contract-reconcile 65f8cfe4b2bd0c3665e7d111ce3e9e1b0df702d4 +refs/remotes/origin/codex/noderoom-current-consumer-20260905 3576237259535dbcddb5faa0925e4c5a0ceb8979 +refs/remotes/origin/codex/noderoom-smb-lending 985afeb2f48ee6bd70d7958163adf86ce276b90f +refs/remotes/origin/codex/noderoom-smb-lending-convex 5032ec91076488dea48bb1f4f18b32961184455d +refs/remotes/origin/codex/noderoom-smb-lending-production-proof 3a8f4209893e80104aef793149496542369a080d +refs/remotes/origin/codex/noderoom-split-before-rebase caadbf93df3e51610a3e2761f02e0b898211cd2b +refs/remotes/origin/codex/nodeslide-consumer-contract b79623349eb8aaf321ca53a3b68788862ed3ca80 +refs/remotes/origin/codex/nodeslide-consumer-proof 2cced7395df623392c8692b40cdad791f5a1cf4d +refs/remotes/origin/codex/nodeslide-v0.2.2 cfe8069ead0cc637f6f7de908b05b95be302e1d9 +refs/remotes/origin/codex/nodeslide-v0.2.2-bind 1c7a3101464cbab6a8768142d8bde46779da8221 +refs/remotes/origin/codex/non-memory-live-proof 80f8ee7a6f8deab1099192b6739a5820ddcf72b9 +refs/remotes/origin/codex/non-memory-prod-proof-evidence 527918a4b08751814fac2d16c1f204e037c3e349 +refs/remotes/origin/codex/notebook-read-model-kernel dce4e3bfa6f51e9bebebce59ef2767cd10f8bdb2 +refs/remotes/origin/codex/prod-convex-deploy 15d8beaf910d1bac76add8368518663cb36678a4 +refs/remotes/origin/codex/prod-proxy-benchmark-runner 86bd2e28d8398d94c91e8658cc0e32c4e12a06b4 +refs/remotes/origin/codex/prod-proxy-matrix-public 0a006fe47a744477e4710af8ce5257fed4d095d2 +refs/remotes/origin/codex/prod-walkthrough-copy 3925d18329906ebace6a00a02e0a16cf464d773b +refs/remotes/origin/codex/product-hunt-readiness 029906739a9b0e903b7627b363364eaff7ab9653 +refs/remotes/origin/codex/proofloop-adapter-blocker-receipts 4cf02535746f8ba2c532f0dadd18098a50fb7c3c +refs/remotes/origin/codex/proofloop-agent-friendly-cli 92fc5bee801638caa4cca342d19f7903cc63c2a1 +refs/remotes/origin/codex/proofloop-astryx-setup-complete b8ee36a4dfb55ef614c0e7626a0d13024383d9b7 +refs/remotes/origin/codex/proofloop-auth-boundary 25cd1e642cc523746cba8d165beed24411d4da22 +refs/remotes/origin/codex/proofloop-benchmark-separation 9182995517fa9fb4529d69641b9e199bebc7e7f5 +refs/remotes/origin/codex/proofloop-blocker-solver a4da2ece549c520db59196cb3787737c2dc7c557 +refs/remotes/origin/codex/proofloop-company-harness-economics c2d8b542a51b4331feae96ae120d503cf3026e19 +refs/remotes/origin/codex/proofloop-local-adapter-proofs 0a756f10a51d39dffc4e334db31f38b766736d5d +refs/remotes/origin/codex/proofloop-longrun-budgeted-matrix 813b4bf95cb8b1cdfb2d5c448a31857188771adb +refs/remotes/origin/codex/proofloop-loop-contracts 28ae67749cffe9d68a918faaae3f132be1b9dd12 +refs/remotes/origin/codex/proofloop-normalized-benchmark-ir 979bfe8c8121c844ee619ead7d4f8a20c0dea92e +refs/remotes/origin/codex/proofloop-official-score-scorers e5ed572a2c9275818a093ddd6f48ec9a12b79268 +refs/remotes/origin/codex/proofloop-orchestrator-v1 1b9eaf584ba73d8d65ba2566e37b6c44b8e8ef37 +refs/remotes/origin/codex/proofloop-prod-classifier 9eb2b502c94f3c90cfdf8463be95fb6da9bdcd14 +refs/remotes/origin/codex/proofloop-strict-live-official 81f86c6ed17f472239799fc05d42c5ce4249bf60 +refs/remotes/origin/codex/proofloop-supervisor-governance 706f7bc6fac2649a4e973316495d9c11526fc6b1 +refs/remotes/origin/codex/remediate-npm-audit 4fd2671454674de391da51808f2440f53dbd70b0 +refs/remotes/origin/codex/rocketride-execution-port 353ddcce5b4ee791c4a0d70713a47ab302a643b9 +refs/remotes/origin/codex/two-layer-proofloop-orchestration 85d47a13cd5c70ee5c8e5380b1c7ad950c44a8e8 +refs/remotes/origin/codex/vitest-audit dd28283e8e9abe9632ec069804ba892cfd0aaae7 +refs/remotes/origin/codex/workbook-identifier-reference-fix a40746b7b3bc2f79782adabe08d6e220ef446c23 +refs/remotes/origin/demo/plain-words-copy 558460c874e98a816e90f5077b266e1a84955a13 +refs/remotes/origin/design/clean-room-parity 2a28b3a8a4130947190c26f7ff84e50e8b24e2f1 +refs/remotes/origin/feat/attention-overlay 5f0c738cfdf810f80ae6005b5dd2e93e67c7ac42 +refs/remotes/origin/feat/nodekit-note-reference-receipts 34d5a16181c8d447a91f39f96670319e6234bf53 +refs/remotes/origin/feat/nodekit-opportunity-contract 70c02b7b456d1f5126bc42732f2370b57b91509f +refs/remotes/origin/feat/note-surface-dna a161cec872b1e0c80535774713c0b0c545923f70 +refs/remotes/origin/fix/gitignore-deploy-secrets 69f168f7c559a44977d2ea8a53f04b16a59a2484 +refs/remotes/origin/main 034a8f963dfa037d860f5364032319506be3e2e0 +refs/remotes/origin/notebook-pickups/main a6b78041ebf1f10af3020d29e8d7199dd36e04a4 +refs/remotes/origin/parity-recheck 839d2bdd1962f8051f7157bcc8e55bda5df4b1a1 +refs/remotes/origin/parity-wave1 04e9818653800a9860f2b09ff65d8ad898f2c4a6 +refs/remotes/origin/parity-wave2 8d840b5cdeb3f04beb09ecd8d6d01c74941f5ce0 +refs/remotes/origin/parity-wave3 27d5e8c9acf800a39f94c99f80c2130cad508732 +refs/remotes/origin/preserve/fleet-routing-fix-wip-20260706b 086118261799ccdd63ce040872f9dc7cd8e5d614 +refs/remotes/origin/preserve/fleet-underwriting-wip-20260706 1e5cc4fbfc075b222c30fd2c8e845d37d4018882 +refs/remotes/origin/preserved/finish-all-remaining-20260803 56e24f4c107985a484b5337322c7022103058208 +refs/remotes/origin/preserved/noderoom-smb-lending-20260803 985afeb2f48ee6bd70d7958163adf86ce276b90f +refs/remotes/origin/ship-wave4 f3a417d9c5b13bf2cb714435483639b2c7ca9e4b +refs/remotes/origin/visual/motion-landing 13d9ef8a0926c7329326fcdb0044f4bacbef5338 +refs/remotes/origin/walkthrough-notebook e0f894dd9d6c43f4d2ff9a1cb48055f2e46f24c8 +refs/remotes/origin/wave3-human-ready d022d42d3c9b529779d6a922ae2e191f8bbb2c87 +refs/remotes/origin/wip/full-tree-backup-20260717 018b454c19d996a14d0a3d0d07d7ef3c201b2975 +refs/remotes/pr/109 9b94918547614f8f07d05a396a5534dd0b67b4f7 +refs/remotes/pr/113 0ac1179be64e0bb23036439c54d7f140b5280687 +refs/remotes/pr/126 b36ede4c84be303ee60bcf81b4d40bb808c41709 +refs/remotes/pr/127 3c022bfcb03ace1d8027925c49dd2ebff29831d5 +refs/stash 383529bc53245247d46720652dfd047242d79be3 diff --git a/evidence/desktop-account-20260905/operator/final-source.diff b/evidence/desktop-account-20260905/operator/final-source.diff new file mode 100644 index 00000000..d253c442 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/final-source.diff @@ -0,0 +1,244 @@ +diff --git a/HANDOFF.md b/HANDOFF.md +index 3b3cecec..49706cb1 100644 +--- a/HANDOFF.md ++++ b/HANDOFF.md +@@ -61,16 +61,33 @@ npx playwright test e2e/mobile-sample-workbook-export.spec.ts --workers=1 --retr + + The scenario writes exact source hashes, HTML, pixels, console observations and reopened downloads to the configured Playwright output directory. It blocks external requests and uses fallback fonts. Preserve that output before another run. The default browser output path is local test evidence, not a deployment or public certificate. + +-Historical mobile-freeze holds: its baseline full dependency audit had 29 findings (28 moderate, one development high), and the production subset had 28 moderate findings. That export-only freeze kept the lock unchanged. The later dependency candidate and its current audit/mounted status are described below; these historical receipts are not rewritten. Gemini nightly still lacks its required credential. The old desktop XLSX projection exports blank Account cells despite visible Revenue/COGS labels; this extraction preserves that behavior and does not certify desktop data completeness. Current instructions reference two absent mobile design documents. The inherited half-height mobile dialog requires scrolling; enlarged navigation tabs have reading limitations and transient edit toasts overlap early outcomes. Full visual, responsive, accessibility, performance, provider and production grades remain unassigned. ++Historical mobile-freeze holds: its baseline full dependency audit had 29 findings (28 moderate, one development high), and the production subset had 28 moderate findings. That export-only freeze kept the lock unchanged. The later dependency candidate and its current audit/mounted status are described below; these historical receipts are not rewritten. Gemini nightly still lacks its required credential. The old desktop XLSX projection exported blank Account cells despite visible Revenue/COGS labels; the mobile extraction preserved that behavior and did not certify desktop data completeness. The separate Account repair below addresses those two lookups. Current instructions reference two absent mobile design documents. The inherited half-height mobile dialog requires scrolling; enlarged navigation tabs have reading limitations and transient edit toasts overlap early outcomes. Full visual, responsive, accessibility, performance, provider and production grades remain unassigned. + + The retained proof used no provider call, shared backend change, hook activation, original environment read or production deployment. Old branches and dirty worktrees remain preserved. + +-## Current dependency repair, local review accepted ++## Dependency repair, reviewed and merged + +-Read the [dependency proof and fresh commands](evidence/shared-dependencies-20260905/README.md) after this handoff. The [independent judgment](evidence/shared-dependencies-20260905/review/E6f_NODEROOM_SHARED_DEPENDENCY_FINAL_JUDGE.md) accepts this local dependency scope. The [encoding addendum](evidence/shared-dependencies-20260905/review/E6f_NODEROOM_DEPENDENCY_PACKAGE_ENCODING_ADDENDUM.md) explains why the final package spelling differs from the earlier raw worker hash. Shared integration is still pending. It restores the two exact NodeSlide file pins required by the immutable release contract and upgrades the coherent 30-package Tiptap cohort to 3.30.4, with only its required ProseMirror model/view minimums. All other lock rows and the nested uuid 14.0.1 remain unchanged. ++Read the [dependency proof and fresh commands](evidence/shared-dependencies-20260905/README.md) after this handoff. The [independent judgment](evidence/shared-dependencies-20260905/review/E6f_NODEROOM_SHARED_DEPENDENCY_FINAL_JUDGE.md) accepts this local dependency scope. The [encoding addendum](evidence/shared-dependencies-20260905/review/E6f_NODEROOM_DEPENDENCY_PACKAGE_ENCODING_ADDENDUM.md) explains why the final package spelling differs from the earlier raw worker hash. [PR 252](https://github.com/HomenShum/NodeRoom/pull/252) merged normally at `034a8f963dfa037d860f5364032319506be3e2e0` after independent review and the premerge shared gates. It restores the two exact NodeSlide file pins required by the immutable release contract and upgrades the coherent 30-package Tiptap cohort to 3.30.4, with only its required ProseMirror model/view minimums. All other lock rows and the nested uuid 14.0.1 remain unchanged. + + Normal install, the unchanged fresh mounted consumer, 51 notebook/export scenarios, both TypeScript checks, build and 29 unchanged memory browser cases passed. The production audit now has zero findings; full audit retains one high development-only Browserslist finding. The real installed library prototype canary changes from 1,025 unsafe before cases to zero after, without claiming a NodeRoom exploit or executed browser handler. + + The dedicated notebook provenance browser spec remains unresolved: 3/3 failed on both preserved old and new built output, and only the 375 px failure matched exactly. Different artifact selection/steps at desktop and 320 px prevent a no-regression claim. All six screenshots/traces and original assertions are retained. This candidate has no notebook UI repair or full visual grade. + +-The unchanged full shared gates and actual new-commit check are still required before integration; the historical de9 commit-message failure remains. The Windows native Office deadline, absent nightly credential and separately planned desktop Account-label repair are open. Current dependency proof does not replace the original mobile export source/lock bindings or authorize a deployment. ++The historical de9 commit-message failure remains recorded; published history was not rewritten. The Windows native Office deadline and absent nightly credential remain open. The merged dependency proof does not replace the original mobile export source/lock bindings or certify a deployment. ++ ++## Desktop Account export, awaiting independent review ++ ++A reviewer could see Revenue, COGS, Gross profit, OpEx and Net income in the desktop Q3 variance grid but receive five blank Account cells in the downloaded workbook. Both canonical export branches read `__account`; the existing seed and renderer store those values as `__label`. This candidate changes only those two field lookups. It preserves the visible grid, mobile projection, shared download transport and generic uploaded-workbook behavior. ++ ++From the fresh local entry above, open `?mode=memory&surface=desktop`, enter the sample room and dismiss its walkthrough. In Room chat, send `@nodeagent recompute the Q3 variance column`. Wait for the committed variance response, edit the Revenue note, then select **Export XLSX**. The downloaded workbook must contain all five visible Account labels. Edit the note again and export a second file; the new file must contain the later note while the first file remains unchanged. ++ ++The source-bound worker proof on merged `034a8f9` passed the normal build, the Convex TypeScript check, design audit, ten affected workbook/dialog scenarios and all three existing-plus-new `excel-grid` browser cases with the unchanged 30-second test budget. Current- and sibling-sheet component scenarios reopen eight serialized workbooks across repeated edits and duplicate activation. Temporarily restoring only the two old lookups makes both label scenarios fail; the exact repaired bytes were restored before the final proof. The actual 1440 px desktop journey saved two XLSX files: all five Account cells match the grid, the other 25 cells and all 30 cell styles match the preserved baseline, and the later note does not alter the earlier file. The sibling-sheet case is a typed component/store fixture, not a browser-certified uploaded canonical workbook. ++ ++After installing Chromium and starting the built preview as above, replay the affected checks in the second terminal: ++ ++```powershell ++npx vitest run tests/artifactXlsxExport.test.ts tests/mobileSampleWorkbookExport.test.ts tests/mobileSheetDialog.test.tsx ++npx playwright test e2e/excel-grid.spec.ts --output test-results/desktop-account ++``` ++ ++Keep the three `PLAYWRIGHT_*` variables shown above so the browser uses that built preview. Preserve the output before another run; one unchanged uploaded-grid scenario also writes `test-results/uploaded-workbook-shared-grid.png`. The new Account scenario retains both downloaded workbooks and its screenshot. The matched before/after source, grid, PNG, XLSX and raw failure records are retained in the operator packet `E6f-noderoom-desktop-account-repair-01`, pending independent review and portable publication. The browser proof used fallback fonts and the memory engine, with no provider or native Office execution. Its base-commit build stamp is supplemented by exact working-source hashes. These checks do not close the inherited notebook failures, full floor/native Excel timeout, production behavior or whole-product grades. +diff --git a/e2e/excel-grid.spec.ts b/e2e/excel-grid.spec.ts +index 9fbb8a28..e9b9be57 100644 +--- a/e2e/excel-grid.spec.ts ++++ b/e2e/excel-grid.spec.ts +@@ -130,3 +130,53 @@ test("uploaded workbook renders in the shared Sheet 1 grid, not the false Excel- + + await page.screenshot({ path: "test-results/uploaded-workbook-shared-grid.png", fullPage: false }); + }); ++ ++test("a reviewer reopens every visible Account label after current-sheet edits and repeated exports", async ({ page }, testInfo) => { ++ await page.setViewportSize({ width: 1440, height: 960 }); ++ const origin = new URL(String(testInfo.project.use.baseURL)).origin; ++ await page.route("**/*", route => { ++ const url = new URL(route.request().url()); ++ return url.origin === origin || ["data:", "blob:"].includes(url.protocol) ++ ? route.continue() : route.abort("blockedbyclient"); ++ }); ++ await enterDemoRoom(page); ++ const chat = page.getByTestId("public-chat-panel"); ++ await chat.getByTestId("chat-composer").fill("@nodeagent recompute the Q3 variance column"); ++ await chat.getByTestId("chat-send").click(); ++ await expect(chat.getByText("Committed r_rev +24%, r_cogs +27.5%, r_gp +21.7%, r_ni +22.4%. Lock released.", { exact: true })).toBeVisible(); ++ const table = page.locator('table.r-sheet[data-noderoom-surface="workSurface.sheet"]').first(); ++ const labels = await table.locator("tbody td.label").allTextContents(); ++ expect(labels).toEqual(["Revenue", "COGS", "Gross profit", "OpEx", "Net income"]); ++ const stableNumbers = await table.locator("tbody tr").filter({ has: page.locator("td.label") }).evaluateAll(rows => ++ rows.map(row => [...row.querySelectorAll("td.num .r-val-num")].map(cell => cell.textContent)), ++ ); ++ const files: string[] = []; ++ for (const [index, note] of ["Reviewer note: checked source", "Reviewer note: revised before handoff"].entries()) { ++ await page.locator('[data-cell-key="r_rev__note"] button').click(); ++ await page.locator("input.r-cell-input").fill(note); ++ await page.locator("input.r-cell-input").press("Enter"); ++ await expect(page.locator('[data-cell-key="r_rev__note"]')).toContainText(note); ++ const event = page.waitForEvent("download"); ++ await page.getByTestId("artifact-export-xlsx").click(); ++ const download = await event; ++ expect(await download.failure()).toBeNull(); ++ const file = testInfo.outputPath(`review-${index + 1}-${download.suggestedFilename()}`); ++ await download.saveAs(file); ++ files.push(file); ++ const reopened = new ExcelJS.Workbook(); ++ await reopened.xlsx.readFile(file); ++ const sheet = reopened.worksheets[0]; ++ expect(sheet.getRow(1).values).toEqual([undefined, "Account", "Q2", "Q3", "Variance", "Note"]); ++ expect(labels.map((_, row) => sheet.getCell(row + 2, 1).value)).toEqual(labels); ++ expect(labels.map((_, row) => [sheet.getCell(row + 2, 2).value, sheet.getCell(row + 2, 3).value])).toEqual(stableNumbers); ++ expect(sheet.getCell("D2").value).toBe("+24%"); ++ expect(sheet.getCell("E2").value).toBe(note); ++ await expect(page.getByTestId("artifact-export-xlsx-status")).toContainText("Downloaded"); ++ await testInfo.attach(`review-${index + 1}.xlsx`, { path: file, contentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }); ++ } ++ const first = new ExcelJS.Workbook(); ++ await first.xlsx.readFile(files[0]); ++ expect(first.worksheets[0].getCell("E2").value).toBe("Reviewer note: checked source"); ++ expect(await table.locator("tbody td.label").allTextContents()).toEqual(labels); ++ await page.screenshot({ path: testInfo.outputPath("desktop-account-current-export.png"), caret: "initial" }); ++}); +diff --git a/src/ui/panels/Artifact.tsx b/src/ui/panels/Artifact.tsx +index 74c90f35..37dac53c 100644 +--- a/src/ui/panels/Artifact.tsx ++++ b/src/ui/panels/Artifact.tsx +@@ -2458,7 +2458,7 @@ async function exportSheetAsXlsx(art: Art, visibleRoot?: HTMLElement | null, all + appendExportRow(worksheet, ["Account", "Q2", "Q3", "Variance", "Note"]); + for (const rid of rows) { + appendExportRow(worksheet, [ +- art.elements[`${rid}__account`]?.value, ++ art.elements[`${rid}__label`]?.value, + art.elements[`${rid}__q2`]?.value, + art.elements[`${rid}__q3`]?.value, + art.elements[`${rid}__variance`]?.value, +@@ -2553,7 +2553,7 @@ function appendSheetArtifactWorksheet( + appendExportRow(worksheet, ["Account", "Q2", "Q3", "Variance", "Note"]); + for (const rid of rows) { + appendExportRow(worksheet, [ +- art.elements[`${rid}__account`]?.value, ++ art.elements[`${rid}__label`]?.value, + art.elements[`${rid}__q2`]?.value, + art.elements[`${rid}__q3`]?.value, + art.elements[`${rid}__variance`]?.value, +diff --git a/tests/artifactXlsxExport.test.ts b/tests/artifactXlsxExport.test.ts +index 452d795d..424266f4 100644 +--- a/tests/artifactXlsxExport.test.ts ++++ b/tests/artifactXlsxExport.test.ts +@@ -1,7 +1,27 @@ ++// @vitest-environment jsdom + import ExcelJS from "exceljs"; +-import { describe, expect, it } from "vitest"; +-import type { Artifact } from "../src/engine/types"; +-import { applyExportCell, exportCellValue, spreadsheetCellFontColorCss } from "../src/ui/panels/Artifact"; ++import { createElement } from "react"; ++import { fireEvent, render, screen, waitFor } from "@testing-library/react"; ++import { describe, expect, it, vi } from "vitest"; ++import type { Actor, Artifact } from "../src/engine/types"; ++import { SHEET_ROWS } from "../src/engine/demoRoom"; ++ ++const exportFixture = vi.hoisted(() => ({ ++ store: {} as Record, ++ bytes: [] as ArrayBuffer[], ++})); ++vi.mock("../src/app/store", () => ({ useStore: () => exportFixture.store })); ++// Keep the real component projection and ExcelJS serialization. Only replace browser dispatch; ++// the companion browser scenario saves and reopens the actual downloaded file. ++vi.mock("../src/ui/workArtifacts/xlsxDownload", () => ({ ++ downloadXlsxWorkbook: async (workbook: ExcelJS.Workbook, fileName: string, rowCount: number) => { ++ const bytes = await workbook.xlsx.writeBuffer(); ++ exportFixture.bytes.push(bytes); ++ return { fileName, rowCount, sheetCount: workbook.worksheets.length, byteCount: bytes.byteLength, at: "test" }; ++ }, ++})); ++ ++import { Artifact as ArtifactPanel, applyExportCell, exportCellValue, spreadsheetCellFontColorCss } from "../src/ui/panels/Artifact"; + + describe("NodeRoom XLSX cell export", () => { + it("preserves a managed formula, cached result, and number format after reopen", async () => { +@@ -85,4 +105,86 @@ describe("NodeRoom XLSX cell export", () => { + expect(spreadsheetCellFontColorCss(artifact, "A1")).toBe("#11223380"); + expect(spreadsheetCellFontColorCss(artifact, "A2")).toBe("#AABBCC"); + }); ++ ++ it.each(["current sheet", "sibling sheet"] as const)("keeps Account labels through repeated reviewer exports of the %s", async (surface) => { ++ const actor: Actor = { kind: "user", id: "reviewer", name: "Reviewer" }; ++ const canonical: Artifact = { ++ id: "variance", roomId: "review-room", title: "Q3 variance", kind: "sheet", ++ version: 1, updatedAt: 1, order: [], elements: {}, ++ }; ++ const rowIds = SHEET_ROWS.map((row, index) => surface === "current sheet" ? row.id : String(index + 1)); ++ SHEET_ROWS.forEach((row, index) => { ++ const values = { label: row.label, q2: row.q2, q3: row.q3, ++ variance: { value: 0.24, formula: "=C2/B2-1", numFmt: "0.0%" }, note: "Initial review" }; ++ for (const [column, value] of Object.entries(values)) { ++ const id = `${rowIds[index]}__${column}`; ++ canonical.order.push(id); ++ canonical.elements[id] = { id, value, version: 1, updatedAt: 1, updatedBy: actor }; ++ } ++ }); ++ const summary: Artifact = { ++ id: "summary", roomId: canonical.roomId, title: "Summary", kind: "sheet", ++ version: 1, updatedAt: 1, order: ["A1", "B1"], ++ elements: { ++ A1: { id: "A1", value: { value: "Review workbook" }, version: 1, updatedAt: 1, updatedBy: actor }, ++ B1: { id: "B1", value: { value: 2, formula: "=1+1", numFmt: "0.00" }, version: 1, updatedAt: 1, updatedBy: actor }, ++ }, ++ }; ++ if (surface === "sibling sheet") { ++ // Existing multi-sheet metadata supplies numeric row IDs. The active generic sheet and ++ // its canonical sibling must both survive the same workbook-export action. ++ for (const art of [summary, canonical]) art.meta = { ++ upload: { fileName: "review.xlsx", mimeType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", size: 1, parsedAt: 1 }, ++ excelGrid: { sourceFile: "review.xlsx", sheetName: art.title, sheetNames: ["Summary", "Q3 variance"], parser: "exceljs:xlsx-grid", rows: art === canonical ? 5 : 1, columns: art === canonical ? 5 : 2 }, ++ }; ++ summary.meta!.dataframe = { ++ rowCount: 1, columns: ["A", "B"].map((id, order) => ({ id, label: id, order })), ++ }; ++ } ++ const artifacts = surface === "current sheet" ? [canonical] : [summary, canonical]; ++ exportFixture.bytes = []; ++ exportFixture.store = { ++ mode: "engine", listArtifacts: () => artifacts, getArtifact: (id: string) => artifacts.find(art => art.id === id), ++ listMessages: () => [], listProposals: () => [], listTraces: () => [], listDrafts: () => [], ++ listMembers: () => [{ id: actor.id, actor, role: "host" }], listSessions: () => [], listPresence: () => [], ++ lockFor: () => null, canUndo: () => false, updatePresence: () => undefined, clearPresence: () => undefined, ++ getRoom: () => ({ id: canonical.roomId, title: "Review room" }), ++ lastRun: () => null, lastLongFreeJob: () => null, lastLongFreeJobAttempts: () => [], lastLongFreeJobDetail: () => null, ++ }; ++ const props = { roomId: canonical.roomId, me: actor, artId: artifacts[0].id, onArt: vi.fn() }; ++ const view = render(createElement(ArtifactPanel, props)); ++ if (surface === "current sheet") { ++ expect([...view.container.querySelectorAll("td.label")].map(cell => cell.textContent)).toEqual(SHEET_ROWS.map(row => row.label)); ++ } ++ for (let revision = 1; revision <= 4; revision++) { ++ const note = `Reviewer revision ${revision}`; ++ canonical.elements[`${rowIds[0]}__note`].value = note; ++ canonical.elements[`${rowIds[0]}__note`].version = revision; ++ view.rerender(createElement(ArtifactPanel, props)); ++ const button = screen.getByTestId("artifact-export-xlsx"); ++ fireEvent.click(button); ++ fireEvent.click(button); // Ordinary burst against the disabled current action starts once. ++ await waitFor(() => expect(exportFixture.bytes).toHaveLength(revision)); ++ await waitFor(() => expect((button as HTMLButtonElement).disabled).toBe(false)); ++ const reopened = new ExcelJS.Workbook(); ++ await reopened.xlsx.load(exportFixture.bytes[revision - 1]); ++ const sheet = reopened.getWorksheet("Q3 variance")!; ++ expect(SHEET_ROWS.map((_, index) => sheet.getCell(index + 2, 1).value)).toEqual(SHEET_ROWS.map(row => row.label)); ++ expect(sheet.getCell("B2").value).toBe(SHEET_ROWS[0].q2); ++ expect(sheet.getCell("C2").value).toBe(SHEET_ROWS[0].q3); ++ expect(sheet.getCell("D2").formula).toBe("C2/B2-1"); ++ expect(sheet.getCell("D2").result).toBe(0.24); ++ expect(sheet.getCell("D2").numFmt).toBe("0.0%"); ++ expect(sheet.getCell("E2").value).toBe(note); ++ if (surface === "sibling sheet") { ++ expect(reopened.getWorksheet("Summary")!.getCell("A1").value).toBe("Review workbook"); ++ expect(reopened.getWorksheet("Summary")!.getCell("B1").formula).toBe("1+1"); ++ expect(reopened.getWorksheet("Summary")!.getCell("B1").result).toBe(2); ++ expect(reopened.getWorksheet("Summary")!.getCell("B1").numFmt).toBe("0.00"); ++ } ++ } ++ const first = new ExcelJS.Workbook(); ++ await first.xlsx.load(exportFixture.bytes[0]); ++ expect(first.getWorksheet("Q3 variance")!.getCell("E2").value).toBe("Reviewer revision 1"); ++ }); + }); diff --git a/evidence/desktop-account-20260905/operator/final-status.txt b/evidence/desktop-account-20260905/operator/final-status.txt new file mode 100644 index 00000000..59351f98 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/final-status.txt @@ -0,0 +1,4 @@ + M HANDOFF.md + M e2e/excel-grid.spec.ts + M src/ui/panels/Artifact.tsx + M tests/artifactXlsxExport.test.ts diff --git a/evidence/desktop-account-20260905/operator/final-worktrees.txt b/evidence/desktop-account-20260905/operator/final-worktrees.txt new file mode 100644 index 00000000..014d6a2d --- /dev/null +++ b/evidence/desktop-account-20260905/operator/final-worktrees.txt @@ -0,0 +1,16 @@ +worktree D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/noderoom +HEAD 2b3e5bd718b80747f32257a8b8af5f15e2310699 +branch refs/heads/main + +worktree C:/Users/hshum/AppData/Local/Temp/claude/D--VSCode-Projects-cafecorner-nodebench-nodebench-ai4-node-platform/f7b21934-d259-4766-82d4-3607f84fcbbe/scratchpad/noderoom-copy +HEAD 558460c874e98a816e90f5077b266e1a84955a13 +branch refs/heads/demo/plain-words-copy + +worktree C:/Users/hshum/AppData/Local/Temp/claude/D--VSCode-Projects-cafecorner-nodebench-nodebench-ai4-node-platform/f7b21934-d259-4766-82d4-3607f84fcbbe/scratchpad/noderoom-motion +HEAD 558460c874e98a816e90f5077b266e1a84955a13 +branch refs/heads/demo/motion-landing + +worktree D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905 +HEAD 034a8f963dfa037d860f5364032319506be3e2e0 +branch refs/heads/codex/noderoom-desktop-account-20260905 + diff --git a/evidence/desktop-account-20260905/operator/freeze-attempt-01.error.txt b/evidence/desktop-account-20260905/operator/freeze-attempt-01.error.txt new file mode 100644 index 00000000..6e35f301 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/freeze-attempt-01.error.txt @@ -0,0 +1 @@ +2026-09-05: freeze.py stopped at line58: AssertionError:7. The browser reporter retained two duplicate attachment copies in addition to the five unique actual XLSX outputs. This was a packaging count error after source/dist custody, not a runtime/export failure. Original freeze script and generated archive remain unchanged. diff --git a/evidence/desktop-account-20260905/operator/freeze-final.py.txt b/evidence/desktop-account-20260905/operator/freeze-final.py.txt new file mode 100644 index 00000000..b5b66304 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/freeze-final.py.txt @@ -0,0 +1,80 @@ +from pathlib import Path +import datetime, hashlib, json, re, subprocess, zipfile +import xml.etree.ElementTree as ET + +o=Path(__file__).parent +p=o.parent +r=Path('D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905') +sha=lambda b:hashlib.sha256(b).hexdigest() +def write(name,value): + (o/name).write_text(json.dumps(value,ensure_ascii=False,indent=2)+'\n',encoding='utf-8',newline='\n') +def git(*args):return subprocess.check_output(['git','--no-optional-locks',*args],cwd=r) +def binding(path,relative): + assert not path.is_symlink() and not (path.stat().st_file_attributes & 1024), relative + b=path.read_bytes() + return {'path':relative,'bytes':len(b),'sha256':sha(b),'gitBlobSha1':hashlib.sha1(b'blob '+str(len(b)).encode()+b'\0'+b).hexdigest()} +owned=['src/ui/panels/Artifact.tsx','tests/artifactXlsxExport.test.ts','e2e/excel-grid.spec.ts','HANDOFF.md'] +for name in owned:assert b'\r\n' not in (r/name).read_bytes(),name +for row in json.loads((o/'source-normalization.json').read_text(encoding='utf-8')): + assert sha((r/row['path']).read_bytes())==row['afterSha256'],row['path'] +before=json.loads((o/'before-tracked-bindings.json').read_text(encoding='utf-8')) +after=[binding(r/x['path'],x['path']) for x in before] +changed=[a['path'] for a,b in zip(after,before) if a['sha256']!=b['sha256']] +assert set(changed)==set(owned),changed +write('after-tracked-bindings.json',after) +for label,args in {'head':['rev-parse','HEAD','HEAD^{tree}'],'refs':['for-each-ref','--format=%(refname) %(objectname)'],'index':['ls-files','--stage','-z'],'worktrees':['worktree','list','--porcelain']}.items(): + actual=git(*args);assert actual==(o/f'before-{label}.txt').read_bytes(),label + (o/f'final-{label}.txt').write_bytes(actual) +status=git('status','--porcelain=v1');(o/'final-status.txt').write_bytes(status) +assert set(line[3:] for line in status.decode().splitlines())==set(owned),status +assert git('diff','--cached','--name-only')==b'' +subprocess.run(['git','--no-optional-locks','diff','--check'],cwd=r,check=True) +diff=git('diff','--binary','--',*owned);(o/'final-source.diff').write_bytes(diff) +installed=json.loads((o/'installed-bindings.json').read_text(encoding='utf-8')) +for x in installed:assert sha((r/x['path']/'package.json').read_bytes())==x['sha256'],x['path'] +source=[binding(r/name,name) for name in sorted(owned)] +for x in source: + dest=o/'source-after'/x['path'];dest.parent.mkdir(parents=True,exist_ok=True);dest.write_bytes((r/x['path']).read_bytes()) +source_digest=sha(json.dumps(source,ensure_ascii=False,sort_keys=True,separators=(',',':')).encode('utf-8')) +links=[] +for target in re.findall(r'\]\(([^)]+)\)',(r/'HANDOFF.md').read_text(encoding='utf-8')): + if re.match(r'https?://',target):continue + dest=(r/target.split('#')[0]).resolve() + assert dest.is_file(),target + links.append({'target':target,'sha256':sha(dest.read_bytes())}) +write('handoff-link-check.json',{'links':links,'chromiumPrerequisite': 'npx playwright install chromium' in (r/'HANDOFF.md').read_text(encoding='utf-8'),'status':'PASS'}) +dist=[binding(f,f.relative_to(r/'dist').as_posix()) for f in sorted((r/'dist').rglob('*')) if f.is_file()] +with zipfile.ZipFile(o/'final-dist.zip') as z: + assert set(z.namelist())=={row['path'] for row in dist} + for row in dist:assert sha(z.read(row['path']))==row['sha256'] +write('final-dist-bindings.json',{'files':dist,'archiveSha256':sha((o/'final-dist.zip').read_bytes()),'rereadAllEntries':True}) +ns={'s':'http://schemas.openxmlformats.org/spreadsheetml/2006/main'} +xml_rows=[] +files=[o/'before/Q3_variance.xlsx',o/'after/Q3_variance.xlsx',o/'after/review-2-Q3_variance.xlsx'] +files+=sorted((o/'browser-suite/results').rglob('review-*.xlsx')) +assert len(files)==7,len(files) +assert len({sha(f.read_bytes()) for f in files})==5 +for f in files: + with zipfile.ZipFile(f) as z: + shared=ET.fromstring(z.read('xl/sharedStrings.xml')) + strings=[''.join(node.itertext()) for node in shared.findall('s:si',ns)] + sheet=ET.fromstring(z.read('xl/worksheets/sheet1.xml')) + values={} + for cell in sheet.findall('.//s:c',ns): + raw=cell.find('s:v',ns) + if raw is None:continue + values[cell.attrib['r']]=strings[int(raw.text)] if cell.attrib.get('t')=='s' else raw.text + labels=[values.get(f'A{i}') for i in range(2,7)] + expected=[None]*5 if f==files[0] else ['Revenue','COGS','Gross profit','OpEx','Net income'] + assert labels==expected,(str(f),labels) + xml_rows.append({'path':f.relative_to(o).as_posix(),'sha256':sha(f.read_bytes()),'accountLabels':labels,'note':values.get('E2'),'xmlCells':values,'scope':'Direct ZIP/XML read; no ExcelJS or native Office'}) +write('raw-workbook-xml-check.json',{'status':'PASS','files':xml_rows}) +commands=[json.loads(f.read_text(encoding='utf-8')) for f in sorted(o.glob('*.command.json'))] +write('final-commands.json',commands) +proof={'schema':'noderoom-desktop-account-worker-freeze/v1','at':datetime.datetime.now(datetime.timezone.utc).isoformat(),'status':'FROZEN_AWAITING_INDEPENDENT_JUDGE','namedProof':'NODEROOM-DESKTOP-ACCOUNT-EXPORT-01','candidate':str(r),'baseCommit':'034a8f963dfa037d860f5364032319506be3e2e0','baseTree':'8fbd0d5d0ca31a71a70c45208ba8a5fd6a64a831','branch':'codex/noderoom-desktop-account-20260905','source':source,'sourceDigest':source_digest,'sourceDigestFormula':"sha256(UTF8(json.dumps(source,ensure_ascii=False,sort_keys=True,separators=(',',':')))); source sorted by path, fields exactly path/bytes/sha256/gitBlobSha1",'diffSha256':sha(diff),'indexSha256':sha((o/'final-index.txt').read_bytes()),'refsSha256':sha((o/'final-refs.txt').read_bytes()),'trackedFilesChecked':len(after),'protectedTrackedFilesUnchanged':len(after)-len(owned),'installedManifestsUnchanged':len(installed),'finalDistFiles':len(dist),'handoffLinksVerified':len(links),'sourceIndexRefsUnchangedExceptOwnedWorkingBytes':True,'staged':False,'committed':False,'pushed':False,'runtimeSourceDelta':'Exactly two __account to __label lookups; no other application source change','results':{'finalAffectedTests':{'files':3,'passed':10},'browserSuite':{'passed':3,'failed':0,'skipped':0,'flaky':0},'matchedBeforeAfter':{'labelsChanged':5,'otherCellValuesPreserved':25,'allCellStylesPreserved':30,'laterNotePreserved':True,'earlierFileUnchanged':True},'knockout':{'failed':2,'passed':4,'exactSourceRestored':True},'rawXmlFilesVerified':7,'uniqueWorkbookPayloads':5,'normalBuild':'PASS','convexTypecheck':'PASS','designAudit':'PASS','diffCheck':'PASS'},'limitations':['No full floor/prod suite rerun; existing native Office deadline and notebook failures remain open. No timeout/skip/config change.','Current and sibling component scenarios mock only download dispatch and serialize real workbooks. Sibling case is a typed fixture; actual browser journey proves current canonical sheet.','Actual screenshot viewport1440x960 with fallback fonts; no full responsive/accessibility/performance grade.','Build stamp identifies merged base; working source hashes bind this uncommitted candidate.','Earlier fixture/type errors and all failures retained; final source-bound knockout supplies exact current fixture causal proof.','Initial after-source binding writer used nonexistent export path and wrote no output. Corrected receipt was written after the browser; unchanged runtime/test hashes independently match pre-build normalization and custody.','No local/ignored environment contents, providers, COM/native Office, deployment, hooks, original4173/4174 actions. Public tracked environment examples were hash-only custody inputs, as corrected in the preserved addendum.'],'grades':{'visual':None,'responsive':None,'interaction':None,'performance':None,'production':None}} +write('freeze.json',proof) +manifest=[binding(f,f.relative_to(o).as_posix()) for f in sorted(o.rglob('*')) if f.is_file() and f.name!='manifest.json'] +write('manifest.json',{'schema':'operator-evidence-manifest/v1','files':manifest,'selfExcluded':True}) +receipt={'freeze':f'{o.name}/freeze.json','freezeSha256':sha((o/'freeze.json').read_bytes()),'manifest':f'{o.name}/manifest.json','manifestSha256':sha((o/'manifest.json').read_bytes()),'artifactCount':len(manifest),**proof} +(p/'E6f_NODEROOM_DESKTOP_ACCOUNT_REPAIR_RECEIPT.json').write_text(json.dumps(receipt,ensure_ascii=False,indent=2)+'\n',encoding='utf-8',newline='\n') +print(json.dumps({'sourceDigest':source_digest,'freezeSha256':receipt['freezeSha256'],'manifestSha256':receipt['manifestSha256'],'artifactCount':len(manifest),'protected':len(after)-4,'dist':len(dist)},indent=2)) diff --git a/evidence/desktop-account-20260905/operator/freeze.json b/evidence/desktop-account-20260905/operator/freeze.json new file mode 100644 index 00000000..cd2c8b75 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/freeze.json @@ -0,0 +1,97 @@ +{ + "schema": "noderoom-desktop-account-worker-freeze/v1", + "at": "2026-09-05T16:56:02.957564+00:00", + "status": "FROZEN_AWAITING_INDEPENDENT_JUDGE", + "namedProof": "NODEROOM-DESKTOP-ACCOUNT-EXPORT-01", + "candidate": "D:\\VSCode Projects\\cafecorner_nodebench\\nodebench_ai4\\.portfolio-worktrees\\noderoom-current-consumer-20260905", + "baseCommit": "034a8f963dfa037d860f5364032319506be3e2e0", + "baseTree": "8fbd0d5d0ca31a71a70c45208ba8a5fd6a64a831", + "branch": "codex/noderoom-desktop-account-20260905", + "source": [ + { + "path": "HANDOFF.md", + "bytes": 12495, + "sha256": "863cf1d6dc6a02b1a0cbfc547603164f60511face20a96f89592cdb4729a8035", + "gitBlobSha1": "49706cb18d223f12c4f0b1ad116e6f95f493801e" + }, + { + "path": "e2e/excel-grid.spec.ts", + "bytes": 10117, + "sha256": "a0f13b4194018d14b918dc90de827bce5969730b2b10bcb4ed611db6a4333f73", + "gitBlobSha1": "e9b9be5756c193dda6523dcab1fad7543b89b982" + }, + { + "path": "src/ui/panels/Artifact.tsx", + "bytes": 230374, + "sha256": "013064b20f5fea117e2e8b96755d2d93fce490e9eb5f6845b1b1cd6f386b07a0", + "gitBlobSha1": "37dac53ca1f89fb671db075898603bcdcb3ab796" + }, + { + "path": "tests/artifactXlsxExport.test.ts", + "bytes": 9444, + "sha256": "3c48be964ca1c7e5083801d7875bc8a74f075f38e56fcab3e621e799b6ffc136", + "gitBlobSha1": "424266f4a1225c11bdd66b381d3089990ca6376b" + } + ], + "sourceDigest": "c4484a6d673c6ae4a43a4e2ebbe1ce94a2903a9e8e74a6c02a5212f30180c4d1", + "sourceDigestFormula": "sha256(UTF8(json.dumps(source,ensure_ascii=False,sort_keys=True,separators=(',',':')))); source sorted by path, fields exactly path/bytes/sha256/gitBlobSha1", + "diffSha256": "e17642f2b102c50cafd5aeb2ca9143b315e8a924bd88da7fc107b837218e62cf", + "indexSha256": "08be2cca888379e88a875ff7df9269c1a4eafde9fc6c13cf9c002df7b8945425", + "refsSha256": "f07794386fdccb054b31c01567fd46458101cff69033c65a5c3125485eeb63df", + "trackedFilesChecked": 7512, + "protectedTrackedFilesUnchanged": 7508, + "installedManifestsUnchanged": 37, + "finalDistFiles": 475, + "handoffLinksVerified": 5, + "sourceIndexRefsUnchangedExceptOwnedWorkingBytes": true, + "staged": false, + "committed": false, + "pushed": false, + "runtimeSourceDelta": "Exactly two __account to __label lookups; no other application source change", + "results": { + "finalAffectedTests": { + "files": 3, + "passed": 10 + }, + "browserSuite": { + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + "matchedBeforeAfter": { + "labelsChanged": 5, + "otherCellValuesPreserved": 25, + "allCellStylesPreserved": 30, + "laterNotePreserved": true, + "earlierFileUnchanged": true + }, + "knockout": { + "failed": 2, + "passed": 4, + "exactSourceRestored": true + }, + "rawXmlFilesVerified": 7, + "uniqueWorkbookPayloads": 5, + "normalBuild": "PASS", + "convexTypecheck": "PASS", + "designAudit": "PASS", + "diffCheck": "PASS" + }, + "limitations": [ + "No full floor/prod suite rerun; existing native Office deadline and notebook failures remain open. No timeout/skip/config change.", + "Current and sibling component scenarios mock only download dispatch and serialize real workbooks. Sibling case is a typed fixture; actual browser journey proves current canonical sheet.", + "Actual screenshot viewport1440x960 with fallback fonts; no full responsive/accessibility/performance grade.", + "Build stamp identifies merged base; working source hashes bind this uncommitted candidate.", + "Earlier fixture/type errors and all failures retained; final source-bound knockout supplies exact current fixture causal proof.", + "Initial after-source binding writer used nonexistent export path and wrote no output. Corrected receipt was written after the browser; unchanged runtime/test hashes independently match pre-build normalization and custody.", + "No local/ignored environment contents, providers, COM/native Office, deployment, hooks, original4173/4174 actions. Public tracked environment examples were hash-only custody inputs, as corrected in the preserved addendum." + ], + "grades": { + "visual": null, + "responsive": null, + "interaction": null, + "performance": null, + "production": null + } +} diff --git a/evidence/desktop-account-20260905/operator/freeze.py.txt b/evidence/desktop-account-20260905/operator/freeze.py.txt new file mode 100644 index 00000000..5615d601 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/freeze.py.txt @@ -0,0 +1,82 @@ +from pathlib import Path +import datetime, hashlib, json, re, subprocess, zipfile +import xml.etree.ElementTree as ET + +o=Path(__file__).parent +p=o.parent +r=Path('D:/VSCode Projects/cafecorner_nodebench/nodebench_ai4/.portfolio-worktrees/noderoom-current-consumer-20260905') +sha=lambda b:hashlib.sha256(b).hexdigest() +def write(name,value): + (o/name).write_text(json.dumps(value,ensure_ascii=False,indent=2)+'\n',encoding='utf-8',newline='\n') +def git(*args):return subprocess.check_output(['git','--no-optional-locks',*args],cwd=r) +def binding(path,relative): + assert not path.is_symlink() and not (path.stat().st_file_attributes & 1024), relative + b=path.read_bytes() + return {'path':relative,'bytes':len(b),'sha256':sha(b),'gitBlobSha1':hashlib.sha1(b'blob '+str(len(b)).encode()+b'\0'+b).hexdigest()} +owned=['src/ui/panels/Artifact.tsx','tests/artifactXlsxExport.test.ts','e2e/excel-grid.spec.ts','HANDOFF.md'] +for name in owned:assert b'\r\n' not in (r/name).read_bytes(),name +for row in json.loads((o/'source-normalization.json').read_text(encoding='utf-8')): + assert sha((r/row['path']).read_bytes())==row['afterSha256'],row['path'] +before=json.loads((o/'before-tracked-bindings.json').read_text(encoding='utf-8')) +after=[binding(r/x['path'],x['path']) for x in before] +changed=[a['path'] for a,b in zip(after,before) if a['sha256']!=b['sha256']] +assert set(changed)==set(owned),changed +write('after-tracked-bindings.json',after) +for label,args in {'head':['rev-parse','HEAD','HEAD^{tree}'],'refs':['for-each-ref','--format=%(refname) %(objectname)'],'index':['ls-files','--stage','-z'],'worktrees':['worktree','list','--porcelain']}.items(): + actual=git(*args);assert actual==(o/f'before-{label}.txt').read_bytes(),label + (o/f'final-{label}.txt').write_bytes(actual) +status=git('status','--porcelain=v1');(o/'final-status.txt').write_bytes(status) +assert set(line[3:] for line in status.decode().splitlines())==set(owned),status +assert git('diff','--cached','--name-only')==b'' +subprocess.run(['git','--no-optional-locks','diff','--check'],cwd=r,check=True) +diff=git('diff','--binary','--',*owned);(o/'final-source.diff').write_bytes(diff) +installed=json.loads((o/'installed-bindings.json').read_text(encoding='utf-8')) +for x in installed:assert sha((r/x['path']/'package.json').read_bytes())==x['sha256'],x['path'] +source=[binding(r/name,name) for name in sorted(owned)] +for x in source: + dest=o/'source-after'/x['path'];dest.parent.mkdir(parents=True,exist_ok=True);dest.write_bytes((r/x['path']).read_bytes()) +source_digest=sha(json.dumps(source,ensure_ascii=False,sort_keys=True,separators=(',',':')).encode('utf-8')) +links=[] +for target in re.findall(r'\]\(([^)]+)\)',(r/'HANDOFF.md').read_text(encoding='utf-8')): + if re.match(r'https?://',target):continue + dest=(r/target.split('#')[0]).resolve() + assert dest.is_file(),target + links.append({'target':target,'sha256':sha(dest.read_bytes())}) +write('handoff-link-check.json',{'links':links,'chromiumPrerequisite': 'npx playwright install chromium' in (r/'HANDOFF.md').read_text(encoding='utf-8'),'status':'PASS'}) +dist=[] +with zipfile.ZipFile(o/'final-dist.zip','x',compression=zipfile.ZIP_DEFLATED) as z: + for f in sorted((r/'dist').rglob('*')): + if not f.is_file():continue + row=binding(f,f.relative_to(r/'dist').as_posix());dist.append(row);z.writestr(row['path'],f.read_bytes()) +with zipfile.ZipFile(o/'final-dist.zip') as z: + for row in dist:assert sha(z.read(row['path']))==row['sha256'] +write('final-dist-bindings.json',{'files':dist,'archiveSha256':sha((o/'final-dist.zip').read_bytes()),'rereadAllEntries':True}) +ns={'s':'http://schemas.openxmlformats.org/spreadsheetml/2006/main'} +xml_rows=[] +files=[o/'before/Q3_variance.xlsx',o/'after/Q3_variance.xlsx',o/'after/review-2-Q3_variance.xlsx'] +files+=sorted((o/'browser-suite/results').rglob('review-*.xlsx')) +assert len(files)==5,len(files) +for f in files: + with zipfile.ZipFile(f) as z: + shared=ET.fromstring(z.read('xl/sharedStrings.xml')) + strings=[''.join(node.itertext()) for node in shared.findall('s:si',ns)] + sheet=ET.fromstring(z.read('xl/worksheets/sheet1.xml')) + values={} + for cell in sheet.findall('.//s:c',ns): + raw=cell.find('s:v',ns) + if raw is None:continue + values[cell.attrib['r']]=strings[int(raw.text)] if cell.attrib.get('t')=='s' else raw.text + labels=[values.get(f'A{i}') for i in range(2,7)] + expected=[None]*5 if f==files[0] else ['Revenue','COGS','Gross profit','OpEx','Net income'] + assert labels==expected,(str(f),labels) + xml_rows.append({'path':f.relative_to(o).as_posix(),'sha256':sha(f.read_bytes()),'accountLabels':labels,'note':values.get('E2'),'xmlCells':values,'scope':'Direct ZIP/XML read; no ExcelJS or native Office'}) +write('raw-workbook-xml-check.json',{'status':'PASS','files':xml_rows}) +commands=[json.loads(f.read_text(encoding='utf-8')) for f in sorted(o.glob('*.command.json'))] +write('final-commands.json',commands) +proof={'schema':'noderoom-desktop-account-worker-freeze/v1','at':datetime.datetime.now(datetime.timezone.utc).isoformat(),'status':'FROZEN_AWAITING_INDEPENDENT_JUDGE','namedProof':'NODEROOM-DESKTOP-ACCOUNT-EXPORT-01','candidate':str(r),'baseCommit':'034a8f963dfa037d860f5364032319506be3e2e0','baseTree':'8fbd0d5d0ca31a71a70c45208ba8a5fd6a64a831','branch':'codex/noderoom-desktop-account-20260905','source':source,'sourceDigest':source_digest,'sourceDigestFormula':"sha256(UTF8(json.dumps(source,ensure_ascii=False,sort_keys=True,separators=(',',':')))); source sorted by path, fields exactly path/bytes/sha256/gitBlobSha1",'diffSha256':sha(diff),'indexSha256':sha((o/'final-index.txt').read_bytes()),'refsSha256':sha((o/'final-refs.txt').read_bytes()),'trackedFilesChecked':len(after),'protectedTrackedFilesUnchanged':len(after)-len(owned),'installedManifestsUnchanged':len(installed),'finalDistFiles':len(dist),'handoffLinksVerified':len(links),'sourceIndexRefsUnchangedExceptOwnedWorkingBytes':True,'staged':False,'committed':False,'pushed':False,'runtimeSourceDelta':'Exactly two __account to __label lookups; no other application source change','results':{'finalAffectedTests':{'files':3,'passed':10},'browserSuite':{'passed':3,'failed':0,'skipped':0,'flaky':0},'matchedBeforeAfter':{'labelsChanged':5,'otherCellValuesPreserved':25,'allCellStylesPreserved':30,'laterNotePreserved':True,'earlierFileUnchanged':True},'knockout':{'failed':2,'passed':4,'exactSourceRestored':True},'rawXmlFilesVerified':5,'normalBuild':'PASS','convexTypecheck':'PASS','designAudit':'PASS','diffCheck':'PASS'},'limitations':['No full floor/prod suite rerun; existing native Office deadline and notebook failures remain open. No timeout/skip/config change.','Current and sibling component scenarios mock only download dispatch and serialize real workbooks. Sibling case is a typed fixture; actual browser journey proves current canonical sheet.','Actual screenshot viewport1440x960 with fallback fonts; no full responsive/accessibility/performance grade.','Build stamp identifies merged base; working source hashes bind this uncommitted candidate.','Earlier fixture/type errors and all failures retained; final source-bound knockout supplies exact current fixture causal proof.','Initial after-source binding writer used nonexistent export path and wrote no output. Corrected receipt was written after the browser; unchanged runtime/test hashes independently match pre-build normalization and custody.','No local/ignored environment contents, providers, COM/native Office, deployment, hooks, original4173/4174 actions. Public tracked environment examples were hash-only custody inputs, as corrected in the preserved addendum.'],'grades':{'visual':None,'responsive':None,'interaction':None,'performance':None,'production':None}} +write('freeze.json',proof) +manifest=[binding(f,f.relative_to(o).as_posix()) for f in sorted(o.rglob('*')) if f.is_file() and f.name!='manifest.json'] +write('manifest.json',{'schema':'operator-evidence-manifest/v1','files':manifest,'selfExcluded':True}) +receipt={'freeze':f'{o.name}/freeze.json','freezeSha256':sha((o/'freeze.json').read_bytes()),'manifest':f'{o.name}/manifest.json','manifestSha256':sha((o/'manifest.json').read_bytes()),'artifactCount':len(manifest),**proof} +(p/'E6f_NODEROOM_DESKTOP_ACCOUNT_REPAIR_RECEIPT.json').write_text(json.dumps(receipt,ensure_ascii=False,indent=2)+'\n',encoding='utf-8',newline='\n') +print(json.dumps({'sourceDigest':source_digest,'freezeSha256':receipt['freezeSha256'],'manifestSha256':receipt['manifestSha256'],'artifactCount':len(manifest),'protected':len(after)-4,'dist':len(dist)},indent=2)) diff --git a/evidence/desktop-account-20260905/operator/handoff-link-check.json b/evidence/desktop-account-20260905/operator/handoff-link-check.json new file mode 100644 index 00000000..ce88be95 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/handoff-link-check.json @@ -0,0 +1,26 @@ +{ + "links": [ + { + "target": "evidence/mobile-current-xlsx-20260905/README.md", + "sha256": "7b51cfde32265cbdfa35df4eabc87f121be28bd37a41e5005e9b335f8da3e635" + }, + { + "target": "evidence/mobile-current-xlsx-20260905/reports/E6f_NODEROOM_MOBILE_EXPORT_FINAL_JUDGE.json", + "sha256": "a3d2b9e6f0c032496589c3ef6046955627360f47f06a01acf8949548653aecca" + }, + { + "target": "evidence/shared-dependencies-20260905/README.md", + "sha256": "81b1f04c43b6e1a020e6175f0753e7e4cca0340648c3c8b180113b40c3559df1" + }, + { + "target": "evidence/shared-dependencies-20260905/review/E6f_NODEROOM_SHARED_DEPENDENCY_FINAL_JUDGE.md", + "sha256": "a186cc162c1680f92f44c90545b1430f49ab02f4af851f9f4dbd907353a63b24" + }, + { + "target": "evidence/shared-dependencies-20260905/review/E6f_NODEROOM_DEPENDENCY_PACKAGE_ENCODING_ADDENDUM.md", + "sha256": "7b6c58557a0b06ba731b61a9efd4a9de70b281b63aba0f1a15f4762fcf01a686" + } + ], + "chromiumPrerequisite": true, + "status": "PASS" +} diff --git a/evidence/desktop-account-20260905/operator/installed-bindings.json b/evidence/desktop-account-20260905/operator/installed-bindings.json new file mode 100644 index 00000000..db7766e5 --- /dev/null +++ b/evidence/desktop-account-20260905/operator/installed-bindings.json @@ -0,0 +1,261 @@ +[ + { + "path": "node_modules/@playwright/test", + "version": "1.60.0", + "lockVersion": "1.60.0", + "matches": true, + "sha256": "cf92117ef1d8cbf1e4b2dffb63a0da552c0173bd6052f0f45711c0f00b79dc99" + }, + { + "path": "node_modules/@tiptap/core", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "0e0b59d6d7ded46195964e5a3ae428c827b2f299bd0c8604fee59faea99cf1d7" + }, + { + "path": "node_modules/@tiptap/extension-blockquote", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "b8303496807f4bfe7df8037e63ee8508486ebb44ea20bab722f4e62633b426aa" + }, + { + "path": "node_modules/@tiptap/extension-bold", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "2fcc14cbe39b68f3e6e8567fc5de30b80f97e79adb16c2660a590cce9e3a1eb4" + }, + { + "path": "node_modules/@tiptap/extension-bubble-menu", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "8b3d3616403ca1b0f10ef29c5e0fb9022886d2ca0663999094e8fa32f783ca3a" + }, + { + "path": "node_modules/@tiptap/extension-bullet-list", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "4bd17d9bf635be0fee08741343be24a50d5b15d02948fa27b6ad51a6472f8184" + }, + { + "path": "node_modules/@tiptap/extension-code", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "d9aafb2643ec245e45d7dad289c131a91c67679f51d0c78767a83aadac19c295" + }, + { + "path": "node_modules/@tiptap/extension-code-block", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "957e218308973e40c3093ce39c0cd053977c7b03aac1149cea413f39aff9c1bf" + }, + { + "path": "node_modules/@tiptap/extension-document", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "6b87765e06756ba572faecfcb042428fa834336e04df9c3bb402fa8b8e4dda43" + }, + { + "path": "node_modules/@tiptap/extension-dropcursor", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "1c864f76de7547f2df193a8b3cad4d5ce440bbd491833bfdd36ebfdb7d2872ab" + }, + { + "path": "node_modules/@tiptap/extension-floating-menu", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "3aabd7a3acba5a164eb1ea8f3a17d7d3be64d888178e072ff28284d8c91158e2" + }, + { + "path": "node_modules/@tiptap/extension-gapcursor", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "48c69af5b8a027ce1ea7436870d8b36c04c8d961c70c54318fa1485e5d6e07fe" + }, + { + "path": "node_modules/@tiptap/extension-hard-break", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "58a8bcd82e570a4d68c384e13fa8045d3fca9d5c9bb0ca380b6b883471524668" + }, + { + "path": "node_modules/@tiptap/extension-heading", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "a166bb467d3296548b30b5db2abf67596ceef203c9803f13b203a98e7fa29488" + }, + { + "path": "node_modules/@tiptap/extension-horizontal-rule", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "e3fa8b75efdb590943c99e4a4c91dead59ae235401b7b2b360d194e1ee9c2f3b" + }, + { + "path": "node_modules/@tiptap/extension-italic", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "11d6cbbfd44e49492bcad3c92e152cca6611e54d400242ce6fe82403e37ae17c" + }, + { + "path": "node_modules/@tiptap/extension-link", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "91e71e52b646aea3013806bdb254a0a22c3119bbbd1bbe6b13770cd7ab02c1df" + }, + { + "path": "node_modules/@tiptap/extension-list", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "59f5a20e324beeeece805cf303d87fa51b9a6b09a109ba974c56ec3bc846d69b" + }, + { + "path": "node_modules/@tiptap/extension-list-item", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "5fd88d20f7d8792ae1a347c20efbe9492a69ca1df62ef09dc636314951b77203" + }, + { + "path": "node_modules/@tiptap/extension-list-keymap", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "67b2905ddbbe5d45ec73769630f8f1edaf68ac681e00b3fb5f50fb42f2a7077b" + }, + { + "path": "node_modules/@tiptap/extension-ordered-list", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "b21a3a356df615a68bc4bc5f886494df1e94008f1135dea284974b9625e704f2" + }, + { + "path": "node_modules/@tiptap/extension-paragraph", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "abce5776cd6196bcbdb7c7322a8db3ccff38250f6e0d37c41a6cd7dc6d64909c" + }, + { + "path": "node_modules/@tiptap/extension-strike", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "c735294726d2eab7c8823bc3a5601b32e86e187400602367983e2014229be9d6" + }, + { + "path": "node_modules/@tiptap/extension-text", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "72f22c816486cfdd940719154c658c9e80ce4c368b22c19b80de73c2064eee72" + }, + { + "path": "node_modules/@tiptap/extension-underline", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "3611d005dd367b58293eb4600aa0f2178e926b67961a4d66a8c31525f861c92e" + }, + { + "path": "node_modules/@tiptap/extension-unique-id", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "d9008469c07889bfa5a5b713b349c7e9b96fbe343ba952b49502fb45d69af031" + }, + { + "path": "node_modules/@tiptap/extension-unique-id/node_modules/uuid", + "version": "14.0.1", + "lockVersion": "14.0.1", + "matches": true, + "sha256": "c799ba49b586a7205ed6c0b6c1b06052118f6d0ed98cdad46af3f682658d5758" + }, + { + "path": "node_modules/@tiptap/extensions", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "5c2cb635ca8515d8adb0ad6414a5e83cf49d46f704cbacf4fe1e5086f5aa5137" + }, + { + "path": "node_modules/@tiptap/html", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "c3e2efcd77ff322ff465ca019b62cbe50765f90daa0883346a3480692d8af89f" + }, + { + "path": "node_modules/@tiptap/pm", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "97a8ec8da97929c8c2a1433bed564b7c3160a348e93839066e503bc0a2bd6e2f" + }, + { + "path": "node_modules/@tiptap/react", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "c66fb1c16926d3b1bd2de389990078ae255a1a4858fec9ed763856142f307572" + }, + { + "path": "node_modules/@tiptap/starter-kit", + "version": "3.30.4", + "lockVersion": "3.30.4", + "matches": true, + "sha256": "20b6692bdbd441d5fe4f8e0263397e5fd665eb83b253b8e951e1db41f788fcca" + }, + { + "path": "node_modules/exceljs", + "version": "4.4.0", + "lockVersion": "4.4.0", + "matches": true, + "sha256": "3f81d65b7244dbd7407c9d6d706877c123c2740f4667f09e059148c898455486" + }, + { + "path": "node_modules/playwright", + "version": "1.60.0", + "lockVersion": "1.60.0", + "matches": true, + "sha256": "8be9edc5642a8c761b677e7af8b9937f36c0443a91e14765877716d70034e5bf" + }, + { + "path": "node_modules/prosemirror-model", + "version": "1.25.11", + "lockVersion": "1.25.11", + "matches": true, + "sha256": "a02b6388308d718ccaa125a0359b615e33119eab8f9b7b7e2475099afabc6af3" + }, + { + "path": "node_modules/prosemirror-view", + "version": "1.41.9", + "lockVersion": "1.41.9", + "matches": true, + "sha256": "fe038d20d51fd3f06fbdfc43035e6eb2ed485fa772d499fb87c82d4498269798" + }, + { + "path": "node_modules/vite", + "version": "6.4.3", + "lockVersion": "6.4.3", + "matches": true, + "sha256": "a1d0149fd986fd34b6d35503d2c0d8d9f743c4dbaaf94fbc11812bc84b05884d" + } +] diff --git a/evidence/desktop-account-20260905/operator/knockout-final-Artifact.tsx.txt b/evidence/desktop-account-20260905/operator/knockout-final-Artifact.tsx.txt new file mode 100644 index 00000000..37dac53c --- /dev/null +++ b/evidence/desktop-account-20260905/operator/knockout-final-Artifact.tsx.txt @@ -0,0 +1,4343 @@ +/** + * ArtifactPanel — tabs + Shared tag · spreadsheet (CAS) · TipTap note + * · dnd-kit wall · Room trace. Reads + writes through `useStore()`, so the same + * component renders the in-memory engine OR live Convex (optimistic edits). + */ + +import { Fragment, Suspense, lazy, useEffect, useMemo, useRef, useState, type CSSProperties, type ReactNode } from "react"; +import { useEditor, useCurrentEditor, EditorContent, EditorProvider } from "@tiptap/react"; +import { Extension, type Editor } from "@tiptap/core"; +import { Plugin, PluginKey } from "@tiptap/pm/state"; +import { Decoration, DecorationSet } from "@tiptap/pm/view"; +import type { Node as PmDocNode } from "@tiptap/pm/model"; +import { useQuery, useMutation } from "convex/react"; +import type { FunctionReference } from "convex/server"; +import "./artifact-receipts.css"; +import "./notebook-paper.css"; +import { useTiptapSync } from "@convex-dev/prosemirror-sync/tiptap"; +import { NOTEBOOK_EXTENSIONS } from "../../notebook/extensions"; +import { api } from "../../../convex/_generated/api"; +import { + Table2, FileText, StickyNote, Users, GitMerge, RotateCcw, History, Search, BookOpen, Home, ListChecks, + Lock, Unlock, Ban, Pencil, Plus, Check, AlertTriangle, Eye, Circle, ChevronRight, ChevronDown, Download, Trash2, Undo2, X, Columns2, MoreHorizontal, Mail, Hash, Layers, Linkedin, Activity, Share2, Clock3, type LucideIcon, + Sparkles, Folder, Briefcase, Package, File as FileIcon, +} from "lucide-react"; +import { useStore, type ActorProof, type RoomStore, type EditFeedback, type PresenceClaim } from "../../app/store"; +import { columnLetters } from "../../app/spreadsheetIndex"; +import { onStageFocus, focusStage, type StageFocusTarget } from "../stageFocus"; +import { TodaysBrief } from "./TodaysBrief"; +import { classifyEvidence } from "../traceLens/evidence"; +import type { Actor, Artifact as Art, CellEvidence, CellPayload, DataframeColumn, DocumentParseMeta, ExcelCellStyle, Proposal, TraceEvent, ResearchRowInput } from "../../engine/types"; +import { normalizeSpreadsheetFontColor, spreadsheetFontColorToCss } from "../../shared/spreadsheetFontColor"; +import { AttentionOverlay } from "../overlay/AttentionOverlay"; +import { createSpreadsheetResolver } from "../overlay/spreadsheetResolver"; +import { focusBoxesForSheet, type SheetCellState } from "../overlay/focusBoxesForSheet"; +import { OPT_ARTIFACT_PREFIX, optimisticArtifactIdentity } from "../openRoomReference"; +import { ladderFor, LADDER_MEMBER_CAP, type LadderResult } from "../presenceLadder"; +import { prepareDownstreamDrafts, type PreparedDownstreamDraft } from "../../nodeagent/skills/integration/downstreamPublish"; +import { + buildInvestigationLaunchIntentV1, + buildInvestigationWorkspaceV1, +} from "../../nodeagent/investigation"; +import { isWorkbookPreviewDoc, workbookPreviewArtifactFromDataUrl } from "./workbookFilePreview"; +import { isOfficePreviewDoc, officePreviewFromDataUrl, type OfficePreview } from "./officeFilePreview"; +import { RoomHome } from "../room/RoomHome"; +import { buildNotebookPatchDiff, notebookPatchValueText, type NotebookPatchDiff } from "../workArtifacts/notebookPatchDiff"; +import { HoverCard, HoverCardContent, HoverCardTrigger } from "../../components/ui/hover-card"; +import { Popover, PopoverContent, PopoverTrigger } from "../../components/ui/popover"; +import { ScrollArea } from "../../components/ui/scroll-area"; +import { isCollaborativeDeckArtifact } from "../workArtifacts/collaborativeDeck"; +import { onOpenWorkArtifactsReview } from "../workArtifacts/workArtifactsNavigation"; +import { NodeBookArtifactElementSurface } from "../../notebook/NodeBookArtifactElementSurface"; +import { NodeRoomNodeBookWorkspaceSurface } from "../../notebook/NodeBookWorkspaceSurface"; +import { downloadXlsxWorkbook, type XlsxDownloadReceipt } from "../workArtifacts/xlsxDownload"; + +async function runAuthorizedInvestigationResearch(store: RoomStore, roomId: string): Promise { + if ( + store.mode === "convex" && + typeof window !== "undefined" && + !window.confirm("Allow this investigation run to retrieve public sources for the exact current Company research dataset?") + ) { + return; + } + const workspace = buildInvestigationWorkspaceV1({ + roomId, + artifacts: store.listArtifacts(roomId), + traces: store.listTraces(roomId), + sessions: store.listSessions(roomId), + }); + if (!workspace.plan || !workspace.dataset || !workspace.validation.valid) { + throw new Error("investigation_plan_unavailable"); + } + await store.askResearch(buildInvestigationLaunchIntentV1({ + plan: workspace.plan, + dataset: workspace.dataset, + })); +} + +const TraceSurface = lazy(() => import("./TraceSurface").then((m) => ({ default: m.TraceSurface }))); +const KnowledgeGraph = lazy(() => import("./KnowledgeGraph").then((m) => ({ default: m.KnowledgeGraph }))); +const WorkArtifactsPanel = lazy(() => import("../workArtifacts/WorkArtifactsPanel").then((m) => ({ default: m.WorkArtifactsPanel }))); +const InvestigationSurface = lazy(() => import("../investigation/InvestigationReport").then((m) => ({ default: m.InvestigationSurface }))); + +/** Downstream handoff destinations → compact icon + short label (replaces 5 wide ghost buttons). */ +const HANDOFF_ICONS: Record = { gmail: Mail, notion: FileText, slack: Hash, linear: Layers, linkedin: Linkedin }; +const HANDOFF_SHORT: Record = { gmail: "Gmail", notion: "Notion", slack: "Slack", linear: "Linear", linkedin: "LinkedIn" }; + +const WIKI_TITLE = "Agent wiki"; +const RESEARCH_TITLE = "Company research"; +const BRIEF_TITLE = "Today's Brief"; +const MAX_OPEN_TABS = 12; // BOUND: cap open work-surface tabs (agent loops can churn artifacts); evict oldest. +const MAX_VISIBLE_FILE_TABS = 2; +const GENERIC_SHEET_CELL_WINDOW = 5_000; +const SCALE_SHEET_RENDER_WINDOW = 23; +/** Fixed row height (px) the generic/scale sheet renders at default density — the single + * source of truth for scroll-driven windowing. Kept in lockstep with + * `.r-sheet[data-sheet-kind="generic"] td.r-cell { height: 44px }` in styles.css. */ +export const SCALE_SHEET_ROW_PX = 44; +/** Rows rendered above/below the visible band so a fast scroll never flashes blank rows. */ +export const SCALE_SHEET_OVERSCAN = 8; + +export type RowWindow = { + /** First row index rendered (inclusive, 0-based) — after overscan + clamping. */ + start: number; + /** One past the last row index rendered (exclusive, 0-based). */ + end: number; + /** Spacer height (px) standing in for the [0, start) rows that are NOT mounted. */ + topPad: number; + /** Spacer height (px) standing in for the [end, totalRows) rows that are NOT mounted. */ + bottomPad: number; + /** True when `focusedIndex` falls OUTSIDE [start, end) and must be pinned (mounted separately). */ + focusedPinned: boolean; +}; + +/** + * computeRowWindow — pure scroll-driven windowing math for the generic/scale sheet. + * + * Given the scroll offset + viewport height (px), the total row count, and an optional + * focused row index, returns the half-open render window [start, end) plus the top/bottom + * spacer heights that keep the scrollbar honest for the un-mounted rows. The visible band is + * [floor(scrollTop / ROW), ceil((scrollTop + viewport) / ROW)); we pad it by OVERSCAN rows on + * each side and clamp to [0, totalRows]. A focused row outside the window is reported via + * `focusedPinned` so the caller can keep it mounted (agent/QA focus must never scroll away). + * + * O(1): the result depends only on the four scalars, never on totalRows magnitude — 100k or + * 100M rows cost the same. Pure + deterministic: same inputs → same window. + */ +export function computeRowWindow( + scrollTop: number, + viewportPx: number, + totalRows: number, + focusedIndex: number | null = null, + rowPx: number = SCALE_SHEET_ROW_PX, + overscan: number = SCALE_SHEET_OVERSCAN, +): RowWindow { + const total = Math.max(0, Math.floor(totalRows)); + const row = rowPx > 0 ? rowPx : SCALE_SHEET_ROW_PX; + // Guard against negative/NaN scroll (elastic overscroll, jsdom 0-height layout). + const top = Number.isFinite(scrollTop) && scrollTop > 0 ? scrollTop : 0; + const view = Number.isFinite(viewportPx) && viewportPx > 0 ? viewportPx : 0; + const firstVisible = Math.floor(top / row); + const lastVisible = Math.ceil((top + view) / row); + const start = Math.max(0, Math.min(total, firstVisible - overscan)); + const end = Math.max(start, Math.min(total, lastVisible + overscan)); + const topPad = start * row; + const bottomPad = Math.max(0, (total - end) * row); + const focusedPinned = + focusedIndex !== null && focusedIndex >= 0 && focusedIndex < total && (focusedIndex < start || focusedIndex >= end); + return { start, end, topPad, bottomPad, focusedPinned }; +} + +const BLANK_SHEET_ROWS = 12; +const BLANK_SHEET_COLUMNS = ["A", "B", "C", "D", "E", "F", "G", "H"] as const; +type TabId = "wiki" | "brief" | "sheet" | "research" | "note" | "wall"; +type SheetStatusFilter = "any" | "complete" | "enriching" | "pending" | "needs_review" | "failed"; +const SHEET_STATUS_FILTERS: SheetStatusFilter[] = ["any", "complete", "enriching", "pending", "needs_review", "failed"]; +const TABS: { id: TabId; label: string; Icon: LucideIcon }[] = [ + { id: "wiki", label: "Wiki", Icon: BookOpen }, + { id: "brief", label: "Brief", Icon: ListChecks }, + { id: "sheet", label: "Spreadsheet", Icon: Table2 }, + { id: "research", label: "Research", Icon: Search }, + { id: "note", label: "Note", Icon: FileText }, + { id: "wall", label: "Wall", Icon: StickyNote }, +]; +function ArtifactSurface({ roomId, me, proof, artId, onArt, style, surfaceKey = "primary", headerExtra, openIds, onCloseArtifact, onOpenChat }: { + roomId: string; me: Actor; artId: string; onArt: (id: string) => void; + proof?: ActorProof; + style?: CSSProperties; + surfaceKey?: "primary" | "secondary"; + headerExtra?: ReactNode; + openIds?: string[]; + onCloseArtifact?: (id: string) => void; + onOpenChat?: () => void; +}) { + const store = useStore(); + const arts = store.listArtifacts(roomId); + const selected = arts.find((a) => a.id === artId); + const wiki = selected?.kind === "note" && selected.title === WIKI_TITLE ? selected : arts.find((a) => a.title === WIKI_TITLE); + const brief = selected?.kind === "note" && selected.title === BRIEF_TITLE ? selected : arts.find((a) => a.title === BRIEF_TITLE); + const research = selected?.title === RESEARCH_TITLE ? selected : arts.find((a) => a.title === RESEARCH_TITLE); + const varianceSheet = arts.find((a) => a.kind === "sheet" && a.title === "Q3 variance") ?? arts.find((a) => a.kind === "sheet" && a.title !== RESEARCH_TITLE); + const sheet = selected?.kind === "sheet" && selected.title !== RESEARCH_TITLE ? selected : varianceSheet; + const selectedCollaborativeDeck = !!selected && isCollaborativeDeckArtifact(selected); + // Collaborative decks are note-backed for persistence, but their canonical + // editor is the storyboard work-artifacts surface, never the notebook path. + const isPlainNote = (a: Art) => a.kind === "note" && a.title !== WIKI_TITLE && a.title !== BRIEF_TITLE && !isCollaborativeDeckArtifact(a); + const note = selected && isPlainNote(selected) ? selected : arts.find(isPlainNote); + const wall = selected?.kind === "wall" ? selected : arts.find((a) => a.kind === "wall"); + const artFor = (t: TabId) => (t === "wiki" ? wiki : t === "brief" ? brief : t === "sheet" ? sheet : t === "research" ? research : t === "note" ? note : wall); + const fallbackTab: TabId = sheet ? "sheet" : wiki ? "wiki" : brief ? "brief" : research ? "research" : note ? "note" : wall ? "wall" : "sheet"; + const tabForArt = (id: string): TabId => { + if (wiki?.id === id) return "wiki"; + if (brief?.id === id) return "brief"; + if (arts.some((a) => a.id === id && a.kind === "sheet" && a.title !== RESEARCH_TITLE)) return "sheet"; + if (research?.id === id) return "research"; + if (arts.some((a) => a.id === id && isPlainNote(a))) return "note"; + if (wall?.id === id) return "wall"; + return fallbackTab; + }; + const [tab, setTab] = useState(() => tabForArt(artId)); + const [renamingId, setRenamingId] = useState(null); + const tabMenuRef = useRef(null); + const tabStripRef = useRef(null); + const [traceOpen, setTraceOpen] = useState(false); + // Home is a persistent pinned pseudo-tab (primary surface only) — like Trace, it overlays the + // work surface with the Room Home command center (inventory + work lanes) without disturbing openIds. + const [homeOpen, setHomeOpen] = useState(false); + // Read-only proof bundle: a unified view over room artifacts, proposals, traces, graph, decks, + // and exports. It adapts existing state; it does not own mutations. + const [workArtifactsOpen, setWorkArtifactsOpen] = useState(selectedCollaborativeDeck); + const [reviewJobId, setReviewJobId] = useState(); + const wasCollaborativeDeck = useRef(selectedCollaborativeDeck); + // Pinned work-surface projection over the live room and existing NodeAgent runtime. + const [investigationOpen, setInvestigationOpen] = useState(false); + // Knowledge graph: a derived node-link view of how this room's artifacts reference each other. + const [graphOpen, setGraphOpen] = useState(false); + const [nodeBookOpen, setNodeBookOpen] = useState(false); + const [editErr, setEditErr] = useState(null); + const [exportBusy, setExportBusy] = useState(false); + const [exportErr, setExportErr] = useState(null); + const [exportOk, setExportOk] = useState(null); + useEffect(() => { if (!editErr) return; const t = setTimeout(() => setEditErr(null), 4000); return () => clearTimeout(t); }, [editErr]); + useEffect(() => { if (!exportErr) return; const t = setTimeout(() => setExportErr(null), 6000); return () => clearTimeout(t); }, [exportErr]); + useEffect(() => { if (!exportOk) return; const t = setTimeout(() => setExportOk(null), 6000); return () => clearTimeout(t); }, [exportOk]); + useEffect(() => { + if (homeOpen || traceOpen || workArtifactsOpen || investigationOpen || graphOpen) setNodeBookOpen(false); + }, [graphOpen, homeOpen, investigationOpen, traceOpen, workArtifactsOpen]); + useEffect(() => { setTab(tabForArt(artId)); }, [artId, wiki?.id, sheet?.id, research?.id, note?.id, wall?.id, arts.length]); + useEffect(() => { + const leavingCollaborativeDeck = wasCollaborativeDeck.current && !selectedCollaborativeDeck; + wasCollaborativeDeck.current = selectedCollaborativeDeck; + if (selectedCollaborativeDeck) { + setWorkArtifactsOpen(true); + setHomeOpen(false); + setTraceOpen(false); + setInvestigationOpen(false); + setGraphOpen(false); + setNodeBookOpen(false); + } else if (leavingCollaborativeDeck) { + setWorkArtifactsOpen(false); + } + }, [selectedCollaborativeDeck]); + useEffect(() => onOpenWorkArtifactsReview((target) => { + setReviewJobId(target.jobId); + setWorkArtifactsOpen(true); + setHomeOpen(false); + setTraceOpen(false); + setInvestigationOpen(false); + setGraphOpen(false); + setNodeBookOpen(false); + }), []); + useEffect(() => { + const strip = tabStripRef.current; + const active = strip?.querySelector('.r-tab[data-active="true"]'); + if (!strip || !active) return; + const start = active.offsetLeft; + const end = start + active.offsetWidth; + if (start < strip.scrollLeft) strip.scrollLeft = start; + else if (end > strip.scrollLeft + strip.clientWidth) strip.scrollLeft = end - strip.clientWidth; + }, [artId, traceOpen, homeOpen, workArtifactsOpen, investigationOpen, graphOpen, nodeBookOpen]); + useEffect(() => { + const onKey = (e: KeyboardEvent) => { + if (!(e.ctrlKey || e.metaKey) || e.shiftKey || e.key.toLowerCase() !== "z") return; + const target = e.target as HTMLElement | null; + const tag = target?.tagName; + if (tag === "INPUT" || tag === "TEXTAREA" || target?.isContentEditable) return; + e.preventDefault(); + void store.undoLastEdit(roomId, me).then((f) => { if (!f.ok) setEditErr(editErrorMsg(f)); }); + }; + window.addEventListener("keydown", onKey); + return () => window.removeEventListener("keydown", onKey); + }, [store, roomId, me]); + // Stage focus: the Room Binder / Signal Tape can point this surface at a claimed range or a + // referenced cell (operation-like, ephemeral; never a durable write). When a focus targets the + // artifact this surface is showing, scroll the cell into view and pulse it; retry briefly while + // the tab/grid settles after an open. + const surfaceRef = useRef(null); + const [pendingFocus, setPendingFocus] = useState(null); + useEffect(() => onStageFocus((target) => setPendingFocus(target)), []); + useEffect(() => { + if (!pendingFocus || pendingFocus.artifactId !== artId || !pendingFocus.elementId) return; + const elementId = pendingFocus.elementId; + const RING = "inset 0 0 0 2px var(--accent-primary), 0 0 0 3px var(--accent-tint)"; + const clear = () => { const c = surfaceRef.current?.querySelector(`[data-cell-key="${CSS.escape(elementId)}"]`); if (c) c.style.boxShadow = ""; }; + let raf = 0; + let frame = 0; + let revealedAt = -1; + // Re-query + re-assert the ring each frame for ~1.6s. A sheet re-render (frequent during an active + // agent run) can recreate the cell node and drop an imperative style, so we keep winning the last + // write instead of setting it once. Give up if the cell never appears (wrong tab / artifact). + const tick = () => { + const cell = surfaceRef.current?.querySelector(`[data-cell-key="${CSS.escape(elementId)}"]`); + if (cell) { + if (revealedAt < 0) { cell.scrollIntoView({ block: "center", inline: "center" }); revealedAt = frame; } + cell.style.boxShadow = RING; + if (frame - revealedAt > 96) { cell.style.boxShadow = ""; setPendingFocus(null); return; } + } else if (revealedAt < 0 && frame > 30) { + setPendingFocus(null); + return; + } + frame++; + raf = requestAnimationFrame(tick); + }; + raf = requestAnimationFrame(tick); + return () => { cancelAnimationFrame(raf); clear(); }; + }, [pendingFocus, artId, tab]); + if (arts.length === 0) return
; + // Fall back to the SELECTED artifact's tab (artId is the source of truth), never the generic + // 'sheet'/variance default — otherwise the array-identity churn on an edit can momentarily snap a + // non-default sheet (e.g. an uploaded .xlsx) back to the variance tab. + const activeTab: TabId = tabForArt(artId); + const tabIcon = (a: Art) => { + const I = a.title === WIKI_TITLE ? BookOpen : a.title === RESEARCH_TITLE ? Table2 : a.kind === "sheet" ? Table2 : a.kind === "note" ? FileText : StickyNote; + return ; + }; + const openTabArts = (openIds ?? []).map((id) => arts.find((a) => a.id === id)).filter((a): a is Art => !!a); + let visibleOpenTabArts = openTabArts; + let overflowTabArts: Art[] = []; + if (openIds && surfaceKey !== "secondary" && openTabArts.length > MAX_VISIBLE_FILE_TABS) { + const pinned = openTabArts.slice(0, MAX_VISIBLE_FILE_TABS); + const activeOpen = openTabArts.find((a) => a.id === artId); + visibleOpenTabArts = activeOpen && !pinned.some((a) => a.id === activeOpen.id) + ? [...pinned.slice(0, MAX_VISIBLE_FILE_TABS - 1), activeOpen] + : pinned; + const visibleIds = new Set(visibleOpenTabArts.map((a) => a.id)); + overflowTabArts = openTabArts.filter((a) => !visibleIds.has(a.id)); + } + const overflowActive = !traceOpen && !homeOpen && !workArtifactsOpen && !investigationOpen && !graphOpen && !nodeBookOpen && overflowTabArts.some((a) => a.id === artId); + // Inline rename (double-click / F2) — replaces the window.prompt modal, honoring the same + // inline-not-modal standard we hold cells to. Enter commits, Esc cancels; auto-saves via setArtifactMeta. + const renameArtifact = (a: Art) => setRenamingId(a.id); + const commitRename = (a: Art, value: string) => { + setRenamingId(null); + const t = value.trim(); + if (t && t !== a.title) void store.setArtifactMeta({ roomId, artifactId: a.id, title: t, actor: me }); + }; + const pick = (t: TabId) => { const a = artFor(t); if (a) { onArt(a.id); setTab(t); } }; + const openArtifact = (a: Art) => { onArt(a.id); setTab(tabForArt(a.id)); }; + // A Trace step / evidence card opens its literal source on the work surface (switch + pulse the cell). + const openTraceSource = (artifactId: string, elementId?: string) => { onArt(artifactId); focusStage({ artifactId, elementId }); setTraceOpen(false); setInvestigationOpen(false); }; + const visibility = selected?.visibility ?? "room"; + // Two-way owner-gated visibility: you can share YOUR sheet to the room or pull it back to private. + const ownsSelected = !!selected?.createdBy && ((selected.createdBy as Actor).id === me.id || (selected.createdBy as Actor).ownerId === me.id); + const canToggleVis = ownsSelected && (visibility === "private" || visibility === "room"); + const toggleVisibility = () => { + if (!selected) return; + const next = visibility === "private" ? "room" : "private"; + if (next === "private" && typeof window !== "undefined" && !window.confirm("Make this sheet private to you? Teammates will no longer see it in the room.")) return; + void store.setArtifactVisibility({ roomId, artifactId: selected.id, visibility: next, actor: me }); + }; + const handleExportXlsx = async () => { + if (!sheet || exportBusy) return; + setExportBusy(true); + setExportErr(null); + setExportOk(null); + try { + const receipt = await exportSheetAsXlsx(sheet, surfaceRef.current, arts); + setExportOk(`Downloaded ${receipt.fileName} · ${receipt.rowCount.toLocaleString()} rows · ${receipt.sheetCount} sheet${receipt.sheetCount === 1 ? "" : "s"} · ${receipt.byteCount.toLocaleString()} bytes · ${receipt.at}`); + } catch (error) { + console.error("XLSX export failed", error); + setExportErr("XLSX export failed"); + } finally { + setExportBusy(false); + } + }; + + return ( +
+
+
+ {/* Home is a pinned, non-closeable pseudo-tab: the room command center is always one click away. */} + {surfaceKey !== "secondary" && ( + + )} + {openIds + ? visibleOpenTabArts.map((a) => ( + + )) + : TABS.filter((t) => artFor(t.id)).map((t) => ( + + ))} + {openIds && openTabArts.length > 1 && ( +
+ + {overflowTabArts.length > 0 ? `+${overflowTabArts.length}` : } + +
+ {openTabArts.map((a) => ( + + ))} +
+
+ )} + {surfaceKey !== "secondary" && ( + + )} + {surfaceKey !== "secondary" && ( + + )} + {surfaceKey !== "secondary" && ( + + )} + {/* Trace is a pinned work-surface tab alongside the artifacts (agent + QA provenance). */} + {surfaceKey !== "secondary" && ( + + )} + {surfaceKey !== "secondary" && ( + + )} +
+ {headerExtra} + {!investigationOpen && !nodeBookOpen && activeTab === "sheet" && sheet && ( + + )} + {!investigationOpen && !nodeBookOpen && activeTab === "sheet" && sheet && (exportBusy || exportErr || exportOk) && ( + + {exportBusy ? "Building workbook" : exportErr ?? exportOk} + + )} + {canToggleVis ? ( + + ) : ( + + {visibility === "private" ? : } + {visibility === "private" ? "Private" : visibility === "public" ? "Public" : "Shared"} + + )} +
+ + {homeOpen ? ( + ({ id: a.id, title: a.title, kind: a.kind, updatedAt: a.updatedAt, owner: a.createdBy?.name, visibility: a.visibility }))} + contextArtifactId={selected?.kind === "sheet" ? selected.id : sheet?.id} + onOpenArtifact={(id) => { onArt(id); setHomeOpen(false); setInvestigationOpen(false); }} + /> + ) : investigationOpen ? ( + }> + + + ) : traceOpen ? ( + }> + + + ) : workArtifactsOpen ? ( + }> + { onArt(id); setWorkArtifactsOpen(false); setInvestigationOpen(false); }} /> + + ) : nodeBookOpen ? ( + { onArt(id); setNodeBookOpen(false); }} /> + ) : graphOpen ? ( + }> + { onArt(id); setGraphOpen(false); }} /> + + ) : ( + <> + {editErr &&
{editErr}
} + {activeTab === "wiki" && wiki && } + {activeTab === "brief" && brief && } + {activeTab === "sheet" && sheet && (sheet.title === "Q3 variance" + ? setEditErr(editErrorMsg(f))} /> + : setEditErr(editErrorMsg(f))} />)} + {/* Research = an empty NAMED-COLUMN grid the agent populates (matches the prototype's structured + grid, not a raw A1 sheet). Rendered by GenericSheet — no separate renderer. */} + {activeTab === "research" && research && setEditErr(editErrorMsg(f))} />} + {activeTab === "note" && note && ( + : } + /> + )} + {activeTab === "wall" && wall && } + + )} + + {!traceOpen && !workArtifactsOpen && !investigationOpen && !graphOpen && !nodeBookOpen && activeTab !== "note" && ( + { setGraphOpen(true); setHomeOpen(false); setTraceOpen(false); }} + /> + )} +
+ ); +} + +function ArtifactAuxSurfaceFallback() { + return
Loading...
; +} + +/** + * Artifact — the center Work Surface. Wraps one or two ArtifactSurface panes so the + * stage can show a primary surface (e.g. the Q3 model) beside a secondary reference + * surface (a proof, source doc, or the wiki) WITHOUT leaving the center stage — the + * "split mode" gap from docs/synthesis/specs/A_UI_SHELL.md (TARGET_2026_06 L197). + * RoomShell's prop contract is unchanged; split state is local and defaults off. + */ +function makeBlankRoomCode(): string { + const bytes = new Uint8Array(8); + crypto.getRandomValues(bytes); + return Array.from(bytes, (b) => (b % 36).toString(36)).join("").toUpperCase(); +} + +/** + * RoomHomeSurface — wraps RoomHome with the add-sheet and load-sample actions. + * Serves two roles: the blank-room landing (0 artifacts) AND the pinned Home tab in a + * populated room (embedded, with the real artifact inventory). Replaces the old BlankRoomState. + */ +function RoomHomeSurface({ roomId, me, style, onOpenChat, embedded, artifacts, onOpenArtifact, contextArtifactId }: { roomId: string; me: Actor; style?: CSSProperties; onOpenChat?: () => void; embedded?: boolean; artifacts?: { id: string; title: string; kind: string }[]; onOpenArtifact?: (id: string) => void; contextArtifactId?: string }) { + const store = useStore(); + const [busy, setBusy] = useState(false); + const addSheet = async () => { + if (busy) return; + setBusy(true); + try { + const columns: DataframeColumn[] = BLANK_SHEET_COLUMNS.map((label, order) => ({ id: label, label, order, mode: "manual", type: "text", agentWritable: true })); + const seed: Array<{ id: string; value: unknown }> = []; + for (let r = 1; r <= BLANK_SHEET_ROWS; r++) for (const c of BLANK_SHEET_COLUMNS) seed.push({ id: `r${r}__${c}`, value: "" }); + await store.uploadArtifact({ roomId, actor: me, artifact: { kind: "sheet", title: "Sheet 1", seed, meta: { dataframe: { columns, rowCount: BLANK_SHEET_ROWS, sourceFile: "blank-room", parser: "blank_seed", truncated: false, warnings: [] } } } }); + } catch { /* the store surfaces failures; keep the blank state usable */ } + finally { setBusy(false); } + }; + const loadSample = () => { + const url = new URL(window.location.origin + "/"); + url.searchParams.set("demo", makeBlankRoomCode()); + url.searchParams.set("name", me.name || "Host"); + window.location.href = url.toString(); + }; + return ( + void addSheet()} + onLoadSample={loadSample} + embedded={embedded} + artifacts={artifacts} + onOpenArtifact={onOpenArtifact} + contextArtifactId={contextArtifactId} + /> + ); +} + +export function Artifact(props: { + roomId: string; me: Actor; proof?: ActorProof; artId: string; onArt: (id: string) => void; + sideArtId?: string | null; + onSideArtChange?: (id: string | null) => void; + onOpenChat?: () => void; + style?: CSSProperties; +}) { + const { roomId, me, proof, artId, onArt, sideArtId, onSideArtChange, onOpenChat, style } = props; + const store = useStore(); + const arts = store.listArtifacts(roomId); + useEffect(() => { + const optimistic = optimisticArtifactIdentity(artId); + if (!optimistic) return; + const active = arts.find((a) => a.id === artId); + const targetTitle = active?.title ?? optimistic.title; + const targetKind = active?.kind ?? optimistic.kind; + const real = arts.find((a) => !a.id.startsWith(OPT_ARTIFACT_PREFIX) && a.kind === targetKind && a.title === targetTitle); + if (real) onArt(real.id); + }, [artId, arts, onArt]); + const [localSplitId, setLocalSplitId] = useState(null); + const splitId = sideArtId === undefined ? localSplitId : sideArtId; + const setSplitId = onSideArtChange ?? setLocalSplitId; + // Browser-style open files: the work surface holds a tab per OPEN artifact (multiple sheets each get + // their own tab), not one slot per kind. Activating an artifact opens its tab; closing removes it. + const defaultOpenIds = ((): string[] => { + const ids: string[] = []; + const push = (a?: Art) => { if (a && !ids.includes(a.id)) ids.push(a.id); }; + push(arts.find((a) => a.kind === "sheet" && a.title !== RESEARCH_TITLE)); + push(arts.find((a) => a.title === RESEARCH_TITLE)); + push(arts.find((a) => a.kind === "note" && a.title !== WIKI_TITLE)); + push(arts.find((a) => a.kind === "wall")); + push(arts.find((a) => a.title === WIKI_TITLE)); + return ids; + })(); + const [openIds, setOpenIds] = useState(() => (artId && !defaultOpenIds.includes(artId) ? [artId, ...defaultOpenIds] : defaultOpenIds)); + useEffect(() => { + if (!artId) return; + setOpenIds((prev) => { + if (prev.includes(artId)) return prev; + const next = [...prev, artId]; + // BOUND: the active artifact is appended last, so slicing to the last MAX keeps it + evicts the oldest. + return next.length > MAX_OPEN_TABS ? next.slice(next.length - MAX_OPEN_TABS) : next; + }); + }, [artId]); + // Always include the active artifact (a freshly created/uploaded file is active before the effect + // appends it), then keep only artifacts that still exist. Guarantees the active file owns a tab. + const liveOpenIds = [...new Set([...openIds, artId].filter(Boolean))].filter((id) => arts.some((a) => a.id === id)); + const closeArtifact = (id: string) => { + setOpenIds((prev) => { + const next = prev.filter((x) => x !== id); + if (id === artId && next.length) { const idx = prev.indexOf(id); onArt(next[Math.min(idx, next.length - 1)]); } + return next; + }); + if (id === splitId) setSplitId(null); + }; + // Split is a desktop affordance: below ~1200px the stage is too narrow for two usable panes, + // and on compact the side panels are overlays — so the control hides and any open split + // auto-collapses. Mirrors the canonical "<900 = single primary surface" responsive band. + const [wideEnough, setWideEnough] = useState(() => + typeof window !== "undefined" && typeof window.matchMedia === "function" + ? window.matchMedia("(min-width: 1200px)").matches : true); + useEffect(() => { + if (typeof window === "undefined" || typeof window.matchMedia !== "function") return; + const mq = window.matchMedia("(min-width: 1200px)"); + const onChange = () => setWideEnough(mq.matches); + onChange(); + mq.addEventListener?.("change", onChange); + return () => mq.removeEventListener?.("change", onChange); + }, []); + // A blank room (0 artifacts) is intentional (Loop 1) — show the Room Home command center. + if (arts.length === 0) return ; + const canSplit = wideEnough && arts.length >= 4; + // Keep the split target valid: collapse if it vanished, folded back onto the primary, or the + // viewport became too narrow. + const splitting = canSplit && !!splitId && splitId !== artId && arts.some((a) => a.id === splitId); + const openSplit = () => { + const candidate = + arts.find((a) => a.id !== artId && a.title === WIKI_TITLE) ?? + arts.find((a) => a.id !== artId); + if (candidate) setSplitId(candidate.id); + }; + const splitToggle = ( + + ); + const closeSplit = ( + + ); + return ( +
+ + {splitting && splitId && ( + setSplitId(id)} + surfaceKey="secondary" + headerExtra={closeSplit} + style={{ flex: 1, minWidth: 0 }} + /> + )} +
+ ); +} + +/* ── agent-managed room wiki: live TOC + current room state ── */ +function Wiki({ roomId, art, onOpenArtifact }: { roomId: string; art: Art; onOpenArtifact: (art: Art) => void }) { + const store = useStore(); + const artifacts = store.listArtifacts(roomId); + const members = store.listMembers(roomId); + const sessions = store.listSessions(roomId); + const traces = store.listTraces(roomId).slice(-8).reverse(); + const run = store.lastRun(); + const toc = [ + ["wiki-overview", "Overview"], + ["wiki-files", "Files"], + ["wiki-agents", "Agents"], + ["wiki-workflows", "Workflows"], + ["wiki-rules", "Rules"], + ["wiki-backend", "Backend"], + ["wiki-trace", "Recent trace"], + ] as const; + const summary = String(art.elements.doc?.value ?? "Room state, collaboration policy, and agent evidence."); + return ( +
+ +
+
+

Agent-managed wiki

+

NodeRoom system of record

+

{summary}

+
+ {artifacts.length} files + {members.length} people + {sessions.length} agents + {store.listTraces(roomId).length} trace events +
+
+ +
+

Files

+
+ {artifacts.map((a) => ( + + ))} +
+
+ +
+

Agents

+
+ {sessions.map((s) => ( +
+ {s.agentName} + {s.scope} + {s.status} + {s.lastAction} +
+ ))} +
+
+ +
+

Workflows

+
    +
  1. Variance collaboration: lock the affected spreadsheet range, read current context, edit with CAS, release, then smart-merge pending drafts.
  2. +
  3. ParselyFi research: add or requeue accounts, enrich only pending rows, write sources and freshness, export CRM-ready fields.
  4. +
  5. Sales GTM: preserve tier, intent, owner, CRM status, summary, signal, and citations per account row.
  6. +
+
+ +
+

Rules

+
    +
  1. Ground claims: summarize only artifacts, traces, runs, sessions, messages, and cited research sources already present in the room.
  2. +
  3. Keep private data private: never expose private channel content or private drafts in the shared wiki unless a user promotes it.
  4. +
  5. Preserve workflow fields: keep finance rows, GTM account fields, citations, freshness, owners, and CRM status visible as first-class wiki facts.
  6. +
  7. Update after state changes: refresh file inventory, active agents, workflow state, and recent trace evidence after uploads, research runs, approvals, and merges.
  8. +
+
+ +
+

Backend

+
+
UIsrc/uirenders artifacts, chat, trace, and wiki
+
Storesrc/app/store.tsxswitches between memory and Convex
+
Enginesrc/engineCAS, locks, drafts, smart-merge, traces
+
Agentsrc/nodeagentruntime, tools, model seam, compaction
+
Liveconvexschema, mutations, optimistic queries, server agent action
+
+ {run &&

{run.model} last run: {run.toolCalls} tool calls, {run.steps} steps, ${run.costUsd.toFixed(3)}, {run.ms}ms.

} +
+ +
+

Recent trace

+
+ {traces.length === 0 ? No trace events yet. : traces.map((t) => ( +
+ + {t.summary} +
+ ))} +
+
+
+
+ ); +} + +function artifactWikiMeta(art: Art): string { + if (art.title === WIKI_TITLE) return `live TOC; v${art.version}`; + if (art.kind === "sheet" && art.meta?.excelGrid) return `${art.meta.excelGrid.rows} x ${art.meta.excelGrid.columns}; v${art.version}`; + if (art.kind === "sheet") return `${rowIdsOf(art).length} rows; v${art.version}`; + if (art.kind === "wall") return `${Object.keys(art.elements ?? {}).length} notes; v${art.version}`; + return `doc; v${art.version}`; +} + +/* ── company-research surface (ParselyFi loop): status-gated, sourced enrichment ── */ +// Attio/Clay-style record identity: a deterministic colored initials avatar per company +// (offline-safe -- no live logo fetch). Color is hashed from the name so it's stable across renders. +const CO_COLORS = ["#315DA8", "#2F6B44", "#6D3FB2", "#80631F", "#A34B2E", "#1F6F78", "#8F3F27", "#7A3FA0"]; +const CO_COLOR_BY_NAME: Record = { + homen: "#E87958", + maya: "#8B6CE5", + priya: "#6474D9", + sam: "#4C8FBD", +}; +function coColor(name: string): string { + const direct = CO_COLOR_BY_NAME[name.trim().toLowerCase()]; + if (direct) return direct; + let h = 0; + for (let i = 0; i < name.length; i++) h = (h * 31 + name.charCodeAt(i)) >>> 0; + return CO_COLORS[h % CO_COLORS.length]; +} +function coAvatarStyle(name: string): { background: string; color: string } { + const background = coColor(name); + const channels = background.slice(1).match(/.{2}/g)?.map((hex) => Number.parseInt(hex, 16) / 255) ?? [0, 0, 0]; + const luminance = channels + .map((channel) => channel <= 0.04045 ? channel / 12.92 : ((channel + 0.055) / 1.055) ** 2.4) + .reduce((sum, channel, index) => sum + channel * [0.2126, 0.7152, 0.0722][index], 0); + return { background, color: luminance > 0.179 ? "#101317" : "#fff" }; +} +function coInitials(name: string): string { + const parts = name.replace(/[^A-Za-z0-9 ]/g, "").split(/\s+/).filter(Boolean); + if (!parts.length) return "?"; + if (parts.length === 1) return parts[0].slice(0, 1).toUpperCase(); + return (parts[0][0] + parts[1][0]).toUpperCase(); +} + +function parseResearchRows(text: string): ResearchRowInput[] { + return text.split(/\r?\n/).map((line) => line.trim()).filter(Boolean).flatMap((line, idx) => { + const cols = line.split(/\t|,/).map((c) => c.trim()).filter(Boolean); + if (!cols.length || (idx === 0 && /^company$/i.test(cols[0]))) return []; + return [{ company: cols[0], website: cols[1], tier: cols[2], intent: cols[3], owner: cols[4], crmStatus: cols[5] }]; + }); +} +function csvEscape(value: string) { + const safe = /^[\s]*[=+\-@]/.test(value) ? `'${value}` : value; + return /[",\n]/.test(safe) ? `"${safe.replace(/"/g, '""')}"` : safe; +} +function downloadResearchCsv(art: Art, rowIds: string[], cell: (rid: string, c: string) => string) { + const cols = ["company", "website", "tier", "intent", "owner", "crm_status", "summary", "funding", "headcount", "recent_signal", "source", "source2", "last_researched"]; + const lines = [cols.join(","), ...rowIds.map((rid) => cols.map((c) => csvEscape(cell(rid, c))).join(","))]; + const blob = new Blob([lines.join("\n")], { type: "text/csv;charset=utf-8" }); + const url = URL.createObjectURL(blob); + const a = document.createElement("a"); + a.href = url; + a.download = `${art.title.toLowerCase().replace(/[^a-z0-9]+/g, "-") || "research"}-crm.csv`; + a.click(); + URL.revokeObjectURL(url); +} + +/* ── helpers (take the store) ── */ +async function commit(store: RoomStore, roomId: string, me: Actor, artId: string, elementId: string, value: unknown): Promise { + const el = store.getArtifact(artId)?.elements[elementId]; + if (!el || Object.is(el.value, value)) return null; + return store.applyEdit({ roomId, op: { opId: crypto.randomUUID(), artifactId: artId, elementId, kind: "set", value, baseVersion: el.version }, actor: me }); +} +async function createElement(store: RoomStore, roomId: string, me: Actor, artId: string, elementId: string, value: unknown): Promise { + return store.applyEdit({ roomId, op: { opId: crypto.randomUUID(), artifactId: artId, elementId, kind: "create", value, baseVersion: 0 }, actor: me }); +} +async function deleteElement(store: RoomStore, roomId: string, me: Actor, artId: string, elementId: string): Promise { + const el = store.getArtifact(artId)?.elements[elementId]; + if (!el) return null; + return store.applyEdit({ roomId, op: { opId: crypto.randomUUID(), artifactId: artId, elementId, kind: "delete", value: null, baseVersion: el.version }, actor: me }); +} +const editErrorMsg = (f: EditFeedback) => + f.reason === "nothing_to_undo" ? "Nothing to undo yet." + : f.reason === "conflict" ? "That cell changed since you opened it — your edit was reverted. Re-open it to see the new value." + : f.reason === "locked" ? "That cell is locked by an agent right now." + : f.reason === "pending_approval" ? "That agent edit is waiting for host approval." + // Restore-specific honest failures (convex/elementHistory.ts restoreElementVersion): + : f.reason === "version_not_found" ? "That version is no longer in history — retention pruned it." + : f.reason === "snapshot_truncated" ? "That snapshot was truncated for display and cannot be restored." + : "Edit could not be applied."; +function lockedByOther(store: RoomStore, artId: string, elementId: string, me: Actor) { + const lk = store.lockFor(artId, elementId); + return lk && lk.holder.id !== me.id ? lk : null; +} +function draftedFor(store: RoomStore, roomId: string, artId: string, elementId: string): boolean { + return store.listDrafts(roomId).some((d) => d.status === "pending" && d.artifactId === artId && d.ops.some((o) => o.elementId === elementId)); +} +function memberColor(store: RoomStore, roomId: string, actor: Actor): string | undefined { + if (actor.kind !== "user") return undefined; + return store.listMembers(roomId).find((member) => member.id === actor.id)?.color; +} +function touchPresence(store: RoomStore, roomId: string, artId: string, me: Actor, targetId: string, mode: "focus" | "edit", color?: string) { + store.updatePresence({ + roomId, + artifactId: artId, + targetKind: "cell", + targetId, + mode, + actor: me, + label: mode === "edit" ? `${me.name} editing` : me.name, + color, + ttlMs: mode === "edit" ? 15_000 : 12_000, + }); +} +function presenceForCell(rows: PresenceClaim[], elementId: string, me: Actor): PresenceClaim | null { + const rank: Record = { commit_lease: 0, edit: 1, agent_intent: 2, focus: 3 }; + return rows + .filter((row) => row.targetKind === "cell" && row.targetId === elementId && row.actor.id !== me.id && row.expiresAt > Date.now()) + .sort((a, b) => rank[a.mode] - rank[b.mode] || b.updatedAt - a.updatedAt)[0] ?? null; +} +function presenceStyle(row: PresenceClaim | null): CSSProperties | undefined { + return row?.color ? ({ "--presence-color": row.color } as CSSProperties) : undefined; +} +function presenceLabel(row: PresenceClaim): string { + if (row.mode === "agent_intent") return row.label ?? `${row.actor.name} planning`; + if (row.mode === "commit_lease") return row.label ?? `${row.actor.name} publishing`; + if (row.mode === "edit") return row.label ?? `${row.actor.name} editing`; + return row.label ?? row.actor.name; +} + +/** + * PresenceLadder — the cursor-ladder rung for ONE sheet cell (the States & Scale + * "Presence at scale" primitive). Given the room's presence claims + this cell's element + * id, `ladderFor` collapses distinct actors into a rung and this renders it: + * + * 1 claim → one named flag (`.sc-flag`, lifted from design-reference/fixes .fx-flag) + * 2–3 → offset stacked flags (`.sc-flagstack`) + * 4+ → cluster count pill `+N` (`.sc-cluster`, from design-reference/scale/scale.css) + * + * Pointer-events: none — the ladder is a passive presence read, never a click target (the + * cell underneath keeps its selection/edit/history behavior). Excludes `me` via `selfId`. + */ +export function presenceLadderModel(rows: readonly PresenceClaim[], elementId: string, selfId: string, now: number = Date.now()): LadderResult { + // ladderFor is actor-deduped + bounded; drop self first so my own flag never shows on my cell. + return ladderFor(rows.filter((r) => r.targetKind === "cell" && r.actor?.id !== selfId), elementId, now); +} + +export function PresenceLadder({ rows, elementId, selfId }: { rows: readonly PresenceClaim[]; elementId: string; selfId: string }) { + const ladder = presenceLadderModel(rows, elementId, selfId); + if (ladder.mode === "none") return null; + if (ladder.mode === "cluster") { + const title = ladder.members.map((m) => m.name).join(", ") + (ladder.count > ladder.members.length ? ` +${ladder.count - ladder.members.length} more` : ""); + return ( + + +{ladder.count} + + ); + } + // flag (1) or stack (2–3): render each member as an offset named flag, freshest on top. + return ( + + {ladder.members.map((m, i) => ( + + {m.name} + + ))} + + ); +} + +/** Finance mental model: green means POSITIVE, red means negative — not "cell has content". + * Unsigned values (notes, labels) render neutral so status colors keep their meaning. */ +function valueClass(value: string): string { + return /^[-(]/.test(value) ? "r-val-neg" : value.startsWith("+") ? "r-val-pos" : "r-val-num"; +} + +function EditableCell({ value, disabled, align, onCommit, addLabel, onEditStart, onEditEnd }: { value: string; disabled?: boolean; align?: "right"; onCommit: (s: string) => void; addLabel?: string; onEditStart?: () => void; onEditEnd?: () => void }) { + const [editing, setEditing] = useState(false); + const [draft, setDraft] = useState(value); + useEffect(() => setDraft(value), [value]); + if (disabled) return value ? {value} : ; + if (editing) { + return ( + setDraft(e.target.value)} + onBlur={() => { setEditing(false); onEditEnd?.(); if (draft.trim() !== value) onCommit(draft.trim()); }} + onKeyDown={(e) => { if (e.key === "Enter") (e.target as HTMLInputElement).blur(); if (e.key === "Escape") { setDraft(value); setEditing(false); onEditEnd?.(); } }} /> + ); + } + return ( + + ); +} + +function isBlankSpreadsheet(art: Art): boolean { + const sourceFile = art.meta?.dataframe?.sourceFile; + return sourceFile === "blank-room" || sourceFile === "blank-room-agent"; +} + +function dataframeRowCount(art: Art): number { + const count = Number(art.meta?.dataframe?.rowCount); + return Number.isFinite(count) && count > 0 ? Math.floor(count) : 0; +} + +function rowIdsOf(art: Art): string[] { + if (art.meta?.excelGrid) { + const rowCount = Math.max(1, Number(art.meta.excelGrid.rows) || 1); + return Array.from({ length: rowCount }, (_, i) => String(i + 1)); + } + // Fresh-room sheets can briefly receive their element map before the small + // version/order companion query. They also become mixed-address artifacts + // when NodeAgent writes canonical A1 cells beside the legacy rN__column + // seed. The declared blank-sheet extent is authoritative in both cases. + const blankRows = isBlankSpreadsheet(art) ? dataframeRowCount(art) : 0; + if (blankRows) return Array.from({ length: blankRows }, (_, i) => String(i + 1)); + const ids: string[] = []; + const elementIds = (art.order?.length ? art.order : Object.keys(art.elements ?? {})); + for (const eid of elementIds) { + const a1 = eid.match(/^[A-Z]+(\d+)$/); + const r = a1?.[1] ?? eid.split("__")[0]; + if (r && !ids.includes(r)) ids.push(r); + } + return ids; +} +const cellVal = (art: Art, rowId: string, col: string) => displayCellValue(art.elements[`${rowId}__${col}`]?.value); + +function colsOf(art: Art): string[] { + const cols: string[] = []; + for (const eid of art.order ?? []) { + const col = eid.split("__").slice(1).join("__"); + if (col && !cols.includes(col)) cols.push(col); + } + return cols; +} + +function sheetElementId(art: Art, rowId: string, colId: string): string { + const numericRow = rowId.match(/^r?(\d+)$/)?.[1] ?? rowId; + const a1 = `${/^[A-Za-z]+$/.test(colId) ? colId.toUpperCase() : colId}${numericRow}`; + if (art.meta?.excelGrid) return a1; + if (isBlankSpreadsheet(art)) { + // Prefer a canonical NodeAgent write when it exists, then preserve edits + // to an existing legacy seed cell. New cells use A1 so the UI and agent + // converge without rewriting old room data. + if (art.elements[a1]) return a1; + const legacy = `r${numericRow}__${colId}`; + if (art.elements[legacy]) return legacy; + return a1; + } + return `${rowId}__${colId}`; +} + +function parseSheetElementId(art: Art, elementId: string | null): { rowId: string; colId: string } { + if (!elementId) return { rowId: "", colId: "" }; + if (art.meta?.excelGrid || isBlankSpreadsheet(art)) { + const match = elementId.match(/^([A-Za-z]+)(\d+)$/); + if (match) { + const metaCol = art.meta?.dataframe?.columns?.find((col) => col.id.toUpperCase() === match[1].toUpperCase())?.id; + return { colId: metaCol ?? match[1], rowId: match[2] }; + } + const legacy = elementId.match(/^r?(\d+)__(.+)$/); + if (legacy) return { rowId: legacy[1], colId: legacy[2] }; + return { rowId: "", colId: "" }; + } + const sep = elementId.indexOf("__"); + return sep >= 0 ? { rowId: elementId.slice(0, sep), colId: elementId.slice(sep + 2) } : { rowId: "", colId: "" }; +} + +function dataframeColumnWidth(col: DataframeColumn, index: number): number { + const simpleSheetColumn = /^[A-Z]+$/.test(col.id) && col.label === col.id; + if (simpleSheetColumn) return index === 0 ? 168 : 116; + return Math.max(112, Math.min(220, 48 + (col.label?.length ?? 0) * 8)); +} + +function scaleColumnWidth(col: DataframeColumn, index: number): number { + const id = col.id.toLowerCase(); + if (id === "tier") return 72; + if (id === "status" || id === "crm_status") return 128; + if (id === "company" || id === "website") return 164; + if (id === "owner") return 136; + if (id === "headcount" || id === "last_researched") return 152; + if (id === "source" || id === "source2") return 148; + if (id === "intent" || id === "summary" || id === "funding" || id === "recent_signal") return 232; + return Math.max(128, Math.min(240, dataframeColumnWidth(col, index))); +} + +function sheetColumnWidth(art: Art, col: DataframeColumn, index: number): number { + const excelWidth = art.meta?.excelGrid?.colWidths?.[index]; + if (excelWidth) return Math.max(88, Math.min(260, Math.round(excelWidth * 7 + 18))); + if (art.meta?.dataframe && !art.meta?.excelGrid) { + const id = col.id.toLowerCase(); + if (id === "company") return 150; + if (id === "website") return 200; + if (id === "status" || id === "crm_status") return 150; + if (id === "tier") return 66; + if (id === "intent") return 92; + if (id === "owner") return 82; + } + return dataframeColumnWidth(col, index); +} + +function dataframeCellAddress(art: Art, cols: string[], rows: string[], key: string | null): string { + if (!key) return ""; + if (art.meta?.excelGrid || (isBlankSpreadsheet(art) && /^[A-Za-z]+\d+$/.test(key))) return key.toUpperCase(); + const sep = key.indexOf("__"); + if (sep < 0) return ""; + const rowId = key.slice(0, sep); + const colId = key.slice(sep + 2); + const colIndex = cols.indexOf(colId); + const rowIndex = rows.indexOf(rowId); + return colIndex >= 0 && rowIndex >= 0 ? `${columnLetters(colIndex)}${rowIndex + 1}` : ""; +} + +function isNumberLikeCell(value: unknown): boolean { + const payload = asCellPayload(value); + const raw = payload ? payload.value : value; + if (typeof raw === "number") return Number.isFinite(raw); + if (typeof raw !== "string") return false; + const trimmed = raw.trim(); + if (!trimmed || trimmed.startsWith("=")) return false; + return Number.isFinite(Number(trimmed.replace(/,/g, ""))); +} + +function cellHasVisibleValue(value: unknown): boolean { + return displayCellValue(value).trim().length > 0; +} + +function lettersToColumnNumber(letters: string): number { + let n = 0; + for (const ch of letters) n = n * 26 + (ch.charCodeAt(0) - 64); + return n; +} + +function expandSheetMerges(merges: string[] | undefined): { mergeAnchor: Map; mergeCovered: Set } { + const mergeAnchor = new Map(); + const mergeCovered = new Set(); + if (!Array.isArray(merges)) return { mergeAnchor, mergeCovered }; + for (const range of merges) { + const match = range.match(/^([A-Z]+)(\d+):([A-Z]+)(\d+)$/); + if (!match) continue; + const c1 = lettersToColumnNumber(match[1]); + const r1 = Number(match[2]); + const c2 = lettersToColumnNumber(match[3]); + const r2 = Number(match[4]); + const size = (c2 - c1 + 1) * (r2 - r1 + 1); + if (c2 < c1 || r2 < r1 || size > 1_000) continue; + mergeAnchor.set(`${match[1]}${r1}`, { colSpan: c2 - c1 + 1, rowSpan: r2 - r1 + 1 }); + for (let r = r1; r <= r2; r++) { + for (let c = c1; c <= c2; c++) { + if (r === r1 && c === c1) continue; + mergeCovered.add(`${columnLetters(c - 1)}${r}`); + } + } + } + return { mergeAnchor, mergeCovered }; +} + +function normalizeDataframeColumn(col: string): string { + return col.trim().toLowerCase(); +} + +function isGenericStatusColumn(col: string): boolean { + const normalized = normalizeDataframeColumn(col); + return normalized === "status" || normalized.endsWith("_status"); +} + +function isGenericOwnerColumn(col: string): boolean { + const normalized = normalizeDataframeColumn(col); + return normalized === "owner" || normalized === "assignee" || normalized === "lead" || normalized.endsWith("_owner"); +} + +function isGenericSourceColumn(col: string): boolean { + const normalized = normalizeDataframeColumn(col); + return /^source\d*$/.test(normalized) || normalized === "citation" || normalized === "cite"; +} + +function extractUrl(value: string): string | null { + const match = value.match(/https?:\/\/[^\s),;]+/i); + return match ? match[0].replace(/[.)]+$/, "") : null; +} + +function sourceHost(value: string): string { + const url = extractUrl(value) ?? value; + try { + return new URL(url).hostname.replace(/^www\./, ""); + } catch { + return url.replace(/^https?:\/\//i, "").split(/[/?#\s]/)[0] || value; + } +} + +function statusTone(value: string): string { + const normalized = value.trim().toLowerCase().replace(/[\s-]+/g, "_"); + if (/^(complete|completed|done|approved)$/.test(normalized)) return "complete"; + if (/^(needs_review|review|gap|failed|blocked)$/.test(normalized)) return normalized === "failed" ? "failed" : "needs-review"; + if (/^(enriching|running|in_progress|working)$/.test(normalized)) return "enriching"; + if (/^(pending|queued|todo|open|running|in_progress)$/.test(normalized)) return "pending"; + return "neutral"; +} + +function statusText(value: string): string { + const tone = statusTone(value); + if (tone === "needs-review") return "needs_review"; + if (tone === "complete" || tone === "enriching" || tone === "pending" || tone === "failed") return tone; + return value.trim().toLowerCase().replace(/[_-]+/g, " "); +} + +function sheetStatusFilterForValue(value: string): SheetStatusFilter { + const tone = statusTone(value); + if (tone === "complete" || tone === "enriching" || tone === "pending" || tone === "failed") return tone; + if (tone === "needs-review") return "needs_review"; + return "pending"; +} + +function sheetStatusFilterLabel(filter: SheetStatusFilter): string { + return filter === "needs_review" ? "needs review" : filter; +} + +function evidenceTitle(payload: CellPayload | null): string { + const evidence = payload?.evidence ?? []; + return evidence.map((item) => [item.label, item.url ?? item.source].filter(Boolean).join(" - ")).filter(Boolean).join(" | "); +} + +function evidenceReceiptLink(item: CellEvidence): string | undefined { + return item.url ?? item.source; +} + +// --- In-cell evidence hover popover (the receipts payoff) -------------------- +// The "N src" cite chip reveals a popover listing the cell's +// CellPayload.evidence[] receipts: label, quoted snippet, source host link, +// per-item confidence, and a checked/updated line. Pure helpers are exported +// for unit tests (tests/evidencePopover.test.tsx). +export const EVIDENCE_POPOVER_MAX_ITEMS = 4; // BOUND: agent loops can stack receipts; render 4 + "+N more". +export const EVIDENCE_POPOVER_SNIPPET_MAX = 180; +const EVIDENCE_POPOVER_EST_WIDTH = 288; // keep in sync with .r-evidence-popover width in styles.css +const EVIDENCE_POPOVER_EST_HEIGHT = 280; // keep in sync with .r-evidence-popover max-height in styles.css + +const EVIDENCE_KIND_LABELS: Record = { + upload: "uploaded file", + source: "web source", + computed: "computed", + manual: "manual entry", +}; + +export interface EvidencePopoverItem { + id: string; + label: string; + snippet?: string; + /** http(s) link only — non-http schemes are dropped so hostile URLs render as text. */ + href?: string; + host?: string; + kindLabel: string; + confidencePct?: number; +} + +export interface EvidencePopoverModel { + count: number; + items: EvidencePopoverItem[]; + moreCount: number; + confidencePct?: number; +} + +function clampEvidenceText(text: string, max: number): string { + const trimmed = text.trim(); + return trimmed.length > max ? `${trimmed.slice(0, Math.max(0, max - 1)).trimEnd()}…` : trimmed; +} + +function confidencePctOf(confidence: unknown): number | undefined { + return typeof confidence === "number" && Number.isFinite(confidence) + ? Math.round(Math.max(0, Math.min(1, confidence)) * 100) + : undefined; +} + +export function evidencePopoverModel(payload: CellPayload | null): EvidencePopoverModel { + const evidence = payload?.evidence ?? []; + const items = evidence.slice(0, EVIDENCE_POPOVER_MAX_ITEMS).map((item, i) => { + const raw = evidenceReceiptLink(item); + const href = raw ? extractUrl(raw) ?? undefined : undefined; + return { + id: item.id || `ev-${i}`, + label: clampEvidenceText(item.label || item.source || "source", 80), + snippet: item.snippet ? clampEvidenceText(item.snippet, EVIDENCE_POPOVER_SNIPPET_MAX) : undefined, + href, + host: raw ? sourceHost(raw) : undefined, + kindLabel: EVIDENCE_KIND_LABELS[item.kind] ?? "source", + confidencePct: confidencePctOf(item.confidence), + }; + }); + return { + count: evidence.length, + items, + moreCount: Math.max(0, evidence.length - items.length), + confidencePct: confidencePctOf(payload?.confidence), + }; +} + +export function evidenceCheckedLabel(ts: number | undefined, now: number = Date.now()): string | undefined { + if (typeof ts !== "number" || !Number.isFinite(ts) || ts <= 0) return undefined; + const d = new Date(ts); + const ref = new Date(now); + const sameDay = d.getFullYear() === ref.getFullYear() && d.getMonth() === ref.getMonth() && d.getDate() === ref.getDate(); + const hhmm = `${String(d.getHours()).padStart(2, "0")}:${String(d.getMinutes()).padStart(2, "0")}`; + return sameDay ? `checked ${hhmm}` : `checked ${d.toLocaleDateString(undefined, { month: "short", day: "numeric" })} ${hhmm}`; +} + +/** Viewport-aware placement: flip above when near the bottom edge (only if there is room above); anchor left when there is no room to spill left. */ +export function evidencePopoverPlacement( + rect: { top: number; bottom: number; left: number; right: number }, + viewport: { width: number; height: number }, +): { flip: "down" | "up"; align: "right" | "left" } { + const flip = viewport.height > 0 && rect.bottom + EVIDENCE_POPOVER_EST_HEIGHT > viewport.height && rect.top > EVIDENCE_POPOVER_EST_HEIGHT + ? "up" + : "down"; + // Default anchors the popover's right edge to the chip (it spills left). + const align = rect.right - EVIDENCE_POPOVER_EST_WIDTH < 8 && rect.left + EVIDENCE_POPOVER_EST_WIDTH < viewport.width - 8 + ? "left" + : "right"; + return { flip, align }; +} + +export function EvidenceReceipt({ payload, compact = false, checkedAt }: { payload: CellPayload | null; compact?: boolean; checkedAt?: number }) { + const model = evidencePopoverModel(payload); + if (!model.count) return null; + const checked = evidenceCheckedLabel(checkedAt); + return ( + + + + {/* stopPropagation: clicking the chip pins the popover via focus; letting the click reach the cell would steal focus back to the grid and close it. */} + e.stopPropagation()}>{model.count} src + + + + {model.items.map((item) => ( + + {item.label} + {item.snippet && “{item.snippet}”} + + {item.href + ? e.stopPropagation()}>{item.host ?? item.href} + : {item.host ?? item.kindLabel}} + {typeof item.confidencePct === "number" && · {item.confidencePct}%} + + + ))} + + {model.moreCount > 0 && +{model.moreCount} more} + {checked ?? "source checked"} · {typeof model.confidencePct === "number" ? `${model.confidencePct}% confidence` : "visible receipt"} + + + + ); +} + +// --- Per-cell version history + restore (the receipts layer's recovery path) -- +// Reads the `elementVersions` VERSION LOG through convex/elementHistory.ts: +// listElementVersions (proof-gated, bounded) + restoreElementVersion (a NORMAL +// CAS write through applyCellEditCore — conflicts surface honestly via the +// existing EditFeedback path). Live (convex) mode only: the in-memory engine +// keeps no history, so memory mode hides the affordance entirely — honest +// absence, never fake rows. Pure helpers exported for tests/cellHistoryUi.test.tsx. + +// convex/_generated lags until the next codegen — which must NOT be run +// casually: `npx convex codegen` against a configured cloud deployment DEPLOYS +// schema+functions (documented gotcha). Same cast precedent as +// src/ui/Landing.tsx landingMetricsQuery / tests/elementVersions.test.ts. +type ElementVersionRow = { + _id: string; + version: number; + value: unknown; + truncated: boolean; + /** The actor whose applied write superseded this version (who changed it away). */ + updatedBy: Actor; + kind: "set" | "create" | "delete"; + ts: number; +}; +type RestoreOutcome = { ok: true; version?: number } | { ok: false; reason: string; truncated?: boolean }; +type ElementHistoryListArgs = { roomId: string; artifactId: string; elementId: string; requester: ActorProof; limit?: number }; +type ElementHistoryRestoreArgs = { roomId: string; artifactId: string; elementId: string; requester: ActorProof; version: number }; +const elementHistoryApi = (api as unknown as { + elementHistory: { + listElementVersions: FunctionReference<"query", "public", ElementHistoryListArgs, ElementVersionRow[]>; + restoreElementVersion: FunctionReference<"mutation", "public", ElementHistoryRestoreArgs, RestoreOutcome>; + }; +}).elementHistory; + +export const CELL_HISTORY_LIMIT = 8; // BOUND: popover shows the newest 8 (server caps reads at 50) +const CELL_HISTORY_PREVIEW_MAX = 60; +export const CELL_DIFF_MAX_WORDS = 160; // BOUND: word-level LCS is O(n*m); clamp both sides + +/** Live-only gate: history exists only where the elementVersions log does (Convex). */ +export function cellHistoryEnabled(mode: "memory" | "convex", proof: ActorProof | undefined): boolean { + return mode === "convex" && !!proof; +} + +/** Bounded one-line preview of a logged value (objects render via displayCellValue). */ +export function historyValuePreview(value: unknown): string { + const text = displayCellValue(value).replace(/\s+/g, " ").trim(); + if (!text) return "—"; + return text.length > CELL_HISTORY_PREVIEW_MAX ? `${text.slice(0, CELL_HISTORY_PREVIEW_MAX - 1).trimEnd()}…` : text; +} + +/** Compact relative time for history rows ("just now" / "5m" / "3h" / "4d"). */ +export function historyTimeAgo(ts: number, now: number = Date.now()): string { + if (!Number.isFinite(ts) || ts <= 0) return ""; + const delta = Math.max(0, now - ts); + if (delta < 60_000) return "just now"; + const mins = Math.floor(delta / 60_000); + if (mins < 60) return `${mins}m ago`; + const hours = Math.floor(mins / 60); + if (hours < 24) return `${hours}h ago`; + return `${Math.floor(hours / 24)}d ago`; +} + +export type DiffSegment = { text: string; changed: boolean }; + +/** + * Word-level two-row diff (no deps): LCS over whitespace-split tokens, both + * sides clamped to CELL_DIFF_MAX_WORDS so hostile megacell values stay O(bounded). + * `old.changed` = word was replaced/removed; `next.changed` = word is new. + */ +export function wordDiffSegments(oldText: string, nextText: string): { old: DiffSegment[]; next: DiffSegment[] } { + const a = oldText.split(/\s+/).filter(Boolean).slice(0, CELL_DIFF_MAX_WORDS); + const b = nextText.split(/\s+/).filter(Boolean).slice(0, CELL_DIFF_MAX_WORDS); + const dp: number[][] = Array.from({ length: a.length + 1 }, () => new Array(b.length + 1).fill(0)); + for (let i = a.length - 1; i >= 0; i--) { + for (let j = b.length - 1; j >= 0; j--) { + dp[i][j] = a[i] === b[j] ? dp[i + 1][j + 1] + 1 : Math.max(dp[i + 1][j], dp[i][j + 1]); + } + } + const oldChanged = new Array(a.length).fill(true); + const nextChanged = new Array(b.length).fill(true); + let i = 0, j = 0; + while (i < a.length && j < b.length) { + if (a[i] === b[j]) { oldChanged[i] = false; nextChanged[j] = false; i++; j++; } + else if (dp[i + 1][j] >= dp[i][j + 1]) i++; + else j++; + } + return { + old: a.map((text, k) => ({ text, changed: oldChanged[k] })), + next: b.map((text, k) => ({ text, changed: nextChanged[k] })), + }; +} + +/** Inline two-row compare: the logged version's value vs the current value. */ +export function CellDiff({ version, oldValue, currentValue }: { version: number; oldValue: string; currentValue: string }) { + const d = wordDiffSegments(oldValue, currentValue); + const row = (segments: DiffSegment[]) => + segments.length === 0 + ? + : segments.map((s, k) => {k > 0 ? " " : ""}{s.text}); + return ( + + v{version}{row(d.old)} + now{row(d.next)} + + ); +} + +/** + * CellHistory — hover-revealed clock glyph in the cell corner (design "Cell + * states" board: apparatus appears on hover) opening a popover of recent + * versions with per-row Restore + diff. Any room member may restore (the + * mutation itself is proof-gated); a restore is a NEW CAS write, so conflicts + * come back as honest EditFeedback — never a silent history rewrite. + * Mounted in LIVE mode only (see cellHistoryEnabled). + */ +export function CellHistory({ roomId, artifactId, elementId, requester, currentValue, shifted, onFeedback }: { + roomId: string; + artifactId: string; + elementId: string; + requester: ActorProof; + currentValue: string; + /** True when the cite chip occupies the cell corner — shift left of it. */ + shifted?: boolean; + onFeedback?: (f: EditFeedback) => void; +}) { + // Perf: a sheet page can render thousands of cells. The closed state costs + // one useState + a button; the Convex hooks live in CellHistoryPopover and + // mount only while a popover is open. + const [open, setOpen] = useState(false); + return ( + + + {/* stopPropagation: the glyph must not select/edit the cell underneath. */} + + + + {open && ( + setOpen(false)} + onFeedback={onFeedback} + /> + )} + + + ); +} + +function CellHistoryPopover({ roomId, artifactId, elementId, requester, currentValue, onClose, onFeedback }: { + roomId: string; + artifactId: string; + elementId: string; + requester: ActorProof; + currentValue: string; + onClose: () => void; + onFeedback?: (f: EditFeedback) => void; +}) { + const [diffFor, setDiffFor] = useState(null); + const [busyVersion, setBusyVersion] = useState(null); + const rows = useQuery(elementHistoryApi.listElementVersions, { roomId, artifactId, elementId, requester, limit: CELL_HISTORY_LIMIT }); + const restore = useMutation(elementHistoryApi.restoreElementVersion); + const doRestore = async (version: number) => { + setBusyVersion(version); + try { + const res = await restore({ roomId, artifactId, elementId, requester, version }); + if (res.ok) onClose(); + else onFeedback?.({ ok: false, reason: res.reason }); + } catch { + onFeedback?.({ ok: false, reason: "restore_failed" }); + } finally { + setBusyVersion(null); + } + }; + return ( + e.stopPropagation()} onDoubleClick={(e) => e.stopPropagation()}> + Cell history{rows ? `${rows.length} version${rows.length === 1 ? "" : "s"}` : ""} + + {rows === undefined && Loading history…} + {rows && rows.length === 0 && No prior versions — this cell hasn't been overwritten yet.} + {rows?.map((row) => ( + + + v{row.version} + {historyValuePreview(row.value)} + + + → {row.updatedBy.name} + {historyTimeAgo(row.ts)} + {row.truncated && truncated} + + + + + {diffFor === row.version && } + + ))} + + + ); +} + +// --- Stale freshness chip (design "Cell states": always-visible amber "3d") -- +export const STALE_AFTER_MS = 72 * 3_600_000; // recheck due after 72h + +/** "3d"/"12d" label once a checked source is older than 72h; undefined = fresh/invalid. */ +export function staleLabelFor(checkedAt: number | undefined, now: number = Date.now()): string | undefined { + if (typeof checkedAt !== "number" || !Number.isFinite(checkedAt) || checkedAt <= 0) return undefined; + const age = now - checkedAt; + if (age <= STALE_AFTER_MS) return undefined; + return `${Math.floor(age / 86_400_000)}d`; +} + +/** + * Staleness applies ONLY to cells with checked-source semantics: an explicit + * checkedAt/retrievedAt carried by the payload/evidence wins; otherwise a cell + * WITH evidence falls back to the element's updatedAt (the same timestamp the + * receipt popover already labels "checked HH:MM"). Cells without evidence have + * no freshness contract → undefined (render nothing; never fake staleness). + */ +export function cellStaleness(payload: CellPayload | null, updatedAt: number | undefined, now: number = Date.now()): string | undefined { + if (!payload?.evidence?.length) return undefined; + const explicit: number[] = []; + const readTs = (o: unknown) => { + if (!o || typeof o !== "object") return; + const rec = o as Record; + for (const key of ["checkedAt", "retrievedAt"]) { + const v = rec[key]; + if (typeof v === "number" && Number.isFinite(v) && v > 0) explicit.push(v); + } + }; + readTs(payload); + for (const item of payload.evidence) readTs(item); + // Most recent explicit check wins; otherwise the commit timestamp stands in. + const checkedAt = explicit.length ? Math.max(...explicit) : updatedAt; + return staleLabelFor(checkedAt, now); +} + +/** Amber mono chip lifted from design-reference/scale .sc-stale ("stale (recheck due)"). */ +export function StaleChip({ label }: { label: string | undefined }) { + if (!label) return null; + return ( + + + {label} + + ); +} + +function renderGenericCellContent(col: string, value: string): ReactNode { + const trimmed = value.trim(); + if (!trimmed) return -; + if (isGenericStatusColumn(col)) { + const tone = statusTone(trimmed); + return {statusText(trimmed)}; + } + if (isGenericOwnerColumn(col)) { + return ( + + + {trimmed} + + ); + } + if (isGenericSourceColumn(col)) { + const href = extractUrl(trimmed); + const host = sourceHost(trimmed); + const label = host.length > 32 ? `${host.slice(0, 29)}...` : host; + return href ? ( + e.stopPropagation()}> + + ) : ( + + + ); + } + const urlLike = !!extractUrl(trimmed); + return {trimmed}; +} + +function GenericResearchWorkflow({ roomId, me, art, rows, activeRowId }: { + roomId: string; + me: Actor; + art: Art; + rows: string[]; + activeRowId?: string; +}) { + const store = useStore(); + const [running, setRunning] = useState(false); + const [pasteOpen, setPasteOpen] = useState(false); + const [pasteText, setPasteText] = useState(""); + const [busy, setBusy] = useState(false); + const [moreOpen, setMoreOpen] = useState(false); + const [pasteError, setPasteError] = useState(null); + const [requeueError, setRequeueError] = useState(null); + const [handoffStatus, setHandoffStatus] = useState(null); + const cell = (rowId: string, columnId: string) => displayCellValue(art.elements[sheetElementId(art, rowId, columnId)]?.value); + const pending = rows.filter((rowId) => (cell(rowId, "status") || "pending") === "pending").length; + const complete = rows.filter((rowId) => cell(rowId, "status") === "complete").length; + const draftRowId = activeRowId && rows.includes(activeRowId) + ? activeRowId + : rows.find((rowId) => cell(rowId, "status") === "complete"); + const draftCompany = draftRowId ? cell(draftRowId, "company") || draftRowId : null; + const downstreamDrafts = draftRowId + ? prepareDownstreamDrafts({ + title: `${draftCompany || draftRowId} diligence`, + summary: cell(draftRowId, "summary") || `${draftCompany || draftRowId} is ready for downstream follow-up.`, + bullets: [cell(draftRowId, "funding"), cell(draftRowId, "headcount"), cell(draftRowId, "recent_signal")].filter(Boolean), + artifactUrl: typeof window !== "undefined" ? `${window.location.href.split("#")[0]}#artifact=${art.id}&row=${draftRowId}` : undefined, + }) + : []; + + const run = async () => { + setRunning(true); + try { await runAuthorizedInvestigationResearch(store, roomId); } finally { setRunning(false); } + }; + const addRows = async () => { + const parsed = parseResearchRows(pasteText); + if (!parsed.length) { + setPasteError("Nothing to import yet - paste one account per line: Company, website, tier, intent, owner, CRM status."); + return; + } + setBusy(true); + setPasteError(null); + try { + const added = await store.addResearchRows({ roomId, artifactId: art.id, rows: parsed, actor: me }); + if (added) { + setPasteText(""); + setPasteOpen(false); + } + } catch (error) { + setPasteError(`Couldn't add rows - ${error instanceof Error ? error.message : "try again"}. Your text is preserved.`); + } finally { + setBusy(false); + } + }; + const refreshComplete = async () => { + setBusy(true); + setRequeueError(null); + let failed = 0; + let lastReason: string | undefined; + try { + for (const rowId of rows.filter((candidate) => cell(candidate, "status") === "complete")) { + const feedback = await commit(store, roomId, me, art.id, sheetElementId(art, rowId, "status"), "pending"); + if (feedback && !feedback.ok) { + failed += 1; + lastReason = feedback.reason; + } + } + } finally { + if (failed) setRequeueError(`${failed} row(s) couldn't be requeued - ${editErrorMsg({ ok: false, reason: lastReason })}`); + setBusy(false); + } + }; + const saveDownstreamDraft = (draft: PreparedDownstreamDraft) => { + const blob = new Blob([`# ${draft.title}\n\n${draft.body}\n`], { type: "text/markdown;charset=utf-8" }); + const url = URL.createObjectURL(blob); + const anchor = document.createElement("a"); + anchor.href = url; + anchor.download = `${draft.target}-${draft.title.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "") || "draft"}.md`; + anchor.click(); + URL.revokeObjectURL(url); + setHandoffStatus(`${HANDOFF_SHORT[draft.target] ?? draft.target} draft prepared for review`); + }; + + return ( +
+
+ {rows.length} accounts · {pending} pending · {complete} complete + + + + {moreOpen && ( + <> + + + + )} + + {requeueError && {requeueError}} +
+ {pasteOpen && ( +
+