Skip to content

Keep a relaunched ship's credentials usable - #47

Merged
FireSquid6 merged 1 commit into
mainfrom
7-add-authentication
Aug 13, 2026
Merged

Keep a relaunched ship's credentials usable#47
FireSquid6 merged 1 commit into
mainfrom
7-add-authentication

Conversation

@FireSquid6

Copy link
Copy Markdown
Owner

A ship provisioned by fleet launch was left unusable the second time you launched it: already in the roster, it was skipped for registration and spawned with no credentials at all, so its armory pull was refused. Minting a fresh pair instead is worse — a ShipConnection captures the bridge token it was built with, so rotating that half leaves the bridge presenting a token the restarted ship no longer accepts, and the ship goes offline rather than merely losing its armory.

Provisioning now reuses the stored bridge token, which the bridge keeps in the clear because it has to present it, and rotates only the ship token, of which it keeps a hash. The live connection stays valid and the restarted ship gets a working pair, so the skip is no longer needed.

A ship's agent token survives provisioning: it is a third credential the bridge re-mints on every connect, and may be in flight in a workspace.

This survived until now because nothing ever launched twice. The test that covers it inits the second manager before provisioning, the way a real relaunch does, so the token it asserts against is the one a live connection would be holding.

A ship provisioned by `fleet launch` was left unusable the second time
you launched it: already in the roster, it was skipped for registration
and spawned with no credentials at all, so its armory pull was refused.
Minting a fresh pair instead is worse — a ShipConnection captures the
bridge token it was built with, so rotating that half leaves the bridge
presenting a token the restarted ship no longer accepts, and the ship
goes offline rather than merely losing its armory.

Provisioning now reuses the stored bridge token, which the bridge keeps
in the clear because it has to present it, and rotates only the ship
token, of which it keeps a hash. The live connection stays valid and the
restarted ship gets a working pair, so the skip is no longer needed.

A ship's agent token survives provisioning: it is a third credential the
bridge re-mints on every connect, and may be in flight in a workspace.

This survived until now because nothing ever launched twice. The test
that covers it inits the second manager before provisioning, the way a
real relaunch does, so the token it asserts against is the one a live
connection would be holding.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
fleet-docs Ready Ready Preview Aug 13, 2026 10:40pm

@FireSquid6
FireSquid6 merged commit 4e6c26a into main Aug 13, 2026
2 checks passed
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