Changes touching this path

  • Liveness: one loot-core home for live/superseded/divergent/parked + the head partition (#216); CONTEXT.md vocabulary; rides along: cargo-dist release config (dist-workspace.toml, release workflow, 0.1.0 manifests) from the install-prototype session (loot-site map, #206) 3630469b · dbf3dbe6…
  • chore(release): attestations + unified sha256.sum + Linux smoke leg (#258) Prep for cutting the real v0.1.0 release (spec §5-6): - dist-workspace.toml: github-attestations = true (GitHub Artifact Attestations, #221 integrity, verifiable via `gh attestation verify`) + checksum = sha256 (unified sha256.sum on the Release). - release.yml regenerated by cargo-dist 0.32.0: adds attestations/id-token permissions + the actions/attest step; the six target archives, both installers, the unified sha256.sum and dist-manifest.json are unchanged. - smoke-install.yml (standalone, so `dist generate` never clobbers it): on release published it installs via the Linux `curl | sh` one-liner on a clean ubuntu runner and resolves `loot --version`. loot-cli is already 0.1.0. Firing the tag (`loot-first tag v0.1.0`) is a separate, deliberate step. Refs #258. 924bda35 · dbf3dbe6…diff
  • Catch up to git main 809ddfe: #260 smoke default, #271 arm64 build, loot diff (#1), ADR 0034 dock retirement (#253) 587684dd · dbf3dbe6…diff
  • Turn off release attestations: unavailable on a private repo, and going public is gated (#652) 52ac7c00 · dbf3dbe6…diff
  • publish-r2: mirror release artifacts to Cloudflare R2 for anonymous download (#807) The repo is private permanently (ADR 0045), so Release assets 404 for an unauthenticated fetch — which is what broke `curl | sh`. This adds the anonymous path that replaces them: every asset the Release publishes is mirrored to dl.millerbyte.com/<tag>/, served from R2 with no credentials. The bucket, its scoped credential and the dl.millerbyte.com custom domain are provisioned by scripts/setup-artifacts.js (scripts @ 736f6e8), and the anonymous fetch is already proven live against that bucket. A *publish* job, not post-announce, and the ordering is load-bearing: publish jobs run after `host` uploads the Release and `announce` waits for them, so R2 is populated before the post-announce smoke test. Listed post-announce instead, #808's `curl | sh` gate would race the very artifacts it fetches. The job body is hand-owned in its own file so `dist generate` cannot clobber it — the same shape as smoke-install.yml (#258). It carries a workflow_dispatch tag input so it can be exercised against an existing release rather than first running during a real one, verifies every mirrored asset anonymously against the Release's own sha256, and warns (not fails) if the edge is not caching. ⚠ dist-workspace.toml also documents that it must be edited with `dist generate`, never `dist init` — init rewrites the config from its own defaults and strips every comment, which today destroyed the #270 native-ARM64-runner rationale and the whole ADR 0045 attestations block before they were restored. 5b710e89 · dbf3dbe6…diff
  • a PR no longer uploads a cache nothing reads, and a daily sweep keeps the artifact budget under its own alarm (#835) 2a1e459e · dbf3dbe6…diff

Renames are not followed. loot's tree maps a path to an address, so a rename is a delete and an add. This list is the history of the name, not of the bytes.