Repository navigation
Conversation
Reuse Rob Zolkos’s profile migration and operator coverage from CLI #901 at 8ead732 (f78ef23 through 8ead732). Preserve checkpoints, held work and offline operator fallback. Apply Jeremy Daer’s October 14 review: refuse unverified legacy shadow promotion, log adoption and sibling state, distinguish legacy locks, cover working wrong-person credentials and shadow adoption, and document mixed-version/downgrade recovery.
Reuse safe copy and lost-handover tests from Rob Zolkos’s CLI #900 at 7ba7e96 (2765820 through 7ba7e96), without its unconditional adds promises. Approval may add or replace until personal-agent adds are enabled, and shared agents still replace. Apply Jeremy Daer’s review: name the refused profile and both causes, warn overlap at guided project selection, keep live credential files, distinguish the newest lost connection from Disconnect all, and contract-test the skill stop fragment.
Seed explicitly held work in migration tests, verify it stays held through normal/shadow adoption and release, then discard it through the selected profile. Cover canonical-account lock collisions and invalid adoption names. Clarify the existing pre-run handoff age guard: migrated state is preserved, not automatically replayed.
Older builds wrote account ids verbatim into state directory names. Find that original directory during adoption, but canonicalize the new profile path so numeric aliases cannot bypass its lock. Cover a padded legacy account migration and document downgrade spelling.
This was referenced Oct 15, 2026
This branch has not been deployed
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.
Summary
Make connector state per profile and connection guidance safe to merge/release before the companion server change.
connect --shadow, verify, stop, then promote.Companion server integration: bc3 draft #13840. Exact-head GitHub checks have converged: 27 successful, 4 skipped, 1 neutral / 32 total, none failing or pending. Jeremy and the CLI team are requested for fresh review. Copilot's fresh request was quota-blocked, not a completed review. The CLI checks/source review do not clear the server's production/staging Ops, CI or activation gates.
CLI-first rollout / rollback
The secret remains opaque; no new server endpoint or feature flag is required by this CLI. Upgrade without reconnecting:
Operator upgrade, mixed-version and downgrade runbook: an older build restarted after adoption can recreate legacy state and miss the migrated hold/cursor. Downgrade offline, choosing one profile and restoring its whole normal/shadow directories to the old names; never overwrite existing ledgers or delete other profiles' state/credentials. Server switch-off disables adding, not existing added connections; server code downgrade after own-secret issuance is unsupported.
The consumer namespace intentionally stays per agent: it is a key in each isolated local profile ledger, never a server consumer. Renaming it would orphan migrated checkpoints.
Exact-head validation
Head:
13109a9413f7c2ac942e6f120a62cc663b24b330; tracked tree clean/frozen throughout the final run.bin/ciexit 0, fresh temporary HOME/XDG,BASECAMP_NO_KEYRING=1. The script is onlyexec make check: this is a local CI pass, not a recorded GitHub signoff. No manual signoff. Exact-head public GitHub checks: 27 successful, 4 skipped, 1 neutral / 32 total, no failure/pending checks. Skipped/neutral checks are not test proof. Fresh human review remains pending; no merge-ready claim.Go skips: opt-in callback preview; existing SDK redirect-classification skip pending re-pin; three subprocess entrypoints (credential-lock helper, fake MCP server, crash helper); one additional nested foreign-ownership test requiring root/chown. The helper entrypoints are invoked by their parent tests, but skips themselves are not proof. BATS skips: six PowerShell installer cases because
pwshis absent, and two unimplemented URL breadcrumb cases.Independent exact-head adversarial source review: 8/8 state-reader classes rechecked, no actionable CLI finding. This is source review, not independently executed lifecycle/CI. The companion server's two findings were fixed in its reviewed source; server Ops clearance remains separate.
Genuine isolated lifecycle evidence — limited matrix
The final lifecycle report records 28 passed / 34 planned atomic observations, 6 explicitly unexecuted. Synthetic-only real processes, HTTP, browser approvals and WebSockets; isolated HOME/XDG/keyring and loopback network. No customer credentials or AI dispatch. These are lifecycle-agent/coordinator observations, not fake-server unit tests and not a claim of 34/34 runtime scenarios. The table below is the CLI-relevant subset, not another aggregate denominator.
meon old server exit 0; real shared-agent approval/mint/me on integrated server. Not a separate old-server new-approval/feed proof13109a913109a9B/C reconnected and emitted 2/2 fresh post-revocation requests. Later B-only disconnect stopped its final-CLI socket with disconnected-or-replaced copy while other connections survivedThe two older admitted requests were retained after migration but excluded from handoff after release by the existing
before_this_runage guard. Migration does not promise historical replay. Explicitly held records remaining held and accessible to release/discard are separately covered by automated tests.Limits: guided selection warning is source/unit-covered, not real-TTY exercised. Genuine runtime full shadow adoption/promote/import/discard/all-operator-command coverage was not executed; automated CLI tests cover these paths. Runtime status/release/adoption were exercised. The six broader unexecuted runtime groups are shared Adminland rotation, stale browser forms across replacement races, concurrent HTTP mint/revoke/scope interleavings, actual replica lag/roles, full shadow/operator commands, and ONCE browser/HTTP/schema downgrade. Automated server/CLI coverage is separate, not counted as lifecycle proof. Final ReviewB/ReviewC connectors remain live for review.
Attribution / source consolidation
Preserve the original work, not its rollout-unsafe promises:
8ead7320: profile migration/operator implementation and tests, with Jeremy Daer's October 14 review fixes.7ba7e962: safe copy/lost-handover coverage adapted for CLI-first release, flag OFF/ON and shared agents.81562bb; its per-connection logout/revoke guidance is retained, not applied twice.Rob Zolkos authorship and source provenance are preserved in the five coherent commits:
51fca73,72e3abb,222621a,78c88a8,13109a9. Existing source PRs/branches are not closed or rewritten by this consolidation.Original-review replies
Point-by-point replacement-only replies to the latest review bodies, with pinned source/test links and explicit retained declines/human decisions:
The cross-repository comparison covered 36/36 Jeremy top-level points and their nested subfindings, plus older bot/body findings: 81 pre-reply source records (7 PR bodies, 40 reviews, 6 issue comments, 28 inline comments) and all 14 GraphQL threads (the same 28 inline comments, not extra findings). Empty bodies and the fresh Copilot quota failure were accounted for, not counted as approvals. Independent xhigh comparison found no additional in-scope source defect; this follow-up changed no source and reran no tests. Historical originals remain unchanged/open and no thread-resolution state was changed. This is a disposition map, not a claim that every literal proposal was implemented or accepted.
The old switch-on CLI release prerequisite is superseded by the compatible CLI-first plan: refusal/help/README/merge-published skill now cover replacement on old/adding-OFF/shared servers. Human release/review decisions remain pending; unsupported mixed builds and the stop/whole-directory downgrade procedure remain explicit.