Skip to content

feat(web): implement a plan through the executor, and stop it from the Pair panel - #661

Merged
rynfar merged 2 commits into
pylonfrom
feat/pair-web-actions
Sep 18, 2026
Merged

rynfar merged 2 commits into
pylonfrom
feat/pair-web-actions

Conversation

@rynfar

@rynfar rynfar commented Sep 18, 2026 •

Copy link
Copy Markdown
Collaborator

What

Two additions to the web Pair experience.

  • Implementing a plan on a paired thread. The plan card's button reads "Implement with executor", and the implementation message ends with one reminder: write the contract and the failing tests yourself, hand the plan to the executor one step at a time with pair_handoff, verify each step before the next. The recognized prefix stays first, and an unpaired thread sends exactly what it sent before. "Implement in a new thread" is unchanged, since a new thread is not paired.
  • Stop executor. The Pair panel shows a "Stop executor" button while the executor holds a turn, including one paused on an approval or a question. It dispatches the existing turn interrupt for the executor thread and reports a failure as a toast.

How

  • buildPlanImplementationPrompt(plan, { paired }) and resolvePlanFollowUpSubmission carry the flag; ChatView derives activeThreadPaired from the thread shells it already has.
  • ComposerPrimaryActions takes pairedImplement; PairControl takes an optional onStopExecutor, supplied by usePairControl.
  • No server or contract changes.

Verification

  • vp test run apps/web/src/proposedPlan.test.ts apps/web/src/components/chat: 970 passed. Three tests were written first and seen failing: the exact prompt suffix and that the unpaired prompt is unchanged, the button label in all three states, and the stop button's presence per executor phase and without a handler.
  • Typecheck @t3tools/web: 0 errors. vp check on the changed files: no formatting issues, no new lint warnings.
  • Not run in a browser.

How it was built

Through pair mode on a real install: Claude lead, Antigravity executor, shared worktree, three test files protected (checked 3, changed []). One executor turn, no corrections.

Part of #622.

Model: Claude Fable 5.1 (lead) with an Antigravity executor, paired in Pylon via the Claude Code harness.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

@vercel

vercel Bot commented Sep 18, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
pylon-marketing Ready Ready Preview Sep 18, 2026 10:44pm UTC

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L labels Sep 18, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 14.0 KiB 13.9 KiB −8 B (−0.1%) 15.1 KiB ✅
Codex Thread snapshot wire 7.2 KiB 7.2 KiB −6 B (−0.1%) 7.3 KiB ✅
Codex Live turn WebSocket wire 6.7 KiB 6.7 KiB −2 B (−0.0%) 7.8 KiB ✅
Codex Live turn WebSocket decoded 58.0 KiB 58.0 KiB 0 B (0.0%) 66.4 KiB ✅
Codex Live turn messages 9 9 0 (0.0%) 21 ✅
Claude Total thread wire 14.0 KiB 14.0 KiB −7 B (−0.0%) 15.1 KiB ✅
Claude Thread snapshot wire 7.2 KiB 7.2 KiB +7 B (+0.1%) 7.3 KiB ✅
Claude Live turn WebSocket wire 6.7 KiB 6.7 KiB −14 B (−0.2%) 7.8 KiB ✅
Claude Live turn WebSocket decoded 58.9 KiB 58.9 KiB 0 B (0.0%) 66.4 KiB ✅
Claude Live turn messages 9 9 0 (0.0%) 21 ✅

Baseline: e397226 · PR result: 8acc575 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 115.6 KiB
  • Claude decoded thread snapshot: 116.4 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@rynfar
rynfar merged commit 404c4a3 into pylon Sep 18, 2026
19 checks passed
@rynfar
rynfar deleted the feat/pair-web-actions branch September 18, 2026 22:55

This branch was successfully deployed

1 active deployment
Preview — 8acc575b Deployed Sep 18, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant