Drop remaining hardcoded test ports in favor of free_test_port() #676

Merged
weichen merged 5 commits from fix/remaining-hardcoded-ports into main 2026-10-21 11:04:28 +00:00
Owner

fix/remaining-hardcoded-ports 任务卡

任务主记录:<PR 链接,交付前填写>;状态:进行中;owner:weichen

  • 权威仓:ssh://git@192.168.3.2:2222/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)= 444fb1dee2

  • 工作区:/home/weichen/projects/Agent-System-Dev-wt-fix-remaining-hardcoded-ports(worktree);分支:fix/remaining-hardcoded-ports

  • 分支类型:standalone;root_target:main;immediate_target:main;accepting_requirements:false

  • 需求分流:verdict=NEW;selected_initiative=无;requirement_sha256=f58f9b9127d88193b75ab8240478a0be0643a63075d58cc54884dfc7b9b4e64e;triage_receipt=/tmp/triage-remaining-port-flakes-20261021.json;receipt_sha256=e190b63d6a5bbcb0285d38a8ae9e1a548a6fb3e3a16dffe8e96dd54cc344a27b

  • 授权与交付终点:消除 PR #668 Review 记下的同类端口硬编码脆弱面,提取 helper 并应用到 tests/test_svc.py 与 tests/test_svc_realcombo.py 的相关位点。不得改 scripts/svc.sh、不得削弱断言、不得改动 test_svc_recover.py / test_task_pr_check.py / test_task_triage.py 的端口。

  • 交付模式:goal-first(目标、范围和交付终点一次确认;范围内连续推进)

  • 实施执行:agent-per-unit(配置:AGENT-EXECUTION.md)

  • 合入执行:agent(已授权交付范围内,Review 通过、冲突解决且当前 HEAD 的 CI 通过后合入)

  • 流程依据:仓库根目录 policy/delivery.md(归档后仍按仓库根目录定位)

目标与非目标

<预期结果、受影响入口/模块/契约;明确不做什么。>

Agent 实施收据

路由与 fail-stop 规则见根目录 AGENT-EXECUTION.md 与 policy/delivery.md;每次尝试一行,原始日志留在源码外收据路径。

单元 ID 预期范围 配置摘要 角色 候选顺序 attempt CLI/模型 终态 transport fallback 源码外收据路径
待定义 — NOT_RUN NOT_RUN NOT_RUN NOT_RUN NOT_RUN NOT_RUN NOT_RUN NOT_RUN —

同步记录

节点 sync_base_sha tested_head_sha checked_at
启动 444fb1dee2 444fb1dee2 2026-10-21T10:19:04Z

证据(Evidence)

时间(UTC) 命令 被测HEAD exit 来源 sha256(16)

结果与验证(完成后填写)

  • 结果:新增 tests/_port_alloc.py(free_test_port() 每次调用通过 socket reservation 拿一个真正空闲的端口,with 块退出立即 close)。修改 tests/test_svc.py(6 处 svc ... --port 18842/18843/18844 改为每次 alloc 一个端口,668 与 942 行使用同一分配值因为是同一测试中相同实例的重复确认)和 tests/test_svc_realcombo.py(3 个用例各 alloc 一次端口,seed_real/svc/http_ok 三处共享)。register_pg/DSN 18951 按 PR #668 Review 注明仅写 svc.env、从不绑端口,保留不动;test_svc_recover.py 已有自己的 free_fixture_port 不动;test_task_pr_check.py/test_task_triage.py 的端口仅作字典键,不绑端口。
  • 验证:PASS——tests.test_port_alloc 在 64 负载下 OK;tests.test_svc 23 项 OK;治理套件 527 项 OK(18 skipped);PR #668 的目标用例 test_static_fresh_deploy_registers_pidcheck_and_starts 仍通过。独立 Review(pi-glm,PASS 无阻塞项)。
  • 影响与剩余项:不改任何生产代码;不削弱断言;realcombo 三例的运行级验证 NOT_RUN(环境门禁与禁网限制),由代码走读与模块级 skip 确认替代。Review 记 3 项非阻塞建议(守护测试未覆盖「外部占用」与 TIME_WAIT 避让、文件名单硬编码而非 glob、helper API 单端口 vs 真实用例可能需多端口对),均不阻塞。

