# OpenAgreements System Card

## Executive Summary

<div class="trust-summary-banner">
<h2>Traceability and runtime status</h2>
<p>231/249 scenarios are mapped to automated tests across 14 capabilities; runtime metrics are reproduced from the committed traceability matrix.</p>
</div>

<div class="trust-metric-grid">
<div class="trust-metric-card is-warning"><p class="trust-metric-label">Scenario mapping</p><p class="trust-metric-value">231/249</p><p class="trust-metric-note">92.8% of scenarios are linked to automated tests</p></div>
<div class="trust-metric-card"><p class="trust-metric-label">Latest test run</p><p class="trust-metric-value">Unavailable</p><p class="trust-metric-note">Test result counters are omitted in build-metadata mode</p></div>
<div class="trust-metric-card"><p class="trust-metric-label">Source</p><p class="trust-metric-value">Committed artifact</p><p class="trust-metric-note">Regenerated by `npm run trust:rebuild`; freshness tracks the committing commit</p></div>
</div>

## Visual Snapshot

Grouped by **primary mapped test epic**. Expand an epic to inspect each mapped scenario and test links.

<div class="trust-chart">
<div class="chart-row"><div class="chart-label">Filling &amp; Rendering <span class="chart-detail">62 scenarios</span></div><div class="chart-track"><span class="chart-fill is-good" style="width:100.0%"></span></div><div class="chart-note">62 covered</div></div>
<div class="chart-row"><div class="chart-label">Platform &amp; Distribution <span class="chart-detail">62 scenarios</span></div><div class="chart-track"><span class="chart-fill is-low" style="width:87.1%"></span></div><div class="chart-note">54 covered · 8 missing</div></div>
<div class="chart-row"><div class="chart-label">Compliance &amp; Governance <span class="chart-detail">46 scenarios</span></div><div class="chart-track"><span class="chart-fill is-good" style="width:100.0%"></span></div><div class="chart-note">46 covered</div></div>
<div class="chart-row"><div class="chart-label">Discovery &amp; Metadata <span class="chart-detail">32 scenarios</span></div><div class="chart-track"><span class="chart-fill is-good" style="width:100.0%"></span></div><div class="chart-note">32 covered</div></div>
<div class="chart-row"><div class="chart-label">Verification &amp; Drift <span class="chart-detail">30 scenarios</span></div><div class="chart-track"><span class="chart-fill is-good" style="width:100.0%"></span></div><div class="chart-note">30 covered</div></div>
<div class="chart-row"><div class="chart-label">No epic label <span class="chart-detail">8 scenarios</span></div><div class="chart-track"><span class="chart-fill is-low" style="width:0.0%"></span></div><div class="chart-note">0 covered · 8 missing</div></div>
<div class="chart-row"><div class="chart-label">Cleaning &amp; Normalization <span class="chart-detail">3 scenarios</span></div><div class="chart-track"><span class="chart-fill is-good" style="width:100.0%"></span></div><div class="chart-note">3 covered</div></div>
<div class="chart-row"><div class="chart-label">Agreement Signing <span class="chart-detail">2 scenarios</span></div><div class="chart-track"><span class="chart-fill is-low" style="width:0.0%"></span></div><div class="chart-note">0 covered · 2 missing</div></div>
<div class="chart-row"><div class="chart-label">Checklist Patch Workflow <span class="chart-detail">2 scenarios</span></div><div class="chart-track"><span class="chart-fill is-good" style="width:100.0%"></span></div><div class="chart-note">2 covered</div></div>
<div class="chart-row"><div class="chart-label">Template Rendering <span class="chart-detail">2 scenarios</span></div><div class="chart-track"><span class="chart-fill is-good" style="width:100.0%"></span></div><div class="chart-note">2 covered</div></div>
</div>

