docs: record Phase 0 and Phase 2 of the profiles pull

Phase 0 needed one thing this plan did not predict in detail: the
worktree's library checkout sat at 01489b8, an older master whose object
store did not even hold the pinned 84cc44c, while its nested chain was
already at the pinned four. One fetch from the main checkout's submodule
and a detached checkout made the tree clean. The rewrite was rebuilt from
the fork point and produced the same forty-nine rewritten commits as the
dry run, hash for hash: filter-branch with the normaliser is deterministic
for the same input, so the dry run's numbers are the run's numbers rather
than an estimate of them. Pushing the removal to origin/mantra is the
user's step and is recorded as still open.

Phase 2 landed a5ff2641 and 3008137e as 44324c90 and d957ee8d, both clean
picks. The residual between the trees is 136 files before and after --
the dry run's 135 plus this document -- and no file's residual moved.
Both compilers clean, jvmTest 826 -> 837, testDebugUnitTest 413, every
audit budget met, and nothing under composeApp/schemas/ changed after a
full build. The release note the phase owes is written out in one line,
since it is the one downgrade hazard in the pull.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Kgothatso Ngako
2026-09-13 15:48:55 +02:00
parent d957ee8de5
commit d6d87ed208

View File

@@ -332,6 +332,15 @@ Nothing from Curare lands. Two things to settle first:
Exit: `git status` clean in the scratch worktree; `origin/mantra` at `776455ec` or later.
**Done 2026-09-13**, on the branch that carries this plan (`5f2414dc`, itself on
`776455ec`): the worktree's library was at `01489b8` and its nested chain already at the
pinned four, so one fetch from the main checkout's submodule and a detached checkout of
`84cc44c` made the tree clean. The rewrite was rebuilt from `ba26c0b1` in 104 s and
produced the same forty-nine rewritten commits as the dry run, hash for hash — the
normaliser and `filter-branch` are deterministic given the same input, which makes the
dry run's numbers the run's numbers. Item 1 is still the user's: `origin/mantra` was at
`0fa807a6` when this landed, and the removal goes up with the pull.
### Phase 1 — the dry run
**Run on 2026-09-13, against `curated/curated` at `29027f2b`, on a scratch worktree of
@@ -383,6 +392,16 @@ Exit: a device with a seed lists once, from the credential, with the node's key
cross-check; `SeedCredentialsJvmTest` and the rewritten halves of `IdentityWriterJvmTest`
and `StoredIdentityJvmTest` green; release note drafted.
**Built 2026-09-13**, `44324c90` and `d957ee8d`, both clean picks. Exactness: the
residual is 136 files before and after (the dry run's 135 plus this document), nothing
moved. Both compilers clean; `jvmTest` 826 → 837 (the eleven are `SeedCredentialsJvmTest`
and the rewritten writer and listing tests); `testDebugUnitTest` 413; audit all budgets
met; nothing under `composeApp/schemas/` changed, as expected of a phase with no
migration. The release note this phase owes, in one line: *the first launch after this
build writes a credential for every recovery phrase on the device; going back to an
older build afterwards lists each such profile twice until the next upgrade, and loses
nothing.*
### Phase 3 — the switch, the precedence, the switcher, the entrances
`9b3a1927`, `00fc9969`, `25464595`, `2f420230`. Upstream ships 2 with 3 and 4 with 5;