note

This rune is part of @refrakt-md/plan. Install with npm install @refrakt-md/plan and add "@refrakt-md/plan" to the packages 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="decision-log">
  <meta content="" data-field="filter">
  <meta content="date" data-field="sort">
  <meta data-field="__decision-log-sentinel" content="true">
  <div data-name="items"></div>
</section>
  1. ID:ADR-103Status:proposedDate:2026-03-25
    Lazy entity registration for large sites
  2. ID:ADR-015Status:proposedDate:2026-03-18
    Adopt content model validation at parse time
  3. ID:ADR-007Status:acceptedDate:2026-03-11
    Use CSS custom properties for tint token injection
  4. ID:ADR-101Status:acceptedDate:2026-02-15
    Use pipeline hooks instead of plugin system
  5. ID:ADR-102Status:acceptedDate:2026-01-20
    BEM naming convention for identity transform
<section class="rf-decision-log" data-sort="date" data-rune="decision-log" data-density="full">
  <ol data-name="items" class="rf-decision-log__items rf-decision-log__list">
    <li class="rf-decision-log__entry" data-status="proposed" data-id="ADR-103">
      <a class="rf-decision-log__link" href="/runes/plan/examples">
        <div data-section="header">
          <span data-meta-type="id" data-meta-rank="primary">
            <span data-meta-label="" data-meta-label-hidden="">ID:</span>
            <span data-meta-value="">ADR-103</span>
          </span>
          <span data-meta-type="status" data-meta-rank="primary" data-meta-sentiment="neutral">
            <span data-meta-label="" data-meta-label-hidden="">Status:</span>
            <span data-meta-value="">proposed</span>
          </span>
          <span data-meta-type="temporal" data-meta-rank="secondary">
            <span data-meta-label="">Date:</span>
            <span data-meta-value="">2026-03-25</span>
          </span>
        </div>
        <div data-section="title">Lazy entity registration for large sites</div>
      </a>
    </li>
    <li class="rf-decision-log__entry" data-status="proposed" data-id="ADR-015">
      <a class="rf-decision-log__link" href="/runes/plan/decision">
        <div data-section="header">
          <span data-meta-type="id" data-meta-rank="primary">
            <span data-meta-label="" data-meta-label-hidden="">ID:</span>
            <span data-meta-value="">ADR-015</span>
          </span>
          <span data-meta-type="status" data-meta-rank="primary" data-meta-sentiment="neutral">
            <span data-meta-label="" data-meta-label-hidden="">Status:</span>
            <span data-meta-value="">proposed</span>
          </span>
          <span data-meta-type="temporal" data-meta-rank="secondary">
            <span data-meta-label="">Date:</span>
            <span data-meta-value="">2026-03-18</span>
          </span>
        </div>
        <div data-section="title">Adopt content model validation at parse time</div>
      </a>
    </li>
    <li class="rf-decision-log__entry" data-status="accepted" data-id="ADR-007">
      <a class="rf-decision-log__link" href="/runes/plan/decision">
        <div data-section="header">
          <span data-meta-type="id" data-meta-rank="primary">
            <span data-meta-label="" data-meta-label-hidden="">ID:</span>
            <span data-meta-value="">ADR-007</span>
          </span>
          <span data-meta-type="status" data-meta-rank="primary" data-meta-sentiment="positive">
            <span data-meta-label="" data-meta-label-hidden="">Status:</span>
            <span data-meta-value="">accepted</span>
          </span>
          <span data-meta-type="temporal" data-meta-rank="secondary">
            <span data-meta-label="">Date:</span>
            <span data-meta-value="">2026-03-11</span>
          </span>
        </div>
        <div data-section="title">Use CSS custom properties for tint token injection</div>
      </a>
    </li>
    <li class="rf-decision-log__entry" data-status="accepted" data-id="ADR-101">
      <a class="rf-decision-log__link" href="/runes/plan/examples">
        <div data-section="header">
          <span data-meta-type="id" data-meta-rank="primary">
            <span data-meta-label="" data-meta-label-hidden="">ID:</span>
            <span data-meta-value="">ADR-101</span>
          </span>
          <span data-meta-type="status" data-meta-rank="primary" data-meta-sentiment="positive">
            <span data-meta-label="" data-meta-label-hidden="">Status:</span>
            <span data-meta-value="">accepted</span>
          </span>
          <span data-meta-type="temporal" data-meta-rank="secondary">
            <span data-meta-label="">Date:</span>
            <span data-meta-value="">2026-02-15</span>
          </span>
        </div>
        <div data-section="title">Use pipeline hooks instead of plugin system</div>
      </a>
    </li>
    <li class="rf-decision-log__entry" data-status="accepted" data-id="ADR-102">
      <a class="rf-decision-log__link" href="/runes/plan/examples">
        <div data-section="header">
          <span data-meta-type="id" data-meta-rank="primary">
            <span data-meta-label="" data-meta-label-hidden="">ID:</span>
            <span data-meta-value="">ADR-102</span>
          </span>
          <span data-meta-type="status" data-meta-rank="primary" data-meta-sentiment="positive">
            <span data-meta-label="" data-meta-label-hidden="">Status:</span>
            <span data-meta-value="">accepted</span>
          </span>
          <span data-meta-type="temporal" data-meta-rank="secondary">
            <span data-meta-label="">Date:</span>
            <span data-meta-value="">2026-01-20</span>
          </span>
        </div>
        <div data-section="title">BEM naming convention for identity transform</div>
      </a>
    </li>
  </ol>
</section>

Accepted decisions only

{% decision-log filter="status:accepted" sort="date" /%}
<section data-rune="decision-log">
  <meta content="status:accepted" data-field="filter">
  <meta content="date" data-field="sort">
  <meta data-field="__decision-log-sentinel" content="true">
  <div data-name="items"></div>
</section>
  1. ID:ADR-007Status:acceptedDate:2026-03-11
    Use CSS custom properties for tint token injection
  2. ID:ADR-101Status:acceptedDate:2026-02-15
    Use pipeline hooks instead of plugin system
  3. ID:ADR-102Status:acceptedDate:2026-01-20
    BEM naming convention for identity transform
<section class="rf-decision-log" data-filter="status:accepted" data-sort="date" data-rune="decision-log" data-density="full">
  <ol data-name="items" class="rf-decision-log__items rf-decision-log__list">
    <li class="rf-decision-log__entry" data-status="accepted" data-id="ADR-007">
      <a class="rf-decision-log__link" href="/runes/plan/decision">
        <div data-section="header">
          <span data-meta-type="id" data-meta-rank="primary">
            <span data-meta-label="" data-meta-label-hidden="">ID:</span>
            <span data-meta-value="">ADR-007</span>
          </span>
          <span data-meta-type="status" data-meta-rank="primary" data-meta-sentiment="positive">
            <span data-meta-label="" data-meta-label-hidden="">Status:</span>
            <span data-meta-value="">accepted</span>
          </span>
          <span data-meta-type="temporal" data-meta-rank="secondary">
            <span data-meta-label="">Date:</span>
            <span data-meta-value="">2026-03-11</span>
          </span>
        </div>
        <div data-section="title">Use CSS custom properties for tint token injection</div>
      </a>
    </li>
    <li class="rf-decision-log__entry" data-status="accepted" data-id="ADR-101">
      <a class="rf-decision-log__link" href="/runes/plan/examples">
        <div data-section="header">
          <span data-meta-type="id" data-meta-rank="primary">
            <span data-meta-label="" data-meta-label-hidden="">ID:</span>
            <span data-meta-value="">ADR-101</span>
          </span>
          <span data-meta-type="status" data-meta-rank="primary" data-meta-sentiment="positive">
            <span data-meta-label="" data-meta-label-hidden="">Status:</span>
            <span data-meta-value="">accepted</span>
          </span>
          <span data-meta-type="temporal" data-meta-rank="secondary">
            <span data-meta-label="">Date:</span>
            <span data-meta-value="">2026-02-15</span>
          </span>
        </div>
        <div data-section="title">Use pipeline hooks instead of plugin system</div>
      </a>
    </li>
    <li class="rf-decision-log__entry" data-status="accepted" data-id="ADR-102">
      <a class="rf-decision-log__link" href="/runes/plan/examples">
        <div data-section="header">
          <span data-meta-type="id" data-meta-rank="primary">
            <span data-meta-label="" data-meta-label-hidden="">ID:</span>
            <span data-meta-value="">ADR-102</span>
          </span>
          <span data-meta-type="status" data-meta-rank="primary" data-meta-sentiment="positive">
            <span data-meta-label="" data-meta-label-hidden="">Status:</span>
            <span data-meta-value="">accepted</span>
          </span>
          <span data-meta-type="temporal" data-meta-rank="secondary">
            <span data-meta-label="">Date:</span>
            <span data-meta-value="">2026-01-20</span>
          </span>
        </div>
        <div data-section="title">BEM naming convention for identity transform</div>
      </a>
    </li>
  </ol>
</section>

Sorted by ID

{% decision-log sort="id" /%}
<section data-rune="decision-log">
  <meta content="" data-field="filter">
  <meta content="id" data-field="sort">
  <meta data-field="__decision-log-sentinel" content="true">
  <div data-name="items"></div>
</section>
  1. ID:ADR-007Status:acceptedDate:2026-03-11
    Use CSS custom properties for tint token injection
  2. ID:ADR-015Status:proposedDate:2026-03-18
    Adopt content model validation at parse time
  3. ID:ADR-101Status:acceptedDate:2026-02-15
    Use pipeline hooks instead of plugin system
  4. ID:ADR-102Status:acceptedDate:2026-01-20
    BEM naming convention for identity transform
  5. ID:ADR-103Status:proposedDate:2026-03-25
    Lazy entity registration for large sites
<section class="rf-decision-log" data-sort="id" data-rune="decision-log" data-density="full">
  <ol data-name="items" class="rf-decision-log__items rf-decision-log__list">
    <li class="rf-decision-log__entry" data-status="accepted" data-id="ADR-007">
      <a class="rf-decision-log__link" href="/runes/plan/decision">
        <div data-section="header">
          <span data-meta-type="id" data-meta-rank="primary">
            <span data-meta-label="" data-meta-label-hidden="">ID:</span>
            <span data-meta-value="">ADR-007</span>
          </span>
          <span data-meta-type="status" data-meta-rank="primary" data-meta-sentiment="positive">
            <span data-meta-label="" data-meta-label-hidden="">Status:</span>
            <span data-meta-value="">accepted</span>
          </span>
          <span data-meta-type="temporal" data-meta-rank="secondary">
            <span data-meta-label="">Date:</span>
            <span data-meta-value="">2026-03-11</span>
          </span>
        </div>
        <div data-section="title">Use CSS custom properties for tint token injection</div>
      </a>
    </li>
    <li class="rf-decision-log__entry" data-status="proposed" data-id="ADR-015">
      <a class="rf-decision-log__link" href="/runes/plan/decision">
        <div data-section="header">
          <span data-meta-type="id" data-meta-rank="primary">
            <span data-meta-label="" data-meta-label-hidden="">ID:</span>
            <span data-meta-value="">ADR-015</span>
          </span>
          <span data-meta-type="status" data-meta-rank="primary" data-meta-sentiment="neutral">
            <span data-meta-label="" data-meta-label-hidden="">Status:</span>
            <span data-meta-value="">proposed</span>
          </span>
          <span data-meta-type="temporal" data-meta-rank="secondary">
            <span data-meta-label="">Date:</span>
            <span data-meta-value="">2026-03-18</span>
          </span>
        </div>
        <div data-section="title">Adopt content model validation at parse time</div>
      </a>
    </li>
    <li class="rf-decision-log__entry" data-status="accepted" data-id="ADR-101">
      <a class="rf-decision-log__link" href="/runes/plan/examples">
        <div data-section="header">
          <span data-meta-type="id" data-meta-rank="primary">
            <span data-meta-label="" data-meta-label-hidden="">ID:</span>
            <span data-meta-value="">ADR-101</span>
          </span>
          <span data-meta-type="status" data-meta-rank="primary" data-meta-sentiment="positive">
            <span data-meta-label="" data-meta-label-hidden="">Status:</span>
            <span data-meta-value="">accepted</span>
          </span>
          <span data-meta-type="temporal" data-meta-rank="secondary">
            <span data-meta-label="">Date:</span>
            <span data-meta-value="">2026-02-15</span>
          </span>
        </div>
        <div data-section="title">Use pipeline hooks instead of plugin system</div>
      </a>
    </li>
    <li class="rf-decision-log__entry" data-status="accepted" data-id="ADR-102">
      <a class="rf-decision-log__link" href="/runes/plan/examples">
        <div data-section="header">
          <span data-meta-type="id" data-meta-rank="primary">
            <span data-meta-label="" data-meta-label-hidden="">ID:</span>
            <span data-meta-value="">ADR-102</span>
          </span>
          <span data-meta-type="status" data-meta-rank="primary" data-meta-sentiment="positive">
            <span data-meta-label="" data-meta-label-hidden="">Status:</span>
            <span data-meta-value="">accepted</span>
          </span>
          <span data-meta-type="temporal" data-meta-rank="secondary">
            <span data-meta-label="">Date:</span>
            <span data-meta-value="">2026-01-20</span>
          </span>
        </div>
        <div data-section="title">BEM naming convention for identity transform</div>
      </a>
    </li>
    <li class="rf-decision-log__entry" data-status="proposed" data-id="ADR-103">
      <a class="rf-decision-log__link" href="/runes/plan/examples">
        <div data-section="header">
          <span data-meta-type="id" data-meta-rank="primary">
            <span data-meta-label="" data-meta-label-hidden="">ID:</span>
            <span data-meta-value="">ADR-103</span>
          </span>
          <span data-meta-type="status" data-meta-rank="primary" data-meta-sentiment="neutral">
            <span data-meta-label="" data-meta-label-hidden="">Status:</span>
            <span data-meta-value="">proposed</span>
          </span>
          <span data-meta-type="temporal" data-meta-rank="secondary">
            <span data-meta-label="">Date:</span>
            <span data-meta-value="">2026-03-25</span>
          </span>
        </div>
        <div data-section="title">Lazy entity registration for large sites</div>
      </a>
    </li>
  </ol>
</section>

Attributes

AttributeTypeDefaultDescription
filterstringSpace-separated field:value pairs. Fields: status, date, tags
sortstringdateSort field: date (reverse chronological) or id

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