<details class="epic-breakdown">
<summary>Filling &amp; Rendering (62 scenarios)</summary>
<table class="epic-breakdown-table">
<thead><tr><th>Status</th><th>Scenario</th><th>Mapped tests</th></tr></thead>
<tbody><tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-016] Canonical evidence story fills template from JSON payload</td><td><div class="mapped-test-entry"><span class="mapped-test-title">fills Common Paper Mutual NDA from JSON payload and produces a valid DOCX</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/canonical-evidence-story.allure.test.ts#L21" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-ENG-005] Remove footnotes</td><td><div class="mapped-test-entry"><span class="mapped-test-title">returns footnote text when extractGuidance is true</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L583" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-ENG-006] Remove paragraph patterns</td><td><div class="mapped-test-entry"><span class="mapped-test-title">strips drafting note paragraphs by default</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L517" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-FIL-003] Currency field detection across DOCX parts</td><td><div class="mapped-test-entry"><span class="mapped-test-title">detects field when $ and {field} are split across runs</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L109" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">returns empty set for DOCX without dollar-prefixed fields</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L115" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">scans headers</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L121" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">scans footers</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L129" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">scans endnotes</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L137" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">detects multiple currency fields in a single paragraph</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L145" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-FIL-004] Currency value sanitization strips leading dollar sign</td><td><div class="mapped-test-entry"><span class="mapped-test-title">strips $ from string values for detected currency fields</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L154" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">does not strip $ from boolean values</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L164" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">returns same object when no currency fields detected</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L173" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">does not strip $ from non-currency fields</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L180" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-FIL-005] Double dollar sign detection in filled output</td><td><div class="mapped-test-entry"><span class="mapped-test-title">catches double dollar signs in output</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L196" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">catches $ $ with whitespace between</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L206" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">does not flag legitimate single dollar signs</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L231" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-FIL-006] Verification passes for clean output</td><td><div class="mapped-test-entry"><span class="mapped-test-title">passes clean output with no issues</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L223" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-FIL-007] Verification scans headers and footers</td><td><div class="mapped-test-entry"><span class="mapped-test-title">scans headers and footers for issues</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L239" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-FIL-008] Optional field defaulting and blank placeholder</td><td><div class="mapped-test-entry"><span class="mapped-test-title">defaults optional fields to empty string when useBlankPlaceholder is false</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L270" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">defaults optional fields to BLANK_PLACEHOLDER when useBlankPlaceholder is true</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L281" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">user values override defaults</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L291" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">uses field.default when provided</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L300" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-FIL-009] Boolean coercion and required field warnings</td><td><div class="mapped-test-entry"><span class="mapped-test-title">coerces boolean fields when coerceBooleans is true</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L326" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">coerces &quot;false&quot; string to false boolean</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L335" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">does not coerce booleans when coerceBooleans is false</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L344" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">warns on missing priority fields</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L353" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">calls computeDisplayFields callback</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L365" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-FIL-010] Smart quote normalization during fill</td><td><div class="mapped-test-entry"><span class="mapped-test-title">passes fixSmartQuotes option through to createReport</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L468" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-FIL-011] Multiline value rendering with line breaks</td><td><div class="mapped-test-entry"><span class="mapped-test-title">renders multiline values using explicit line-break runs</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L491" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-FIL-012] Paragraph stripping with table-row cleanup</td><td><div class="mapped-test-entry"><span class="mapped-test-title">preserves all paragraphs when stripParagraphPatterns is empty</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L541" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">removes table row when all paragraphs are drafting notes</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L595" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">does not remove table row when it has non-note content</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L623" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-FIL-013] Highlight stripping from filled fields</td><td><div class="mapped-test-entry"><span class="mapped-test-title">strips highlighting from runs with filled fields</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L562" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-FIL-014] Path-specific fill behavior consistency</td><td><div class="mapped-test-entry"><span class="mapped-test-title">all paths default optional fields to BLANK_PLACEHOLDER</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L663" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">template path coerces boolean fields</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L672" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">recipe/external path does not coerce booleans</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L685" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">template path warns on missing priority fields</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L698" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-FIL-015] Currency sanitization prevents double-dollar in filled output</td><td><div class="mapped-test-entry"><span class="mapped-test-title">template fill with $50,000 produces $50,000 not $$50,000</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L747" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-FIL-023] Explicit empty-string defaults support conditional block pruning</td><td><div class="mapped-test-entry"><span class="mapped-test-title">prunes optional fixed signer slots wrapped in IF blocks</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/variable-signer-rendering.test.ts#L127" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-FIL-024] Array-driven signer blocks render exact counts</td><td><div class="mapped-test-entry"><span class="mapped-test-title">&lt;dynamic test title&gt;</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/consent-variable-signer-rendering.test.ts#L113" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">&lt;dynamic test title&gt;</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/consent-variable-signer-rendering.test.ts#L89" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">renders exact signer-block counts from a signers array loop</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/variable-signer-rendering.test.ts#L174" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-FIL-025] Multiselect selections derive booleans before display-field computation</td><td><div class="mapped-test-entry"><span class="mapped-test-title">normalizes multiselect arrays and derives booleans</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L378" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">parses JSON-string multiselect input back into a real array</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L390" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">defaults omitted multiselect fields and derives false for every option</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L402" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">honors multiselect defaults declared in metadata</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L414" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">derives multiselect booleans before computeDisplayFields runs</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L443" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-FIL-027] fieldsUsed excludes synthetic derived keys</td><td><div class="mapped-test-entry"><span class="mapped-test-title">excludes derived multiselect keys from fieldsUsed</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L712" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-NDA-001] Entity mode fills all signature fields</td><td><div class="mapped-test-entry"><span class="mapped-test-title">fills all signature fields in entity mode (both parties)</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L831" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-NDA-002] Individual mode suppresses title and company</td><td><div class="mapped-test-entry"><span class="mapped-test-title">suppresses title/company for individual party (mixed mode)</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L867" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-NDA-003] Warning emitted for conflicting individual fields</td><td><div class="mapped-test-entry"><span class="mapped-test-title">warns when individual party has title set</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L896" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-NDA-004] Standard 2-party entity mode (pilot agreement)</td><td><div class="mapped-test-entry"><span class="mapped-test-title">standard 2-party entity mode (pilot agreement)</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L983" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-NDA-005] Individual mode suppression (contractor agreement)</td><td><div class="mapped-test-entry"><span class="mapped-test-title">individual mode suppression (contractor agreement)</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L1012" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-NDA-006] One-way NDA single party</td><td><div class="mapped-test-entry"><span class="mapped-test-title">one-way NDA single party</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L1047" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-NDA-007] Dual sig block (CSA)</td><td><div class="mapped-test-entry"><span class="mapped-test-title">dual sig block (CSA)</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L1072" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-NDA-008] Parametric smoke test (all templates)</td><td><div class="mapped-test-entry"><span class="mapped-test-title">all templates fill cleanly in entity mode</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L1133" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">all templates fill cleanly in individual mode</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L1165" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-001] Full pipeline with auto-download</td><td><div class="mapped-test-entry"><span class="mapped-test-title">runRecipeCommand omits inputPath to allow auto-download</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/recipe-command.test.ts#L66" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">uses downloader path when inputPath is omitted</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/index.test.ts#L211" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-002] Full pipeline with user-supplied input</td><td><div class="mapped-test-entry"><span class="mapped-test-title">runRecipeCommand forwards a user-supplied input path</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/recipe-command.test.ts#L108" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">forwards priorityFieldNames when inputPath is supplied</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/index.test.ts#L69" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-003] Keep intermediate files</td><td><div class="mapped-test-entry"><span class="mapped-test-title">runRecipeCommand forwards keepIntermediate flag</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/recipe-command.test.ts#L133" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-004] Run full pipeline</td><td><div class="mapped-test-entry"><span class="mapped-test-title">runRecipeCommand omits inputPath to allow auto-download</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/recipe-command.test.ts#L66" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-005] Run clean stage only</td><td><div class="mapped-test-entry"><span class="mapped-test-title">runRecipeClean invokes cleanDocument with recipe config</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/recipe-command.test.ts#L252" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-006] Run patch stage only</td><td><div class="mapped-test-entry"><span class="mapped-test-title">runRecipePatch invokes patchDocument with recipe replacements</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/recipe-command.test.ts#L385" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-007] Single-run replacement</td><td><div class="mapped-test-entry"><span class="mapped-test-title">replaces a placeholder within a single run</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L66" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-008] Cross-run replacement</td><td><div class="mapped-test-entry"><span class="mapped-test-title">replaces a placeholder split across multiple runs</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L87" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-010] Table cell processing</td><td><div class="mapped-test-entry"><span class="mapped-test-title">replaces placeholder only in the matching table row</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L74" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-012] Unrendered tags detected</td><td><div class="mapped-test-entry"><span class="mapped-test-title">catches unrendered template tags</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-pipeline.test.ts#L213" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-021] Computed profile is optional and non-breaking</td><td><div class="mapped-test-entry"><span class="mapped-test-title">forwards priorityFieldNames when inputPath is supplied</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/index.test.ts#L69" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-022] Rule-driven derived values are computed deterministically</td><td><div class="mapped-test-entry"><span class="mapped-test-title">uses pairwise reduction to cover interaction space without full Cartesian explosion</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/nvca-computed-combinatorial.test.ts#L265" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">evaluates dispute-resolution interaction rules deterministically across bounded passes</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/computed.test.ts#L16" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">applies computed rules and captures pass-level trace</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/index.test.ts#L114" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-023] Computed artifact file is written on request</td><td><div class="mapped-test-entry"><span class="mapped-test-title">runRecipeCommand forwards computed artifact output path</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/recipe-command.test.ts#L156" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-024] Artifact trace includes rule match outcomes and assignments</td><td><div class="mapped-test-entry"><span class="mapped-test-title">applies computed rules and captures pass-level trace</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/index.test.ts#L114" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-030] Multi-run and nested patcher replacements</td><td><div class="mapped-test-entry"><span class="mapped-test-title">replaces a placeholder split across three runs</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L112" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">replaces a placeholder nested inside &lt;w:hyperlink&gt;</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L136" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">replaces a placeholder split across direct and nested runs</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L160" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">replaces multiple different placeholders in the same paragraph</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L186" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">preserves run properties (bold, italic) during replacement</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L276" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-031] Patcher match ordering and occurrence handling</td><td><div class="mapped-test-entry"><span class="mapped-test-title">replaces longest match first to prevent partial matches</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L209" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">handles multiple occurrences of the same placeholder</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L232" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">throws on infinite loop when replacement contains the key</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L254" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-032] Patcher run preservation</td><td><div class="mapped-test-entry"><span class="mapped-test-title">leaves paragraphs without matches untouched</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L301" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">removes empty intermediate runs after cross-run replacement</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L358" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">preserves runs with non-text children like &lt;w:drawing&gt;</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L390" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-033] Patcher header and auxiliary part processing</td><td><div class="mapped-test-entry"><span class="mapped-test-title">replaces placeholder in word/header1.xml</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L321" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-034] Run safety classification</td><td><div class="mapped-test-entry"><span class="mapped-test-title">returns true for run with only rPr and empty t</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L588" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">returns true for empty run</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L592" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">returns false for run with drawing</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L596" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">returns false for run with br</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L600" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">returns false for run with tab</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L604" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">returns false for run with footnoteReference</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L608" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-035] Context key and nth-occurrence replacements</td><td><div class="mapped-test-entry"><span class="mapped-test-title">does not replace in non-table paragraphs when context text is absent</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L114" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">does not replace when row label does not match</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L144" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">replaces first placeholder after context in a paragraph</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L172" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">leaves placeholder untouched when context absent from paragraph</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L192" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">independently replaces duplicate placeholders via different contexts</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L212" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">table-row context takes priority over paragraph context</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L233" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">context keys coexist with simple keys</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L263" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">context keys process before simple keys</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L291" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">no mid-word formatting split on cross-run replacement with common prefix</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L451" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">container-boundary replacement uses fallback without throwing</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L495" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">tab before match does not shift replacement offset</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L523" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">replacementColor applied via addRunProps.color</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher.test.ts#L551" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-036] Table row context detection</td><td><div class="mapped-test-entry"><span class="mapped-test-title">returns label text for a paragraph in the second cell</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L328" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">returns null for a paragraph not in a table</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L343" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-037] Document part clearing and range removal</td><td><div class="mapped-test-entry"><span class="mapped-test-title">clears content of specified parts</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L355" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">removes paragraphs from start through end inclusive</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L410" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">removes nothing when start pattern does not match</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L428" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">removes from start through end of document when end pattern not found</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L446" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">handles multiple ranges correctly</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L464" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">removes repeated occurrences of the same range pattern</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L488" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-038] Guidance extraction from clean operations</td><td><div class="mapped-test-entry"><span class="mapped-test-title">returns pattern-matched text when extractGuidance is true</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L529" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">returns range-deleted text with groupId when extractGuidance is true</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L554" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">returns guidance undefined when extractGuidance is not set</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L618" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">includes sourceHash and configHash in extractedFrom</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/patcher-extensions.test.ts#L635" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-005] Successful template fill</td><td><div class="mapped-test-entry"><span class="mapped-test-title">fill command renders output DOCX from template values</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/cli-interface.test.ts#L113" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">fills a template path and defaults output filename</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-command.inprocess.test.ts#L193" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-006] Missing required field</td><td><div class="mapped-test-entry"><span class="mapped-test-title">fill command warns about missing priority fields but continues</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/cli-interface.test.ts#L291" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">warns about missing priority fields but continues fill</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-command.inprocess.test.ts#L255" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-012] External template fill</td><td><div class="mapped-test-entry"><span class="mapped-test-title">fills yc-safe-valuation-cap with sample values</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/external.test.ts#L135" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">routes external IDs to external fill pipeline</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-command.inprocess.test.ts#L282" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">passes priorityFieldNames through to unified fill pipeline</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/external/index.test.ts#L64" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-017] JSON template renderer validation</td><td><div class="mapped-test-entry"><span class="mapped-test-title">supports multiple templates sharing the same layout id</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-renderer-json-spec.test.ts#L22" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects unknown layout ids with actionable error</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-renderer-json-spec.test.ts#L45" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects style mismatch between spec and style profile</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-renderer-json-spec.test.ts#L54" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">validates style token spacing types before rendering</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-renderer-json-spec.test.ts#L62" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-033] Canonical Markdown definitions compile into a contract spec</td><td><div class="mapped-test-entry"><span class="mapped-test-title">compiles label-keyed cover terms and paragraph-based definitions with aliases</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/canonical-source-authoring.test.ts#L174" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-034] Explicit defined-term references validate against canonical terms and aliases</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects unresolved explicit references and alias collisions</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/canonical-source-authoring.test.ts#L285" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-035] Canonical Markdown generates rendered employment template artifacts</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects output_markdown_path on canonical sources</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/canonical-source-authoring.test.ts#L304" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">schema accepts 1-signer signer-mode but cover-standard-signature-v1 throws at render</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/canonical-source-authoring.test.ts#L328" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">renders signer-mode output and omits alias metadata from legal text</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/canonical-source-authoring.test.ts#L389" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">discovers at least one canonical template under content/templates</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/canonical-source-sync.test.ts#L23" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">&lt;dynamic test title&gt;</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/canonical-source-sync.test.ts#L28" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">&lt;dynamic test title&gt;</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/canonical-source-sync.test.ts#L39" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-054] Directive-anchored sections compile with author-chosen headings</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects sources that omit both standard terms anchor mechanisms</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/canonical-source-authoring.test.ts#L147" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects oa:section directives that are not followed by a top-level heading</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/canonical-source-authoring.test.ts#L156" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects unsupported oa:section type values</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/canonical-source-authoring.test.ts#L165" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">renders directive-anchored sections from body H2 titles</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/canonical-source-authoring.test.ts#L87" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-055] Legacy required titles remain accepted during migration</td><td><div class="mapped-test-entry"><span class="mapped-test-title">prefers directive-anchored standard terms when both anchor mechanisms are present</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/canonical-source-authoring.test.ts#L103" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">accepts legacy required section titles without section directives</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/canonical-source-authoring.test.ts#L140" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-057] Offer letter and employment signer sources avoid mirrored individual title rows</td><td><div class="mapped-test-entry"><span class="mapped-test-title">&lt;dynamic test title&gt;</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/employment-signer-arrangement.test.ts#L47" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-058] Repeat-backed stacked signer sections compile into loop-backed output</td><td><div class="mapped-test-entry"><span class="mapped-test-title">renders repeat-backed stacked signer output from canonical source</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/canonical-source-authoring.test.ts#L343" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr></tbody>
</table>
</details>

