Skip to content

fix(ui): self-heal the Cloudflare Pages build's incomplete workspace install#6624

Merged
JSONbored merged 1 commit into
mainfrom
fix/cloudflare-ui-build-missing-workspace-deps
Jul 16, 2026
Merged

fix(ui): self-heal the Cloudflare Pages build's incomplete workspace install#6624
JSONbored merged 1 commit into
mainfrom
fix/cloudflare-ui-build-missing-workspace-deps

Conversation

@JSONbored

Copy link
Copy Markdown
Owner

Summary

  • The Cloudflare Pages project's root directory is apps/loopover-ui, so its automatic npm clean-install step only installs that workspace's own declared dependencies (957 packages), never reaching sibling workspace packages (the full monorepo installs ~1316).
  • This silently worked until packages/loopover-engine gained two new direct dependencies (@anthropic-ai/claude-agent-sdk, web-tree-sitter) for its miner chat-grounding work — the Cloudflare build now fails with TS2307: Cannot find module on those, breaking the preview build for every PR that touches apps/loopover-ui/**.
  • build:cloudflare already cds to the monorepo root (npm --prefix ../.. run ui:build) to run the real build; this extends the same pattern one step earlier — npm --prefix ../.. ci && npm --prefix ../.. run ui:build — so the build is self-sufficient regardless of what Cloudflare's own auto-detected install step covered, with no Cloudflare dashboard changes needed.

Scope

  • apps/loopover-ui/package.json only (one script line)
  • No src/** changes

Validation

  • Ran npm run build:cloudflare from inside apps/loopover-ui (the exact CWD Cloudflare invokes it from) — full root npm ci + ui:build (engine + ui + ui-miner) all succeed.
  • npx tsc --noEmit — clean
  • npm run actionlint — clean (no workflow changes, just confirming nothing else drifted)

Safety

  • No secrets touched

…install

The Cloudflare Pages project's root directory is set to apps/loopover-ui, so
its automatic `npm clean-install` step only installs that workspace's own
declared dependencies (957 packages) rather than the full monorepo tree
(~1316) -- it never reaches sibling workspace packages' dependencies.

This silently worked until packages/loopover-engine gained two new direct
dependencies (@anthropic-ai/claude-agent-sdk, web-tree-sitter) for its miner
chat-grounding work, which the Cloudflare build then fails to resolve
(TS2307), breaking preview builds for every PR touching apps/loopover-ui/**.

build:cloudflare already `cd`s to the monorepo root to run ui:build; extend
the same pattern one step earlier and run a full `npm ci` from the root
first, so the build is self-sufficient regardless of what Cloudflare's own
auto-detected install step covered.
@superagent-security

Copy link
Copy Markdown
Contributor

Superagent didn't find any vulnerabilities or security issues in this PR.

@JSONbored JSONbored self-assigned this Jul 16, 2026
@JSONbored
JSONbored merged commit 42805e0 into main Jul 16, 2026
6 of 7 checks passed
@JSONbored
JSONbored deleted the fix/cloudflare-ui-build-missing-workspace-deps branch July 16, 2026 16:34
@loopover-orb loopover-orb Bot added the gittensor:bug Gittensor-scored bug fix — scores a 0.05x multiplier. label Jul 16, 2026
@codecov

codecov Bot commented Jul 16, 2026

Copy link
Copy Markdown

Bundle Report

Changes will increase total bundle size by 4 bytes (0.0%) ⬆️. This is within the configured threshold ✅

Detailed changes
Bundle name Size Change
loopover-ui 7.51MB 4 bytes (0.0%) ⬆️

Affected Assets, Files, and Routes:

view changes for bundle: loopover-ui

Assets Changed:

Asset Name Size Change Total Size Change (%)
assets/add-scalar-classes-DycAnMvT.js (New) 2.17MB 2.17MB 100.0% 🚀
assets/tanstack-vendor-BAZMProi.js (New) 698.86kB 698.86kB 100.0% 🚀
assets/docs.fumadocs-spike-api-reference-D1e4b8pV.js (New) 442.94kB 442.94kB 100.0% 🚀
assets/AgentScalarChatInterface.vue-D9DUGzxf.js (New) 201.71kB 201.71kB 100.0% 🚀
assets/modal-BWVwK8uV.js (New) 184.28kB 184.28kB 100.0% 🚀
assets/client-DfSSAZzg.js (New) 146.06kB 146.06kB 100.0% 🚀
assets/maintainer-panel-5xMlq_Rz.js (New) 77.57kB 77.57kB 100.0% 🚀
assets/ui-vendor-DeWK5Cid.js (New) 65.93kB 65.93kB 100.0% 🚀
assets/tuning-DKApDjol.js (New) 61.94kB 61.94kB 100.0% 🚀
assets/app.analytics-C4Dp6sPg.js (New) 34.92kB 34.92kB 100.0% 🚀
assets/routes-BTosXeSA.js (New) 34.04kB 34.04kB 100.0% 🚀
assets/app.runs-CS9JCBPe.js (New) 27.14kB 27.14kB 100.0% 🚀
assets/owner-panel-B3Bv6uQx.js (New) 27.01kB 27.01kB 100.0% 🚀
assets/app.operator-V-ovy4R4.js (New) 26.03kB 26.03kB 100.0% 🚀
assets/app-CeyiSUTC.js (New) 25.84kB 25.84kB 100.0% 🚀
assets/miner-panel-BmFp-jjU.js (New) 20.49kB 20.49kB 100.0% 🚀
assets/docs-source-C9X2FEws.js (New) 19.2kB 19.2kB 100.0% 🚀
assets/api._op-BojCrjac.js (New) 17.89kB 17.89kB 100.0% 🚀
assets/self-hosting-docs-audit-BW4-4ne1.js (New) 16.73kB 16.73kB 100.0% 🚀
assets/app.index-ClV2njRv.js (New) 16.19kB 16.19kB 100.0% 🚀
assets/playground-panel-DFKK-x92.js (New) 14.43kB 14.43kB 100.0% 🚀
assets/app.audit-BBuJkf-z.js (New) 9.62kB 9.62kB 100.0% 🚀
assets/extension-CUmhmSWp.js (New) 9.21kB 9.21kB 100.0% 🚀
assets/app.config-generator-BLD9Mgm8.js (New) 9.19kB 9.19kB 100.0% 🚀
assets/maintainers-qwtP7Eqg.js (New) 8.06kB 8.06kB 100.0% 🚀
assets/miners-DoWgx6IN.js (New) 7.89kB 7.89kB 100.0% 🚀
assets/agents-oHlgaOzl.js (New) 7.76kB 7.76kB 100.0% 🚀
assets/commands-panel-RC1RYfjE.js (New) 6.72kB 6.72kB 100.0% 🚀
assets/digest-panel-Cgipenql.js (New) 6.34kB 6.34kB 100.0% 🚀
assets/roadmap-CqsO_eh8.js (New) 6.33kB 6.33kB 100.0% 🚀
assets/docs.index-B8ikdrzW.js (New) 5.34kB 5.34kB 100.0% 🚀
assets/repos._owner._repo.quality-D5NBta5m.js (New) 5.09kB 5.09kB 100.0% 🚀
assets/api.index-CuFMkF1w.js (New) 4.78kB 4.78kB 100.0% 🚀
assets/changelog-B56S-WD4.js (New) 4.67kB 4.67kB 100.0% 🚀
assets/control-primitives-CFLUhvKf.js (New) 3.75kB 3.75kB 100.0% 🚀
assets/api-J7xr3DX6.js (New) 2.73kB 2.73kB 100.0% 🚀
assets/docs-CJ83OF-0.js (New) 2.67kB 2.67kB 100.0% 🚀
assets/alert-dialog-Dzdm-fsI.js (New) 2.07kB 2.07kB 100.0% 🚀
assets/button-BQssWa4v.js (New) 1.74kB 1.74kB 100.0% 🚀
assets/app.workbench-C3j4Bt7o.js (New) 1.63kB 1.63kB 100.0% 🚀
assets/tooltip-DT72MNhn.js (New) 1.45kB 1.45kB 100.0% 🚀
assets/session-5FOXjQbW.js (New) 1.44kB 1.44kB 100.0% 🚀
assets/tabs-C0cjcGL4.js (New) 1.39kB 1.39kB 100.0% 🚀
assets/trend-chart-DhjXr9gS.js (New) 1.22kB 1.22kB 100.0% 🚀
assets/app.repos-DTrHHQrp.js (New) 1.07kB 1.07kB 100.0% 🚀
assets/analytics-card-shell-ce5ctdYZ.js (New) 987 bytes 987 bytes 100.0% 🚀
assets/switch-DZYjMWou.js (New) 982 bytes 982 bytes 100.0% 🚀
assets/use-api-resource-CRyOV5Sl.js (New) 934 bytes 934 bytes 100.0% 🚀
assets/refresh-meta-BmEndlxn.js (New) 797 bytes 797 bytes 100.0% 🚀
assets/input-NyhcFabL.js (New) 796 bytes 796 bytes 100.0% 🚀
assets/file-cog-OrWwRFbC.js (New) 758 bytes 758 bytes 100.0% 🚀
assets/docs.ai-summaries-sDS98aox.js (New) 568 bytes 568 bytes 100.0% 🚀
assets/docs.scoreability-B8KxBozm.js (New) 562 bytes 562 bytes 100.0% 🚀
assets/docs.upstream-drift-CEiYf99t.js (New) 562 bytes 562 bytes 100.0% 🚀
assets/docs.branch-analysis-BnWfZ3MM.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-ai-providers-D1aIofNX.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-backup-scaling-BbT_KyOm.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-configuration-DMefRSct.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-docs-audit-uci9AHWe.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-github-app-C7wyoYBi.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-quickstart-Jg_d1aK-.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-rag-CyR_9epK.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-rees-BZDSzelW.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-rees-analyzers-CzjluaQr.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-release-checklist-Df0l-YCI.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-releases-pAmGN0Fa.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-security-BaHhHmSS.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-troubleshooting-BCRKCbvS.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-unified-ams-orb-BRKpaVpw.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.maintainer-install-trust-BLyxpqbi.js (New) 560 bytes 560 bytes 100.0% 🚀
assets/docs.mcp-clients-CaxVY62a.js (New) 560 bytes 560 bytes 100.0% 🚀
assets/docs.owner-checklist-a5-yJ-R_.js (New) 560 bytes 560 bytes 100.0% 🚀
assets/docs.quickstart-UrGHJt0s.js (New) 560 bytes 560 bytes 100.0% 🚀
assets/docs.ams-config-precedence-DcvklaC0.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-deployment-DVRHxItt.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-discovery-plane-BUxV-5GI.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-env-reference-CsPU9esV.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-fleet-manifest-BMnWCkw0.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-goal-spec-DBD4Z5OT.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-observability-D4Tt2PA8.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-operations-runbook-BXBK036m.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-sizing-Rpmk6byW.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-unattended-scheduling-Bd8VztJa.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.beta-onboarding-Cis-wDxR.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.maintainer-self-hosting-D8h17YXB.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.privacy-security-DqMtQ8oe.js (New) 558 bytes 558 bytes 100.0% 🚀
assets/docs.troubleshooting-DtI_8MaW.js (New) 558 bytes 558 bytes 100.0% 🚀
assets/docs.tuning-CWjP2l_-.js (New) 558 bytes 558 bytes 100.0% 🚀
assets/docs.github-app-C_Ali6L8.js (New) 557 bytes 557 bytes 100.0% 🚀
assets/docs.maintainer-workflow-BseQ26J-.js (New) 557 bytes 557 bytes 100.0% 🚀
assets/docs.loopover-commands-BFf3K7c-.js (New) 556 bytes 556 bytes 100.0% 🚀
assets/docs.how-reviews-work-BY1bDJVZ.js (New) 555 bytes 555 bytes 100.0% 🚀
assets/app.maintainer-CIWccRAl.js (New) 502 bytes 502 bytes 100.0% 🚀
assets/sparkles-2kwD_A6Q.js (New) 494 bytes 494 bytes 100.0% 🚀
assets/app.owner-CggBGj5f.js (New) 474 bytes 474 bytes 100.0% 🚀
assets/app.commands-BEceOmb7.js (New) 455 bytes 455 bytes 100.0% 🚀
assets/app.playground-DRzMeytm.js (New) 442 bytes 442 bytes 100.0% 🚀
assets/reveal-R1cVH1ws.js (New) 442 bytes 442 bytes 100.0% 🚀
assets/index-DrmgfTt_.js (New) 438 bytes 438 bytes 100.0% 🚀
assets/app.digest-SdEWBHqW.js (New) 430 bytes 430 bytes 100.0% 🚀
assets/eye-off-BUrIxgGT.js (New) 430 bytes 430 bytes 100.0% 🚀
assets/app.miner-DObhvv8v.js (New) 422 bytes 422 bytes 100.0% 🚀
assets/key-round-DPhfIIHQ.js (New) 355 bytes 355 bytes 100.0% 🚀
assets/bot-D3k1-kjt.js (New) 328 bytes 328 bytes 100.0% 🚀
assets/trash-2-DCt3eUHS.js (New) 328 bytes 328 bytes 100.0% 🚀
assets/save-DHBxIgqL.js (New) 327 bytes 327 bytes 100.0% 🚀
assets/git-pull-request-arrow-WIa3fFfI.js (New) 321 bytes 321 bytes 100.0% 🚀
assets/shield-check-CQBmAp1b.js (New) 320 bytes 320 bytes 100.0% 🚀
assets/wrench-DYzcwMUS.js (New) 303 bytes 303 bytes 100.0% 🚀
assets/bell-DCqjehig.js (New) 290 bytes 290 bytes 100.0% 🚀
assets/data-table-CMwHL1xo.js (New) 289 bytes 289 bytes 100.0% 🚀
assets/list-checks-xGVzZ6Zl.js (New) 279 bytes 279 bytes 100.0% 🚀
assets/shield-BLjlADVF.js (New) 272 bytes 272 bytes 100.0% 🚀
assets/workflow-*.js (New) 265 bytes 265 bytes 100.0% 🚀
assets/chart-column-CUHWeA3P.js (New) 251 bytes 251 bytes 100.0% 🚀
assets/compass-C7IsTrZb.js (New) 251 bytes 251 bytes 100.0% 🚀
assets/skeleton-DseUSKOi.js (New) 241 bytes 241 bytes 100.0% 🚀
assets/history-03z02voq.js (New) 237 bytes 237 bytes 100.0% 🚀
assets/activity-BgtWg4HA.js (New) 234 bytes 234 bytes 100.0% 🚀
assets/message-square-CEQAbY93.js (New) 233 bytes 233 bytes 100.0% 🚀
assets/download-BO4NlbDN.js (New) 232 bytes 232 bytes 100.0% 🚀
assets/chevron-right-DCSRn02P.js (New) 207 bytes 207 bytes 100.0% 🚀
assets/lock-V2trp_0L.js (New) 206 bytes 206 bytes 100.0% 🚀
assets/rotate-cw-CXH7dRcI.js (New) 201 bytes 201 bytes 100.0% 🚀
assets/play-CYIstbZx.js (New) 190 bytes 190 bytes 100.0% 🚀
assets/circle-check-I6T9j-HT.js (New) 178 bytes 178 bytes 100.0% 🚀
assets/search-BcSOn3Yo.js (New) 174 bytes 174 bytes 100.0% 🚀
assets/self-hosting-docs-audit-B3AzodzH.js (New) 141 bytes 141 bytes 100.0% 🚀
assets/circle-75epsyk4.js (New) 130 bytes 130 bytes 100.0% 🚀
assets/tuning-Bs5Ss1i1.js (New) 129 bytes 129 bytes 100.0% 🚀
assets/modal-DVDWLzLc.js (New) 115 bytes 115 bytes 100.0% 🚀
assets/add-scalar-classes-hFVU5qnh.js (Deleted) -2.17MB 0 bytes -100.0% 🗑️
assets/tanstack-vendor-dMHZDSKp.js (Deleted) -698.86kB 0 bytes -100.0% 🗑️
assets/docs.fumadocs-spike-api-reference-efL_0KkI.js (Deleted) -442.94kB 0 bytes -100.0% 🗑️
assets/AgentScalarChatInterface.vue-DzowYzyZ.js (Deleted) -201.71kB 0 bytes -100.0% 🗑️
assets/modal-cDnIsKWa.js (Deleted) -184.28kB 0 bytes -100.0% 🗑️
assets/client-BkF1DjfJ.js (Deleted) -146.06kB 0 bytes -100.0% 🗑️
assets/maintainer-panel-nq2Y6QBT.js (Deleted) -77.21kB 0 bytes -100.0% 🗑️
assets/ui-vendor-CpALZJ4o.js (Deleted) -65.93kB 0 bytes -100.0% 🗑️
assets/tuning-B1sPuQa0.js (Deleted) -62.29kB 0 bytes -100.0% 🗑️
assets/app.analytics-BNO6zdWK.js (Deleted) -34.92kB 0 bytes -100.0% 🗑️
assets/routes-B6GuRulp.js (Deleted) -34.04kB 0 bytes -100.0% 🗑️
assets/app.runs-M8ABeEQd.js (Deleted) -27.14kB 0 bytes -100.0% 🗑️
assets/owner-panel-BEC3Lghn.js (Deleted) -27.01kB 0 bytes -100.0% 🗑️
assets/app.operator-E9X-T1af.js (Deleted) -26.03kB 0 bytes -100.0% 🗑️
assets/app-DuONfBeW.js (Deleted) -25.84kB 0 bytes -100.0% 🗑️
assets/miner-panel-BKmjZ1bz.js (Deleted) -20.49kB 0 bytes -100.0% 🗑️
assets/docs-source-DtSwi-6Z.js (Deleted) -19.2kB 0 bytes -100.0% 🗑️
assets/api._op-DesAdpNz.js (Deleted) -17.89kB 0 bytes -100.0% 🗑️
assets/self-hosting-docs-audit-Rph46BLR.js (Deleted) -16.73kB 0 bytes -100.0% 🗑️
assets/app.index-EsRRDC88.js (Deleted) -16.19kB 0 bytes -100.0% 🗑️
assets/playground-panel-CIo9s_3G.js (Deleted) -14.43kB 0 bytes -100.0% 🗑️
assets/app.audit-BplXbm7h.js (Deleted) -9.62kB 0 bytes -100.0% 🗑️
assets/extension-BoLrAG7o.js (Deleted) -9.21kB 0 bytes -100.0% 🗑️
assets/app.config-generator-D_029t9K.js (Deleted) -9.19kB 0 bytes -100.0% 🗑️
assets/maintainers-BhB_hWk9.js (Deleted) -8.06kB 0 bytes -100.0% 🗑️
assets/miners-BsxAbyrM.js (Deleted) -7.89kB 0 bytes -100.0% 🗑️
assets/agents-NiNff2hV.js (Deleted) -7.76kB 0 bytes -100.0% 🗑️
assets/commands-panel-odaMjzbp.js (Deleted) -6.72kB 0 bytes -100.0% 🗑️
assets/digest-panel-9HFxGfME.js (Deleted) -6.34kB 0 bytes -100.0% 🗑️
assets/roadmap-fwRxhJ9c.js (Deleted) -6.33kB 0 bytes -100.0% 🗑️
assets/docs.index-BGE8Vzjx.js (Deleted) -5.34kB 0 bytes -100.0% 🗑️
assets/repos._owner._repo.quality-Cy68_1TV.js (Deleted) -5.09kB 0 bytes -100.0% 🗑️
assets/api.index-CLKtk7XL.js (Deleted) -4.78kB 0 bytes -100.0% 🗑️
assets/changelog-DXN-YErd.js (Deleted) -4.67kB 0 bytes -100.0% 🗑️
assets/control-primitives-t_p9-Xx0.js (Deleted) -3.75kB 0 bytes -100.0% 🗑️
assets/api-J8DMLzcZ.js (Deleted) -2.73kB 0 bytes -100.0% 🗑️
assets/docs-CnPqxN5l.js (Deleted) -2.67kB 0 bytes -100.0% 🗑️
assets/alert-dialog-Ct428low.js (Deleted) -2.07kB 0 bytes -100.0% 🗑️
assets/button-CNUBAZfO.js (Deleted) -1.74kB 0 bytes -100.0% 🗑️
assets/app.workbench-CWIwMyLI.js (Deleted) -1.63kB 0 bytes -100.0% 🗑️
assets/tooltip-Bn5eb4e7.js (Deleted) -1.45kB 0 bytes -100.0% 🗑️
assets/session-C73ZvRAt.js (Deleted) -1.44kB 0 bytes -100.0% 🗑️
assets/tabs-BWbGEgNO.js (Deleted) -1.39kB 0 bytes -100.0% 🗑️
assets/trend-chart-B_d2nOLH.js (Deleted) -1.22kB 0 bytes -100.0% 🗑️
assets/app.repos-3MUysyFl.js (Deleted) -1.07kB 0 bytes -100.0% 🗑️
assets/analytics-card-shell-BESHq_z6.js (Deleted) -987 bytes 0 bytes -100.0% 🗑️
assets/switch-Dz4zjbXU.js (Deleted) -982 bytes 0 bytes -100.0% 🗑️
assets/use-api-resource-CUmk-NKm.js (Deleted) -934 bytes 0 bytes -100.0% 🗑️
assets/refresh-meta-DnZS-BBH.js (Deleted) -797 bytes 0 bytes -100.0% 🗑️
assets/input-CQ8_HUC6.js (Deleted) -796 bytes 0 bytes -100.0% 🗑️
assets/file-cog-DWFg3wOo.js (Deleted) -758 bytes 0 bytes -100.0% 🗑️
assets/docs.ai-summaries-DlsprlBh.js (Deleted) -568 bytes 0 bytes -100.0% 🗑️
assets/docs.scoreability-eLVOfaAP.js (Deleted) -562 bytes 0 bytes -100.0% 🗑️
assets/docs.upstream-drift-Btyqhtkt.js (Deleted) -562 bytes 0 bytes -100.0% 🗑️
assets/docs.branch-analysis-LyKW2jBJ.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-ai-providers-BNYLfS3V.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-backup-scaling-DI3e42Y6.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-configuration-C6pDXtfI.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-docs-audit-Cc5tUqNW.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-github-app-0BNQbBfB.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-quickstart-c_rkZU_Y.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-rag-B3VGmQl6.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-rees-analyzers-_q-HQGmj.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-rees-cL9L2sNc.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-release-checklist-BAIITISz.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-releases-BFXLf8w7.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-security-Ca7aZEZ3.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-troubleshooting-6OqH1zA4.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-unified-ams-orb-DK7cEkUI.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.maintainer-install-trust-DiXIODIv.js (Deleted) -560 bytes 0 bytes -100.0% 🗑️
assets/docs.mcp-clients-CLDp04ew.js (Deleted) -560 bytes 0 bytes -100.0% 🗑️
assets/docs.owner-checklist-C-62KqQi.js (Deleted) -560 bytes 0 bytes -100.0% 🗑️
assets/docs.quickstart-Cap4WISC.js (Deleted) -560 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-config-precedence-CtuxX1-m.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-deployment-CEd2Ja7z.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-discovery-plane-DkZrw-_g.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-env-reference-baWnQQ4j.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-fleet-manifest-L9nLc_RD.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-goal-spec-DpYkqd4V.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-observability-4kUYVOyq.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-operations-runbook-DbcflLX1.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-sizing-CzHGYAmo.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-unattended-scheduling-x9am3DM4.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.beta-onboarding-Dw_lImmJ.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.maintainer-self-hosting-BThS9L0W.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.privacy-security-BaRZqRST.js (Deleted) -558 bytes 0 bytes -100.0% 🗑️
assets/docs.troubleshooting-CPXeEUCS.js (Deleted) -558 bytes 0 bytes -100.0% 🗑️
assets/docs.tuning-9nao2m0t.js (Deleted) -558 bytes 0 bytes -100.0% 🗑️
assets/docs.github-app-CfU4gKxi.js (Deleted) -557 bytes 0 bytes -100.0% 🗑️
assets/docs.maintainer-workflow-DP1eHjWT.js (Deleted) -557 bytes 0 bytes -100.0% 🗑️
assets/docs.loopover-commands-BmjbyJAY.js (Deleted) -556 bytes 0 bytes -100.0% 🗑️
assets/docs.how-reviews-work-55xt4T5C.js (Deleted) -555 bytes 0 bytes -100.0% 🗑️
assets/app.maintainer-CCzCclEu.js (Deleted) -502 bytes 0 bytes -100.0% 🗑️
assets/sparkles-DHRMvatc.js (Deleted) -494 bytes 0 bytes -100.0% 🗑️
assets/app.owner-B4B0elNZ.js (Deleted) -474 bytes 0 bytes -100.0% 🗑️
assets/app.commands-BPoB5-71.js (Deleted) -455 bytes 0 bytes -100.0% 🗑️
assets/app.playground-58JEFqO5.js (Deleted) -442 bytes 0 bytes -100.0% 🗑️
assets/reveal-Dce-FHpS.js (Deleted) -442 bytes 0 bytes -100.0% 🗑️
assets/index-DF332V9J.js (Deleted) -438 bytes 0 bytes -100.0% 🗑️
assets/app.digest-BEpRKGaJ.js (Deleted) -430 bytes 0 bytes -100.0% 🗑️
assets/eye-off-3eLjBco8.js (Deleted) -430 bytes 0 bytes -100.0% 🗑️
assets/app.miner-CSo6BaHn.js (Deleted) -422 bytes 0 bytes -100.0% 🗑️
assets/key-round-CkhSYgAA.js (Deleted) -355 bytes 0 bytes -100.0% 🗑️
assets/bot-CsniKZT5.js (Deleted) -328 bytes 0 bytes -100.0% 🗑️
assets/trash-2-BhrUpQA1.js (Deleted) -328 bytes 0 bytes -100.0% 🗑️
assets/save-CnLEDiH3.js (Deleted) -327 bytes 0 bytes -100.0% 🗑️
assets/git-pull-request-arrow-DR90u2q5.js (Deleted) -321 bytes 0 bytes -100.0% 🗑️
assets/shield-check-BKBPKFhW.js (Deleted) -320 bytes 0 bytes -100.0% 🗑️
assets/wrench-C1vo0VmP.js (Deleted) -303 bytes 0 bytes -100.0% 🗑️
assets/bell-wzAl6lZi.js (Deleted) -290 bytes 0 bytes -100.0% 🗑️
assets/data-table-BX6MfJr9.js (Deleted) -289 bytes 0 bytes -100.0% 🗑️
assets/list-checks-udDD45PK.js (Deleted) -279 bytes 0 bytes -100.0% 🗑️
assets/shield-DC3b53uR.js (Deleted) -272 bytes 0 bytes -100.0% 🗑️
assets/workflow-BxoEaR9y.js (Deleted) -265 bytes 0 bytes -100.0% 🗑️
assets/chart-column-fRTh48Xg.js (Deleted) -251 bytes 0 bytes -100.0% 🗑️
assets/compass-C688Lj2P.js (Deleted) -251 bytes 0 bytes -100.0% 🗑️
assets/skeleton-BWBO6myN.js (Deleted) -241 bytes 0 bytes -100.0% 🗑️
assets/history-D4oGq5EQ.js (Deleted) -237 bytes 0 bytes -100.0% 🗑️
assets/activity-DW3vP05b.js (Deleted) -234 bytes 0 bytes -100.0% 🗑️
assets/message-square-CApD0QU1.js (Deleted) -233 bytes 0 bytes -100.0% 🗑️
assets/download-sqFmyo5y.js (Deleted) -232 bytes 0 bytes -100.0% 🗑️
assets/chevron-right-BeObz5sy.js (Deleted) -207 bytes 0 bytes -100.0% 🗑️
assets/lock-XYVLlWsB.js (Deleted) -206 bytes 0 bytes -100.0% 🗑️
assets/rotate-cw-B_IJd_-L.js (Deleted) -201 bytes 0 bytes -100.0% 🗑️
assets/play-Dtr8vxci.js (Deleted) -190 bytes 0 bytes -100.0% 🗑️
assets/circle-check-CqbmNFsR.js (Deleted) -178 bytes 0 bytes -100.0% 🗑️
assets/search-CPnFpdlL.js (Deleted) -174 bytes 0 bytes -100.0% 🗑️
assets/self-hosting-docs-audit-DTMlPWKU.js (Deleted) -141 bytes 0 bytes -100.0% 🗑️
assets/circle-DX6C0lfe.js (Deleted) -130 bytes 0 bytes -100.0% 🗑️
assets/tuning-DMZdhLis.js (Deleted) -129 bytes 0 bytes -100.0% 🗑️
assets/modal-CTrE_Cds.js (Deleted) -115 bytes 0 bytes -100.0% 🗑️

andriypolanski pushed a commit to andriypolanski/gittensory that referenced this pull request Jul 16, 2026
Closes JSONbored#6642.

A CI job cannot actually reproduce Cloudflare Pages' scoped-install
behavior to regression-test JSONbored#6624 end to end -- confirmed empirically that
a plain `npm ci` run from apps/loopover-ui in a normal git checkout
correctly finds and installs the full workspace tree (Cloudflare's build
sandbox does something else that isn't reproducible via plain npm/git
commands in GitHub Actions).

The reliable, cheap guard is the invariant that actually prevents the
regression: build:cloudflare must keep running a full monorepo-root
`npm ci` before `ui:build`. Adds a unit test asserting that exact script
shape, mirroring the existing ci-ui-build-openapi.test.ts convention of
testing critical build-recipe content directly. Verified it fails when the
self-heal step is removed (reverted locally, confirmed red, restored).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gittensor:bug Gittensor-scored bug fix — scores a 0.05x multiplier.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant