Work remaining before this deploys and goes public. One line per item. An item is done when the check in its last column passes.
Sizes are S under an hour, M a few hours, L most of a day.
| Item | Where | Done when | Size | |
|---|---|---|---|---|
| [x] | A1 | Pick a license | you | the name of a license, written down |
| [x] | A2 | Add LICENSE to all four repos | server, cli, runner, book | ls LICENSE succeeds in each |
| [x] | A3 | Name the copyright holder | the four LICENSE files | the holder line is filled in, not a placeholder |
MIT, copyright BareRepo, in all four repositories.
The book and the binaries say barerepo. The running program still says forge in 62 places, and one of them names a command that no longer exists.
| Item | Where | Done when | Size | |
|---|---|---|---|---|
| [x] | B1 | Fix the wrong command name | internal/httpd/accounts.go:241 says "run forge auth again" |
it says br auth |
| [x] | B2 | Page titles and brand | web.go 12, accounts.go 5, atom.go 1 |
no forge · prefix remains |
| [x] | B3 | Templates | 14 files under internal/httpd/templates/, 35 hits |
grep -ric forge templates/ returns only .forge/ paths |
| [x] | B4 | Workflow messages | internal/workflow/workflow.go 15, matrix.go 1 |
decline and skip messages say barerepo |
| [x] | B5 | Startup and hook errors | cmd/barerepo/commands.go 3, hook.go 2, blobs.go 1, sshx/command.go 1 |
"forge is ready" says barerepo |
| [x] | B6 | Update the tests that assert the old word | 13 files, listed at the bottom | full suite green |
Do not touch these while renaming. The code depends on the exact strings:
barerepo-auth, barerepo-signup, .barerepo/config, /etc/forge/barerepo.toml,
/var/lib/barerepo, barerepo_session.
barerepo.com is live on v4 and v6. C4 is the only one left here.
| Item | Where | Done when | Size | |
|---|---|---|---|---|
| [x] | C1 | Change the git identity the server commits under | internal/gitx/gitx.go:86-89, currently forge@localhost |
a note written by the server is authored by barerepo |
| [x] | C2 | Handle SIGTERM | cmd/barerepo/commands.go, the serve command |
a push in flight finishes, or is refused cleanly, when the process is asked to stop |
| [x] | C3 | Ship a systemd unit | new contrib/barerepo.service |
systemctl start barerepo works from a fresh install |
| [ ] | C4 | Write the install steps | server README or docs/INSTALL.md |
someone who has never seen this can go from tarball to running |
C2 is the one with teeth. Nothing catches SIGTERM today, so a deploy during a push kills it after the objects are written and before the ref moves.
| Item | Where | Done when | Size | |
|---|---|---|---|---|
| [ ] | D1 | Decide allow_lfs: build 20.3 or delete the key |
internal/config/config.go:61 |
the key has a reader, or no longer exists |
| [ ] | D2 | Decide artifact_retain_days the same way |
config.go, retention |
same |
| [x] | D3 | One go version across the three modules | all three say 1.24, which is what the cross repo instructions tell people to write | all three agree |
| [ ] | D4 | Add CI | all four repos | a push runs the suite |
| [ ] | D5 | Fix or quarantine TestBudget |
e2e/budget_test.go |
the suite is green twice in a row under load |
| Item | Where | Done when | Size | |
|---|---|---|---|---|
| [ ] | E1 | LFS, or say it is refused | book 20.3 | built, or the chapter says not built and allow_lfs is gone |
| [ ] | E2 | Account rename, or cut it | book 21.2, no route and no CLI exist | built, or the chapter is cut |
No real secrets are committed. rt_live_7Kq2mXe in the mockups and the book is
an eight character illustration, not a token. Git is always invoked with an
argument array and never a shell. All three panic calls are startup time on
constants. It cross compiles for linux/arm64. barerepo init works from nothing.
A1 and A2 first, because they are cheap and nothing can be public without them. Then C1, since every commit the server makes carries the wrong identity into history forever and that cannot be fixed later. Then B, in one pass, so the tests move once. C2 before you put it on a machine you restart.
internal/httpd/install_test.go, internal/httpd/view_test.go,
internal/workflow/workflow_test.go, internal/store/store_test.go,
e2e/security_test.go, e2e/runner_setup_test.go, e2e/signin_test.go,
e2e/search_test.go, e2e/crawl_test.go, e2e/portability_test.go,
e2e/feeds_test.go, e2e/notespush_test.go, e2e/copy_test.go