<details class="epic-breakdown">
<summary>Platform &amp; Distribution (62 scenarios, 8 missing)</summary>
<table class="epic-breakdown-table">
<thead><tr><th>Status</th><th>Scenario</th><th>Mapped tests</th></tr></thead>
<tbody><tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-003] Fill command renders output</td><td><div class="mapped-test-entry"><span class="mapped-test-title">fill command renders output DOCX from template values</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/cli-interface.test.ts#L113" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">parses fill command data and set flags into runFill payload</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/cli-program.test.ts#L60" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">fills a template path and defaults output filename</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-command.inprocess.test.ts#L193" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-004] List command shows templates</td><td><div class="mapped-test-entry"><span class="mapped-test-title">list command shows templates in human-readable output</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/cli-interface.test.ts#L340" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">forwards list flags to runList</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/cli-program.test.ts#L224" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">renders human-readable table rows with error placeholders when metadata fails</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/list-command.inprocess.test.ts#L531" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-005] Skill interviews user for field values</td><td><div class="mapped-test-entry"><span class="mapped-test-title">generated Claude skill interviews user in AskUserQuestion rounds</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/agent-skill-behavior.test.ts#L74" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-006] Skill renders DOCX after interview</td><td><div class="mapped-test-entry"><span class="mapped-test-title">generated Claude skill renders DOCX via fill command after interview</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/agent-skill-behavior.test.ts#L80" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-007] Claude Code adapter implements interface</td><td><div class="mapped-test-entry"><span class="mapped-test-title">ClaudeCodeAdapter implements ToolCommandAdapter interface</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/agent-skill-behavior.test.ts#L50" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-008] New adapter can be added without modifying core</td><td><div class="mapped-test-entry"><span class="mapped-test-title">new adapter can be added without modifying core</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/agent-skill-behavior.test.ts#L59" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-009] Skill renders DOCX via npx (zero pre-install)</td><td><div class="mapped-test-entry"><span class="mapped-test-title">documents remote MCP as primary zero-install path</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/agent-skill-behavior.test.ts#L86" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-010] Skill renders DOCX via installed CLI</td><td><div class="mapped-test-entry"><span class="mapped-test-title">documents installed CLI DOCX rendering path</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/agent-skill-behavior.test.ts#L95" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-011] Preview-only fallback without Node.js</td><td><div class="mapped-test-entry"><span class="mapped-test-title">documents preview-only fallback when MCP and CLI are unavailable</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/agent-skill-behavior.test.ts#L99" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-015] Default behavior without env var</td><td><div class="mapped-test-entry"><span class="mapped-test-title">uses bundled content roots when no override env var is set</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/content-roots.test.ts#L91" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-016] Additional discovery with env var</td><td><div class="mapped-test-entry"><span class="mapped-test-title">discovers additional templates from OPEN_AGREEMENTS_CONTENT_ROOTS</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/content-roots.test.ts#L98" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-017] Override wins over bundled content</td><td><div class="mapped-test-entry"><span class="mapped-test-title">deduplicates IDs by precedence with env roots first</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/content-roots.test.ts#L112" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-018] Fill from override root</td><td><div class="mapped-test-entry"><span class="mapped-test-title">fills an agreement that exists only in an override root</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/content-roots.test.ts#L129" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-019] List includes override-only entries</td><td><div class="mapped-test-entry"><span class="mapped-test-title">list --json includes override-only template entries</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/content-roots.test.ts#L145" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-020] Validate single ID across tiers with overrides</td><td><div class="mapped-test-entry"><span class="mapped-test-title">validate single ID resolves from configured override roots</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/content-roots.test.ts#L164" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-021] CLI fill renders all template types</td><td><div class="mapped-test-entry"><span class="mapped-test-title">fill command renders output DOCX for employment offer template</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/cli-interface.test.ts#L130" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">fill command renders output DOCX for employee IP template</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/cli-interface.test.ts#L147" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">fill command renders output DOCX for confidentiality acknowledgement template</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/cli-interface.test.ts#L164" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-022] CLI employment memo output</td><td><div class="mapped-test-entry"><span class="mapped-test-title">fill command can emit employment memo JSON with disclaimer and jurisdiction warning when rule matches</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/cli-interface.test.ts#L181" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">fill command does not fabricate jurisdiction warnings when no rule matches</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/cli-interface.test.ts#L221" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">fill command can emit employment memo Markdown with disclaimer</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/cli-interface.test.ts#L259" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-005] Clean install from registry works</td><td><div class="mapped-test-entry"><span class="mapped-test-title">installs from packed tarball and runs list --json</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/packaging.test.ts#L94" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-006] README exposes trust evidence at first glance</td><td><div class="mapped-test-entry"><span class="mapped-test-title">README exposes CI and coverage trust signals near the top</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/repo-trust-signals.test.ts#L15" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-008] Coverage uploads to Codecov</td><td><div class="mapped-test-entry"><span class="mapped-test-title">CI workflow uploads lcov coverage to Codecov</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/repo-trust-signals.test.ts#L21" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-009] Unit test results upload in machine-readable format</td><td><div class="mapped-test-entry"><span class="mapped-test-title">CI workflow uploads machine-readable JUnit test results</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/repo-trust-signals.test.ts#L28" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-010] Tokenless-first test result upload</td><td><div class="mapped-test-entry"><span class="mapped-test-title">Codecov uploads are OIDC/tokenless-first</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/repo-trust-signals.test.ts#L36" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-011] Initial patch and project gates are codified</td><td><div class="mapped-test-entry"><span class="mapped-test-title">repository coverage gate policy is codified with ratchet guidance</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/repo-trust-signals.test.ts#L44" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-012] Coverage policy prevents regressions while allowing staged hardening</td><td><div class="mapped-test-entry"><span class="mapped-test-title">repository coverage gate policy is codified with ratchet guidance</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/repo-trust-signals.test.ts#L44" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-013] Coverage denominator is scoped to implementation sources</td><td><div class="mapped-test-entry"><span class="mapped-test-title">coverage denominator targets implementation sources and excludes support paths</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/repo-trust-signals.test.ts#L55" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-024] MCP tool call envelope responses</td><td><div class="mapped-test-entry"><span class="mapped-test-title">returns TEMPLATE_NOT_FOUND for an unknown template id</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contract-templates-mcp/tests/tools.test.ts#L279" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">fill_template returns TEMPLATE_NOT_FOUND for unknown template</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contract-templates-mcp/tests/tools.test.ts#L410" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-029] Package tarball includes required files and excludes source</td><td><div class="mapped-test-entry"><span class="mapped-test-title">includes dist/cli/index.js</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/packaging.test.ts#L41" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">includes bin/open-agreements.js</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/packaging.test.ts#L46" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">includes a template metadata file</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/packaging.test.ts#L51" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">includes a recipe metadata file</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/packaging.test.ts#L58" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">does NOT include src/</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/packaging.test.ts#L63" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">does NOT include unbundled node_modules/</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/packaging.test.ts#L68" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-032] MCP contract envelope shapes</td><td><div class="mapped-test-entry"><span class="mapped-test-title">callTool returns error for unknown tool name</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contract-templates-mcp/tests/tools.test.ts#L422" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">callTool returns INVALID_ARGUMENT for Zod validation error</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contract-templates-mcp/tests/tools.test.ts#L432" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">get_template catches loadMetadata error</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contract-templates-mcp/tests/tools.test.ts#L451" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">fill_template returns FILL_FAILED on engine error</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contract-templates-mcp/tests/tools.test.ts#L590" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">fill_template returns TEMPLATE_NOT_FOUND when error mentions unknown template</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contract-templates-mcp/tests/tools.test.ts#L605" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">fill_template extracts stderr from error object</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contract-templates-mcp/tests/tools.test.ts#L619" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">fill_template falls back to stdout when stderr is empty</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contract-templates-mcp/tests/tools.test.ts#L633" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">fill_template handles non-object error (string throw)</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contract-templates-mcp/tests/tools.test.ts#L647" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">_resetModuleCache clears override between calls</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contract-templates-mcp/tests/tools.test.ts#L661" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-033] get_template returns array item schemas</td><td><div class="mapped-test-entry"><span class="mapped-test-title">get_template preserves nested array item schemas</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contract-templates-mcp/tests/tools.test.ts#L462" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-061] get_template returns options for enum and multiselect fields</td><td><div class="mapped-test-entry"><span class="mapped-test-title">get_template returns options for enum fields matching source metadata</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contract-templates-mcp/tests/tools.test.ts#L238" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-062] get_template omits options for non-enum/non-multiselect fields</td><td><div class="mapped-test-entry"><span class="mapped-test-title">get_template omits options for non-enum field types</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contract-templates-mcp/tests/tools.test.ts#L264" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-missing">missing</span></td><td>[OA-DST-064] Deterministic README generation</td><td><div class="mapped-test-entry"><span class="mapped-test-title">Partial: CI step &quot;Validate generated README freshness&quot; asserts committed README matches one generator run. Determinism across runs and the &quot;stable headings + npm-safe absolute links&quot; criteria are not separately verified — no dedicated vitest test yet.</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/readme-generation.test.ts#L16" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-missing">missing</span></td><td>[OA-DST-065] Shared catalog data without site side effects</td><td><div class="mapped-test-entry"><span class="mapped-test-title">No automated coverage yet. site/_data/catalog.js re-exports the pure shared helper scripts/lib/catalog-data.mjs, but neither the site build nor a vitest test asserts the no-side-effects property in CI.</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/readme-generation.test.ts#L23" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-missing">missing</span></td><td>[OA-DST-066] README drift detected in CI</td><td><div class="mapped-test-entry"><span class="mapped-test-title">Enforced by CI workflow step &quot;Validate generated README freshness&quot; (.github/workflows/ci.yml).</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/readme-generation.test.ts#L30" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-missing">missing</span></td><td>[OA-DST-067] README stays in sync after regeneration</td><td><div class="mapped-test-entry"><span class="mapped-test-title">Enforced by CI workflow step &quot;Validate generated README freshness&quot; (.github/workflows/ci.yml).</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/readme-generation.test.ts#L37" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-missing">missing</span></td><td>[OA-DST-068] System card includes runtime proof metadata</td><td><div class="mapped-test-entry"><span class="mapped-test-title">No dedicated vitest coverage yet for the rendered system card runtime metadata fields or the explicit unavailable-state fallback.</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/repo-trust-signals.test.ts#L65" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-missing">missing</span></td><td>[OA-DST-069] System card exposes epic drill-down</td><td><div class="mapped-test-entry"><span class="mapped-test-title">No automated test yet exercises the system card epic drill-down UI or verifies scenario-level rows and mapped-test expansion behavior.</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/repo-trust-signals.test.ts#L72" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-missing">missing</span></td><td>[OA-DST-077] Missing target secret blocks requested publish</td><td><div class="mapped-test-entry"><span class="mapped-test-title">Implemented only in the manual GitHub Actions workflow (.github/workflows/publish-skills-directories.yml). Missing-secret gating depends on Actions secrets and has no vitest coverage.</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/skills-directory-publish.test.ts#L44" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-078] Local template MCP server exposes core tools</td><td><div class="mapped-test-entry"><span class="mapped-test-title">get_template returns a known template by ID</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contract-templates-mcp/tests/tools.test.ts#L227" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">fill_template fills a template in-process</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contract-templates-mcp/tests/tools.test.ts#L290" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">fill_template local_path return mode</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contract-templates-mcp/tests/tools.test.ts#L317" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">fill_template fills the Wyoming restrictive covenant template from canonical markdown source</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contract-templates-mcp/tests/tools.test.ts#L341" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">fill_template fills the employee IP assignment template from canonical markdown source</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contract-templates-mcp/tests/tools.test.ts#L374" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">lists expected tools</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contract-templates-mcp/tests/tools.test.ts#L58" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-079] Gemini manifest declares strict metadata and local MCP entries</td><td><div class="mapped-test-entry"><span class="mapped-test-title">includes strict required top-level fields</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/gemini-extension-manifest.test.ts#L12" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">defines local npx MCP servers without cwd overrides</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/gemini-extension-manifest.test.ts#L22" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-missing">missing</span></td><td>[OA-LEG-001] Reader follows modular capability specs</td><td><div class="mapped-test-entry"><span class="mapped-test-title">Restructure-only tombstone scenario; no runtime behavior exists beyond the canonical spec file.</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/modular-spec-stubs.test.ts#L12" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-001] Initialize empty workspace</td><td><div class="mapped-test-entry"><span class="mapped-test-title">creates config files and agent snippets but does not create lifecycle directories</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/init.test.ts#L23" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-002] Re-run init on existing workspace</td><td><div class="mapped-test-entry"><span class="mapped-test-title">is idempotent when re-run</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/init.test.ts#L47" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-003] Forms topic scaffolding</td><td><div class="mapped-test-entry"><span class="mapped-test-title">plans workspace setup without creating files or directories</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/init.test.ts#L60" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-004] CONTRACTS.md generated</td><td><div class="mapped-test-entry"><span class="mapped-test-title">creates config files and agent snippets but does not create lifecycle directories</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/init.test.ts#L23" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-005] Workspace init emits AI integration guidance</td><td><div class="mapped-test-entry"><span class="mapped-test-title">creates config files and agent snippets but does not create lifecycle directories</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/init.test.ts#L23" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-016] Local synced drive compatibility</td><td><div class="mapped-test-entry"><span class="mapped-test-title">exists returns false for missing paths and true after mkdir</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/provider.test.ts#L31" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-017] Workspace-only adoption</td><td><div class="mapped-test-entry"><span class="mapped-test-title">contracts-workspace package is independently installable</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/provider.test.ts#L211" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-018] Convention config round-trip and defaults</td><td><div class="mapped-test-entry"><span class="mapped-test-title">defaultConventions returns valid config</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L24" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">write and load round-trip with MemoryProvider</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L32" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">loadConventions returns defaults when file is missing</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L43" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">write and load round-trip with FilesystemProvider</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L49" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-019] Convention scanner pattern detection</td><td><div class="mapped-test-entry"><span class="mapped-test-title">detects snake_case naming style</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L103" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">detects kebab-case naming style</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L115" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">classifies asset-like folders separately</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L127" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">detects Title Case With Spaces naming style</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L301" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">does not detect title-case-spaces when files have dash separators</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L314" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">returns defaults for empty workspace</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L63" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">returns defaults when fewer than 5 files exist</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L69" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">detects _executed marker pattern from majority of files</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L77" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">detects (fully executed) parenthetical marker</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L90" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-020] Convention-aware lint with custom markers</td><td><div class="mapped-test-entry"><span class="mapped-test-title">uses default marker when no conventions file exists</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L146" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">uses custom marker from conventions config</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L160" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-021] Convention-aware indexer marker detection</td><td><div class="mapped-test-entry"><span class="mapped-test-title">hasExecutedMarker accepts custom pattern</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L183" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-022] Init generates documentation and config files</td><td><div class="mapped-test-entry"><span class="mapped-test-title">creates documentation files on empty workspace</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L191" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">creates conventions.yaml during init</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L212" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">scans conventions on non-empty workspace</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L221" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-023] Partially executed document handling</td><td><div class="mapped-test-entry"><span class="mapped-test-title">hasPartiallyExecutedMarker detects _partially_executed suffix</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L235" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">hasExecutedMarker returns false for _partially_executed files</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L241" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">collectWorkspaceDocuments assigns partially_executed status</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L246" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">lint does not warn about missing marker for partially_executed files in executed/</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L274" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">scanner detects _partially_executed as a distinct candidate</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L286" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-024] Duplicate file lint detection</td><td><div class="mapped-test-entry"><span class="mapped-test-title">detects copy-pattern duplicates</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L328" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">detects timestamp-suffixed duplicates</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L341" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">does not flag unrelated files as duplicates</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L354" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-025] Root orphan lint detection</td><td><div class="mapped-test-entry"><span class="mapped-test-title">warns about files at workspace root</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L369" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">does not warn about known config files</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L381" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-026] Cross-contamination lint detection</td><td><div class="mapped-test-entry"><span class="mapped-test-title">warns when a high-confidence compound phrase suggests wrong domain folder</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L393" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">does not flag generic terms like agreement or policy</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L412" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">does not run when no non-lifecycle domain folders are configured</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L429" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-027] Init backward compatibility</td><td><div class="mapped-test-entry"><span class="mapped-test-title">init creates config files but not lifecycle directories</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L444" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">init is idempotent with conventions</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/conventions.test.ts#L456" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-028] FilesystemProvider operations</td><td><div class="mapped-test-entry"><span class="mapped-test-title">writeFile and readTextFile round-trip correctly</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/provider.test.ts#L38" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">readFile returns a Buffer</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/provider.test.ts#L45" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">mkdir with recursive creates nested directories</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/provider.test.ts#L54" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">readdir lists directory entries</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/provider.test.ts#L60" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">stat returns correct FileInfo</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/provider.test.ts#L71" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">walk recursively finds all files</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/provider.test.ts#L82" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">walk returns empty array for ENOENT</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/provider.test.ts#L96" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-029] MemoryProvider operations</td><td><div class="mapped-test-entry"><span class="mapped-test-title">exists returns false for missing paths</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/provider.test.ts#L103" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">seed creates file and parent directories</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/provider.test.ts#L108" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">writeFile and readTextFile round-trip</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/provider.test.ts#L117" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">readFile throws ENOENT for missing files</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/provider.test.ts#L124" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">mkdir with recursive creates nested directories</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/provider.test.ts#L129" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">readdir lists files and subdirectories</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/provider.test.ts#L137" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">stat returns correct info for files and directories</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/provider.test.ts#L154" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">stat throws ENOENT for missing paths</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/provider.test.ts#L168" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">walk recursively finds all files</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/provider.test.ts#L173" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">walk returns empty for nonexistent directory</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/provider.test.ts#L188" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">can initialize a workspace entirely in memory</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/provider.test.ts#L195" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-031] MCP workspace tool operations</td><td><div class="mapped-test-entry"><span class="mapped-test-title">lists expected tools</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace-mcp/tests/tools.test.ts#L15" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">returns workspace setup suggestions without mutating the filesystem</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace-mcp/tests/tools.test.ts#L26" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">reports invalid catalog entries with structured errors</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace-mcp/tests/tools.test.ts#L45" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">generates status index and returns lint findings</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace-mcp/tests/tools.test.ts#L67" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-032] Gemini manifest supports separate local MCP capabilities</td><td><div class="mapped-test-entry"><span class="mapped-test-title">defines local npx MCP servers without cwd overrides</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/gemini-extension-manifest.test.ts#L22" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr></tbody>
</table>
</details>

