diff --git a/components/practice-cards.tsx b/components/practice-cards.tsx index f97f210..5df2a23 100644 --- a/components/practice-cards.tsx +++ b/components/practice-cards.tsx @@ -81,14 +81,21 @@ export function ConcludeCard({ part }: ArtifactPartProps) {
{OUTCOME_LABEL[outcome] ?? "Concluded"}
+ {/* LABELED SECTIONS (owner round 2, 2026-10-05): 'Solved' alone over + unlabeled prose didn't read as the model solution — the hero now + carries its own label, and the verdict section mirrors it. Same + register as the quiz cards' section labels. */} {reveal.length > 0 && ( -
- {reveal} +
+
Model solution
+
+ {reveal} +
)} {verdict.length > 0 && ( -
- Verdict: +
+ Verdict: {verdict}
)} diff --git a/tests/render-practice-surface.test.tsx b/tests/render-practice-surface.test.tsx index f0ac490..cdf3ac0 100644 --- a/tests/render-practice-surface.test.tsx +++ b/tests/render-practice-surface.test.tsx @@ -114,6 +114,7 @@ describe("the practice transcript cards", () => { assert.match(html, /data-testid="conclude-card"/); assert.match(html, /Solved with hints/); assert.match(html, /Pair them; each pair is even\./, "the committed solution, verbatim"); + assert.match(html, /Model solution/); // the labeled hero (owner round 2) assert.match(html, /Verdict:/); assert.match(html, /The pairing came after R2\./); // The verdict row renders AFTER the solution (the hero first).