Changes touching this path

  • day 0: loot hosts loot f4c30e75 · dbf3dbe6…
  • evidence: crew minted and verified (#86) 1fada823 · dbf3dbe6…diff
  • normalize working tree to LF: byte-stable co-located bridge (.gitattributes -text) e58fdda6 · dbf3dbe6…diff
  • Scaffold site/ + wire Vercel #2, loot. subdomain, install proxy (#257) Thin end-to-end tracer for loot.millerbyte.com (spec docs/specs/loot-site.md SS1-3): site/ = TanStack Start SSG consuming published @millerbyte/ui@^0.1.0 (theme.css at the root), five placeholder surface routes prerendered, deployed on Vercel project #2 (root site/) at https://loot.millerbyte.com. Install proxy: the spec's vercel.json external-rewrite mechanism was falsified live (Vercel passes GitHub's releases/latest 302 through to the client), so /install.sh and /install.ps1 are Start server routes that fetch upstream and stream the bytes back 200 - spec SS2 amended in place. site/** explicitly public in .lootattributes; .vercelignore allowlists site/ so .loot/ keys and docs/pitch/ can never reach the Vercel builder; site build artifacts lootignored. 1931146c · dbf3dbe6…diff
  • Scaffold site/ + wire Vercel #2, loot. subdomain, install proxy (#257) (#291) * Scaffold site/ + wire Vercel #2, loot. subdomain, install proxy (#257) Thin end-to-end tracer for loot.millerbyte.com (spec docs/specs/loot-site.md SS1-3): site/ = TanStack Start SSG consuming published @millerbyte/ui@^0.1.0 (theme.css at the root), five placeholder surface routes prerendered, deployed on Vercel project #2 (root site/) at https://loot.millerbyte.com. Install proxy: the spec's vercel.json external-rewrite mechanism was falsified live (Vercel passes GitHub's releases/latest 302 through to the client), so /install.sh and /install.ps1 are Start server routes that fetch upstream and stream the bytes back 200 - spec SS2 amended in place. site/** explicitly public in .lootattributes; .vercelignore allowlists site/ so .loot/ keys and docs/pitch/ can never reach the Vercel builder; site build artifacts lootignored. Landed via break-glass git branch: the loot-native lane land was blocked by two live shared-store bugs (review-ferry folds a described WIP into a reconcile finalize; describe/status disagree on the working change under concurrent sessions) - tickets to follow. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Apply #291 review findings Cache only successful upstream responses in the installer proxy (a transient GitHub failure must not be CDN-cached for 5 minutes); extract the install one-liners to one shared module (three copies drifted apart otherwise); fix the vite.config "fully static" comment and spec SS0 framing to name the two server-route exceptions; tighten the .lootattributes rationale (the interim manual deploy is gated by .vercelignore, not the GitHub projection); drop the cargo-culted overrides block (its pins targeted server deps the site lacks). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Git-Author: Connor Miller <53197564+Connor-Miller@users.noreply.github.com> 231eb5f8diff
  • Exclude sdk/ npm deps + generated wasm from loot capture (#423) The .lootignore already excluded site/node_modules; the new sdk/ package needs the same, or `loot` captures sdk/node_modules (1000+ files) and sdk/wasm/ (wasm-pack output) into the working change — which a ferry then tries to sign into history. 98429158 · dbf3dbe6…diff
  • AI skill: diagnose-divergent — explain the ! marker and resolve it (#407) Also narrow .lootignore's bare `.claude/` rule to `.claude/worktrees/` (matching .gitignore) so `.claude/skills/` is tracked by loot — prerequisite for the whole AI-skills wave (#402-#407); the bare rule silently hid every skill file. 93ef2bcd · dbf3dbe6…diff
  • lootignore: local env files, which tools create without being asked (#808 follow-up) `vercel link` writes a `.env.local` holding a VERCEL_OIDC_TOKEN as a side effect of linking a project. It landed in a loot working change as `internal` on 2026-08-07, unasked for, during the site deploy for #808. Nothing was landed or pushed, so there was no exposure — but `internal` is readable by the relay, so riding along with a land would have put a live token there. ⭐ .gitignore already covered it and .lootignore did not, so the two disagreed about the same file. An ignore rule present in git but absent in loot is a gap, not a duplicate: git's copy silences the warning that would otherwise have surfaced it. `.env` / `.env.*` with `!.env.example`, matching how .gitignore treats them. Verified by recreating .env.local and confirming `loot status` stays clean. Also carries the `.vercel` / `.env*` lines `vercel link` appended to .gitignore, which are correct and worth keeping. 82fab4e6 · dbf3dbe6…diff
  • the ignore dialect refuses what it cannot mean: a live ! line stops the snapshot, recorded texts keep their old inertness (#843) 74d9e7be · dbf3dbe6…diff
  • the agent runtime's lock is not content: ignore it so the catch-up guard stops firing on it (#920) 731b1c18 · dbf3dbe6…diff
  • the ferry stops tripping on machine-local agent config: .lootignore learns settings.local.json, and a second machine's catch-up needs no move-aside (#1000) d208a0ad · dbf3dbe6…diff
  • the ferry stops tripping on machine-local agent config: .lootignore learns settings.local.json, and a second machine's catch-up needs no move-aside (#1000) 25890270 · dbf3dbe6…diff
  • the browser opens what the forge cannot: own-private read ships an owner read tier, a once-per-device unlock, and a grant mailbox that never acks (#1043) c8dd4da1 · dbf3dbe6…diff
  • the two dotenv rules stop being root-anchored, so the token vercel leaves under site/ is ignored by the same file that already ignores the one at the root rather than sitting in the primary's working change as internal 389e5cf1 · dbf3dbe6…diff
  • every compiled-in and current-tense loot host moves to loot.build (map #2412, ADR 0099): loot --help names security@loot.build and https://loot.build/trust, ALPHA_PROMISE_URL is https://loot.build/install and the telemetry DEFAULT_ENDPOINT https://loot.build/api/telemetry, so the next release carries them; the site install one-liners, R2_BASE and HOP_BASE (https://dl.loot.build, https://loot.build/dl), the metrics SITE_SCOPE and own-host referrer, the disclosure links on trust, terms, privacy and known-issues, and the install, quickstart and guides pages follow, with the privacy and terms markers moved to 25 September 2026 and re-pinned since readers see the new address; README, CONTEXT.md (the forge door now forge.loot.build), the release checklist, site CI and test fixtures follow, and the two specs carry a note instead of a partial rewrite. the destination census gains build in WEB_TLDS, without which security@loot.build would be invisible to its bare-host clause, and exempts the two shipped lines that tld makes read as hosts (state.build, r.build()) by their exact text; ADR 0074 section 9 says twelve-entry to match. 37 lines still name millerbyte.com outside ADR bodies, evidence, research and scratch, each kept on purpose: dated history, millerbyte.com the site and its @millerbyte/ui tokens, the two noted specs, and relay-era tooling with no successor host, filed as #2438. census red with build dropped from WEB_TLDS, restored; site gate 819 passed and within budget; workspace suite 4559 passed over 142 binaries, 13 ignored (#2418) c5663115 · 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.