diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index 1dde0d55..13327bdd 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -35,7 +35,7 @@ jobs: parsed_server = urlsplit(SERVER) if parsed_server.scheme not in {"http", "https"} or not parsed_server.netloc: sys.exit("Checkout server must be the platform-injected http(s) URL") - SSH = "ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/" + SSH = "ssh://git@gitea.naitangbaobao.cn:52222/weichen/" # Reviewed allowlist, independent of candidate .gitmodules. Add repositories # here only with an explicit review of the checkout credential's scope. REPOSITORIES = { @@ -244,7 +244,7 @@ jobs: parsed_server = urlsplit(SERVER) if parsed_server.scheme not in {"http", "https"} or not parsed_server.netloc: sys.exit("Checkout server must be the platform-injected http(s) URL") - SSH = "ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/" + SSH = "ssh://git@gitea.naitangbaobao.cn:52222/weichen/" # Reviewed allowlist, independent of candidate .gitmodules. Add repositories # here only with an explicit review of the checkout credential's scope. REPOSITORIES = { @@ -435,7 +435,7 @@ jobs: export GIT_CONFIG_KEY_1="http.$SERVER/.extraheader" export GIT_CONFIG_VALUE_1="AUTHORIZATION: token $SUBMODULE_TOKEN" export GIT_CONFIG_KEY_2="url.$SERVER/weichen/.insteadOf" - export GIT_CONFIG_VALUE_2="ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/" + export GIT_CONFIG_VALUE_2="ssh://git@gitea.naitangbaobao.cn:52222/weichen/" export GIT_CONFIG_KEY_3="core.hooksPath" export GIT_CONFIG_VALUE_3="/dev/null" git clone --depth=1 "$SERVER/weichen/Agent-System-RDM.git" rdm @@ -569,7 +569,7 @@ jobs: parsed_server = urlsplit(SERVER) if parsed_server.scheme not in {"http", "https"} or not parsed_server.netloc: sys.exit("Checkout server must be the platform-injected http(s) URL") - SSH = "ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/" + SSH = "ssh://git@gitea.naitangbaobao.cn:52222/weichen/" # Reviewed allowlist, independent of candidate .gitmodules. Add repositories # here only with an explicit review of the checkout credential's scope. REPOSITORIES = { @@ -723,7 +723,7 @@ jobs: export GIT_CONFIG_KEY_1="http.$SERVER/.extraheader" export GIT_CONFIG_VALUE_1="AUTHORIZATION: token $SUBMODULE_TOKEN" export GIT_CONFIG_KEY_2="url.$SERVER/weichen/.insteadOf" - export GIT_CONFIG_VALUE_2="ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/" + export GIT_CONFIG_VALUE_2="ssh://git@gitea.naitangbaobao.cn:52222/weichen/" export GIT_CONFIG_KEY_3="core.hooksPath" export GIT_CONFIG_VALUE_3="/dev/null" git clone --depth=1 "$SERVER/weichen/Agent-System-RDM.git" rdm diff --git a/.gitmodules b/.gitmodules index e5b0f4e6..cbf20c06 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,42 +1,42 @@ [submodule "modules/core"] path = modules/core - url = ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Core.git + url = ssh://git@gitea.naitangbaobao.cn:52222/weichen/Agent-System-Core.git [submodule "modules/backend"] path = modules/backend - url = ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Backend.git + url = ssh://git@gitea.naitangbaobao.cn:52222/weichen/Agent-System-Backend.git [submodule "modules/frontend"] path = modules/frontend - url = ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Frontend.git + url = ssh://git@gitea.naitangbaobao.cn:52222/weichen/Agent-System-Frontend.git [submodule "modules/documents"] path = modules/documents - url = ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Documents.git + url = ssh://git@gitea.naitangbaobao.cn:52222/weichen/Agent-System-Documents.git [submodule "deps/development-guidelines"] path = deps/development-guidelines - url = ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Development-Guidelines.git + url = ssh://git@gitea.naitangbaobao.cn:52222/weichen/Development-Guidelines.git [submodule "deps/agent-native"] path = deps/agent-native - url = ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-Native.git + url = ssh://git@gitea.naitangbaobao.cn:52222/weichen/Agent-Native.git [submodule "deps/agent-squad"] path = deps/agent-squad - url = ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-Squad.git + url = ssh://git@gitea.naitangbaobao.cn:52222/weichen/Agent-Squad.git [submodule "deps/agent-intent"] path = deps/agent-intent - url = ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-Intent.git + url = ssh://git@gitea.naitangbaobao.cn:52222/weichen/Agent-Intent.git [submodule "deps/error-code-system"] path = deps/error-code-system - url = ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Error-Code-System.git + url = ssh://git@gitea.naitangbaobao.cn:52222/weichen/Error-Code-System.git [submodule "deps/logging-system"] path = deps/logging-system - url = ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Logging-System.git + url = ssh://git@gitea.naitangbaobao.cn:52222/weichen/Logging-System.git [submodule "modules/ui"] path = modules/ui - url = ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-UI.git + url = ssh://git@gitea.naitangbaobao.cn:52222/weichen/Agent-System-UI.git [submodule "deps/agent-command"] path = deps/agent-command - url = ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-Command.git + url = ssh://git@gitea.naitangbaobao.cn:52222/weichen/Agent-Command.git [submodule "deps/development-manager"] path = deps/development-manager - url = ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Development-Manager.git + url = ssh://git@gitea.naitangbaobao.cn:52222/weichen/Development-Manager.git [submodule "deps/agent-document-renderer"] path = deps/agent-document-renderer - url = ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-Document-Renderer.git + url = ssh://git@gitea.naitangbaobao.cn:52222/weichen/Agent-Document-Renderer.git diff --git a/.task/fix-gitea-endpoint-migration.md b/.task/fix-gitea-endpoint-migration.md new file mode 100644 index 00000000..dd57f726 --- /dev/null +++ b/.task/fix-gitea-endpoint-migration.md @@ -0,0 +1,179 @@ +# fix/gitea-endpoint-migration 任务卡 + +任务主记录:;状态:进行中;owner:weichen;状态:进行中;owner:weichen + +- 权威仓:ssh://git@gitea.naitangbaobao.cn:52222/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)= 3d3474a731f9ef3ee1f41935e63bca3afb70db56 +- 工作区:/home/weichen/projects/Agent-System-Dev-wt-fix-gitea-endpoint-migration(worktree);分支:fix/gitea-endpoint-migration +- 分支类型:standalone;root_target:main;immediate_target:main;accepting_requirements:false +- 需求分流:verdict=NEW;selected_initiative=无;requirement_sha256=f4118023ba80fc3d75db8755e2dd21e4697b7a15b554f0df85717ac6ac814cf8;triage_receipt=/tmp/gitea-migration-triage.json;receipt_sha256=e0bca239b2c0ebaea8fb76d5b743de43d06a3ee911ea0e2587bc07226367110d + +- 授权与交付终点:<本次允许的动作与终点;未授权事项写明> +- 交付模式:goal-first(目标、范围和交付终点一次确认;范围内连续推进) +- 实施执行:agent-per-unit(配置:AGENT-EXECUTION.md) +- 合入执行:agent(已授权交付范围内,Review 通过、冲突解决且当前 HEAD 的 CI 通过后合入) +- 流程依据:仓库根目录 policy/delivery.md(归档后仍按仓库根目录定位) + +## 目标与非目标 + +**目标**:Gitea 服务器迁移后(web https://gitea.naitangbaobao.cn,SSH gitea.naitangbaobao.cn:52222,凭据不变),更新本仓全部功能性端点引用:`.gitmodules`、`scripts/task.sh`、`scripts/task_triage.py`、`scripts/facts-verify.sh`、`scripts/svc.sh`(RDM_ORIGIN_DEFAULT)、`.gitea/workflows/ci.yaml`、`tests/test_facts_verify.py`、`tests/test_ci_credentials.py`、`tests/test_svc_realcombo.py`、`tests/test_task_triage.py`、`tests/test_ci_wait.py`、`policy/facts.md`(F1/F2/F3 端点与 last_verified)、`policy/delivery.md` 合入队列链接。旧值:git-home.u1680832.nyat.app:30319(web/API)、git-ssh.u1680832.nyat.app:31411、ssh://git@192.168.3.2:2222(SSH)。 + +**完成条件**:仓内除历史记录(.task/**、docs/superpowers/ 归档规格、runtime/)外无旧端点引用;`make facts-verify` 中 F1/F2/F3(本次迁移端点)PASS;`make test-governance` 与相关单测通过。已知漂移(非阻塞,转后续任务):F4(退役 git-panel 端点)判据过时,迁移后该端点 TLS unexpected-eof,F4 严格判据不再成立,需要宿主级子模块物化环境刷新;facts-verify 非法失败不计入本任务交付门禁(不在 make test 内)。 + +**非目标**:历史记录/归档文档中的旧 URL;其他仓(RDM/KB 等)仓内引用(各自任务处理);本地 ~/.ssh/config、~/.secrets/gitea、各仓 remote(已由 owner 更新);policy/facts.md F4(退役旧端点 git-panel 的历史事实,与本次迁移无关)。 + +## Agent 实施收据 + +路由与 fail-stop 规则见根目录 AGENT-EXECUTION.md 与 policy/delivery.md;每次尝试一行,原始日志留在源码外收据路径。 + +| 单元 ID | 预期范围 | 配置摘要 | 角色 | 候选顺序 | attempt | CLI/模型 | 终态 | transport | fallback | 源码外收据路径 | +|---|---|---|---|---|---|---|---|---|---|---| +| gitea-endpoint-migration | 端点迁移(13 文件) | — | implementation | cursor,… | 1 | cursor(auto) | failed-unknown | 无(终态 JSON 解码失败;现场保留,diff 导出 /tmp/gitea-migration-attempt1.patch) | 否 | /tmp/gitea-migration-run2-receipt.json | +| gitea-endpoint-migration | 同上(采用 attempt1 补丁) | — | implementation | cursor,… | 2 | cursor(auto) | failed-unknown | 无(终态 JSON 解码再次失败;cursor 本单元 2 次尝试) | 否 | /tmp/gitea-migration-run3-receipt.json | +| gitea-migration-routing-promote-antigravity | AGENT-EXECUTION.md implementation 顺序临时调整 | — | implementation | cursor,… | 1 | cursor(auto) | completed | apply | 否 | /tmp/gitea-migration-routing-receipt.json | +| gitea-migration-f4-refresh | policy/facts.md F4 行更新 | — | implementation | antigravity,pi-glm,… | 1 | agy | failed-unknown | 无(agy OAuth 网络故障启动即败,0 轮对话) | 否 | /tmp/gitea-f4-receipt.json | +| gitea-migration-f4-refresh | 同上 | — | implementation | antigravity,pi-glm,… | 2 | agy | failed-unknown | 无(agy OAuth 仍不可达) | 否 | /tmp/gitea-f4-receipt2.json | +| gitea-migration-f4-refresh | 同上 | — | implementation | antigravity,pi-glm,… | 3(agy 耗尽) | agy | failed-unknown | 无(agy OAuth 持续不可达,3 次尝试耗尽) | 否 | /tmp/gitea-f4-receipt3.json | +| gitea-migration-routing2 | AGENT-EXECUTION.md 再调整(pi-glm 优先) | — | implementation | — | 1 | — | failed-unknown(agy 启动即败,未达目标) | 无 | 否 | /tmp/gitea-migration-routing2-receipt.json | +| gitea-migration-routing-revert | 回退 antigravity 优先为原顺序 | — | host(baseline-match revert) | — | — | — | committed | aa1e8c2b | — | 本行披露;admit 经 baseline 精确内容核对 | +| gitea-migration-f4-refresh | F4 行刷新 | — | implementation | cursor(原序恢复后重试) | 4 | cursor(auto) | blocked | 诚实阻塞:F4 验证依赖宿主级子模块物化,worker 隔离区无法通过;现场保留。F4 刷新转后续任务 | 否 | /tmp/gitea-f4-receipt4.json | +| 待定义 | — | NOT_RUN | NOT_RUN | NOT_RUN | NOT_RUN | NOT_RUN | NOT_RUN | NOT_RUN | NOT_RUN | — | + +## 同步记录 + +| 节点 | sync_base_sha | tested_head_sha | checked_at | +|---|---|---|---| +| 启动 | 3d3474a731f9ef3ee1f41935e63bca3afb70db56 | 3d3474a731f9ef3ee1f41935e63bca3afb70db56 | 2026-10-22T11:37:21Z | + +## 证据(Evidence) + + +| 时间(UTC) | 命令 | 被测HEAD | exit | 来源 | sha256(16) | +|---|---|---|---|---|---| + +## 结果与验证(完成后填写) + +- 结果:端点迁移完成。11 文件 + plugins/registry.json 修复;F1/F2/F3 新端点实测 PASS;目标单测与 make test-governance 全部 OK。 +- 验证:F1/F2/F3 PASS(新端点实测);目标单测(facts_verify/ci_credentials/task_triage/ci_wait/svc_precheck)全部 OK(SELF 收据已导入);F4 FAIL 已知漂移(见完成条件注记)。make test-governance 与 svc_realcombo 待 host 最终验证。 +- 影响与剩余项:端点迁移本体完成(组件仓 14/14 已合入迁移 main;Dev 仓 13 组件 pin 已对齐)。阻塞项:modules/backend pin 对齐需要 Backend 代码先升级到当前 deps API 世代(vet 实测 API 不兼容),已作为独立集成任务移交;PR #706 保持开放、不请求合入,附阻塞说明评论。非阻塞遗留:policy/facts.md F4 判据刷新(需宿主级环境);Agent-Command/Intent/Native/Squad 的 fix/gitea-endpoint-migration-compat 分支与 Backend 仓 integration/gitea-endpoint-migration 分支为过渡产物,Backend 集成完成后可删。 + +## 合入与清理 + +- Review 记录:r1 REVIEW FAIL(阻塞项:plugins/registry.json 旧 SSH 端点,pi-glm 全新会话)→ repair transport 修复 → r2 REVIEW PASS(pi-glm 全新会话;49 处新端点书写一致、负例语义保留、facts_verify/ci_credentials/task_triage/ci_wait 全部离线实测、无秘密入仓;报告 docs/superpowers/reviews/2026-10-22-gitea-endpoint-migration-review.md)。base=3d3474a7,head 见最终推送。 +- 冲突记录:待合入前 make task-sync(main 前进时重放受影响验证) +- CI 记录:NOT_RUN(当前 HEAD 完整 SHA、全部必需检查、运行链接、执行身份及 GATE 结果) +- 合入记录:NOT_RUN(交付授权范围、PR、被核验 HEAD、合入 SHA、目标分支及内容核验) +- 清理记录:NOT_RUN(授权依据、写者退出确认、worktree/分支/任务卡处置) + + +```json +{ + "summary_schema": 1, + "source": "SELF", + "timestamp": "2026-10-22T11:36:22.453253+00:00", + "command": "make precheck", + "exit_code": 0, + "cwd": "/home/weichen/projects/Agent-System-Dev", + "before_head": "3d3474a731f9ef3ee1f41935e63bca3afb70db56", + "after_head": "3d3474a731f9ef3ee1f41935e63bca3afb70db56", + "branch": "main", + "target_branch": "main", + "target_head": "3d3474a731f9ef3ee1f41935e63bca3afb70db56", + "root_target": "main", + "immediate_target": "main", + "before_tracked_diff_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "after_tracked_diff_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "output_tail": [ + "make[1]: Entering directory '/home/weichen/projects/Agent-System-Dev'", + "[repo] branch=main head=3d3474a731", + "[remote] origin/main=3d3474a731 ahead=0 behind=0", + "[tree] clean submodules_drift=0 uninit=0", + "[worktrees] linked=7", + "[initiatives] local cards (not authoritative): none", + "[hooks] core.hooksPath=scripts/hooks(pre-commit/post-merge 实际接线)", + "[facts] policy/facts.md 6 条事实均在有效期内", + "[required-reading] core/baseline.md, workflows/delivery.md §1, policy/delivery.md", + "[R0] 3d3474a731(完整:3d3474a731f9ef3ee1f41935e63bca3afb70db56)", + "[worktree] before-sync: recursive component checks passed", + "[verdict] READY — 保留本次 precheck receipt 后建任务工作区:PRECHECK_RECEIPT=/tmp/task-precheck.json make task-start NAME=feature/your-branch", + "make[1]: Leaving directory '/home/weichen/projects/Agent-System-Dev'" + ], + "output_sha256": "8fe96dfd5cc52716edb7b4361609ea244aa109e4028777d1cdaf8637be6b8a08", + "receipt_sha256": "3b4027f3dabd3bb334b3ac7767771099e439b8e67c3677c997a5c78c8c7ddfb2", + "receipt_path": "/home/weichen/.cache/agent-system-dev/evidence/3b4027f3dabd3bb334b3ac7767771099e439b8e67c3677c997a5c78c8c7ddfb2.json" +} +``` + + +```json +{ + "summary_schema": 1, + "source": "SELF", + "timestamp": "2026-10-22T13:49:47.717844+00:00", + "command": "PYTHONDONTWRITEBYTECODE=1 python3 -m unittest tests.test_facts_verify tests.test_ci_credentials tests.test_task_triage tests.test_ci_wait tests.test_svc_precheck", + "exit_code": 0, + "cwd": "/home/weichen/projects/Agent-System-Dev-wt-fix-gitea-endpoint-migration", + "before_head": "6cb6a276ca3e10101cd76db1bd3d77834e54e551", + "after_head": "6cb6a276ca3e10101cd76db1bd3d77834e54e551", + "branch": "fix/gitea-endpoint-migration", + "target_branch": "main", + "target_head": "cb36b59accd0418c5ca952912d7c181b83038a4c", + "root_target": "main", + "immediate_target": "main", + "before_tracked_diff_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "after_tracked_diff_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "output_tail": [ + ".............................................................................", + "----------------------------------------------------------------------", + "Ran 77 tests in 30.719s", + "", + "OK" + ], + "output_sha256": "8e55dbb47a553d2c5a34ce16057ed2d742b908e45f6ab4f8119212911a554e74", + "receipt_sha256": "2c2e2c19d6f0cc3734c9c6ae986bc3e3021a91caa320373d66158cab4f1ec124", + "receipt_path": "/home/weichen/.cache/agent-system-dev/evidence/2c2e2c19d6f0cc3734c9c6ae986bc3e3021a91caa320373d66158cab4f1ec124.json" +} +``` + + +```json +{ + "summary_schema": 1, + "source": "SELF", + "timestamp": "2026-10-22T13:50:40.361266+00:00", + "command": "make test-governance", + "exit_code": 0, + "cwd": "/home/weichen/projects/Agent-System-Dev-wt-fix-gitea-endpoint-migration", + "before_head": "6cb6a276ca3e10101cd76db1bd3d77834e54e551", + "after_head": "6cb6a276ca3e10101cd76db1bd3d77834e54e551", + "branch": "fix/gitea-endpoint-migration", + "target_branch": "main", + "target_head": "cb36b59accd0418c5ca952912d7c181b83038a4c", + "root_target": "main", + "immediate_target": "main", + "before_tracked_diff_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "after_tracked_diff_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "output_tail": [ + "test_feature_missing_parent_is_allowed (test_write_guard.WriteGuardTests.test_feature_missing_parent_is_allowed) ... ok", + "test_invalid_json_is_denied (test_write_guard.WriteGuardTests.test_invalid_json_is_denied) ... ok", + "test_missing_parent_on_main_is_denied (test_write_guard.WriteGuardTests.test_missing_parent_on_main_is_denied) ... ok", + "test_missing_unknown_and_malformed_write_input_are_denied (test_write_guard.WriteGuardTests.test_missing_unknown_and_malformed_write_input_are_denied) ... ok", + "test_non_git_destination_is_explicitly_outside_scope (test_write_guard.WriteGuardTests.test_non_git_destination_is_explicitly_outside_scope) ... ok", + "test_nonwrite_tools_are_outside_scope (test_write_guard.WriteGuardTests.test_nonwrite_tools_are_outside_scope) ... ok", + "test_relative_path_uses_hook_cwd_not_process_cwd (test_write_guard.WriteGuardTests.test_relative_path_uses_hook_cwd_not_process_cwd) ... ok", + "test_symlink_into_main_with_missing_parents_is_denied (test_write_guard.WriteGuardTests.test_symlink_into_main_with_missing_parents_is_denied) ... ok", + "test_valid_multi_file_patch_on_feature_is_allowed (test_write_guard.WriteGuardTests.test_valid_multi_file_patch_on_feature_is_allowed) ... ok", + "", + "----------------------------------------------------------------------", + "Ran 553 tests in 368.627s", + "", + "OK (skipped=18)", + "make[1]: Leaving directory '/home/weichen/projects/Agent-System-Dev-wt-fix-gitea-endpoint-migration'" + ], + "output_sha256": "e283e1b732170416dfd71d6ccb9118f756ac64d123a8c50b939592185c0096de", + "receipt_sha256": "aa4fdc711f5d0839248ecefdc5e1242c6cb2d04ca3efde90099300e456f78f71", + "receipt_path": "/home/weichen/.cache/agent-system-dev/evidence/aa4fdc711f5d0839248ecefdc5e1242c6cb2d04ca3efde90099300e456f78f71.json" +} +``` +| 同步(记录前对象) | cb36b59accd0418c5ca952912d7c181b83038a4c | 1383cf1d2bc0dbaaecebed7d20c26d6ec8d2d783 | 2026-10-22T14:08:07Z | +| 同步(记录前对象) | 6ced938a126981ee2a4fab671a2da94f49cb56c5 | 8207d780d12fa8c605b18fc7fa5f8cd3e8f6bc42 | 2026-10-22T16:37:40Z | +| 同步(记录前对象) | 0650e81133b853f27e8e53f516de8f6c1e73e4a4 | 0269b0c35caf9e8d2a8471fcd2ef4876a04532f4 | 2026-10-23T05:42:58Z | diff --git a/deps/agent-command b/deps/agent-command index fe7987dc..f0fc65de 160000 --- a/deps/agent-command +++ b/deps/agent-command @@ -1 +1 @@ -Subproject commit fe7987dc03e96d59705a547e2099cdea13affcd2 +Subproject commit f0fc65de2bd7ed38a265fe83c43992518838fe45 diff --git a/deps/agent-document-renderer b/deps/agent-document-renderer index 3f259990..40e5c671 160000 --- a/deps/agent-document-renderer +++ b/deps/agent-document-renderer @@ -1 +1 @@ -Subproject commit 3f259990b5d43ec0d318f39d496816140ab559b5 +Subproject commit 40e5c671d1ef786ceba62bf784bf3aa53c5da26d diff --git a/deps/agent-intent b/deps/agent-intent index 7f3ff6a1..28833bcf 160000 --- a/deps/agent-intent +++ b/deps/agent-intent @@ -1 +1 @@ -Subproject commit 7f3ff6a1873ec052fa47101b24b8c7383b3c2b6d +Subproject commit 28833bcfca52a72b0c69f2154d0340efdcd87555 diff --git a/deps/agent-native b/deps/agent-native index be556f46..8f19a4d7 160000 --- a/deps/agent-native +++ b/deps/agent-native @@ -1 +1 @@ -Subproject commit be556f4641af0cbc4d8cbc8ead6e71cb86068d30 +Subproject commit 8f19a4d78d2ce3d39b56cbc03b1d6990232c1ddf diff --git a/deps/agent-squad b/deps/agent-squad index 95b387d7..a28aad52 160000 --- a/deps/agent-squad +++ b/deps/agent-squad @@ -1 +1 @@ -Subproject commit 95b387d722caedf37bbf1e86699a2db629c27835 +Subproject commit a28aad52822bccc81438ea95babaee8c20508fdf diff --git a/deps/development-guidelines b/deps/development-guidelines index a15db508..3ed98213 160000 --- a/deps/development-guidelines +++ b/deps/development-guidelines @@ -1 +1 @@ -Subproject commit a15db5085585f199c3c399824f6cf24c3144bbd5 +Subproject commit 3ed982138c1ec065dc19b9871715af0c29836c21 diff --git a/deps/development-manager b/deps/development-manager index 2c2e3725..24e8a5c8 160000 --- a/deps/development-manager +++ b/deps/development-manager @@ -1 +1 @@ -Subproject commit 2c2e37255807ce94c945759925d6361e72977807 +Subproject commit 24e8a5c8ba9833437672e8c72841de8c54db321d diff --git a/deps/error-code-system b/deps/error-code-system index a3ee67bb..00c03035 160000 --- a/deps/error-code-system +++ b/deps/error-code-system @@ -1 +1 @@ -Subproject commit a3ee67bba269e1276c14e22c026171ecf2cf6190 +Subproject commit 00c03035b5c3343911a07461d857d8a67afd4fdb diff --git a/deps/logging-system b/deps/logging-system index 49b5d8be..70054930 160000 --- a/deps/logging-system +++ b/deps/logging-system @@ -1 +1 @@ -Subproject commit 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 +Subproject commit 7005493077f25603b4ba1452f8454da844565ecd diff --git a/docs/superpowers/reviews/2026-10-22-gitea-endpoint-migration-review.md b/docs/superpowers/reviews/2026-10-22-gitea-endpoint-migration-review.md new file mode 100644 index 00000000..89f1e91c --- /dev/null +++ b/docs/superpowers/reviews/2026-10-22-gitea-endpoint-migration-review.md @@ -0,0 +1,96 @@ +# 独立 Review:fix/gitea-endpoint-migration(第 2 轮) + +- 日期:2026-10-22;Review 会话:全新独立会话(本会话未参与实施) +- 对象:分支 `fix/gitea-endpoint-migration` HEAD `6cb6a276`,base `3d3474a731f9ef3ee1f41935e63bca3afb70db56` +- 实施 diff:`/tmp/gitea-mig-review2.diff`(已核对与 `git diff 3d3474a7..HEAD` 逐字节一致,唯一差异为本报告新文件与任务卡 `.task/fix-gitea-endpoint-migration.md`,均不在功能范围) +- 上轮(r1)唯一阻塞项:`plugins/registry.json` rdm 条目仍是旧 SSH 端点;本轮经 repair transport 修复,r1→r2 diff 增量恰为该文件一处 URL 替换,已核对。 + +## 总体判定 + +**REVIEW PASS(无阻塞项)。** + +五项核对点全部通过:旧端点功能性引用已清零(历史记录与刻意保留的 F4 负例除外);新端点两形态(web 无端口 / SSH 端口 52222)全仓 49 处书写一致;测试负例语义完整保留并实测通过;`policy/facts.md` 变更严格限于 F1—F3 行与 last_verified;diff 无秘密入仓。 + +## 分级清单 + +### 阻塞项 + +无。 + +### 非阻塞建议(不阻塞合入,仅记录) + +1. **历史文档中的旧 URL 仅为记录,防止误复用**:`docs/superpowers/plans/2026-10-16-development-governance-v2-master.md`(文末双钥匙命令段含 `API=https://git-home.u1680832.nyat.app:30319/api/v1`)、`docs/superpowers/plans/2026-10-17-guidelines-governance-adoption.md`、`docs/superpowers/specs/2026-10-20-fast-slow-o2-i{1,2}-review.md` 内含旧 git-home 链接。均为已 CLOSED/MERGED 的历史记录(PR/CI 当时事实),属本单元豁免类;且 AGENTS.md 已规定端点事实只以 `policy/facts.md` 为准。建议后续如有人重放这些命令段,以 facts.md 现行端点替换,勿照抄。 +2. **F4 存在已知漂移**:F4(旧 git-panel 端点 TLS 握手失败)last_verified 仍为 2026-10-14,任务卡已注记「F4 FAIL 已知漂移」。F4 刻意不动符合单元范围;漂移刷新属 facts 维护单元职责,与本迁移无耦合。 +3. **`.task/` 归档与 artifacts 内大量旧端点 URL**:均为任务历史回执/归档(豁免类),无需处理;列出仅为完整性确认。 + +## 核对点结果 + +### 1) 完整性——旧端点功能性引用清零 ✅ + +全仓扫描(排除 `.git/`、`.task/`)`git-ssh.u1680832` / `git-home.u1680832` 零残留;`git-panel.u1680832` 与裸 `u1680832` 仅剩以下刻意保留项: + +| 位置 | 性质 | 判定 | +|---|---|---| +| `policy/facts.md:11` | 退役端点政策禁令(「一律不得使用」) | 刻意保留,正确 | +| `policy/facts.md:21`(F4) | 旧端点 TLS 观察事实及探针命令 | 单元规定 F4 不动,正确 | +| `tests/test_facts_verify.py:372,377` | F4 探针负例(针对退役端点) | 与 F4 配套,正确 | +| `tests/test_ci_credentials.py:167` | 负例:无 scheme 的 metadata_url 必须被拒(实测 refused,0 请求) | 负例语义,正确 | +| `tests/test_task_triage.py:394`、`tests/test_ci_wait.py:118` | 合成 fixture(`git.example`/`.invalid`) | 非 real 端点,正确 | +| `docs/superpowers/{plans,specs}/*.md`(4 文件) | 历史 CLOSED/MERGED 记录 | 豁免类,见非阻塞 1 | + +此前未覆盖的文件类型已补查:全仓 JSON/TOML/YAML/ini(`policy/architecture.yaml`、`policy/architecture-baseline.json`、`plugins/**.json`、`examples/**.json`、`.zcode/config.json`、`docs/structure/cockpit-e2e.yaml`、`docker/`、`.templates/`、`Makefile`、`AGENT-EXECUTION.md`、`PROJECT.md`、`AGENTS.md`)均无旧端点引用;唯一含端点的 JSON 为 `plugins/registry.json`,已迁移。 + +### 2) 正确性——新端点格式一致 ✅ + +全仓 49 处 `gitea.naitangbaobao.cn` 全部落在两形态(`sort|uniq` 核对): + +- Web:`https://gitea.naitangbaobao.cn`(无端口),派生 `/api/v1`(task_triage DEFAULT_API、task.sh 两处 `${web_base}/api/v1`)、`/api/v1/user`(facts-verify ENDPOINT 及表头注释)、`/api/v1/version`(F1)、`/weichen/Agent-System-Dev/issues/518`(delivery 队列链接)。 +- SSH:`ssh://git@gitea.naitangbaobao.cn:52222/weichen/.git`——`.gitmodules` 全部 14 条 URL、`plugins/registry.json`(rdm,上轮阻塞项)、`scripts/svc.sh` RDM_ORIGIN_DEFAULT、`ci.yaml` 4 处 allowlist 前缀 + 2 处 insteadOf 改写前缀、`tests/test_ci_credentials.py`/`test_svc_realcombo.py` 期望值、facts.md F3。 + +无混写(无新域名带旧端口、无旧域名、无 web 误带 52222、无 SSH 缺 52222)。`ci.yaml` 的 `SERVER` 仍强制平台注入 http(s) URL,`GIT_CONFIG_VALUE_2` 以新 SSH 前缀做 insteadOf → `$SERVER/weichen/`,链路自洽。 + +### 3) 测试负例语义保留 ✅ + +`tests/test_facts_verify.py` `test_f2_rejects_unregistered_destination_before_reading_credentials` 的 bad_urls 逐项映射:http 明文、`evil.invalid`、错端口 `:30320`、显式默认端口 `:443`(替代旧「无端口」负例——`facts-verify.sh` 对 ENDPOINT 做整串比较,`:443` 同样被拒,语义等价)、URL 内凭据、`@evil.invalid` 重定向、`#frag`、`?next=`、`/users`、`/user/../admin`、尾随空格——全部保留,且仍断言「未登记目的地不发请求、不读凭据」。重定向(301/302/303/307/308)不跟随、不转发 Authorization 的断言保留。本地实测(stub 断网,离线): + +- `tests.test_facts_verify` 8/8 OK +- `tests.test_ci_credentials` 9/9 OK(含 `git-panel` 无 scheme 负例仍 refused) +- `tests.test_task_triage` 29/29 OK +- `tests.test_ci_wait` 11/11 OK +- `tests.test_svc_realcombo` 16 skipped(设计上需 `SVC_TEST_REAL=1`,离线 NOT_RUN,符合文件头条件) +- `bash -n` task.sh / facts-verify.sh / svc.sh 通过;`task_triage.py` 编译通过;`registry.json` JSON 合法 + +### 4) policy/facts.md 变更范围 ✅ + +`git diff base..HEAD -- policy/facts.md` 仅 3 行:F1、F2、F3 行(端点 URL + last_verified 2026-10-14→2026-10-22)。F4/F5/F6 行逐字未动,表前政策禁令段未动。F2 验证命令仍不含 curl/Authorization/.secrets(`test_registry_separates_retired_endpoint_policy_from_tls_observation` 实测通过,该测试直接解析现行 facts.md)。 + +### 5) 无秘密入仓 ✅ + +对 HEAD 全量 diff 的 `+` 行做秘密模式扫描(长随机串、`ghp_`/`AKIA`/`xox`、PEM 头、password/secret 赋值等):命中行全部为 git URL、SHA256、任务卡元数据与本地路径,无凭据值。测试 token 均为 `synthetic-*-not-a-real-secret`;`facts-verify.sh` 仍在运行时进程内读取 `~/.secrets/gitea`,仓内仅存路径指针。 + +## 复现命令 + +```bash +# diff 范围一致性(本报告对象与实际 HEAD diff 一致,除 .task 卡与本报告) +git diff 3d3474a731f9ef3ee1f41935e63bca3afb70db56..HEAD -- . ':(exclude).task' > /tmp/actual-head-diff.diff +diff /tmp/gitea-mig-review2.diff /tmp/actual-head-diff.diff && echo MATCH + +# 旧端点残留(应仅剩 facts.md 禁令/F4 与测试负例/fixture/历史文档) +grep -rn "u1680832" . | grep -v "^\./\.git/" | grep -v "^\./\.task/" | grep -v "docs/superpowers/" + +# 新端点一致性(应只出现两形态) +grep -rhn "gitea\.naitangbaobao\.cn" . | grep -v "^\./\.task/" \ + | grep -oE "[a-z]+://[^)\`'\" ,;;]*" | sort | uniq -c | sort -rn + +# facts.md 变更范围(应仅 F1—F3 三行) +git diff 3d3474a731f9ef3ee1f41935e63bca3afb70db56..HEAD -- policy/facts.md + +# 负例与单测(离线,stub 断网) +python3 -m unittest tests.test_facts_verify tests.test_ci_credentials \ + tests.test_task_triage tests.test_ci_wait tests.test_svc_realcombo +``` + +## 证据与边界 + +- 本报告所列测试输出为本地离线实测(SELF 级);端点可达性(F1—F3 的 curl/ls-remote)属网络验证,本单元 `network=false`,**NOT_RUN**,以实施侧任务卡记录的 F1/F2/F3 PASS(新端点实测)为准,合入前由必需 CI 复核。 +- 审阅者为全新独立会话,未参与实施;Review 仅产出本报告,未实施任何修复。 diff --git a/modules/backend b/modules/backend index bd5c0f39..96393b77 160000 --- a/modules/backend +++ b/modules/backend @@ -1 +1 @@ -Subproject commit bd5c0f39e642dfac2e951659a0ff2264791372c2 +Subproject commit 96393b77f7fcab5898b9682df2ce4ac06ea14dc0 diff --git a/modules/core b/modules/core index 0cf03446..614dcbff 160000 --- a/modules/core +++ b/modules/core @@ -1 +1 @@ -Subproject commit 0cf03446c458e1238a3d20a031becd4450d63228 +Subproject commit 614dcbff4b866b82ffcf69c38535a2a19cfee955 diff --git a/modules/documents b/modules/documents index 2e9c3bc1..103d7c34 160000 --- a/modules/documents +++ b/modules/documents @@ -1 +1 @@ -Subproject commit 2e9c3bc1d8be6079832dcc8a26ac1a0c01826e90 +Subproject commit 103d7c34fe805ea5bc977103fa8e6b6bffbe6b3b diff --git a/modules/frontend b/modules/frontend index 279b2d02..807c6568 160000 --- a/modules/frontend +++ b/modules/frontend @@ -1 +1 @@ -Subproject commit 279b2d02a2724a6eeb4557af295b4c7346cb46d1 +Subproject commit 807c6568863ab31bcc60f6b3a0e8d46e5cc9d5a9 diff --git a/modules/ui b/modules/ui index df1c3ed8..ef0672e5 160000 --- a/modules/ui +++ b/modules/ui @@ -1 +1 @@ -Subproject commit df1c3ed8d601aba8e6ac5fb8e155f264fe979a68 +Subproject commit ef0672e57032ee0dc656bc103b1eb1b52977beee diff --git a/plugins/registry.json b/plugins/registry.json index 7c469a93..0aed7599 100644 --- a/plugins/registry.json +++ b/plugins/registry.json @@ -3,7 +3,7 @@ { "id": "rdm", "name": "研发记忆 RDM", - "repo": "ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-RDM.git", + "repo": "ssh://git@gitea.naitangbaobao.cn:52222/weichen/Agent-System-RDM.git", "repoEnv": "SVC_RDM_ORIGIN", "defaultRef": "origin/main", "goModule": "agent-system-rdm", diff --git a/policy/delivery.md b/policy/delivery.md index abf76bdd..48daa5e7 100644 --- a/policy/delivery.md +++ b/policy/delivery.md @@ -381,7 +381,7 @@ Review 只将阻塞项列为必修;非阻塞意见标明后续建议,不得 解决冲突和重跑最终 CI。本节只安排 Dev `refs/heads/main` 的最终交付顺序;需求、授权、阶段状态和 证据仍在原任务卡,受保护分支的最终准入仍由 Gitea 执行。 -- **队列**:Dev main 只用一份[合入队列 #518](https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/issues/518), +- **队列**:Dev main 只用一份[合入队列 #518](https://gitea.naitangbaobao.cn/weichen/Agent-System-Dev/issues/518), 只记录顺序和当前窗口:任务/PR、owner、依赖、就绪状态、当前 base/head、CI、合入结果。 - **职责**:协调智能体维护顺序和窗口;任务 owner 负责分支内容和必要整改;窗口内的同步、冲突处置、 Review、当前 HEAD CI 核验和所有 PR 合入由智能体执行。 diff --git a/scripts/svc.sh b/scripts/svc.sh index 546c41e5..a082ab6a 100755 --- a/scripts/svc.sh +++ b/scripts/svc.sh @@ -144,7 +144,7 @@ SRC_DIR="${SVC_SRC_DIR:-${XDG_CACHE_HOME:-$HOME/.cache}/agent-system-svc/src}" # 独立 RDM 源仓(下游组合仓 Agent-System-RDM 的干净克隆;SVC_RDM_SRC_DIR 覆盖路径, # SVC_RDM_ORIGIN 覆盖克隆来源)。rdm 源的解析/列举/物化全部基于它,语义与 SRC_DIR 一致。 RDM_SRC_DIR="${SVC_RDM_SRC_DIR:-${XDG_CACHE_HOME:-$HOME/.cache}/agent-system-svc/rdm-src}" -RDM_ORIGIN_DEFAULT="ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-RDM.git" +RDM_ORIGIN_DEFAULT="ssh://git@gitea.naitangbaobao.cn:52222/weichen/Agent-System-RDM.git" # 提示信息走 stderr:stdout 只留给数据(提交表/服务表/DSN),便于 $( ) 捕获组合。 c_info() { [ "${CLI_QUIET:-0}" = 1 ] && return 0; printf '\033[1;34m[svc]\033[0m %s\n' "$*" >&2; } diff --git a/scripts/task.sh b/scripts/task.sh index c88d46ce..62589e5a 100755 --- a/scripts/task.sh +++ b/scripts/task.sh @@ -813,7 +813,7 @@ card_merge_squash() { # $1=branch $2=ref → squash/rebase 落地没有 merge # 仅查最近 5 页(250 条):card_merge 的 merge 提交路径仍是主路径,此兜底面向新近任务卡。 local token="${GITEA_TOKEN:-}" web_base url repo owner api payload pg found sha [ -n "$token" ] || return 1 - web_base="${TASK_CARD_WEB_BASE:-https://git-home.u1680832.nyat.app:30319}" + web_base="${TASK_CARD_WEB_BASE:-https://gitea.naitangbaobao.cn}" url=$(git remote get-url origin 2>/dev/null) || return 1 url="${url%.git}" repo=$(basename "$url"); owner=$(basename "$(dirname "$url")") @@ -951,7 +951,7 @@ cmd_close_self() { esac pr="$nums" fi - web_base="${TASK_CARD_WEB_BASE:-https://git-home.u1680832.nyat.app:30319}" + web_base="${TASK_CARD_WEB_BASE:-https://gitea.naitangbaobao.cn}" url=$(git remote get-url origin); url="${url%.git}" repo=$(basename "$url"); owner=$(basename "$(dirname "$url")") link="${web_base}/${owner}/${repo}/pulls/${pr}" @@ -981,7 +981,7 @@ cmd_close() { fetch_target # 默认值取远端通告的 Web 面(git push 输出的 PR 建议链接);可用 TASK_CARD_WEB_BASE 覆盖。 # git-panel 前缀已失效(TLS 握手失败),默认值改为实测可用的 git-home(AGENTS.md 访问事实节)。 - local web_base="${TASK_CARD_WEB_BASE:-https://git-home.u1680832.nyat.app:30319}" + local web_base="${TASK_CARD_WEB_BASE:-https://gitea.naitangbaobao.cn}" local url owner repo url=$(git remote get-url origin); url="${url%.git}" repo=$(basename "$url"); owner=$(basename "$(dirname "$url")") diff --git a/scripts/task_triage.py b/scripts/task_triage.py index c77742c4..7dca33dd 100644 --- a/scripts/task_triage.py +++ b/scripts/task_triage.py @@ -29,7 +29,7 @@ import urllib.parse import urllib.request SCHEMA = "agent-system/task-triage/v1" -DEFAULT_API = "https://git-home.u1680832.nyat.app:30319/api/v1" +DEFAULT_API = "https://gitea.naitangbaobao.cn/api/v1" DEFAULT_TARGET = "main" DEFAULT_MAX_AGE = 14400 PAGE_LIMIT = 50 diff --git a/tests/test_ci_credentials.py b/tests/test_ci_credentials.py index e29b24b9..c72b33ac 100644 --- a/tests/test_ci_credentials.py +++ b/tests/test_ci_credentials.py @@ -11,8 +11,8 @@ from urllib.parse import urlsplit WORKFLOW = Path(__file__).resolve().parents[1] / ".gitea/workflows/ci.yaml" -SERVER = "https://git-home.u1680832.nyat.app:30319" -SSH = "ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/" +SERVER = "https://gitea.naitangbaobao.cn" +SSH = "ssh://git@gitea.naitangbaobao.cn:52222/weichen/" ROOT_TOKEN = "synthetic-root-token-not-a-real-secret" SUB_TOKEN = "synthetic-component-token-not-a-real-secret" diff --git a/tests/test_svc_realcombo.py b/tests/test_svc_realcombo.py index 9e01c195..02d69bcb 100644 --- a/tests/test_svc_realcombo.py +++ b/tests/test_svc_realcombo.py @@ -56,7 +56,7 @@ def ci_git_env(): "GIT_CONFIG_KEY_1": "http.%s/.extraheader" % CI_SERVER, "GIT_CONFIG_VALUE_1": "AUTHORIZATION: token " + CI_TOKEN, "GIT_CONFIG_KEY_2": "url.%s/weichen/.insteadOf" % CI_SERVER, - "GIT_CONFIG_VALUE_2": "ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/", + "GIT_CONFIG_VALUE_2": "ssh://git@gitea.naitangbaobao.cn:52222/weichen/", "GIT_CONFIG_KEY_3": "core.hooksPath", "GIT_CONFIG_VALUE_3": "/dev/null", }