| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
test(e2e): add antigravity fixture recording and replay coverage (#809) * test(agent): cover antigravity in fakeagent and the e2e user journey * no-mistakes(document): Add antigravity to agent lists, doctor example, and fakeagent doc comment * no-mistakes(document): Add antigravity to agent Values and auto resolution order in docs * feat(recordfixture): capture antigravity fixtures via the owned e2e-record workflow * no-mistakes(review): Assert Antigravity recorder argv forwarding; focused tests pass * fix(recordfixture): stage agy captures atomically and contain the process tree * no-mistakes(review): Test plain fixture replay path by splitting TestRunAgyReplaysRecordedFixture into structured/plain subtests * no-mistakes(review): Validate Antigravity captures and replay configured fixtures reliably * no-mistakes(document): Document Antigravity capture and replay behavior * no-mistakes: apply CI fixes * fix(recordfixture): expect cmd-exe quote escaping in agy argv test; dedupe antigravity docs The windows-core run at 0ba9bd95 failed TestCaptureAgyPlacesForwardedFlagsBeforePromptAndSchemaLast because the fake .cmd agent records Go's literal backslash-quote escaping: cmd.exe %~1 expansion does not undo it, while real agy parses argv with CommandLineToArgvW and sees the unescaped JSON. Assert the escaped schema arg on Windows with a comment explaining the harness-only artifact. After rebasing onto main (#812), agents.md carried two Antigravity adapter sections and two supported-agents table rows. Keep one of each, reflecting final capabilities: session resume via --conversation and terminal-authoritative result precedence (structured_output > result.response > stream deltas). * fix(recordfixture): reject any non-SUCCESS agy result during capture validation validateAgyCapture only inspected the final result status, so a capture containing an ERROR result followed by SUCCESS validated even though the production replay parser treats any ERROR result as fatal. Fail fast on the first non-SUCCESS result and require at least one result event. | 29 天前 | |
test(e2e): add antigravity fixture recording and replay coverage (#809) * test(agent): cover antigravity in fakeagent and the e2e user journey * no-mistakes(document): Add antigravity to agent lists, doctor example, and fakeagent doc comment * no-mistakes(document): Add antigravity to agent Values and auto resolution order in docs * feat(recordfixture): capture antigravity fixtures via the owned e2e-record workflow * no-mistakes(review): Assert Antigravity recorder argv forwarding; focused tests pass * fix(recordfixture): stage agy captures atomically and contain the process tree * no-mistakes(review): Test plain fixture replay path by splitting TestRunAgyReplaysRecordedFixture into structured/plain subtests * no-mistakes(review): Validate Antigravity captures and replay configured fixtures reliably * no-mistakes(document): Document Antigravity capture and replay behavior * no-mistakes: apply CI fixes * fix(recordfixture): expect cmd-exe quote escaping in agy argv test; dedupe antigravity docs The windows-core run at 0ba9bd95 failed TestCaptureAgyPlacesForwardedFlagsBeforePromptAndSchemaLast because the fake .cmd agent records Go's literal backslash-quote escaping: cmd.exe %~1 expansion does not undo it, while real agy parses argv with CommandLineToArgvW and sees the unescaped JSON. Assert the escaped schema arg on Windows with a comment explaining the harness-only artifact. After rebasing onto main (#812), agents.md carried two Antigravity adapter sections and two supported-agents table rows. Keep one of each, reflecting final capabilities: session resume via --conversation and terminal-authoritative result precedence (structured_output > result.response > stream deltas). * fix(recordfixture): reject any non-SUCCESS agy result during capture validation validateAgyCapture only inspected the final result status, so a capture containing an ERROR result followed by SUCCESS validated even though the production replay parser treats any ERROR result as fatal. Fail fast on the first non-SUCCESS result and require at least one result event. | 29 天前 | |
fix: handle oversized Claude repair prompts (#526) * fix: bound Claude repair prompt transport * no-mistakes(review): Bound Test and Lint output before IPC * no-mistakes(document): Document Claude stdin and bounded command output | 1 个月前 | |
test(e2e): consolidate duplicate coverage into journeys (#163) * gnhf #4: Replaced TestExecutor_AllStepsPass orchestration assertions with timing-field assertions in the e2e journey, leaving a narrow unit test focused on IPC step lifecycle events. * gnhf #6: Moved the basic init/eject integration coverage into the e2e user journey and removed the duplicated CLI integration test. * gnhf #7: Moved the empty `runs` command coverage into the e2e pre-push journey and removed the duplicated CLI integration test. * gnhf #8: Moved the pre-init `status` command coverage into the e2e user journey and removed the duplicated CLI test. * gnhf #9: Moved the pre-init `eject` failure coverage into the e2e user journey and removed the duplicated CLI test file. * gnhf #10: Moved the pre-init `runs` failure coverage into the e2e user journey and removed the duplicated CLI test. * gnhf #11: Moved initialized `status` coverage into the e2e journey after stopping the daemon and removed the duplicated CLI integration test. * gnhf #12: Moved completed-run `runs` output coverage into the e2e journey and narrowed the CLI test to only synthetic running-run coverage. * gnhf #13: Moved duplicate second-init failure coverage into the e2e journey and removed the CLI integration test. * gnhf #14: Moved running-daemon status and stop coverage into the e2e journey and removed the duplicated CLI integration test. * gnhf #15: Moved not-running daemon status and stop coverage into the e2e journey and removed the duplicated CLI test. * gnhf #16: Moved real daemon restart-from-stopped coverage into the e2e journey and removed the duplicated CLI integration test. * gnhf #17: Moved daemon restart-while-running coverage into the e2e journey and removed the duplicated mocked CLI subtest. * gnhf #18: Removed the remaining mocked daemon restart permutations now covered by real e2e restart checks. * gnhf #19: Moved `status` outside-git coverage into the e2e journey and removed the duplicated CLI integration test. * gnhf #20: Moved `runs` outside-git coverage into the e2e journey and removed the duplicated CLI integration test. * gnhf #21: Moved `init` outside-git coverage into the e2e journey and removed the duplicated CLI integration test. * gnhf #22: Moved pre-init `rerun` failure coverage into the e2e journey and removed the duplicated CLI integration test. * gnhf #23: Moved explicit `attach` pre-init failure coverage into the e2e journey and narrowed the CLI test to the bare-root case. * gnhf #24: Moved explicit `attach` outside-git failure coverage into the e2e journey and narrowed the CLI test to the bare-root case. * gnhf #25: Moved bare-root no-active-run coverage without history into the e2e journey and narrowed the CLI root test to history rendering. * gnhf #26: Moved bare-root pre-init failure coverage into the e2e journey and removed the duplicated CLI attach test. * gnhf #27: Moved bare-root outside-git failure coverage into the e2e journey and removed the duplicated CLI attach test. * gnhf #28: Moved `attach --run` missing-run coverage into the e2e journey and removed the duplicated CLI integration test. * gnhf #29: Moved root help command coverage into the e2e journey and removed the duplicated CLI test. * gnhf #30: Moved root version command coverage into the e2e journey and removed the duplicated CLI test. * gnhf #31: Removed the remaining duplicated bare-root non-git CLI test now covered by the e2e journey. * gnhf #32: Moved current-branch rerun coverage into the e2e journey and removed the duplicated CLI integration test. * gnhf #33: Moved active-run `status` coverage into the e2e journey and removed the duplicated CLI integration test. * gnhf #34: Moved active-run `runs` coverage into the e2e journey and removed the duplicated CLI integration test. * gnhf #35: Moved generic bare-root recent-runs coverage into the e2e journey and narrowed the CLI root history test to synthetic age and cap behavior. * gnhf #36: Removed a CI no-PR-URL unit test now covered by the e2e journey's skipped CI step. * gnhf #37: Moved no-command lint prompt coverage into the e2e journey and removed the duplicated lint step unit test. * gnhf #38: Moved no-command test-step prompt and findings preservation coverage into the e2e journey and removed the duplicated unit test. * gnhf #39: Moved lint prompt action-guidance coverage into the e2e journey and removed the duplicated unit test. * gnhf #40: Moved test-step prompt guidance coverage into the e2e journey and removed the duplicated unit test. * gnhf #41: Moved document prompt guidance coverage into the e2e journey and narrowed the duplicated document step unit assertions. * gnhf #42: Moved review prompt guidance coverage into the e2e journey and narrowed the duplicated review step unit assertions. * gnhf #43: Moved review prompt commit-scope and no-inline-diff coverage into the e2e journey and narrowed the duplicated review unit assertions. * gnhf #44: Moved document prompt commit-scope coverage into the e2e journey and narrowed duplicated document unit assertions. * gnhf #45: Moved new-branch zero-base review coverage fully into the e2e journey and removed the duplicated review unit test. * gnhf #46: Moved no-gap document step coverage into the e2e journey and removed the duplicated document unit test. * gnhf #47: Removed duplicated push-step happy-path unit coverage now covered by the e2e pipeline. * gnhf #48: Moved review prompt commit-message omission coverage into the e2e journey and removed the duplicated review unit test. * gnhf #49: Moved short-branch push coverage into the e2e journey and removed the duplicated push unit test. * gnhf #50: Removed duplicated new-branch push unit coverage now covered by the e2e pipeline. * gnhf #51: Removed duplicated no-format push-step unit coverage now covered by the e2e pipeline. * gnhf #52: Moved doctor agents-section coverage into the e2e journey and removed the duplicated CLI unit test. * gnhf #53: Moved document ignore-pattern prompt coverage into the e2e journey and removed the duplicated document unit test. * gnhf #54: Moved review ignore-pattern prompt coverage into the e2e journey and removed the duplicated review unit test. * gnhf #55: Moved healthy doctor system-section coverage into the e2e journey and removed the duplicated CLI unit test. * gnhf #56: Moved doctor missing-system-dependencies coverage into the e2e journey and removed the duplicated CLI tests. * gnhf #57: Moved existing-branch rerun push coverage into the e2e journey and removed the duplicated push unit test. * gnhf #58: Moved unknown-provider CI skip coverage into the e2e journey and removed the duplicated CI unit test. * gnhf #59: Removed the now-empty CLI doctor test file after its coverage was moved into e2e. * gnhf #60: Removed duplicated executor running-status coverage now exercised by the e2e journey. * gnhf #61: Moved executor step-duration coverage into the e2e journey and removed the duplicated unit test. * gnhf #62: Moved pipeline step ordering coverage into the e2e journey and removed the duplicated unit test. * gnhf #63: Moved worktree active-status coverage into the e2e journey and removed the duplicated CLI status test. * gnhf #64: Moved worktree active-runs coverage into the e2e journey and removed the duplicated CLI runs test. * gnhf #65: Moved rerun-from-worktree coverage into the e2e journey and removed the duplicated CLI rerun test. * gnhf #66: Moved init/eject-from-worktree coverage into the e2e journey and removed the duplicated CLI init test. * gnhf #67: Moved root-command branch-scoped active-run coverage into the e2e journey and narrowed the duplicated attach unit test. * gnhf #68: Narrowed skipped-step executor unit coverage now covered by the e2e journey. * gnhf #69: Moved info-only review finding coverage into the e2e journey and removed the duplicated review unit test. * gnhf #70: Removed duplicated daemon real-pipeline push coverage now covered by the e2e journey. * gnhf #71: Moved daemon rerun success coverage into the e2e journey and removed the duplicated daemon test. * gnhf #72: Moved daemon push-created-run coverage into the e2e journey and removed the duplicated daemon test. * gnhf #73: Removed a duplicated default-branch-worktree daemon integration test now covered by stronger e2e flows. * gnhf #74: Moved rerun-without-previous-run coverage into the e2e journey and removed the duplicated daemon test. * gnhf #75: Moved configured passing test-command coverage into the e2e journey and removed the duplicated test-step unit test. * gnhf #76: Moved configured passing lint-command coverage into the e2e journey and removed the duplicated lint-step unit test. * gnhf #77: Moved ref-deletion push coverage into the e2e journey and removed the duplicated daemon test. * gnhf #78: Moved unknown-repo push notification coverage into the e2e journey and removed the duplicated daemon test. * gnhf #80: Moved empty-diff-after-rebase skip coverage into the e2e journey and removed the duplicated rebase unit test. * gnhf #81: Moved review ignore-pattern all-filtered coverage into the e2e journey and removed duplicated review unit tests. * gnhf #82: Moved document ignore-pattern all-filtered coverage into the e2e journey and removed the duplicated document unit test. * gnhf #83: Moved non-empty-diff-after-rebase coverage into the e2e journey and removed the duplicated rebase unit test. * gnhf #84: Moved push-step uncommitted-agent-change coverage into the e2e journey and removed the duplicated push unit test. * gnhf #85: Moved push-step format-before-commit coverage into the e2e journey and removed the duplicated push unit test. * gnhf #86: Moved push-step failing-formatter coverage into the e2e journey and removed the duplicated push unit test. * gnhf #87: Moved detached push local-branch-ref coverage into the e2e journey and removed the duplicated push unit test. * gnhf #88: Moved push-step format-command environment coverage into the e2e journey and removed the duplicated push unit test. * gnhf #89: Moved configured test-command environment coverage into the e2e journey and removed the duplicated test-step unit test. * gnhf #90: Moved configured lint-command environment coverage into the e2e journey and removed the duplicated lint-step unit test. * gnhf #91: Moved failing configured test-command coverage into the e2e journey and removed the duplicated test-step unit test. * gnhf #92: Moved failing configured lint-command coverage into the e2e journey and removed the duplicated lint-step unit test. * gnhf #93: Moved default `runs` limit coverage into the e2e journey and removed the duplicated CLI unit test. * gnhf #94: Moved review-warning approval coverage into the e2e journey and removed the duplicated review-step unit test. * gnhf #95: Removed duplicated review no-change low-risk unit coverage now covered by the ignored-only e2e branch. * gnhf #96: Removed duplicated review empty-diff unit coverage now covered by the ignored-only e2e branch. * gnhf #97: Removed duplicated document empty-diff unit coverage now covered by the ignored-only e2e branch. * gnhf #98: Moved clean rebase-onto-default-branch coverage into the e2e journey and removed the duplicated rebase unit test. * gnhf #99: Removed duplicated linked-worktree gate pipeline integration coverage now covered by the e2e journey. * gnhf #100: Moved rebase-conflict detection coverage into the e2e journey and removed the duplicated rebase unit test. * gnhf #101: Moved rebase-conflict finding-file coverage into the e2e journey and removed the duplicated rebase unit test. * gnhf #102: Moved approval-skip continuation coverage into the e2e journey and removed the duplicated executor unit test. * gnhf #103: Moved approval-abort terminal-state coverage into the e2e journey and removed the duplicated executor unit test. * gnhf #104: Moved approval-preserves-exit-code coverage into the e2e journey and removed the duplicated executor unit test. * gnhf #105: Moved approval-approve completion and finding-ID coverage into the e2e journey and removed the duplicated executor unit test. * gnhf #106: Moved approval-wait duration coverage into the e2e journey and removed the duplicated executor unit test. * gnhf #107: Moved no-active-executor respond coverage into the e2e journey and removed the duplicated daemon unit test. * gnhf #108: Moved wrong-step approval response coverage into the e2e journey and removed the duplicated executor unit test. * gnhf #111: Moved no-waiting-step approval response coverage into the e2e journey and removed the duplicated executor unit test. * gnhf #112: Moved same-branch superseded-run cancellation coverage into the e2e journey and removed the duplicated daemon unit test. * gnhf #113: Moved explicit cancel-run coverage into the e2e journey and removed the duplicated daemon unit test. * gnhf #114: Moved skip-remaining executor coverage into the e2e journey and removed the duplicated executor unit test. * gnhf #115: Moved different-branch active-run isolation coverage into the e2e journey and removed the duplicated daemon unit test. * gnhf #116: Removed duplicated active-run respond coverage now covered by the e2e approval paths. * gnhf #118: Moved info-level documentation finding approval coverage into the e2e journey and removed the duplicated document step unit test. * gnhf #119: Moved missing-findings documentation fallback coverage into e2e and removed the duplicated document step unit test. * gnhf #120: Moved malformed documentation finding fallback coverage into e2e and removed the duplicated document step unit test. * gnhf #121: Moved legacy documentation finding normalization coverage into e2e and removed the duplicated document step unit test. * gnhf #122: Moved documentation warning approval coverage into e2e and removed the duplicated document step unit test. * gnhf #123: Moved missing-summary documentation fallback coverage into e2e and removed the duplicated document step unit test. * gnhf #124: Moved document-agent failure coverage into e2e and removed the duplicated document step unit test. * gnhf #125: Moved short-head status output coverage into e2e and removed the duplicated CLI unit test. * gnhf #126: Moved GetRun findings JSON coverage into e2e and removed the duplicated daemon handler unit test. * gnhf #127: Moved basic GetRun IPC shape coverage into e2e and removed the duplicated daemon handler unit test. * gnhf #128: Removed duplicated GetRuns daemon handler coverage now exercised by e2e. * gnhf #129: Moved strict-branch GetActiveRun IPC coverage into e2e and removed the duplicated daemon handler unit test. * gnhf #130: Moved repo-wide GetActiveRun IPC coverage into e2e and removed the duplicated daemon handler unit test. * gnhf #131: Removed duplicated GetRun not-found daemon handler coverage now exercised by e2e. * gnhf #132: Removed duplicated daemon health handler coverage now exercised by e2e daemon status checks. * gnhf #133: Removed duplicated daemon shutdown handler coverage now exercised by e2e daemon stop checks. * gnhf #134: Moved daemon PID file coverage into e2e and removed the remaining duplicated daemon handler test file. * gnhf #135: Removed duplicated no-socket daemon running-state coverage now exercised by e2e daemon status checks. * gnhf #136: Removed duplicated daemon running-state coverage now exercised by e2e daemon status checks. * gnhf #137: Removed duplicated daemon stop no-op coverage now exercised by e2e daemon stop checks. * gnhf #138: Moved stale daemon artifact cleanup coverage into e2e and removed the duplicated daemon lifecycle unit test. * gnhf #139: Removed duplicated non-TTY color-profile unit coverage now exercised by e2e CLI output assertions. * gnhf #140: Moved bare-root recent-run history coverage into e2e and removed the duplicated root command unit test. * gnhf #142: Moved init rollback-on-daemon-start-failure coverage from a CLI integration test into an e2e test using the real binary. * gnhf #143: Moved daemon run --root coverage from a mocked CLI unit test into an e2e test using the real foreground daemon process. * gnhf #144: Moved new Go test-file approval coverage from a test-step unit test into the Claude e2e journey. * gnhf #145: Extended the existing new-test-file e2e coverage to Python test files and removed the duplicated test-step unit test. * gnhf #146: Moved staged new test-file approval coverage from a test-step unit test into the Claude e2e journey. * gnhf #147: Moved review agent-error coverage from a mocked step unit test into the Claude e2e journey. * gnhf #148: Moved config-load setup-failure worktree cleanup coverage from a daemon integration test into the Claude e2e journey. * gnhf #149: Moved root command error exit-code coverage from a CLI unit test into the e2e journey. * gnhf #151: Moved existing-branch review merge-base scope coverage from a mocked step unit test into the Claude e2e journey. * gnhf #152: Moved invalid gate-path notify-push coverage from a daemon helper unit test into the e2e journey. * gnhf #153: Moved explicit attach repo-wide active-run lookup coverage from a CLI unit test into the Claude e2e journey. * gnhf #154: Moved test-step malformed structured-output fallback coverage into the Claude e2e journey. * gnhf #155: Moved lint-step malformed structured-output fallback coverage into the Claude e2e journey. * test(e2e): stub gh and harden fakeagent harness * no-mistakes(review): Handle raw structured fakeagent responses | 4 个月前 | |
fix(agent): harden stdin prompt delivery * fix(agent): send acpx prompts through stdin * no-mistakes(review): surface child stderr on acpx stdin write failure * no-mistakes(document): document acpx prompt delivery on stdin * no-mistakes(document): drop speculative acpx argv-limit doc and comment * no-mistakes: apply CI fixes * fix(agent): harden stdin prompt delivery * test(e2e): read codex prompts from stdin | 1 个月前 | |
fix(agent): harden stdin prompt delivery * fix(agent): send acpx prompts through stdin * no-mistakes(review): surface child stderr on acpx stdin write failure * no-mistakes(document): document acpx prompt delivery on stdin * no-mistakes(document): drop speculative acpx argv-limit doc and comment * no-mistakes: apply CI fixes * fix(agent): harden stdin prompt delivery * test(e2e): read codex prompts from stdin | 1 个月前 | |
test(e2e): add end-to-end agent journey coverage (#138) * test(e2e): add end-to-end agent journey suite * no-mistakes(review): mark skipped PR and CI steps correctly * no-mistakes(review): fix opencode SSE race and e2e push checks * no-mistakes(review): fix recorder flag forwarding and SSE validation * no-mistakes(review): fix fixture fallback and SSE capture race * no-mistakes(review): harden fixture replay and recorder syncing * no-mistakes(review): harden scenario edits and require e2e fixtures * no-mistakes(review): enforce configured fakeagent fixture directories * no-mistakes(review): fix skipped statuses and scrub Claude init * no-mistakes(review): harden opencode fixture recording and replay * no-mistakes(review): fix Windows cleanup and e2e branch basing * no-mistakes(review): fix stale e2e run selection * no-mistakes(review): fix recorder arg ordering and SSE idle detection * no-mistakes(review): fix opencode fixture session replay and idle detection * no-mistakes(review): respect recorder context cancellation * no-mistakes(review): scope opencode idle detection and scrub escaped paths * no-mistakes(review): fix opencode top-level idle detection * no-mistakes(review): Harden fixture replay and scenario path safety * no-mistakes(review): Fix fakeagent session directories and Claude replay * no-mistakes(review): rewrite OpenCode fixture plain-text replay * no-mistakes(review): filter cross-session SSE and assert skipped prompts * no-mistakes(document): document e2e test and fixture workflows * no-mistakes(document): document e2e contributor workflows * no-mistakes: apply CI fixes * no-mistakes: apply CI fixes * no-mistakes: apply CI fixes | 4 个月前 | |
test(e2e): add end-to-end agent journey coverage (#138) * test(e2e): add end-to-end agent journey suite * no-mistakes(review): mark skipped PR and CI steps correctly * no-mistakes(review): fix opencode SSE race and e2e push checks * no-mistakes(review): fix recorder flag forwarding and SSE validation * no-mistakes(review): fix fixture fallback and SSE capture race * no-mistakes(review): harden fixture replay and recorder syncing * no-mistakes(review): harden scenario edits and require e2e fixtures * no-mistakes(review): enforce configured fakeagent fixture directories * no-mistakes(review): fix skipped statuses and scrub Claude init * no-mistakes(review): harden opencode fixture recording and replay * no-mistakes(review): fix Windows cleanup and e2e branch basing * no-mistakes(review): fix stale e2e run selection * no-mistakes(review): fix recorder arg ordering and SSE idle detection * no-mistakes(review): fix opencode fixture session replay and idle detection * no-mistakes(review): respect recorder context cancellation * no-mistakes(review): scope opencode idle detection and scrub escaped paths * no-mistakes(review): fix opencode top-level idle detection * no-mistakes(review): Harden fixture replay and scenario path safety * no-mistakes(review): Fix fakeagent session directories and Claude replay * no-mistakes(review): rewrite OpenCode fixture plain-text replay * no-mistakes(review): filter cross-session SSE and assert skipped prompts * no-mistakes(document): document e2e test and fixture workflows * no-mistakes(document): document e2e contributor workflows * no-mistakes: apply CI fixes * no-mistakes: apply CI fixes * no-mistakes: apply CI fixes | 4 个月前 | |
feat(agent): add native Grok Build support * feat: add native Grok agent support * no-mistakes(review): Preserve Grok invocation environment * no-mistakes(document): Clarify Grok’s pipeline-only skill role * docs: complete native Grok ExecPlan * no-mistakes(document): Clarify Grok opt-out documentation * no-mistakes: apply CI fixes --------- Co-authored-by: Boris <boriza@users.noreply.github.com> | 30 天前 | |
feat(agent): add native Grok Build support * feat: add native Grok agent support * no-mistakes(review): Preserve Grok invocation environment * no-mistakes(document): Clarify Grok’s pipeline-only skill role * docs: complete native Grok ExecPlan * no-mistakes(document): Clarify Grok opt-out documentation * no-mistakes: apply CI fixes --------- Co-authored-by: Boris <boriza@users.noreply.github.com> | 30 天前 | |
test(e2e): add end-to-end agent journey coverage (#138) * test(e2e): add end-to-end agent journey suite * no-mistakes(review): mark skipped PR and CI steps correctly * no-mistakes(review): fix opencode SSE race and e2e push checks * no-mistakes(review): fix recorder flag forwarding and SSE validation * no-mistakes(review): fix fixture fallback and SSE capture race * no-mistakes(review): harden fixture replay and recorder syncing * no-mistakes(review): harden scenario edits and require e2e fixtures * no-mistakes(review): enforce configured fakeagent fixture directories * no-mistakes(review): fix skipped statuses and scrub Claude init * no-mistakes(review): harden opencode fixture recording and replay * no-mistakes(review): fix Windows cleanup and e2e branch basing * no-mistakes(review): fix stale e2e run selection * no-mistakes(review): fix recorder arg ordering and SSE idle detection * no-mistakes(review): fix opencode fixture session replay and idle detection * no-mistakes(review): respect recorder context cancellation * no-mistakes(review): scope opencode idle detection and scrub escaped paths * no-mistakes(review): fix opencode top-level idle detection * no-mistakes(review): Harden fixture replay and scenario path safety * no-mistakes(review): Fix fakeagent session directories and Claude replay * no-mistakes(review): rewrite OpenCode fixture plain-text replay * no-mistakes(review): filter cross-session SSE and assert skipped prompts * no-mistakes(document): document e2e test and fixture workflows * no-mistakes(document): document e2e contributor workflows * no-mistakes: apply CI fixes * no-mistakes: apply CI fixes * no-mistakes: apply CI fixes | 4 个月前 | |
feat(daemon): pin Pi model and reasoning effort per run (#1072) * feat: pin Pi model and reasoning effort per validation run * no-mistakes(review): Refuse mixed-harness Pi pins before cancel * no-mistakes(document): Align docs with per-run Pi pins * fix: refuse trusted-repo Pi pin conflicts before cancel A trusted default-branch agent override (Claude or mixed fallbacks) was only checked after cancelActiveRuns. Validate that selection first so a Pi pin cannot supersede a healthy run. * test: name the review finding in the Pi profile e2e After rebasing onto the outstanding-findings contract, an empty Respond selection no longer means "fix everything", so the pinned journey parked forever after rereview. Co-authored-by: Cursor <cursoragent@cursor.com> * no-mistakes(document): Document per-run Pi pin validation and precedence --------- Co-authored-by: u <u@u> Co-authored-by: Cursor <cursoragent@cursor.com> | 3 天前 | |
fix(pipeline): keep review findings outstanding until verified (#1095) * fix(review): keep selected findings outstanding until verified The review gate decides on an append-only outstanding set instead of one round's output: a finding selected for a fix stays outstanding until a later round positively verifies it (covers the finding's file in reviewed_paths and does not re-report the defect) or an operator approves, skips, or aborts the gate. This closes the hole behind the closed-stale upstream PR #704: a finding selected at a later gate could be dropped from the carry set before its fix was verified, so a no-op fix could complete the run with the defect unresolved. Verification is conservative: a finding only clears when its file is covered AND nothing in that round's output touches that same file at all. A rereview that reports something else in the same file - which could be the original defect shifted to another line or restated under different wording - is ambiguous evidence, not positive resolution, so the original finding stays outstanding rather than silently clearing. The loop itself is bounded by auto_fix.review (the automatic-round budget) plus the human/agent gate, matching upstream's design - no separate round or stall cap layered on top. Regressions: internal/pipeline/review_carry_forward_test.go covers the no-op-fix journey that must re-park, positive-coverage clearing, and the same-file-ambiguity case. * no-mistakes(review): Park unverified selected info findings after auto-fix exhaustion * no-mistakes(review): Refresh carry-forward reviewed paths each review round * no-mistakes(review): Reset stale carry and retain user-added findings * no-mistakes(document): Documented review carry-forward verification semantics * no-mistakes(document): Document review carry-forward behavior * no-mistakes(review): Preserve pending review selections across fix rounds * no-mistakes(review): Track reminted user findings through verification * no-mistakes(review): Preserve review verification state across daemon recovery * fix(review): carry post-remap selected IDs into a resumed fix round The daemon-recovery ActionFix path resumed executeStep with the pre-response gate.findings and gate.selectedOutstandingIDs instead of the merged outstanding payload and post-remap selected IDs the live (non-restarted) path already computes. After a restart, a newly selected finding could never be positively verified by a clean rereview, and a user-added finding whose ID collided with an existing one and got reminted would drop out of the outstanding set entirely. Also remove the inner approval-gate for-loop in executeStep: every switch branch already returns, gotos done, or continues the outer rounds loop, so the wrapper never iterated a second time. * no-mistakes(review): Bound review coverage to trusted changed files * no-mistakes(document): Documented trusted review coverage boundaries * fix(review): restore reviewed_paths compat, close two coverage/identity gaps Three related fixes to the review carry-forward change, plus a pre-existing test fixture fix uncovered while investigating a genuine hang: - Make reviewed_paths OPTIONAL in reviewFindingsSchema again. Requiring it broke recorded eval/replay fixtures that predate the field and legitimately omit it. A caller that omits it entirely keeps the pre-existing NeedsApproval behavior; a caller that reports it - even as an empty array - is held to covering every trusted reviewable path before a clean round can grant approval (reviewedPathsCoverReviewable), so the optional field cannot be used to certify a head that was not actually reviewed. - Close a positional-ID-reuse hole in review-gate recovery: a finding ID freed when its original finding resolves can be re-minted for an unrelated later finding. Recovery previously retained any historical selected ID present in the latest findings by ID alone, which could silently alias the new, never-selected finding as "selected" after a daemon restart. selectedFindingIdentities / retainFindingIDsByIdentity additionally require the current finding under that ID to match the content identity recorded when it was actually selected. - Fix TestReviewStep_EachAgentInvocationGetsItsOwnBudget: its finding referenced a file never present in the test's actual diff, so it could never be positively covered under the append-only carry-forward contract and the step hung waiting for an approval that never comes. Aligned the finding and its final reviewed_paths to the real changed file. Also fixed TestReviewFindingsSchema_ValidJSON, which asserted reviewed_paths was required; it is now asserted present but optional. * no-mistakes(review): Harden review carry identity and coverage validation * no-mistakes(review): Persist remapped user findings for recovery * no-mistakes(document): Clarified optional review coverage documentation * no-mistakes(ci): Added reviewed_paths: [] to the shared agent-edits e2e fixture. The referenced commit was not present locally; targeted e2e testing still exposed an unrelated review-agent timeout * no-mistakes(ci): Updated the agent-edits e2e fixture to report both reviewed paths. Targeted Claude e2e journey passed; Codex encountered a separate pre-existing fixture/schema issue * no-mistakes(ci): Fixed Codex optional-field normalization and review-routing fixtures. Targeted Codex journey, agent, pipeline, and step tests pass; the independent review-routing e2e still times out after review completion, matching the supplied pre-existing failure * no-mistakes(ci): Fixed the review-routing e2e by explicitly selecting routing-check for the fix round. Targeted e2e test passes; Windows failure is unrelated timing flake * no-mistakes(document): Clarified review carry-forward documentation * fix(review): fail closed when reviewed_paths is omitted A clean review that omitted reviewed_paths skipped coverage validation and still certified the whole head. Treat an absent record exactly like empty or partial coverage: park for approval and log which reviewable files were left unverified. The field stays schema-optional only so older payloads still parse; there is no production escape. The fake agent is the sole fixture-side stand-in: a review turn whose canned response has no reviewed_paths gets the worktree's own reviewable set (base-commit diff minus the prompt's ignore patterns), while a scenario that spells the field out is passed through so coverage gates stay testable. * fix(pipeline): reject unknown approval actions An ApprovalAction outside approve/fix/skip/abort matched no case in the gate loop and re-parked forever. Respond now refuses it with an error while the gate stays parked for a valid response, and the loop's own default branch fails the step instead of looping for any producer that bypasses Respond. * test(review): report full coverage from clean mock reviewers Executor-driven step tests whose mock reviewer returned a clean review with no reviewed_paths now park at the gate by design; report the worktree's full changed set (fullReviewCoverage) so they exercise the completed path they were written for. * no-mistakes(review): Preserve findings after unanchored rereview reports * no-mistakes(document): Clarified unanchored rereview blocking semantics | 3 天前 | |
test(e2e): consolidate duplicate coverage into journeys (#163) * gnhf #4: Replaced TestExecutor_AllStepsPass orchestration assertions with timing-field assertions in the e2e journey, leaving a narrow unit test focused on IPC step lifecycle events. * gnhf #6: Moved the basic init/eject integration coverage into the e2e user journey and removed the duplicated CLI integration test. * gnhf #7: Moved the empty `runs` command coverage into the e2e pre-push journey and removed the duplicated CLI integration test. * gnhf #8: Moved the pre-init `status` command coverage into the e2e user journey and removed the duplicated CLI test. * gnhf #9: Moved the pre-init `eject` failure coverage into the e2e user journey and removed the duplicated CLI test file. * gnhf #10: Moved the pre-init `runs` failure coverage into the e2e user journey and removed the duplicated CLI test. * gnhf #11: Moved initialized `status` coverage into the e2e journey after stopping the daemon and removed the duplicated CLI integration test. * gnhf #12: Moved completed-run `runs` output coverage into the e2e journey and narrowed the CLI test to only synthetic running-run coverage. * gnhf #13: Moved duplicate second-init failure coverage into the e2e journey and removed the CLI integration test. * gnhf #14: Moved running-daemon status and stop coverage into the e2e journey and removed the duplicated CLI integration test. * gnhf #15: Moved not-running daemon status and stop coverage into the e2e journey and removed the duplicated CLI test. * gnhf #16: Moved real daemon restart-from-stopped coverage into the e2e journey and removed the duplicated CLI integration test. * gnhf #17: Moved daemon restart-while-running coverage into the e2e journey and removed the duplicated mocked CLI subtest. * gnhf #18: Removed the remaining mocked daemon restart permutations now covered by real e2e restart checks. * gnhf #19: Moved `status` outside-git coverage into the e2e journey and removed the duplicated CLI integration test. * gnhf #20: Moved `runs` outside-git coverage into the e2e journey and removed the duplicated CLI integration test. * gnhf #21: Moved `init` outside-git coverage into the e2e journey and removed the duplicated CLI integration test. * gnhf #22: Moved pre-init `rerun` failure coverage into the e2e journey and removed the duplicated CLI integration test. * gnhf #23: Moved explicit `attach` pre-init failure coverage into the e2e journey and narrowed the CLI test to the bare-root case. * gnhf #24: Moved explicit `attach` outside-git failure coverage into the e2e journey and narrowed the CLI test to the bare-root case. * gnhf #25: Moved bare-root no-active-run coverage without history into the e2e journey and narrowed the CLI root test to history rendering. * gnhf #26: Moved bare-root pre-init failure coverage into the e2e journey and removed the duplicated CLI attach test. * gnhf #27: Moved bare-root outside-git failure coverage into the e2e journey and removed the duplicated CLI attach test. * gnhf #28: Moved `attach --run` missing-run coverage into the e2e journey and removed the duplicated CLI integration test. * gnhf #29: Moved root help command coverage into the e2e journey and removed the duplicated CLI test. * gnhf #30: Moved root version command coverage into the e2e journey and removed the duplicated CLI test. * gnhf #31: Removed the remaining duplicated bare-root non-git CLI test now covered by the e2e journey. * gnhf #32: Moved current-branch rerun coverage into the e2e journey and removed the duplicated CLI integration test. * gnhf #33: Moved active-run `status` coverage into the e2e journey and removed the duplicated CLI integration test. * gnhf #34: Moved active-run `runs` coverage into the e2e journey and removed the duplicated CLI integration test. * gnhf #35: Moved generic bare-root recent-runs coverage into the e2e journey and narrowed the CLI root history test to synthetic age and cap behavior. * gnhf #36: Removed a CI no-PR-URL unit test now covered by the e2e journey's skipped CI step. * gnhf #37: Moved no-command lint prompt coverage into the e2e journey and removed the duplicated lint step unit test. * gnhf #38: Moved no-command test-step prompt and findings preservation coverage into the e2e journey and removed the duplicated unit test. * gnhf #39: Moved lint prompt action-guidance coverage into the e2e journey and removed the duplicated unit test. * gnhf #40: Moved test-step prompt guidance coverage into the e2e journey and removed the duplicated unit test. * gnhf #41: Moved document prompt guidance coverage into the e2e journey and narrowed the duplicated document step unit assertions. * gnhf #42: Moved review prompt guidance coverage into the e2e journey and narrowed the duplicated review step unit assertions. * gnhf #43: Moved review prompt commit-scope and no-inline-diff coverage into the e2e journey and narrowed the duplicated review unit assertions. * gnhf #44: Moved document prompt commit-scope coverage into the e2e journey and narrowed duplicated document unit assertions. * gnhf #45: Moved new-branch zero-base review coverage fully into the e2e journey and removed the duplicated review unit test. * gnhf #46: Moved no-gap document step coverage into the e2e journey and removed the duplicated document unit test. * gnhf #47: Removed duplicated push-step happy-path unit coverage now covered by the e2e pipeline. * gnhf #48: Moved review prompt commit-message omission coverage into the e2e journey and removed the duplicated review unit test. * gnhf #49: Moved short-branch push coverage into the e2e journey and removed the duplicated push unit test. * gnhf #50: Removed duplicated new-branch push unit coverage now covered by the e2e pipeline. * gnhf #51: Removed duplicated no-format push-step unit coverage now covered by the e2e pipeline. * gnhf #52: Moved doctor agents-section coverage into the e2e journey and removed the duplicated CLI unit test. * gnhf #53: Moved document ignore-pattern prompt coverage into the e2e journey and removed the duplicated document unit test. * gnhf #54: Moved review ignore-pattern prompt coverage into the e2e journey and removed the duplicated review unit test. * gnhf #55: Moved healthy doctor system-section coverage into the e2e journey and removed the duplicated CLI unit test. * gnhf #56: Moved doctor missing-system-dependencies coverage into the e2e journey and removed the duplicated CLI tests. * gnhf #57: Moved existing-branch rerun push coverage into the e2e journey and removed the duplicated push unit test. * gnhf #58: Moved unknown-provider CI skip coverage into the e2e journey and removed the duplicated CI unit test. * gnhf #59: Removed the now-empty CLI doctor test file after its coverage was moved into e2e. * gnhf #60: Removed duplicated executor running-status coverage now exercised by the e2e journey. * gnhf #61: Moved executor step-duration coverage into the e2e journey and removed the duplicated unit test. * gnhf #62: Moved pipeline step ordering coverage into the e2e journey and removed the duplicated unit test. * gnhf #63: Moved worktree active-status coverage into the e2e journey and removed the duplicated CLI status test. * gnhf #64: Moved worktree active-runs coverage into the e2e journey and removed the duplicated CLI runs test. * gnhf #65: Moved rerun-from-worktree coverage into the e2e journey and removed the duplicated CLI rerun test. * gnhf #66: Moved init/eject-from-worktree coverage into the e2e journey and removed the duplicated CLI init test. * gnhf #67: Moved root-command branch-scoped active-run coverage into the e2e journey and narrowed the duplicated attach unit test. * gnhf #68: Narrowed skipped-step executor unit coverage now covered by the e2e journey. * gnhf #69: Moved info-only review finding coverage into the e2e journey and removed the duplicated review unit test. * gnhf #70: Removed duplicated daemon real-pipeline push coverage now covered by the e2e journey. * gnhf #71: Moved daemon rerun success coverage into the e2e journey and removed the duplicated daemon test. * gnhf #72: Moved daemon push-created-run coverage into the e2e journey and removed the duplicated daemon test. * gnhf #73: Removed a duplicated default-branch-worktree daemon integration test now covered by stronger e2e flows. * gnhf #74: Moved rerun-without-previous-run coverage into the e2e journey and removed the duplicated daemon test. * gnhf #75: Moved configured passing test-command coverage into the e2e journey and removed the duplicated test-step unit test. * gnhf #76: Moved configured passing lint-command coverage into the e2e journey and removed the duplicated lint-step unit test. * gnhf #77: Moved ref-deletion push coverage into the e2e journey and removed the duplicated daemon test. * gnhf #78: Moved unknown-repo push notification coverage into the e2e journey and removed the duplicated daemon test. * gnhf #80: Moved empty-diff-after-rebase skip coverage into the e2e journey and removed the duplicated rebase unit test. * gnhf #81: Moved review ignore-pattern all-filtered coverage into the e2e journey and removed duplicated review unit tests. * gnhf #82: Moved document ignore-pattern all-filtered coverage into the e2e journey and removed the duplicated document unit test. * gnhf #83: Moved non-empty-diff-after-rebase coverage into the e2e journey and removed the duplicated rebase unit test. * gnhf #84: Moved push-step uncommitted-agent-change coverage into the e2e journey and removed the duplicated push unit test. * gnhf #85: Moved push-step format-before-commit coverage into the e2e journey and removed the duplicated push unit test. * gnhf #86: Moved push-step failing-formatter coverage into the e2e journey and removed the duplicated push unit test. * gnhf #87: Moved detached push local-branch-ref coverage into the e2e journey and removed the duplicated push unit test. * gnhf #88: Moved push-step format-command environment coverage into the e2e journey and removed the duplicated push unit test. * gnhf #89: Moved configured test-command environment coverage into the e2e journey and removed the duplicated test-step unit test. * gnhf #90: Moved configured lint-command environment coverage into the e2e journey and removed the duplicated lint-step unit test. * gnhf #91: Moved failing configured test-command coverage into the e2e journey and removed the duplicated test-step unit test. * gnhf #92: Moved failing configured lint-command coverage into the e2e journey and removed the duplicated lint-step unit test. * gnhf #93: Moved default `runs` limit coverage into the e2e journey and removed the duplicated CLI unit test. * gnhf #94: Moved review-warning approval coverage into the e2e journey and removed the duplicated review-step unit test. * gnhf #95: Removed duplicated review no-change low-risk unit coverage now covered by the ignored-only e2e branch. * gnhf #96: Removed duplicated review empty-diff unit coverage now covered by the ignored-only e2e branch. * gnhf #97: Removed duplicated document empty-diff unit coverage now covered by the ignored-only e2e branch. * gnhf #98: Moved clean rebase-onto-default-branch coverage into the e2e journey and removed the duplicated rebase unit test. * gnhf #99: Removed duplicated linked-worktree gate pipeline integration coverage now covered by the e2e journey. * gnhf #100: Moved rebase-conflict detection coverage into the e2e journey and removed the duplicated rebase unit test. * gnhf #101: Moved rebase-conflict finding-file coverage into the e2e journey and removed the duplicated rebase unit test. * gnhf #102: Moved approval-skip continuation coverage into the e2e journey and removed the duplicated executor unit test. * gnhf #103: Moved approval-abort terminal-state coverage into the e2e journey and removed the duplicated executor unit test. * gnhf #104: Moved approval-preserves-exit-code coverage into the e2e journey and removed the duplicated executor unit test. * gnhf #105: Moved approval-approve completion and finding-ID coverage into the e2e journey and removed the duplicated executor unit test. * gnhf #106: Moved approval-wait duration coverage into the e2e journey and removed the duplicated executor unit test. * gnhf #107: Moved no-active-executor respond coverage into the e2e journey and removed the duplicated daemon unit test. * gnhf #108: Moved wrong-step approval response coverage into the e2e journey and removed the duplicated executor unit test. * gnhf #111: Moved no-waiting-step approval response coverage into the e2e journey and removed the duplicated executor unit test. * gnhf #112: Moved same-branch superseded-run cancellation coverage into the e2e journey and removed the duplicated daemon unit test. * gnhf #113: Moved explicit cancel-run coverage into the e2e journey and removed the duplicated daemon unit test. * gnhf #114: Moved skip-remaining executor coverage into the e2e journey and removed the duplicated executor unit test. * gnhf #115: Moved different-branch active-run isolation coverage into the e2e journey and removed the duplicated daemon unit test. * gnhf #116: Removed duplicated active-run respond coverage now covered by the e2e approval paths. * gnhf #118: Moved info-level documentation finding approval coverage into the e2e journey and removed the duplicated document step unit test. * gnhf #119: Moved missing-findings documentation fallback coverage into e2e and removed the duplicated document step unit test. * gnhf #120: Moved malformed documentation finding fallback coverage into e2e and removed the duplicated document step unit test. * gnhf #121: Moved legacy documentation finding normalization coverage into e2e and removed the duplicated document step unit test. * gnhf #122: Moved documentation warning approval coverage into e2e and removed the duplicated document step unit test. * gnhf #123: Moved missing-summary documentation fallback coverage into e2e and removed the duplicated document step unit test. * gnhf #124: Moved document-agent failure coverage into e2e and removed the duplicated document step unit test. * gnhf #125: Moved short-head status output coverage into e2e and removed the duplicated CLI unit test. * gnhf #126: Moved GetRun findings JSON coverage into e2e and removed the duplicated daemon handler unit test. * gnhf #127: Moved basic GetRun IPC shape coverage into e2e and removed the duplicated daemon handler unit test. * gnhf #128: Removed duplicated GetRuns daemon handler coverage now exercised by e2e. * gnhf #129: Moved strict-branch GetActiveRun IPC coverage into e2e and removed the duplicated daemon handler unit test. * gnhf #130: Moved repo-wide GetActiveRun IPC coverage into e2e and removed the duplicated daemon handler unit test. * gnhf #131: Removed duplicated GetRun not-found daemon handler coverage now exercised by e2e. * gnhf #132: Removed duplicated daemon health handler coverage now exercised by e2e daemon status checks. * gnhf #133: Removed duplicated daemon shutdown handler coverage now exercised by e2e daemon stop checks. * gnhf #134: Moved daemon PID file coverage into e2e and removed the remaining duplicated daemon handler test file. * gnhf #135: Removed duplicated no-socket daemon running-state coverage now exercised by e2e daemon status checks. * gnhf #136: Removed duplicated daemon running-state coverage now exercised by e2e daemon status checks. * gnhf #137: Removed duplicated daemon stop no-op coverage now exercised by e2e daemon stop checks. * gnhf #138: Moved stale daemon artifact cleanup coverage into e2e and removed the duplicated daemon lifecycle unit test. * gnhf #139: Removed duplicated non-TTY color-profile unit coverage now exercised by e2e CLI output assertions. * gnhf #140: Moved bare-root recent-run history coverage into e2e and removed the duplicated root command unit test. * gnhf #142: Moved init rollback-on-daemon-start-failure coverage from a CLI integration test into an e2e test using the real binary. * gnhf #143: Moved daemon run --root coverage from a mocked CLI unit test into an e2e test using the real foreground daemon process. * gnhf #144: Moved new Go test-file approval coverage from a test-step unit test into the Claude e2e journey. * gnhf #145: Extended the existing new-test-file e2e coverage to Python test files and removed the duplicated test-step unit test. * gnhf #146: Moved staged new test-file approval coverage from a test-step unit test into the Claude e2e journey. * gnhf #147: Moved review agent-error coverage from a mocked step unit test into the Claude e2e journey. * gnhf #148: Moved config-load setup-failure worktree cleanup coverage from a daemon integration test into the Claude e2e journey. * gnhf #149: Moved root command error exit-code coverage from a CLI unit test into the e2e journey. * gnhf #151: Moved existing-branch review merge-base scope coverage from a mocked step unit test into the Claude e2e journey. * gnhf #152: Moved invalid gate-path notify-push coverage from a daemon helper unit test into the e2e journey. * gnhf #153: Moved explicit attach repo-wide active-run lookup coverage from a CLI unit test into the Claude e2e journey. * gnhf #154: Moved test-step malformed structured-output fallback coverage into the Claude e2e journey. * gnhf #155: Moved lint-step malformed structured-output fallback coverage into the Claude e2e journey. * test(e2e): stub gh and harden fakeagent harness * no-mistakes(review): Handle raw structured fakeagent responses | 4 个月前 | |
feat(daemon): pin Pi model and reasoning effort per run (#1072) * feat: pin Pi model and reasoning effort per validation run * no-mistakes(review): Refuse mixed-harness Pi pins before cancel * no-mistakes(document): Align docs with per-run Pi pins * fix: refuse trusted-repo Pi pin conflicts before cancel A trusted default-branch agent override (Claude or mixed fallbacks) was only checked after cancelActiveRuns. Validate that selection first so a Pi pin cannot supersede a healthy run. * test: name the review finding in the Pi profile e2e After rebasing onto the outstanding-findings contract, an empty Respond selection no longer means "fix everything", so the pinned journey parked forever after rereview. Co-authored-by: Cursor <cursoragent@cursor.com> * no-mistakes(document): Document per-run Pi pin validation and precedence --------- Co-authored-by: u <u@u> Co-authored-by: Cursor <cursoragent@cursor.com> | 3 天前 | |
feat(daemon): pin Pi model and reasoning effort per run (#1072) * feat: pin Pi model and reasoning effort per validation run * no-mistakes(review): Refuse mixed-harness Pi pins before cancel * no-mistakes(document): Align docs with per-run Pi pins * fix: refuse trusted-repo Pi pin conflicts before cancel A trusted default-branch agent override (Claude or mixed fallbacks) was only checked after cancelActiveRuns. Validate that selection first so a Pi pin cannot supersede a healthy run. * test: name the review finding in the Pi profile e2e After rebasing onto the outstanding-findings contract, an empty Respond selection no longer means "fix everything", so the pinned journey parked forever after rereview. Co-authored-by: Cursor <cursoragent@cursor.com> * no-mistakes(document): Document per-run Pi pin validation and precedence --------- Co-authored-by: u <u@u> Co-authored-by: Cursor <cursoragent@cursor.com> | 3 天前 | |
fix(pipeline): keep review findings outstanding until verified (#1095) * fix(review): keep selected findings outstanding until verified The review gate decides on an append-only outstanding set instead of one round's output: a finding selected for a fix stays outstanding until a later round positively verifies it (covers the finding's file in reviewed_paths and does not re-report the defect) or an operator approves, skips, or aborts the gate. This closes the hole behind the closed-stale upstream PR #704: a finding selected at a later gate could be dropped from the carry set before its fix was verified, so a no-op fix could complete the run with the defect unresolved. Verification is conservative: a finding only clears when its file is covered AND nothing in that round's output touches that same file at all. A rereview that reports something else in the same file - which could be the original defect shifted to another line or restated under different wording - is ambiguous evidence, not positive resolution, so the original finding stays outstanding rather than silently clearing. The loop itself is bounded by auto_fix.review (the automatic-round budget) plus the human/agent gate, matching upstream's design - no separate round or stall cap layered on top. Regressions: internal/pipeline/review_carry_forward_test.go covers the no-op-fix journey that must re-park, positive-coverage clearing, and the same-file-ambiguity case. * no-mistakes(review): Park unverified selected info findings after auto-fix exhaustion * no-mistakes(review): Refresh carry-forward reviewed paths each review round * no-mistakes(review): Reset stale carry and retain user-added findings * no-mistakes(document): Documented review carry-forward verification semantics * no-mistakes(document): Document review carry-forward behavior * no-mistakes(review): Preserve pending review selections across fix rounds * no-mistakes(review): Track reminted user findings through verification * no-mistakes(review): Preserve review verification state across daemon recovery * fix(review): carry post-remap selected IDs into a resumed fix round The daemon-recovery ActionFix path resumed executeStep with the pre-response gate.findings and gate.selectedOutstandingIDs instead of the merged outstanding payload and post-remap selected IDs the live (non-restarted) path already computes. After a restart, a newly selected finding could never be positively verified by a clean rereview, and a user-added finding whose ID collided with an existing one and got reminted would drop out of the outstanding set entirely. Also remove the inner approval-gate for-loop in executeStep: every switch branch already returns, gotos done, or continues the outer rounds loop, so the wrapper never iterated a second time. * no-mistakes(review): Bound review coverage to trusted changed files * no-mistakes(document): Documented trusted review coverage boundaries * fix(review): restore reviewed_paths compat, close two coverage/identity gaps Three related fixes to the review carry-forward change, plus a pre-existing test fixture fix uncovered while investigating a genuine hang: - Make reviewed_paths OPTIONAL in reviewFindingsSchema again. Requiring it broke recorded eval/replay fixtures that predate the field and legitimately omit it. A caller that omits it entirely keeps the pre-existing NeedsApproval behavior; a caller that reports it - even as an empty array - is held to covering every trusted reviewable path before a clean round can grant approval (reviewedPathsCoverReviewable), so the optional field cannot be used to certify a head that was not actually reviewed. - Close a positional-ID-reuse hole in review-gate recovery: a finding ID freed when its original finding resolves can be re-minted for an unrelated later finding. Recovery previously retained any historical selected ID present in the latest findings by ID alone, which could silently alias the new, never-selected finding as "selected" after a daemon restart. selectedFindingIdentities / retainFindingIDsByIdentity additionally require the current finding under that ID to match the content identity recorded when it was actually selected. - Fix TestReviewStep_EachAgentInvocationGetsItsOwnBudget: its finding referenced a file never present in the test's actual diff, so it could never be positively covered under the append-only carry-forward contract and the step hung waiting for an approval that never comes. Aligned the finding and its final reviewed_paths to the real changed file. Also fixed TestReviewFindingsSchema_ValidJSON, which asserted reviewed_paths was required; it is now asserted present but optional. * no-mistakes(review): Harden review carry identity and coverage validation * no-mistakes(review): Persist remapped user findings for recovery * no-mistakes(document): Clarified optional review coverage documentation * no-mistakes(ci): Added reviewed_paths: [] to the shared agent-edits e2e fixture. The referenced commit was not present locally; targeted e2e testing still exposed an unrelated review-agent timeout * no-mistakes(ci): Updated the agent-edits e2e fixture to report both reviewed paths. Targeted Claude e2e journey passed; Codex encountered a separate pre-existing fixture/schema issue * no-mistakes(ci): Fixed Codex optional-field normalization and review-routing fixtures. Targeted Codex journey, agent, pipeline, and step tests pass; the independent review-routing e2e still times out after review completion, matching the supplied pre-existing failure * no-mistakes(ci): Fixed the review-routing e2e by explicitly selecting routing-check for the fix round. Targeted e2e test passes; Windows failure is unrelated timing flake * no-mistakes(document): Clarified review carry-forward documentation * fix(review): fail closed when reviewed_paths is omitted A clean review that omitted reviewed_paths skipped coverage validation and still certified the whole head. Treat an absent record exactly like empty or partial coverage: park for approval and log which reviewable files were left unverified. The field stays schema-optional only so older payloads still parse; there is no production escape. The fake agent is the sole fixture-side stand-in: a review turn whose canned response has no reviewed_paths gets the worktree's own reviewable set (base-commit diff minus the prompt's ignore patterns), while a scenario that spells the field out is passed through so coverage gates stay testable. * fix(pipeline): reject unknown approval actions An ApprovalAction outside approve/fix/skip/abort matched no case in the gate loop and re-parked forever. Respond now refuses it with an error while the gate stays parked for a valid response, and the loop's own default branch fails the step instead of looping for any producer that bypasses Respond. * test(review): report full coverage from clean mock reviewers Executor-driven step tests whose mock reviewer returned a clean review with no reviewed_paths now park at the gate by design; report the worktree's full changed set (fullReviewCoverage) so they exercise the completed path they were written for. * no-mistakes(review): Preserve findings after unanchored rereview reports * no-mistakes(document): Clarified unanchored rereview blocking semantics | 3 天前 | |
fix(pipeline): keep review findings outstanding until verified (#1095) * fix(review): keep selected findings outstanding until verified The review gate decides on an append-only outstanding set instead of one round's output: a finding selected for a fix stays outstanding until a later round positively verifies it (covers the finding's file in reviewed_paths and does not re-report the defect) or an operator approves, skips, or aborts the gate. This closes the hole behind the closed-stale upstream PR #704: a finding selected at a later gate could be dropped from the carry set before its fix was verified, so a no-op fix could complete the run with the defect unresolved. Verification is conservative: a finding only clears when its file is covered AND nothing in that round's output touches that same file at all. A rereview that reports something else in the same file - which could be the original defect shifted to another line or restated under different wording - is ambiguous evidence, not positive resolution, so the original finding stays outstanding rather than silently clearing. The loop itself is bounded by auto_fix.review (the automatic-round budget) plus the human/agent gate, matching upstream's design - no separate round or stall cap layered on top. Regressions: internal/pipeline/review_carry_forward_test.go covers the no-op-fix journey that must re-park, positive-coverage clearing, and the same-file-ambiguity case. * no-mistakes(review): Park unverified selected info findings after auto-fix exhaustion * no-mistakes(review): Refresh carry-forward reviewed paths each review round * no-mistakes(review): Reset stale carry and retain user-added findings * no-mistakes(document): Documented review carry-forward verification semantics * no-mistakes(document): Document review carry-forward behavior * no-mistakes(review): Preserve pending review selections across fix rounds * no-mistakes(review): Track reminted user findings through verification * no-mistakes(review): Preserve review verification state across daemon recovery * fix(review): carry post-remap selected IDs into a resumed fix round The daemon-recovery ActionFix path resumed executeStep with the pre-response gate.findings and gate.selectedOutstandingIDs instead of the merged outstanding payload and post-remap selected IDs the live (non-restarted) path already computes. After a restart, a newly selected finding could never be positively verified by a clean rereview, and a user-added finding whose ID collided with an existing one and got reminted would drop out of the outstanding set entirely. Also remove the inner approval-gate for-loop in executeStep: every switch branch already returns, gotos done, or continues the outer rounds loop, so the wrapper never iterated a second time. * no-mistakes(review): Bound review coverage to trusted changed files * no-mistakes(document): Documented trusted review coverage boundaries * fix(review): restore reviewed_paths compat, close two coverage/identity gaps Three related fixes to the review carry-forward change, plus a pre-existing test fixture fix uncovered while investigating a genuine hang: - Make reviewed_paths OPTIONAL in reviewFindingsSchema again. Requiring it broke recorded eval/replay fixtures that predate the field and legitimately omit it. A caller that omits it entirely keeps the pre-existing NeedsApproval behavior; a caller that reports it - even as an empty array - is held to covering every trusted reviewable path before a clean round can grant approval (reviewedPathsCoverReviewable), so the optional field cannot be used to certify a head that was not actually reviewed. - Close a positional-ID-reuse hole in review-gate recovery: a finding ID freed when its original finding resolves can be re-minted for an unrelated later finding. Recovery previously retained any historical selected ID present in the latest findings by ID alone, which could silently alias the new, never-selected finding as "selected" after a daemon restart. selectedFindingIdentities / retainFindingIDsByIdentity additionally require the current finding under that ID to match the content identity recorded when it was actually selected. - Fix TestReviewStep_EachAgentInvocationGetsItsOwnBudget: its finding referenced a file never present in the test's actual diff, so it could never be positively covered under the append-only carry-forward contract and the step hung waiting for an approval that never comes. Aligned the finding and its final reviewed_paths to the real changed file. Also fixed TestReviewFindingsSchema_ValidJSON, which asserted reviewed_paths was required; it is now asserted present but optional. * no-mistakes(review): Harden review carry identity and coverage validation * no-mistakes(review): Persist remapped user findings for recovery * no-mistakes(document): Clarified optional review coverage documentation * no-mistakes(ci): Added reviewed_paths: [] to the shared agent-edits e2e fixture. The referenced commit was not present locally; targeted e2e testing still exposed an unrelated review-agent timeout * no-mistakes(ci): Updated the agent-edits e2e fixture to report both reviewed paths. Targeted Claude e2e journey passed; Codex encountered a separate pre-existing fixture/schema issue * no-mistakes(ci): Fixed Codex optional-field normalization and review-routing fixtures. Targeted Codex journey, agent, pipeline, and step tests pass; the independent review-routing e2e still times out after review completion, matching the supplied pre-existing failure * no-mistakes(ci): Fixed the review-routing e2e by explicitly selecting routing-check for the fix round. Targeted e2e test passes; Windows failure is unrelated timing flake * no-mistakes(document): Clarified review carry-forward documentation * fix(review): fail closed when reviewed_paths is omitted A clean review that omitted reviewed_paths skipped coverage validation and still certified the whole head. Treat an absent record exactly like empty or partial coverage: park for approval and log which reviewable files were left unverified. The field stays schema-optional only so older payloads still parse; there is no production escape. The fake agent is the sole fixture-side stand-in: a review turn whose canned response has no reviewed_paths gets the worktree's own reviewable set (base-commit diff minus the prompt's ignore patterns), while a scenario that spells the field out is passed through so coverage gates stay testable. * fix(pipeline): reject unknown approval actions An ApprovalAction outside approve/fix/skip/abort matched no case in the gate loop and re-parked forever. Respond now refuses it with an error while the gate stays parked for a valid response, and the loop's own default branch fails the step instead of looping for any producer that bypasses Respond. * test(review): report full coverage from clean mock reviewers Executor-driven step tests whose mock reviewer returned a clean review with no reviewed_paths now park at the gate by design; report the worktree's full changed set (fullReviewCoverage) so they exercise the completed path they were written for. * no-mistakes(review): Preserve findings after unanchored rereview reports * no-mistakes(document): Clarified unanchored rereview blocking semantics | 3 天前 | |
fix: handle oversized Claude repair prompts (#526) * fix: bound Claude repair prompt transport * no-mistakes(review): Bound Test and Lint output before IPC * no-mistakes(document): Document Claude stdin and bounded command output | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 29 天前 | ||
| 29 天前 | ||
| 1 个月前 | ||
| 4 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 30 天前 | ||
| 30 天前 | ||
| 4 个月前 | ||
| 3 天前 | ||
| 3 天前 | ||
| 4 个月前 | ||
| 3 天前 | ||
| 3 天前 | ||
| 3 天前 | ||
| 3 天前 | ||
| 1 个月前 |