serve-before-dependencies (#141) and runtime-database-user (#23) move to
the archive, and their deltas are synced into openspec/specs. The two
Purpose edits a delta cannot make are made here: temporal-connection's
Purpose says start connects in the background and retries for the life
of the process, and error-pages' names the 503.
What the two investigations learned beyond each decision moves into the
docs:
- go-conventions.md: a new section on code that reaches a service that
answers after the listener opens (holders, per-request reads, the
refused write, retryloop, viper writes before the listener).
- production-deployment.md: what a liveness probe requests, and why it
must not wait on Temporal or the identity provider.
- building-an-integration.md: declared paths skip the session layer;
a completed workflow id runs again, and the guarded first update.
- models/payments-billing.md: invariant 14 states the 503 and
Discourse's failed rows; invariant 15 states the guarded update.
- operator-ux-conventions.md: an error answer carries no HX- header.
- database-management.md: why writers hold only the four DML
privileges, identity columns and sequences, the qualified SQL the
migration user runs, and sqlc alias lists for set-returning functions.
- database-locks.md: rule 9, a row lock on a table the writer cannot
update is taken in a SECURITY DEFINER function.
- testing.md: privilege tests drop to console_runtime, race-only breaks
as command records, the race run's -p 1, synctest for timer loops,
and test workers off the console's task queue.
Both archived design.md files gain the options weighed and the drafts
the approved copy replaced.