# Oficina icon integration — 2026-09-12

The approved set is wired into browser favicons (SVG and PNG), Apple touch
icons and visible app branding for Oficina Home, Docs, Sheets, Slides,
Calendar, Calls and Memoria. Home's six app rows have the matching icons;
Mail and Files keep their existing entries because no artwork was approved
for them. Product names remain visible and the adjacent images have empty
alt text. All assets are served locally, without JavaScript or a CDN.

## Source and branches

The maintained source is Estilo's `brand/` directory. Its `distribute.py`
copies artwork, shared CSS and the license into each application and
supports `--check` to detect drift. This is asset distribution, with no
new Go module dependency or application build step.

All seven sibling icon branches passed remote CI and independent source and
canary review, then merged into main on 2026-09-12:

| Repository | Merge commit |
| --- | --- |
| estilo | 35e3bf4 |
| home | f1caf3a |
| docs | d5ff04e |
| sheets | fa8b940 |
| slides | 2ebd8f6 |
| calendar | 9c44bc1 |
| memoria | aab25c0 |

Production rollout uses those merged sources. Home's canonical domain still
uses its legacy page; the signed-in app listing is present on the paired Home
preview deployment. Changing Home's identity/directory topology is separate
from deploying these assets.

Calls' icons ship with `codex/iphone-and-mirrored-preview`, including the Mac
Dock/Finder resources, iPhone asset catalog and packaged Lucide licenses.
The Mac and signed iPhone builds are installed locally. See
`native/VERIFICATION.md` for native test coverage and acceptance limits.

## Verification

- Asset distributor `--check` passes for all seven consumers.
- Actual server-rendered HTML and served asset bytes were captured from
  test fixtures and rendered in Chromium at 1280 and 320 px with JavaScript
  disabled. All branding images loaded, with no horizontal overflow or
  missing requests. These are local visual checks, not deployed-canary
  acceptance. Evidence: `/private/tmp/oficina-icons-evidence/<app>/`.
- Calls, Calendar, Slides and Memoria `make ci` passed; Estilo `make test`
  passed. Calls and Calendar's real-browser gates passed.
- Docs' Go packages passed after adjusting the existing label test for the
  decorative image. Its release test needs GNU realpath on PATH and a short
  TMPDIR for macOS Unix-socket limits; it passed with both supplied.
- Sheets' default gate initially used an incompatible installed migration
  CLI. The app-pinned v0.23.0 CLI confirms its schema is unchanged; Go and
  race tests passed with the correct CLI supplied.
- Home's vet/build/Go tests and applicable race tests passed. Its full
  `make test` hits a pre-existing macOS limitation: the race target names
  `internal/provisioner`, whose sources are Linux-only.
- Independent review: inherited GPT-6 Astra. The reviewer identified Mac
  bundle/Finder resources and native license packaging; all findings were
  corrected and re-reviewed with no remaining concrete source defects.
- Reviewer-selected Home test mutations (wrong SVG MIME and removal of the
  directory's asset mount) both failed as intended and were restored.
- Mac app builds and its signature, icon files, metadata and license verify.
  The iOS 26.5 platform was installed, and the signed device build and simulator
  authentication/media tests pass.
- Docs and Slides' full local Rust/JS gates cannot start without rustup and
  the wasm target. Their pushed branches run the full gates in remote CI.

All seven remote branch CI runs passed before merge. Deployed canaries reported
the expected process versions and served byte-identical artwork.
