docs/testing/opencode_sync_verification_checklist.md
Manual test checklist for OpenCode sync feature PR
.antigravity-manager.bak (new) and .antigravity.bak (legacy)~/.config/opencode/opencode.json.antigravity-manager.bak~/.config/opencode/antigravity-accounts.json.antigravity-manager.bak| Scenario | Expected Behavior |
|---|---|
| Plugin NOT installed | Sync button available, shows "OpenCode not detected" warning |
| Plugin installed | Shows version, sync enabled |
| Plugin path auto-detect | Finds opencode in PATH, npm, pnpm, yarn, nvm, fnm, Volta |
provider.antigravity-manager created with correct structurenpm: @ai-sdk/anthropicname: Antigravity Manageroptions.baseURL: ends with /v1 (auto-normalized)options.apiKey: matches proxy API keyprovider.google preserved (if exists)provider.anthropic preserved (if exists){
"version": 3,
"accounts": [...],
"activeIndex": 0,
"activeIndexByFamily": {
"claude": 0,
"gemini": 0
}
}
~/.config/opencode/antigravity-accounts.jsonversion field = 3activeIndex clamped to valid rangeactiveIndexByFamily contains claude and gemini keysopencode run "test" --model antigravity-manager/claude-sonnet-4-6-thinking --variant high
--variant low → thinkingBudget: 8192--variant medium → thinkingBudget: 16384--variant high → thinkingBudget: 24576--variant max → thinkingBudget: 32768opencode run "test" --model antigravity-manager/gemini-3-pro-high --variant low
--variant low → thinkingLevel: "low"--variant high → thinkingLevel: "high"--variant minimal → thinkingLevel: "minimal"--variant low → thinkingLevel: "low"--variant medium → thinkingLevel: "medium"--variant high → thinkingLevel: "high"--variant low → thinkingBudget: 8192--variant medium → thinkingBudget: 12288--variant high → thinkingBudget: 16384--variant max → thinkingBudget: 24576# If opencode-antigravity-auth plugin installed
opencode run "test" --model google/antigravity-claude-sonnet-4-6-thinking --variant max
provider.antigravity-managerprovider.google and provider.anthropic| Backup Type | Expected Result |
|---|---|
New suffix (.antigravity-manager.bak) | Restores successfully |
Old suffix (.antigravity.bak) | Restores successfully (backward compatible) |
| Both exist | Prefers new suffix |
| None exists | Shows "No backup files found" error |
| Test Category | Test Item | Status |
|---|---|---|
| Pre-check | Backup path correct | ⬜ Pass / ⬜ Fail |
| Pre-check | Plugin detection works | ⬜ Pass / ⬜ Fail |
| Sync | Provider created correctly | ⬜ Pass / ⬜ Fail |
| Sync | Existing providers preserved | ⬜ Pass / ⬜ Fail |
| Sync | Accounts v3 structure valid | ⬜ Pass / ⬜ Fail |
| Variants | Claude thinking budgets | ⬜ Pass / ⬜ Fail |
| Variants | Gemini 3 Pro levels | ⬜ Pass / ⬜ Fail |
| Variants | Gemini 3 Flash levels | ⬜ Pass / ⬜ Fail |
| Variants | Gemini 2.5 thinking budgets | ⬜ Pass / ⬜ Fail |
| Compatibility | Plugin unaffected | ⬜ Pass / ⬜ Fail |
| Clear/Restore | Clear removes manager provider | ⬜ Pass / ⬜ Fail |
| Clear/Restore | Restore with new suffix | ⬜ Pass / ⬜ Fail |
| Clear/Restore | Restore with old suffix | ⬜ Pass / ⬜ Fail |
Cause: Cannot determine home directory
Fix: Ensure HOME (Unix) or USERPROFILE (Windows) env var is set
Cause: Model ID mismatch or variant type not defined
Fix: Check model ID in catalog matches request; verify variant_type in build_model_catalog()
Cause: Backup file already exists (idempotent)
Fix: Delete existing .bak files manually if you need fresh backup
Cause: All accounts disabled or sync_accounts not checked
Fix: Enable at least one account; check "Sync accounts" option in UI
Cause: Both using same model IDs
Fix: Use different model IDs or disable one provider
Cause: Backup files missing or permissions
Check:
ls -la ~/.config/opencode/*.bak