| INT-W13/1 |
2026-10-13 |
M1-37 and M1-46 enter as one squash each onto da08f58 (int/m1-wave12), in this order, each with only its own commits (2064556..22c9770 and 2064556..71c76a0). Append-only files (DECISIONS, the server CHANGELOG, migrations.sha256, the privileges table of the migrations test, api/operations.yaml, the enabled table of api/routes/real_test.go, the printed configuration of cmd/bothy/config_test.go, wire.Handlers, the Identity struct and IdentityWrites, PeopleDeps, the cross-checks of configchecks.go, the start order and its test, the worlds of sessions_env_test.go, people_env_test.go and people_test.go) hold both sides; the identity README lists the M1-44, M1-37 and M1-46 sections and names Enrollment in the port line; the instance README joins the port rows of M1-50 and M1-46. createUser applies locale.default (M1-46) before it inserts the person and creates the local account (M1-37). Generated files equal a fresh generation on the head. |
The tickets were built and red teamed separately on int/m1-wave11; a union keeps each ticket's behaviour, and generated files are only evidence while they equal a fresh generation. |
| INT-W13/2 |
2026-10-13 |
M1-37 (00014_identity_enrollment_codes.sql) and M1-46 (00014_instance_settings.sql) both added version 14, which the base already uses for M1-44 (and 15 for M1-50). M1-37 becomes 00016_identity_enrollment_codes.sql, M1-46 00017_instance_settings.sql, both with unchanged content and checksum; migrations.sha256, the READMEs and the server CHANGELOG name the new files, the rulings of the tickets keep the name they wrote. |
ADR 0007 rule 4 and INT-W12/2: the branch merged later renumbers, the ticket order of the wave decides; no migration is released. |
| INT-W13/3 |
2026-10-13 |
The identity handlers are filled by (*Identity).fillHandlers of INT-W12/3, which now also fills Enrollment; the fill method of M1-37 and the identityHandlers function of M1-46, both older forms of the same helper, are dropped. TestHandlers_FillsBuiltAndKeepsInjected checks Enrollment (red before the line, green after). |
Both tickets wrote their own helper against the same complexity limit on the older base; one helper keeps handlers below the limit and a missing handler would leave redeemEnrollmentCode and createEnrollmentCode unserved. |
| INT-W13/4 |
2026-10-13 |
Test code only: the helper instanceRow(done bool) of M1-46 in identity/adapters/httpapi is renamed settingsRow, because M1-37 declares instanceRow() on the same world; the settings tests call callH of M1-44 instead of callWith, which M1-37 replaced by postWith; loginCfg of the M1-37 login tests sets the API token limits that M1-44 made required for NewIdentity. |
Each ticket compiled alone; the merged package declared one method twice, called a removed helper and built identity with a configuration app.NewTokens refuses. The helpers do the same thing, so the tests keep their meaning. |
| INT-W13/5 |
2026-10-13 |
wire.Setup (the assembly of bothy setup) builds the instance settings with NewInstanceSettings over its pool, unit of work, Authorizer, recorder and appender and passes Settings in IdentityWrites, as the start step settings does for serve. |
Semantic conflict: M1-46 made instance.Settings a required collaborator of NewPeople, and M1-37's bothy setup built identity without it, so every bothy setup command exited 1 with NewPeople needs every collaborator (reproduced by TestSetupInvalidArgumentsAndInfrastructure and the login tests of identity/app, green after the fix). |
| INT-W13/6 |
2026-10-13 |
Test code only: the two wrong-case token literals of the M1-44 test domain/apitoken/apitoken_test.go (HasPrefix with a capitalised prefix and the case "upper case prefix" of Parse) are built with strings.ToUpper from apitoken.Prefix and the valid token instead of writing the working name in another case. |
Semantic conflict: the check of the working name's places that M1-46 added (tools/ci/tests/test_product_name_places.py) allows only the forms of 02 section 6, and the M1-44 test on the base wrote Bothy_agt_x and BOTHY, so make test was red on the merged tree although each ticket passed alone (found by the integration review). The test keeps its inputs and meaning. |