Skip to content

Fix Claude review stream parsing and clean verdict findings - #12

Draft
MuskanPaliwal wants to merge 1128 commits into
mainfrom
fix-claude-review-stream-parser
Draft

MuskanPaliwal wants to merge 1128 commits into
mainfrom
fix-claude-review-stream-parser

Conversation

@MuskanPaliwal

Copy link
Copy Markdown
Owner

https://entire.io/gh/MuskanPaliwal/cli/trails/12

This draft pull request was opened by Entire after CI was requested for the linked trail. Feel free to edit the title or body — the link above is what keeps the trail and PR connected.

gtrrz-victor and others added 30 commits October 7, 2026 17:00
…into add-create-repo-interactive

# Conflicts:
#	cmd/entire/cli/project_create_wizard.go
TestProjectCreateWizard_SummaryFollowsARevisit failed in CI's
test-core: the form stayed on the region page after Enter. Its harness
dropped any command not answering within 20ms, to stop the cursor-blink
timer re-arming forever, and huh's select ignores Enter until its
options load, which is one of those commands. On a loaded runner that
load could miss the cutoff. The cutoff is now 250ms: still under the
530ms blink, above the 100ms spinner tick (which stops once the options
load), and far above what an immediate command needs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4BEYGP2QFW6P4WPEQF35VV6
Both wizards' SummaryFollowsARevisit tests carried a copy of the same
harness, which dropped any command not answering within 20ms to stop
the cursor-blink timer re-arming. On a loaded CI runner a select's
options can take longer to load than that, and huh's Select ignores
Enter until they do, so the project test stalled on the region page.
driveForm (create_wizard_test.go) now holds the harness once, with a
named 250ms cutoff: under the 530ms blink, above huh's 100ms spinner
tick, far above an immediate command.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4BF55J4YP0Q2CBP8VWMWWFX
…into add-create-repo-interactive

# Conflicts:
#	cmd/entire/cli/project_create_wizard_test.go
The two *_DropsSubmoduleGitlink tests failed on CI with exit 128 when
committing inside the submodule. `git submodule add` clones the source
repo, and the clone does not inherit the local user.name/user.email
testutil.InitRepo wrote; the test process's git config is isolated, so
git fell back to a host-derived identity. That works on a developer
machine and fails on CI. addSubmodule now writes the same identity (and
commit.gpgsign=false) into the clone, and the commit passes
-c user.useConfigOnly=true so a missing identity fails locally too
instead of being masked by the host fallback.

gitrepo's TestIgnoredPaths ran with the developer's global and system
git config, so a global excludes file could change its result. gitrepo
has no process-wide isolation, so the test now points GIT_CONFIG_GLOBAL
at an empty file and sets GIT_CONFIG_NOSYSTEM=1 with t.Setenv, and no
longer runs in parallel. The cli tests that assert on ignore results
are already isolated by the package's TestMain (gitenv.IsolateMain); a
comment says so.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The ignore and gitlink filter ran only on the capture routes in package
cli. A mid-turn commit of an ACTIVE session with no turn-end step takes
its files from the transcript instead (resolveFilesTouched falls back to
extractModifiedFilesFromLiveTranscript), and carry-forward writes what
remains straight into FilesTouched, so a gitignored file or a submodule
path the transcript named stayed pending forever (Cursor Bugbot).

The filter moves out of cli: gitrepo.GitlinkPaths holds the HEAD and
index mode check next to gitrepo.IgnoredPaths, and
strategy.FilterTrackableChanges applies both. The cli capture routes
call it, and extractModifiedFilesFromLiveTranscript now filters its
result, which covers every path where transcript extraction reaches
FilesTouched (resolveFilesTouched, the live-transcript content check,
and the mid-turn claimant probe).

`git check-ignore` without --no-index reports a path whose deletion is
staged, since it has left the index (Copilot). An agent `git rm` of a
tracked file that matches an ignore rule therefore lost its deletion
from FilesTouched, and the commit that deleted it never linked.
Deletions are no longer ignore-checked at all: a git-status deletion is
of a tracked path by construction. They still get the gitlink check.

