You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Round-3 review fixes on the S4 assertion detail view (kept as a focused
4th commit rather than folded into C1 — the fixup's helpers.ts hunk
overlaps C2's breadcrumb helpers + C3's primarySubGraphOf, so an
autosquash into C1 conflicts mechanically; a standalone commit is the
clean, conflict-free shape team-lead OK'd).
- Finding 2 (api.ts fetchAssertionState): the assertionGraph fallback
was URI-shape-unsafe. For an SWM input (a `urn:dkg:assertion:…`
lifecycle URN) whose `dkg:assertionGraph` did NOT resolve
(legacy/partial `_meta` row), echoing the URN made fetchAssertionTriples
query `GRAPH <urn:…>` (a graph that never holds triples) → bogus render.
Now: urn-input + unresolved → assertionGraph: undefined (Triples/Entities
fall to their empty-state). WM data-graph-URI input still echoes itself.
- Finding 3 (assertionEmptyStateCopy, ux §4.7.1 locked): the empty-state
copy now keys off `dkg:state` (4 branches) instead of special-casing
promoted only — published/finalized show the VM / Knowledge-Assets line
("entities → Knowledge Assets" at the VM boundary, §4.8), discarded is
terminal, created/promoted unchanged. Plain text, no links.
- Finding 1 (remote SWM state) reply-not-valid (no replicated state
source); finding-1 round-2 discarded-neutral badge + finding-2 round-2
literal-display decode already shipped earlier in C1.
Tests: SWM-legacy-no-assertionGraph guard + WM-echo counterpart
(use-assertion-state); assertionEmptyStateCopy 4-branch truth table
(assertion-detail-helpers); published empty-state DOM render
(assertion-detail-view). Finding-2 guard negative-proofed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* isn't list-reachable today, see the badge guard).
1027
+
* Plain text, no links (S4 lock). Title is the constant "No entities in
1028
+
* this assertion." for the live states; discarded gets a terminal title.
1029
+
*/
1030
+
exportfunctionassertionEmptyStateCopy(
1031
+
state: AssertionState|null|undefined,
1032
+
): {title: string;description: string}{
1033
+
switch(state){
1034
+
case'promoted':
1035
+
return{
1036
+
title: 'No entities in this assertion.',
1037
+
description: 'This assertion was promoted — its entities now live in Shared Working Memory. Open the Shared Working Memory tab to view them.',
1038
+
};
1039
+
case'published':
1040
+
case'finalized':
1041
+
return{
1042
+
title: 'No entities in this assertion.',
1043
+
description: 'This assertion was published — its entities are now Knowledge Assets in Verifiable Memory. Open the Verifiable Memory tab to view them.',
1044
+
};
1045
+
case'discarded':
1046
+
return{
1047
+
title: 'This assertion was discarded.',
1048
+
description: 'This assertion was discarded.',
1049
+
};
1050
+
case'created':
1051
+
default:
1052
+
return{
1053
+
title: 'No entities in this assertion.',
1054
+
description: 'This assertion has no extracted entities.',
1055
+
};
1056
+
}
1057
+
}
1058
+
1015
1059
/**
1016
1060
* The primary (first non-`meta`) sub-graph slug an entity has triples
1017
1061
* in, or null when it lives only in the root bucket / meta. Mirrors the
it('published AND finalized → VM / Knowledge-Assets line, NOT "no extracted entities"',()=>{
127
+
for(constsof['published','finalized']asconst){
128
+
constc=assertionEmptyStateCopy(s);
129
+
expect(c.title).toBe('No entities in this assertion.');
130
+
expect(c.description).toBe('This assertion was published — its entities are now Knowledge Assets in Verifiable Memory. Open the Verifiable Memory tab to view them.');
0 commit comments