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.tsstartups.lockStartup Template pins, by fingerprint
Reference
JSON, written on every Template.extend and Template.upgrade. Commit it.
| Key | Type | Holds |
|---|---|---|
lockfileVersion | number | The format version, 1 |
pins | map | One entry per Startup Template or Product Template, keyed by its id |
pins.*.version | number | The pinned Version |
pins.*.digest | string | sha256: over the Version's parsed canonical form |
Examples
Minimal
{ "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.
{
"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
Versionpin per Startup Template - an upgrade arrives as a Change whose plan sorts each field into changed, added, removed, shadowed or orphaned
- the
Template.upgradedEvent when the Change merges
Good to know
- The digest covers meaning, not bytes. Reformatting a file or editing a comment mints no Version.
.sb/shows the whole Startup, own and inherited values, against these pins.resolved/ - A Startup chooses its Startup Template under templates.