Plan›Decision Log
note

This rune is part of @refrakt-md/plan. Install with npm install @refrakt-md/plan and add "@refrakt-md/plan" to the plugins array in your refrakt.config.json.

Decision Log

An aggregation rune that renders a chronological list of architecture decision records from the entity registry. Supports filtering by status and sorting by date or ID. The rune produces a sentinel that the pipeline resolves with real decision data.

All decisions (newest first)

{% decision-log sort="date" /%}
<section data-rune="collection">
  <meta data-field="collection-type" content="decision">
  <meta data-field="collection-filter" content="">
  <meta data-field="collection-sort" content="-date">
  <meta data-field="collection-group" content="">
  <meta data-field="collection-limit" content="">
  <meta data-field="collection-fields" content="">
  <meta data-field="collection-layout" content="table">
  <meta data-field="collection-group-display" content="headings">
  <meta data-field="collection-empty" content="">
  <meta data-field="__collection-sentinel" content="true">
  <meta data-field="collection-body" content="# Decision
{% link href=$item.url %}**{% $item.id %}** — {% $item.data.title %}{% /link %}
# Status
{% humanize($item.data.status) %}
# Date
{% date($item.data.date) %}
">
  <div data-name="items"></div>
</section>
DecisionStatusDate

ADR-046 — Section's header grammar is anchored and explicit

AcceptedOct 23, 2026

ADR-047 — A rune may take editorial runes as a narrative field

ProposedOct 23, 2026

ADR-045 — A theme may arrange a composed rune, but not redefine it

ProposedOct 20, 2026

ADR-043 — A theme renders a vocabulary; it configures no rune

ProposedOct 12, 2026

ADR-044 — Plugin runes speak the vocabulary; novel parts bring token-only structure

ProposedOct 12, 2026

ADR-042 — Metadata belongs to a rune's definition; themes override native runes only

ProposedOct 10, 2026

ADR-041 — Compose content on section, not card

AcceptedOct 9, 2026

ADR-038 — A behavior binds on a data contract, never a BEM class

ProposedSep 30, 2026

ADR-039 — Where a rune lives: three kinds of package, and one test

ProposedSep 30, 2026

ADR-037 — Users author composed runes only

ProposedSep 29, 2026

ADR-035 — The skin format is for leaf themes; Lumina stays a package

RejectedSep 28, 2026

ADR-036 — Name the pattern; do not open a language

ProposedSep 28, 2026

ADR-040 — Stale exclusions are two project-config lists, not one ignore list

AcceptedSep 24, 2026

ADR-033 — Measures are a named, typed vocabulary — not a new channel

ProposedSep 21, 2026

ADR-029 — Structural assembly is theme-owned; the structure contract must model it

ProposedSep 19, 2026

ADR-030 — Arrangements name topologies; variants are modifiers; semantics are rune-locked

ProposedSep 19, 2026

ADR-031 — Site-level rune config overrides

ProposedSep 19, 2026

ADR-032 — Rune config keys are kebab-case

ProposedSep 19, 2026

ADR-034 — Source location is a file-qualified range carried on the renderable

ProposedSep 18, 2026

ADR-028 — Attribute applicability is rune identity, not theme configuration

AcceptedSep 5, 2026

ADR-027 — Represent scoped rune attributes as an object-valued bag

ProposedJul 24, 2026

ADR-025 — Incremental rebuild: dependency-tracked invalidation with the registry as firewall

ProposedJun 25, 2026

ADR-026 — Promote crop-bleed to a universal frame-overflow facet

AcceptedJun 22, 2026

ADR-022 — Rename the sandbox runtime directory from examples to sandboxes

AcceptedJun 18, 2026

ADR-023 — Versioning and compatibility for distributed extensions

AcceptedJun 18, 2026

ADR-020 — Dual-mode asset resolution for site templates

ProposedJun 15, 2026

ADR-021 — Site templates are scaffold-copied, not live dependencies

ProposedJun 15, 2026

ADR-016 — Frontmatter-declared registry entities

AcceptedJun 11, 2026

ADR-017 — Data-bound sandboxes: registry-fed visualizations

AcceptedJun 11, 2026

ADR-018 — Canonical layout vocabulary

AcceptedJun 11, 2026

ADR-019 — Bento belongs in core, not the marketing plugin

AcceptedJun 11, 2026

ADR-014 — Responsive surface sizing and project-definable frame presets

AcceptedJun 10, 2026

ADR-015 — Project-tunable scale ramps as part of the token contract

AcceptedJun 10, 2026

ADR-013 — Bento levels — an author-defined heading→footprint ladder

AcceptedJun 7, 2026

ADR-011 — Compose plan aggregation at the template level, not via postProcess injection

ProposedMay 26, 2026

ADR-012 — Collapse backlog and decision-log onto collection

ProposedMay 26, 2026

ADR-010 — Unified root-level refrakt config

ProposedMay 1, 2026

ADR-009 — Framework-agnostic theme packages

AcceptedApr 5, 2026

ADR-008 — Framework-native component interface for rune overrides

AcceptedApr 4, 2026

ADR-006 — Post-identity-transform hook for rune packages

ProposedApr 3, 2026

ADR-007 — Rune packages provide their own layouts

AcceptedApr 3, 2026

ADR-005 — Replace the useSchema / Type class system with plain rune identifiers

AcceptedApr 2, 2026

ADR-9103 — Lazy entity registration for large sites

ProposedMar 25, 2026

ADR-9015 — Adopt content model validation at parse time

ProposedMar 18, 2026

