Conversation
issue #286 — HookCommand schema accepted fields that every executor dropped: - promptHandler now applies entry.timeout (same idiom as command/mcp/http; the header doc promised timeout for every hook type but prompt was the only executor never enforcing it — expiry degrades to the existing non-blocking warn) - detectUnsupportedFields now flags allowedEnvVars / statusMessage / per-command once (zero consumers; only entry-level _sessionEntry?.once is read) so configs warn instead of silently no-op; timeout stays unflagged (now fully honored) Test: red-first in test/hook/warn-unsupported.test.ts (flagging), 146 hook tests green.
fix(hook): apply prompt-hook timeout, surface dropped HookCommand fields
issue #285 — after a crash, the boot scan could re-judge the exact boundary the crashed process already judged and committed: evaluatedRevisions is process-local, so both dedup gates let the stale boundary through, and updateAfterJudge inflated turns_used and dispatched a duplicate continuation. - GoalState.Info gains last_judged_msg; updateAfterJudge(judged) persists the judged assistant message id on every continue commit (same transition, atomic) - afterIdle scan path: while the session window still ends on last_judged_msg, no new progress has landed — skip re-evaluation. Live idle events are never gated: each dispatched continuation produces a fresh assistant message, so the live path always judges a new boundary; resume/subgoal edits re-drive through live turns, not the scan. - crash between continue commit and continuation dispatch: the gate skips (avoids inflation + duplicate); recovering the lost dispatch remains the separate explicit design noted in goal CONTEXT.md. Tests (red-first): unchanged-boundary scan commits nothing (turns stay 1, judge 0 calls); advanced-boundary scan proceeds (turns 2, continuation dispatched).
fix(goal): durable boundary gate stops crash-recovery turn inflation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
合并 dev 到 main,关闭全部 open issues:
#288 fix(hook): apply prompt-hook timeout, surface dropped HookCommand fields(closes #286)
entry.timeout(文档承诺全类型支持,此前唯 prompt 型未执行;超时降级为既有非阻塞 warn)#289 fix(goal): durable boundary gate stops crash-recovery turn inflation(closes #285)
Evidence:两 PR 独立通过 dev 门禁(Typecheck+CodeQL);test/goal 105 pass、test/hook 146 pass;红测先行(/tdd);改动 lint 净零。请 main 全量门禁复核。