Repository navigation
feat(vibe): Link the source and publish the plan as a PLN - #306
Merged
Merged
Conversation
- The ticket worker links the document a session started from to its live ticket (source PRODUCES ticket) and publishes the session's local plans as one implementation plan document (PLN) the ticket produces, in its project and assigned to its assignee. Every write is listed first, so a resumed session or a rerun duplicates nothing. - New plan mode runs after each request's plan; a version is appended only when the plan changed materially. The PLN is DRAFT until its plan is built, APPROVED once the code is written and checked (at the latest before handoff opens the pull request), and EXECUTED once the pull request merged. Every update-document carries expectedStatus. - session-plan.mjs renders the plans and publishable-text.mjs applies the ticket's safety rules: checkout paths become repo-relative; a local absolute path, username, personal email, secret or private session input is refused and goes back to the same writer. - The session record keeps livePlan and livePlanStatus next to liveTicket. Handoff verifies and repairs both links and the PLN and leaves it APPROVED; live-ticket-check refuses a session with plans and no APPROVED PLN. Assign mode hands the PLN over with the ticket. - The launcher grants create_artifact_link and the plan writes only to the ticket worker's create, plan and handoff actions. - The never-upload-the-plan rule is retired everywhere it appeared. Testing: vibe pytest, node tests under plugins/, vibe-workers vitest and typecheck, ruff, pyright; plan-links evals on Claude and Codex Risks: One extra ticket worker turn per request in the build loop
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.
Purpose
Operator ruling, 2026-10-19. Each vibe session's live ticket had no link back to the PRD it was started from, and the session's plan stayed local because the ticket worker was told never to upload it. Now:
update-documentcarriesexpectedStatus.Affected files
agents/vibe-ticket-worker.md: new "Source link and session plan" procedure (steps A to F, list before every write); create mode links the source; new plan mode (built,mergeCheck); handoff mode step 7 verifies, repairs and approves; assign mode hands over the PLN; the never-upload rule is replaced.skills/vibe/SKILL.md: session start links the source; build loop step 6 dispatches plan mode after each request's plan; resume runs the merge check for handed-off sessions with an APPROVED PLN.skills/handoff/SKILL.md: step 0 merge check, step 8 ticket checks for the links and PLN, step 9 assign hands over the PLN.skills/vibe/references/quality-loop.md,ticket-template.md,agents/vibe-change-worker.md,vibe-backend-worker.md,vibe-prototype-worker.md,README.md: the never-upload rule retired and replaced; plans still never committed, deployed, attached or pasted into the ticket body.skills/vibe/scripts/session-plan.mjsandpublishable-text.mjs(the ticket's safety rules, applied to the plan);vibe-sessions.mjsrecordslivePlanandlivePlanStatus;live-ticket-check.mjsrefuses a session with plans and no APPROVED PLN.tools/vibe-workers:create_artifact_linkis a record write andget_document_contenta live read; per-action grants for the ticket worker's create, plan and handoff actions; dist rebuilt.Commands run
uv run ruff check .,uv run pyright,uv run pytest plugins/vibe(312 passed)node --testover every*.test.mjsunderplugins/(node-tests job equivalent): all pass locallytools/vibe-workers:npm run typecheckandnpm run buildlocally;npm testand the dist drift check in CItools/plugin-manifests:npm run typecheck,npm testin CItest_vibe_plan_links_contract.py: 9 of 9 fail on 1.0.54plan-links, one run each: Claude (sonnet) 5 of 5, then 4 of 5 on a second run (the local path case quoted the refused path); after the never-quote rule was tightened that case passed 3 of 3. On 1.0.54 Claude passes 1 of 5 (the missing-link repair case is answerable from the prompt alone). Codex 5 of 5 throughplugins/vibe/evals/codex/run.pyafter its source-link grader was widened to accept the PRD's id as well as its slug.node --testandnpm testintools/vibe-workersare green in CI (Node Tests,TypeScript (vibe-workers)including the dist freshness check).