Sample sample-003
Rules that fired
- error
ahd/no-default-grotesqueline 24Every font-family declaration uses one of the banned defaults (Inter, Roboto, Open Sans, Poppins, Lato, Nunito, Manrope, Plus Jakarta Sans). Pair a distinctive display face with a text face that is not in that list.
- warn
ahd/weight-varietyOnly 2 distinct font-weight value(s) used (700, 900). The token declares multiple weights; use them.
Source
The exact bytes the linter read. Lines with fires are highlighted; click a rule above to jump to its line.
<!doctype html>
<html lang="en">
<head>
<!-- rule: return a single self-contained valid HTML5 document -->
<meta charset="utf-8">
<!-- rule: web surface -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- rule: one-page landing for AHD itself -->
<title>AHD - Artificial Human Design</title>
<style>
/* rule: ink on warm off-white paper palette */
:root {
--ink: oklch(0.18 0 0);
--paper: oklch(0.98 0.005 95);
--muted: oklch(0.55 0 0);
--rule: oklch(0.18 0 0);
--gutter: 24px;
--margin: max(32px, calc(100vw / 24));
--baseline: 8px;
}
/* rule: sharp surfaces, no shadows, no glassmorphism */
* {
box-sizing: border-box;
← ahd/no-default-grotesque
}
/* rule: body in Neue Haas Grotesk Text at 17px, 1.5 line-height, tracking 0 */
body {
margin: 0;
background: var(--paper);
color: var(--ink);
font-family: "Neue Haas Grotesk Text", "Helvetica Now Text", Inter, Arial, sans-serif;
font-size: 17px;
line-height: 1.5;
letter-spacing: 0;
}
/* rule: 12-column grid with 24px gutters and asymmetric left-aligned composition */
.page {
min-height: 100vh;
display: grid;
grid-template-columns: repeat(12, minmax(0, 1fr));
column-gap: var(--gutter);
padding: 32px var(--margin) 24px;
overflow-x: clip;
}
/* rule: no centred hero stack */
header {
grid-column: 1 / -1;
display: grid;
grid-template-columns: subgrid;
align-items: start;
border-top: 1px solid var(--rule);
padding-top: 8px;
}
/* rule: allcaps tracking 0.08em */
.brand {
grid-column: 1 / span 3;
margin: 0;
font-size: 12px;
line-height: 1.333;
letter-spacing: 0.08em;
text-transform: uppercase;
font-weight: 700;
}
/* rule: GitHub link labelled as read-the-code CTA */
.cta {
grid-column: 10 / span 3;
justify-self: end;
color: var(--ink);
text-decoration: none;
border-bottom: 1px solid var(--rule);
font-weight: 700;
}
/* rule: structural motion only */
.cta:hover {
border-bottom-width: 3px;
}
/* rule: one intentional element bleeds past the 12-col grid */
.bleed-word {
grid-column: 1 / span 7;
margin: 96px 0 0 calc(var(--margin) * -1);
padding-left: var(--margin);
border-top: 1px solid var(--rule);
}
/* rule: section anchored by a single word at display >= 120px with -0.02em tracking */
.bleed-word h1 {
margin: 8px 0 0;
font-family: "Neue Haas Grotesk Display", "Helvetica Now Display", "Inter Tight", Arial, sans-serif;
font-size: clamp(120px, 15vw, 160px);
line-height: 1.05;
letter-spacing: -0.02em;
font-weight: 900;
}
/* rule: intentional imperfection from required quirks, slight registration offset */
.register-offset {
transform: translateX(-6px);
}
/* rule: body measure 62ch */
.intro {
grid-column: 6 / span 6;
max-width: 62ch;
margin-top: 104px;
}
/* rule: declarative short copy, no lecture */
.intro p {
margin: 0 0 24px;
max-width: 62ch;
}
/* rule: pills allowed for status tags only */
.status {
display: inline-block;
padding: 2px 10px;
border-radius: 999px;
background: oklch(0.58 0.22 27);
color: var(--paper);
font-size: 12px;
line-height: 1.5;
letter-spacing: 0.08em;
text-transform: uppercase;
font-weight: 700;
}
/* rule: terminal-aesthetic code block, no rounded corners, no shadow */
.run {
grid-column: 4 / span 8;
margin-top: 64px;
border-top: 1px solid var(--rule);
border-bottom: 1px solid var(--rule);
padding: 16px 0;
}
/* rule: command rendered in monospace code block with language tag bash */
pre {
margin: 0;
overflow-x: auto;
font: 15px/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
color: var(--ink);
}
/* rule: dramatic jump per section */
.manifest {
grid-column: 1 / -1;
display: grid;
grid-template-columns: subgrid;
margin-top: 160px;
border-top: 1px solid var(--rule);
padding-top: 16px;
}
/* rule: clearly separated manifest sections */
.manifest-block {
border-top: 1px solid var(--rule);
padding-top: 8px;
}
/* rule: no three equal feature cards */
.ships {
grid-column: 1 / span 5;
}
/* rule: asymmetric composition */
.gated {
grid-column: 7 / span 5;
margin-top: 48px;
}
/* rule: h2 line-height 1.2 */
h2 {
margin: 0 0 24px;
font-family: "Neue Haas Grotesk Display", "Helvetica Now Display", "Inter Tight", Arial, sans-serif;
font-size: 32px;
line-height: 1.2;
letter-spacing: -0.02em;
font-weight: 900;
}
/* rule: enumerate manifest items without emoji bullets */
ol {
margin: 0;
padding-left: 22px;
}
/* rule: 8px baseline rhythm */
li {
padding-left: 8px;
margin-bottom: 8px;
}
/* rule: footer names licence explicitly, no canonical 4-column footer */
footer {
grid-column: 1 / -1;
display: grid;
grid-template-columns: subgrid;
margin-top: 96px;
border-top: 1px solid var(--rule);
padding-top: 8px;
color: var(--muted);
font-size: 14px;
}
/* rule: restrained footer structure */
footer p {
grid-column: 1 / span 9;
margin: 0;
}
/* rule: responsive grid constraints without centred hero */
@media (max-width: 820px) {
.page {
display: block;
padding: 24px 32px;
}
header {
display: flex;
justify-content: space-between;
gap: 24px;
}
.cta {
justify-self: auto;
}
.bleed-word {
margin-top: 64px;
}
.intro,
.run,
.manifest,
.gated,
footer {
margin-top: 64px;
}
.ships,
.gated {
margin-top: 32px;
}
}
</style>
</head>
<body>
<!-- rule: one screen of reading, framework rather than lecture -->
<main class="page">
<!-- rule: no pill badge plus two CTA centred hero -->
<header>
<p class="brand">AHD<br>Artificial Human Design</p>
<a class="cta" href="https://github.com/" aria-label="read-the-code CTA">read-the-code CTA</a>
</header>
<!-- rule: single display word anchors the page and bleeds past the grid -->
<section class="bleed-word" aria-label="Evaluation">
<h1 class="register-offset">EVAL</h1>
</section>
<!-- rule: audience is working designers, senior engineers and founders -->
<section class="intro" aria-label="Position">
<p><span class="status">0.1.0</span></p>
<p>AHD turns a design brief into enforceable rules. It catches default patterns, weak composition, vague taste and missing constraints before a generated page leaves the editor.</p>
<p>It is for people who already know the problem. The point is not another opinion. The point is a brief compiler, a linter and an evaluation path that make the opinion inspectable.</p>
</section>
<!-- rule: required eval-live command in bash code block -->
<section class="run" aria-label="Run the eval">
<pre><code class="language-bash">ahd eval-live swiss-editorial --brief briefs/landing.yml --models <specs> --n 10</code></pre>
</section>
<!-- rule: manifest sections clearly separated -->
<section class="manifest" aria-label="Manifest">
<!-- rule: What ships enumerates exact required items -->
<div class="manifest-block ships">
<h2>What ships</h2>
<ol>
<li>brief compiler</li>
<li>28-rule linter</li>
<li>eval harness</li>
<li>vision-critic scaffold</li>
<li>MCP server</li>
<li>editor plugins</li>
<li>eight tokens</li>
</ol>
</div>
<!-- rule: What is gated enumerates exact required items -->
<div class="manifest-block gated">
<h2>What is gated</h2>
<ol>
<li>live frontier-model calls (needs API keys)</li>
<li>live vision critique (needs multimodal key + screenshot pipeline)</li>
<li>standalone npm packages for the editor plugins</li>
<li>additional tokens</li>
</ol>
</div>
</section>
<!-- rule: footer licence must name FSL-1.1-Apache-2.0 and CC-BY-4.0 -->
<footer>
<p>Licence: FSL-1.1-Apache-2.0 for code. CC-BY-4.0 for tokens and artwork.</p>
</footer>
</main>
</body>
</html>
Rendered
The same HTML rendered in a sandboxed frame. No scripts execute, no network calls are allowed; this is the same HTML the source block shows above, nothing more.
On phone-size screens the frame renders the sample at its designed viewport scaled down, so a landing page meant for a desktop still reads as a landing page. Open rendered sample in a new tab to view full size.
Every sample in this run is reachable via its cell / condition / id. The full run writeup with per-cell and per-tell tables lives at /evals/2026-04-22-swiss-n30.