<details class="epic-breakdown">
<summary>Compliance &amp; Governance (46 scenarios)</summary>
<table class="epic-breakdown-table">
<thead><tr><th>Status</th><th>Scenario</th><th>Mapped tests</th></tr></thead>
<tbody><tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-001] Document and checklist entry use stable string IDs</td><td><div class="mapped-test-entry"><span class="mapped-test-title">accepts stable string IDs that are not UUIDs</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/schemas.test.ts#L143" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-002] Checklist entry references unknown document ID</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects checklist entry pointing to unknown document</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/schemas.test.ts#L193" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-003] One document maps to at most one checklist entry</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects mapping one document to multiple checklist entries</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/schemas.test.ts#L220" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-004] Checklist renders in canonical stage order</td><td><div class="mapped-test-entry"><span class="mapped-test-title">renders canonical stage order with nested numbering while keeping stable IDs unchanged</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/index.test.ts#L9" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-005] Child entry is rendered beneath parent entry</td><td><div class="mapped-test-entry"><span class="mapped-test-title">renders canonical stage order with nested numbering while keeping stable IDs unchanged</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/index.test.ts#L9" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-006] Inserting an entry does not require renumbering stored IDs</td><td><div class="mapped-test-entry"><span class="mapped-test-title">renders canonical stage order with nested numbering while keeping stable IDs unchanged</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/index.test.ts#L9" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-007] Document carries optional labels</td><td><div class="mapped-test-entry"><span class="mapped-test-title">accepts full input with documents, entries, signatories, and links</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/schemas.test.ts#L79" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-008] Partially signed document shows missing signer identity</td><td><div class="mapped-test-entry"><span class="mapped-test-title">renders named pending signatories and signature artifact locations for partially signed documents</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/index.test.ts#L91" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-009] Signatory stores signature artifact location</td><td><div class="mapped-test-entry"><span class="mapped-test-title">renders named pending signatories and signature artifact locations for partially signed documents</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/index.test.ts#L91" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">accepts full input with documents, entries, signatories, and links</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/schemas.test.ts#L79" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-010] Entry includes simple citation reference</td><td><div class="mapped-test-entry"><span class="mapped-test-title">renders citation-backed document rows and keeps unlinked actions in fallback sections</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/index.test.ts#L145" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">accepts full input with documents, entries, signatories, and links</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/schemas.test.ts#L79" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-011] Checklist entry with no document for pre-document task</td><td><div class="mapped-test-entry"><span class="mapped-test-title">allows checklist entries with no document_id</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/schemas.test.ts#L170" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-012] Unlinked action item is rendered in fallback section</td><td><div class="mapped-test-entry"><span class="mapped-test-title">renders citation-backed document rows and keeps unlinked actions in fallback sections</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/index.test.ts#L145" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-013] Issue with unsupported granular status is rejected</td><td><div class="mapped-test-entry"><span class="mapped-test-title">accepts all valid issue statuses and rejects legacy statuses</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/schemas.test.ts#L375" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-014] Checklist references working group roster document</td><td><div class="mapped-test-entry"><span class="mapped-test-title">renders citation-backed document rows and keeps unlinked actions in fallback sections</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/index.test.ts#L145" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-015] Legacy flat payload submitted to checklist creation</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects legacy flat payloads that omit document-first structures</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/schemas.test.ts#L526" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-017] Reject invalid patch without partial mutation</td><td><div class="mapped-test-entry"><span class="mapped-test-title">preserves all-or-nothing behavior when apply-time target resolution fails</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/patch-apply.test.ts#L690" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects patches whose resulting state violates checklist schema</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/patch-validator.test.ts#L183" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-018] Expected revision mismatch</td><td><div class="mapped-test-entry"><span class="mapped-test-title">enforces optimistic concurrency and all-or-nothing apply behavior</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/checklist-patch-workflow.test.ts#L143" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects stale revision for non-replay apply</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/patch-apply.test.ts#L430" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects stale expected revision during validation</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/patch-validator.test.ts#L158" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-019] Dry-run returns resolved plan without mutation</td><td><div class="mapped-test-entry"><span class="mapped-test-title">validates a patch with dry-run only and persists a validation artifact</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/patch-validator.test.ts#L82" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-020] Apply without validation_id is rejected</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects apply with missing validation artifact</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/patch-apply.test.ts#L358" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">requires validation_id for apply requests</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/patch-schemas.test.ts#L274" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-021] Apply with mismatched validation artifact is rejected</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects apply when validation_id does not match patch payload hash</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/patch-apply.test.ts#L382" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-022] Unknown target path is rejected</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects unknown target paths without guessing</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/patch-validator.test.ts#L130" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-024] Reused patch_id with different payload is rejected</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects reused patch_id with different payload hash</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/patch-apply.test.ts#L277" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-025] Citation with text only</td><td><div class="mapped-test-entry"><span class="mapped-test-title">allows patch citation with text only</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/patch-schemas.test.ts#L198" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-026] Citation with link and filepath</td><td><div class="mapped-test-entry"><span class="mapped-test-title">enforces citation value shape for citation paths</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/patch-schemas.test.ts#L164" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-027] Proposed patch is stored but not applied</td><td><div class="mapped-test-entry"><span class="mapped-test-title">stores PROPOSED mode patch without mutating checklist revision</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/patch-apply.test.ts#L840" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-030] Checklist structural validation rules</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects parent_entry_id that points to different stage</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/schemas.test.ts#L255" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects unknown related_document_ids in action items</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/schemas.test.ts#L286" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects unknown related_document_ids in issues</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/schemas.test.ts#L311" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">accepts all valid stage values</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/schemas.test.ts#L336" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">accepts all valid checklist entry status values</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/schemas.test.ts#L351" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">accepts all valid action item statuses</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/schemas.test.ts#L393" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">accepts all valid signatory statuses</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/schemas.test.ts#L408" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">signature artifact requires uri or path</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/schemas.test.ts#L423" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">defaults related_document_ids on action items and issues</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/schemas.test.ts#L449" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">parses minimal valid input</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/schemas.test.ts#L60" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-031] Checklist citation evidence validation</td><td><div class="mapped-test-entry"><span class="mapped-test-title">accepts citation text-only evidence payloads</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/schemas.test.ts#L489" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-032] Patch schema structural validation</td><td><div class="mapped-test-entry"><span class="mapped-test-title">enforces operation/value compatibility</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/patch-schemas.test.ts#L121" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">parses a valid patch envelope with default APPLY mode</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/patch-schemas.test.ts#L43" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects empty operation arrays</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/patch-schemas.test.ts#L73" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects paths that are not valid JSON pointers</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/patch-schemas.test.ts#L89" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-033] Validation artifact TTL expiry</td><td><div class="mapped-test-entry"><span class="mapped-test-title">expires validation artifacts after TTL</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/patch-validator.test.ts#L581" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-001] Multi-commit PR license check</td><td><div class="mapped-test-entry"><span class="mapped-test-title">uses PR base SHA for pull_request events</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/workflow-license-check.test.ts#L16" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-002] Push to main license check</td><td><div class="mapped-test-entry"><span class="mapped-test-title">uses HEAD~1 for push events</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/workflow-license-check.test.ts#L26" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-003] CI blocks repository-time derivatives for non-derivative license</td><td><div class="mapped-test-entry"><span class="mapped-test-title">fill command blocks templates marked allow_derivatives=false</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/cli-interface.test.ts#L302" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">blocks template fill when allow_derivatives is false</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/fill-command.inprocess.test.ts#L223" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">requires attribution text for CC-BY family licenses</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/license-validation.test.ts#L52" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-004] CI blocks modification of CC BY-ND template</td><td><div class="mapped-test-entry"><span class="mapped-test-title">checks modified allow_derivatives=false templates and exits non-zero</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/workflow-license-check.test.ts#L34" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-ENG-001] Sandbox enabled by default</td><td><div class="mapped-test-entry"><span class="mapped-test-title">fillDocx uses sandboxed rendering by default</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/security-behavior.test.ts#L57" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-ENG-002] Malicious template expression blocked</td><td><div class="mapped-test-entry"><span class="mapped-test-title">fillDocx blocks malicious template expressions</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/security-behavior.test.ts#L86" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-FIL-001] Unknown key in fill values</td><td><div class="mapped-test-entry"><span class="mapped-test-title">fillTemplate warns on unknown input keys</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/security-behavior.test.ts#L105" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-016] DOCX file detected in recipe directory</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects committed DOCX files in recipe directories</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/recipe-validation-negative.test.ts#L61" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-018] Replacement target not covered by metadata</td><td><div class="mapped-test-entry"><span class="mapped-test-title">warns when replacement targets are not in metadata fields</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/recipe-validation-negative.test.ts#L73" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-025] Invalid computed profile fails recipe validation</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects computed profiles with unsupported predicate operators</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/recipe-validation-negative.test.ts#L160" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-027] Unsafe replacement tags and invalid normalize configs rejected</td><td><div class="mapped-test-entry"><span class="mapped-test-title">fails when clean.json has invalid schema</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/external-validation-negative.test.ts#L184" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects invalid normalize.json configuration</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/recipe-validation-negative.test.ts#L194" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects invalid clean.json configuration</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/recipe-validation-negative.test.ts#L227" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects unsafe non-identifier replacement tags</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/recipe-validation-negative.test.ts#L89" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-006] Validate catalog entry with checksum</td><td><div class="mapped-test-entry"><span class="mapped-test-title">accepts entries with source_url and checksum</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/catalog.test.ts#L24" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-007] Reject missing checksum</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects entries missing checksum</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/catalog.test.ts#L53" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-008] Successful download and checksum verification</td><td><div class="mapped-test-entry"><span class="mapped-test-title">downloads allowed entries, skips pointer-only entries, and blocks checksum mismatches</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/catalog.test.ts#L79" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-009] Checksum mismatch blocks placement</td><td><div class="mapped-test-entry"><span class="mapped-test-title">downloads allowed entries, skips pointer-only entries, and blocks checksum mismatches</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/catalog.test.ts#L79" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-010] Pointer-only entry behavior</td><td><div class="mapped-test-entry"><span class="mapped-test-title">downloads allowed entries, skips pointer-only entries, and blocks checksum mismatches</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/catalog.test.ts#L79" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-030] Zod-to-JSON-Schema construct mappings</td><td><div class="mapped-test-entry"><span class="mapped-test-title">z.literal(1) produces const: 1</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/json-schema-snapshot.test.ts#L11" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">z.string().regex() produces pattern field</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/json-schema-snapshot.test.ts#L17" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">z.iso.datetime() produces format: date-time</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/json-schema-snapshot.test.ts#L25" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">z.record(z.string(), z.string()) produces additionalProperties</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/json-schema-snapshot.test.ts#L32" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">z.enum() produces enum array</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/json-schema-snapshot.test.ts#L41" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">FormsCatalogSchema snapshot</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/json-schema-snapshot.test.ts#L52" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">ConventionConfigSchema snapshot</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/json-schema-snapshot.test.ts#L57" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr></tbody>
</table>
</details>

