# Sjel platform manifest v1. Facts that are true of Sjel itself, on every machine. # # What is NOT in here, and why: this file is tracked and shared, so anything that # differs between two installations cannot live here. Multi-host operation proved that # the hard way: node-local capabilities and state mounts cannot share a tracked value, # and `git pull` must never depend on hiding local manifest edits. A tracked file # that every machine is expected to edit is a design bug, not a workflow. # # So machine-local configuration lives in two places instead: # # sjel.local.toml — `overlay`: where THIS machine's private overlay is. # Gitignored, written by tools/install.sh. The one # bootstrap fact, because you need it to find the rest. # /config/machine.toml — os, container_runtime, `capabilities`, and the # [[state_mount]] registry. One overlay is one # deployment instance, so that file has exactly one # machine to describe. # # See schemas/machine.toml.example. [platform] name = "sjel" # Shipped DEFAULT only — a fresh install with no sjel.local.toml resolves here. # Do not edit this to point at your own overlay; run tools/install.sh, which writes # sjel.local.toml. tools/lib/paths.sh prefers that file and falls back to this value, # which is also what keeps a fresh clone working: CI has no sjel.local.toml and resolves # this default instead. overlay = "~/.sjel-overlay" # [upstream] cooldown_min_days / cooldown_max_days stood here until 2026-09-02, when Q74 # deleted the adoption hold. All three readers went with it in the same change: # tools/agentbox's host-install gate, renovate.json5's minimumReleaseAge restatement, and # this file's own claim to be their one home. There is no replacement value, because there is # nothing to wait out (CONTRIBUTING.md#patch-first). # # [audit] expiry_warn_days stood here too, and had one reader: tools/audit's expiry clock, which # warned before an osv-scanner.toml ignoreUntil lapsed. osv-scanner enforces those dates itself # and names a lapsed entry under `unused ignores`, so the pre-warning was the only thing Sjel # added and the only thing given up. A manifest key with no reader is the decay this file's own # header argues against, which is why both blocks are deleted rather than left as history. [release] # Which tags are release tags (CONTRIBUTING.md#the-release-line). Six call sites across bash and # TypeScript ask git "what version is this checkout" — tools/update.sh, tools/repos.ts and # tools/doctor.ts, twice each — and every one of them used a bare `git describe --tags`. That # answers with ANY reachable tag, so an archive marker, a vendor tag or a nightly silently # becomes the reported version. The pattern lives here rather than in a shell library because # the two TypeScript callers exec bun directly and never source one. tag_glob = "v[0-9]*"