合入与清理

  • Review 记录:PASS(独立会话 pi-glm / zai-coding-cn/glm-5.3-flash;base 444fb1dee2a72452be23b97cbaaad9e28c42dffd,head 076a686592f99abb7b4e8c1aa73b7c73b5bccefe;报告 .task/reviews/2026-10-20-remaining-ports-review.md;无阻塞项,3 项非阻塞建议;重放依据:host 独立跑治理套件与 64 负载下的 helper 测试)
  • 冲突记录:NOT_RUN(一次交付前同步,无变更)
  • CI 记录:NOT_RUN(当前 HEAD 完整 SHA、全部必需检查、运行链接、执行身份及 GATE 结果)
  • 合入记录:NOT_RUN(交付授权范围、PR、被核验 HEAD、合入 SHA、目标分支及内容核验)
  • 清理记录:NOT_RUN(授权依据、写者退出确认、worktree/分支/任务卡处置)
{
  "summary_schema": 1,
  "source": "SELF",
  "timestamp": "2026-10-21T10:18:17.467858+00:00",
  "command": "make precheck",
  "exit_code": 0,
  "cwd": "/home/weichen/projects/Agent-System-Dev",
  "before_head": "444fb1dee2a72452be23b97cbaaad9e28c42dffd",
  "after_head": "444fb1dee2a72452be23b97cbaaad9e28c42dffd",
  "branch": "main",
  "target_branch": "main",
  "target_head": "444fb1dee2a72452be23b97cbaaad9e28c42dffd",
  "root_target": "main",
  "immediate_target": "main",
  "before_tracked_diff_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  "after_tracked_diff_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  "output_tail": [
    "[repo]   branch=main head=444fb1dee2",
    "[remote] origin/main=444fb1dee2 ahead=0 behind=0",
    "[tree]   clean submodules_drift=0 uninit=0",
    "[worktrees] linked=2",
    "[recycle] merged un-recycled branches: feature/card-close-20261021-085838Z",
    "[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] 444fb1dee2(完整:444fb1dee2a72452be23b97cbaaad9e28c42dffd)",
    "[worktree] before-sync: recursive component checks passed",
    "[verdict] READY — 保留本次 precheck receipt 后建任务工作区:PRECHECK_RECEIPT=/tmp/task-precheck.json make task-start NAME=feature/your-branch"
  ],
  "output_sha256": "3ab6ad8a3228f50b19b9184ab2ded12a122fb8ecf601866a50c269dd41cf03e2",
  "receipt_sha256": "8bbfc6e4ccd048cce9e097878522ee44a50c32215c0c1df2ab59c8f7d7ae9a83",
  "receipt_path": "/home/weichen/.cache/agent-system-dev/evidence/8bbfc6e4ccd048cce9e097878522ee44a50c32215c0c1df2ab59c8f7d7ae9a83.json"
}
# fix/remaining-hardcoded-ports 任务卡 任务主记录:<PR 链接,交付前填写>;状态:进行中;owner:weichen - 权威仓:ssh://git@192.168.3.2:2222/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)= 444fb1dee2a72452be23b97cbaaad9e28c42dffd - 工作区:/home/weichen/projects/Agent-System-Dev-wt-fix-remaining-hardcoded-ports(worktree);分支:fix/remaining-hardcoded-ports - 分支类型:standalone;root_target:main;immediate_target:main;accepting_requirements:false - 需求分流:verdict=NEW;selected_initiative=无;requirement_sha256=f58f9b9127d88193b75ab8240478a0be0643a63075d58cc54884dfc7b9b4e64e;triage_receipt=/tmp/triage-remaining-port-flakes-20261021.json;receipt_sha256=e190b63d6a5bbcb0285d38a8ae9e1a548a6fb3e3a16dffe8e96dd54cc344a27b - 授权与交付终点:消除 PR #668 Review 记下的同类端口硬编码脆弱面,提取 helper 并应用到 tests/test_svc.py 与 tests/test_svc_realcombo.py 的相关位点。不得改 scripts/svc.sh、不得削弱断言、不得改动 test_svc_recover.py / test_task_pr_check.py / test_task_triage.py 的端口。 - 交付模式:goal-first(目标、范围和交付终点一次确认;范围内连续推进) - 实施执行:agent-per-unit(配置:AGENT-EXECUTION.md) - 合入执行:agent(已授权交付范围内,Review 通过、冲突解决且当前 HEAD 的 CI 通过后合入) - 流程依据:仓库根目录 policy/delivery.md(归档后仍按仓库根目录定位) ## 目标与非目标 <预期结果、受影响入口/模块/契约;明确不做什么。> ## Agent 实施收据 路由与 fail-stop 规则见根目录 AGENT-EXECUTION.md 与 policy/delivery.md;每次尝试一行,原始日志留在源码外收据路径。 | 单元 ID | 预期范围 | 配置摘要 | 角色 | 候选顺序 | attempt | CLI/模型 | 终态 | transport | fallback | 源码外收据路径 | |---|---|---|---|---|---|---|---|---|---|---| | 待定义 | — | NOT_RUN | NOT_RUN | NOT_RUN | NOT_RUN | NOT_RUN | NOT_RUN | NOT_RUN | NOT_RUN | — | ## 同步记录 | 节点 | sync_base_sha | tested_head_sha | checked_at | |---|---|---|---| | 启动 | 444fb1dee2a72452be23b97cbaaad9e28c42dffd | 444fb1dee2a72452be23b97cbaaad9e28c42dffd | 2026-10-21T10:19:04Z | ## 证据(Evidence) <!-- CMD="<命令>" make evidence 写入;手抄/转写输出视为无效证据(AGENTS.md 证据与验证门禁)。 --> | 时间(UTC) | 命令 | 被测HEAD | exit | 来源 | sha256(16) | |---|---|---|---|---|---| ## 结果与验证(完成后填写) - 结果:新增 `tests/_port_alloc.py`(`free_test_port()` 每次调用通过 socket reservation 拿一个真正空闲的端口,with 块退出立即 close)。修改 `tests/test_svc.py`(6 处 `svc ... --port 18842/18843/18844` 改为每次 alloc 一个端口,668 与 942 行使用同一分配值因为是同一测试中相同实例的重复确认)和 `tests/test_svc_realcombo.py`(3 个用例各 alloc 一次端口,seed_real/svc/http_ok 三处共享)。`register_pg`/`DSN 18951` 按 PR #668 Review 注明仅写 svc.env、从不绑端口,保留不动;`test_svc_recover.py` 已有自己的 `free_fixture_port` 不动;`test_task_pr_check.py`/`test_task_triage.py` 的端口仅作字典键,不绑端口。 - 验证:PASS——`tests.test_port_alloc` 在 64 负载下 OK;`tests.test_svc` 23 项 OK;治理套件 527 项 OK(18 skipped);PR #668 的目标用例 `test_static_fresh_deploy_registers_pidcheck_and_starts` 仍通过。独立 Review(pi-glm,PASS 无阻塞项)。 - 影响与剩余项:不改任何生产代码;不削弱断言;realcombo 三例的运行级验证 NOT_RUN(环境门禁与禁网限制),由代码走读与模块级 skip 确认替代。Review 记 3 项非阻塞建议(守护测试未覆盖「外部占用」与 TIME_WAIT 避让、文件名单硬编码而非 glob、helper API 单端口 vs 真实用例可能需多端口对),均不阻塞。 ## 合入与清理 - Review 记录:PASS(独立会话 pi-glm / zai-coding-cn/glm-5.3-flash;base 444fb1dee2a72452be23b97cbaaad9e28c42dffd,head 076a686592f99abb7b4e8c1aa73b7c73b5bccefe;报告 `.task/reviews/2026-10-20-remaining-ports-review.md`;无阻塞项,3 项非阻塞建议;重放依据:host 独立跑治理套件与 64 负载下的 helper 测试) - 冲突记录:NOT_RUN(一次交付前同步,无变更) - CI 记录:NOT_RUN(当前 HEAD 完整 SHA、全部必需检查、运行链接、执行身份及 GATE 结果) - 合入记录:NOT_RUN(交付授权范围、PR、被核验 HEAD、合入 SHA、目标分支及内容核验) - 清理记录:NOT_RUN(授权依据、写者退出确认、worktree/分支/任务卡处置) <!-- Local receipt: SELF. Digests detect corruption; they do not authenticate a reviewer or CI. --> ```json { "summary_schema": 1, "source": "SELF", "timestamp": "2026-10-21T10:18:17.467858+00:00", "command": "make precheck", "exit_code": 0, "cwd": "/home/weichen/projects/Agent-System-Dev", "before_head": "444fb1dee2a72452be23b97cbaaad9e28c42dffd", "after_head": "444fb1dee2a72452be23b97cbaaad9e28c42dffd", "branch": "main", "target_branch": "main", "target_head": "444fb1dee2a72452be23b97cbaaad9e28c42dffd", "root_target": "main", "immediate_target": "main", "before_tracked_diff_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "after_tracked_diff_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "output_tail": [ "[repo] branch=main head=444fb1dee2", "[remote] origin/main=444fb1dee2 ahead=0 behind=0", "[tree] clean submodules_drift=0 uninit=0", "[worktrees] linked=2", "[recycle] merged un-recycled branches: feature/card-close-20261021-085838Z", "[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] 444fb1dee2(完整:444fb1dee2a72452be23b97cbaaad9e28c42dffd)", "[worktree] before-sync: recursive component checks passed", "[verdict] READY — 保留本次 precheck receipt 后建任务工作区:PRECHECK_RECEIPT=/tmp/task-precheck.json make task-start NAME=feature/your-branch" ], "output_sha256": "3ab6ad8a3228f50b19b9184ab2ded12a122fb8ecf601866a50c269dd41cf03e2", "receipt_sha256": "8bbfc6e4ccd048cce9e097878522ee44a50c32215c0c1df2ab59c8f7d7ae9a83", "receipt_path": "/home/weichen/.cache/agent-system-dev/evidence/8bbfc6e4ccd048cce9e097878522ee44a50c32215c0c1df2ab59c8f7d7ae9a83.json" } ```
weichen added 4 commits 2026-10-21 10:52:29 +00:00
Why: establish the authorized task workspace and its initial baseline.

