Skip to main content
Compendium / Maturity & Process / Indicators / Autonomy Rung Indicator
#442

Autonomy Rung Indicator

Four-rung indicator for AI autonomy level — Augmented, Supervised, Bounded, Strategic.

STABLE GO
#list #real-content #dark-mode-tested #responsive
Live
// autonomy rung 3/4
  1. Augmented
    human drives
  2. Supervised
    review each
  3. 3 Bounded
    scoped autonomy
  4. 4 Strategic
    agent-led
Spec

Intent

Maturity stages describe the team; autonomy rungs describe the AI. This indicator names the current rung so reviewers know how much agency the system holds before they read the change.

Acceptance Criteria

  • [ ] Four rungs labelled in canonical order
  • [ ] Current rung filled with go-pillar token
  • [ ] Rungs below current marked complete; above are faded
  • [ ] Negative: does NOT imply higher is always better

Constraints

  • Pure CSS, no JS
  • Theme-aware
// autonomy-rung-indicator.astro
---
import type { CompendiumMeta } from '../../../data/types';

export const meta: CompendiumMeta = {
  id: 442,
  slug: 'autonomy-rung-indicator',
  name: 'Autonomy Rung Indicator',
  category: 'maturity-process',
  subcategory: 'indicators',
  pillar: 'go',
  description: 'Four-rung indicator for AI autonomy level — Augmented, Supervised, Bounded, Strategic.',
  spec: `## Intent
Maturity stages describe the team; autonomy rungs describe the AI. This indicator names the current rung so reviewers know how much agency the system holds before they read the change.

## Acceptance Criteria
- [ ] Four rungs labelled in canonical order
- [ ] Current rung filled with go-pillar token
- [ ] Rungs below current marked complete; above are faded
- [ ] Negative: does NOT imply higher is always better

## Constraints
- Pure CSS, no JS
- Theme-aware`,
  tags: ['list', 'real-content', 'dark-mode-tested', 'responsive'],
  status: 'stable',
  health: { ics: 90, a11y: 'aa', themed: true, animated: false },
};

const rungs = [
  { n: 1, name: 'Augmented',  note: 'human drives' },
  { n: 2, name: 'Supervised', note: 'review each' },
  { n: 3, name: 'Bounded',    note: 'scoped autonomy' },
  { n: 4, name: 'Strategic',  note: 'agent-led' },
];
const here = 3;
---

<div data-this-component class="w-full bg-paper text-black border-4 border-black overflow-hidden">
  <header class="flex items-baseline justify-between px-3 py-2 border-b-2 border-black">
    <span class="font-mono text-[10px] uppercase tracking-widest opacity-60">// autonomy</span>
    <span class="font-mono text-[10px] uppercase tracking-widest">rung {here}/4</span>
  </header>
  <ol class="p-3 flex flex-col gap-1">
    {rungs.map((r) => {
      const state = r.n === here ? 'here' : r.n < here ? 'done' : 'future';
      return (
        <li
          class:list={[
            'border-4 border-black px-2.5 py-1.5 flex items-center justify-between gap-2',
            state === 'here'   && 'bg-go text-black',
            state === 'done'   && 'bg-paper text-black',
            state === 'future' && 'bg-paper text-black opacity-40',
          ]}
          aria-current={state === 'here' ? 'step' : undefined}
        >
          <div class="flex items-center gap-2 min-w-0">
            <span class:list={[
              'w-4 h-4 border-2 border-black flex items-center justify-center font-black text-[9px] shrink-0 tabular-nums',
              state === 'done' ? 'bg-black text-paper' : 'bg-paper text-black',
            ]}>{state === 'done' ? '✓' : r.n}</span>
            <span class="font-black uppercase text-[11px] tracking-wide truncate">{r.name}</span>
          </div>
          <span class="font-mono text-[9px] uppercase tracking-widest opacity-70 shrink-0">{r.note}</span>
        </li>
      );
    })}
  </ol>
</div>
</content>
</invoke>