ADR-9007 — Use CSS custom properties for tint token injection

AcceptedMar 11, 2026

ADR-9101 — Use pipeline hooks instead of plugin system

AcceptedFeb 15, 2026

ADR-9102 — BEM naming convention for identity transform

AcceptedJan 20, 2026

ADR-001 — Astro Readiness Investigation

Accepted

ADR-002 — Framework Readiness Investigation: Next.js, Eleventy, Nuxt

Accepted

ADR-003 — Markdoc Feature Gap Analysis for Refrakt

Accepted

ADR-004 — Plan Site Theme Resolution

Proposed

ADR-024 — Themes are framework-agnostic by default; the framework component layer is opt-in

Accepted
<section class="rf-collection" data-type="decision" data-layout="table" data-rune="collection" data-density="full">
  <div data-name="items" class="rf-collection__items rf-collection__items">
    <table class="rf-collection__table">
      <thead>
        <tr>
          <th>Decision</th>
          <th>Status</th>
          <th>Date</th>
        </tr>
      </thead>
      <tbody>
        <tr data-entity-id="ADR-046">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-046</strong>
                 — 
                Section's header grammar is anchored and explicit
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Oct 23, 2026</td>
        </tr>
        <tr data-entity-id="ADR-047">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-047</strong>
                 — 
                A rune may take editorial runes as a narrative field
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Oct 23, 2026</td>
        </tr>
        <tr data-entity-id="ADR-045">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-045</strong>
                 — 
                A theme may arrange a composed rune, but not redefine it
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Oct 20, 2026</td>
        </tr>
        <tr data-entity-id="ADR-043">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-043</strong>
                 — 
                A theme renders a vocabulary; it configures no rune
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Oct 12, 2026</td>
        </tr>
        <tr data-entity-id="ADR-044">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-044</strong>
                 — 
                Plugin runes speak the vocabulary; novel parts bring token-only structure
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Oct 12, 2026</td>
        </tr>
        <tr data-entity-id="ADR-042">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-042</strong>
                 — 
                Metadata belongs to a rune's definition; themes override native runes only
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Oct 10, 2026</td>
        </tr>
        <tr data-entity-id="ADR-041">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-041</strong>
                 — 
                Compose content on section, not card
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Oct 9, 2026</td>
        </tr>
        <tr data-entity-id="ADR-038">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-038</strong>
                 — 
                A behavior binds on a data contract, never a BEM class
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Sep 30, 2026</td>
        </tr>
        <tr data-entity-id="ADR-039">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-039</strong>
                 — 
                Where a rune lives: three kinds of package, and one test
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Sep 30, 2026</td>
        </tr>
        <tr data-entity-id="ADR-037">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-037</strong>
                 — 
                Users author composed runes only
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Sep 29, 2026</td>
        </tr>
        <tr data-entity-id="ADR-035">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-035</strong>
                 — 
                The skin format is for leaf themes; Lumina stays a package
              </a>
            </p>
          </td>
          <td>Rejected</td>
          <td>Sep 28, 2026</td>
        </tr>
        <tr data-entity-id="ADR-036">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-036</strong>
                 — 
                Name the pattern; do not open a language
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Sep 28, 2026</td>
        </tr>
        <tr data-entity-id="ADR-040">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-040</strong>
                 — 
                Stale exclusions are two project-config lists, not one ignore list
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Sep 24, 2026</td>
        </tr>
        <tr data-entity-id="ADR-033">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-033</strong>
                 — 
                Measures are a named, typed vocabulary — not a new channel
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Sep 21, 2026</td>
        </tr>
        <tr data-entity-id="ADR-029">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-029</strong>
                 — 
                Structural assembly is theme-owned; the structure contract must model it
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Sep 19, 2026</td>
        </tr>
        <tr data-entity-id="ADR-030">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-030</strong>
                 — 
                Arrangements name topologies; variants are modifiers; semantics are rune-locked
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Sep 19, 2026</td>
        </tr>
        <tr data-entity-id="ADR-031">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-031</strong>
                 — 
                Site-level rune config overrides
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Sep 19, 2026</td>
        </tr>
        <tr data-entity-id="ADR-032">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-032</strong>
                 — 
                Rune config keys are kebab-case
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Sep 19, 2026</td>
        </tr>
        <tr data-entity-id="ADR-034">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-034</strong>
                 — 
                Source location is a file-qualified range carried on the renderable
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Sep 18, 2026</td>
        </tr>
        <tr data-entity-id="ADR-028">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-028</strong>
                 — 
                Attribute applicability is rune identity, not theme configuration
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Sep 5, 2026</td>
        </tr>
        <tr data-entity-id="ADR-027">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-027</strong>
                 — 
                Represent scoped rune attributes as an object-valued bag
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Jul 24, 2026</td>
        </tr>
        <tr data-entity-id="ADR-025">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-025</strong>
                 — 
                Incremental rebuild: dependency-tracked invalidation with the registry as firewall
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Jun 25, 2026</td>
        </tr>
        <tr data-entity-id="ADR-026">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-026</strong>
                 — 
                Promote crop-bleed to a universal frame-overflow facet
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 22, 2026</td>
        </tr>
        <tr data-entity-id="ADR-022">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-022</strong>
                 — 
                Rename the sandbox runtime directory from examples to sandboxes
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 18, 2026</td>
        </tr>
        <tr data-entity-id="ADR-023">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-023</strong>
                 — 
                Versioning and compatibility for distributed extensions
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 18, 2026</td>
        </tr>
        <tr data-entity-id="ADR-020">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-020</strong>
                 — 
                Dual-mode asset resolution for site templates
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Jun 15, 2026</td>
        </tr>
        <tr data-entity-id="ADR-021">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-021</strong>
                 — 
                Site templates are scaffold-copied, not live dependencies
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Jun 15, 2026</td>
        </tr>
        <tr data-entity-id="ADR-016">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-016</strong>
                 — 
                Frontmatter-declared registry entities
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 11, 2026</td>
        </tr>
        <tr data-entity-id="ADR-017">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-017</strong>
                 — 
                Data-bound sandboxes: registry-fed visualizations
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 11, 2026</td>
        </tr>
        <tr data-entity-id="ADR-018">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-018</strong>
                 — 
                Canonical layout vocabulary
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 11, 2026</td>
        </tr>
        <tr data-entity-id="ADR-019">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-019</strong>
                 — 
                Bento belongs in core, not the marketing plugin
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 11, 2026</td>
        </tr>
        <tr data-entity-id="ADR-014">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-014</strong>
                 — 
                Responsive surface sizing and project-definable frame presets
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 10, 2026</td>
        </tr>
        <tr data-entity-id="ADR-015">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-015</strong>
                 — 
                Project-tunable scale ramps as part of the token contract
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 10, 2026</td>
        </tr>
        <tr data-entity-id="ADR-013">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-013</strong>
                 — 
                Bento levels — an author-defined heading→footprint ladder
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 7, 2026</td>
        </tr>
        <tr data-entity-id="ADR-011">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-011</strong>
                 — 
                Compose plan aggregation at the template level, not via postProcess injection
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>May 26, 2026</td>
        </tr>
        <tr data-entity-id="ADR-012">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-012</strong>
                 — 
                Collapse backlog and decision-log onto collection
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>May 26, 2026</td>
        </tr>
        <tr data-entity-id="ADR-010">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-010</strong>
                 — 
                Unified root-level refrakt config
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>May 1, 2026</td>
        </tr>
        <tr data-entity-id="ADR-009">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-009</strong>
                 — 
                Framework-agnostic theme packages
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Apr 5, 2026</td>
        </tr>
        <tr data-entity-id="ADR-008">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-008</strong>
                 — 
                Framework-native component interface for rune overrides
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Apr 4, 2026</td>
        </tr>
        <tr data-entity-id="ADR-006">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-006</strong>
                 — 
                Post-identity-transform hook for rune packages
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Apr 3, 2026</td>
        </tr>
        <tr data-entity-id="ADR-007">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-007</strong>
                 — 
                Rune packages provide their own layouts
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Apr 3, 2026</td>
        </tr>
        <tr data-entity-id="ADR-005">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-005</strong>
                 — 
                Replace the useSchema / Type class system with plain rune identifiers
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Apr 2, 2026</td>
        </tr>
        <tr data-entity-id="ADR-9103">
          <td>
            <p>
              <a href="/runes/plan/examples">
                <strong marker="**">ADR-9103</strong>
                 — 
                Lazy entity registration for large sites
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Mar 25, 2026</td>
        </tr>
        <tr data-entity-id="ADR-9015">
          <td>
            <p>
              <a href="/runes/plan/decision">
                <strong marker="**">ADR-9015</strong>
                 — 
                Adopt content model validation at parse time
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Mar 18, 2026</td>
        </tr>
        <tr data-entity-id="ADR-9007">
          <td>
            <p>
              <a href="/runes/plan/decision">
                <strong marker="**">ADR-9007</strong>
                 — 
                Use CSS custom properties for tint token injection
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Mar 11, 2026</td>
        </tr>
        <tr data-entity-id="ADR-9101">
          <td>
            <p>
              <a href="/runes/plan/examples">
                <strong marker="**">ADR-9101</strong>
                 — 
                Use pipeline hooks instead of plugin system
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Feb 15, 2026</td>
        </tr>
        <tr data-entity-id="ADR-9102">
          <td>
            <p>
              <a href="/runes/plan/examples">
                <strong marker="**">ADR-9102</strong>
                 — 
                BEM naming convention for identity transform
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jan 20, 2026</td>
        </tr>
        <tr data-entity-id="ADR-001">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-001</strong>
                 — 
                Astro Readiness Investigation
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td></td>
        </tr>
        <tr data-entity-id="ADR-002">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-002</strong>
                 — 
                Framework Readiness Investigation: Next.js, Eleventy, Nuxt
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td></td>
        </tr>
        <tr data-entity-id="ADR-003">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-003</strong>
                 — 
                Markdoc Feature Gap Analysis for Refrakt
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td></td>
        </tr>
        <tr data-entity-id="ADR-004">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-004</strong>
                 — 
                Plan Site Theme Resolution
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td></td>
        </tr>
        <tr data-entity-id="ADR-024">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-024</strong>
                 — 
                Themes are framework-agnostic by default; the framework component layer is opt-in
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td></td>
        </tr>
      </tbody>
    </table>
  </div>