<details class="epic-breakdown">
<summary>Discovery &amp; Metadata (32 scenarios)</summary>
<table class="epic-breakdown-table">
<thead><tr><th>Status</th><th>Scenario</th><th>Mapped tests</th></tr></thead>
<tbody><tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-001] Placeholder discovery</td><td><div class="mapped-test-entry"><span class="mapped-test-title">discovers bracketed placeholders in DOCX</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/scan-command.test.ts#L58" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-002] Draft replacements output</td><td><div class="mapped-test-entry"><span class="mapped-test-title">writes draft replacements JSON</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/scan-command.test.ts#L69" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-012] JSON output includes full metadata sorted by name</td><td><div class="mapped-test-entry"><span class="mapped-test-title">emits sorted JSON envelope with normalized sources and mapped fields</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/list-command.inprocess.test.ts#L158" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">items are sorted by name</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/list.test.ts#L67" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">items include full template metadata in json output</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/list.test.ts#L74" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-013] --json-strict exits non-zero on metadata errors</td><td><div class="mapped-test-entry"><span class="mapped-test-title">exits non-zero in --json-strict mode when metadata loading fails</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/list-command.inprocess.test.ts#L229" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">--json-strict exits non-zero on metadata errors</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/list.test.ts#L94" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-023] List JSON envelope structure</td><td><div class="mapped-test-entry"><span class="mapped-test-title">has schema_version 1</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/list.test.ts#L41" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">has a cli_version string</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/list.test.ts#L46" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">has items as an array</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/list.test.ts#L52" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">items contain name and license or license_note keys</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/list.test.ts#L57" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-024] JSON output preserves array item schemas</td><td><div class="mapped-test-entry"><span class="mapped-test-title">preserves nested array item schemas in JSON output</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/list-command.inprocess.test.ts#L258" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CLI-025] JSON output exposes option lists for enum and multiselect</td><td><div class="mapped-test-entry"><span class="mapped-test-title">exposes options on enum fields in JSON output, omits for non-enum</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/list-command.inprocess.test.ts#L322" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-ENG-004] Template placeholder extraction</td><td><div class="mapped-test-entry"><span class="mapped-test-title">discovers bracketed placeholders in DOCX</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/scan-command.test.ts#L58" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-ENG-007] OOXML part discovery</td><td><div class="mapped-test-entry"><span class="mapped-test-title">finds all part types in a full zip</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/ooxml-parts.test.ts#L22" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">ignores non-matching files in word/</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/ooxml-parts.test.ts#L40" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">returns flat list excluding footnotes</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/ooxml-parts.test.ts#L55" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">returns empty array when no parts exist</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/ooxml-parts.test.ts#L73" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">finds document.xml only in minimal zip</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/ooxml-parts.test.ts#L9" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-ENG-010] Clean config validation and defaults</td><td><div class="mapped-test-entry"><span class="mapped-test-title">accepts valid clean config</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L742" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">defaults missing fields</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L754" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-014] Valid recipe metadata</td><td><div class="mapped-test-entry"><span class="mapped-test-title">accepts valid recipe metadata</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L653" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-015] Missing source_url</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects missing source_url</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L667" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-042] Recipe metadata optional field default</td><td><div class="mapped-test-entry"><span class="mapped-test-title">defaults optional to false</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L680" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-043] Guidance output validation</td><td><div class="mapped-test-entry"><span class="mapped-test-title">accepts valid guidance output</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L766" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects missing extractedFrom</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L782" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects invalid source type</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L793" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-003] Enum field without options</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects enum field without options</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L107" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-004] Default value type mismatch</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects number field with non-numeric default</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L294" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-009] Valid metadata passes validation</td><td><div class="mapped-test-entry"><span class="mapped-test-title">accepts valid template metadata</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L392" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-010] Missing metadata field fails validation</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects metadata missing required license field</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L409" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-011] Invalid license enum fails validation</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects invalid license</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L518" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-013] External metadata requires source_sha256</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects missing source_sha256</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/external.test.ts#L52" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-014] External template appears in list output</td><td><div class="mapped-test-entry"><span class="mapped-test-title">list --json includes yc-safe templates</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/external.test.ts#L193" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-019] Scan metadata completeness assessment</td><td><div class="mapped-test-entry"><span class="mapped-test-title">flags short placeholders discovered by scan that are not mapped</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/scan-metadata-completeness.test.ts#L111" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">maps sampled NVCA scanned placeholders to metadata-backed replacements</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/scan-metadata-completeness.test.ts#L139" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-020] Field definition edge cases</td><td><div class="mapped-test-entry"><span class="mapped-test-title">accepts enum field with options</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L120" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects enum field with empty options</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L134" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">accepts number field with numeric default</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L308" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects boolean field with invalid default</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L322" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">accepts a valid string field</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L40" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-021] Required fields referential integrity</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects unknown priority_fields entries</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L535" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects duplicate priority_fields entries</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L553" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-028] Array field item schemas pass validation</td><td><div class="mapped-test-entry"><span class="mapped-test-title">accepts an array field with nested item schema</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L81" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-036] Valid credits and derived_from parse</td><td><div class="mapped-test-entry"><span class="mapped-test-title">parse-time validation lives in the metadata loader; covered indirectly by list/fill flows that call loadMetadata, but a direct unit test is pending</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/list-command.inprocess.test.ts#L491" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">accepts valid credits and derived_from</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L571" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-037] Missing credits defaults to empty array</td><td><div class="mapped-test-entry"><span class="mapped-test-title">default-empty-array behavior is enforced by the schema and exercised indirectly via list-command projection above; direct unit test is pending</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/list-command.inprocess.test.ts#L493" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">defaults missing credits to empty array</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L596" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-038] Invalid credit role is rejected</td><td><div class="mapped-test-entry"><span class="mapped-test-title">invalid-role rejection is enforced by the metadata schema; a direct negative test is pending</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/list-command.inprocess.test.ts#L495" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects credit role outside the closed enum</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L615" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-039] list --json projects credits and derived_from on templates</td><td><div class="mapped-test-entry"><span class="mapped-test-title">projects credits and derived_from onto internal and external templates; omits them on recipes</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/list-command.inprocess.test.ts#L424" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-049] Valid multiselect metadata parses</td><td><div class="mapped-test-entry"><span class="mapped-test-title">accepts a multiselect field with options, derive_booleans, and JSON default</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L148" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">accepts an empty multiselect JSON default</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L219" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-050] Invalid multiselect metadata is rejected</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects multiselect fields without options</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L164" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects multiselect options that are not valid identifiers</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L177" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects duplicate multiselect options</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L191" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects derive_booleans on non-multiselect fields</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L205" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects multiselect defaults outside the options allowlist</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L234" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects malformed multiselect JSON defaults</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L249" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects multiselect defaults with non-string entries</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L264" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects multiselect defaults with duplicate entries</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L279" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-051] Derived boolean collisions are rejected</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects top-level field collisions with derived boolean keys</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L472" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects derived key collisions between multiselect fields</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L494" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects derived key collisions in external metadata</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L696" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects derived key collisions in recipe metadata</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/metadata.test.ts#L718" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr></tbody>
</table>
</details>

