fix(backend): give each report file a name of its own (closes #61)
check / check (push) Successful in 32s

Report files were named by a millisecond timestamp and created with
O_EXCL, so two flushes in the same millisecond, such as a flush for
size and the final flush at shutdown, got the same name and the second
failed, losing its reports. Each name now carries a number after the
timestamp that counts the files written since the server started, so
names still sort by time and never repeat. The new test flushes pairs
until one falls within one millisecond; the 1 ms pauses earlier tests
used to dodge the collision are gone.

Model: opus-5-5
This commit is contained in:
2026-09-29 03:25:11 +00:00
parent ced1956b06
commit 0987817aae
4 changed files with 116 additions and 14 deletions
+5
View File
@@ -23,6 +23,11 @@ latest run passes.
# Completed Steps
- 2026-09-29: report file names can no longer collide (issue #61): each is
`reports-<timestamp>-<number>.jsonl.zst`, where the number counts the files
written since the server started, so two flushes in the same millisecond, such
as a flush for size and the final flush at shutdown, each get a file of their
own instead of the second one failing
- 2026-09-29: nginx listens on `PORT` (issue #26), 8080 when unset or empty: the
nginx image renders `nginx.conf` as a template at container start, filling in
`PORT` and no other variable. `bin/entrypoint.sh` refuses to start when `PORT`