Lab Notes: Music Server
Test shape
- Payload: 1,126 files, 13.45 GiB.
- Repository: local release
loreserver. - Branch:
music. - Client and server were both release binaries.
Staging
lore stage --scan music
Staging was fast: 393 directories and 1,126 files staged in 0.128 seconds.
They’re fast as hell because all they do is just check file state. Content is only read during commit.
Commit
lore commit "Add half music library stress set"
The successful commit took 129.696 seconds and recorded 13.45 GiB.
lore commit created a new local revision and moved the
local branch latest. In normal online mode, the content payloads were
also uploaded to the remote immutable store during commit.
lore commit --stats for some reason crashed with
capacity overflow. had to retry without stats.
Push
lore push music
Push took 0.851 seconds.
fast as heck because its just updating pointers on the server.
Clone
lore clone --branch music lore://127.0.0.1:42337/music-stress music-clone
Default full clone checked out 1,127 files and 13.45 GiB in 56.022 seconds.
lore clone --direct-file-write --branch music lore://127.0.0.1:42337/music-stress music-direct-write
Direct-file-write clone checked out the same payload in 55.406 seconds. In this test, direct writes were not materially faster than the default temp-file-then-rename path.
lore clone --bare --branch music lore://127.0.0.1:42337/music-stress music-bare
Bare clone took 0.125 seconds because it fetched revision state without materializing files.
Status
lore status --scan --count
A full status scan in the checked-out clone took 9.051 seconds and reported a clean worktree in sync with the remote branch.
Storage terms
| Term | Meaning |
|---|---|
| Payload | The actual file bytes, split into fragments for storage. |
| Fragment | A content-addressed chunk. Large files become many fragments plus a small fragment list. |
| Immutable store | Content-addressed storage for payload fragments, tree data, metadata, and revisions. |
| Mutable store | Small pointer storage: branch latest pointers, names, and local instance state. |
| Packfile | An on-disk file that batches many immutable fragments together. |
Client .lore |
The local repo state and cache. It may hold metadata without holding all payload bytes. |
Storage
The bytes pushed to server are physically in the server’s immutable
store. each client’s .lore directories stayed small because
they mostly held metadata and local state.
| Location | Measured size | What it means |
|---|---|---|
| Server immutable store | 13.04 GiB | The committed file payloads and immutable Lore data. |
| Server mutable store | 704 bytes | Branch and pointer state only. |
Original worktree .lore |
0.038 GiB | Local metadata after commit uploaded payloads remotely. |
Full clone .lore |
237,989 bytes | Clone metadata; checked-out files live in the worktree. |
server-store/immutable/index/<bucket>/pack/1
That path is Lore’s local-server backing store: fragments are spread across hash buckets, then packed into packfiles. The small mutable store is expected; it only needs to remember which branch points at which revision.
running clone streams payloads from the remote into the
working tree.
Takeaways
stage --scanis cheap.commitis the same as creating a commit or shelf on the server, this moves files over to the server.pushJust merges pointers and content on the remote.- Full clone just clones the content.
commit --statsneeds follow-up for large payloads.
Related: chunk fetch lab notes.