Merge remote-tracking branch 'origin/main' into feature/cardflow-r1
# Conflicts: # modules/backend # modules/frontend # modules/ui
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
# fix/close-pr-retry 任务卡
|
||||
|
||||
任务主记录:PR #86 https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/86(merge 432f0d2eeb);状态:已完成(回填);owner:weichen
|
||||
|
||||
## 基线与授权
|
||||
|
||||
- 权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)= 0b0540e2d251ed6bee77e63fb1ed174dda3ddd41
|
||||
- 工作区:/home/weichen/projects/Agent-System-Dev-wt-fix-close-pr-retry(worktree);分支:fix/close-pr-retry
|
||||
- 授权与交付终点:用户 2026-09-30 授权修复 task.sh close 建 PR 静默失败问题(此前观察项)。终点:PR 合入 main。未授权:改 task.sh 其它命令、改 post-merge 钩子、改兄弟仓脚本。
|
||||
|
||||
## 目标与非目标
|
||||
|
||||
- 目标:`cmd_close` 的 PR 创建从单发 curl(`2>/dev/null || true` 静默吞错)改为:退避重试 4 次(间隔 3/6/9s)、每次失败信息可见(stderr)、终局失败时按 head 分支 GET open PR 兜底查回(覆盖 post-merge 钩子与手动 close 并发导致 PR 已存在的场景)、全部落空时保留既有 `[next]` 人工提示。
|
||||
- 非目标:不改 precheck/start/sync/finish 的行为;不改卡片闭合的合入权归属(仍所有者);不给 close 加自动合入。
|
||||
|
||||
## 同步记录
|
||||
|
||||
| 节点 | sync_base_sha | tested_head_sha | checked_at |
|
||||
|---|---|---|---|
|
||||
| 启动 | 0b0540e2d251ed6bee77e63fb1ed174dda3ddd41 | 0b0540e2d251ed6bee77e63fb1ed174dda3ddd41 | 2026-09-30T16:41:35Z |
|
||||
|
||||
## 结果与验证
|
||||
|
||||
- 结果:cmd_close PR 创建重试化:4 次退避重试 + stderr 可见 + 终局按 head 查回已存在 PR + 既有 [next] 提示兜底。post-merge 钩子与 task-finish 自动闭合同路径受益(同一函数)。
|
||||
- 验证:`bash -n` 通过;行为验证用桩服务器三模式(代码块由 sed 从真实文件逐字提取、在 worktree 分支上下文运行)——①ok:POST 201 → 首发即回收 `http://stub/pr/1`;②exists:POST 恒 500 模拟"PR 已存在"竞态 → 4 次重试后 GET `?state=open` 按 head 查回 `http://stub/pr/9`;③fail:真实 git-panel(TLS 失效主机)→ 4 次重试均可见 `建 PR 第 N 次未成功` → pr_url 空 → 走 [next] 人工提示分支。三轮合计行为与设计一致。
|
||||
- 影响与剩余项:本次未产生真实卡片可作端到端样本(无已合入未闭合卡),闭环等下次真实 card-close 时由钩子自然验证。剩余项:无。
|
||||
|
||||
## 闭合记录(card-autoclose 回填)
|
||||
|
||||
- 依据:merge 432f0d2eeb13203fd124b03092f7a1dae5f180df(PR #86)已包含于 origin/main,分支成果已落盘;本段为合入后回填。
|
||||
- 合并主题:Merge pull request 'Retry card-close PR creation instead of failing silently' (#86) from fix/close-pr-retry into main
|
||||
- 归档:随闭合移入 .task/archive/;任务执行期的过程证据见原任务记录与 PR。
|
||||
@@ -0,0 +1,44 @@
|
||||
# fix/dep-vuln-bumps 任务卡
|
||||
|
||||
任务主记录:PR #88 https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/88(merge 0a6ef8b986);状态:已完成(回填);owner:weichen
|
||||
|
||||
## 基线与授权
|
||||
|
||||
- 权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)= 0b0540e2d251ed6bee77e63fb1ed174dda3ddd41
|
||||
- 工作区:/home/weichen/projects/Agent-System-Dev-wt-fix-dep-vuln-bumps(worktree);分支:fix/dep-vuln-bumps
|
||||
- 授权与交付终点:落地依赖 CVE 清单中所有可达/可修项——backend 升 pgx 与 x/text、frontend/ui 升 vitest,并经组合验证后钉入三个 gitlink;终点为四个子仓 PR + Dev gitlink PR 全部合入后回收 worktree。
|
||||
- 权威依据:2026-09-30 govulncheck(backend 2 条可达:GO-2026-5004、GO-2026-5970)与 npm audit(frontend/ui 各 2 条 moderate:GHSA-82fw-gwwq-j7x9)。
|
||||
|
||||
## 目标与非目标
|
||||
|
||||
- 目标:backend `golang.org/x/text v0.24.0→v0.39.0`、`github.com/jackc/pgx/v5 v5.7.6→v5.9.2`(两条可达漏洞归零);frontend/ui `vitest`+`@vitest/mocker` →`4.1.11`(GHSA-82fw-gwwq-j7x9 修复首版);Dev 钉入三仓新 main。
|
||||
- 非目标:不处理 govulncheck 报的 20 条 module 级不可达项与 2 条 import 级不可达项(信息性,工具确认代码未调用);不升 vitest 到 5.x(保守取修复边界版)。
|
||||
- <本次允许的动作与终点;未授权事项写明>
|
||||
|
||||
## 目标与非目标
|
||||
|
||||
<预期结果、受影响入口/模块/契约;明确不做什么。>
|
||||
|
||||
## 同步记录
|
||||
|
||||
| 节点 | sync_base_sha | tested_head_sha | checked_at |
|
||||
|---|---|---|---|
|
||||
| 启动 | 0b0540e2d251ed6bee77e63fb1ed174dda3ddd41 | 0b0540e2d251ed6bee77e63fb1ed174dda3ddd41 | 2026-09-30T16:43:31Z |
|
||||
|
||||
## 结果与验证
|
||||
|
||||
- 结果:
|
||||
- 验证:
|
||||
- 影响与剩余项:
|
||||
|
||||
## 结果与验证
|
||||
|
||||
- 结果:backend PR #23(260dcc2,main=41cebd3)、frontend PR #19(a61bd70,main=af03854)、ui PR #18(780cc11,main=daf73be)全部合入;Dev 钉入三 gitlink。
|
||||
- 验证:backend `go build`+`go test -count=1 ./...` 绿且 govulncheck 复核"affected by 0 vulnerabilities"(原 2);frontend/ui `npm audit` "found 0 vulnerabilities"(原各 2),vitest 套件 33/33 与 37/37 绿(ui 曾被管道截断摘要,已单独补验 exit 0);Dev `make test` 全链 exit 0。
|
||||
- 影响与剩余项:均为依赖版本升级(backend 生产依赖 2 个、前端 devDependency 1 个);剩余项为 20 条不可达 module 级通告(信息性,随 routine 升级自然消化),无阻断项。
|
||||
|
||||
## 闭合记录(card-autoclose 回填)
|
||||
|
||||
- 依据:merge 0a6ef8b986c629889133a62252212554cca3ed39(PR #88)已包含于 origin/main,分支成果已落盘;本段为合入后回填。
|
||||
- 合并主题:Merge pull request 'Pin backend, frontend, and ui gitlinks past reachable security advisories' (#88) from fix/dep-vuln-bumps into main
|
||||
- 归档:随闭合移入 .task/archive/;任务执行期的过程证据见原任务记录与 PR。
|
||||
@@ -48,3 +48,5 @@
|
||||
| 同步前验收 | 03dc518eec70eccdc88a1c4f0e525e29bbd2a556 | a552939497cf7f5d8e0b2a9b19a2e9d110000bbd | 2026-09-30T16:03:44Z |
|
||||
| 同步前验收 | ab3cae07b5854ee71c9dd36b226cabd0f778d48d | c5ed9444a6f6b3ae9be9336c360a1d09204d9491 | 2026-09-30T16:06:01Z |
|
||||
| 同步前验收 | a612361b98879f4679cab503035e2111c593bf9b | 290b9bbd26077ae4320783d3b24b6cef0c2e6e05 | 2026-09-30T16:38:22Z |
|
||||
| 同步前验收 | 0b0540e2d251ed6bee77e63fb1ed174dda3ddd41 | 888aa9471c0a6f6917eef1d4801e87b5c411cf6a | 2026-09-30T16:47:54Z |
|
||||
| 同步前验收 | 9f2a7fb4b806bb63f43c3ee759bdbb1ab1f97720 | 21a92441dce7787b8c3eaeaf731aad9a58215836 | 2026-09-30T16:49:57Z |
|
||||
|
||||
+1
-1
Submodule modules/backend updated: 1c4b198603...076abfe11a
+1
-1
Submodule modules/frontend updated: b329de3bf5...6752b788b9
+1
-1
Submodule modules/ui updated: 9750395382...efd87f9766
+20
-5
@@ -231,11 +231,26 @@ EOF
|
||||
local headbr pr_url=""
|
||||
headbr=$(git rev-parse --abbrev-ref HEAD)
|
||||
if [ -n "${GITEA_TOKEN:-}" ]; then
|
||||
local resp
|
||||
resp=$(curl -sS -X POST -H "Authorization: token ${GITEA_TOKEN}" -H 'Content-Type: application/json' \
|
||||
"${web_base}/api/v1/repos/${owner}/${repo}/pulls" \
|
||||
-d "{\"head\":\"${headbr}\",\"base\":\"${TARGET_BRANCH}\",\"title\":\"Close merged task cards (${headbr})\",\"body\":\"Auto-generated by task.sh close; see commit message for evidence.\"}" 2>/dev/null || true)
|
||||
pr_url=$(printf '%s' "$resp" | python3 -c 'import json,sys; print(json.load(sys.stdin).get("html_url",""))' 2>/dev/null || true)
|
||||
# HTTPS 面偶发 broken pipe / 超时(AGENTS.md 访问事实节),单发 curl 会让 PR 静默
|
||||
# 缺失(闭合分支推了、PR 没建,2026-09-30 三次踩中):退避重试 + 失败可见 + 终局
|
||||
# 按 head 查回可能已存在的 PR(post-merge 钩子与手动 close 并发时 PR 会重复请求)。
|
||||
local resp attempt api="${web_base}/api/v1/repos/${owner}/${repo}/pulls"
|
||||
for attempt in 1 2 3 4; do
|
||||
resp=$(curl -sS -m 25 -X POST -H "Authorization: token ${GITEA_TOKEN}" -H 'Content-Type: application/json' \
|
||||
"$api" \
|
||||
-d "{\"head\":\"${headbr}\",\"base\":\"${TARGET_BRANCH}\",\"title\":\"Close merged task cards (${headbr})\",\"body\":\"Auto-generated by task.sh close; see commit message for evidence.\"}" 2>&1) || resp=""
|
||||
pr_url=$(printf '%s' "$resp" | python3 -c 'import json,sys; d=json.load(sys.stdin); print(d.get("html_url","") if isinstance(d,dict) else "")' 2>/dev/null || true)
|
||||
[ -n "$pr_url" ] && break
|
||||
echo "[close] 建 PR 第 ${attempt} 次未成功${resp:+($(printf '%s' "$resp" | head -c 120))},退避重试" >&2
|
||||
[ "$attempt" = 4 ] || sleep $((attempt * 3))
|
||||
done
|
||||
if [ -z "$pr_url" ]; then
|
||||
resp=$(curl -sS -m 25 -H "Authorization: token ${GITEA_TOKEN}" "$api?state=open" 2>/dev/null || true)
|
||||
pr_url=$(printf '%s' "$resp" | python3 -c 'import json,sys
|
||||
for p in json.load(sys.stdin):
|
||||
if p["head"]["ref"] == sys.argv[1]:
|
||||
print(p["html_url"]); break' "$headbr" 2>/dev/null || true)
|
||||
fi
|
||||
fi
|
||||
if [ -n "$newbranch" ]; then git checkout -q "${TARGET_BRANCH}"; fi
|
||||
if [ -n "$pr_url" ]; then
|
||||
|
||||
Reference in New Issue
Block a user