Manage Voice credentials and rotate the local bridge key atomically - #1532
Merged
vibeforge1111 merged 12 commits intoAug 8, 2026
Conversation
Agent-Id: alchemistab Original-Commit: 5c1bb03285bfff9f2c5cf4f405d05a90a5632baf
Agent-Id: alchemistab Original-Commit: a900ab26eb248d6e12383b33e50d7204eb7f2fa3
Keep bridge rotation and voice secret routing out of the CLI god file while closing hosted authority, readiness scoping, rollback, collision, interrupt, and revoke-all gaps. Agent-Id: alchemistab Original-Commit: dfba5957cc070de50638b5fe33059ed38a95d90e
Keep staging, promotion, rollback, backend cleanup, and consumer lifecycle changes under one lock. Make stop wait before reading PID state and expand collision and interruption coverage. Agent-Id: alchemistab Original-Commit: 3813c8979f6ca08e45e06a5002a8011e29b48f28
Permit owner-approved file storage without an installed keyring while failing closed when an indexed keychain cannot be inspected. Keep the stop wrapper readable without growing the R-21 baseline. Agent-Id: alchemistab Original-Commit: 01ee1d1b12012469566374a1415849562b712980
Snapshot the indexed backend through the fail-closed reader, classify generated and manifest-declared secret bindings comprehensively, and keep consumers stopped when rollback authority is uncertain. Agent-Id: alchemistab Original-Commit: a968e0a3f5549e8c970a0780cccfe863827d71e9
Clean staged material before restoring processes, stop partial restart sets, verify tracked PIDs are gone, and report uncertainty instead of claiming containment when stop proof fails. Agent-Id: alchemistab Original-Commit: 99b4927e57d826dfb6c2334e67e16d942a20d735
Distinguish an unchanged original consumer set from deliberately stopped and uncertain rollback states. Agent-Id: alchemistab Original-Commit: 9368b0dc1e5736864992138e418c2d12e83b28f5
Agent-Id: alchemistab
Agent-Id: alchemistab
Agent-Id: alchemistab
Agent-Id: alchemistab
vibeforge1111
marked this pull request as ready for review
August 8, 2026 14:13
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
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.
Manage Voice credentials and rotate the local bridge key atomically
What this changes
voice.openai.api_keyand injects the selected Voice provider only across the authorized Telegram → Builder → canonical Voice owner boundary.spark.bridge_api_keyplus a non-argv--generaterotation path.Exact integration identity
a53e376e11481f33e4fbddb441b5c6a15ea8419620eca9584d04bf4a7e866774c13ff3264a5de107Agent-IdandOriginal-Committrailers; both registry follow-up commits use GitHub noreply metadata and a parseableAgent-Id.Proof
cli.pyremains at or below its 21,629-line baseline andtests/test_cli.pyremains below baseline.scripts/install.shinto a disposable isolated prefix, executed successfully, and verified all registry pins with 0 unverified.SPARK_HOME, which is the intended test boundary.Owner and supervised integration proof
e94f3cd588c5051b77baead8378f32154b38a0d7and is sealed byspark-r30-2026-08-08-voice-credential-boundary.19afe6cfdd985ff0ce7a20cd25f0712dc00f9121and is sealed byspark-r30-2026-08-08-builder-voice-credential-boundary.b90b29734aaae5e28f2bce5a065ac15a0c4efe1fand is sealed byspark-r30-2026-08-08-spawner-fast-terminal-relay.fe8a2b322185e025c564adee7f92697fd5a07648and is sealed byspark-r30-2026-08-08-telegram-voice-terminal-reliability.unknown_mission, stale acknowledgement, or post-terminal nonterminal relay./voice self-testand/voice doctorreached the canonical Voice owner. With no managed hosted Voice credential configured, the diagnostic truthfully kept hosted listening and speaking unavailable.The operator explicitly accepted proceeding without credential rotation. This PR makes no rotation-remediation or hosted-provider-success claim, and never places credential values in generated config, the PR, or logs.
Rollback
Revert the twelve commits. The source patch performs no automatic rotation during install. A runtime rotation failure restores the prior backend and consumer set when it can prove that state; otherwise it leaves consumers stopped or reports state uncertainty instead of claiming success. Registry rollback returns Voice, Builder, Spawner, and Telegram to their prior exact commits and refs; no database or points state changes.