# Punchlist 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. ## A. Blocks open sourcing | | Item | Where | Done when | Size | |---|---|---|---|---| | [x] | A1 | Pick a license | you | the name of a license, written down | S | | [x] | A2 | Add LICENSE to all four repos | server, cli, runner, book | `ls LICENSE` succeeds in each | S | | [x] | A3 | Name the copyright holder | the four LICENSE files | the holder line is filled in, not a placeholder | S | MIT, copyright BareRepo, in all four repositories. ## B. Rename the product in the product 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` | S | | [x] | B2 | Page titles and brand | `web.go` 12, `accounts.go` 5, `atom.go` 1 | no `forge ยท ` prefix remains | M | | [x] | B3 | Templates | 14 files under `internal/httpd/templates/`, 35 hits | `grep -ric forge templates/` returns only `.forge/` paths | M | | [x] | B4 | Workflow messages | `internal/workflow/workflow.go` 15, `matrix.go` 1 | decline and skip messages say barerepo | M | | [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 | S | | [x] | B6 | Update the tests that assert the old word | 13 files, listed at the bottom | full suite green | M | 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`. ## C. Blocks deploying 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 | S | | [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 | M | | [x] | C3 | Ship a systemd unit | new `contrib/barerepo.service` | `systemctl start barerepo` works from a fresh install | S | | [ ] | C4 | Write the install steps | server README or `docs/INSTALL.md` | someone who has never seen this can go from tarball to running | M | 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. ## D. Cleanup before either | | 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 | S or L | | [ ] | D2 | Decide `artifact_retain_days` the same way | `config.go`, retention | same | S | | [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 | S | | [ ] | D4 | Add CI | all four repos | a push runs the suite | M | | [ ] | D5 | Fix or quarantine `TestBudget` | `e2e/budget_test.go` | the suite is green twice in a row under load | M | ## E. Written down but never built | | 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 | L | | [ ] | E2 | Account rename, or cut it | book 21.2, no route and no CLI exist | built, or the chapter is cut | M | ## Checked and fine 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. ## Suggested order 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. ## Tests that assert the old word `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`