## What Problem This Solves
The Control UI still imports a browser-wide scalar avatar override and assigns it to the first agent that loads it. That storage shape stopped shipping before the supported July 2026 upgrade window.
## User Impact
Upgrades from pre-July-2026 versions are no longer migrated: browser-wide scalar assistant-avatar overrides. Users with that unsupported setting can set each agent's avatar again. July and later per-agent avatar maps keep their existing normalization and loading behavior; supported rendered appearance is unchanged.
## Why This Change Was Made
Commit c65aa1d2a6 introduced the scalar writer. Actual v2026.6.8, published June 16, still writes it. Commit 4aba273939 replaced it with an `avatars` map, verified in v2026.6.9, published June 21. The July beta, June extended-stable v2026.6.33/v2026.6.35, v2026.7.35, and v2026.8.34 all write maps. The alpha tag alone was not treated as publication evidence.
Remove the scalar fields, first-agent adoption branch, and migration-only writer. Keep the existing per-agent map owner and its callers. Net production reduction: 23 lines. No protocol, schema, SDK, or renderer changes.
## Evidence
- Blacksmith Testbox with pinned base 1191e0f976 and matching source hashes: the new July-map storage-boundary test passed (1 ms test time; 1.97 s command wall). It loads independent overrides for two agents and preserves the serialized storage value.
- Existing identity normalization and chat-state caller suites: 161 tests passed, 5.20 s wall.
- Both import-cycle checks: 0.
- `check-changed` passed with an explicit success marker and exit 0 (243.83 s). The first native command payload had a trailing-newline wrapper error after checks; a trimmed check-only replay reconciled its exit status without repeating focused tests or cycle checks.
- Formatting and `git diff --check`: passed.
- Shared Doctor coverage for this lane passed on the UI and runtime candidates; this patch does not touch Doctor or its imports.
- Independent isolated Codex review through P2: scoped-clean. The reviewed patch rebased onto fresh main without changes.
- Rebased head `1cab22b809cbedd751d0ec823eb7f9cbc6629ce2`: both cycle checks again reported 0, and all 162 focused tests passed (16.02 s Vitest duration; 20.21 s runner wall). Neither Blacksmith nor direct AWS supplied a runner within the remote wait budget, so the required pre-push refresh used the authorized `nice -n 15` local fallback, one command at a time. Original remote proof above remains separate evidence.
- Hosted CI on exact head `1cab22b809cbedd751d0ec823eb7f9cbc6629ce2`: [run 36960134044](https://github.com/openclaw/openclaw/actions/runs/36960134044) passed. The new July-map test passed in 1 ms in [UI shard 2/3](https://github.com/openclaw/openclaw/actions/runs/36960134044/job/110692025251). ClawSweeper completed its current-head review without actionable findings. No inherited-failure admin exception was needed.
The owned Testbox lease has been stopped. No bugs or flaky tests were changed in this patch.