</section>

Accepted decisions only

{% decision-log filter="status:accepted" sort="date" /%}
<section data-rune="collection">
  <meta data-field="collection-type" content="decision">
  <meta data-field="collection-filter" content="status:accepted">
  <meta data-field="collection-sort" content="-date">
  <meta data-field="collection-group" content="">
  <meta data-field="collection-limit" content="">
  <meta data-field="collection-fields" content="">
  <meta data-field="collection-layout" content="table">
  <meta data-field="collection-group-display" content="headings">
  <meta data-field="collection-empty" content="">
  <meta data-field="__collection-sentinel" content="true">
  <meta data-field="collection-body" content="# Decision
{% link href=$item.url %}**{% $item.id %}** — {% $item.data.title %}{% /link %}
# Status
{% humanize($item.data.status) %}
# Date
{% date($item.data.date) %}
">
  <div data-name="items"></div>
</section>
DecisionStatusDate

ADR-046 — Section's header grammar is anchored and explicit

AcceptedOct 23, 2026

ADR-041 — Compose content on section, not card

AcceptedOct 9, 2026

ADR-040 — Stale exclusions are two project-config lists, not one ignore list

AcceptedSep 24, 2026

ADR-028 — Attribute applicability is rune identity, not theme configuration

AcceptedSep 5, 2026

