Harden the gate: uninitialized-submodule detection and platform protection registration #8
@@ -26,3 +26,4 @@
|
||||
| 同步前验收 | 923591feda367bc8ceaf809ed7c294e5245a3a3a | 3366148dcf660148c58dff8ec56e02d80604c7a0 | 2026-09-30T03:23:31Z |
|
||||
| 同步前验收 | 428628ffe2a1b73a86299716853f52abdbd16291 | 6fa07f3d15ad4a59f11a53cabc39c5edf3bba2bf | 2026-09-30T03:35:08Z |
|
||||
| 同步前验收 | 1e08eb6ba22c82a1e87afbabe9a15f3e0a46a671 | ccddcc2b2b245745a38381cf50cdea3f39b45e5b | 2026-09-30T03:43:26Z |
|
||||
| 同步前验收 | 20727a8fd3adeafee6fb37383948e2a9c5a004b0 | c2da46e4d2afbf41bce34dece2d04d2bcaa59b98 | 2026-09-30T03:47:24Z |
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
# feature/gate-hardening 任务卡
|
||||
|
||||
任务主记录:<PR 链接,task-finish 时填写>;状态:进行中;owner:weichen
|
||||
|
||||
## 基线与授权
|
||||
|
||||
- 权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)= 20727a8fd3adeafee6fb37383948e2a9c5a004b0
|
||||
- 工作区:/home/weichen/projects/Agent-System-Dev-wt-feature-gate-hardening(worktree);分支:feature/gate-hardening
|
||||
- 授权与交付终点:<本次允许的动作与终点;未授权事项写明>
|
||||
|
||||
## 目标与非目标
|
||||
|
||||
<预期结果、受影响入口/模块/契约;明确不做什么。>
|
||||
|
||||
## 同步记录
|
||||
|
||||
| 节点 | sync_base_sha | tested_head_sha | checked_at |
|
||||
|---|---|---|---|
|
||||
| 启动 | 20727a8fd3adeafee6fb37383948e2a9c5a004b0 | 20727a8fd3adeafee6fb37383948e2a9c5a004b0 | 2026-09-30T03:47:05Z |
|
||||
|
||||
## 结果与验证(完成后填写)
|
||||
|
||||
- 结果:
|
||||
- 验证:
|
||||
- 影响与剩余项:
|
||||
+1
-1
@@ -21,4 +21,4 @@
|
||||
|
||||
## 项目差异
|
||||
|
||||
- Gitea 分支保护尚未配置(main 直推现由本地 hook 拦截,平台层暂 manual)——配置后本表升级登记。
|
||||
- Gitea 分支保护已启用(2026-09-30):11 个组合仓 main 禁直推、拒绝陈旧候选;负例:直推被 pre-receive hook declined。平台层 A3 升级为 enforced。
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|---|---|---|---|---|---|
|
||||
| A1 启动门禁 | advisory(verdict 纪律)+ enforced(start 拒绝) | make precheck 任务首次写前;task-start 拒绝脏树(脚本退出码) | Dev PR#1 验证记录 case1 READY | 同套件 case2/4:BUSY exit 3、start-dirty exit 1;2026-09-30 实战拦截 data/ 脏树 | 「不得编辑」属执行者纪律,如实记 advisory |
|
||||
| A2 节点同步 | advisory | make task-sync(验收/审核/合入前),落卡三字段 | PR#1/2/3 均经 sync | 实战两次拒绝脏树 sync(exit 1,不隐式 stash) | MUST 属流程义务,机制为建议级 |
|
||||
| A3 集成分支保护 | enforced(local)+manual(平台) | pre-commit 拒绝 main 直提;Gitea 分支保护未配置 | 12 个 PR 全部经平台合入 | 套件 hook-main-refused exit 1 | 平台层待配置后升级本行 |
|
||||
| A3 集成分支保护 | enforced(local)+enforced(平台) | pre-commit 拒绝 main 直提;Gitea 分支保护:11 组合仓 main 禁直推+拒绝陈旧候选(2026-09-30 起) | 13+ PR 全部经平台合入 | 套件 hook-main-refused exit 1;平台负例:直推 Logging-System main 被 pre-receive hook declined | |
|
||||
| A4 提交与任务记录格式 | enforced(local)(主题行)+manual(body 四段) | commit-msg 钩子查宽度/句点 | 本批提交全部通过 | 套件 hook-longsubject-refused exit 1 | body 四段结构无机器校验,如实 manual |
|
||||
| A5 工作区回收 | advisory + enforced(未合入拒绝) | task-finish(合入核对→deinit→回收);abandon 双确认 | PR#3 后 worktree/分支回收 | 套件 finish-before-merge exit 1、abandon 需 FORCE_ABANDON | |
|
||||
| A6 秘密边界 | manual | Gitea token 从 ~/.secrets/gitea 读取;会话/日志无明文 | 全程 API 自动化无泄漏 | 无构造负例(纪律项) | 凭证文件模式已验证 |
|
||||
@@ -29,5 +29,5 @@
|
||||
## 验证记录
|
||||
|
||||
- 正负例:2026-09-30 临时真实仓套件 19/19 PASS(precheck 三态、start/hook/sync/finish/abandon 拒绝与放行);执行者 weichen;证据摘录见 Dev PR#1 描述与 .task 卡
|
||||
- 实战补充:data/ 脏树拦截、task-finish 子模块回收缺陷(PR#4 修复后重验)
|
||||
- 实战补充:data/ 脏树拦截、task-finish 子模块回收缺陷(PR#4/#6 两击修复后实战回收通过)、子仓未初始化盲区修复(本 PR)
|
||||
- 证据复用:guidelines 升级到 draft.8 仅新增专题,A 表未变,本矩阵行级证据沿用(verification.md 证据复用条款)
|
||||
|
||||
@@ -29,5 +29,5 @@
|
||||
## 验证记录
|
||||
|
||||
- 2026-09-30 脚本级套件 8/8 PASS(N1–N3 拦截、P1–P5 放行与配置合法),执行者 weichen,输出留存任务卡
|
||||
- 客户端内实弹拦截:pending-live——下次会话对本仓做一次 main 分支写入试探,从 ZCode 日志(hook 执行记录)确认后去除本标注
|
||||
- 客户端内实弹拦截:pending-live——两次无副作用探针(配置创建当期会话)均未被拦,ZCode 日志无 hook 执行记录,证实钩子配置随会话启动加载;本会话早于配置存在,属预期。下个会话首次写入即自然验证
|
||||
- 证据复用:A2–A7 行沿用 CLI/git 实例矩阵证据(机制未变)
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ cmd_precheck() {
|
||||
head=$(git rev-parse HEAD)
|
||||
rmain=$(git rev-parse --verify -q "origin/${TARGET_BRANCH}" 2>/dev/null || echo "$head")
|
||||
dirty=$(git status --porcelain | { grep -v '^.. \.zcode/' || true; } | wc -l)
|
||||
sub_dirty=$(git submodule status --recursive 2>/dev/null | { grep -cE '^\+|^U' || true; })
|
||||
sub_dirty=$(git submodule status --recursive 2>/dev/null | { grep -cE '^-|^\+|^U' || true; })
|
||||
local behind ahead
|
||||
behind=$(git rev-list --count "HEAD..origin/${TARGET_BRANCH}" 2>/dev/null || echo 0)
|
||||
ahead=$(git rev-list --count "origin/${TARGET_BRANCH}..HEAD" 2>/dev/null || echo 0)
|
||||
|
||||
Reference in New Issue
Block a user