embedded-captions: occlusion gate records PASS when check-occlusion times out before its verdict
维护者通常 1 天内回复
评估
- 难度
- 2/5
- 预计耗时
- 1-3 小时
- 新手友好度
- 72/100
- Issue 类型
- 缺陷
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- bash, node.js, typescript
- 领域
- backend, testing-qa
调研方向
从 skills/embedded-captions/scripts/render-and-composite.sh 中 watchdog kill 分支开始,追踪 verdict_at、OCC_RC 和 OCCLUSION_SKIP 如何影响 gate 结果。使用 issue 中描述的 harness 重现 verdict 前的超时,然后检查它是否会导致 gate 失败,同时 verdict 后 teardown 卡住时仍保持当前行为。完成标准是无法将未完成的分析记录为 PASS。
由索引模型根据 Issue 内容生成。
描述
Bug
In skills/embedded-captions/scripts/render-and-composite.sh, the occlusion + overflow gate runs check-occlusion.cjs under a watchdog. When the watchdog fires because no verdict was printed within 150 s (analysis stuck, not the known sharp/libvips teardown hang), the kill branch still sets:
if grep -q 'cap(s) FAIL' "$OCC_LOG"; then OCC_RC=2; else OCC_RC=0; fi
The incomplete log has no cap(s) FAIL line, so OCC_RC=0. The gate then appends occlusion+overflow PASS to _gates.txt and the render continues, even though the analysis never completed. It also logs the misleading "hung after verdict (sharp teardown)" message.
The verdict_at marker (set when the [v2] … word-fail≥ header appears) already distinguishes the two cases, but the kill branch does not consult it.
Reproduction
Extract the gate block (the if [[ -f "$PROJECT/plan.json" && -d "$PROJECT/frames_fg" ]] … fi section) into a harness, lower occ_t0 > 150 to > 4, and stub check-occlusion.cjs with a process that never prints, e.g. setInterval(() => {}, 1000);. On current main the harness exits 0 and _gates.txt reads occlusion+overflow PASS.
Suggested fix
Treat a pre-verdict timeout as a failed gate, keeping the post-verdict teardown tolerance and the existing OCCLUSION_SKIP=1 override:
kill -9 "$OCC_PID" 2>/dev/null
+ if [[ -z "$verdict_at" ]]; then
+ # No verdict: the analysis never finished, so it cannot count as a pass.
+ OCC_RC=3
+ echo "[render] occlusion gate timed out before its verdict — killed; analysis incomplete (rc=3)" >&2
+ break
+ fi
if grep -q 'cap(s) FAIL' "$OCC_LOG"; then OCC_RC=2; else OCC_RC=0; fi
Checked in the same harness with stub analyzers:
| Scenario | Current main |
With the fix |
|---|---|---|
| Hangs before any verdict | PASS (wrong) | aborts, rc 3 |
| Verdict, no FAIL, then teardown hang | PASS | PASS |
Verdict + cap(s) FAIL, then hang |
aborts, rc 2 | aborts, rc 2 |
Pre-verdict timeout with OCCLUSION_SKIP=1 |
PASS (wrong) | continues, recorded as OVERRIDDEN |
No permanent test is included: the skill has no harness for its shell scripts, and a fast test would need the 150 s budget to be configurable. Happy to open a PR with or without that if useful.
Found by automated review while vendoring the skills into a downstream repository (related: #5482, #5483).
- 主要语言
- TypeScript
- 星标
- 54.1k
- 派生
- 4.9k
- 平均合并
- 10 小时 45 分钟
- 30 天内合并 PR
- 654
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
heygen-com/hyperframes 的其他 Issue
-
Player: speed button's accessible name doesn't include its visible text可能已有人在做 @Dante-dan 于 1 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 77/100
heygen-com/hyperframes#6021 · 1 条评论 ·
维护者通常 1 天内回复
-
inspector: build.mjs resolves paths with URL#pathname, fails ENOENT (F:\\F:\\...) and aborts bun run build on Windows可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭
难度 1/5 1 小时以内 新手友好度 88/100
heygen-com/hyperframes#5863 · 1 条评论 ·
维护者通常 1 天内回复
-
product-launch-video: assemble-index.mjs is not idempotent — a second run drops every approved frame video可能已有人在做 @Dante-dan 于 6 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 75/100
heygen-com/hyperframes#5733 ·
维护者通常 1 天内回复
-
gsap_tween_tail counts GSAP's force3D and autoRound flags as properties可能已有人在做 @rudycelekli 于 6 天前认领。 未关闭bug triage/needs-triage
难度 2/5 1-3 小时 新手友好度 78/100
heygen-com/hyperframes#5683 ·
维护者通常 1 天内回复
-
Timeline: show a clip's full name when its label is cut off可能已有人在做 @DanielMcSheehy 于 4 天前认领。 未关闭desktop-candidate difficulty/easy enhancement good first issue help wanted triage/ready
难度 2/5 1-3 小时 新手友好度 85/100
heygen-com/hyperframes#5582 · 2 条评论 ·
维护者通常 1 天内回复
查看 heygen-com/hyperframes 的全部 Issue
相似的 Issue
-
数据界面的横向滚动条缺失未关闭
难度 2/5 1-3 小时 新手友好度 62/100
zilliztech/attu#1037 ·
-
clawsweeper:fix-shape-clear clawsweeper:queueable-fix clawsweeper:source-repro impact:ux-friction issue-rating: 🦞 diamond lobster no-stale P3
难度 2/5 1-3 小时 新手友好度 76/100
openclaw/openclaw#181212 · 1 条评论 · 1 个 reaction ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
apify/apify-mcp-server#1684 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 82/100
Automattic/data-liberation-agent#953 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
siteboon/claudecodeui#1642 ·
维护者通常 5 天内回复