Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-norm-remediation-u4.md; R0=eef7e5e778cabcb6216f74b74213a3d7511f383b.
Impact: task metadata only; the feature workspace starts at 6cee4c5728.
Refs: .task/feature-norm-remediation-u4.md
Why: Bind the worker to approved U4 paths and offline regression scenarios.
Evidence: U4 plan and strict READY receipt; parent head 6cee4c5.
Impact: Task metadata only.
Refs: PR #616
Why: Save offline verification before the final credential-boundary repair.
Evidence: Six offline fact verification tests and syntax/diff checks passed on 7e0b0e4.
Impact: SELF task record only.
Refs: U4 remediation plan
Why: Preserve credential-boundary and truthful-fact verification before delivery.
Evidence: Eight offline tests and 503 governance tests passed (18 skipped); independent fresh PI review has no blocker.
Impact: Task record only; implementation remains at reviewed candidate 39834ead.
Refs: U4 remediation plan
Why: include the current parent initiative baseline before verification.
Evidence: resolved feature/norm-remediation=c6fe5adba34d7266e7bcfbb9a2c64a0ae61e9b8e.
Impact: integrate parent initiative changes without rewriting task history.
Refs: task-sync
Why: close the task card inside its own PR so landing it needs no post-merge backfill or separate close PR.
Evidence: .task/feature-norm-remediation-u4.md -> .task/archive/feature-norm-remediation-u4.md; status 已完成(合入前闭合); PR #621https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/621.
Impact: task metadata only; the card is archived within PR #621 and lands with its merge commit.
Refs: task.sh close --self
weichen
merged commit 825e4fc98f into feature/norm-remediation2026-10-18 17:47:38 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
feature/norm-remediation-u4 任务卡
任务主记录:PR #621 https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/621;状态:已完成(合入前闭合);owner:weichen
权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)=
eef7e5e778工作区:/home/weichen/projects/Agent-System-Dev-wt-feature-norm-remediation-u4(worktree);分支:feature/norm-remediation-u4
分支类型:child;initiative_id:feature-norm-remediation;root_target:main;immediate_target:feature/norm-remediation;accepting_requirements:false;parent_branch:feature/norm-remediation;parent_head_sha:6cee4c5728f1c5e723e599986f1f0e4372ec3032;parent_pr:无;parent_source:origin
需求分流:免(父 initiative 子任务登记已列出 feature/norm-remediation-u4;parent_head_sha=6cee4c5728f1c5e723e599986f1f0e4372ec3032)
授权与交付终点:按用户批准的 U1-U7 规范整改计划实施 U4,并完成 Review、测试、PR/CI 后合入 initiative。范围限
policy/facts.md、scripts/facts-verify.sh、tests/test_facts_verify.py;不接触真实凭据、不跑现场事实刷新、不修改平台或其他 U-ID。交付模式:goal-first(目标、范围和交付终点一次确认;范围内连续推进)
实施执行:agent-per-unit(配置:AGENT-EXECUTION.md)
合入执行:agent(已授权交付范围内,Review 通过、冲突解决且当前 HEAD 的 CI 通过后合入)
流程依据:仓库根目录 policy/delivery.md(归档后仍按仓库根目录定位)
目标与非目标
目标:F2 的验证路径不让展开后的 token 进入子进程 argv、输出或证据;F4 验证只刷新它能证明的事实,DNS/超时/泛化网络错误不能刷新 TLS 特定原因。复用已有 token-safe 请求模式,回归使用合成 HOME/IMC 凭据、桩客户端和临时表,验证正常/异常及 --update 日期语义。
计划:U1-U7 规范整改实施计划 U4(唯一正文位于
Agent-System-Dev-wt-feature-norm-remediation-plan/docs/superpowers/plans/2026-10-18-0849-fix-development-norm-remediation-plan.md)。实际 child 代码基线为 parent_head_sha6cee4c5;启动收据的 R0 为当时最新 root main 快照,二者不混同。Agent 实施收据
路由与 fail-stop 规则见根目录 AGENT-EXECUTION.md 与 policy/delivery.md;每次尝试一行,原始日志留在源码外收据路径。
7e0b0e4ff839834ead7d25cdc6adc8同步记录
eef7e5e7786cee4c5728证据(Evidence)
结果与验证
39834ead7d5cae48477621b5e68f737ae0082e65重放 8 项离线事实测试、shell syntax/diff 检查通过;make test-governance执行 503 项(18 项 skip),无失败(SELF,完整收据经 evidence 导入)。独立 PI Review 同 head 重放 8 项并判无阻塞项。测试先红后绿证据在各 worker receipt;所有用例只使用合成 HOME/IMC 和客户端桩,不读真实凭据、不访问 Gitea。合入与清理
03b4578a94b710425f11bd74df523a20、attemptd0bfc2e77832核验新进程及独立 Review,执行器本地记录为 SELF,不冒充 CI/GATE 身份;base/head=6cee4c5728f1c5e723e599986f1f0e4372ec3032..39834ead7d5cae48477621b5e68f737ae0082e65,
tested_head=39834ead7d5cae48477621b5e68f737ae0082e65(
git rev-parse HEAD已对账);离线 focused test
PYTHONDONTWRITEBYTECODE=1 python3 -m unittest tests.test_facts_verify -v→ 8 tests in 4.608s OK(test_f2_pass_sends_home_token_in_process_and_leaks_nowhere / test_f2_missing_or_malformed_credentials_fail_without_echo / test_f2_rejected_or_failing_request_does_not_refresh_or_leak / test_f2_rejects_unregistered_destination_before_reading_credentials / test_f2_refuses_redirect_without_forwarding_authorization / test_f4_only_tls_handshake_failure_passes_and_refreshes / test_f4_helper_reports_each_condition_distinctly / test_registry_separates_retired_endpoint_policy_from_tls_observation);
bash -n scripts/facts-verify.sh 无语法错误。
验收逐项:
· HOME token 仅进程内经 Authorization 头发送,child argv/stderr/stdout/收据/登记表中不存在 HOME/IMC 真实凭据值:test_f2_pass 断言 http 拦截仅 1 次且 url=https://git-home.u1680832.nyat.app:30319/api/v1/user,authorization=token <HOME_TOKEN>;assert_no_secrets 覆盖子进程 argv、PATH 桩 curl/wget argv、stdout/stderr、收据 JSON、登记表;
· 凭据缺失/格式错/文件缺失三条 subTest 均 FAIL,http 拦截=[] 即未发请求,stderr 含 "ACCESS_TOKEN" 但不含 token 字面值,且
--update不刷新 F2 日期(保持 OLD_DATE):test_f2_missing_or_malformed_credentials_fail_without_echo;· URL 校验 11 个变体(含 http://、不同端口、userinfo、userinfo@、fragment、查询串、路径尾缀 /../、路径变体、尾随空格)全部 exit 6 且无 http 拦截,且 ACCESS_TOKEN 不在 stderr(端点先于凭据校验):test_f2_rejects_unregistered_destination_before_reading_credentials;脚本侧
if sys.argv[2] != ENDPOINT: ... sys.exit(6)是逐字字符串等价,避开任何 URL 归一化;· 301/302/303/307/308 五种全不转发 Authorization:
NoRedirect(HTTPRedirectHandler).redirect_request固定返回 None,stub 拦截[r["url"] for r in requests]==["https://git-home.u1680832.nyat.app:30319/api/v1/user"]无后续请求、收不到 redirect-target 主机名,且--update模式下 F2 仍是 FAIL 且未刷新日期;· F4 仅 TLS 握手错误判 PASS,dns/timeout/refused/reset/tls-timeout/ok 全 FAIL 且不刷新日期:test_f4_only_tls_handshake_failure_passes_and_refreshes;probe
tls-handshake-fails出口 0/3/4/5/6 区分明确,F4 现有 2026-10-14 last_verified 在policy/facts.md被显式标注为「历史日期…不证明当前 TLS 层握手失败判据;经该判据独立重验前不得当作已核实」,与 F4 行禁用字符串「不得使用」(政策禁令,相对独立)分离(test_registry_separates_retired_endpoint_policy_from_tls_observation);· 测试全离线:
socket.socket.connect/_ex = _deny拒绝未桩接的真实连接,socket.create_connection、ssl.SSLContext.wrap_socket、urllib.request.HTTPSHandler/https_open / http_open全部经 sitecustomize 桩化;HOME 指向 tmpdir 不读真实 ~/.secrets;PATH 桩化 curl/wget 仅写 argv 日志;全程未触达 Gitea 或旧端点;本评审运行无任何--update写回真实policy/facts.md。· reviewer profile/model 以独立运行事件为依据;Shell=bash,Bash 语法
bash -n通过;Python=3.x,task_triage.TOKEN_RE、task_triage.secrets_file_token()、task_triage.http_get_json()、task_triage.Stop已直接阅读验证其 token 仅入 Authorization 头、异常消息仅含type(exc).__name__不含凭据。无阻塞项;不修正实现;不在本评审做合入/CI/PR 操作(合规范围内仅写一条 review 记录)。
c6fe5ad已经 task-sync 合入;仅父任务元数据变化,无冲突;实现/测试/事实文件相对已审已测代码候选39834ead的 diff 为空,既有直接验证仍适用。| 同步(记录前对象) |
c6fe5adba3|ddad783853| 2026-10-18T17:37:17Z |闭合记录(合入前折叠)