mirror of
https://github.com/Nutlope/hallmark.git
synced 2026-08-14 12:35:33 +02:00
Every build now derives its own visual world. Silence used to route to the catalog; it routes to the ritual instead, and the 24 themes become a fast path you ask for by name, by --fast, by an existing design.md, or by component scope. custom-theme.md is promoted and renamed to direction.md, trimmed from 336 lines to 258, and the draw runs on every build rather than on a branch that almost never fired. Nine themes prescribed a display face that is a training-data default, one of them (Source Serif, on Field) already on our own ban list. All nine are re-faced: Specimen to Bodoni Moda, Studio to Erode, Atelier to Sentient, Newsprint to Zilla Slab over Spectral, Sport to Saira Condensed, Editorial to Bricolage Grotesque over EB Garamond, Cobalt to Familjen Grotesk, Hum to Chillax, Field to Literata. Atelier moving off a Didone also settles the Specimen collision the rejection table had been arbitrating by hand. The catalog keeps the saturated faces but now says plainly that they are the first answer, and treats them the way R.2 treats any spent default. Repairs the flip exposed. Gate 57 tested for the presence of a catalog name, so a derived build stamped theme: custom and sailed past the exact failure the gate exists to catch; it now tests the absence of studied-DNA. macrostructures.md still ordered you to pick a shape before writing code. Colour posture was scoped to custom builds only. Two gate exceptions in the playful genre were scoped to a theme name that a derived build cannot claim, and are now scoped to the declared property. The tier map had a worse bug than any of those. Thirteen gates carry a Floor clause and a Reflex clause under one number, and the linter held one tier per number, so six Floor clauses were quietly waivable and seven Reflex clauses were quietly unwaivable. tierOf() now resolves the exact clause first, and gates 7, 24, 38a, 47 and 55 emit the clause they actually found. Gate 47 was also reporting WARN for a Floor violation that reads "fail, always". That surfaced real defects in the corpus: seven italic emphasis words inside roman headlines, the top AI tell, sitting in our own showcase pages. They are now roman accent spans. Two improvised absolutes in the contact sheet use the token that was already declared beside them. The study verb's output page had six hand-written numerals above headings, missed by the eyebrow sweep; the list is a real ol with a counter now. Corpus: 56 findings down to 41, zero gate 54, Floor enforced honestly. Read-set cost of the flip: +303 lines a run (+19.3%), down from +400 (+25.4%). That is short of the +200 target and I am not closing the gap by gutting the palette construction or the font guidance, which is where the remaining weight sits and what makes a derived run worth taking.
61 lines
2.5 KiB
HTML
61 lines
2.5 KiB
HTML
<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
<title>Coelho Studio — product design for early-stage Lisbon companies</title>
|
||
<meta name="description" content="A small product-design studio in Lisbon. Three people, six current projects, mostly working with early-stage companies." />
|
||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;1,9..144,400;1,9..144,500&family=Geist:wght@400;500&display=swap" />
|
||
<link rel="stylesheet" href="output.css" />
|
||
</head>
|
||
<body>
|
||
<main class="page">
|
||
<header class="masthead">
|
||
<h1 class="masthead__brand">Coelho<span class="masthead__brand-em">,</span></h1>
|
||
<p class="masthead__sub">Product design · Lisbon · est. 2024 · three of us · six projects this year</p>
|
||
</header>
|
||
|
||
<ol class="works">
|
||
<li class="work">
|
||
<h2 class="work__name">Tide</h2>
|
||
<p class="work__desc">Indie-podcast hosting platform · brand & product design · 2024 — present</p>
|
||
</li>
|
||
|
||
<li class="work work--active">
|
||
<h2 class="work__name">Maple Street Bread</h2>
|
||
<p class="work__desc">A small artisan bakery's identity, signage, and packaging · 2025 · active</p>
|
||
</li>
|
||
|
||
<li class="work">
|
||
<h2 class="work__name">Foundry</h2>
|
||
<p class="work__desc">SOC 2 / ISO 27001 compliance SaaS · brand, marketing site, in-app patterns · 2025</p>
|
||
</li>
|
||
|
||
<li class="work">
|
||
<h2 class="work__name">Meridian</h2>
|
||
<p class="work__desc">Environmental-products studio · manifesto site · 2025</p>
|
||
</li>
|
||
|
||
<li class="work">
|
||
<h2 class="work__name">Cohort</h2>
|
||
<p class="work__desc">Cohort-based courses platform · brand & product · 2024–2025</p>
|
||
</li>
|
||
|
||
<li class="work">
|
||
<h2 class="work__name">Tracejam</h2>
|
||
<p class="work__desc">Distributed-tracing SaaS · brand, landing page, in-app dashboard · 2024</p>
|
||
</li>
|
||
</ol>
|
||
|
||
<footer class="colophon">
|
||
<span class="colophon__brand">Coelho</span>
|
||
<span>Lisbon · 2026</span>
|
||
<span><a href="mailto:hello@coelho.studio">hello@coelho.studio</a></span>
|
||
<span><a href="#">cv</a> · <a href="#">notes</a> · <a href="#">case studies</a></span>
|
||
</footer>
|
||
</main>
|
||
</body>
|
||
</html>
|