Skip to main content
Compendium / Pillars & Roles / Role Identity / Hat Badge · Intent Architect
#401

Hat Badge · Intent Architect

Civic hat-badge for the Intent Architect — the DO-pillar role that authors specs and owns the why.

STABLE DO
#badge #stamp #real-content #dark-mode-tested
Live
Hat · DO
№ I
IA
Hat
Intent Architect
DO · Author

Owns the why. Authors specs, defines acceptance.

Worn by
@author
Spec

Intent

A compact, hat-shaped credential identifying the wearer of the Intent Architect hat. One hat per atom; the hat is the role, not the person.

Acceptance Criteria

  • [ ] Names hat and pillar (DO)
  • [ ] Shows one-line responsibility
  • [ ] Carries a small "WORN BY" handle slot
  • [ ] Negative: does NOT show authority list (that's the credential card)

Constraints

  • Theme-aware via tokens
  • No hex literals in brand-colour slots
// hat-badge-intent-architect.astro
---
import type { CompendiumMeta } from '../../../data/types';

export const meta: CompendiumMeta = {
  id: 401,
  slug: 'hat-badge-intent-architect',
  name: 'Hat Badge · Intent Architect',
  category: 'pillars-roles',
  subcategory: 'role-identity',
  pillar: 'do',
  description: 'Civic hat-badge for the Intent Architect — the DO-pillar role that authors specs and owns the why.',
  spec: `## Intent
A compact, hat-shaped credential identifying the wearer of the Intent Architect hat. One hat per atom; the hat is the role, not the person.

## Acceptance Criteria
- [ ] Names hat and pillar (DO)
- [ ] Shows one-line responsibility
- [ ] Carries a small "WORN BY" handle slot
- [ ] Negative: does NOT show authority list (that's the credential card)

## Constraints
- Theme-aware via tokens
- No hex literals in brand-colour slots`,
  tags: ['badge', 'stamp', 'real-content', 'dark-mode-tested'],
  status: 'stable',
  health: { ics: 88, a11y: 'aa', themed: true, animated: false },
};

const hat = {
  short: 'IA',
  name: 'Intent Architect',
  pillar: 'DO',
  duty: 'Owns the why. Authors specs, defines acceptance.',
  worn: '@author',
};
---

<article data-this-component class="w-full bg-paper text-black border-4 border-black shadow-nb-sm overflow-hidden">
  <div class="bg-do border-b-4 border-black px-3 py-1.5 flex items-center justify-between gap-2">
    <div class="font-mono text-[9px] uppercase tracking-[0.3em] font-black truncate">Hat · DO</div>
    <div class="font-mono text-[9px] uppercase tracking-[0.3em] shrink-0">№ I</div>
  </div>

  <div class="grid grid-cols-[auto_1fr] gap-3 p-3">
    <div class="w-14 h-14 border-4 border-black bg-do relative shrink-0">
      <div class="absolute inset-x-[-6px] top-[-4px] h-2 border-4 border-black bg-do"></div>
      <div class="absolute inset-0 flex items-center justify-center font-black text-lg">{hat.short}</div>
    </div>
    <div class="min-w-0">
      <div class="font-mono text-[9px] uppercase tracking-[0.25em] opacity-60">Hat</div>
      <div class="font-black uppercase text-base leading-tight truncate">{hat.name}</div>
      <div class="font-mono text-[10px] opacity-70 truncate">{hat.pillar} · Author</div>
    </div>
  </div>

  <p class="px-3 pb-2 text-[11px] leading-snug font-medium border-b-2 border-black border-dashed">{hat.duty}</p>

  <div class="px-3 py-1.5 flex items-center justify-between gap-2">
    <div class="font-mono text-[9px] uppercase tracking-widest opacity-60 truncate">Worn by</div>
    <div class="font-mono text-[10px] uppercase tracking-widest font-black truncate">{hat.worn}</div>
  </div>
</article>