Files
ESP32_Serial_Swiss_Army_Knife/docs/icon_provenance.md
T
Commander1024 cdc4d4a8df Add Phase 9 validation and advisory review
Record the finite dependency search, Wi-Fi maintenance blocker, and
pinned
icon provenance. Add bounded host orchestration and fixture coverage,
and
update release documentation with current evidence.
2026-09-16 16:26:46 +02:00

118 lines
7.1 KiB
Markdown

# Exact USB and Wi-Fi icon provenance
Reviewed 2026-09-16. This record resolves the identity of the **two retained
preferred-form SVG sources at Material Design Icons 7.4.47**, not all project
artwork, historical authorship of manual edits, or release compliance.
No firmware, mockup, web asset, or generated asset was changed or regenerated.
## Official pinned source and licenses
Official SVG distribution: <https://github.com/Templarian/MaterialDesign-SVG>.
Its upstream README identifies this as the production SVG distribution and
points to the main MaterialDesign repository for issues. The main repository
URL with tag `v7.4.47` returned 404; it is not used as version evidence.
- Distribution tag: `v7.4.47`.
- Annotated tag object: `5edde266e281d26a03dcfa89fb651183cbab0f2e`.
- Peeled commit: `9e04201d4557e729822fb57f62a316c3dea1d4a8`.
- Upstream `package.json`: `@mdi/svg`, version `7.4.47`, license `Apache-2.0`.
- Tag timestamp: `2023-12-26T23:33:26Z`; GitHub reports it **unsigned**.
HTTPS retrieval and content pins are evidence, not signature authentication.
Unmodified upstream SVGs, LICENSE, README, package metadata, complete `meta.json`,
and GitHub tag/tree responses are retained in
[`third_party/material-design-icons/upstream-7.4.47/`](../third_party/material-design-icons/upstream-7.4.47/).
`downloads.json` records exact retrieval URLs, sizes and SHA-256 hashes. Raw
source URLs use the immutable commit, not a moving branch or tag. API responses
are retained as fetched; future API formatting is not assumed stable.
The full metadata/tree files intentionally preserve the evidence behind the
per-icon selections and absence check, rather than only project-written claims.
The existing `third_party/material-design-icons/LICENSE` is byte-identical to
the pinned upstream Pictogrammers Free License summary and remains unchanged.
It distinguishes icon Apache-2.0/respective grants from code MIT terms. The
package declares Apache-2.0; the two metadata entries contain authors but no
per-icon alternate grant. This is the scoped upstream licensing evidence for
these two SVGs, not a blanket conclusion about every icon in the collection.
`upstream-7.4.47/Apache-2.0.txt` supplies the **full Apache-2.0 text**, fetched
from <https://www.apache.org/licenses/LICENSE-2.0.txt> (SHA-256
`cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30`).
It is a separately sourced license text, not a file falsely attributed to the
upstream icon tree. The retained non-truncated recursive tree has no path
containing `notice` (case-insensitive); no upstream NOTICE was found in this
pinned distribution and none is fabricated here. This does not audit unrelated
repositories or assert that a NOTICE is mandatory for every Apache work.
| Icon | Metadata attribution | Stable icon ID | First-version metadata | SVG SHA-256 |
| --- | --- | --- | --- | --- |
| `usb` | Google | `25033E0B-3AD4-414D-9972-559F2690FC1D` | `1.5.54` | `c9918e9a983fbd788378ca4c524e7a07a0d5eedcaeff73d19814e6f6ae221f22` |
| `wifi-strength-4` | Simran | `41B86B22-7245-4A97-9BAA-3E9EBD44CEB0` | `2.3.50` | `89d14daf863076b0f73c76d913212875f2e9bcddaaf49c9e5d1825e0b2dc2d5f` |
The metadata `version` fields describe icon introduction versions, **not** a
contradiction of package 7.4.47. Matching these sources to that release does not
prove they originated in that release or were originally downloaded from it.
## Exact comparison to project derivatives
1. **Retained SVGs:** `third_party/material-design-icons/usb.svg` (403 bytes)
and `wifi-strength-4.svg` (219 bytes) are each byte-for-byte identical to the
pinned upstream originals, including every path command, coordinate, arc
flag and viewBox. Each has one path, `viewBox="0 0 24 24"`, and no transform
on the root or path. No coordinate rounding, normalization or visual-match
inference was used. The files remain unchanged.
2. **USB mockup:** `docs/phase7c_icon_mockup.svg` symbol `usb` has exactly the
upstream `d` string and 24-by-24 viewBox, without symbol/path transforms.
Its two direct use definitions are `(x,y,width,height)=(150,4,30,30)` inside
reusable `status`, and `(8,72,30,30)` on the broker page. These apply uniform
scale `30/24 = 1.25` and the stated translations. Status is instantiated in
page groups translated by `(62,98)`, `(592,98)`, `(62,438)`, `(592,438)`;
the broker use is in `(62,438)`. Thus status USB geometry maps as
`(X,Y)=(pageX+150+1.25*x, pageY+4+1.25*y)` and broker USB as
`(X,Y)=(62+8+1.25*x,438+72+1.25*y)`. CSS adds presentation fill/stroke;
this is path geometry equivalence, not pixel/rendering equivalence.
3. **Wi-Fi mockup:** symbol `wifi` in that same mockup uses a different,
segmented path starting `M1 8q11-9 22 0`. It is **not** an exact copy of
`wifi-strength-4` (which starts `M12,3C7.79,3`). No exact affine derivation
or upstream provenance for that distinct mockup path is established here.
4. **Actual firmware:** `src/local_status_ui.c` explicitly calls the USB mask
hand-rasterized and the Wi-Fi masks compact segmented adaptations. The exact
editable row bytes are:
```text
s_icon_usb: 18 3c 18 5a 3e 18 3c 18
s_icon_wifi_full: 7e 81 3c 42 18 24 00 18
s_icon_wifi_three: 00 00 3c 42 18 24 00 18
s_icon_wifi_two: 00 00 00 00 18 24 00 18
s_icon_wifi_one: 00 00 00 00 00 00 00 18
```
These manual 8-by-8 masks are not SVG coordinates or exact scaled vector
paths. No deterministic rasterizer, sampling/threshold rule or edit history
establishes an exact upstream-to-mask transform. Their declared design
provenance is supported by the now-verified retained sources, but **exact
mechanical derivation of the firmware masks remains unresolved**. Preserve
the C arrays as the preferred editable form of those manual modifications,
together with both original SVGs; do not substitute an invented generator.
The existing source comment is the adaptation notice. This dated record
documents the inspected modifications; it does not invent their edit date.
## Offline checks and release boundary
`python3 tests/release_notices/run.py` verifies the pinned source bytes and Git
blob identities, version/author metadata, catalog inclusion, exact SVG geometry,
USB mockup placement/ancestry, distinct Wi-Fi mockup path, and current manual
mask bytes. Negative checks reject coordinate and transform changes. Tests do
not regenerate artwork or claim raster equivalence.
The notice catalog retains all previous inputs and adds the two existing SVGs,
these source originals, licensing/metadata evidence and this record. The bundle
is still **not corresponding source or release clearance**. Firmware C arrays
and the full mockup remain in the project, not copied into this bounded notice
bundle; include them in a separately reviewed corresponding-source delivery
where required. Radio-blob/source-exception questions, wolfSSH packaging,
recipient notice/source delivery and other release gates remain open.
Older global inventory/packaging/memory documents describe the pre-verification
state and counts. They were intentionally not edited in this scoped task;
this record and the current catalog provide the narrower updated evidence.