Compat: all eight pass against a copy of INBUXA's data

Run from a copy of the stopped server's RocksDB store. Eight green lines,
which are worth reading carefully: six carry weight, and masked_email and
undelete carry none, because there are no masked addresses and retention is
off, so they iterate an empty list. tenant_compat checked the tenant, its
quotas and its members, but not what a tenant administrator can see, which
needs a --tenant-admin recording.

ai_compat is the one that might have looked vacuous and isn't: the twelve
LLM_ tags are there with the scores that were observed.

Three things had to be fixed first, each failing all eight identically and
none about the data: listener names, privileged ports, pending tasks. The
next import's copy will bring the same three, so they are written down.

SPEC §7: cutover steps 1 to 3 are met. Step 4 remains.
This commit is contained in:
2026-09-19 21:19:56 -07:00
parent bfd2784819
commit f646f2ec3a
2 changed files with 35 additions and 1 deletions
+6
View File
@@ -539,6 +539,12 @@ before anything that could prompt that notice happens.
the domains and the accounts. It applies again the moment either feature the domains and the accounts. It applies again the moment either feature
is switched on (`compat-tests.md`). is switched on (`compat-tests.md`).
4. Cutover on the running host, with the Enterprise build kept for rollback. 4. Cutover on the running host, with the Enterprise build kept for rollback.
Steps 1 to 3 are met as of 2026-09-19: the fork builds and its suites pass
(`container-tests.md`), and all eight compat tests pass against a copy of
INBUXA's store, with the caveat that two of them have nothing to read and
the tenant administrators' own view is not yet recorded
(`compat-tests.md`). What remains is step 4.
5. Only then: public repository and announcement, with the INBUXA fork of 5. Only then: public repository and announcement, with the INBUXA fork of
ihasmail released alongside. Public ihasmail stays Stalwart-facing (§5). ihasmail released alongside. Public ihasmail stays Stalwart-facing (§5).
+29 -1
View File
@@ -1,6 +1,7 @@
# Running the compat tests against a copy of INBUXA's data # Running the compat tests against a copy of INBUXA's data
Status: 2026-09-19 (dry run below; still unrun against INBUXA data). Status: 2026-09-19. All eight run against a copy of INBUXA's data; see
"The first run".
Each feature spec has one **(compat)** acceptance test: the check that Each feature spec has one **(compat)** acceptance test: the check that
INBUXA's own data opens in inbuxa-server and reads back as it did on the INBUXA's own data opens in inbuxa-server and reads back as it did on the
@@ -200,6 +201,33 @@ That leaves one recording that carries weight, `expected.json`, and it is
made. Should either feature be switched on before the cutover, record again: made. Should either feature be switched on before the cutover, record again:
the files are a picture of the day they were taken. the files are a picture of the day they were taken.
## The first run, 2026-09-19
All eight ran against a copy of INBUXA's RocksDB store, taken from the
stopped server, with `run-compat.sh` and `john@linuxexperts.net` as the
administrator. **All eight pass.** SPEC.md §7's cutover steps 2 and 3 are
met: INBUXA's data opens in the fork and reads back as it did.
What each one actually proved, which is not the same as eight green lines:
| Test | What the pass means |
|---|---|
| `tenant_compat` | The tenant, its quotas and its members read back unchanged. `tenantAdmins` was empty, so **what each tenant administrator can see is still unchecked** |
| `branding_compat` | Every domain's logo answered, and the stored templates read back |
| `ai_compat` | The twelve `LLM_*` tags are there with the scores observed: real, not vacuous |
| `monitoring_compat` | Retention and stores read back; old history in the stripped encoding was skipped rather than erroring, and went after one purge |
| `scim_compat`, `per_domain_directory_compat` | Confirm INBUXA still uses neither feature |
| `masked_email_compat`, `undelete_compat` | **Nothing.** No masked addresses, retention off: they iterate an empty list |
So six of the eight carry weight today, and one of those six is only
half-checked until a tenant administrator's view is recorded
(`--tenant-admin`, "Recording the three files").
Three things had to be fixed before any of this ran, each of which failed
every test identically and none of which was about the data: the copy's
listener names, its privileged ports, and its pending tasks. They are
described below, because the next import's copy will bring the same three.
## What a failure means ## What a failure means
- `tenant_compat`, `branding_compat`, `ai_compat`: the fork reads that data - `tenant_compat`, `branding_compat`, `ai_compat`: the fork reads that data