Obligation panel
Present unresolved work, evidence needs, and blocking status without making the design system authoritative.
Canonical sourcepatterns/obligation-panel.html
Behavior ownerApplication state
Runtime inside FormaNone
Example 1
Canonical
Canonical repository markup, namespaced only to keep examples independent.
View HTML
<aside class="ef-obligation-panel" aria-labelledby="ex1-obligation-panel-obligation-panel-title">
<header class="ef-obligation-panel__header">
<div>
<h2 id="ex1-obligation-panel-obligation-panel-title">3 obligations require attention</h2>
<p>These must be resolved before finalization.</p>
</div>
<span class="ef-obligation-panel__count" aria-hidden="true">3</span>
</header>
<ul class="ef-obligation-list">
<li class="ef-obligation" data-ef-severity="blocking">
<span class="ef-obligation__status">Blocking</span>
<div>
<strong>Reconcile unknown storage outcome</strong>
<p>Verify whether the report snapshot write completed before retrying.</p>
</div>
<a href="#ex1-obligation-panel-reconcile-storage">Review</a>
</li>
<li class="ef-obligation" data-ef-severity="warning">
<span class="ef-obligation__status">Required</span>
<div>
<strong>Rebuild stale aggregate</strong>
<p>The current aggregate does not include every accepted contribution.</p>
</div>
<a href="#ex1-obligation-panel-aggregate-health">Review</a>
</li>
<li class="ef-obligation" data-ef-severity="information">
<span class="ef-obligation__status">Evidence</span>
<div>
<strong>Supply publication evidence</strong>
<p>A required validation fixture has not yet been recorded.</p>
</div>
<a href="#ex1-obligation-panel-publication-evidence">Review</a>
</li>
</ul>
</aside>
Example 2
Secondary surface
The same contract demonstrated on a secondary Forma surface.
View HTML
<aside class="ef-obligation-panel" aria-labelledby="ex2-obligation-panel-obligation-panel-title">
<header class="ef-obligation-panel__header">
<div>
<h2 id="ex2-obligation-panel-obligation-panel-title">3 obligations require attention</h2>
<p>These must be resolved before finalization.</p>
</div>
<span class="ef-obligation-panel__count" aria-hidden="true">3</span>
</header>
<ul class="ef-obligation-list">
<li class="ef-obligation" data-ef-severity="blocking">
<span class="ef-obligation__status">Blocking</span>
<div>
<strong>Reconcile unknown storage outcome</strong>
<p>Verify whether the report snapshot write completed before retrying.</p>
</div>
<a href="#ex2-obligation-panel-reconcile-storage">Review</a>
</li>
<li class="ef-obligation" data-ef-severity="warning">
<span class="ef-obligation__status">Required</span>
<div>
<strong>Rebuild stale aggregate</strong>
<p>The current aggregate does not include every accepted contribution.</p>
</div>
<a href="#ex2-obligation-panel-aggregate-health">Review</a>
</li>
<li class="ef-obligation" data-ef-severity="information">
<span class="ef-obligation__status">Evidence</span>
<div>
<strong>Supply publication evidence</strong>
<p>A required validation fixture has not yet been recorded.</p>
</div>
<a href="#ex2-obligation-panel-publication-evidence">Review</a>
</li>
</ul>
</aside>
Example 3
Constrained layout
The canonical contract inside a narrow application region.
View HTML
<aside class="ef-obligation-panel" aria-labelledby="ex3-obligation-panel-obligation-panel-title">
<header class="ef-obligation-panel__header">
<div>
<h2 id="ex3-obligation-panel-obligation-panel-title">3 obligations require attention</h2>
<p>These must be resolved before finalization.</p>
</div>
<span class="ef-obligation-panel__count" aria-hidden="true">3</span>
</header>
<ul class="ef-obligation-list">
<li class="ef-obligation" data-ef-severity="blocking">
<span class="ef-obligation__status">Blocking</span>
<div>
<strong>Reconcile unknown storage outcome</strong>
<p>Verify whether the report snapshot write completed before retrying.</p>
</div>
<a href="#ex3-obligation-panel-reconcile-storage">Review</a>
</li>
<li class="ef-obligation" data-ef-severity="warning">
<span class="ef-obligation__status">Required</span>
<div>
<strong>Rebuild stale aggregate</strong>
<p>The current aggregate does not include every accepted contribution.</p>
</div>
<a href="#ex3-obligation-panel-aggregate-health">Review</a>
</li>
<li class="ef-obligation" data-ef-severity="information">
<span class="ef-obligation__status">Evidence</span>
<div>
<strong>Supply publication evidence</strong>
<p>A required validation fixture has not yet been recorded.</p>
</div>
<a href="#ex3-obligation-panel-publication-evidence">Review</a>
</li>
</ul>
</aside>