<details class="epic-breakdown">
<summary>Verification &amp; Drift (30 scenarios)</summary>
<table class="epic-breakdown-table">
<thead><tr><th>Status</th><th>Scenario</th><th>Mapped tests</th></tr></thead>
<tbody><tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-014] Retroactive specs are added for implemented behavior</td><td><div class="mapped-test-entry"><span class="mapped-test-title">enforces behavior-oriented scenario bullets</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/validate-openspec-coverage-script.test.ts#L58" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-015] Behavior-level Allure tests are linked to canonical scenarios</td><td><div class="mapped-test-entry"><span class="mapped-test-title">keeps canonical OpenSpec-to-Allure mappings green for modular capabilities</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/validate-openspec-coverage-script.test.ts#L77" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-026] Coverage script CLI argument parsing</td><td><div class="mapped-test-entry"><span class="mapped-test-title">parses args without writing matrix by default</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/validate-openspec-coverage-script.test.ts#L18" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">parses --write-matrix with default path when value is omitted</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/validate-openspec-coverage-script.test.ts#L24" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">parses --write-matrix with a custom path relative to cwd</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/validate-openspec-coverage-script.test.ts#L29" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">only writes a matrix when requested</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/validate-openspec-coverage-script.test.ts#L34" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-027] Coverage script validation rules</td><td><div class="mapped-test-entry"><span class="mapped-test-title">accepts openspec mappings only from Allure wrappers</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/validate-openspec-coverage-script.test.ts#L103" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects openspec mappings from non-Allure wrappers</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/validate-openspec-coverage-script.test.ts#L169" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects path-dependent scenario prose</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/validate-openspec-coverage-script.test.ts#L88" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-DST-028] Active change-package scenario collection</td><td><div class="mapped-test-entry"><span class="mapped-test-title">collects scenario IDs from active change-package specs</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/validate-openspec-coverage-script.test.ts#L123" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">does not mark active-change scenario IDs as unknown</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/validate-openspec-coverage-script.test.ts#L157" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-ENG-003] Output heading validation</td><td><div class="mapped-test-entry"><span class="mapped-test-title">compares heading counts from extracted document XML</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/output-validation.test.ts#L78" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-FIL-026] Malformed multiselect JSON input is rejected</td><td><div class="mapped-test-entry"><span class="mapped-test-title">throws a clear error for malformed multiselect JSON input</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L532" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-FIL-028] Multiselect runtime input enforces the closed allowlist</td><td><div class="mapped-test-entry"><span class="mapped-test-title">rejects multiselect runtime input with non-string entries</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L623" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects multiselect runtime input with unknown options</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L640" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-009] Smart quote handling</td><td><div class="mapped-test-entry"><span class="mapped-test-title">matches with smart quotes normalized to straight</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/verifier.test.ts#L123" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-011] All values present</td><td><div class="mapped-test-entry"><span class="mapped-test-title">finds values present only in header text</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/verifier.test.ts#L185" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-013] Leftover brackets detected</td><td><div class="mapped-test-entry"><span class="mapped-test-title">detects leftover bracketed placeholders from replacement keys</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/verifier.test.ts#L213" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-017] Scaffold recipe validation</td><td><div class="mapped-test-entry"><span class="mapped-test-title">validates nvca-certificate-of-incorporation (scaffold)</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/recipe-validation.test.ts#L29" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-019] Output structure matches source</td><td><div class="mapped-test-entry"><span class="mapped-test-title">compares heading counts from extracted document XML</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/output-validation.test.ts#L78" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-020] Structural drift detected</td><td><div class="mapped-test-entry"><span class="mapped-test-title">detects structural drift when heading counts differ</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/output-validation.test.ts#L97" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-026] Bundled recipes pass validation</td><td><div class="mapped-test-entry"><span class="mapped-test-title">validates nvca-voting-agreement (full recipe)</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/recipe-validation.test.ts#L16" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">validates nvca-voting-agreement metadata</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/recipe-validation.test.ts#L43" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">validates scaffold metadata</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/recipe-validation.test.ts#L55" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-028] Source drift hash and anchor verification</td><td><div class="mapped-test-entry"><span class="mapped-test-title">fails when source hash mismatches metadata</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/source-drift-canary.test.ts#L126" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">reports structural anchor drift for missing replacement and normalize anchors</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/source-drift-canary.test.ts#L149" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">passes when hash and structural anchors match recipe configuration</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/source-drift-canary.test.ts#L95" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-029] Source drift structure signature</td><td><div class="mapped-test-entry"><span class="mapped-test-title">emits basic structure signature useful for drift diagnostics</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/source-drift-canary.test.ts#L180" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-040] Verifier text normalization</td><td><div class="mapped-test-entry"><span class="mapped-test-title">converts non-breaking spaces to regular spaces</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/verifier.test.ts#L51" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">normalizes smart single quotes</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/verifier.test.ts#L57" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">normalizes smart double quotes</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/verifier.test.ts#L62" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">collapses horizontal whitespace to single space</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/verifier.test.ts#L68" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">preserves newlines</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/verifier.test.ts#L73" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">trims</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/verifier.test.ts#L77" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-041] Verifier skips empty and whitespace-only values</td><td><div class="mapped-test-entry"><span class="mapped-test-title">skips whitespace-only values</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/verifier.test.ts#L103" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">matches with collapsed whitespace</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/verifier.test.ts#L145" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">matches with non-breaking space</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/verifier.test.ts#L165" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">skips empty string values</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/verifier.test.ts#L83" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-001] Required field missing from DOCX</td><td><div class="mapped-test-entry"><span class="mapped-test-title">reports error for missing required placeholder</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L221" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-002] Optional field missing from DOCX</td><td><div class="mapped-test-entry"><span class="mapped-test-title">reports warning for missing optional placeholder</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L240" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-015] All bundled templates pass validation</td><td><div class="mapped-test-entry"><span class="mapped-test-title">validates bonterms-mutual-nda without errors</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L111" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">validates common-paper-mutual-nda without errors</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L125" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">validates openagreements-employment-offer-letter without errors</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L139" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">validates openagreements-employee-ip-inventions-assignment without errors</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L153" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">validates openagreements-employment-confidentiality-acknowledgement without errors</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L167" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">validates openagreements-restrictive-covenant-wyoming without errors</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L181" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">validates bonterms-mutual-nda metadata</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L197" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">validates employment offer metadata</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L208" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-016] Declarative replacement coverage validation</td><td><div class="mapped-test-entry"><span class="mapped-test-title">reports required-field errors for declarative replacements missing metadata tags</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L259" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-052] Validator rejects direct multiselect IF references</td><td><div class="mapped-test-entry"><span class="mapped-test-title">does not warn about multiselect fields when direct DOCX conditionals use only derived keys</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L476" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">does not warn about multiselect fields when replacement values use only derived keys</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L489" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects direct multiselect IF references in direct DOCX scanning mode</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L505" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">rejects direct multiselect IF references in replacements mode even without derive_booleans</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L517" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-TMP-053] Coverage suppression requires at least one derived key reference</td><td><div class="mapped-test-entry"><span class="mapped-test-title">warns when a derive_booleans multiselect is declared but no derived key is referenced (direct DOCX)</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L567" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">errors when a priority derive_booleans multiselect is declared but no derived key is referenced (direct DOCX)</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L579" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">warns when a derive_booleans multiselect is declared but no derived key is referenced (replacements mode)</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L592" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">errors when a priority derive_booleans multiselect is declared but no derived key is referenced (replacements mode)</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/template-validation.test.ts#L607" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-011] Executed status inferred from filename</td><td><div class="mapped-test-entry"><span class="mapped-test-title">infers executed marker from filename</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/status.test.ts#L21" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-012] No executed marker</td><td><div class="mapped-test-entry"><span class="mapped-test-title">infers executed marker from filename</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/status.test.ts#L21" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-013] Generate contracts index</td><td><div class="mapped-test-entry"><span class="mapped-test-title">detects stale contracts-index.yaml when files are newer than the index</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/status.test.ts#L50" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-014] Disallowed file type placement</td><td><div class="mapped-test-entry"><span class="mapped-test-title">collects document records and reports lint findings</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/status.test.ts#L26" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-WKS-015] Stale index detection</td><td><div class="mapped-test-entry"><span class="mapped-test-title">detects stale contracts-index.yaml when files are newer than the index</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../packages/contracts-workspace/tests/status.test.ts#L50" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr></tbody>
</table>
</details>

