Skip to content

chore: migrate to start-sdk 2.0 (0.5.0:1)#4

Open
helix-nine wants to merge 5 commits into
mainfrom
next
Open

chore: migrate to start-sdk 2.0 (0.5.0:1)#4
helix-nine wants to merge 5 commits into
mainfrom
next

Conversation

@helix-nine

@helix-nine helix-nine commented Jul 4, 2026

Copy link
Copy Markdown

start-sdk 2.0 migration (rebased on 0.5.0)

Migrates this package to @start9labs/start-sdk 2.0 (requires StartOS 0.4.0-beta.10). This branch originally also carried the Keep 0.4.8 → 0.4.9 bump, but #5 has since landed Keep 0.5.0 on main, so it is now rebased onto 0.5.0 and the upstream bump is dropped. What remains is the SDK migration plus a wrapper-only downstream revision (0.5.0:00.5.0:1).

SDK 2.0 migration

  • SDK pin → 2.0.1, TypeScript → ^6, tsconfig.json extends the shipped tsconfig.base.json, Makefile includes the SDK's s9pk.mk (vendored copy removed), reusable CI workflows repointed to Start9Labs/start-technologies.
  • 2.0 API migrations as applicable: sdk.serviceInterface.*sdk.host.* resolved over the LXC bridge, lazy SubContainer, alerts manifest field removed, and other ### Changed / ### Removed items from the SDK 2.0 changelog.

Version

  • startos/versions/current.ts0.5.0:1 (wrapper-only; 0.5.0 upstream shipped in release: bump Keep to v0.5.0 #5), localized "Internal updates (start-sdk 2.0.x)" notes (en/es/de/pl/fr).
  • Collapsed the version graph back in-place: dropped the redundant v0_4_8.ts and reset index.ts to other: []. 0.4.8 → 0.5.0 carries no migration, so no historical version file is needed.
  • keep submodule stays at v0.5.0 (inherited from main).

Test plan

  • CI build is green (npm citsc → SDK lint → nccs9pk pack); the image compiles the keep-web crate from the v0.5.0 submodule.
  • Install the built .s9pk on a StartOS 0.4.0-beta.10 server; confirm the reported version is 0.5.0:1.
  • Start the service; confirm the keep-cosigner daemon reaches its health check and the Web Admin (ui) interface loads.
  • Complete first-run setup (unlock/create the vault) and confirm the encrypted vault is written under the main volume.
  • Restart the service and confirm the vault unlocks and state persists.
  • Upgrade path: install 0.5.0:0 (current main), then upgrade to this build and confirm the existing vault under main still unlocks and the service returns to health with no migration errors.

🤖 Generated with Claude Code

@helix-nine helix-nine changed the title chore: migrate to start-sdk 2.0 chore: migrate to start-sdk 2.0 and bump Keep to 0.4.9 Jul 4, 2026
helix-nine and others added 2 commits July 7, 2026 21:56
Rebases the start-sdk 2.0 migration onto 0.5.0 (main). The upstream bump landed separately via #5, so this is a wrapper-only downstream revision.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0.4.8 → 0.5.0 carries no migration, so the historical file is unnecessary — collapse back to an in-place graph (other: []).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@helix-nine helix-nine changed the title chore: migrate to start-sdk 2.0 and bump Keep to 0.4.9 chore: migrate to start-sdk 2.0 (0.5.0:1) Jul 8, 2026
Bumps @start9labs/start-sdk 2.0.1 -> 2.0.3 (dependency and lockfile only).

- 2.0.3 fixes a dependency-gated daemon wedging permanently after its
  dependency's readiness flaps: Daemon.term() unconditionally destroyed the
  daemon's SubContainer, so the next start() threw "already destroyed" and the
  daemon never recovered. Adds a non-destroying Daemon.stop() for
  dependency-driven pauses, and serializes pause/resume transitions.
- 2.0.2 runs s9pk.mk's check-deps before packing, not just before install.

No packaging API changed between 2.0.1 and 2.0.3, so no source changes were
needed. Verified with `npm run check` (tsc --noEmit).
Bumps @start9labs/start-sdk 2.0.3 -> 2.0.5 (dependency and lockfile only).

2.0.5 fixes ExVer range operations ignoring the downstream revision:
compareVersionRangePoints and adjacentVersionRangePoints compared the upstream
twice, so two points sharing an upstream but differing downstream (1.0.0:3 vs
1.0.0:15) collapsed into one. normalize() then dropped the lower of the two,
which made packed manifests advertise a canMigrateFrom/canMigrateTo range
narrower than the truth for any package whose `other` versions share current's
upstream. No upgrade path actually broke — StartOS resolves migrations through
the version graph rather than this field — but the manifests were wrong.

No packaging API changed, so no source changes were needed. Verified with
`npm run check` (tsc --noEmit).
Moves the submodule v0.5.0 (8d7d3a4) → v0.7.5 (62dc446), and fixes .gitmodules,
which named a branch (`keep-web-startos`) that no longer exists upstream — only
`main` remains, and both tags are on it, so the field was dead metadata.

This is a secret-custody app, so the on-disk format was the load-bearing check.
Verified unchanged rather than assumed:
- HEADER_VERSION (1) and CURRENT_SCHEMA_VERSION (5) are identical at both tags,
  and keep-core/src/migration.rs is byte-identical — upstream did not advance its
  own schema.
- Argon2 params are unchanged, so existing passwords still unwrap existing vaults.
- The only storage change is additive (a new `state_versions` redb table), created
  lazily; existing tables are untouched. It is written only on the replication
  paths, which are gated behind KEEP_STATE_RELAY — which this package never sets.
- The duress-beacon / coercion work is inert by default (no pins configured →
  the freeze gate cannot trip), so co-signing behaves exactly as at 0.5.0.

KEEP_STATE_IDENTITY_FILE is not a new variable — it is the pre-existing generic
`_FILE` secret convention, and it is consulted only inside the KEEP_STATE_RELAY
branch. The full set of env vars keep-web reads is identical at both tags, so
main.ts needs no change.

Dockerfile paths still resolve at v0.7.5 (`keep-web/` at the repo root, the
`keep-web` workspace member, and `keep-web/ui/` with its vite `dist` output), and
the Rust toolchain is 1.89.0 at both tags, so the `rust:1.89-bookworm` base pin
stays correct.

Also corrects UPDATING.md, which still described the retired branch.

Verified with `npm run check` (tsc --noEmit). NOT yet install-tested — the
0.5.0→0.7.5 in-place vault upgrade should be exercised on a real install before
this merges to master.
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