Repository navigation
feat(console): interactive Issue runs - #335
Merged
Merged
Conversation
The envelope told the agent to ask for approval in the chat and the submit tool asked again. The dialog is now the only approval question; after a decline the agent asks what to change.
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.
Implements the interactive Issue runs design from #327 (
docs/specs/2026-10-14-issue-225-interactive-issue-runs-design.md). Closes #225.Summary
patchmill run-once --interactive [--issue N]opens a Pi console session for one issue. Planning happens in the chat. Implementation runs as a backgroundpi-subagentsworker. The Issue run stays open until the implementation PR is merged. Non-interactive runs are unchanged.What decides the next step is still only git and the host. The new gate fact for chat approval:
New code is in
src/console/(extension, tools, controller, worker launcher, session host, planning usage). Kernel changes are insrc/kernel/: the phase launcher and stop publication were extracted, plus the human channel, review wait, chat approval, merged cleanup and run snapshots. The README, CONTEXT.md and the spec were updated.Fixes from live runs in
rochecompaan/patchmill-test(issues 1–4):git status --porcelainis empty. That is the only check.Evidence
npm test: 864 of 864 pass.npm run lintandnpm run buildpass.pi-subagents: console start, session switch, worker fork, quit, and a forced session-switch failure with a custom theme (exits 1 within the time limit).patchmill-testwent from planning to a merged PR in the console (for example PR chore(main): release 0.6.0 #13). Those runs found the cost, session-reuse, skill and cleanup bugs above.9a8da6b9,3a1cc01f,664e5c12). Tests cover it with real local git and a fake host.Merge Danger
Door: two-way.
--interactiveis opt-in. Reverting removes the console. Issue state lives in labels, branches and PRs, as before.Blast Radius: mostly interactive runs. These changes reach shared kernel code:
planningWorkspacealso passes a required gate when its document is on the pushed implementation branch. A non-interactive run sees the same fact: a gated document someone pushed there by hand counts as approved.run-once.tswas split into the phase launcher and stop publication. It is at its 445-line limit.facts.tsartifact reading moved toartifact-source.ts. Behavior is unchanged.No npm dependency changes.
Known gaps:
pi-subagentsfrontmatter parser (upstream).