## What Problem This Solves
The Control UI still reads top-level session selections and rewrites durable shared-token settings produced before the supported July 2026 upgrade window.
## User Impact
Upgrades from pre-July-2026 versions are no longer migrated: top-level remembered session selections and durable-token settings cleanup. Users with those unsupported selections can select their session again; conversations remain on the Gateway. Current shared credentials stay in session storage and are never restored from durable settings.
## Why This Change Was Made
This implements the maintainer's July-and-later migration policy at the settings owner. The scalar session writer was replaced by `sessionsByGateway` in d37e3d582f, first shipped in v2026.3.22 (March 23); v2026.3.13-1 was the last prior tagged writer. Durable token writes were removed by 10d0e3f3ca, first shipped in v2026.3.7 (March 8); v2026.3.2 still wrote them.
Actual v2026.7.1-beta.1, v2026.7.1, and v2026.7.35 source writes `sessionsByGateway` and omits durable tokens. The July sidebar-pins upgrader, device-token import, and chat-outbox/group migrations remain: supported releases still produced those shapes. The September-published v2026.7.35 still writes outbox v1 and browser-local groups, so main's earlier cutovers are insufficient evidence for deleting them.
Net production reduction: 9 lines. The obsolete migration test is removed, and the existing settings-upgrade test now exercises representative July beta/stable persisted shapes. No protocol, schema, SDK, or rendered appearance changes.
## Evidence
- Isolated Codex AutoReview: no actionable P0–P2 findings.
- Blacksmith Testbox, pinned source and edited-file hashes: settings and preference suites passed, 33 tests, 1.60 s total Vitest duration; July beta/stable fixtures load, migrate pinned routes where present, and round-trip.
- Both import-cycle checks: 0 cycles.
- `check-changed` against pinned base 04fbf17d6c: passed, including UI types, eight affected test-type graphs, lint, i18n, and dead-export checks.
- Doctor legacy-config and migration suites: both passed (32.03 s across the two Vitest shards, including cold worker preparation).
- `git diff --check`: clean.
The repository wrapper's source staging hit local ENOSPC before upload. Native Blacksmith sync on the same owned lease verified the exact base and file hashes and ran the proof remotely. An initial changed-check invocation used the remote's newer `origin/main` and included inverse sibling changes; the corrected invocation pins this branch's actual base.
Hosted CI on head `7366eaed49`: [checks-ui (1/3)](https://github.com/openclaw/openclaw/actions/runs/36940168750/job/110629901361) passed 8,023 tests but failed `UsagePage detail requests > releases a loaded overview when its Gateway identity is replaced`: `expected OverviewPayload to be undefined`. Fail-fast cancelled the remaining run. The same failure is independently verified on unrelated PR #162874's still-current head `dda3f82589`, [run 36898732505](https://github.com/openclaw/openclaw/actions/runs/36898732505/job/110492893649); its Usage test and page blobs match this head. Existing repair #163018 owns it; this PR does not duplicate that fix.
The failing synthetic lifecycle does not call settings readers and does not mount its dormant sidebar loader. A conservative graph including that dynamic loader still reaches settings, so no unconditional import-disjointness or admin exception is claimed. Hosted CI remains failed/pending acceptance, not green.