ADR-026 — Promote crop-bleed to a universal frame-overflow facet

AcceptedJun 22, 2026

ADR-022 — Rename the sandbox runtime directory from examples to sandboxes

AcceptedJun 18, 2026

ADR-023 — Versioning and compatibility for distributed extensions

AcceptedJun 18, 2026

ADR-016 — Frontmatter-declared registry entities

AcceptedJun 11, 2026

ADR-017 — Data-bound sandboxes: registry-fed visualizations

AcceptedJun 11, 2026

ADR-018 — Canonical layout vocabulary

AcceptedJun 11, 2026

ADR-019 — Bento belongs in core, not the marketing plugin

AcceptedJun 11, 2026

ADR-014 — Responsive surface sizing and project-definable frame presets

AcceptedJun 10, 2026

ADR-015 — Project-tunable scale ramps as part of the token contract

AcceptedJun 10, 2026

ADR-013 — Bento levels — an author-defined heading→footprint ladder

AcceptedJun 7, 2026

ADR-009 — Framework-agnostic theme packages

AcceptedApr 5, 2026

ADR-008 — Framework-native component interface for rune overrides

AcceptedApr 4, 2026

ADR-007 — Rune packages provide their own layouts

AcceptedApr 3, 2026

ADR-005 — Replace the useSchema / Type class system with plain rune identifiers

AcceptedApr 2, 2026

ADR-9007 — Use CSS custom properties for tint token injection

AcceptedMar 11, 2026

ADR-9101 — Use pipeline hooks instead of plugin system

AcceptedFeb 15, 2026

ADR-9102 — BEM naming convention for identity transform

AcceptedJan 20, 2026

ADR-001 — Astro Readiness Investigation

Accepted

ADR-002 — Framework Readiness Investigation: Next.js, Eleventy, Nuxt

Accepted

ADR-003 — Markdoc Feature Gap Analysis for Refrakt

Accepted

ADR-024 — Themes are framework-agnostic by default; the framework component layer is opt-in

Accepted
<section class="rf-collection" data-type="decision" data-layout="table" data-rune="collection" data-density="full">
  <div data-name="items" class="rf-collection__items rf-collection__items">
    <table class="rf-collection__table">
      <thead>
        <tr>
          <th>Decision</th>
          <th>Status</th>
          <th>Date</th>
        </tr>
      </thead>
      <tbody>
        <tr data-entity-id="ADR-046">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-046</strong>
                 — 
                Section's header grammar is anchored and explicit
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Oct 23, 2026</td>
        </tr>
        <tr data-entity-id="ADR-041">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-041</strong>
                 — 
                Compose content on section, not card
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Oct 9, 2026</td>
        </tr>
        <tr data-entity-id="ADR-040">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-040</strong>
                 — 
                Stale exclusions are two project-config lists, not one ignore list
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Sep 24, 2026</td>
        </tr>
        <tr data-entity-id="ADR-028">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-028</strong>
                 — 
                Attribute applicability is rune identity, not theme configuration
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Sep 5, 2026</td>
        </tr>
        <tr data-entity-id="ADR-026">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-026</strong>
                 — 
                Promote crop-bleed to a universal frame-overflow facet
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 22, 2026</td>
        </tr>
        <tr data-entity-id="ADR-022">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-022</strong>
                 — 
                Rename the sandbox runtime directory from examples to sandboxes
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 18, 2026</td>
        </tr>
        <tr data-entity-id="ADR-023">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-023</strong>
                 — 
                Versioning and compatibility for distributed extensions
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 18, 2026</td>
        </tr>
        <tr data-entity-id="ADR-016">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-016</strong>
                 — 
                Frontmatter-declared registry entities
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 11, 2026</td>
        </tr>
        <tr data-entity-id="ADR-017">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-017</strong>
                 — 
                Data-bound sandboxes: registry-fed visualizations
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 11, 2026</td>
        </tr>
        <tr data-entity-id="ADR-018">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-018</strong>
                 — 
                Canonical layout vocabulary
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 11, 2026</td>
        </tr>
        <tr data-entity-id="ADR-019">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-019</strong>
                 — 
                Bento belongs in core, not the marketing plugin
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 11, 2026</td>
        </tr>
        <tr data-entity-id="ADR-014">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-014</strong>
                 — 
                Responsive surface sizing and project-definable frame presets
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 10, 2026</td>
        </tr>
        <tr data-entity-id="ADR-015">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-015</strong>
                 — 
                Project-tunable scale ramps as part of the token contract
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 10, 2026</td>
        </tr>
        <tr data-entity-id="ADR-013">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-013</strong>
                 — 
                Bento levels — an author-defined heading→footprint ladder
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 7, 2026</td>
        </tr>
        <tr data-entity-id="ADR-009">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-009</strong>
                 — 
                Framework-agnostic theme packages
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Apr 5, 2026</td>
        </tr>
        <tr data-entity-id="ADR-008">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-008</strong>
                 — 
                Framework-native component interface for rune overrides
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Apr 4, 2026</td>
        </tr>
        <tr data-entity-id="ADR-007">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-007</strong>
                 — 
                Rune packages provide their own layouts
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Apr 3, 2026</td>
        </tr>
        <tr data-entity-id="ADR-005">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-005</strong>
                 — 
                Replace the useSchema / Type class system with plain rune identifiers
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Apr 2, 2026</td>
        </tr>
        <tr data-entity-id="ADR-9007">
          <td>
            <p>
              <a href="/runes/plan/decision">
                <strong marker="**">ADR-9007</strong>
                 — 
                Use CSS custom properties for tint token injection
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Mar 11, 2026</td>
        </tr>
        <tr data-entity-id="ADR-9101">
          <td>
            <p>
              <a href="/runes/plan/examples">
                <strong marker="**">ADR-9101</strong>
                 — 
                Use pipeline hooks instead of plugin system
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Feb 15, 2026</td>
        </tr>
        <tr data-entity-id="ADR-9102">
          <td>
            <p>
              <a href="/runes/plan/examples">
                <strong marker="**">ADR-9102</strong>
                 — 
                BEM naming convention for identity transform
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jan 20, 2026</td>
        </tr>
        <tr data-entity-id="ADR-001">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-001</strong>
                 — 
                Astro Readiness Investigation
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td></td>
        </tr>
        <tr data-entity-id="ADR-002">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-002</strong>
                 — 
                Framework Readiness Investigation: Next.js, Eleventy, Nuxt
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td></td>
        </tr>
        <tr data-entity-id="ADR-003">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-003</strong>
                 — 
                Markdoc Feature Gap Analysis for Refrakt
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td></td>
        </tr>
        <tr data-entity-id="ADR-024">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-024</strong>
                 — 
                Themes are framework-agnostic by default; the framework component layer is opt-in
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td></td>
        </tr>
      </tbody>
    </table>
  </div>