Evidence: preserved precheck receipt in .task/fix-remaining-hardcoded-ports.md; R0=444fb1dee2a72452be23b97cbaaad9e28c42dffd.

Impact: task metadata only; the feature workspace starts at 444fb1dee2.

Refs: .task/fix-remaining-hardcoded-ports.md
Record scope, review PASS and verification for the port allocator
ci / svc-realcombo (pull_request) Successful in 2m43s
ci / test (pull_request) Successful in 9m15s
ci / test-pg (pull_request) Successful in 12m6s
06e3f1bca4
Why: the card must carry the helper's design boundary, the (r1 scope-expansion
-> granted expansion -> r2 success) trajectory, the independent review verdict
and the runtime evidence before delivery.

Evidence:
  /tmp/ports-load-20261021.json: helper test under 64-load OK
  /tmp/ports-svc-tests-20261021.json: tests.test_svc 23 OK
  /tmp/ports-governance-20261021.json: 527 OK (18 skipped)
  /tmp/remaining-ports-impl-r2-20261021.json: cursor, success
  /tmp/remaining-ports-review-r1-20261021.json: pi-glm, PASS

Impact: card metadata only.
Refs: PR #676; fix/remaining-hardcoded-ports
weichen added 1 commit 2026-10-21 10:52:35 +00:00
Fold-close the task card before merge
ci / svc-realcombo (pull_request) Successful in 2m55s
ci / test (pull_request) Successful in 9m11s
ci / test-pg (pull_request) Successful in 11m25s
c89a894530
Why: close the task card inside its own PR so landing it needs no post-merge backfill or separate close PR.
Evidence: .task/fix-remaining-hardcoded-ports.md -> .task/archive/fix-remaining-hardcoded-ports.md; status 已完成(合入前闭合); PR #676 https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/676.
Impact: task metadata only; the card is archived within PR #676 and lands with its merge commit.
Refs: task.sh close --self
weichen merged commit 096b74b477 into main 2026-10-21 11:04:28 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: weichen/Agent-System-Dev#676