Skip to content

Auto-install Claude plugin on first front-door launch#311

Merged
clkao merged 2 commits into
nextfrom
spacedock-ensign/spacedock-claude-auto-install-plugin
Jun 6, 2026
Merged

Auto-install Claude plugin on first front-door launch#311
clkao merged 2 commits into
nextfrom
spacedock-ensign/spacedock-claude-auto-install-plugin

Conversation

@clkao
Copy link
Copy Markdown
Collaborator

@clkao clkao commented Jun 6, 2026

Summary

  • makes spacedock claude treat missing Claude plugin as recoverable: install plugin, then launch
  • adds --no-install to preserve the old refuse-and-instruct path
  • keeps real contract mismatches fail-fast and keeps Codex compatible-or-fail with no auto-install semantics

Validation

  • post-rebase focused front-door run: 13 passed
  • post-rebase go test ./internal/cli -count=1: 222 passed
  • post-rebase go test ./...: 1123 passed in 16 packages
  • post-rebase go test ./... -race: 1123 passed in 16 packages
  • spacedock status --workflow-dir docs/dev --validate: VALID
  • detached adversarial audit: Codex install-on-failure mutation failed 4/4 targeted tests; Claude no-plugin-without-install mutation failed 3 targeted assertions; Claude mismatch-install mutation failed TestClaudeFrontDoorFailFastOnMismatch

Rebase note

Rebased onto origin/next after #310. A redundant comment-only status commit conflicted with #310 and was skipped; the rebased branch now contains only front-door changes in internal/cli/frontdoor.go, internal/cli/frontdoor_test.go, and internal/cli/safehouse_frontdoor_test.go.

Workflow state: docs/dev/.spacedock-state/spacedock-claude-auto-install-plugin/index.md.

clkao and others added 2 commits June 5, 2026 21:14
…all opt-out)

gateHost returns the contract verdict instead of a bool so runClaude can
distinguish a missing plugin (recoverable by installing) from an
incompatibility (auto-installing would just fail again). On NoPluginFound,
runClaude auto-installs via the existing ops.Install path and proceeds to
launch so the single command the user typed yields a working FO session;
--no-install opts out, preserving the refuse-and-instruct behavior. Any
mismatch / malformed range / host-CLI resolve error still fails fast.

runCodex keeps its all-or-nothing gate (!= Compatible) — auto-install is
Claude-only and Install rejects non-claude hosts.

Settled the two recorded open decisions per the ideation recommendations:
proceed-directly after install (no re-gate), and the phantom-installPath
(resolved-but-missing manifest) NoPluginFound verdict auto-installs too.

Migrated the no-plugin fail-fast tests to the default-auto-installs contract
with --no-install as the fail-fast arm: the unresolvable/phantom-manifest
cases now assert auto-install + launch by default and refuse under
--no-install, and the gate-short-circuits-before-safehouse test exercises the
refuse path. AC observables are the stub's installCmds / launchedArg / exit
code, not string matches.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
clkao added a commit that referenced this pull request Jun 6, 2026
@clkao clkao deployed to CI-E2E-PI June 6, 2026 04:18 — with GitHub Actions Active
@clkao clkao merged commit c46962b into next Jun 6, 2026
2 of 5 checks passed
@clkao clkao deleted the spacedock-ensign/spacedock-claude-auto-install-plugin branch June 6, 2026 04:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant