Skip to content

Commit 710ebeb

Browse files
lesnik512claude
andcommitted
fix(brand): inset _cyl's cream rim so no mark paints cream on transparent
_cyl stroked its cream rim centred on the top cap's ellipse, but that ellipse's upper arc is the cylinder's silhouette — so half the 0.8-wide stroke fell outside the gold. Invisible on cream, a stray white hairline on dark. Shrink the rim's radii by half the stroke width so the whole stroke lands inside the cap. This was the last exemption in the cream-on-transparent guard: db-retry and faststream-outbox were strict xfails. The guard now covers all 26 marks with no exemptions, and is renamed test_no_cream_on_transparent since it is no longer scoped to the new marks. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent a85bf32 commit 710ebeb

18 files changed

Lines changed: 35 additions & 46 deletions

architecture/brand-marks.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,12 @@ renders on a transparent background, so `CREAM` is only ever a knockout painted
2525
ON TOP OF a `GOLD` shape, never standalone ink directly on the background:
2626
standalone cream is invisible on light surfaces (cream-on-cream) but shows as
2727
stray bright-white ink once the same `mark.svg` sits on a dark one, e.g.
28-
`lockup-dark.svg`'s README banner half. Enforced by
29-
`tests/test_projects.py::test_new_marks_have_no_cream_on_transparent`, which
30-
rasters every manifest repo's mark with its cream knockouts stripped and fails
31-
on any pixel that turns transparent instead of staying gold-backed. The two
28+
`lockup-dark.svg`'s README banner half. Enforced for **every** manifest repo, with
29+
no exemptions, by `tests/test_projects.py::test_no_cream_on_transparent`, which
30+
rasters each mark with its cream knockouts stripped and fails on any pixel that
31+
turns transparent instead of staying gold-backed. `_cyl`'s cream rim is inset by
32+
half its stroke width for exactly this reason — centred on the top cap's ellipse,
33+
half the stroke would have fallen outside the cylinder's silhouette. The two
3234
project templates reuse the org chevron. Two marks are built from a partner's
3335
literal logo path, recoloured: `modern-di-faststream` (FastStream's) and
3436
`modern-di-flask` (Flask's horn — the Flask Artwork License permits the logo

brand/build/symbols.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,20 @@ def _cyl(
2323
) -> str:
2424
"""Database cylinder centred on (cx,cy)."""
2525
rx = 0.5 * r * w
26+
ry = 0.16 * r
27+
top = cy - h / 2 * r
28+
# The top cap's upper arc IS the cylinder's silhouette, so a rim stroke
29+
# centred on that ellipse would put half its width outside the gold —
30+
# invisible on cream, but white ink on dark. Shrink the rim's radii by half
31+
# the stroke width (plus a hair of margin) so the whole stroke lands inside.
32+
rim_w = 0.8
33+
inset = rim_w / 2 + 0.1
2634
return (
27-
f'<ellipse cx="{cx}" cy="{cy - h / 2 * r:.1f}" rx="{rx:.1f}" ry="{0.16 * r:.1f}" fill="{fill}"/>'
28-
f'<rect x="{cx - rx:.1f}" y="{cy - h / 2 * r:.1f}" width="{2 * rx:.1f}" height="{h * r:.1f}" fill="{fill}"/>'
29-
f'<ellipse cx="{cx}" cy="{cy + h / 2 * r:.1f}" rx="{rx:.1f}" ry="{0.16 * r:.1f}" fill="{fill}"/>'
30-
f'<ellipse cx="{cx}" cy="{cy - h / 2 * r:.1f}" rx="{rx:.1f}" ry="{0.16 * r:.1f}" '
31-
f'fill="none" stroke="{CREAM}" stroke-width="0.8"/>'
35+
f'<ellipse cx="{cx}" cy="{top:.1f}" rx="{rx:.1f}" ry="{ry:.1f}" fill="{fill}"/>'
36+
f'<rect x="{cx - rx:.1f}" y="{top:.1f}" width="{2 * rx:.1f}" height="{h * r:.1f}" fill="{fill}"/>'
37+
f'<ellipse cx="{cx}" cy="{cy + h / 2 * r:.1f}" rx="{rx:.1f}" ry="{ry:.1f}" fill="{fill}"/>'
38+
f'<ellipse cx="{cx}" cy="{top:.1f}" rx="{rx - inset:.1f}" ry="{ry - inset:.1f}" '
39+
f'fill="none" stroke="{CREAM}" stroke-width="{rim_w}"/>'
3240
)
3341

3442

Lines changed: 1 addition & 1 deletion
Loading
Lines changed: 1 addition & 1 deletion
Loading

brand/projects/db-retry/lockup.png

-10 Bytes
Loading
37 Bytes
Loading
-21 Bytes
Loading

brand/projects/db-retry/mark.svg

Lines changed: 1 addition & 1 deletion
Loading

0 commit comments

Comments
 (0)