</section>

Sorted by ID

{% decision-log sort="id" /%}
<section data-rune="collection">
  <meta data-field="collection-type" content="decision">
  <meta data-field="collection-filter" content="">
  <meta data-field="collection-sort" content="id">
  <meta data-field="collection-group" content="">
  <meta data-field="collection-limit" content="">
  <meta data-field="collection-fields" content="">
  <meta data-field="collection-layout" content="table">
  <meta data-field="collection-group-display" content="headings">
  <meta data-field="collection-empty" content="">
  <meta data-field="__collection-sentinel" content="true">
  <meta data-field="collection-body" content="# Decision
{% link href=$item.url %}**{% $item.id %}** — {% $item.data.title %}{% /link %}
# Status
{% humanize($item.data.status) %}
# Date
{% date($item.data.date) %}
">
  <div data-name="items"></div>
</section>
DecisionStatusDate

ADR-001 — Astro Readiness Investigation

Accepted

ADR-002 — Framework Readiness Investigation: Next.js, Eleventy, Nuxt

Accepted

ADR-003 — Markdoc Feature Gap Analysis for Refrakt

Accepted

ADR-004 — Plan Site Theme Resolution

Proposed

ADR-005 — Replace the useSchema / Type class system with plain rune identifiers

AcceptedApr 2, 2026

ADR-006 — Post-identity-transform hook for rune packages

ProposedApr 3, 2026

ADR-007 — Rune packages provide their own layouts

AcceptedApr 3, 2026

ADR-008 — Framework-native component interface for rune overrides

AcceptedApr 4, 2026

ADR-009 — Framework-agnostic theme packages

AcceptedApr 5, 2026

ADR-010 — Unified root-level refrakt config

ProposedMay 1, 2026

ADR-011 — Compose plan aggregation at the template level, not via postProcess injection

ProposedMay 26, 2026

ADR-012 — Collapse backlog and decision-log onto collection

ProposedMay 26, 2026

ADR-013 — Bento levels — an author-defined heading→footprint ladder

AcceptedJun 7, 2026

ADR-014 — Responsive surface sizing and project-definable frame presets

AcceptedJun 10, 2026

ADR-015 — Project-tunable scale ramps as part of the token contract

AcceptedJun 10, 2026

ADR-016 — Frontmatter-declared registry entities

AcceptedJun 11, 2026

ADR-017 — Data-bound sandboxes: registry-fed visualizations

AcceptedJun 11, 2026

ADR-018 — Canonical layout vocabulary

AcceptedJun 11, 2026

ADR-019 — Bento belongs in core, not the marketing plugin

AcceptedJun 11, 2026

ADR-020 — Dual-mode asset resolution for site templates

ProposedJun 15, 2026

ADR-021 — Site templates are scaffold-copied, not live dependencies

ProposedJun 15, 2026

ADR-022 — Rename the sandbox runtime directory from examples to sandboxes

AcceptedJun 18, 2026

ADR-023 — Versioning and compatibility for distributed extensions

AcceptedJun 18, 2026

ADR-024 — Themes are framework-agnostic by default; the framework component layer is opt-in

Accepted

ADR-025 — Incremental rebuild: dependency-tracked invalidation with the registry as firewall

ProposedJun 25, 2026

ADR-026 — Promote crop-bleed to a universal frame-overflow facet

AcceptedJun 22, 2026

ADR-027 — Represent scoped rune attributes as an object-valued bag

