You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Part of #67 (moved from #58; blocked by the seven build tickets #74–#80, which are what the remnants are for) (moved from #49 when that map was superseded)
Question
Clean out the gen-1 leftovers once repair is done: the gen-1 bridge still installed under the product's own directory (ruled NOT a launch-stop, but disposal was promised post-repair) and the known-noise gen-1 hook in agentcrew.toml. Resolution records what was removed and verifies the installed v1.0 bundle is unaffected.
Unblocked, and its scope grew by one item (backlog sweep, 2026-08-28)
Every blocker is closed. GitHub reports blocked_by: 0 of 9 — the seven build tickets #74–#80 and their predecessors — and #126 recorded the build tickets exhausted. The map rule that kept the remnants on disk (rule 5: they are the reference implementation every repair brief cites) has been discharged. This is now pickable.
Remnants confirmed on the reference machine at the time of writing, so whoever takes it starts from a real list rather than a memory:
~/Library/LaunchAgents/com.gpt-voicecoding.bridge.plist — present (0600, 19 Aug), not loaded (launchctl print gui/501/com.gpt-voicecoding.bridge → Could not find service). So this one is a file to remove, not a job to stop — and it must not be confused with com.gpt-voicecoding.codex-daemon.plist in the same directory, which is v1.0's and is live.
gen-1 files in the product's own Application Support directory, sitting beside v1.0's installation.json / runtime / engine: bridge.sqlite3, bridge.sqlite3.bak-20260818-140225, bridge.log, bridge.log.1, bridge.log.lock, bridge-serve, config.plist, config.local.plist.
the known-noise gen-1 hook in agentcrew.toml.
docs/app-bundle.md:301 — "Cutover: retire the first generation's codex skill" — is the written procedure for one part of this.
Added to this ticket by #29's closure: directories the pre-park v1.0 launcher left behind — /tmp/vc-launch-* and /tmp/vc-codex-*. Nothing creates them any more (the Session Launcher was parked by #72), so they are inert leftovers of the same kind as the gen-1 files, and #29's careful liveness rule no longer applies to them: no live writer can be holding those sockets, because no code path opens one. Sweep them with the rest and count them in the resolution.
Unchanged: the resolution records what was removed and verifies the installed v1.0 bundle is unaffected. One caution worth stating, given what is in that directory: the sweep touches the same Application Support base that holds installation.json (#86's uninstall-intent record) and runtime — a wrong glob there would take out v1.0's own state. Name the files; do not pattern-match bridge*.
the eight named gen-1 files under ~/Library/Application Support/GPT-VoiceCoding/:
bridge.sqlite3, bridge.sqlite3.bak-20260818-140225, bridge.log,
bridge.log.1, bridge.log.lock, bridge-serve, config.plist, and
config.local.plist
the known-noise gen-1 [hooks.on-child-launch] block and
HANDS_FREE_CHILD_SESSION entry from ~/Documents/coding/agentcrew.toml
the approved legacy Claude/Codex hook references
the previous installed App, replaced by the rebuilt v1.0 bundle
The /private/tmp/vc-launch-* and /private/tmp/vc-codex-* sweep found no
remaining directories. Removed material and the pre-edit agentcrew.toml are
recoverable under ~/.Trash/GPT-VoiceCoding-ticket-54.GTsRb2/.
Preserved and verified:
v1.0 installation.json, runtime/, and engine/ remain present
agentcrew.toml parses successfully after the removal
repository fixed point is clean main@093c7be9dd637d4900fc3fd215f0b26984b914ca
/Applications/GPT-VoiceCoding.app passes strict deep codesign verification
bundled gpt_voicecoding matches the checkout (differences=[])
after a graceful restart, the shell is running and the engine is its direct
child; bridgectl status exits 0
installation intent is wanted=true, Claude hooks are current, and the shared
Codex daemon is answering
Closure remains blocked:
The engine, audio, and control plane work, but the installed App's menu-bar
Control Panel is not visible. That prevents an honest claim that the installed
v1.0 bundle is unaffected, which is an explicit Dispose of the gen-1 bridge remnants #54 completion condition.
The Codex LaunchAgent reports stale because the loaded job is of unknown
render; the current plist applies at the next login.
Product acceptance was not run, per operator instruction.
The previous cleanup status incorrectly said that runtime/ had been preserved. Six files/directories inside that boundary had in fact been moved beyond the approved #54 list:
runtime/claude-hosted
runtime/codex-hosted
runtime/bridge/
runtime/config.plist
runtime/bridgectl
runtime/bridge-hook
All six have now been restored verbatim from ~/.Trash/GPT-VoiceCoding-ticket-54.GTsRb2/. The literal #54 removals remain retired: the eight named top-level gen-1 state files, com.gpt-voicecoding.bridge.plist, the approved legacy hook registrations, the AgentCrew gen-1 child-launch hook, and the replaced old App.
Evidence for the rollback:
~/.zshrc directly calls both hosted launchers; each launcher imports runtime/bridge, whose loader requires the adjacent runtime/config.plist.
Login-zsh probes of voicecoding, agentcrew, voicecodingx, agentcrewx, and voicecodingb all reached a fake final Claude/Codex executable with exit 0 and no output. No real agent session was started.
The restored Python modules import and load their installed config successfully; launcher syntax and executable modes pass.
The repository remains clean at main@093c7be9dd637d4900fc3fd215f0b26984b914ca; the installed App still passes strict deep codesign verification.
This already-running Codex session cached the retired bridge-hook before the hook config was cleaned. Its Stop hook now succeeds after the rollback but recreates the top-level bridge.log with skipped (no-launch-marker). The regenerated log can only receive a stable final sweep after this old session exits; a new session reads the cleaned hook config.
The installed Duty Switch Toggle Shortcut still exists and its documented command is runtime/bridgectl duty-toggle, but read-only bridgectl status and duty-status report that no legacy Bridge is listening on bridge.sock. Restoring the removed gen-1 daemon or LaunchAgent would contradict Dispose of the gen-1 bridge remnants #54 and was not done here.
The installed App's menu-bar Control Panel remains invisible.
The loaded Codex LaunchAgent remains stale until the next login.
Resolution — gen-1 retired from the reference machine (2026-08-30)
Correction of the previous comment.runtime/ was gen-1, not v1.0's, and its "rollback" restored the first generation: runtime/.source-revision is 1d3284510f9f1af21bd527e1c18e0cc9c2b07de2 — the legacy reference state, which git cat-file -t cannot resolve in this repository — and its bridgectl carries gen-1's verbs (serve, duty-toggle, session-label, stop, stops, install-hooks), exactly the two tests docs/app-bundle.md ("Check for the first generation's whole runtime too") prescribes. The reason the earlier sweep broke things was not that v1.0 needed runtime/; it was that the machine's shell layer still did: ~/.zshrc defined claude() / codex() functions that exec'd runtime/claude-hosted / codex-hosted, so every alias (voicecoding, agentcrew, …) routed through gen-1, and five running Claude Sessions carried --channels plugin:hands-free-claude-channel@gpt-voicecoding with a runtime/claude-channel/channel.mjs child each. Removing the runtime before the couplings is what left the aliases dead. This pass removed the couplings first.
Inventory was taken against legacy's own footprint (legacy@1d32845:install.sh, uninstall.sh, config.plist keys bridge.*, hostApp.*, claudeAdapter.channelPlugin.*) rather than from memory.
claude plugin uninstall / marketplace remove (legacy uninstall.sh procedure)
settings.json diff is exactly those two entries; the v1.0 SessionStart registration and PermissionRequest approval hooks untouched
~/.claude-b: same plugin + marketplace, plus four bridge-hook --agent claude hook groups (Stop / Notification / SessionEnd / SessionStart)
removed by exact-match JSON edit; the ccgram hooks sharing those slots kept
pre-edit render round-trips byte for byte; post-edit valid, zero bridge-hook refs. Out of v1.0 scope, but a dangling hook path would have errored on every account-B Session.
it named the dev checkout's .venv (#38) and a module that no longer exists (adapters.agent.claude.channel) — the cause of the gpt-voicecoding-claude-channel MCP "Connection closed" on every start
Already gone before this pass (verified, not re-done)
com.gpt-voicecoding.bridge.plist; the eight named top-level state files; ~/.codex/hooks.json bridge-hook entries; ~/.codex/skills/ gen-1 skill; agentcrew.toml[hooks.on-child-launch]; /tmp/vc-launch-*, /tmp/vc-codex-*; the retired claude mcp registration in ~/.claude.json.
Kept, with reason
~/.codex/config.toml[network] allow_unix_sockets and six stale hooks.state entries — legacy's uninstall.sh leaves them too; inert.
~/.claude.jsonpluginUsage counters for hands-free-claude-channel@hands-free-* — usage telemetry only.
v1.0 verified unaffected
App Support keeps installation.json, engine/, acceptance/, acceptance-12/, probe-105/, codex-app-server.log, codex-daemon.log; nothing else was in scope.
Shell → engine → realtime codex app-server process chain still up; codesign --verify --deep --strict /Applications/GPT-VoiceCoding.app passes.
Bundle bridgectl status exit 0 with a live roster; bridge-install status: claude-hooks: current, shared daemon answering 0.149.1. codex-launch-agent: stale … applies at the next login predates this pass (recorded in the previous comment).
grep over ~/.zshrc, both settings.json, both plugin registries, ~/.codex/{config.toml,hooks.json,keybindings.json}, ~/Library/LaunchAgents/*.plist, agentcrew.toml: no runtime/, claude-hosted, bridge-hook, hands-free, vc-channel-plugin reference remains.
Left to the operator (user-owned, outside what a script may do)
Delete the "Duty Switch Toggle" Shortcut (it invoked runtime/bridgectl duty-toggle; the shortcuts CLI has no delete verb).
Restart the five Claude terminals that were started through claude-hosted; new Sessions run the ordinary claude.
Closed on the resolution above: gen-1 runtime and every coupling to it retired, v1.0 bundle verified unaffected, removals recoverable under ~/gpt-voicecoding-gen1-retired-20260830/.
Activity
Simon-AI-coding commentedon Aug 24, 2026
Re-parented to Map: v1.0 launch with legacy as the behaviour spec. Now blocked by Run the rewritten repair charter to acceptance-green: the gen-1 remnants are the reference implementation every repair brief cites (map rule 1), so they stay on disk until the repair is done.
Simon-AI-coding commentedon Aug 28, 2026
Unblocked, and its scope grew by one item (backlog sweep, 2026-08-28)
Every blocker is closed. GitHub reports
blocked_by: 0of 9 — the seven build tickets #74–#80 and their predecessors — and #126 recorded the build tickets exhausted. The map rule that kept the remnants on disk (rule 5: they are the reference implementation every repair brief cites) has been discharged. This is now pickable.Remnants confirmed on the reference machine at the time of writing, so whoever takes it starts from a real list rather than a memory:
~/Library/LaunchAgents/com.gpt-voicecoding.bridge.plist— present (0600, 19 Aug), not loaded (launchctl print gui/501/com.gpt-voicecoding.bridge→Could not find service). So this one is a file to remove, not a job to stop — and it must not be confused withcom.gpt-voicecoding.codex-daemon.plistin the same directory, which is v1.0's and is live.installation.json/runtime/engine:bridge.sqlite3,bridge.sqlite3.bak-20260818-140225,bridge.log,bridge.log.1,bridge.log.lock,bridge-serve,config.plist,config.local.plist.agentcrew.toml.docs/app-bundle.md:301— "Cutover: retire the first generation's codex skill" — is the written procedure for one part of this.Added to this ticket by #29's closure: directories the pre-park v1.0 launcher left behind —
/tmp/vc-launch-*and/tmp/vc-codex-*. Nothing creates them any more (the Session Launcher was parked by #72), so they are inert leftovers of the same kind as the gen-1 files, and #29's careful liveness rule no longer applies to them: no live writer can be holding those sockets, because no code path opens one. Sweep them with the rest and count them in the resolution.Unchanged: the resolution records what was removed and verifies the installed v1.0 bundle is unaffected. One caution worth stating, given what is in that directory: the sweep touches the same Application Support base that holds
installation.json(#86's uninstall-intent record) andruntime— a wrong glob there would take out v1.0's own state. Name the files; do not pattern-matchbridge*.Simon-AI-coding commentedon Aug 29, 2026
Cleanup status — blocked from closure
The approved #54 sweep is complete.
Removed or retired:
bridge.sqlite3, bridge.sqlite3.bak-20260818-140225, bridge.log,
bridge.log.1, bridge.log.lock, bridge-serve, config.plist, and
config.local.plist
HANDS_FREE_CHILD_SESSION entry from ~/Documents/coding/agentcrew.toml
The /private/tmp/vc-launch-* and /private/tmp/vc-codex-* sweep found no
remaining directories. Removed material and the pre-edit agentcrew.toml are
recoverable under ~/.Trash/GPT-VoiceCoding-ticket-54.GTsRb2/.
Preserved and verified:
child; bridgectl status exits 0
Codex daemon is answering
Closure remains blocked:
Control Panel is not visible. That prevents an honest claim that the installed
v1.0 bundle is unaffected, which is an explicit Dispose of the gen-1 bridge remnants #54 completion condition.
render; the current plist applies at the next login.
Leaving #54 open.
Simon-AI-coding commentedon Aug 29, 2026
Correction — v1.0 runtime rollback completed
The previous cleanup status incorrectly said that
runtime/had been preserved. Six files/directories inside that boundary had in fact been moved beyond the approved #54 list:runtime/claude-hostedruntime/codex-hostedruntime/bridge/runtime/config.plistruntime/bridgectlruntime/bridge-hookAll six have now been restored verbatim from
~/.Trash/GPT-VoiceCoding-ticket-54.GTsRb2/. The literal #54 removals remain retired: the eight named top-level gen-1 state files,com.gpt-voicecoding.bridge.plist, the approved legacy hook registrations, the AgentCrew gen-1 child-launch hook, and the replaced old App.Evidence for the rollback:
~/.zshrcdirectly calls both hosted launchers; each launcher importsruntime/bridge, whose loader requires the adjacentruntime/config.plist.voicecoding,agentcrew,voicecodingx,agentcrewx, andvoicecodingball reached a fake final Claude/Codex executable with exit 0 and no output. No real agent session was started.main@093c7be9dd637d4900fc3fd215f0b26984b914ca; the installed App still passes strict deep codesign verification.Remaining blockers; #54 stays open:
bridge-hookbefore the hook config was cleaned. Its Stop hook now succeeds after the rollback but recreates the top-levelbridge.logwithskipped (no-launch-marker). The regenerated log can only receive a stable final sweep after this old session exits; a new session reads the cleaned hook config.Duty Switch ToggleShortcut still exists and its documented command isruntime/bridgectl duty-toggle, but read-onlybridgectl statusandduty-statusreport that no legacy Bridge is listening onbridge.sock. Restoring the removed gen-1 daemon or LaunchAgent would contradict Dispose of the gen-1 bridge remnants #54 and was not done here.Simon-AI-coding commentedon Aug 29, 2026
Resolution — gen-1 retired from the reference machine (2026-08-30)
Correction of the previous comment.
runtime/was gen-1, not v1.0's, and its "rollback" restored the first generation:runtime/.source-revisionis1d3284510f9f1af21bd527e1c18e0cc9c2b07de2— the legacy reference state, whichgit cat-file -tcannot resolve in this repository — and itsbridgectlcarries gen-1's verbs (serve,duty-toggle,session-label,stop,stops,install-hooks), exactly the two testsdocs/app-bundle.md("Check for the first generation's whole runtime too") prescribes. The reason the earlier sweep broke things was not that v1.0 neededruntime/; it was that the machine's shell layer still did:~/.zshrcdefinedclaude()/codex()functions that exec'druntime/claude-hosted/codex-hosted, so every alias (voicecoding,agentcrew, …) routed through gen-1, and five running Claude Sessions carried--channels plugin:hands-free-claude-channel@gpt-voicecodingwith aruntime/claude-channel/channel.mjschild each. Removing the runtime before the couplings is what left the aliases dead. This pass removed the couplings first.Inventory was taken against legacy's own footprint (
legacy@1d32845:install.sh,uninstall.sh,config.plistkeysbridge.*,hostApp.*,claudeAdapter.channelPlugin.*) rather than from memory.Removed (all moved, nothing
rm'd) — backup~/gpt-voicecoding-gen1-retired-20260830/~/.zshrc:158-185gen-1claude()/codex()wrappers (HANDS_FREE_LAUNCH_MARKER)_claude_bcomment no longer claims it ridesclaude-hostedzsh -nclean;type claude→~/.local/bin/claude,type codex→ nvm binary;voicecoding/voicecodingx/voicecodingbresolve. #67: no wrapper anywhere.~/.claude: pluginhands-free-claude-channel@gpt-voicecoding+ marketplacegpt-voicecoding(→runtime/claude-plugin)claude plugin uninstall/marketplace remove(legacyuninstall.shprocedure)settings.jsondiff is exactly those two entries; the v1.0SessionStartregistration andPermissionRequestapproval hooks untouched~/.claude-b: same plugin + marketplace, plus fourbridge-hook --agent claudehook groups (Stop / Notification / SessionEnd / SessionStart)bridge-hookrefs. Out of v1.0 scope, but a dangling hook path would have errored on every account-B Session.~/Library/Application Support/GPT-VoiceCoding/runtime/(bridge/, claude-channel/, claude-plugin/, bridgectl, bridge-hook, claude-hosted, codex-hosted, config.plist, .source-revision)…/GPT-VoiceCoding/bridge.log(regenerated by a still-running Codex Session's cached Stop hook)~/.claude/plugins/cache/gpt-voicecoding(and account B's, which the CLI removed itself)~/.codex/keybindings.jsonrealtimeVoice= ⌃⌥⌘9 (written bylegacy install.sh:767-773)scripts/keybindings.js remove;realtimeVoice.endCall(not ours) kept~/vc-channel-pluginand plugingpt-voicecoding-session-channel@gpt-voicecoding-channel(both config dirs).venv(#38) and a module that no longer exists (adapters.agent.claude.channel) — the cause of thegpt-voicecoding-claude-channelMCP "Connection closed" on every start~/.claude/plugins/cache/gptvc-71-probe-marketplace(#71 prototype leftover)Already gone before this pass (verified, not re-done)
com.gpt-voicecoding.bridge.plist; the eight named top-level state files;~/.codex/hooks.jsonbridge-hook entries;~/.codex/skills/gen-1 skill;agentcrew.toml[hooks.on-child-launch];/tmp/vc-launch-*,/tmp/vc-codex-*; the retiredclaude mcpregistration in~/.claude.json.Kept, with reason
~/.codex/config.toml[network] allow_unix_socketsand six stalehooks.stateentries — legacy'suninstall.shleaves them too; inert.~/.claude.jsonpluginUsagecounters forhands-free-claude-channel@hands-free-*— usage telemetry only.v1.0 verified unaffected
installation.json,engine/,acceptance/,acceptance-12/,probe-105/,codex-app-server.log,codex-daemon.log; nothing else was in scope.codesign --verify --deep --strict /Applications/GPT-VoiceCoding.apppasses.bridgectl statusexit 0 with a live roster;bridge-install status:claude-hooks: current, shared daemon answering0.149.1.codex-launch-agent: stale … applies at the next loginpredates this pass (recorded in the previous comment).grepover~/.zshrc, bothsettings.json, both plugin registries,~/.codex/{config.toml,hooks.json,keybindings.json},~/Library/LaunchAgents/*.plist,agentcrew.toml: noruntime/,claude-hosted,bridge-hook,hands-free,vc-channel-pluginreference remains.Left to the operator (user-owned, outside what a script may do)
runtime/bridgectl duty-toggle; theshortcutsCLI has no delete verb).claude-hosted; new Sessions run the ordinaryclaude.Simon-AI-coding commentedon Aug 29, 2026
Closed on the resolution above: gen-1 runtime and every coupling to it retired, v1.0 bundle verified unaffected, removals recoverable under ~/gpt-voicecoding-gen1-retired-20260830/.