<details class="epic-breakdown">
<summary>No epic label (8 scenarios, 8 missing)</summary>
<table class="epic-breakdown-table">
<thead><tr><th>Status</th><th>Scenario</th><th>Mapped tests</th></tr></thead>
<tbody><tr><td><span class="scenario-status is-missing">missing</span></td><td>[OA-DST-070] Pending-style mappings render as missing in trust surfaces</td><td><div class="mapped-test-entry"><span class="mapped-test-title">No automated test yet verifies that skip/todo-only mappings are normalized to</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/repo-trust-signals.test.ts#L79" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><code>across trust-facing outputs.</code></div></td></tr>
<tr><td><span class="scenario-status is-missing">missing</span></td><td>[OA-DST-071] Covered mappings remain covered</td><td><div class="mapped-test-entry"><span class="mapped-test-title">No automated test yet verifies that at least one covered mapped test keeps the trust-facing scenario status at</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/repo-trust-signals.test.ts#L86" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><code>.</code></div></td></tr>
<tr><td><span class="scenario-status is-missing">missing</span></td><td>[OA-DST-072] Runtime artifact must be present and fresh</td><td><div class="mapped-test-entry"><span class="mapped-test-title">Partial: scripts/check_system_card_runtime.mjs validates presence + required fields and is wired into trust:check (package.json), but freshness is only enforced when invoked with</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/repo-trust-signals.test.ts#L93" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><code>, which the trust:check wiring omits — so the freshness gate is currently a no-op. No vitest binding asserts either presence/shape or the freshness window.</code></div></td></tr>
<tr><td><span class="scenario-status is-missing">missing</span></td><td>[OA-DST-073] Publish changed skills after a squash merge</td><td><div class="mapped-test-entry"><span class="mapped-test-title">No automated coverage yet. scripts/publish_skills_directories.mjs implements</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/skills-directory-publish.test.ts#L16" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><code>via</code></div><div class="mapped-test-entry"><code>, but no vitest or workflow test executes the squash-merge changed-skill publish path.</code></div></td></tr>
<tr><td><span class="scenario-status is-missing">missing</span></td><td>[OA-DST-074] Publish a selected subset of skills</td><td><div class="mapped-test-entry"><span class="mapped-test-title">No automated coverage yet. scripts/publish_skills_directories.mjs resolves</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/skills-directory-publish.test.ts#L23" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><code>and rejects unknown skill names with an &quot;Unknown selected skill(s)&quot; error, but: (a) no test asserts subset selection, and (b) the script does not currently distinguish &quot;directory does not exist&quot; from &quot;directory exists but lacks SKILL.md&quot; — both fall through the same Unknown-skill path. The canonical scenario&#39;s &quot;lacks a SKILL.md&quot; branch is therefore partially implemented; tightening either the script or the scenario is a future follow-up.</code></div></td></tr>
<tr><td><span class="scenario-status is-missing">missing</span></td><td>[OA-DST-075] ClawHub publish uses declared skill version</td><td><div class="mapped-test-entry"><span class="mapped-test-title">No automated coverage yet. scripts/publish_skills_directories.mjs reads</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/skills-directory-publish.test.ts#L30" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><code>from each</code></div><div class="mapped-test-entry"><code>and passes it to</code></div><div class="mapped-test-entry"><code>, but no test inspects the constructed publish command.</code></div></td></tr>
<tr><td><span class="scenario-status is-missing">missing</span></td><td>[OA-DST-076] Workflow excludes skills.sh from publish steps</td><td><div class="mapped-test-entry"><span class="mapped-test-title">No automated coverage yet. The workflow and release docs currently automate only Smithery and ClawHub and describe</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/skills-directory-publish.test.ts#L37" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><code>as discovery-only, but no test locks that policy.</code></div></td></tr>
<tr><td><span class="scenario-status is-missing">missing</span></td><td>[OA-DST-080] Isolated runtime smoke validates package startup and commands</td><td><div class="mapped-test-entry"><span class="mapped-test-title">Enforced by CI job &quot;isolated-runtime-smoke&quot; via</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/local-mcp-release-flow.test.ts#L16" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><code>. No vitest test installs packed tarballs into a clean temp directory or exercises both local MCP binaries from that isolated context yet.</code></div></td></tr></tbody>
</table>
</details>