Tests: an ACTIVE session whose transcript names an ignored file and a
submodule path keeps neither after a mid-turn commit's carry-forward;
a tracked ignored-pattern file deleted with `git rm` (staged) or `rm`
stays in FilesTouched as a recorded deletion through turn end; and
FilterTrackableChanges ignore-checks modified and added paths but not
deletions.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
SaveStep incremented StepCount before dropPhantomFilesTouched ran. When
every changed path in a step was a phantom (named by the transcript but
absent from the worktree) and the step deleted nothing, FilesTouched
ended empty while StepCount > 0. HasPendingWork stayed true, PostCommit
never found an overlap, and an IDLE or ENDED session stayed pending
until doctor or the 24h sweep (Cursor Bugbot).

SaveStep now checks first: if the step names changed paths, none of
them is in the worktree (an unreadable path counts as present), and it
has no deletion, it returns ErrMutationSkip with the old "checkpoint
skipped (no changes)" log, before StepCount, files, hashes or token
usage are touched. That mirrors the shadow-branch path, where a step
with no changes was skipped before anything was counted. A step naming
no paths at all keeps its previous behaviour; turn end never saves one.

Test: a step whose only paths are phantoms leaves StepCount at 0,
FilesTouched empty and the session with no pending work.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
gitrepo.HashWorktreeFiles and gitrepo.IgnoredPaths build raw
exec.CommandContext commands on agent hook paths (Cursor Bugbot). The
default Cancel kills only the git process: a clean filter it spawned
(or anything else holding the output pipe) keeps running, and Wait
blocks until it exits, so a hung filter outlived the hook's deadline.

Both now go through one gitrepo constructor, worktreeGitCommand, which
targets the worktree with -C, drops exported repository selectors
(EnvWithoutRepoOverrides, as before), and applies
execx.TerminateOnCancel: a new process group that is killed on
cancellation, plus WaitDelay as the backstop. gitrepo had no shared git
command constructor to reuse (StatusWithBudget does not spawn git).

Test: a repository whose clean filter sleeps for a minute; with a 300ms
deadline HashWorktreeFiles returns an error within five seconds. Without
the process-group kill it waits the full minute.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
unparam analyses gitrepo on its own, where HashWorktreeFiles is only
called from tests; with both test callers discarding the map it reported
the result as never used. The cancellation test now asserts a killed
hash-object yields no hash, which is also worth pinning.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… .legacy

Re-check the live hook against what was classified and backed up just
before the atomic write, so a hook another tool installs in that gap is
left in place instead of replaced with no backup.

Refuse, without changing anything, when a symlinked hook sits over
Entire's hook in <hook>.legacy: it may be a linked pre-commit wrapper,
and chaining to it would run Entire's hook again.

Say that the no-loss guarantee covers a killed process, not power loss.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4BSGTAGP1DC41QQJXQPWRCC
…stop

A Workflow agent's SubagentStop transcript path came straight from the hook
payload, and the capture read whatever existing file it named into the
checkpoint. It is now used only when it is exactly
<session>/subagents/workflows/<runId>/agent-<id>.jsonl for this session and
agent inside the parent's session directory, with no link below it;
anything else is dropped and the layout lookup applies.

That file's run is passed on as SubagentRunID. A resumed run reuses its
agents' IDs, so its launch found the earlier run's completed record (not
yet condensed) and added none, and its stop was then skipped as a
duplicate, losing the run's files, transcript and tokens. The stop now
completes a record of its own unless one already holds the same run's
transcript, whichever order the runs' stops arrive in.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4BSMV873ACG3DA56SK9RXQA
…hecks

A session with its own checkpoint, attached to a HEAD carrying another
checkpoint's trailer, skipped the push check and amended even a pushed HEAD.
It now gets the same check and is refused there.

Only the remotes the branch pushes to (upstream and push remotes, else
origin) are fetched and asked, so an unrelated unreachable remote no longer
blocks attach, and only branches whose tips aren't local are fetched again.

