diff --git a/dashboard/src/repos.md b/dashboard/src/repos.md
index c03130c..4b4425e 100644
--- a/dashboard/src/repos.md
+++ b/dashboard/src/repos.md
@@ -140,6 +140,13 @@ display(html`
## Coverage Map
```js
+// Returns a new "⚠ not ingested" span with a ? help button each time it's called.
+function _sbomGap() {
+ const el = html`⚠ not ingested`;
+ withDocHelp(el, "/docs/repos");
+ return el;
+}
+
// Group by domain
const byDomain = {};
for (const r of repoRows) {
@@ -187,7 +194,7 @@ if (domainBlocks.length === 0) {
${r._integrating
? html`⚙ integrating`
: html`ready`} |
- ${r.sbom} |
+ ${r._hasSbom ? r.sbom : _sbomGap()} |
${r.pkgs} |
${r.path} |
`)}
@@ -294,8 +301,9 @@ custodian register-project --domain <slug>
.repo-table tr:last-child td { border-bottom: none; }
.row-gap { background: #fffbf0; }
.repo-cell { font-family: monospace; }
-.sbom-ok { color: #2e7d32; font-weight: 600; }
-.sbom-warn { color: #856404; font-weight: 600; }
+.sbom-ok { color: #2e7d32; font-weight: 600; }
+.sbom-warn { color: #856404; font-weight: 600; }
+.sbom-gap-hint { position: relative; display: inline-block; padding-right: 1.8rem; }
.path-cell { font-family: monospace; font-size: 0.78rem; color: gray; }
.card-integrating { border: 2px solid #7c3aed; }