ProposedJul 24, 2026

ADR-028 — Attribute applicability is rune identity, not theme configuration

AcceptedSep 5, 2026

ADR-029 — Structural assembly is theme-owned; the structure contract must model it

ProposedSep 19, 2026

ADR-030 — Arrangements name topologies; variants are modifiers; semantics are rune-locked

ProposedSep 19, 2026

ADR-031 — Site-level rune config overrides

ProposedSep 19, 2026

ADR-032 — Rune config keys are kebab-case

ProposedSep 19, 2026

ADR-033 — Measures are a named, typed vocabulary — not a new channel

ProposedSep 21, 2026

ADR-034 — Source location is a file-qualified range carried on the renderable

ProposedSep 18, 2026

ADR-035 — The skin format is for leaf themes; Lumina stays a package

RejectedSep 28, 2026

ADR-036 — Name the pattern; do not open a language

ProposedSep 28, 2026

ADR-037 — Users author composed runes only

ProposedSep 29, 2026

ADR-038 — A behavior binds on a data contract, never a BEM class

ProposedSep 30, 2026

ADR-039 — Where a rune lives: three kinds of package, and one test

ProposedSep 30, 2026

ADR-040 — Stale exclusions are two project-config lists, not one ignore list

AcceptedSep 24, 2026

ADR-041 — Compose content on section, not card

AcceptedOct 9, 2026

ADR-042 — Metadata belongs to a rune's definition; themes override native runes only

ProposedOct 10, 2026

ADR-043 — A theme renders a vocabulary; it configures no rune

ProposedOct 12, 2026

ADR-044 — Plugin runes speak the vocabulary; novel parts bring token-only structure

ProposedOct 12, 2026

ADR-045 — A theme may arrange a composed rune, but not redefine it

ProposedOct 20, 2026

ADR-046 — Section's header grammar is anchored and explicit

AcceptedOct 23, 2026

ADR-047 — A rune may take editorial runes as a narrative field

ProposedOct 23, 2026

ADR-9007 — Use CSS custom properties for tint token injection

AcceptedMar 11, 2026

ADR-9015 — Adopt content model validation at parse time

ProposedMar 18, 2026

ADR-9101 — Use pipeline hooks instead of plugin system

AcceptedFeb 15, 2026

ADR-9102 — BEM naming convention for identity transform

AcceptedJan 20, 2026

ADR-9103 — Lazy entity registration for large sites

