| One authorization path for every surface | partial | all surfaces call =control.Dispatch= (=internal/control/control.go=); three web toggles write the store directly (#261) |
12
| One authorization path for every surface | in place | all surfaces call =control.Dispatch= (=internal/control/control.go=); web form handlers, including the pin, watch and mark-read toggles, dispatch commands; login and session bookkeeping are not commands |
13
13
| No server-side signing key | in place | =internal/sig= verifies only |
14
14
| Least functionality by default | in place | API, web accounts, git://, push and registration default off (=internal/config/config.go=) |
15
15
| No git library; git runs as a subprocess with built argv | in place | =internal/gitutil= |
@@ -100,5 +100,5 @@ chapter names of OWASP ASVS 4.0 where one fits.
100
100
| Service hardening | in place | systemd sandboxing ([[file:03-Deployment.org][3]]) |
101
101
| Backups offsite and append-only | in place | restic with append-only credentials (documented) |
102
102
| Restore tested | gap | tooling in place (=admin restore-drill=, Admin wiki "Restore drill"); clean-host drill pending (#259) |
103
| Migrations validated before commit | gap | foreign-key check runs after commit (#261) |
103
| Migrations validated before commit | in place | =PRAGMA foreign_key_check= runs inside the migration transaction, before commit (=internal/store/store.go=) |
104
104
| Signed, reviewed changes to production | in place | signed commits, =require-mr=, ff-only merges, clean-tree deploys |
.gitbay/wiki/Architecture/10-Known-Gaps.org−1
@@ -11,7 +11,6 @@ what the 2026-09-27 review found; remove a row when its issue closes.
| #259 | Recovery | No restore has been exercised; the procedure and tooling (=admin restore-drill=, =backup --verify=) are in place, the clean-host drill is pending | high |
14
| #261 | Various | Migration foreign-key check after commit; three web writes bypass dispatch; documentation drift | medium |
15
14
16
15
* Not filed
17
16
CHANGELOG.org+2
@@ -6,6 +6,8 @@ anything beyond "replace the binary and restart" is needed.
6
6
7
7
* Unreleased
8
8
9
- Marking notifications read from the web dispatches =notifications
10
read=, so it counts against the write budget and is audited (#261).
9
11
- =gitbayd admin backup --verify= also checks every release asset the
10
12
database names against its recorded size and sha256, and every