🧭 NeXuS Compass — Fossil SCM adoption · Docs architecture · TUI kitchen-sink¶
Stamped 2026-07-17 · Anon shutting down — pick up here
This session: resolved the "git vs Simple" question by evaluating Fossil SCM hands-on, landed the docs-with-code architecture, and pre-screened a 215-package TUI kitchen-sink batch (ready for a
doasinstall).
✅ DONE this session¶
Fossil SCM — evaluated hands-on, leaning ADOPT¶
Fossil v2.28 already installed (/usr/bin/fossil). Answers the parked "is git the best / not so Simple / is gitea the same" question:
- git = the VC tool (powerful, not Simple). Gitea = a self-hosted git server/forge — NOT a different/simpler tool, still git underneath. Fossil = a genuinely simpler, self-contained alternative.
- Proven facts (all demoed live in ~/Projects/fossil-lab):
- 1 .fossil file = 1 whole repo — files + history + wiki + forum + chat + tickets + users, all in one SQLite file. Proved by deleting the working tree and rebuilding it from the file alone.
- Working dir = disposable checkout (.fslckout); repo lives in the ONE file (opposite of git's in-tree .git/). Two steps: init/clone the file, then open a checkout.
- Empty repo ≈ 212K = fixed forge-schema overhead (27 tables). Text compresses + deltas; binaries bloat it — keep out (matches CLAUDE.md no-binaries rule).
- Simpler than git: no staging/index dance — commit auto-includes tracked edits; add only for NEW files. Has fossil undo (reverses last update/merge/revert — git has no equivalent).
- Not a walled garden: fossil git export maintains an incremental git mirror → still push to GitHub. Fossil = sovereign source of truth, GitHub = mirror.
- Zero-install access for others: browse via web UI (browser only); grab code via /tarball/... or /zip/... with plain curl. Only real collaborators need the (tiny, single-binary, zero-dep) install.
- Repo list in UI: fossil server ~/museum/ (a DIRECTORY) → root page lists every .fossil = your self-hosted forge homepage. (fossil server repo.fossil = straight into one repo, no list.) CLI: fossil all list (only shows repos opened at least once — dir-server list shows ALL files regardless).
- Search: fossil grep PATTERN file = content search across ALL historical versions, no index. Plus FTS5 full-text index (fossil fts-config enable all; index on; reindex) over file content + wiki + forum + tickets + comments → web-UI search box. Use tokenizer trigram for code.
Docs architecture — SETTLED (after a false start)¶
- False start: I overcomplicated with wiki-vs-embedded + project-vs-cross-cutting split → confused Anon. Reset.
- The rule Anon landed on: a script + its
.help.md= ONE unit; repo boundary wraps the natural unit. Docs live WITH their code (already half-stated in CLAUDE.md). No format conversion — help files are already markdown; Fossil renders them as-is (embedded docs). The "NeXuS operation manual" is a VIEW, not a hoard: oneindex.mdlinking the help files = the manual's table of contents. - Mapping:
~/scripts→nexus-scripts.fossil(scripts + help together — also knocks out the parked "offsite-backup of /scripts" task). Each~/Projects/*→ its own repo (code +docs/). Only truly standalone broad manuals (some of~/manuals) might want a separate knowledge repo later — small tail, don't let it complicate. - Doc inventory (read-only, this session):
~/manuals66 ·~/claude/docs88 ·~/claude/reports27 ·~/claude/compass14 ·~/notes/nexus4 · ~15 per-projectdocs/dirs ·~/scripts89 loose.md(help files) · only 1 binary (docs are ~all text = Fossil-friendly).
TUI kitchen-sink batch — pre-screened, ready to install¶
- Manifest saved:
~/scripts/nexus_tui_sink.pkgs(215 pkgs — TUI apps, terminals, players, net tools, icon themes, fonts). - Dry-run (
nexus-apk-sink.sh -n -f, no doas needed): 125 would-install · 88 already · 0 not-in-repo · 0 conflicts flagged (conflicts NOT screened —apk --simulateneeds root; real screen happens under doas).
Memory written¶
memory/project_fossil.md(new) +MEMORY.mdindex updated.
⏳ PENDING doas op (Anon runs — I can't go root)¶
Install the TUI sink (does the real conflict pre-screen under root, installs what sticks):
▶️ NEXT / PICK UP HERE¶
- First real Fossil repo — I offered, awaiting "go":
~/scripts→~/museum/nexus-scripts.fossilfossil init ~/museum/nexus-scripts.fossil→fossil opena checkout → copy (never move) scripts +.help.mdin → commit → serve. Get the operation-manual view for free. - Then the char-gen copy→commit pilot (replay its ~8 copies oldest→newest as real commits into one repo).
- Optional
nexus-forge.shwrapper so raw fossil verbs stay hidden:new(init in ~/museum + open in ~/Projects) ·save "msg"·log·back <ver>·serve(localhost default + optional Tor-publish).
📌 OPEN DECISIONS¶
- Store dir name:
~/museum/vs~/fossils/for canonical.fossilfiles. - Wrapper vs raw: build
nexus-forge.shnow, or drive raw fossil first to get a feel. - MkDocs fate: keep
mkdocs/GitHub-Pages as the polished PUBLIC render layer (fed from Fossil via git-mirror), or let Fossil/docrendering replace it (plainer but sovereign + searchable + versioned). - 3-copies doctrine maps to Fossil: canonical
.fossilin store · working checkout in~/Projects· backup =cpthe one file.
🧹 CLEANUP / STATE¶
- Scratch demo
~/Projects/fossil-lab/= throwaway (nexus-demo.fossil,medusa-demo.fossil,fresh-checkout/). Safe to delete. FTS was enabled onnexus-demo(harmless). - All fossil demo servers STOPPED — nothing left running (8080/8081 down). NOTE:
pkill -f 'fossil server'tripped a sandbox signal (exit 144) mid-command twice — cosmetic, servers still died; just don't chain pkill with other output. - Nothing committed/pushed anywhere. No secrets touched.