How this place was built, from the records themselves. 1660 events extracted from
the git history, the claims journal, and the deploy log — grouped into arcs by the
work's own labels, never by hand. Every entry carries its receipt: a commit hash you can
check, a claim you can read on the ledger. This page is generated,
hourly, from the same sources. Humans commit; agents execute; the record connects. Commit subjects are shown in this house’s own tongue — SI, never the other initials — the hashes underneath are untouched.
The whole company, in the record
1548 commits · 104 days ·
104 work arcs · net +236,328 lines · 1660 record events
Where the work went: general (449) · spec (86) · docs (85) · kernel-core (84) · merge (78) · scratch-test (53) · notes (48) · glochid (40).
The habitat's declared capabilities, smoke-tested in the borge image,
grew 0 → 142 over the same period:
The claims ledger was unreachable at build time - the ledger strand shows its last known state; the derivation claim lands when it returns.
ledgerthe claims ledger (tuna)0 writes
Claims are how the agents close work: a dated, hash-chained write saying
what was done. These are the most recent.
2026-07Foundation378 commits6 burst days (≥25 commits)
The first image: kernel, storage, the ship path to OpenBSD. 378 commits by Roerick Sweeney (378). Peak day 2026-07-10 at 67 commits - a burst. Net +81,141 lines across 24 work arcs.
107 commits over 10 days by Roerick Sweeney. Opened with \“Initial commit: Pricklypear v1 foundation\”; closed with \“scripts: verify-wiki-llm-loop.sh — monitor-rerunnable acceptance for wiki loop\”. Net +21,322 lines.
07-10c7b9036d54Roerick Sweeney Initial commit: Pricklypear v1 foundation
07-10cb28d3b89fRoerick Sweeney Port to mirage-crypto 1.x + awa 0.6 so poohstack keeps Dream
07-1092e3312ab1Roerick Sweeney promote: kill stale processes before restart (EADDRINUSE)
07-10e84f3028aaRoerick Sweeney promote: warm-boot image after restart so relayd :80 works
07-10e151e121f9Roerick Sweeney Page≠function UX: missing-edit create, page inspector, nav fix
07-10630d115370Roerick Sweeney home: link Functions list instead of /edit/greet
70 commits over 6 days by Roerick Sweeney. Opened with \“fix: awa-ssh spike for awa-mirage 0.6 Make(Flow only)\”; the heaviest change landed 07-12 (+2224 lines); closed with \“Fix notes selection snap-back and top-level sibling; harden CDP\”. Net +11,464 lines.
07-1052e17ba304Roerick Sweeney fix: awa-ssh spike for awa-mirage 0.6 Make(Flow only)
07-10b932f1dd22Roerick Sweeney fix post-receive: unset GIT_DIR before worktree git ops
07-10f51ada1886Roerick Sweeney fix post-receive: quote bug on promote ssh; self-update hook body
07-10625163e6abRoerick Sweeney fix: encode + in package URLs; use pkg=root/kernel keys
07-1096b4d4a929Roerick Sweeney fix: /inspect/binding/ route prefix length (17 not 18)
… and 64 more in the repo (70 total)
docs19 commits2026-07-31 → 2026-08-05human ×19
19 commits over 6 days by Roerick Sweeney. Opened with \“docs: P3 debt handoff (package-surface, session, crud)\”; the heaviest change landed 08-05 (+543 lines); closed with \“docs: populate docstrings across 6 packages + polish ref/ai/verify\”. Net +2,053 lines.
07-31605e36b2dbRoerick Sweeney docs(borge): habitat-workflow chapter — spec-in-the-image, promote as gate
07-318ef434d324Roerick Sweeney docs(borge): mark merge + graduate-promote implemented after A2
… and 13 more in the repo (19 total)
lisp18 commits2026-07-24 → 2026-08-05human ×18
18 commits over 13 days by Roerick Sweeney. Opened with \“fix(lisp): macro string literals round-trip as VStr (c11-4013)\”; the heaviest change landed 07-24 (+596 lines); closed with \“feat(lisp): optional (&optional) and rest (&rest) lambda params\”. Net +2,223 lines.
07-2473a789499fRoerick Sweeney fix(lisp): macro string literals round-trip as VStr (c11-4013)
07-24c1c454ddb6Roerick Sweeney feat(lisp): Scheme-style TCO via trampoline in eval
07-24d9d27f66c5Roerick Sweeney feat(lisp): add function-ast prim for raw body as quoted data
07-2416e296f3caRoerick Sweeney feat(lisp): read-string / read-all-string — parse s-expr text to data
07-24b3bd087d72Roerick Sweeney fix(lisp): as-str treats empty list as empty string
16 commits over 9 days by Roerick Sweeney. Opened with \“spec: page≠function editor empty state + page call graph (plan)\”; the heaviest change landed 07-14 (+1166 lines); closed with \“spec: macro status partial + handler-only fn guard notes (prior session annotati\”. Net +3,827 lines.
07-11e995587dd9Roerick Sweeney spec: ltree deferral note in notes storage section
… and 10 more in the repo (16 total)
notes15 commits2026-07-30 → 2026-08-01human ×15
15 commits over 3 days by Roerick Sweeney. Opened with \“feat(notes): hierarchical tree notes K0–M1 (folders, headings, garden import)\”; the heaviest change landed 07-31 (+2330 lines); closed with \“fix(notes): render large tree folders in OCaml\”. Net +4,504 lines.
10 commits over 4 days by Roerick Sweeney. Opened with \“one-tree: P0 — pin path grammar, node envelope, physical layout (009_tree)\”; the heaviest change landed 07-30 (+1109 lines); closed with \“feat(one-tree): Phase 2b user-scoped datum paths + RLS floor\”. Net +2,298 lines.
07-303e0e0387b2Roerick Sweeney one-tree: P3 — flip reads to tree behind unchanged prim ABI (flag PP_TREE_READS)
07-30bb96104ceaRoerick Sweeney one-tree: P4 — write cutover; tree is truth by default (Option A)
07-308381fbf79fRoerick Sweeney one-tree: P5 — empty-lens fork (branches as lenses)
… and 4 more in the repo (10 total)
image9 commits2026-07-24 → 2026-07-31human ×9
9 commits over 8 days by Roerick Sweeney. Opened with \“feat(image): Smalltalk combo pack — senders, impact, changes, DNU, 3-pane\”; closed with \“feat(image): soft spec lint checklist on promote\”. Net +3,046 lines.
2026-08The habitat takes shape282 commits3 burst days (≥25 commits)
Specification discipline, notes, the object store hardens. 282 commits by Roerick Sweeney (282). Peak day 2026-08-16 at 55 commits - a burst. Net +60,964 lines across 24 work arcs.
general311 commits2026-08-30 → 2026-10-19human ×201, gregor ×72, hollis ×34
311 commits over 51 days by Roerick Sweeney, gregor, hollis, ralph, ralph-loop, roerick. Opened with \“test: sample-book-export fixture — real borge book export of a tiny root\”; closed with \“qlib-test: bisect chunk 2 (depth-buckets..page+route)\”. Net -203,667 lines.
08-30d10b31c6c1Roerick Sweeney test: sample-book-export fixture — real borge book export of a tiny root
08-309e947abb4eRoerick Sweeney release: borge book export + reader flavor ship with the public artifacts
08-31fb477ca7ddRoerick Sweeney music kernel support: (request-multipart) + (media-put-raw) + multipart route-POST cap
09-013596f1f39eRoerick Sweeney music: package shipped to system/main — vault snapshot + spec status
09-0125e270d7f9Roerick Sweeney music: fix browser upload — form lacked enctype/hx-encoding
… and 305 more in the repo (311 total)
spec28 commits2026-08-06 → 2026-08-16human ×28
28 commits over 11 days by Roerick Sweeney. Opened with \“spec(drift): fix stale implements paths in lisp-interpreter\”; the heaviest change landed 08-16 (+539 lines); closed with \“spec(structural-editing): campaign 9.3b — flip client-eval to implemented\”. Net +2,294 lines.
08-0645aec500b5Roerick Sweeney spec(drift): fix stale implements paths in lisp-interpreter
08-063558dbf350Roerick Sweeney spec(drift): declare migration files in migrations.borg
08-06edc4b2d564Roerick Sweeney spec(drift): excuse docs/ orphans via (untracked ...) in root book
08-06b8e93ade51Roerick Sweeney spec(drift): excuse scripts/ orphans via (untracked ...)
08-0670e93fe27fRoerick Sweeney spec(drift): declare/excuse libs/ packages — drift to 0
08-06cbaad8fccbRoerick Sweeney spec(structural-editing): sanction hx-optimistic for display-placeholder optimism
… and 22 more in the repo (28 total)
general24 commits2026-08-06 → 2026-08-16human ×24
24 commits over 11 days by Roerick Sweeney. Opened with \“upgrade htmx 1.9.12 → 4.0.0-beta6 (vendored); port hx-multipart ext to v4 API\”; the heaviest change landed 08-16 (+1930 lines); closed with \“media_scoping (campaign 9.7): visibility-confine media get-by-uuid — BORGE-17856\”. Net +6,495 lines.
08-06352953e57cRoerick Sweeney upgrade htmx 1.9.12 → 4.0.0-beta6 (vendored); port hx-multipart ext to v4 API
15 commits over 8 days by Roerick Sweeney. Opened with \“docs: scope borge-issue filing to make-mode escape hatch only\”; the heaviest change landed 08-15 (+248 lines); closed with \“docs(agents): document new /issues workflow (browser, file-issue.sh, notes/issue\”. Net +1,870 lines.
08-09bef5c03537Roerick Sweeney docs: scope borge-issue filing to make-mode escape hatch only
08-0906334f99a7Roerick Sweeney docs: plan to remove the Lwt rim (eio-floor Phase 5)
08-12a15e7809deRoerick Sweeney docs(crud): refresh stale data_rel + module-header comments (i-stale-comments-2026-08-12)
08-143995e167beRoerick Sweeney docs(log): snapshot resolved fix-loop issues from habitat
08-145a4d2d032bRoerick Sweeney docs(agents): note /timing system page in system-pages list
… and 9 more in the repo (15 total)
sec14 commits2026-08-28 → 2026-08-28human ×14
14 commits over 1 day by Roerick Sweeney. Opened with \“fix(sec): enforce branch-owner checks on checkout/fork/merge/unbind (i-178797064\”; the heaviest change landed 08-28 (+277 lines); closed with \“fix(sec): never bootstrap default admin/admin without opt-in (i-1787971357)\”. Net +662 lines.
08-28511ebdf36cRoerick Sweeney fix(sec): enforce branch-owner checks on checkout/fork/merge/unbind (i-1787970640)
08-283c8e5075cbRoerick Sweeney fix(sec): cap request body reads at PP_MAX_BODY_BYTES (default 1 MiB) (i-1787970693)
08-281e5c08e462Roerick Sweeney fix(sec): reject CR/LF in redirect targets (i-1787971411)
08-286598306ae8Roerick Sweeney fix(sec): add nosniff/frame-ancestors/referrer headers to all responses (i-1787970880)
08-28c8e95d3135Roerick Sweeney fix(sec): serve uploaded SVG as attachment (i-1787970809)
08-28cf3938e097Roerick Sweeney fix(sec): Secure cookie + https garden redirects when base domain set (i-1787970928)
… and 8 more in the repo (14 total)
forge10 commits2026-08-09 → 2026-08-09human ×10
10 commits over 1 day by Roerick Sweeney. Opened with \“feat(forge): graph-model layer — nodes/flags/graphs CRUD, children index, status\”; the heaviest change landed 08-09 (+257 lines); closed with \“fix(forge): tighten verify seed (outcome assertions) + guard draft-node\”. Net +1,579 lines.
08-090823d93eadRoerick Sweeney feat(forge): graph-model layer — nodes/flags/graphs CRUD, children index, status transitions, constraint accum
8 commits over 1 day by Roerick Sweeney. Opened with \“feat(book): load-book loader — seed a borge book export into the one tree\”; the heaviest change landed 08-30 (+897 lines); closed with \“fix(book): docstrings were inside lambda bodies (closer off-by-one) + json-array\”. Net +3,401 lines.
08-304a4d292545Roerick Sweeney feat(book): load-book loader — seed a borge book export into the one tree
08-306cda84be58Roerick Sweeney feat(book): libs/book package — the spec rendered as live habitat pages
08-30c523b89d96Roerick Sweeney feat(book): example-eval prim — read-time eval of book examples in a restricted env
08-308686778588Roerick Sweeney feat(book): book/verify — the book's dune runtest, hole-rendered
08-30b410af8d64Roerick Sweeney feat(book): first course — /book/course/<slug> renders a composition over chapters
08-30fad2481025Roerick Sweeney fix(book): seed-time binding resolution + cheap spec index — pages fit budget
… and 2 more in the repo (8 total)
tree-time7 commits2026-08-16 → 2026-08-16human ×7
7 commits over 1 day by Roerick Sweeney. Opened with \“tree-time (5.1): dump migration 018_tree_versions.sql per the pinned schema cont\”; the heaviest change landed 08-16 (+809 lines); closed with \“tree-time (5.3 consumers+gc): GC retention worker on the jobs runner + notes-und\”. Net +3,201 lines.
08-1671a0f43b0fRoerick Sweeney tree-time (5.1): dump migration 018_tree_versions.sql per the pinned schema contract
08-01e85b431811Roerick Sweeney fix(notes): collapse create-note form behind details summary
08-01759af1ef9fRoerick Sweeney fix(notes): surface large folder trees past the 2k index cap
08-016eed55fbd9Roerick Sweeney fix(notes): raise tree/list child limit for large folders
08-01098ef8289bRoerick Sweeney fix(notes): render large tree folders in OCaml
08-01501b3b1cabRoerick Sweeney feat(observability): function inspection on binding pages
08-01f3eb58ad35Roerick Sweeney fix(analyze): tolerate prose LLM replies for complexity JSON
08-01b7a693bfa5Roerick Sweeney fix(analyze): real LLM JSON for complexity (not placeholders)
08-0157ca226f79Roerick Sweeney fix(ui): keep bindings three-pane chrome across Edit/Inspect/Observe
2026-09Agents move in435 commits5 burst days (≥25 commits)
glochid and borge, the workstreams face, the first agent machinery. 435 commits by Roerick Sweeney (339), gregor (93), gregor (al) (3). Peak day 2026-09-13 at 59 commits - a burst. Net +52,663 lines across 27 work arcs.
glochid24 commits2026-09-11 → 2026-09-21human ×24
24 commits over 11 days by Roerick Sweeney. Opened with \“glochid: persistent sessions in the local pp store (sessions-persist)\”; closed with \“glochid: shelf-verb fix — htmx implicit-inheritance leak + hx-disinherit support\”. Net +4,548 lines.
09-112f4f61b69fRoerick Sweeney glochid: persistent sessions in the local pp store (sessions-persist)
pp-flow20 commits2026-09-25 → 2026-09-28human ×11, gregor ×9
20 commits over 4 days by Roerick Sweeney, gregor. Opened with \“fix(pp-flow): single-owner write-back — the double-advance bug\”; the heaviest change landed 09-27 (+372 lines); closed with \“pp-flow: structured EVIDENCE/DESTINATION bridge + box-local CONTEXT override\”. Net +1,085 lines.
09-255ee3e15b8bRoerick Sweeney fix(pp-flow): single-owner write-back — the double-advance bug
09-25d5fa82e18cgregor pp-flow: PP_TOKEN bearer auth, drop jq+python deps, harden claim/write-back
14 commits over 4 days by Roerick Sweeney. Opened with \“filmstrip v2 task 1: shelf = default close\”; the heaviest change landed 09-14 (+1410 lines); closed with \“filmstrip main-strip-v5: the main region is the niri strip again\”. Net +3,148 lines.
09-13174c639a37Roerick Sweeney filmstrip v2 task 1: shelf = default close
10 commits over 2 days by Roerick Sweeney. Opened with \“borge bugs: BORGE-1789192449 (silent persist swallow), BORGE-1789192457 (bible/c\”; the heaviest change landed 09-13 (+51 lines); closed with \“borge: declare filmstrip/pads/soil/book/vault scripts (drift cleanup 11 -> 0)\”. Net +209 lines.
9 commits over 5 days by Roerick Sweeney. Opened with \“spec: bumpers chapter — the feedback half of agent bowling bumpers (planned)\”; the heaviest change landed 09-27 (+139 lines); closed with \“spec: the notes path-grammar migration (data.note.u.* -> data.u.note.*) + ignore\”. Net +603 lines.
09-2328069dc875Roerick Sweeney spec: bumpers chapter — the feedback half of agent bowling bumpers (planned)
09-2312511c3ae5Roerick Sweeney spec: gen-drift + temporal-log subsections in habitat-workflow (planned)
09-25d578956b5cRoerick Sweeney spec(pipeline): the status machine is an ordered list — the unifying model (roerick, 2026-09-25)
… and 3 more in the repo (9 total)
image8 commits2026-09-20 → 2026-09-20human ×8
8 commits over 1 day by Roerick Sweeney. Opened with \“cleanup(image): drop dead lookup_handler from request_context (zero callers)\”; closed with \“cleanup(image): refresh stale session/control-prim comments (eval_string_auto/PP\”. Net -43 lines.
09-20edc50aeca1Roerick Sweeney cleanup(image): drop dead lookup_handler from request_context (zero callers)
09-20b73fc096efRoerick Sweeney cleanup(image): drop dead timing clear affordance (zero callers/tests)
09-20a72c94d629Roerick Sweeney cleanup(image): dedupe store_branch hash_eq to Branch_algebra.hash_eq (drop local copy)
09-20325637dd75Roerick Sweeney cleanup(image): drop unreachable pre-migration 2-column arm in list_routes
09-205fc7e7a05eRoerick Sweeney cleanup(image): collapse dead twin branch in http_code static_root (identical fallback arms)
09-20c11cf1b46dRoerick Sweeney cleanup(image): dedupe header_ci to Http_kit.header_ci in http_media and agent_discovery
… and 2 more in the repo (8 total)
todo8 commits2026-09-25 → 2026-09-26human ×8
8 commits over 2 days by Roerick Sweeney. Opened with \“todo: land gregor's assignment + priority/queue on master lib (orchestration tas\”; the heaviest change landed 09-25 (+175 lines); closed with \“todo: list/get with empty list-id resolves default inbox, not ltree 42601\”. Net +870 lines.
09-25286360dfd0Roerick Sweeney todo: land gregor's assignment + priority/queue on master lib (orchestration task 1)
7 commits over 1 day by Roerick Sweeney. Opened with \“promote-window task 1: boot baseline + measure-boot.sh harness\”; the heaviest change landed 09-03 (+174 lines); closed with \“promote-window task 7: boot-phase timing + warm-seed eval skip\”. Net +642 lines.
09-03a66120346egregor fix(kernel): tree/find-by garden-scoped by default (i-1788348645)
09-031a1c69f69egregor local(dune): lang 3.23 -> 3.8 for OpenBSD pkg dune-3.8.3 (vultr.guest)
09-037495b29c8agregor Revert "local(dune): lang 3.23 -> 3.8 for OpenBSD pkg dune-3.8.3 (vultr.guest)"
2026-10Governance and proof453 commits7 burst days (≥25 commits)
Gates, claims, the fence, deploys on record - the audit era. 453 commits by Roerick Sweeney (195), hollis (147), gregor (106), roerick (3). Peak day 2026-10-19 at 87 commits - a burst. Net +41,560 lines across 21 work arcs.
53 commits over 1 day by hollis. Opened with \“scratch-test: minimal data-define + lambda-define + route shapes\”; the heaviest change landed 10-19 (+131 lines); closed with \“scratch-test: removed (debug harness served its purpose - route dropped so /quak\”. Net +0 lines.
deploy27 commits2026-10-06 → 2026-10-18hollis ×14, gregor ×10, human ×3
27 commits over 13 days by Roerick Sweeney, gregor, hollis. Opened with \“deploy: retrigger post-receive (previous hook hit the deploy lock)\”; closed with \“deploy retry: todo lib prio-sorted part 2d (retrigger hook)\”. Net +14 lines.
10-06bbf20ee875hollis deploy: retrigger post-receive (previous hook hit the deploy lock)
10-065a74aa9f3ehollis deploy: retry — prior hooks were lock-blocked by the in-flight 13:06 deploy
10-08351de75866hollis deploy trigger: the loop's first live run
10-0849b8e63489hollis deploy trigger: incoming dir writable
10-08a96558dcdchollis deploy trigger: promote rule in place — first full self-hosted deploy
… and 21 more in the repo (27 total)
filmstrip22 commits2026-10-12 → 2026-10-19gregor ×10, human ×7, hollis ×5
22 commits over 8 days by Roerick Sweeney, gregor, hollis. Opened with \“filmstrip v5 restore: main-strip CSS (niri scroll-into-view + fs-single one-up) \”; the heaviest change landed 10-14 (+744 lines); closed with \“filmstrip: fix sentinel extra-attrs paren (shell render crash); glochid: doc lan\”. Net +1,758 lines.
10-1216efeb76cdhollis filmstrip v5 restore: main-strip CSS (niri scroll-into-view + fs-single one-up) re-landed after vault-mirror r
10-132c9e65d0f5gregor filmstrip: declare filmstrip-ws row type at boot (ws-init!) -- undeclared type made pane saves silently no-op
10-13891401db6bhollis filmstrip: calendar/browse-years returns (label . value) pairs so the cascade column shape stays uniform with
10-13b82a274c86hollis filmstrip: balance cal/browse-years to (label . value) pairs + balanced parens after the v5 cascade revert (fi
10-13f9c7520bc9hollis filmstrip: docstring to the define's third slot (matches house convention per todo/browse-lists; probe via raw
10-139ce001195ehollis filmstrip: calendar/browse years entries are 2-lists (name value), not dotted pairs - house entry shape per br
… and 16 more in the repo (22 total)
quake16 commits2026-10-19 → 2026-10-19hollis ×16
16 commits over 1 day by hollis. Opened with \“quake lib v1: USGS catalog aggregates (273k events M4.5+ 1975-2026) as server-re\”; the heaviest change landed 10-19 (+42 lines); closed with \“quake: the other 3-arg minus calls (bh, y) - minus is strictly 2-arg on this ker\”. Net -23 lines.
13 commits over 6 days by gregor. Opened with \“glochid follow-up renames: glochid config-home + legacy .agent/.agent-window fal\”; closed with \“glochid: fix optimistic-loader test Nopales reader escapes (card c7be7174)\”. Net -115 lines.
todo13 commits2026-10-16 → 2026-10-21gregor ×9, human ×4
13 commits over 6 days by Roerick Sweeney, gregor. Opened with \“todo: align export manifest with merged lib (T4 lib-hygiene check green)\”; the heaviest change landed 10-17 (+682 lines); closed with \“todo: one board snapshot per /todos render - thread items into todo/ui/nav (budg\”. Net +1,024 lines.
10-183ce21fc6d8gregor todo: row-id? matches by O(1) path-suffix (ghost fix part 2b)
10-18cb6d6b8f7agregor todo: path-id probes O(1) instead of char loop (ghost fix part 2c)
… and 7 more in the repo (13 total)
spec12 commits2026-10-01 → 2026-10-02human ×11, other ×1
12 commits over 2 days by Roerick Sweeney, roerick. Opened with \“spec(todo): shared-store, default-pipeline, note-todos, lib-hygiene\”; the heaviest change landed 10-02 (+421 lines); closed with \“spec: songs chapter — chord charts + the layered music representation (plan phas\”. Net +1,190 lines.
9 commits over 1 day by Roerick Sweeney. Opened with \“activity-ledger T3.1: migration 035 + ring/flush/rollup module + boot fiber\”; the heaviest change landed 10-02 (+877 lines); closed with \“activity-ledger Phase 4: IKEA 365-day rollup smoke\”. Net +2,814 lines.
5 entries withheld by the public-safety gate at build time. The boundary is enforced in the pipeline, not by promise. What is shown is what survived it.