Git-refs stubs discovered on a remote now carry linked_commits after
hydration, and the linked-checkpoint lookup in attach, explain and blame
reads stubs minted around or after the commit, so a remote-only link is
joined instead of duplicated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4BSQ1H5FMQ553RA9CQ3A1WG
…hook on uninstall

When pre-commit's wrapper runs Entire's hook as <hook>.legacy and the
backup Entire chains to is that same wrapper, run the user's hook Entire
kept for .legacy instead, rather than tripping pre-commit's migration-mode
guard and failing the commit.

On uninstall after pre-commit installed over Entire but before a reclaim,
move the user's hook from .pre-entire to .legacy, where pre-commit runs
it, instead of leaving it unreachable.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4BT8VVV9NVH2Z6B9SWX99EX
blame looked up recorded links per trailer-less commit, and each lookup got
a fresh 30s budget to read remote-discovered stubs. Reads are now cached per
run, so each stub is read once, under a single deadline for the whole run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4BTFTF5K4K06V9GQV72PBT0
--checkpoint stays a checkpoint ID and --commit now works with --repo
(a full SHA, resolved through the foreign repo's cell), so a flag's
meaning no longer depends on the mode; only the positional is told
apart by shape. The accepted forms live in one constant shared by the
explain and search help and the error, so they cannot drift.

The commit listing decodes only the checkpoint ID, the SHA is
normalized in one place, 404s on both cell routes share a message like
403s already did, and the resolver's doc states plainly that it differs
from the local first-trailer read instead of claiming to mirror it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CnyQh8p61zUbHw3v13fdkj
Entire-Checkpoint: 01M4BWAVSEPMAZSH359SG7P9RW
The list lives in the git common dir and records IDs removed by the
upcoming `entire checkpoint delete`; migration skips IDs on it so a
stale v1 copy cannot come back as a ref. RemoveCheckpointSubtree drops a
checkpoint's whole v1 subtree (and an emptied shard), and
UpdatePersistentRef exposes the writers' locked CAS update.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4BWSG4EK9RE9ZX82012E6F9
…in hooks

PlanCheckpointDelete gathers local copies, every remote target resolved
to one concrete URL with its ls-remote state, sessions and their tokens,
session states holding the ID, and other local checkpoints of the same
sessions, without writing anything. ExecuteCheckpointDelete records the
ID as deleted, clears only the ID fields of session state (never token
offsets or baselines), deletes the local ref by CAS before any remote,
removes it from the push queue and the local v1 tip, then deletes each
remote copy with --force-with-lease and re-checks once. v1 remotes get a
removal commit built on their own fetched tip, so local unpushed v1
commits are never pushed.

prepare-commit-msg drops trailers naming a deleted checkpoint (also from
squash/redo inheritance); an amend carrying new agent work gets a fresh
checkpoint ID.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4BWSM1MKTFXV0NVZEG5G17D
Deletes one checkpoint locally and from every checkpoint remote that
holds it, with --dry-run, --force, --local-only, --remote and --json.
Refuses without confirmation when it cannot prompt, and when a session
holding the ID has not ended, unless --force. agent-help classifies it as
user-owned with guidance never to run it unprompted. explain on a commit
whose checkpoint is gone says it may have been deleted. Integration tests
cover both backends, checkpoint_remote plus a legacy origin copy,
pushurl != fetch URL, partial failure and retry, amend, migration after
delete, and mixed-case shards. Docs describe the deliberate leased
non-fast-forward delete and the deletion semantics.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4BWSRC03P4WKDXX2GAE0SX6
…ny commit

attach now decides from two facts about the target, the same for HEAD and
--commit: does it already have a checkpoint (join it), and is it pushed
(record a link) or not (add the trailer, rewriting it and the commits after
it). The "session already has a checkpoint" special case is gone: a session
can be attached to several commits, and each checkpoint records only the turns
since the session's previous one.

Before writing, attach prints what it will do and asks. Without a terminal it
changes nothing and exits non-zero; agent-help tells agents to show the user
that output and pass --force only once they agree.

The trailer rewrite replays commits with git commit-tree (same trees, authors
and messages), moves the branch with a compare-and-swap update-ref, and remaps
session state through PostRewrite, so no commit hooks run and the worktree is
untouched. Merges after the target and in-progress operations are refused.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4C1BX3WYSCG2YSHRZFB35Y3
A skill with `context: fork` runs in an agent of its own that Claude Code
names only in the Skill call's result (status "forked", agentId). Its
SubagentStart reports an ordinary agent type, so the Workflow matcher
never fires, and Entire had no hook on Skill calls: every SubagentStop for
the agent was skipped for lack of a launch record, and the agent's tokens
were missing from the session.

Install PostToolUse[Skill] -> post-task. A forked result records the
launch under the Skill call's tool_use_id with the agent's ID, and the
agent's SubagentStop completes it. Inline skills produce no event. A fork
reported finished (background:false) completes at once with files from its
transcript only, since no pre-task baseline exists for a Skill call; a
missing background flag is treated as still running. The parent
transcript's structured toolUseResult now names the agent for session
subagent_tokens and turn-end file attribution. Status and doctor report
hooks without the Skill entry as outdated.

Part of entireio#2685.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4C1DR8Y6Y3Q6028YTD3CCR3
Keep the reasons that are not visible in code (list order is not a
contract, the local path reads the first trailer, identity is verified
by the follow-up read, 404s lead with "not pushed") and drop the
restatements, duplicates, and test-name echoes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CnyQh8p61zUbHw3v13fdkj
Entire-Checkpoint: 01M4C1V0ZNQRKWD5JE10SX9BYJ
…ording

Found by running attach by hand: explain showed "(none on this branch)" for a
checkpoint linked to a pushed commit, a no-op re-attach warned about "no new
turns" first, and a one-commit rewrite said "Their SHAs change".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4C2FRS12EFZN934S82JY3P9
…'s PWD out

Follow-up to entireio#2619, from an adversarial review after it merged.

- External agents: generate-text ran from the repository root with
  ENTIRE_REPO_ROOT set, like every other plugin subcommand. It now runs
  from a fresh empty directory without ENTIRE_REPO_ROOT or GIT_*.
- Antigravity: agy loads its title command and PreInvocation hooks from
  the user's home and print mode executes both (observed live on 1.3.1).
  Summary runs now get an isolated HOME (plus XDG dirs, USERPROFILE on
  Windows); on macOS only the login keychain file is linked in so sign-in
  still works. A sign-in that lives under the home directory fails with a
  message naming the isolation instead of loading the user's config.
- All generators: exec.Cmd does not rewrite PWD for an explicit Env, so
  the caller's PWD (usually the repository) reached the generator.
  TextGenerationEnv drops PWD/OLDPWD and sets PWD to the generation dir;
  GIT_* stripping now ignores case, as Windows does.
- Codex: every enabled-by-default feature is classified (disabled, or
  accepted with a reason) against a pinned `codex features list`, so a
  release that enables a new feature fails the test once the list is
  refreshed, or against the installed codex in the real-agent run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4C2G0M5A88AMSWH10ESVF3R
Refuse --local-only (or a selection excluding the sync remote) on a
git-branch primary when the local v1 removal would reach that remote on
the next push. Treat a stale lease on an already-absent ref as success
and advance the tracking v1 ref when the remote copy is already gone.
Cancel cleanly on deselect-all/Esc and name holders left out of the
delete. Unrecord IDs when nothing was deleted, check v1 for any ID kind,
skip remote probes for --local-only, show tracking v1 holders, use one
trailer matcher for strip decisions, and limit explain's deleted hint to
IDs on the deleted list.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A background subagent stops again each time a child it launched wakes
it (a forked skill fanning out, or an Agent call with background
children). Its later SubagentStops find the record its first stop
completed, by agent ID, and were logged as a missing in-flight marker
warning. That is expected; only a stop that named its tool call and
still found no live record is worth a warning.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4C2KZRMV9D6VEHY8TEVBKHP
The cross-repo path never reaches runExplain's runtime conflict check,
so passing both flags with --repo picked the SHA and silently explained
a checkpoint the caller did not name. Cobra now rejects the pair in
every mode, and the cross-repo classifier refuses it too so a new
caller cannot reach the reader with two targets.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CnyQh8p61zUbHw3v13fdkj
Entire-Checkpoint: 01M4C2YF8BWBTTD2DND02T69XQ
…exception

The install success line and the uninstall dry-run row still listed four
hooks. The kept-hook and replace-with-existing-backup messages now go through
stderrWriter so tests can see them, and are tested along with uninstall's
"Restored your original" line and the empty Restored list when a foreign hook
blocks the restore. The README said a hook manager's reinstall is always
chained; when a .pre-entire copy already exists, that copy keeps running and
the manager's version is replaced.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4C306A9NS7KR5H71P2SG49V
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dvydra and others added 23 commits October 12, 2026 13:58
Credential-helper validation must not direct users to debug ENTIRE_TOKEN when it is unset. Pass the token source through validation and debug messages while preserving environment-token diagnostics.

Amp-Thread-ID: https://ampcode.com/threads/T-01a12d48-325b-72ce-848a-2db4e4008e3d
Co-authored-by: Amp <amp@ampcode.com>
Git can report silent helper failures and incomplete or expired credentials as missing credentials. ENTIRE_GIT_NO_LOGIN_FALLBACK lets CI fail rather than substitute a saved personal login. Preserve ENTIRE_TOKEN precedence and the default interactive fallback.

Amp-Thread-ID: https://ampcode.com/threads/T-01a12d48-325b-72ce-848a-2db4e4008e3d
Co-authored-by: Amp <amp@ampcode.com>
…acks

Drop the BFF fallback for activity and recap
…ob runs it

test-windows runs only tests matching (Windows|MSYS); TestConsoleHasNoWindow matched neither, so the probe's only regression test never ran in CI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4QM1WQTV55MYD1K9QRE7Q3Q
agy runs its shell commands in a pseudo-terminal left in canonical mode, so the hook's terminal probe accepted it and prepare-commit-msg treated agy's commits as a person's: mid-turn commits lost their checkpoint link, and commits with content got a linking prompt agy cannot answer (a hang before the prompt timeout). Probed with agy 1.2.13: the shell has /dev/ttys*, icanon set, and ANTIGRAVITY_AGENT=1. Add ANTIGRAVITY_AGENT to the agent sentinels.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4QY22D1KJ3BHRFVMX03PX5P
The prompt now gives up after a timeout, so a hook that misjudges an agent's shell as interactive no longer hangs the commit; it only makes it slower, which nobody notices. Log the moment the prompt is shown, as operational metadata only, so tests can fail on it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4QQH5TK7C5QANG10HY95Y8N
E2E never exercised the decision that hung Windows commits from desktop agents (entireio#2725, entireio#2726), because every path handed the hook a shortcut no real agent gives: test repos forced commit_linking=always, agents inherited CI=true and GITHUB_ACTIONS, Vogon set GIT_TERMINAL_PROMPT=0 for its git commands, and Copilot's headless runs set ENTIRE_TEST_TTY=0.

Agent processes and tmux sessions now start without those variables, through one agentEnv helper that a guard test keeps every runner on. Test repos keep the default commit_linking, and a test fails if any hook logged the linking prompt, since no E2E commit has a person behind it. Headless agents on Unix start in a new session, so a run from a developer's terminal has no controlling terminal, as in CI. Vogon behaves like a real agent: its interactive mode holds the terminal out of canonical mode as a TUI does, and on Windows it runs git from a console with no window, as desktop agents do.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4QQHXR55KAWB8V5YZ06TKG1
Windows had no free E2E: the canary ran on Linux only, and the paid Windows job drives Claude Code with CI=true. Run the Vogon lane on windows-latest on every PR and require it. Vogon commits from a windowless console there, so a regression that misjudges a desktop agent's shell as interactive fails the canary; on main's binary the agent's mid-turn commit loses its checkpoint trailer.

The canary script builds vogon.exe so Go's PATH lookup finds it on Windows, and skips the roger-roger lane there. Vogon's isolated home now sets USERPROFILE alongside HOME, since os.UserHomeDir reads USERPROFILE on Windows; with HOME alone the attach test looked for the transcript in the wrong place.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4QQJ81ND7QWZGQ8D2DM0FXD
mise gives the Windows shell $PWD as D:/a/..., and prepending that to PATH splits the entry at the drive colon, so the preflight found no vogon and the job failed before running a test. Prepend the cygpath -u form instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4QRTPFTPP00GFAR0GFJYZ8Q
On Unix, headless agents already start detached from the runner's terminal, but on Windows they inherited its console, so a real agent's git and hooks faced the runner's console rather than the windowless one a desktop app gives its shell. Only Vogon's own git used CREATE_NO_WINDOW.

Start every headless agent with CREATE_NO_WINDOW instead, so the agent and everything it runs inherit that console, and drop Vogon's separate git-only mechanism. Also note in the canary script why E2E_ENTIRE_BIN keeps the bare entire name on Windows: go build -o adds no .exe, and the harness copies the binary to entire.exe itself.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4QSPMA1AP6RR87N43G6VFRM
fatal calls os.Exit, which skips the deferred restore, so an interactive Vogon that failed left its terminal out of canonical mode. Restore it in fatal as well.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4QTMG56XHJPSCZW9GXTXK43
# Conflicts:
#	docs/development/api-routing.md
A poll that hits a 5xx, a 429 or a dropped connection is retried until the
budget ends, since the run keeps generating on the cell; any other poll
failure names the run. The cell's empty-window 404 now reads as which repos
had no checkpoints in which window. --jurisdiction skips the unused home
lookup, and the upstream-host doc points to dispatch's new routing entry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4R0HVKCACY3AJEYHTCNWKJF
…pt-hang

Fix Windows commit hang on an unanswerable linking prompt
OpenCode's RunPrompt was the one headless runner that never called setupProcessGroup, so it kept the test runner's terminal or console and its hooks could see a terminal to prompt on. Call it like the other runners, with the same WaitDelay, and add a guard test that fails any headless RunPrompt runner that skips it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4R1V6PRMHGFR10NRCJRWW89
The stat pass runs inside UserPromptSubmit, so its cost delays every prompt. Above 10,000 untracked files it now records no stats, and it stops after 500ms with what it has. Turn end then only misses edits to the files left out, as with state written before stats existed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4R1X1G0ZW3WDFZMZ6SQDRCF
Link files that agents change through shell commands
…gnals

E2E: decide prompting from real agent signals; Vogon canary on Windows
Generate cloud dispatches on the entire-api cell
http.ProxyFromEnvironment caches the proxy env vars on first use, so a t.Setenv-based assertion depends on no earlier test in the package having sent a request. Re-run the test binary as a child with HTTPS_PROXY set and assert the request arrives at a fake proxy as a CONNECT to the control-plane host.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4R3TJFEKCS8PY4Y79WGAC66
fix: honor HTTP_PROXY/HTTPS_PROXY on the shared HTTP transport
Entire-Checkpoint: 01M4T8WKYSHZY18PD441EADSA7
@MuskanPaliwal
MuskanPaliwal force-pushed the fix-claude-review-stream-parser branch from c42fcb7 to e42158b Compare October 13, 2026 09:57
Entire-Checkpoint: 01M4TEQ8WT27YGM1M85ZMWCTK7
…a trailing approve

Entire-Checkpoint: 01M4TQHPXAQTF9XT8M53D2RXQZ
Entire-Checkpoint: 01M4TTKCQWHJWATJ9XFYGKCKKA
… issues

Entire-Checkpoint: 01M4TXJTCVC98GS212EYVRNMAJ
…ator

Entire-Checkpoint: 01M4TY6QX208VNY1QCYKDJAKDF
…re a trailing approve

Entire-Checkpoint: 01M4TZ80Q89EW6TEB5B3A5P9Q2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.