diff --git a/apps/console/styles.css b/apps/console/styles.css
index 782a7a2..e0c8eba 100644
--- a/apps/console/styles.css
+++ b/apps/console/styles.css
@@ -102,6 +102,8 @@ footer { border-top: 1px solid var(--line); color: var(--muted); display: flex;
.task-header { display: none; }
.task-row { gap: 12px; grid-template-columns: 1fr 1fr; padding: 18px 6px; }
.task-title { grid-column: 1 / -1; }
+ .task-cell { align-items: flex-start; display: flex; flex-direction: column; gap: 6px; }
+ .task-cell::before { color: var(--muted); content: attr(data-label); font-family: ui-monospace, monospace; font-size: 9px; letter-spacing: .1em; text-transform: uppercase; }
.flow { grid-template-columns: 1fr; }
.flow li { min-height: 150px; }
.flow li > span { margin-top: 36px; }
@@ -142,3 +144,4 @@ h3 { font-size: 19px; margin: 5px 0 0; }
.project-metrics article { border-bottom: 1px solid var(--line); }
.milestone-grid { grid-template-columns: 1fr; }
.milestone-heading, .pilot-heading { align-items: start; flex-direction: column; }
+}
diff --git a/docs/app.js b/docs/app.js
index 6456080..21036e5 100644
--- a/docs/app.js
+++ b/docs/app.js
@@ -25,6 +25,15 @@ function cell(className, text) {
return node;
}
+function taskCell(label, className, text) {
+ const node = document.createElement("span");
+ node.className = "task-cell";
+ node.dataset.label = label;
+ node.setAttribute("role", "cell");
+ node.append(cell(className, text));
+ return node;
+}
+
function stateLabel(state) {
return state.replaceAll("_", " ");
}
@@ -86,6 +95,7 @@ function renderTask(task) {
row.setAttribute("role", "row");
const title = document.createElement("span");
title.className = "task-title";
+ title.setAttribute("role", "cell");
const strong = document.createElement("strong");
strong.textContent = task.title;
const small = document.createElement("small");
@@ -93,10 +103,10 @@ function renderTask(task) {
title.append(strong, small);
row.append(
title,
- cell(`badge badge-state ${task.policy_valid ? "" : "badge-policy-failed"}`, stateLabel(task.derived_state)),
- cell(`badge badge-risk-${task.risk}`, task.risk),
- cell("", String(task.evidence_count)),
- cell("", String(task.review_count))
+ taskCell("State", `badge badge-state ${task.policy_valid ? "" : "badge-policy-failed"}`, stateLabel(task.derived_state)),
+ taskCell("Risk", `badge badge-risk-${task.risk}`, task.risk),
+ taskCell("Evidence", "", String(task.evidence_count)),
+ taskCell("Reviews", "", String(task.review_count))
);
const gates = document.createElement("div");
gates.className = "task-gates";
diff --git a/docs/index.html b/docs/index.html
index a79b4fb..b7005bd 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -38,6 +38,10 @@
One record for work
across many minds.
Tasks—
Active—
Evidence—
+
Reviews—
+
Decisions—
+
+
@@ -65,9 +69,6 @@
Pilot readiness
-
Reviews—
-
Decisions—
-
diff --git a/docs/styles.css b/docs/styles.css
index 782a7a2..e0c8eba 100644
--- a/docs/styles.css
+++ b/docs/styles.css
@@ -102,6 +102,8 @@ footer { border-top: 1px solid var(--line); color: var(--muted); display: flex;
.task-header { display: none; }
.task-row { gap: 12px; grid-template-columns: 1fr 1fr; padding: 18px 6px; }
.task-title { grid-column: 1 / -1; }
+ .task-cell { align-items: flex-start; display: flex; flex-direction: column; gap: 6px; }
+ .task-cell::before { color: var(--muted); content: attr(data-label); font-family: ui-monospace, monospace; font-size: 9px; letter-spacing: .1em; text-transform: uppercase; }
.flow { grid-template-columns: 1fr; }
.flow li { min-height: 150px; }
.flow li > span { margin-top: 36px; }
@@ -142,3 +144,4 @@ h3 { font-size: 19px; margin: 5px 0 0; }
.project-metrics article { border-bottom: 1px solid var(--line); }
.milestone-grid { grid-template-columns: 1fr; }
.milestone-heading, .pilot-heading { align-items: start; flex-direction: column; }
+}