Skip to content

startups.lock

startups.lock pins each Startup Template and Product Template the Startup extends to one Version, by fingerprint.

The CLI writes it; nobody edits it by hand.

  • leaseline/
  • startup.ts
  • startups.lockStartup Template pins, by fingerprint

Reference

JSON, written on every Template.extend and Template.upgrade. Commit it.

KeyTypeHolds
lockfileVersionnumberThe format version, 1
pinsmapOne entry per Startup Template or Product Template, keyed by its id
pins.*.versionnumberThe pinned Version
pins.*.digeststringsha256: over the Version's parsed canonical form

Examples

Minimal

startups.lock
{ "lockfileVersion": 1, "pins": { "solo-saas": { "version": 7, "digest": "sha256:9c1e04ab" } } }

Leaseline

Leaseline extends the Solo SaaS Startup Template, and the SaaS Product Template it sells.

startups.lock
{
  "lockfileVersion": 1,
  "pins": {
    "solo-saas": { "version": 7, "digest": "sha256:9c1e04ab" },
    "saas": { "version": 12, "digest": "sha256:41d7f0c3" }
  }
}

What it builds

The StartupBuilder reads the pins and resolves the Startup against exactly those Versions.

  • a Version pin per Startup Template
  • an upgrade arrives as a Change whose plan sorts each field into changed, added, removed, shadowed or orphaned
  • the Template.upgraded Event when the Change merges

Good to know

  • The digest covers meaning, not bytes. Reformatting a file or editing a comment mints no Version.
  • .sb/resolved/ shows the whole Startup, own and inherited values, against these pins.
  • A Startup chooses its Startup Template under templates.