Skip to content

Increase timeout, add a single retry - #10

Merged
Soph merged 1 commit into
mainfrom
soph/notarization-timeout-and-retry
Jan 6, 2026
Merged

Increase timeout, add a single retry#10
Soph merged 1 commit into
mainfrom
soph/notarization-timeout-and-retry

Conversation

@Soph

@Soph Soph commented Jan 6, 2026

Copy link
Copy Markdown
Collaborator

The first try based on #7 failed with a timeout after 20min, let's increase it and also add a retry.

Entire-Checkpoint: ee8f793bfeb9
@Soph
Soph requested review from dipree and georg January 6, 2026 15:03
@Soph
Soph merged commit 45109dd into main Jan 6, 2026
3 checks passed
@Soph
Soph deleted the soph/notarization-timeout-and-retry branch January 6, 2026 15:06
alishakawaguchi added a commit that referenced this pull request May 20, 2026
CI lint:
- escape U+200B literals (staticcheck ST1018)

Real bugs (cursor[bot] + Copilot review):
- loop: ctx-cancel mid-cmd.Run() now classifies as OutcomeCancelled
  instead of being counted as a turn failure and tripping OutcomePaused
  after two consecutive cancels (#1)
- loop: save state before returning OutcomePaused so --continue resumes
  from a snapshot that includes the failing turn (#11)
- investigate fix: wrap context.Canceled as SilentError so Ctrl+C during
  the fix session doesn't print a cobra usage banner (#2)
- cmd: redact URL userinfo on the issue-link Source: line in both
  interactive and non-interactive paths (#5)
- issuelink: redact URL userinfo across gh stderr (not just argv) so a
  token in --issue-link cannot leak via the error path (#10)
- cmd: outcome-aware footer — "Investigation ended" + resume hint for
  paused/cancelled, "Investigation complete" + fix hint only for
  Quorum/Stalled (#6)
- cmd: validate maxTurns/quorum bounds after settings/flag merge so a
  hand-edited negative max_turns or oversized quorum errors cleanly
  instead of silently stalling (#7)
- issuelink: tolerate GitHub URL trailing segments (/pull/123/files,
  trailing slash) — the regex now anchors prefix and ignores tail (#13)
- picker: don't print "Saved investigate config" before persistence;
  moved to the caller after SaveLocal succeeds (#14)
- picker: guard pickerFormOverride with atomic.Pointer so parallel
  tests that swap the override don't race (#12)

Docs:
- settings/loop: fix stale "0 → 3" max_turns doc; default is 2 (#8/#9)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: b0135abeee0d
suhaanthayyil added a commit that referenced this pull request Jul 12, 2026
… overlap docs

Audit hardening for the trailerless mid-session commit recovery (issue #487).
No production-code change: the recovery in PostCommit was verified correct
(reaches ACTIVE + GitCommit -> Condense, finalizes at Stop, is idempotent and
amend-safe, and is mutually exclusive with the trailer path so it cannot
double-checkpoint). These changes strengthen the test coverage and docs for the
wrong-attribution risk area.

- Add TestShadowStrategy_MidSessionCommit_ConcurrentDisjoint_OnlyOwningSessionRecovered:
  two concurrent ACTIVE sessions with disjoint tracked files; a trailerless commit
  of one session's file must recover ONLY that session and never cross-attribute the
  other. The recovery path's content-overlap gate makes this strictly more precise
  than the normal trailer path, which condenses every recent ACTIVE session
  regardless of overlap. Mutation-verified: dropping the noTrailerRecovery overlap
  gate makes the test fail with both sessions attributed to the checkpoint.

- Clarify checkpoint-scenarios.md caveat #10: recovery overlap is the intersection
  of committed paths with the session's tracked files, verified content-exact for
  newly-added files (blob-hash match against the shadow branch) and by path for
  modified files -- the same heuristic PostCommit uses elsewhere. Documents that a
  commit touching only untracked files is left alone, a modified pre-existing file
  is linked even if bytes differ, and two concurrent sessions editing the same
  committed file are both linked (as in the trailer path).
suhaanthayyil added a commit that referenced this pull request Jul 12, 2026
…s mode (#487)

The #487 recovery gated on no-TTY as a proxy for "agent commit", treating any
commit made at a TTY as a possibly-declined link and never recovering it. But the
#487 root cause -- a global core.hooksPath, or entire off the git hook PATH --
stops prepare-commit-msg from running for BOTH agent and human-typed commits, and
no link prompt ever appears. A developer typing `git commit` at a terminal while
an agent's ACTIVE session had overlapping uncommitted work therefore still lost
that work: TTY presence was wrongly read as a decline.

Fix: suppress recovery only for a genuine decline -- a TTY commit made while
Entire's prepare-commit-msg hook was actually wired. PrepareCommitMsgHookWired
resolves the hooks dir git uses (respecting core.hooksPath) and checks for
Entire's prepare-commit-msg. When it is wired, an absent trailer means the human
answered "no" to the prompt or deleted the offered trailer in their editor, which
is honored. When it is NOT wired (the #487 broken-hooks mode), no linking was ever
offered, so a missing trailer is not a decline and the ACTIVE session's
overlapping work is recovered for human-typed and agent commits alike. Agent
commits have no TTY and stay eligible regardless.

Hook-wiring is a stronger signal than a "declined prompt" marker: it also honors
the editor-flow trailer deletion (which never calls askConfirmTTY), and it is
stateless -- no cross-hook marker to persist, go stale, or scope per worktree.

Tests: a human-TTY commit in broken-hooks mode now recovers; a TTY commit with the
prepare-commit-msg hook wired (a real decline) is still not recovered; unit test
for PrepareCommitMsgHookWired. Both integration tests are mutation-verified.
Contract documented in checkpoint-scenarios.md caveat #10.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants