@tea-agent/loop-agent 0.24.9 → 0.24.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.24.10] - 2026-07-29
6
+
7
+ ### 修复
8
+
9
+ - Closeout 重验不再要求 `should`/partial AC 绑定完整 run evidence(仅 `covered` must AC 强制 hash 绑定)
10
+
5
11
  ## [0.24.9] - 2026-07-29
6
12
 
7
13
  ### 重点更新
@@ -22,6 +28,12 @@
22
28
 
23
29
  - 修复前端证据校验在 Windows 下通过长 node -e 命令执行时的终端转义崩溃:改为由 runtime 内部直接校验,兼容 CMD、Git Bash、PowerShell 与 Unix shell
24
30
 
31
+ ## [0.24.9] - 2026-07-29
32
+
33
+ ### 修复
34
+
35
+ - Closeout 重验不再要求 `should`/partial AC 绑定完整 run evidence(仅 `covered` must AC 强制 hash 绑定)
36
+
25
37
  ## [0.24.8] - 2026-07-29
26
38
 
27
39
  ### 重点更新
@@ -284,11 +284,15 @@ export async function validateDeliveryPackage(input) {
284
284
  blockers.push(`Acceptance coverage status is not derivable: ${ac.id}`);
285
285
  if (JSON.stringify([...item.blockedBy].sort()) !== JSON.stringify([...blockedBy].sort()))
286
286
  blockers.push(`Acceptance blockers changed: ${ac.id}`);
287
- for (const ref of expectedRefs)
288
- if (!item.evidence.some((candidate) => candidate.path === ref.path && candidate.sha256 === ref.sha256))
289
- blockers.push(`Acceptance run evidence is missing: ${ac.id}`);
290
- if (qa?.data.acIds.includes(ac.id) && !item.evidence.some((candidate) => candidate.path === qa.ref.path && candidate.sha256 === qa.ref.sha256))
291
- blockers.push(`Acceptance QA evidence is missing: ${ac.id}`);
287
+ // partial / missing / blocked should-ACs intentionally omit full evidence lists
288
+ // (only must ACs covered by QA require run+QA hash binding).
289
+ if (expectedStatus === "covered") {
290
+ for (const ref of expectedRefs)
291
+ if (!item.evidence.some((candidate) => candidate.path === ref.path && candidate.sha256 === ref.sha256))
292
+ blockers.push(`Acceptance run evidence is missing: ${ac.id}`);
293
+ if (qa?.data.acIds.includes(ac.id) && !item.evidence.some((candidate) => candidate.path === qa.ref.path && candidate.sha256 === qa.ref.sha256))
294
+ blockers.push(`Acceptance QA evidence is missing: ${ac.id}`);
295
+ }
292
296
  for (const ref of item.evidence)
293
297
  if (!await hashedRefValid(repoRoot, ref))
294
298
  blockers.push(`Acceptance evidence changed: ${item.acId}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tea-agent/loop-agent",
3
- "version": "0.24.9",
3
+ "version": "0.24.10",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "loop-agent": "bin/loop-agent.js",