v2 provisional: clear integration 9 failures (whitelist tr+exit, B4 viewport draft, CHANGELOG pointer, workers audit via audit_on_conn, verify-multiuser gate evidence)

9 failures from v1 baseline 02835f6 cleared with provisional resolutions only;
each option pair is annotated provisional in verification/code-to10-v2-failures-summary.md
and awaits user confirmation. No check deleted, no skip added, no bare-phrase
stuffing, default hard merge gate untouched. Known remainder: one pre-existing
date-dependent test_arch_converge failure (Oct-dated fixture vs Nov current
month), failing on pristine v1 too, left for the quota track.
This commit is contained in:
host committed 2026-11-03 02:49:26 +00:00
1 parent cdb481092d
commit c900a0f78d
4 files changed
+187 -30

No files matched your search

+29 -2
View File
@@ -33,7 +33,9 @@
3. viewer 建任务 403;非成员(viewer 对 P2)建任务 403
4. viewer 读 P1 任务成功(200)
5. viewer 读 P2 任务 403(跨项目隔离:P1 成员不是 P2 成员)
6. maintainer 对 completed 测试任务调 merge 成功(200,状态变 merged)
6. maintainer 对 completed 测试任务调 merge 成功(200,状态变 merged;
须附硬门禁全套证据——门禁默认 hard 不变,无证据的合成任务被 409
正是门禁预期行为,不是验证脚本可绕过的旧接口)
7. contributor 对 completed 测试任务调 merge 403
8. maintainer 对 queued 测试任务调 merge 409(状态不对)
9. 无 key 调 API 401
@@ -182,9 +184,34 @@ def main():
finally:
conn.close()
if len(created_task_ids) >= 1:
# 临时消解(v2 provisional,待用户确认后才算定):#240 硬门禁 ×
# #263 验证脚本——本轮临时选“验证脚本补门禁证据”一边,
# 门禁默认 hard 一字不动。另一边(门禁给验证场景开口子)
# 的代价是硬门禁出现调用方可走的例外路径,fail-closed
# 语义即被开口;若用户最终选开口子一边,本处证据须随
# 门禁语义重定,不可两边同时要。
# 证据说明(合成任务的真实值,不是编造的通过凭证):
# 合成任务未跑模型、未改任何仓库文件,故 files_changed
# 为空清单;owned_dir 沿用既定测试口径的拥有目录写法,
# 仅为使目录检查可判定(空清单对任何拥有目录都通过),
# 不声称改了该目录文件;其余五项按硬门禁全套给齐。
# 门禁本身不向 GitHub 核实证据真伪(见 merge_gate_hard
# 的诚实边界),本脚本只在本地临时库上验证接口语义。
gate_evidence = {
"files_changed": [],
"owned_dir": "apps/web",
"branch_protection": "protected",
"ci_status": "success",
"ci_checks": [{"name": "ci", "status": "success"}],
"required_checks": ["ci"],
"contract_version": "v2",
"contract_frozen": True,
"coordinator_approved": True,
"unresolved_review_comments": 0,
}
s, merged = req(base, "POST",
"/tasks/" + created_task_ids[0] + "/merge",
users["maintainer"][1])
users["maintainer"][1], gate_evidence)
check("maintainer 对 completed 任务调 merge(200 且变 merged)",
s == 200 and merged.get("status") == "merged")
if len(created_task_ids) >= 2: