Changes touching this path
- embargo CLI (#88) + attack demo (#89) + section-B evidence + maroon propagation fix + drive setup
c670cc2b · dbf3dbe6… - day 1 logs: drive-log entry + evidence section A row
cc57f391 · dbf3dbe6…diff - (working change)
02306b53 · dbf3dbe6…diff - Ferry drive binding: close the uncaptured-WIP clobber hole; ritual runs the bridge (#115)
ferry_capture now snapshots unconditionally: disk edits that never saw a
`loot status` had no working change, so the adopt path's full-tree
materialize silently overwrote them. A capture snapshot identical to the
anchor is dropped from the graph again (new DagRepo::drop_working over
remove_head), so a quiet pass mints no redundant change and leaves no
stray head for reconcile or the next pass's anchor derivation.
tools/loot-day.ps1 now runs the daily ritual through the bridge (ADR
0028): capture day WIP when git sees it (-ForceSnapshot for git-ignored
loot paths like docs/pitch), sync the local-only private mirror at
.loot/git-mirror/mirror.git, one `loot ferry` pass, then the relay push
and drive-log entry as before.
Git-Author: Connor Miller <53197564+Connor-Miller@users.noreply.github.com>
481fbc26diff - resolve conflict at tools\loot-day.ps1
cc490bdf · dbf3dbe6…diff - normalize working tree to LF: byte-stable co-located bridge (.gitattributes -text)
e58fdda6 · dbf3dbe6…diff - Byte-stable checkout for the co-located bridge (#117)
.gitattributes pins * -text: no eol conversion, so the working tree is
byte-identical to the blobs and a ferry capture can recognize pulled
content as the ingested target. With autocrlf smudging, the same file
had different bytes on disk (CRLF) and in git (LF), and the first live
co-located pass minted a spurious capture whose merge conflicted on
every PR-touched file - same content, different line endings.
loot-day.ps1 now force-pushes the checkout main into the private mirror:
ferry re-points the mirror main at the loot dock tip after projecting,
so a plain push stops fast-forwarding as soon as loot is ever ahead.
The checkout is authoritative for that ref; projected history stays
reachable under refs/loot/*.
Existing checkouts realign once with:
git config core.autocrlf false; git reset --hard
Git-Author: Connor Miller <53197564+Connor-Miller@users.noreply.github.com>
a9ef83a4diff - Byte-stable checkout for the co-located bridge (#117)
.gitattributes pins * -text: no eol conversion, so the working tree is
byte-identical to the blobs and a ferry capture can recognize pulled
content as the ingested target. With autocrlf smudging, the same file
had different bytes on disk (CRLF) and in git (LF), and the first live
co-located pass minted a spurious capture whose merge conflicted on
every PR-touched file - same content, different line endings.
loot-day.ps1 now force-pushes the checkout main into the private mirror:
ferry re-points the mirror main at the loot dock tip after projecting,
so a plain push stops fast-forwarding as soon as loot is ever ahead.
The checkout is authoritative for that ref; projected history stays
reachable under refs/loot/*.
Existing checkouts realign once with:
git config core.autocrlf false; git reset --hard
Git-Author: Connor Miller <53197564+Connor-Miller@users.noreply.github.com>
d9c26ce3diff - Byte-stable checkout for the co-located bridge (#117)
.gitattributes pins * -text: no eol conversion, so the working tree is
byte-identical to the blobs and a ferry capture can recognize pulled
content as the ingested target. With autocrlf smudging, the same file
had different bytes on disk (CRLF) and in git (LF), and the first live
co-located pass minted a spurious capture whose merge conflicted on
every PR-touched file - same content, different line endings.
loot-day.ps1 now force-pushes the checkout main into the private mirror:
ferry re-points the mirror main at the loot dock tip after projecting,
so a plain push stops fast-forwarding as soon as loot is ever ahead.
The checkout is authoritative for that ref; projected history stays
reachable under refs/loot/*.
Existing checkouts realign once with:
git config core.autocrlf false; git reset --hard
Git-Author: Connor Miller <53197564+Connor-Miller@users.noreply.github.com>
4c8c7fccdiff - Dogfood drive: log day 2 (clean bridge day, 2/5)
Day 2 was a git-clean day: the CA epic close-out had landed on main via
PRs, so the ferry carried it across (4 commits ingested, 0 conflicts, 0
projected back; 146 objects pushed, resumable). Record the day in the
drive log + evidence table (2/5).
Also fix loot-day.ps1 doubling the "ferry:" prefix in the logged line
(loot's own output already carries it).
bbcefde2 · dbf3dbe6…diff - Prototype the post-trio daily loot session + verb surface (#137) (#140)
* Dogfood drive: log day 2 (clean bridge day, 2/5)
Day 2 was a git-clean day: the CA epic close-out had landed on main via
PRs, so the ferry carried it across (4 commits ingested, 0 conflicts, 0
projected back; 146 objects pushed, resumable). Record the day in the
drive log + evidence table (2/5).
Also fix loot-day.ps1 doubling the "ferry:" prefix in the logged line
(loot's own output already carries it).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* Prototype the post-trio daily loot session + verb surface (#137)
A throwaway wayfinder prototype (map #132): a faithful scripted transcript
of loot's reconciled verb surface once auto-snapshot (#135), stable
change-ids (#134), and oplog/undo (#136) are all in. Surfaces five design
seams before the spec (#138) is written — two medium (columnar `log`,
divergent-change verb) that the three design tickets legitimately left to
integration.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Git-Author: Connor Miller <53197564+Connor-Miller@users.noreply.github.com>
a598aaa2diff - loot-first tooling: ferry --with-wip review lane + loot-first.ps1 (#155) (#160)
The build half of map #148. `loot ferry --with-wip` projects the ambient
dock's unfinalized working change to a sealed-free review/<dock> branch:
provisional commits carry Loot-Change-Id + Loot-Provisional and NO
Loot-Signature (the missing trailer is the machine-checkable "not
finalized" marker) while staying SSHSIG-signed for integrity. Lanes are
keyed by the durable change_id in .loot/git-mirror/wip - deliberately
outside the mark map - and reaped lazily on every ferry pass once the
change id turns up signed (landed) or gone (abandoned). Rounds append
per revision (#150); ingest refuses provisional commits and mark
rebuilds skip them, so nothing throwaway can enter the round-trip spine.
tools/loot-first.ps1 is the orchestrator that owns every GitHub call
(loot core stays git-agnostic): `review` publishes the branch by
single-ref inline-URL push and opens the PR (pr-map ledger, #153 seam
2); `land -Pr` verifies approval, finalizes on the PR's dock (seam 3),
ferries, fast-forwards GitHub main and points the PR head at the landed
sha so GitHub marks it Merged by reachability, then pushes the relay;
`init-hook` installs the warn-only direct-commit guard (#151).
Shipped git-first, deliberately: this commit is the last one that has
to be - the tooling it lands is what flips the workflow.
Git-Author: Connor Miller <53197564+Connor-Miller@users.noreply.github.com>
533d94d5diff - drive day 3: the inversion day (loot led all ten lanes); fix loot-day.ps1 head parse for the columnar log
95e4cde0 · 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.