Repository navigation
fix(vibe): End sessions with a PR or a plain pass-on - #291
Merged
Merged
Conversation
- Plain words such as "I'll get the PR merged" or "I'll ship it myself" are an explicit pull request request and take handoff's requested pull request path (operator ruling, 2026-10-15) - Handoff opens the requested pull request as its last step through a new vibe-environment-worker pull-request mode; the ticket stays with the person and they get the link, never a branch to merge - "Who should pick this up next?" becomes one plain two-way question, settled before the checks; a name is asked only for passing it on - A new session's first reply carries a non-blocking endings line - Person-facing text drops "handoff" as an unexplained term - Adds the pull-request record action to the shared launcher record modes, used by the Claude launcher and the Codex native grant - Adds contract tests, launcher and native record tests, and a claude plugin eval suite under plugins/vibe/evals Testing: pytest plugins/vibe, vibe-workers vitest and typecheck, node skill script tests, plugin manifest tests, the eval suite against this branch and 1.0.38 Risks: Handoff can now open a symphony-alpha pull request, only on the person's request and never merging it
- The judge failed a correct reply that promised the pull request link together with the ticket and app links; only offering a branch or the ticket to merge instead of a pull request fails now
Collaborator
Author
|
Eval results (
|
shafty023
added a commit
that referenced
this pull request
Oct 15, 2026
…#292) * fix(vibe): Cut setup friction and repeated questions in vibe sessions Bind Claude workers to the installed plugin root, check the Claude sign-in and each worker's granted connections before work starts, record every question and answer on the session, add a portable time limit for macOS, and keep person-facing text in plain words from one shared list. * fix(vibe): Version 1.0.41, plain sign-in relay and friction evals Take 1.0.41, relay any expired Claude sign-in with the preflight's claude auth login step, keep the ending vocabulary from #291 in the plain words list, and add the setup, sample-data and question eval cases for both personas. * fix(vibe): Check the stopped worker, not an unread brief, in the connection test The brief is piped at spawn, so on Linux the fixture can record it before the launcher stops the worker. Assert the process is gone instead.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A vibe session ends one of two ways now: a pull request the person takes through review and merge, or passing it on (operator ruling, 2026-10-15). In a real product-manager session, handoff asked "Who should pick this up next?" twice. She said "i will get the pr merged", and the session answered with "the ticket and the branch to merge". It never started the requested pull request path, wrote no tests, never pushed and never assigned the ticket. This fixes each of those.
guardrails.md("Tests"); the vibe and handoff skills,quality-loop.mdand the change worker point to it. Tests are still written only on that request. Nothing offers the person "the branch to merge".pull-requestturn, and step 7 commits, pushes and publishes. As handoff's last step, a newpull-requestmode invibe-environment-workeropens the PR on the pushed branch withgh pr create. It fills symphony-alpha's current template from the session record, with an honest Breaking changes answer and a UI flag attestation only from the flag record. Anything the record can't support is noted for the reviewer. It never merges, enqueues, requests reviewers, triggers CI or addswarning-acknowledged. The ticket stays with the person, In Progress, and they get the PR link. Every brief after the request carries thepull-requestphase, and no brief may say both "PR" and "no tests". The old "handoff opens none" wording is gone.$handoffand its triggers are unchanged. The skill andguardrails.mdno longer assume an executive who always passes work on.pull-requestrecord action is declared once intools/vibe-workers/src/record-context.tsand read by both the Claude launcher (claude-worker.mjs) and the Codex native grant (writer-state.mjs acquire-record). The dist bundles are rebuilt.Tests:
test_vibe_session_endings_contract.py: 10 cases, all 10 fail on 1.0.38 and pass here.test_handoff_skill_contract.pyandtest_vibe_handoff_docs_tests_control_contract.pypinned the old question and "handoff opens none"; they now pin the new wording.pull-requestaction with no record writes; the Codex native record CLI grants it to that worker and refuses it to the ticket worker. Both fail on 1.0.38.plugins/vibe/evals/suite (15 cases forclaude plugin eval, executive and product-manager personas, including the real exchange with a neutral name). The README says how to run it. It is not wired into CI. Scores are in a comment below.Bumps vibe to 1.0.39 (both manifests) with a CHANGELOG entry.