max / alloy
- Co-Authored-By
- Claude Opus 5 (1M context) <noreply@anthropic.com>
1 file changed,
+33 insertions,
-8 deletions
| @@ -2002,15 +2002,40 @@ | |||
| 2002 | 2002 | # answers "Noto Sans" while the same query under the skeleton answers "Atkinson | |
| 2003 | 2003 | # Hyperlegible". A guard written without it would have asserted the base's opinion | |
| 2004 | 2004 | # and passed while claiming to check Alloy's. | |
| 2005 | + | # | |
| 2006 | + | # Conditional since 2026-08-03, for the reason the skel-night guard above it | |
| 2007 | + | # is: the coverage metapackages are installed in the client-only block, since | |
| 2008 | + | # they are there for the browser and a headless box has none, while this test | |
| 2009 | + | # was written before the split and asserts them on both. `PROFILE=server` | |
| 2010 | + | # failed here on the first server build. | |
| 2011 | + | # | |
| 2012 | + | # The server branch is not a skip. It asserts the same claim from the other | |
| 2013 | + | # side — that the coverage really is client-only — plus the two that hold | |
| 2014 | + | # everywhere: Alloy's own faces are installed, since the font layers are | |
| 2015 | + | # deliberately unconditional, and no emoji font arrived. `fc-match` is not | |
| 2016 | + | # asked on server: the prune takes etc/skel/.config/fontconfig with the rest of | |
| 2017 | + | # the skeleton, so there are no Alloy aliases left to resolve and the answer | |
| 2018 | + | # would be the base's opinion, which is the exact mistake the HOME=/etc/skel | |
| 2019 | + | # note above warns about. | |
| 2005 | 2020 | RUN set -eux; \ | |
| 2006 | - | for lang in ja zh-cn zh-tw ko ar he hi th bn ta; do \ | |
| 2007 | - | [ "$(fc-list ":lang=$lang" family | wc -l)" -ge 1 ] \ | |
| 2008 | - | || { echo "no font covers '$lang'; every page in that script renders as missing glyphs" >&2; exit 1; }; \ | |
| 2009 | - | done; \ | |
| 2010 | - | HOME=/etc/skel fc-match sans-serif | grep -q 'Atkinson Hyperlegible' \ | |
| 2011 | - | || { echo "sans-serif is no longer Atkinson; the added coverage outranked Alloy's own pick" >&2; exit 1; }; \ | |
| 2012 | - | HOME=/etc/skel fc-match monospace | grep -q 'IosevkaTerm Nerd Font Mono' \ | |
| 2013 | - | || { echo "monospace is no longer IosevkaTerm; a cell grid would get mismeasured icons" >&2; exit 1; }; \ | |
| 2021 | + | if [ "$PROFILE" = client ]; then \ | |
| 2022 | + | for lang in ja zh-cn zh-tw ko ar he hi th bn ta; do \ | |
| 2023 | + | [ "$(fc-list ":lang=$lang" family | wc -l)" -ge 1 ] \ | |
| 2024 | + | || { echo "no font covers '$lang'; every page in that script renders as missing glyphs" >&2; exit 1; }; \ | |
| 2025 | + | done; \ | |
| 2026 | + | HOME=/etc/skel fc-match sans-serif | grep -q 'Atkinson Hyperlegible' \ | |
| 2027 | + | || { echo "sans-serif is no longer Atkinson; the added coverage outranked Alloy's own pick" >&2; exit 1; }; \ | |
| 2028 | + | HOME=/etc/skel fc-match monospace | grep -q 'IosevkaTerm Nerd Font Mono' \ | |
| 2029 | + | || { echo "monospace is no longer IosevkaTerm; a cell grid would get mismeasured icons" >&2; exit 1; }; \ | |
| 2030 | + | else \ | |
| 2031 | + | [ "$(fc-list ':lang=ja' family | wc -l)" -eq 0 ] \ | |
| 2032 | + | || { echo "profile=server carries the browser's script coverage; it ships no browser" >&2; exit 1; }; \ | |
| 2033 | + | fc-list family | grep -q 'IosevkaTerm Nerd Font Mono' \ | |
| 2034 | + | || { echo "IosevkaTerm is missing; the font layers are unconditional and this profile has a console" >&2; exit 1; }; \ | |
| 2035 | + | fc-list family | grep -q 'Atkinson Hyperlegible' \ | |
| 2036 | + | || { echo "Atkinson is missing; the font layers are unconditional" >&2; exit 1; }; \ | |
| 2037 | + | echo "fonts: Alloy's own faces present, the browser's coverage correctly absent"; \ | |
| 2038 | + | fi; \ | |
| 2014 | 2039 | [ "$(fc-list ':charset=1F600' family | wc -l)" -eq 0 ] \ | |
| 2015 | 2040 | || { echo "an emoji font arrived; docs/STACK.md says none is shipped, so update the decision or drop the font" >&2; exit 1; } | |
| 2016 | 2041 |