d264429298
Cutover: the old install is retired, and that changes what a rollback is
jcoffey-dev2026-09-20 01:58:34 -07:00
80972695b9
Cutover: the run, 2026-09-20 — 78 seconds, and what it found
jcoffey-dev2026-09-20 01:47:10 -07:00
7c4add8425
The schema is cached per-origin and privately, not publicly for a year
jcoffey-dev2026-09-20 01:43:15 -07:00
92d2b07c2e
record-before: ignore the bytecode cache the path import leaves
jcoffey-dev2026-09-20 00:02:06 -07:00
987ed55d06
record-before: the step 4 recording, from the server about to be replaced
jcoffey-dev2026-09-20 00:02:01 -07:00
a63839f6b0
The repository's own .github, now that it is public
jcoffey-dev2026-09-20 00:00:05 -07:00
6a53d47106
Mark the files this fork changed (AGPL section 5(a))
jcoffey-dev2026-09-19 23:47:24 -07:00
77fce247e2
Update README to remove development status
jcoffey2026-09-19 23:47:31 -07:00
0117500d85
Cutover: the sheet to follow at the terminal on the night
jcoffey-dev2026-09-19 23:08:19 -07:00
8c3450dffa
Migration: copy in two passes, and time the second one
jcoffey-dev2026-09-19 22:50:55 -07:00
7196f9dda2
Specs: when the source goes out, and who owes the offer
jcoffey-dev2026-09-19 22:50:21 -07:00
efe0b01bac
Specs: what may carry the Stalwart name, and when it stops
jcoffey-dev2026-09-19 22:49:11 -07:00
04a5a8bdc2
Specs: features 6 to 9 are built, and the table hadn't caught up
jcoffey-dev2026-09-19 22:48:56 -07:00
848bfeda4e
Migration: name the four ways this goes badly, not just that it might
jcoffey-dev2026-09-19 22:52:12 -07:00
4ce5fc6f68
Migration: say what the operator is carrying, before the tool moves anything
jcoffey-dev2026-09-19 22:48:50 -07:00
3e69b6139f
Cutover: the old install is a reference, kept until someone says otherwise
jcoffey-dev2026-09-19 22:45:09 -07:00
7c27bae4f3
Cutover: ext4, so copy in two passes and time the second one
jcoffey-dev2026-09-19 22:41:59 -07:00
bfda639d73
Cutover: the fork must not live on /opt/stalwart, which is to be removed
jcoffey-dev2026-09-19 22:36:51 -07:00
a6c7152c52
cutover-rehearsal: ignore the fixture it writes
jcoffey-dev2026-09-19 22:34:50 -07:00
daaa06a5fb
Cutover: stopping the old server is what removes the guard, so add one
jcoffey-dev2026-09-19 22:34:45 -07:00
67619f64e9
Cutover: rehearsed, and the Enterprise build can't read the fork's store
jcoffey-dev2026-09-19 22:23:10 -07:00
f338ddf57d
Specs: point a stock ihasmail at the migrated server afterwards
jcoffey-dev2026-09-19 21:36:10 -07:00
7d468ad22e
Specs: a migration tool, with rollback as a path rather than an appendix
jcoffey-dev2026-09-19 21:34:11 -07:00
92aed3df21
Cutover: side by side, with the old install left standing
jcoffey-dev2026-09-19 21:31:50 -07:00
63fe315457
Specs: ufw is in the way of the ACME test, and the rules say so
jcoffey-dev2026-09-19 21:27:32 -07:00
26759a1847
Specs: a draft runbook for the cutover
jcoffey-dev2026-09-19 21:24:25 -07:00
f646f2ec3a
Compat: all eight pass against a copy of INBUXA's data
jcoffey-dev2026-09-19 21:19:56 -07:00
bfd2784819
Compat: the copy's pending tasks aren't this run's to wait for
jcoffey-dev2026-09-19 21:17:21 -07:00
7714bca8d3
run-compat: pass the test server's logging through
jcoffey-dev2026-09-19 21:09:37 -07:00
01c5503a19
Compat: a copy's own listeners aren't ours to bind
jcoffey-dev2026-09-19 20:58:49 -07:00
1da75e986e
Compat: run them from a copy, and keep our listeners out of the way
jcoffey-dev2026-09-19 20:21:05 -07:00
d407509f59
Compat: what the recording holds, and what two of the tests now prove
jcoffey-dev2026-09-19 20:10:50 -07:00
3d28f6bff2
record-compat: tell reach apart from permission in a refusal
jcoffey-dev2026-09-19 19:52:37 -07:00
045e9f6234
record-compat: a refused section costs its file, not the run
jcoffey-dev2026-09-19 19:21:22 -07:00
7816f38c29
record-compat: check every credential before reading anything
jcoffey-dev2026-09-19 19:10:03 -07:00
fd7747ef21
Fork tooling: record what the compat tests compare against
jcoffey-dev2026-09-19 18:42:25 -07:00
2a127d6b9a
Specs: the ACME network question is open, not answered
jcoffey-dev2026-09-19 18:10:22 -07:00
261175aae5
Specs: say only what the ACME probes support
jcoffey-dev2026-09-19 18:06:10 -07:00
4336251cea
Specs: the ACME failure isn't ufw, and pebble does validate
jcoffey-dev2026-09-19 17:57:52 -07:00
8839078a2b
Compat tests: dry-run the harness, and say so when the admin can't log in
jcoffey-dev2026-09-19 17:51:42 -07:00
29d9263071
One edition: the last enterprise gates come out of shared code (SPEC 2.3)
jcoffey-dev2026-09-19 17:44:20 -07:00
dac1808bbd
Tests: retire pending-rebuild, which nothing has been gated behind for a day
jcoffey-dev2026-09-19 17:28:14 -07:00
08b3210cff
Specs: the regression after the ACME fix, 87 passed and 3 failed
jcoffey-dev2026-09-19 17:21:58 -07:00
9f444d2458
Fork tooling: the third-party code upstream carries, listed and checked
jcoffey-dev2026-09-19 16:59:36 -07:00
adfa22c817
Specs: the nine ignored suites re-run, and the STORE each one needs
jcoffey-dev2026-09-19 16:54:27 -07:00
309835be1d
ACME: post a challenge once, then poll the authorization
jcoffey-dev2026-09-19 16:28:15 -07:00
ce12659138
Specs: what a plain regression leaves failing, and why none of it is ours
jcoffey-dev2026-09-19 16:15:09 -07:00
e492b7875a
Specs: how to run the suites a plain regression doesn't reach
jcoffey-dev2026-09-19 16:14:44 -07:00
02ed679890
Tests: drop an unused import, so the tests crate builds without warnings
jcoffey-dev2026-09-19 16:14:44 -07:00
5cc28784df
SCIM: turning a domain's SCIM authority off takes effect at once (SCIM-60)
jcoffey-dev2026-09-19 16:14:38 -07:00
2f1e4bd2c7
Tests: give the fail2ban and task-manager checks room under load
jcoffey-dev2026-09-19 15:38:01 -07:00
cee4fd6bc6
Specs: how to run the eight compat tests on a copy of INBUXA's data, and the statuses of tests 10, 11, 17 to 19
jcoffey-dev2026-09-19 15:11:04 -07:00
c0377df942
Per-domain directories: a refused token counts toward the sign-in ban, and tests 10 and 18 (DIR-12, DIR-30)
jcoffey-dev2026-09-19 15:09:52 -07:00
0755fad51e
Scale-out storage: IMAP CONDSTORE raises the mark, and the two-node check (ST-7, test 11)
jcoffey-dev2026-09-19 14:59:46 -07:00
e913a22b66
Scale-out storage: read replicas on MySQL, tested (ST-10, ST-15, tests 17 to 19)
jcoffey-dev2026-09-19 14:53:31 -07:00
216bb5b711
Scale-out storage: implementation status of read replicas (ST-5 to ST-15)
jcoffey-dev2026-09-19 14:21:54 -07:00
1518c69033
Scale-out storage: PostgreSQL and MySQL read replicas (ST-5 to ST-15)
jcoffey-dev2026-09-19 14:05:59 -07:00
a635b490ec
Per-domain directories: implementation status and the compat check (DIR-1 to DIR-32, test 20)
jcoffey-dev2026-09-19 10:51:41 -07:00
0237d6fa92
Per-domain directories: the OIDC directory tests, rebuilt from the spec; SCIM's OIDC test runs (DIR-7, DIR-10, DIR-14, DIR-15, DIR-18, DIR-26, DIR-29, SCIM test 5)
jcoffey-dev2026-09-19 10:45:37 -07:00
3158277b04
Per-domain directories: changes apply on the next request, and one broken directory doesn't block reloads (DIR-17, DIR-21)
jcoffey-dev2026-09-19 10:42:33 -07:00