Skip to content

[P1][Post-0.5][Full C] Add per-node bootstrap, identity rotation, and generation authorization #88

Description

@mightnent

Parent epic: #82

Outcome

Give every logical workspace node a distinct, rotatable, revocable workload identity bound to its current node generation, with an authenticated bootstrap flow that replaces manual credential and endpoint transcription.

Execution

  • Priority: P1 post-0.5 Full C foundation.
  • Deployment profiles: Hosted required; customer-managed remote nodes remain compatible.
  • Worktree boundary: Bootstrap/claim API, node identity records, mTLS/application credentials, generation authorization, rotation/revocation, audit, and focused transport tests. Avoid placement, capacity scoring, migration, and cloud-specific provisioning.

Scope

  • Create a short-lived, single-use bootstrap/claim flow tied to an expected logical node and deployment.
  • Bind node API and application credentials to the logical node ID and current generation.
  • Support certificate and credential rotation, revocation, expiry alarms, and CA-bundle rollover without fleet-wide downtime.
  • Authorize heartbeat and lifecycle calls against both logical identity and current generation.
  • Reject stale generations and two active controllers claiming the same node/storage generation.
  • Keep node private keys and cloud credentials outside the product database and customer-visible surfaces.

Non-goals

  • Selecting or provisioning cloud instances.
  • Capacity measurement, placement policy, or workspace migration.
  • Publishing private endpoints, certificate inventory, or infrastructure attachments to tenant sessions.

Definition of success

  • Valid bootstrap creates or binds exactly one expected node identity and cannot be replayed.
  • Invalid, expired, superseded, foreign-deployment, and already-consumed bootstrap material fails closed.
  • Each node has distinct rotatable and revocable API/application credentials bound to its generation.
  • Wrong node identity, wrong CA, expired/revoked certificate, wrong hostname, stale generation, and duplicate controller claims fail closed.
  • Rotation and CA rollover preserve authorized service without accepting the retired identity beyond the documented overlap.
  • No private key, application credential, bootstrap secret, or private endpoint reaches customer APIs, browsers, logs, or audit payloads.
  • Focused controller/transport/security tests and npm run verify:quick pass on the exact candidate SHA.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions