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>- ID:ADR-103Status:proposedDate:2026-03-25Lazy entity registration for large sites
- ID:ADR-015Status:proposedDate:2026-03-18Adopt content model validation at parse time
- ID:ADR-007Status:acceptedDate:2026-03-11Use CSS custom properties for tint token injection
- ID:ADR-101Status:acceptedDate:2026-02-15Use pipeline hooks instead of plugin system
- ID:ADR-102Status:acceptedDate:2026-01-20BEM 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><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>- ID:ADR-007Status:acceptedDate:2026-03-11Use CSS custom properties for tint token injection
- ID:ADR-015Status:proposedDate:2026-03-18Adopt content model validation at parse time
- ID:ADR-101Status:acceptedDate:2026-02-15Use pipeline hooks instead of plugin system
- ID:ADR-102Status:acceptedDate:2026-01-20BEM naming convention for identity transform
- ID:ADR-103Status:proposedDate:2026-03-25Lazy 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
| Attribute | Type | Default | Description |
|---|---|---|---|
filter | string | — | Space-separated field:value pairs. Fields: status, date, tags |
sort | string | date | Sort 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