<details class="epic-breakdown">
<summary>Cleaning &amp; Normalization (3 scenarios)</summary>
<table class="epic-breakdown-table">
<thead><tr><th>Status</th><th>Scenario</th><th>Mapped tests</th></tr></thead>
<tbody><tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-ENG-008] Bracket artifact cleanup and declarative rules</td><td><div class="mapped-test-entry"><span class="mapped-test-title">no-op when no declarative rules (does not strip brackets, does not corrupt formatting)</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/bracket-normalizer.test.ts#L135" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">applies declarative paragraph rules with heading aliases and field interpolation</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/bracket-normalizer.test.ts#L162" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">tracks expectation failures when a rule start/end anchor pair is not found</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/bracket-normalizer.test.ts#L243" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">declarative rule preserves bold formatting on adjacent runs</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/bracket-normalizer.test.ts#L283" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">declarative rule preserves underline formatting when replacing brackets</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/bracket-normalizer.test.ts#L329" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-ENG-009] Declarative option selection and warning</td><td><div class="mapped-test-entry"><span class="mapped-test-title">keeps only selected option via declarative anchors</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/declarative-prune.test.ts#L329" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">emits warning when selected option anchor is not found</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/declarative-prune.test.ts#L355" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">fills and cleans targeted NVCA clauses via declarative paragraph rules</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/declarative-prune.test.ts#L378" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-RCP-039] Replacement key type parsing</td><td><div class="mapped-test-entry"><span class="mapped-test-title">parses a context key with &quot; &gt; &quot; separator</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/replacement-keys.test.ts#L17" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">splits on first &quot; &gt; &quot; only</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/replacement-keys.test.ts#L27" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">does not confuse &gt; inside text without spaces</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/replacement-keys.test.ts#L37" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">returns key as-is for simple keys</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/replacement-keys.test.ts#L45" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">extracts placeholder from context key</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/replacement-keys.test.ts#L49" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">parses a simple key</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/recipe/replacement-keys.test.ts#L8" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr></tbody>
</table>
</details>

<details class="epic-breakdown">
<summary>Agreement Signing (2 scenarios, 2 missing)</summary>
<table class="epic-breakdown-table">
<thead><tr><th>Status</th><th>Scenario</th><th>Mapped tests</th></tr></thead>
<tbody><tr><td><span class="scenario-status is-missing">missing</span></td><td>[OA-DSG-000] DocuSign requirements remain in active change</td><td><div class="mapped-test-entry"><span class="mapped-test-title">DocuSign provider capability is a restructuring stub until add-agreement-signing is archived into the new capability.</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/modular-spec-stubs.test.ts#L26" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-missing">missing</span></td><td>[OA-SIG-000] Signing requirements remain in active change</td><td><div class="mapped-test-entry"><span class="mapped-test-title">Signing capability is a restructuring stub until add-agreement-signing is archived into the new capability.</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/modular-spec-stubs.test.ts#L19" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr></tbody>
</table>
</details>

<details class="epic-breakdown">
<summary>Checklist Patch Workflow (2 scenarios)</summary>
<table class="epic-breakdown-table">
<thead><tr><th>Status</th><th>Scenario</th><th>Mapped tests</th></tr></thead>
<tbody><tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-016] Apply valid multi-operation patch atomically</td><td><div class="mapped-test-entry"><span class="mapped-test-title">applies a multi-operation patch from one source event and renders evidence</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/checklist-patch-workflow.test.ts#L344" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">applies a validated patch and increments revision exactly once</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/patch-apply.test.ts#L148" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-023] Replay same patch_id does not duplicate effects</td><td><div class="mapped-test-entry"><span class="mapped-test-title">supports idempotent replay and rejects patch_id hash conflicts</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/checklist-patch-workflow.test.ts#L236" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div><div class="mapped-test-entry"><span class="mapped-test-title">returns no-op on idempotent replay with same patch_id and payload</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../src/core/checklist/patch-apply.test.ts#L211" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr></tbody>
</table>
</details>

<details class="epic-breakdown">
<summary>Template Rendering (2 scenarios)</summary>
<table class="epic-breakdown-table">
<thead><tr><th>Status</th><th>Scenario</th><th>Mapped tests</th></tr></thead>
<tbody><tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-028] Stage-first checklist rendering with fallbacks</td><td><div class="mapped-test-entry"><span class="mapped-test-title">renders stage-first 4-column checklist with linked items and unlinked fallbacks</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/closing-checklist-rendering.test.ts#L160" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr>
<tr><td><span class="scenario-status is-covered">covered</span></td><td>[OA-CKL-029] Working group member rendering</td><td><div class="mapped-test-entry"><span class="mapped-test-title">renders one line per working group member</span><span class="mapped-test-links"><a class="mapped-test-source-link" href="../../integration-tests/working-group-list-rendering.test.ts#L87" target="_blank" rel="noopener noreferrer">Test code</a><a class="mapped-test-allure-link is-fallback" href="https://tests.openagreements.org" target="_blank" rel="noopener noreferrer">Test report</a></span></div></td></tr></tbody>
</table>
</details>

## Key Results

| Metric | Value |
|---|---:|
| Spec scenarios | 249 |
| Covered scenarios | 231 |
| Missing scenarios | 18 |
| Mapping coverage | 92.8% |
| Test epics measured | 10 |
| Latest run tests | 0 |
| Latest passing tests | 0 |
| Latest failing tests | Unavailable |
| Latest pass rate | 0.0% |

Missing scenarios found: 18
Top items:
- [OA-DST-073] Publish changed skills after a squash merge (distribution) - missing
- [OA-DST-074] Publish a selected subset of skills (distribution) - missing
- [OA-DST-075] ClawHub publish uses declared skill version (distribution) - missing
- [OA-DST-076] Workflow excludes skills.sh from publish steps (distribution) - missing
- [OA-DST-077] Missing target secret blocks requested publish (distribution) - missing
- [OA-DST-080] Isolated runtime smoke validates package startup and commands (distribution) - missing
- [OA-LEG-001] Reader follows modular capability specs (open-agreements) - missing
- [OA-DSG-000] DocuSign requirements remain in active change (provider-docusign) - missing
- [OA-DST-064] Deterministic README generation (quality-gates) - missing
- [OA-DST-065] Shared catalog data without site side effects (quality-gates) - missing
- ...and 8 more (see traceability matrix).

## Live Signals

| Signal | Link |
|---|---|
| Test report | [tests.openagreements.org](https://tests.openagreements.org) |
| Code coverage (Codecov) | [![Coverage](https://img.shields.io/codecov/c/github/open-agreements/open-agreements/main)](https://app.codecov.io/gh/open-agreements/open-agreements) |
| CI status | [![CI](https://github.com/open-agreements/open-agreements/actions/workflows/ci.yml/badge.svg)](https://github.com/open-agreements/open-agreements/actions/workflows/ci.yml) |
| npm downloads | [![npm](https://img.shields.io/npm/dm/open-agreements.svg)](https://www.npmjs.com/package/open-agreements) |

## Verification Metadata

<details>
<summary>Build and provenance links</summary>

- Runtime source: build metadata
- Commit: [191ab60](https://github.com/open-agreements/open-agreements/commit/191ab607adf2263e62dc7e4144cb5c961970df86)
- CI run: [workflow run](https://github.com/open-agreements/open-agreements/actions/workflows/ci.yml)
- Test report: [tests.openagreements.org](https://tests.openagreements.org)
- Mapped test entries link to repo-relative source paths; matching test-result links are shown when available.

</details>

## Limitations

- Scenario mapping coverage indicates linkage between scenarios and tests, not exhaustive code-path coverage.
- Runtime pass/fail counters are not fetched in build-metadata mode; freshness tracks the commit that last ran `npm run trust:rebuild`.
- Independent third-party audits are out of scope for this page.

## Appendix: Methods (Technical)

- Scenario mapping numbers are read from the generated OpenSpec traceability matrix.
- Runtime metadata is exported from build/deployment environment variables.
- This artifact is regenerated by running `npm run trust:rebuild`.

