From 9eaae7fd63e228fd5f79c6247333cd29d7a737a6 Mon Sep 17 00:00:00 2001 From: randypanding Date: Sat, 29 Aug 2026 16:41:29 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20eval-gate=20=E4=BA=8B=E4=BB=B6=E8=A1=A5?= =?UTF-8?q?=20ts=EF=BC=88verify=5Fevidence=20=E5=BF=85=E5=A1=AB=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E6=89=A7=E6=B3=95=E2=80=94=E2=80=94run=2033263613945?= =?UTF-8?q?=20=E5=AE=9E=E6=B5=8B=E7=BA=A2=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- governance/eval-gate.py | 2 ++ governance/tests/test-eval-gate.sh | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/governance/eval-gate.py b/governance/eval-gate.py index 87c4c50..f0d889d 100644 --- a/governance/eval-gate.py +++ b/governance/eval-gate.py @@ -170,7 +170,9 @@ def main() -> int: f"指标 {len(policy['metrics'])} 项,违 {len(failures)})") if args.event_out: + import datetime event = { + "ts": datetime.datetime.now(datetime.timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"), "kind": "gate", "action": "eval-noninferiority", "verdict": "green" if verdict == "green" else "red", diff --git a/governance/tests/test-eval-gate.sh b/governance/tests/test-eval-gate.sh index a7d977f..425fbd7 100644 --- a/governance/tests/test-eval-gate.sh +++ b/governance/tests/test-eval-gate.sh @@ -51,7 +51,7 @@ run --event-out "$TMP/ev.json"; RC=$? # 事件 schema 契约(write_evidence 消费面:join key+tenant+payload 摘要+无链字段) jq -e '.kind=="gate" and .action=="eval-noninferiority" and .verdict=="green" - and .subject.card=="Cloudbird-Software/.github#421" and .subject.tenant=="cloudbird-internal" + and (.ts|test("^20[0-9]{2}-[0-9]{2}-[0-9]{2}T")) and .subject.card=="Cloudbird-Software/.github#421" and .subject.tenant=="cloudbird-internal" and (.actor.role=="bot") and (.payload|length>0) and (.payload|fromjson|.metrics.precision|keys|length==2) and (has("seq")|not) and (has("hash")|not)' "$TMP/ev.json" >/dev/null \ && ok "事件契约字段齐(join key+tenant+payload 指标摘要,链字段归 write_evidence)" || bad "事件契约缺"