ProposedMar 25, 2026
<section class="rf-collection" data-type="decision" data-layout="table" data-rune="collection" data-density="full">
  <div data-name="items" class="rf-collection__items rf-collection__items">
    <table class="rf-collection__table">
      <thead>
        <tr>
          <th>Decision</th>
          <th>Status</th>
          <th>Date</th>
        </tr>
      </thead>
      <tbody>
        <tr data-entity-id="ADR-001">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-001</strong>
                 — 
                Astro Readiness Investigation
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td></td>
        </tr>
        <tr data-entity-id="ADR-002">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-002</strong>
                 — 
                Framework Readiness Investigation: Next.js, Eleventy, Nuxt
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td></td>
        </tr>
        <tr data-entity-id="ADR-003">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-003</strong>
                 — 
                Markdoc Feature Gap Analysis for Refrakt
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td></td>
        </tr>
        <tr data-entity-id="ADR-004">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-004</strong>
                 — 
                Plan Site Theme Resolution
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td></td>
        </tr>
        <tr data-entity-id="ADR-005">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-005</strong>
                 — 
                Replace the useSchema / Type class system with plain rune identifiers
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Apr 2, 2026</td>
        </tr>
        <tr data-entity-id="ADR-006">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-006</strong>
                 — 
                Post-identity-transform hook for rune packages
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Apr 3, 2026</td>
        </tr>
        <tr data-entity-id="ADR-007">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-007</strong>
                 — 
                Rune packages provide their own layouts
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Apr 3, 2026</td>
        </tr>
        <tr data-entity-id="ADR-008">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-008</strong>
                 — 
                Framework-native component interface for rune overrides
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Apr 4, 2026</td>
        </tr>
        <tr data-entity-id="ADR-009">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-009</strong>
                 — 
                Framework-agnostic theme packages
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Apr 5, 2026</td>
        </tr>
        <tr data-entity-id="ADR-010">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-010</strong>
                 — 
                Unified root-level refrakt config
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>May 1, 2026</td>
        </tr>
        <tr data-entity-id="ADR-011">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-011</strong>
                 — 
                Compose plan aggregation at the template level, not via postProcess injection
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>May 26, 2026</td>
        </tr>
        <tr data-entity-id="ADR-012">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-012</strong>
                 — 
                Collapse backlog and decision-log onto collection
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>May 26, 2026</td>
        </tr>
        <tr data-entity-id="ADR-013">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-013</strong>
                 — 
                Bento levels — an author-defined heading→footprint ladder
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 7, 2026</td>
        </tr>
        <tr data-entity-id="ADR-014">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-014</strong>
                 — 
                Responsive surface sizing and project-definable frame presets
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 10, 2026</td>
        </tr>
        <tr data-entity-id="ADR-015">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-015</strong>
                 — 
                Project-tunable scale ramps as part of the token contract
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 10, 2026</td>
        </tr>
        <tr data-entity-id="ADR-016">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-016</strong>
                 — 
                Frontmatter-declared registry entities
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 11, 2026</td>
        </tr>
        <tr data-entity-id="ADR-017">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-017</strong>
                 — 
                Data-bound sandboxes: registry-fed visualizations
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 11, 2026</td>
        </tr>
        <tr data-entity-id="ADR-018">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-018</strong>
                 — 
                Canonical layout vocabulary
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 11, 2026</td>
        </tr>
        <tr data-entity-id="ADR-019">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-019</strong>
                 — 
                Bento belongs in core, not the marketing plugin
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 11, 2026</td>
        </tr>
        <tr data-entity-id="ADR-020">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-020</strong>
                 — 
                Dual-mode asset resolution for site templates
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Jun 15, 2026</td>
        </tr>
        <tr data-entity-id="ADR-021">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-021</strong>
                 — 
                Site templates are scaffold-copied, not live dependencies
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Jun 15, 2026</td>
        </tr>
        <tr data-entity-id="ADR-022">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-022</strong>
                 — 
                Rename the sandbox runtime directory from examples to sandboxes
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 18, 2026</td>
        </tr>
        <tr data-entity-id="ADR-023">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-023</strong>
                 — 
                Versioning and compatibility for distributed extensions
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 18, 2026</td>
        </tr>
        <tr data-entity-id="ADR-024">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-024</strong>
                 — 
                Themes are framework-agnostic by default; the framework component layer is opt-in
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td></td>
        </tr>
        <tr data-entity-id="ADR-025">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-025</strong>
                 — 
                Incremental rebuild: dependency-tracked invalidation with the registry as firewall
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Jun 25, 2026</td>
        </tr>
        <tr data-entity-id="ADR-026">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-026</strong>
                 — 
                Promote crop-bleed to a universal frame-overflow facet
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jun 22, 2026</td>
        </tr>
        <tr data-entity-id="ADR-027">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-027</strong>
                 — 
                Represent scoped rune attributes as an object-valued bag
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Jul 24, 2026</td>
        </tr>
        <tr data-entity-id="ADR-028">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-028</strong>
                 — 
                Attribute applicability is rune identity, not theme configuration
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Sep 5, 2026</td>
        </tr>
        <tr data-entity-id="ADR-029">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-029</strong>
                 — 
                Structural assembly is theme-owned; the structure contract must model it
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Sep 19, 2026</td>
        </tr>
        <tr data-entity-id="ADR-030">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-030</strong>
                 — 
                Arrangements name topologies; variants are modifiers; semantics are rune-locked
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Sep 19, 2026</td>
        </tr>
        <tr data-entity-id="ADR-031">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-031</strong>
                 — 
                Site-level rune config overrides
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Sep 19, 2026</td>
        </tr>
        <tr data-entity-id="ADR-032">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-032</strong>
                 — 
                Rune config keys are kebab-case
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Sep 19, 2026</td>
        </tr>
        <tr data-entity-id="ADR-033">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-033</strong>
                 — 
                Measures are a named, typed vocabulary — not a new channel
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Sep 21, 2026</td>
        </tr>
        <tr data-entity-id="ADR-034">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-034</strong>
                 — 
                Source location is a file-qualified range carried on the renderable
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Sep 18, 2026</td>
        </tr>
        <tr data-entity-id="ADR-035">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-035</strong>
                 — 
                The skin format is for leaf themes; Lumina stays a package
              </a>
            </p>
          </td>
          <td>Rejected</td>
          <td>Sep 28, 2026</td>
        </tr>
        <tr data-entity-id="ADR-036">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-036</strong>
                 — 
                Name the pattern; do not open a language
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Sep 28, 2026</td>
        </tr>
        <tr data-entity-id="ADR-037">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-037</strong>
                 — 
                Users author composed runes only
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Sep 29, 2026</td>
        </tr>
        <tr data-entity-id="ADR-038">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-038</strong>
                 — 
                A behavior binds on a data contract, never a BEM class
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Sep 30, 2026</td>
        </tr>
        <tr data-entity-id="ADR-039">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-039</strong>
                 — 
                Where a rune lives: three kinds of package, and one test
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Sep 30, 2026</td>
        </tr>
        <tr data-entity-id="ADR-040">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-040</strong>
                 — 
                Stale exclusions are two project-config lists, not one ignore list
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Sep 24, 2026</td>
        </tr>
        <tr data-entity-id="ADR-041">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-041</strong>
                 — 
                Compose content on section, not card
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Oct 9, 2026</td>
        </tr>
        <tr data-entity-id="ADR-042">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-042</strong>
                 — 
                Metadata belongs to a rune's definition; themes override native runes only
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Oct 10, 2026</td>
        </tr>
        <tr data-entity-id="ADR-043">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-043</strong>
                 — 
                A theme renders a vocabulary; it configures no rune
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Oct 12, 2026</td>
        </tr>
        <tr data-entity-id="ADR-044">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-044</strong>
                 — 
                Plugin runes speak the vocabulary; novel parts bring token-only structure
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Oct 12, 2026</td>
        </tr>
        <tr data-entity-id="ADR-045">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-045</strong>
                 — 
                A theme may arrange a composed rune, but not redefine it
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Oct 20, 2026</td>
        </tr>
        <tr data-entity-id="ADR-046">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-046</strong>
                 — 
                Section's header grammar is anchored and explicit
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Oct 23, 2026</td>
        </tr>
        <tr data-entity-id="ADR-047">
          <td>
            <p>
              <a href="">
                <strong marker="**">ADR-047</strong>
                 — 
                A rune may take editorial runes as a narrative field
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Oct 23, 2026</td>
        </tr>
        <tr data-entity-id="ADR-9007">
          <td>
            <p>
              <a href="/runes/plan/decision">
                <strong marker="**">ADR-9007</strong>
                 — 
                Use CSS custom properties for tint token injection
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Mar 11, 2026</td>
        </tr>
        <tr data-entity-id="ADR-9015">
          <td>
            <p>
              <a href="/runes/plan/decision">
                <strong marker="**">ADR-9015</strong>
                 — 
                Adopt content model validation at parse time
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Mar 18, 2026</td>
        </tr>
        <tr data-entity-id="ADR-9101">
          <td>
            <p>
              <a href="/runes/plan/examples">
                <strong marker="**">ADR-9101</strong>
                 — 
                Use pipeline hooks instead of plugin system
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Feb 15, 2026</td>
        </tr>
        <tr data-entity-id="ADR-9102">
          <td>
            <p>
              <a href="/runes/plan/examples">
                <strong marker="**">ADR-9102</strong>
                 — 
                BEM naming convention for identity transform
              </a>
            </p>
          </td>
          <td>Accepted</td>
          <td>Jan 20, 2026</td>
        </tr>
        <tr data-entity-id="ADR-9103">
          <td>
            <p>
              <a href="/runes/plan/examples">
                <strong marker="**">ADR-9103</strong>
                 — 
                Lazy entity registration for large sites
              </a>
            </p>
          </td>
          <td>Proposed</td>
          <td>Mar 25, 2026</td>
        </tr>
      </tbody>
    </table>
  </div>
