Task — engineering-spec@1

"iOS icon alpha flatten — ASC 90717 hotfix: 1024x1024 marketing icon must carry no alpha channel"

doneTASK-IMP-077
module improvement · class product · priority p0 · created 2026-07-13 · shipped 2026-07-13
depends on none · blocks none

§1

  1. The repo iOS marketing icon MUST be alpha-free RGB 1024x1024 (flattened onto #fff, the brand adaptive background). DONE - PIL: mode RGB, size (1024,1024).
  2. TASK-IMP-073's iOS byte-identity guard MUST become a derived-asset guard: present + 1024x1024 (sips) + hasAlpha: no - byte-identity is impossible once the copy is legitimately flattened, and the submission invariant (no alpha) is what ASC actually enforces. Android's 15-file hash guard is untouched (adaptive icons legitimately use alpha).
  3. RELEASE.md's re-scaffold runbook MUST carry the copy-then-flatten step so a future recopy cannot reintroduce the channel.

Lean profile: one asset transform + one guard amendment, defect and fix both machine-verified in-session; ASC acceptance is proven by the next tag run.

§5 (run 2026-07-13)

§9

§10

FailureDetectionRecovery
future recopy reintroduces alphaios guard hasAlpha check fails pre-uploadrunbook flatten step
flatten color wrong vs brandhuman review of the store listing previewre-flatten with corrected color
sips output format drifts on future runnersguard fails loud (grep miss = error path)adjust parse

End of TASK-IMP-077.

Audit

  • ISS-001: draft flattened without a grounded color choice - resolved: #fff sourced from ic_launcher_background.xml (the brand's own adaptive background), recorded in source_pages.
  • ISS-002: draft kept byte-identity for iOS alongside the flatten (self-contradiction; guard would always fail) - resolved: guard reframed to the real submission invariants (present/1024/no-alpha), Android hash guard untouched. Score = 10/10.