CI: the lotus-build.sh upstream-merge path deploys without running CI #98

Closed
opened 2026-09-12 01:57:46 -04:00 by jared · 1 comment
Owner

Location: .gitea/workflows/ci.yml (comment: "the lotus-build.sh upstream-merge path can deploy without CI"), lotus_deploy.sh / lotus-build.sh in the LotusGuild/matrix repo, LOTUS_TODO.md CI section (already lists "CI-gate the lotus-build.sh upstream-merge path" as deferred)

Problem

The workflow's own comments acknowledge that the upstream Cinny merge path bypasses every gate in this file — prettier, eslint, typecheck, tests, and the build. An upstream merge is precisely the change most likely to break things (it touches hundreds of files the Lotus team didn't write), and it is the one change that skips verification. The backlog marks this as deferred; this issue is to promote it, because a gate that one script can bypass is not a gate.

Suggested fix

Make the merge script push to a branch and open a PR (so pull_request CI runs), or have lotus_deploy.sh refuse to deploy any commit that has no successful CI run recorded for its SHA (the Gitea API exposes commit statuses). The second option also closes the window where a cancelled superseded run strands a commit.


Filed from the September 2026 client audit (CI pipeline review, branch lotus @ 4bea4895).

**Location:** `.gitea/workflows/ci.yml` (comment: "the lotus-build.sh upstream-merge path can deploy without CI"), `lotus_deploy.sh` / `lotus-build.sh` in the `LotusGuild/matrix` repo, `LOTUS_TODO.md` CI section (already lists "CI-gate the lotus-build.sh upstream-merge path" as deferred) ### Problem The workflow's own comments acknowledge that the upstream Cinny merge path bypasses every gate in this file — prettier, eslint, typecheck, tests, and the build. An upstream merge is precisely the change most likely to break things (it touches hundreds of files the Lotus team didn't write), and it is the one change that skips verification. The backlog marks this as deferred; this issue is to promote it, because a gate that one script can bypass is not a gate. ### Suggested fix Make the merge script push to a branch and open a PR (so `pull_request` CI runs), or have `lotus_deploy.sh` refuse to deploy any commit that has no successful CI run recorded for its SHA (the Gitea API exposes commit statuses). The second option also closes the window where a cancelled superseded run strands a commit. --- _Filed from the September 2026 client audit (CI pipeline review, branch `lotus` @ 4bea4895)._
jared added this to the Audit 2026-09 · High milestone 2026-09-12 01:57:46 -04:00
jared added the priority: hightech-debtarea: build-ci labels 2026-09-12 01:57:46 -04:00
jared self-assigned this 2026-09-12 01:57:46 -04:00
Author
Owner

Fixed in LotusGuild/matrix@67a08c7: lotus-build.sh now merges, runs the local gates (npm ci, typecheck, eslint, prettier, tests) and pushes; CI + lotus_deploy.sh deploy the result like any other lotus commit. A failed gate leaves the merge local and notifies the room. Deployed to LXC 106 via the matrix repo hook.

Fixed in LotusGuild/matrix@67a08c7: lotus-build.sh now merges, runs the local gates (npm ci, typecheck, eslint, prettier, tests) and pushes; CI + lotus_deploy.sh deploy the result like any other lotus commit. A failed gate leaves the merge local and notifies the room. Deployed to LXC 106 via the matrix repo hook.
jared closed this issue 2026-09-13 00:56:42 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
2026-10-14
Dependencies

No dependencies set.

Reference: LotusGuild/cinny#98