</section>

Attributes

AttributeTypeRequiredDescription
filterstring—Filter: space-separated field:value pairs (e.g., "status:accepted").
sortstring—Sort field. Bare `date` is reverse chronological (matches the rune's historical contract); use `+date` for ascending or any other field for the natural order.

Universal attributes

bg

The background layer (SPEC-088): image, video, gradient, flat overlay wash and legibility scrim, in a single injected layer behind the rune's content.

AttributeTypeRequiredDescription
bgstring—Background preset applied to this block
bg-fromstring—Gradient start colour — a semantic token name (→ var(--rf-color-*))
bg-gradient"to-t" | "to-b" | "to-l" | "to-r" | "to-tr" | "to-br" | "to-bl" | "to-tl"—Gradient direction (bounded named set)
bg-gradient-type"linear" | "radial" | "conic"—Gradient type
bg-tostring—Gradient end colour — a semantic token name
bg-viastring—Optional middle gradient stop — a semantic token name
scrim"top" | "bottom" | "left" | "right" | "none"—Scrim direction (heaviest edge); presence turns the scrim on, "none" opts out of the default cover scrim
scrim-blur"none" | "sm" | "md" | "lg"—Frost scrim blur amount
scrim-strength"sm" | "md" | "lg"—Gradient scrim strength
scrim-tone"dark" | "light"—Whether the scrim darkens (for light text) or lightens (for dark text)
scrim-type"gradient" | "frost"—Scrim treatment: gradient (default) or frost (backdrop blur)
elevation

The chrome/depth ladder (SPEC-107). The skin maps each rung to a chrome bundle by attribute, so there is no BEM class.

AttributeTypeRequiredDescription
elevation"sunken" | "flush" | "flat" | "raised" | "floating" | "overlay" | "none" | "sm" | "md" | "lg"—Surface depth on the SPEC-107 ladder (sunken→overlay); none/sm/md/lg are deprecated aliases
inset

Internal padding override.

AttributeTypeRequiredDescription
inset"flush" | "tight" | "default" | "loose" | "breathe"—Inner padding of this block
motion

Scroll-reveal entrance (SPEC-105). The author declares the character, the theme owns the choreography, a behaviour owns the timing.

AttributeTypeRequiredDescription
reveal"none" | "fade" | "slide" | "scale" | "blur"—Scroll-reveal entrance character (none|fade|slide|scale|blur); the theme owns the choreography
staggerboolean—Cascade this block's items in as it reveals (no-op on single-child runes)
spacing

Block-level rhythm override.

AttributeTypeRequiredDescription
spacing"flush" | "tight" | "default" | "loose" | "breathe"—Vertical spacing above and below this block
substrate

Generated pattern fills (SPEC-087). Markers only — the engine sets the attributes and cell/opacity custom properties, CSS draws the pattern.

AttributeTypeRequiredDescription
substrate"dots" | "grid" | "lines" | "cross" | "checker" | "none"—Generated surface pattern
substrate-fill"inherit" | "inset"—Surface fill the pattern sits on (full colour stays with tint)
substrate-opacity"sm" | "md" | "lg"—Pattern ink strength
substrate-size"sm" | "md" | "lg"—Pattern cell size
substrate-target"self" | "media"—Which surface the pattern fills (overrides the rune/theme default)
tint

Per-rune colour override (SPEC-053): a named tint from the theme registry, with inline per-token overrides layered on top.

AttributeTypeRequiredDescription
tintstring—Color tint preset applied to this block
tint-mode"auto" | "dark" | "light"—Whether the tint adapts to auto, dark, or light mode
width

The track a block rune occupies.

AttributeTypeRequiredDescription
width"compact" | "narrow" | "content" | "wide" | "full"—Maximum width constraint for this block
Not availableWhy
dropcap, readingthis rune declares no prose body
framethis rune declares neither a `frameTarget` nor a media section
prominencethis rune has no page-section header

Output structure

Renders as an ordered list (ol.rf-decision-log__list) where each entry (li.rf-decision-log__entry) contains:

  • Date (<time> element)
  • Status badge (color-coded via [data-status])
  • Decision ID
  • Title