Jesse_Chen
e801fcf53b
fix(ci): preserve npm install diagnostics and classify forced timeout
Independent Staging Quality Gate / validate (push) Successful in 10m17s
Independent Staging Quality Gate / publish (push) Successful in 21m1s
2026-09-26 17:52:37 +08:00
jesse-ux
69ede4367f
fix(ci): migrate staging automatically before deploy
...
Independent Staging Quality Gate / validate (push) Successful in 10m6s
Independent Staging Quality Gate / publish (push) Successful in 4m18s
Quality gate now dispatches Migrate Staging Database, waits for success, then dispatches Deploy staging. Automatic migrate attests the in-progress gate run so the two jobs cannot deadlock. Manual migrate is unchanged. Staging schema changes must stay backward-compatible with the currently deployed app.
2026-09-15 23:36:09 +08:00
jesse-ux
298a73e8e5
fix(ci): keep vendor/** on both quality-gate path filters
...
Independent Staging Quality Gate / validate (push) Successful in 9m36s
Independent Staging Quality Gate / publish (push) Successful in 8m7s
BUG-714: deploy/gated-paths.txt already listed vendor/** after the
qizheng vendoring, but backend-quality-gate.yml did not. The contract
test requires the two lists to match.
2026-09-15 18:31:46 +08:00
jesse-ux
d021bca5e1
fix(ci): clear leftover .venv before Python 3.14 venv create (BUG-677)
...
Independent Staging Quality Gate / validate (push) Successful in 12m2s
Independent Staging Quality Gate / publish (push) Successful in 2m8s
Staging gate run 2594 died in Install dependencies with FileExistsError on a reused hostexecutor .venv. Remove the leftover directory and create the venv with --clear so Python 3.14 mkdir does not abort the job.
2026-09-14 09:49:25 +08:00
Jesse_Chen and Claude Fable 5.1
f7428909d2
ci(gate): drop the removed GitHub workflow directory from the gated path list
...
Independent Staging Quality Gate / validate (push) Successful in 21m36s
Independent Staging Quality Gate / publish (push) Successful in 1m56s
The mirror workflows were deleted in the same release, so the gated
path list, both trigger filters and the contract test no longer name
.github/workflows/**.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01VawU7Xfd5jS9wUEXz1XYmS
2026-09-02 04:02:04 +00:00
Jesse_Chen and Claude Fable 5.1
68414a8223
ci(gate): check out the exact SHA from a host-persistent mirror with remote fallback
...
Both gate jobs spent 4-8 minutes (validate) plus 3-5 minutes (publish) on
`git fetch --depth=1` of a 105 MB tree over the WAN, and run 2270 burned
15 minutes on three timed-out attempts. act_runner's hostexecutor discards
the workspace between runs but keeps the host filesystem, so keep a bare
mirror at /root/.cache/jyotisha-mirror.git: take an flock on it (validate,
publish, or overlapping runs may race), clone it once or `fetch --prune`
only when it lacks the requested commit, fetch the exact SHA from local
disk, then point origin back at Gitea for every later step.
The mirror is an accelerator, not a dependency: an unwritable path, a busy
lock, a failed clone/fetch, a non-repository directory, or a stale git lock
file all fall through to the unchanged bounded three-attempt remote fetch,
and the SHA-format, checkout, `git clean -ffdx`, HEAD-equals-SHA, and
clean-tree assertions are untouched. Rehearsed locally against a local
remote for fresh, reused, prune-refresh, unwritable, corrupt, stale-lock,
and lock-contention cases.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01VawU7Xfd5jS9wUEXz1XYmS
2026-09-02 04:02:04 +00:00
Jesse_Chen and Claude Fable 5.1
534f5e617c
ci(gate): skip the staging gate for docs-only pushes without releasing stale code
...
Twenty-four of the last sixty staging pushes were pure documentation, yet each
one ran (and cancelled) the full gate and image publish. Introduce
deploy/gated-paths.txt as the single source of truth for what must rerun the
gate: every Dockerfile COPY source, the Python package inputs, the workflow and
build-context files, and the repository files frontend/tests read at gate time.
Both triggers of backend-quality-gate.yml now carry that exact list; pushes
that touch none of it neither run the gate nor cancel a running code gate.
Because staging head may then legitimately sit ahead of the last tested SHA,
add deploy/is-docs-only-range.sh: it proves <base> is an ancestor of <head>
and that no changed path matches a gated glob, from local history when it is
available and otherwise from the Gitea compare API (per-commit `files`, parent
walk for ancestry, total_commits cross-checked). The publish dispatch and the
deploy-staging head checks accept an advanced head only when that script
succeeds; diverged, older, or code-bearing heads are still refused. In
deploy-staging the check runs after the gate-attested controller bundle is
extracted so only the tested checker and path list are ever executed; the
manual rollback branch is unchanged.
AGENTS.md §6.3/§6.4 describe the new contract: `.deployment.gitCommit` must
equal the latest staging commit that touched a gated path, not staging head.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01VawU7Xfd5jS9wUEXz1XYmS
2026-09-02 04:02:04 +00:00
Jesse_Chen and Cursor
5687182980
ci(runner): move every Gitea job to xiaoxin and let the gate reclaim its own disk
...
Independent Staging Quality Gate / validate (push) Successful in 9m24s
Independent Staging Quality Gate / publish (push) Successful in 7m24s
质量门跑在以 :host 模式注册的跳板机上,与无关生产服务共用文件系统,累积的按
SHA 打标镜像把根分区占满,PostgreSQL fixture 起不来,staging 连续 5 个提交发不
出去。把 12 个 job 统一迁到 xiaoxin,并在开跑前回收磁盘、余量不足时直接报磁盘
原因而不是让 23 个数据库测试代为失败。
当年据以搬迁的「xiaoxin 缺少 Docker Compose v2」是误诊:真实原因是用户级插件
目录里一个零字节 docker-compose 遮蔽了系统插件。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-18 10:12:55 +08:00
Jesse_Chen
8ddcef4cf1
fix(deploy): prevent Next.js chunk version skew
Independent Staging Quality Gate / validate (push) Successful in 13m28s
Independent Staging Quality Gate / publish (push) Successful in 10m14s
2026-08-16 09:09:27 +08:00
Jesse_Chen
934c4175d3
ops: automate production recovery attestation
Independent Staging Quality Gate / validate (push) Successful in 13m3s
Independent Staging Quality Gate / publish (push) Successful in 2m18s
2026-08-16 01:03:10 +08:00
Jesse_Chen
7a613f26db
fix(ci): isolate staging gate from legacy main listener
Independent Staging Quality Gate / validate (push) Successful in 12m45s
Independent Staging Quality Gate / publish (push) Successful in 2m7s
2026-08-13 13:05:59 +08:00
Jesse_Chen
c8bd8e8a2b
fix(ci): provide Gitea context to deploy dispatch
Staging Backend Quality Gate / validate (push) Successful in 12m15s
Staging Backend Quality Gate / publish (push) Successful in 2m10s
2026-08-13 12:43:18 +08:00
Jesse_Chen
945f8974d4
fix(ci): inject token for staging deploy dispatch
Staging Backend Quality Gate / validate (push) Successful in 12m40s
Staging Backend Quality Gate / publish (push) Failing after 2m5s
2026-08-13 12:23:13 +08:00
Jesse_Chen
013c15a9e9
ci(staging): decouple deployment from main
Staging Backend Quality Gate / validate (push) Successful in 14m50s
Staging Backend Quality Gate / publish (push) Failing after 7m58s
2026-08-13 11:57:24 +08:00
Jesse_Chen
9235ee66f6
keep staging image build on turbopack
Staging Backend Quality Gate / validate (push) Successful in 17m58s
Staging Backend Quality Gate / publish (push) Successful in 4m14s
2026-08-09 22:14:40 +08:00
Jesse_Chen
4f3f842958
avoid duplicate staging production build
Staging Backend Quality Gate / validate (push) Successful in 12m20s
Staging Backend Quality Gate / publish (push) Failing after 47m39s
2026-08-09 21:06:47 +08:00
Jesse_Chen
b40f3a1cf0
fix staging npm ci in-container timeout
Staging Backend Quality Gate / validate (push) Successful in 16m27s
Staging Backend Quality Gate / publish (push) Failing after 55m53s
2026-08-09 16:06:16 +08:00
Jesse_Chen
f53e2d09ed
ops: add production PostgreSQL migration tooling
2026-08-09 13:20:06 +08:00
Jesse_Chen
04c4bd3ead
ci: isolate staging dependency install
Staging Backend Quality Gate / validate (push) Has been cancelled
Staging Backend Quality Gate / publish (push) Has been cancelled
2026-08-09 13:18:47 +08:00
Jesse_Chen
07223b6b4a
fix(staging): extend Gitea publish timeout
Staging Backend Quality Gate / validate (push) Successful in 20m7s
Staging Backend Quality Gate / publish (push) Successful in 14m51s
2026-08-07 15:24:55 +08:00
Jesse
f145f52b01
fix(staging): bound frontend quality build
Staging Backend Quality Gate / validate (pull_request) Successful in 11m6s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
2026-08-07 00:06:45 +08:00
Jesse
c1061695c7
fix(staging): retry exact gate checkout
2026-08-06 20:47:38 +08:00
Jesse
8473146773
fix(staging): deploy gate-attested controllers
Staging Backend Quality Gate / validate (pull_request) Successful in 14m1s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
2026-08-06 19:18:04 +08:00
Jesse_Chen
35fa0f0c78
Fix artifact inputs in Docker uploader
Staging Backend Quality Gate / validate (pull_request) Successful in 11m18s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
2026-08-06 02:50:40 +08:00
Jesse_Chen
fdd0dcdd3b
Run vendored artifact uploader directly
Staging Backend Quality Gate / validate (pull_request) Successful in 14m17s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
2026-08-06 02:14:34 +08:00
Jesse_Chen
c1c2094b77
Fix local artifact action inputs
Staging Backend Quality Gate / validate (pull_request) Successful in 13m30s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
2026-08-06 01:38:36 +08:00
Jesse_Chen
b412108a2b
Vendor Gitea artifact upload action
Staging Backend Quality Gate / validate (pull_request) Has been cancelled
Staging Backend Quality Gate / publish (pull_request) Has been cancelled
2026-08-06 00:59:46 +08:00
Jesse_Chen
f8ace3125a
Use internal artifact action mirror
Staging Backend Quality Gate / validate (pull_request) Has been cancelled
Staging Backend Quality Gate / publish (pull_request) Has been cancelled
2026-08-06 00:54:16 +08:00
Jesse_Chen
11ae58c7e5
Use Gitea-compatible artifact upload action
Staging Backend Quality Gate / validate (pull_request) Successful in 13m27s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
2026-08-06 00:08:18 +08:00
Jesse_Chen
88cdb6e6a0
Use runner-native artifact upload action
Staging Backend Quality Gate / validate (pull_request) Successful in 11m51s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
2026-08-05 23:17:56 +08:00
Jesse_Chen
7d818d5e51
Keep registry auth through manifest capture
Staging Backend Quality Gate / validate (pull_request) Successful in 15m59s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
2026-08-05 20:00:41 +08:00
Jesse_Chen
3b08826752
Run pinned Node integration tests on host
Staging Backend Quality Gate / validate (pull_request) Successful in 12m18s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
2026-08-05 17:33:55 +08:00
Jesse_Chen
c2949bbb50
Run integration tests on runner tooling
Staging Backend Quality Gate / validate (pull_request) Failing after 13m5s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
2026-08-05 17:16:21 +08:00
Jesse_Chen
2e62dc15bf
Skip unused Playwright setup in Gitea CI
Staging Backend Quality Gate / validate (pull_request) Failing after 16m38s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
2026-08-05 16:53:28 +08:00
Jesse_Chen
0127321c06
Use reachable npm registry in Gitea CI
Staging Backend Quality Gate / validate (pull_request) Has been cancelled
Staging Backend Quality Gate / publish (pull_request) Has been cancelled
2026-08-05 16:41:23 +08:00
Jesse_Chen
9190b0edef
Use reachable Playwright mirror in Gitea CI
Staging Backend Quality Gate / validate (pull_request) Has been cancelled
Staging Backend Quality Gate / publish (pull_request) Has been cancelled
2026-08-05 16:21:26 +08:00
Jesse_Chen
a3a354e88f
Install C++ compiler for Gitea CI
Staging Backend Quality Gate / validate (pull_request) Has been cancelled
Staging Backend Quality Gate / publish (pull_request) Has been cancelled
2026-08-05 15:57:46 +08:00
Jesse_Chen
77c663b9b7
Install Python headers for Gitea CI
Staging Backend Quality Gate / validate (pull_request) Failing after 5m19s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
2026-08-05 15:48:09 +08:00
Jesse_Chen
a49ab48936
Use existing PyPI mirror in Gitea CI
Staging Backend Quality Gate / validate (pull_request) Failing after 10m0s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
2026-08-05 15:32:56 +08:00
Jesse_Chen
c1543bdb5c
Bound Gitea CI dependency resolution
Staging Backend Quality Gate / validate (pull_request) Has been cancelled
Staging Backend Quality Gate / publish (pull_request) Has been cancelled
2026-08-05 15:16:09 +08:00
Jesse_Chen
8174edc10d
Install Python venv support in Gitea CI
Staging Backend Quality Gate / validate (pull_request) Has been cancelled
Staging Backend Quality Gate / publish (pull_request) Has been cancelled
2026-08-05 14:20:28 +08:00
Jesse_Chen
4c4b7751cc
Use pinned ECR PostgreSQL image for Gitea CI
Staging Backend Quality Gate / validate (pull_request) Has been cancelled
Staging Backend Quality Gate / publish (pull_request) Has been cancelled
2026-08-05 14:12:25 +08:00
Jesse_Chen
54b886fce9
Run Node tooling in a pinned CI container
Staging Backend Quality Gate / validate (pull_request) Failing after 6m42s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
2026-08-05 13:55:52 +08:00
Jesse_Chen
aa958758b7
Install missing CI toolchain packages
Staging Backend Quality Gate / validate (pull_request) Failing after 14m23s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
2026-08-05 13:26:05 +08:00
Jesse_Chen
ef0f01f193
Run quality gate on available Linux runner
Staging Backend Quality Gate / validate (pull_request) Failing after 4m39s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
2026-08-05 13:16:06 +08:00
Jesse_Chen
e9800ed324
Install Compose from runner package manager
Staging Backend Quality Gate / validate (pull_request) Has been cancelled
Staging Backend Quality Gate / publish (pull_request) Has been cancelled
2026-08-05 12:56:14 +08:00
Jesse_Chen
ca4417a345
Use existing registry mirror for PostgreSQL CI
Staging Backend Quality Gate / validate (pull_request) Failing after 8m31s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
2026-08-05 12:44:40 +08:00
Jesse_Chen
2c511eb0ce
Retry Gitea CI tool downloads
Staging Backend Quality Gate / validate (pull_request) Has been cancelled
Staging Backend Quality Gate / publish (pull_request) Has been cancelled
2026-08-05 12:42:55 +08:00
Jesse_Chen
0bccba89ec
Retry PostgreSQL image preload in Gitea CI
Staging Backend Quality Gate / validate (pull_request) Failing after 3m18s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
2026-08-05 12:37:15 +08:00
Jesse_Chen
7fe29dcf01
Fix Gitea quality gate portability
Staging Backend Quality Gate / validate (pull_request) Failing after 19m39s
Staging Backend Quality Gate / publish (pull_request) Has been cancelled
2026-08-05 11:52:38 +08:00