diff --git a/CHANGELOG.md b/CHANGELOG.md
index 89284ed8..595e08a3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -152,6 +152,13 @@ All notable changes to MeMesh are documented here.
its own **Project** tab. Old `?tab=` deep links and stored tab choices
migrate to the surface that absorbed them, so a bookmarked
`?tab=Browse` opens Memories instead of nothing.
+ Three of the retired Lessons tab's four counters were **dropped on
+ purpose, not migrated**: total failures, plan records and total recalls
+ answered no question a reader acts on, and the recall total was built on
+ the literal-content matching that measured 0% signal and has since been
+ retired. The fourth — how many lessons are marked `severity:critical` —
+ is the one a reader does act on ("mistakes I have already paid for,
+ waiting to be repeated"), and it moves to Home rather than disappearing.
- **One notice at a time.** The Doctor, Onboarding and Insights banners
could stack three deep above the nav. They now share a priority slot —
Doctor (broken install) > Onboarding (empty library) > Insights
diff --git a/dashboard/dist/index.html b/dashboard/dist/index.html
index 753ce0a0..d21dccab 100644
--- a/dashboard/dist/index.html
+++ b/dashboard/dist/index.html
@@ -10,23 +10,23 @@
Newsreader = memory content (italic carries the inferred-vs-verbatim
distinction), Geist Mono = data. Offline, the stacks fall back. -->
-
+`)}`,M=`https://github.com/PCIRCLE-AI/memesh/issues/new?title=${encodeURIComponent("[Bug] memesh doctor reported issues")}&body=${encodeURIComponent(f)}&labels=${encodeURIComponent("feedback,from-dashboard,bug,doctor-warning")}`;window.open(M,"_blank")}const u=t.status==="FAIL",l=u?"var(--danger)":"var(--warning)",h=u?"var(--danger-soft)":"var(--warning-soft)";return e("div",{role:"alert",style:{position:"relative",margin:"12px auto 0",maxWidth:920,padding:"12px 16px",border:`1px solid ${l}`,borderRadius:"var(--radius)",background:h,color:"var(--text-1)"},children:[e("button",{type:"button",onClick:m,"aria-label":r("doctorBanner.dismiss"),style:{position:"absolute",top:6,right:8,background:"transparent",border:"none",color:"var(--text-3)",fontSize:18,lineHeight:1,cursor:"pointer",padding:4},children:"×"}),e("div",{style:{fontSize:13,fontWeight:600,color:l,marginBottom:6},children:r(u?"doctorBanner.failTitle":"doctorBanner.warnTitleSoft")}),e("ul",{style:{margin:"6px 0 10px",paddingLeft:18,fontSize:12,lineHeight:1.5,color:"var(--text-2)"},children:[n.slice(0,3).map(p=>{const f=Ua(p);return e("li",{children:[e("strong",{children:[Wa(p),":"]})," ",qa(p),f&&e(de,{children:[" — ",e("em",{style:{color:"var(--text-3)"},children:f})]})]},p.id)}),n.length>3&&e("li",{style:{color:"var(--text-3)"},children:r("doctorBanner.moreCount",{n:n.length-3})})]}),u&&e("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[e("button",{type:"button",class:"btn",onClick:d,style:{fontSize:12,padding:"4px 12px"},children:r("doctorBanner.getHelp")}),e("span",{style:{fontSize:11,color:"var(--text-3)"},children:r("doctorBanner.helpHint")})]})]})}const Po="memesh.insightsBanner.dismissed";function Ga({currentTab:t,onNavigateToInsights:s}){const[o,a]=v(0),[n,i]=v(()=>{try{return sessionStorage.getItem(Po)==="true"}catch{return!1}});if(te(()=>{let u=!0;const l=()=>{Z("GET","/v1/dream/proposals?status=pending").then(c=>{if(!u)return;const p=Array.isArray(c)?c:c?.data??[];a(p.length)}).catch(()=>{})};l();const h=()=>l();return window.addEventListener("memesh:data-changed",h),()=>{u=!1,window.removeEventListener("memesh:data-changed",h)}},[]),t==="Home"||n||o===0)return null;function m(u){u.stopPropagation(),i(!0);try{sessionStorage.setItem(Po,"true")}catch{}}const d=r("banner.pendingInsights",{n:o,s:o===1?"":"s"});return e("div",{role:"button","aria-label":r("banner.viewAll"),onClick:s,onKeyDown:u=>{(u.key==="Enter"||u.key===" ")&&(u.preventDefault(),s())},tabIndex:0,style:{position:"relative",margin:"12px auto 0",maxWidth:920,padding:"10px 40px 10px 16px",border:"1px solid rgba(143, 242, 92, 0.32)",borderRadius:"var(--radius)",background:"var(--life-soft)",color:"var(--text-1)",cursor:"pointer",fontSize:13,lineHeight:1.5,display:"flex",alignItems:"center",justifyContent:"space-between",gap:8},children:[e("span",{style:{flex:1},children:[e("span",{style:{marginRight:6},"aria-hidden":"true",children:"💡"}),d]}),e("button",{type:"button",onClick:m,"aria-label":r("banner.dismiss"),style:{position:"absolute",top:6,right:8,background:"transparent",border:"none",color:"var(--text-3)",fontSize:18,lineHeight:1,cursor:"pointer",padding:4},children:"×"})]})}const rr=["Home","Memories","Project","Graph","Settings"],Ya={Home:"tab.home",Memories:"tab.memories",Project:"tab.project",Graph:"tab.graph",Settings:"tab.settings"},Xa={Insights:"Home",Analytics:"Home",Search:"Memories",Browse:"Memories",Manage:"Memories",Lessons:"Memories"},nr="memesh.tab";function Ja(){const t=s=>s?rr.includes(s)?s:Xa[s]??null:null;try{const s=new URLSearchParams(window.location.search),o=t(s.get("tab"));if(o)return o;const a=t(localStorage.getItem(nr));if(a)return a}catch{}return"Home"}function Qa(){const[t,s]=v(()=>zr()),[o,a]=v(Ja),[n,i]=v(()=>new Set);te(()=>{i(y=>y.has(o)?y:new Set(y).add(o))},[o]);const m=y=>n.has(y)||o===y;te(()=>{try{localStorage.setItem(nr,o)}catch{}try{const y=new URL(window.location.href);y.searchParams.set("tab",o),history.replaceState(null,"",y)}catch{}},[o]);const[d,u]=v(null),[l,h]=v(""),[c,p]=v(!1);te(()=>{const y=()=>p(!0);return window.addEventListener("memesh:auth-required",y),()=>window.removeEventListener("memesh:auth-required",y)},[]);const[f,b]=v(!1),M=ze(()=>{Z("GET","/v1/health").then(y=>{u(y),h(""),p(!1)}).catch(y=>{if(y instanceof Rs){b(xs()!==null),p(!0),h("");return}h(y.message)})},[]);te(()=>{M();const y=()=>M();return window.addEventListener("memesh:data-changed",y),()=>window.removeEventListener("memesh:data-changed",y)},[M]);const k=rr.map(y=>({key:y,label:r(Ya[y])}));return c?e(Ba,{currentToken:xs(),rejected:f,onSubmit:y=>{Fr(y),b(!1),p(!1),M()}}):e("div",{class:"shell",children:[e(Hr,{health:d,error:l}),e("div",{class:"notice-slot",children:[e($a,{}),e(Fa,{health:d}),e(Ga,{currentTab:o,onNavigateToInsights:()=>a("Home")})]}),e(Or,{tabs:k,active:o,onSelect:y=>a(y)}),e("div",{class:"main",children:[e("div",{id:"panel-Home",role:"tabpanel","aria-labelledby":"tab-Home",class:`panel ${o==="Home"?"active":""}`,children:o==="Home"&&e(Tn,{})}),e("div",{id:"panel-Memories",role:"tabpanel","aria-labelledby":"tab-Memories",class:`panel ${o==="Memories"?"active":""}`,children:m("Memories")&&e(Xn,{health:d})}),e("div",{id:"panel-Project",role:"tabpanel","aria-labelledby":"tab-Project",class:`panel ${o==="Project"?"active":""}`,children:m("Project")&&e(ya,{health:d})}),e("div",{id:"panel-Graph",role:"tabpanel","aria-labelledby":"tab-Graph",class:`panel ${o==="Graph"?"active":""}`,children:o==="Graph"&&e(Ia,{})}),e("div",{id:"panel-Settings",role:"tabpanel","aria-labelledby":"tab-Settings",class:`panel ${o==="Settings"?"active":""}`,children:o==="Settings"&&e(Ma,{locale:t,onLocaleChange:s})})]}),e(Oa,{health:d})]})}Ar(e(Qa,{}),document.getElementById("app"));
diff --git a/dashboard/src/components/GraphTab.tsx b/dashboard/src/components/GraphTab.tsx
index fd02cd35..ce151cb3 100644
--- a/dashboard/src/components/GraphTab.tsx
+++ b/dashboard/src/components/GraphTab.tsx
@@ -1,8 +1,8 @@
-import { useState, useEffect, useRef, useCallback } from 'preact/hooks';
+import { useState, useEffect, useRef, useCallback, useMemo } from 'preact/hooks';
import { fetchGraph, fetchWorkGraph, type GraphData, type WorkGraphData, type Entity } from '../lib/api';
import { EvidencePanel } from './EvidencePanel';
import { t, getLocale } from '../lib/i18n';
-import { typeLabel, relationLabel } from '../lib/entity-display';
+import { typeLabel, relationLabel, displayTitle } from '../lib/entity-display';
import { classifyLoadError, failureMessage, type LoadFailure } from '../lib/failure';
import { useSignalMode } from '../lib/signalMode';
import { EmptyLibraryState } from './EmptyLibraryState';
@@ -60,7 +60,19 @@ const BADGE_R = 5;
interface GNode {
id: string;
- title: string | null; // Human-readable title for tooltip display
+ /** The headline a human reads, from `displayTitle`'s chain (title → best
+ * observation → type + date). NOT `id`: `id` is `entity.name`, a machine
+ * dedup key (`pre-compact-`, `commit-a1b2c3d`), and the canvas
+ * was drawing those keys on screen — the one thing entity-display.ts says
+ * the chain must never fall back to. Precomputed with the node set so the
+ * draw loop does no string work per frame; the cost is that the type+date
+ * branch keeps the locale it was built with until the data or the layer
+ * changes (title and observation headlines carry no locale at all). */
+ display: string;
+ /** `name + headline`, lowercased — the search haystack. Search used to test
+ * the machine name alone, so typing the headline the user just read (in
+ * Memories, or in this graph's own tooltip) matched nothing. */
+ searchText: string;
type: string;
x: number;
y: number;
@@ -78,6 +90,15 @@ interface GNode {
* radius silently made recency the primary key for every
* well-trafficked node. */
accessCount: number;
+ /** Where the draw loop PUT the evidence badge this frame (world coords), or
+ * null on a frame that drew none. The hit-test reads this rather than
+ * recomputing the geometry, because the second copy drifted twice over:
+ * it used `n.radius` while the draw grows the radius to 9px on hover and
+ * 10px on focus (visible badge, unclickable — and a clickable circle over
+ * empty canvas), and it ran unconditionally while the draw only places a
+ * badge inside the label budget (an invisible target on every unlabelled
+ * node, swallowing the click-empty-canvas gesture that exits ego mode). */
+ badge: { x: number; y: number } | null;
}
interface GEdge {
@@ -209,6 +230,15 @@ function formatAge(dateStr: string): string {
return t('graph.ageDaysAgo', { count: days });
}
+/** Cap a headline for canvas drawing. Canvas text is drawn, not wrapped, and a
+ * headline is a title (up to TITLE_MAX_LENGTH = 200) or a whole observation
+ * (unbounded) — the machine name the canvas used to draw was short by
+ * construction, so nothing capped it. Uncapped, a label runs clear across the
+ * stage and a tooltip line makes its box wider than the canvas. */
+function ellipsize(s: string, max: number): string {
+ return s.length > max ? s.slice(0, max - 2) + '...' : s;
+}
+
declare global {
interface Window { __graphReheat?: () => void; }
}
@@ -322,6 +352,14 @@ export function GraphTab() {
const searchQueryRef = useRef(searchQuery);
const egoNodeIdRef = useRef(egoNodeId);
const driftModeRef = useRef(driftMode);
+ // Signal Mode is READ when a payload is applied (it seeds the type filters)
+ // and must never TRIGGER a load. Read from state, it made `applyGraph` a new
+ // function on every toggle, and `applyGraph` is a dependency of the loader —
+ // so the header's Signal/All button refetched the graph over HTTP, blanked
+ // the canvas through the loading gate and closed an open evidence
+ // drill-down, for a toggle the `[signalMode, data]` effect below already
+ // applies in place.
+ const signalModeRef = useRef(signalMode);
useEffect(() => { typeFiltersRef.current = typeFilters; }, [typeFilters]);
// When the global Signal Mode toggles, snap the NOISE-type filters
@@ -348,6 +386,7 @@ export function GraphTab() {
useEffect(() => { searchQueryRef.current = searchQuery; }, [searchQuery]);
useEffect(() => { egoNodeIdRef.current = egoNodeId; }, [egoNodeId]);
useEffect(() => { driftModeRef.current = driftMode; }, [driftMode]);
+ useEffect(() => { signalModeRef.current = signalMode; }, [signalMode]);
// Everything both layers do with a payload once it has arrived: the shape
// guard, the physics cap, and the initial type filters. A shape mismatch
@@ -380,11 +419,14 @@ export function GraphTab() {
// every type starts checked.
const noise = new Set(Array.isArray(d.noiseTypes) ? d.noiseTypes : []);
const types: Record = {};
+ const hideNoise = signalModeRef.current;
capped.forEach((e) => {
- types[e.type] = types[e.type] ?? (signalMode ? !noise.has(e.type) : true);
+ types[e.type] = types[e.type] ?? (hideNoise ? !noise.has(e.type) : true);
});
setTypeFilters(types);
- }, [signalMode]);
+ // Empty deps on purpose — see signalModeRef above. This callback is a
+ // dependency of the loader, so anything it closes over becomes a refetch.
+ }, []);
/* ----- data fetch ----- */
// One loader for both layers. The work layer is tried first (it is the
@@ -436,11 +478,27 @@ export function GraphTab() {
})
.finally(() => { if (!cancelled) setLoading(false); });
return () => { cancelled = true; };
- // applyGraph is defined below with useCallback on [signalMode]; the
- // loader re-runs when the user switches layer.
+ // Complete deps, and deliberately cheap: `applyGraph` is stable (empty
+ // deps), so the only thing that re-runs this loader is a layer switch.
}, [layer, applyGraph]);
+ // ONE derivation of the human-readable headline for the whole tab: the
+ // canvas labels, the tooltip, the search predicates and the match count all
+ // read this map. A second copy of the chain is how the match count and the
+ // highlighted nodes drift apart — and it is how the tooltip ended up with a
+ // hand-rolled `title || type · age`, skipping the middle step and hiding the
+ // observation Memories shows for the same entity.
+ const displayIndex = useMemo(() => {
+ const index = new Map();
+ if (!data) return index;
+ for (const e of data.entities) {
+ const display = displayTitle(e);
+ index.set(e.name, { display, search: `${e.name} ${display}`.toLowerCase() });
+ }
+ return index;
+ }, [data]);
+
/* ----- build graph & start simulation ----- */
useEffect(() => {
if (!data || loading) return;
@@ -522,9 +580,13 @@ export function GraphTab() {
const hash = hashString(e.name);
const angle = k * GOLDEN_ANGLE + (hash % 100) / 100;
const spread = Math.min(spreadCap, 14 + Math.sqrt(k) * 16 + (hash % 7));
+ // Non-null: `displayIndex` is keyed off THIS entity list and rebuilt
+ // with it, so a miss would mean the two came from different payloads.
+ const shown = displayIndex.get(e.name)!;
nodeMap.set(e.name, {
id: e.name,
- title: e.title ?? null,
+ display: shown.display,
+ searchText: shown.search,
type: e.type,
x: Math.min(w - 16, Math.max(16, centre.x + Math.cos(angle) * spread)),
y: Math.min(h - 16, Math.max(16, centre.y + Math.sin(angle) * spread)),
@@ -536,6 +598,7 @@ export function GraphTab() {
lastDate,
accessCount: Math.max(0, e.access_count ?? 0),
evidenceCount: evidenceCounts[e.name] ?? 0,
+ badge: null,
});
});
// Label-budget order: RAW traffic first, recency as the tiebreak, name
@@ -646,10 +709,13 @@ export function GraphTab() {
return isNodeVisible(fromNode) && isNodeVisible(toNode);
};
+ // Name AND headline — the same haystack the match count reads. Testing
+ // the machine name alone meant a user who typed the words they can SEE on
+ // this canvas got "0 matches" back from it.
const isSearchMatch = (n: GNode): boolean => {
const q = searchQueryRef.current.toLowerCase();
if (!q) return false;
- return n.id.toLowerCase().includes(q);
+ return n.searchText.includes(q);
};
/* ---------- simulation loop ---------- */
@@ -790,7 +856,10 @@ export function GraphTab() {
// --- Auto-center on single search match ---
const q = searchQueryRef.current.toLowerCase();
if (q) {
- const matches = nodes.filter((n) => n.id.toLowerCase().includes(q));
+ // Same haystack as isSearchMatch: a query that highlights exactly one
+ // node must be the query that centres it, or the auto-centre fires on
+ // a different set than the glow ring.
+ const matches = nodes.filter((n) => n.searchText.includes(q));
if (matches.length === 1) {
const target = matches[0];
const shiftX = cx - target.x;
@@ -928,6 +997,11 @@ export function GraphTab() {
const matched = isSearchMatch(n);
const isFocusCenter = egoNodeIdRef.current === n.id;
const r = isFocusCenter ? 10 : isHovered ? 9 : n.radius;
+ // The badge's position is per-frame state, so clear it BEFORE the
+ // draw decides whether to place one. Assigning only inside the badge
+ // block would leave a node that drops out of the label budget
+ // carrying a click target where nothing is drawn.
+ n.badge = null;
// Recency alpha: full for hovered/matched
const alpha = isHovered || matched ? 1.0 : n.recency;
@@ -1000,12 +1074,14 @@ export function GraphTab() {
// the zoomed-out tier's 3 labels to unreadable specks and zooming
// in blows 20px text and 6px halos over the graph.
ctx.font = `${10 / vp.scale}px ${tk['--font-ui']}`;
+ // The headline, not the machine name — see GNode.display. Searched
+ // and focused nodes get a wider cap because they are the node the
+ // user asked about; both are capped now, which the old code did not
+ // need to do when it was drawing a name.
const label =
matched || isFocusCenter
- ? n.id
- : n.id.length > 20
- ? n.id.slice(0, 18) + '...'
- : n.id;
+ ? ellipsize(n.display, 48)
+ : ellipsize(n.display, 20);
// Halo: the label stroked in the canvas background colour
// (--bg-0 — the canvas element's actual background) before the
// fill, so text stays legible when it crosses nodes or edges.
@@ -1029,6 +1105,11 @@ export function GraphTab() {
const br = BADGE_R / vp.scale;
const bx = n.x + r * 0.8;
const by = n.y - r * 0.8;
+ // Publish where it landed. The hit-test reads this instead of
+ // recomputing `n.radius * 0.8` — `r` above is 9 or 10px on a hovered
+ // or focused node, so the recomputed copy pointed at a badge that
+ // was not there.
+ n.badge = { x: bx, y: by };
ctx.globalAlpha = 1;
ctx.beginPath();
ctx.arc(bx, by, br, 0, Math.PI * 2);
@@ -1059,18 +1140,23 @@ export function GraphTab() {
ctx.setTransform(curDpr, 0, 0, curDpr, 0, 0);
const tx = tip.x + 12;
const ty = tip.y - 10;
- // Display title if available; never the machine name (id).
- // Fallback to type label + age when untitled (same data as line2, but
- // avoids showing raw entity.name like "session-summary-a3f5e").
+ // Headline, then the metadata line. This used to reimplement the
+ // display chain as `title || type · age` and skip its middle step, so
+ // an untitled entity showed its best observation in Memories and only
+ // "type · age" here — and the one-line branch existed precisely
+ // because line1 was then a copy of line2. With a real headline in
+ // line1 that branch is dead. (When the headline IS the type+date
+ // fallback — an entity with no title and no observations — line2 still
+ // adds the age, so the two lines never say the same thing twice.)
const typeTxt = typeLabel(tip.node.type);
const ageTxt = formatAge(tip.node.lastDate);
- const line1 = tip.node.title?.trim() || `${typeTxt} · ${ageTxt}`;
- const line2 = tip.node.title?.trim() ? `${typeTxt} | ${ageTxt}` : '';
+ const line1 = ellipsize(tip.node.display, 64);
+ const line2 = `${typeTxt} | ${ageTxt}`;
ctx.font = `11px ${tk['--font-ui']}`;
const w1 = ctx.measureText(line1).width;
- const w2 = line2 ? ctx.measureText(line2).width : 0;
+ const w2 = ctx.measureText(line2).width;
const boxW = Math.max(w1, w2) + 12;
- const boxH = line2 ? 34 : 20; // Single-line when untitled
+ const boxH = 34;
// Tooltip panel: translucent panel bg + accent hairline, both built from
// the resolved tokens (--bg-1 / --life) so a palette change reaches the
// canvas — semi-transparent so the graph shows through.
@@ -1083,11 +1169,9 @@ export function GraphTab() {
ctx.stroke();
ctx.fillStyle = tk['--text-0'];
ctx.fillText(line1, tx, ty - 4);
- if (line2) {
- ctx.fillStyle = tk['--text-2'];
- ctx.font = `10px ${tk['--mono']}`;
- ctx.fillText(line2, tx, ty + 10);
- }
+ ctx.fillStyle = tk['--text-2'];
+ ctx.font = `10px ${tk['--mono']}`;
+ ctx.fillText(line2, tx, ty + 10);
}
animRef.current = requestAnimationFrame(simulate);
@@ -1097,8 +1181,9 @@ export function GraphTab() {
return () => cancelAnimationFrame(animRef.current);
// activeLayer/evidenceCounts are read when the nodes are built (badge
// counts) and when they are ranked, so the simulation must rebuild when
- // the layer changes — not only when `data` does.
- }, [data, loading, activeLayer, evidenceCounts]);
+ // the layer changes — not only when `data` does. displayIndex is derived
+ // from `data` alone, so it adds no rebuild of its own.
+ }, [data, loading, activeLayer, evidenceCounts, displayIndex]);
/* ---------- hit-test (only visible nodes) ----------
* `wx`/`wy` are WORLD coords (already inverse-transformed). Hit radius
@@ -1123,14 +1208,19 @@ export function GraphTab() {
const dx = n.x - wx;
const dy = n.y - wy;
if (dx * dx + dy * dy < hitR2) return n;
- // The evidence badge is a visible part of the node and must be
- // clickable as one — a target you can see and cannot hit is worse
- // than no target. Same geometry the draw call uses, so the two
- // cannot drift.
- if (n.evidenceCount > 0) {
+ // The evidence badge is a visible part of the node and must be clickable
+ // as one — a target you can see and cannot hit is worse than no target.
+ // The reverse is worse still, and both used to happen: this recomputed
+ // the badge's place from `n.radius` while the draw call grows the radius
+ // on hover and focus, and it ran for every node with evidence while the
+ // draw only places a badge inside the label budget — so an unlabelled
+ // node carried an invisible target that ate the click-empty-canvas
+ // gesture. Reading the drawn position removes the copy rather than
+ // syncing it: `n.badge` is null on every frame no badge was drawn.
+ if (n.badge) {
const br = BADGE_R / scale;
- const bdx = n.x + n.radius * 0.8 - wx;
- const bdy = n.y - n.radius * 0.8 - wy;
+ const bdx = n.badge.x - wx;
+ const bdy = n.badge.y - wy;
if (bdx * bdx + bdy * bdy < br * br) return n;
}
}
@@ -1413,10 +1503,12 @@ export function GraphTab() {
});
const orphanCount = data.entities.filter((e) => !connectedSet.has(e.name)).length;
- // Search match count
+ // Search match count — over the SAME haystack the canvas highlights on
+ // (name + headline). Counted over the machine name alone it reported "0
+ // matches" for a query that the user took straight off this canvas.
const matchCount = searchQuery
- ? data.entities.filter((e) =>
- e.name.toLowerCase().includes(searchQuery.toLowerCase()),
+ ? [...displayIndex.values()].filter((d) =>
+ d.search.includes(searchQuery.toLowerCase()),
).length
: 0;
@@ -1692,7 +1784,10 @@ export function GraphTab() {
{t('graph.focusMode')}:
- {egoEntity.name}
+ {/* The headline, not `egoEntity.name`: this banner names the node
+ the user is focused on, and a dedup key like
+ `pre-compact-` does not name anything to a human. */}
+ {displayTitle(egoEntity)}
setEgoNodeId(null)}
style={{
@@ -1759,9 +1854,13 @@ export function GraphTab() {
not a work item, so "what evidence supports it" is not a question
that view can answer. */}
{activeLayer === 'work' && evidenceNode && (
+ /* `node` is the API key (the entity name); `nodeTitle` is what the
+ panel heading reads out, so it takes the headline. The old
+ `title || id` fallback put the machine key in the heading of
+ every untitled node. */
setEvidenceNode(null)}
/>
)}
diff --git a/dashboard/src/components/HomeTab.tsx b/dashboard/src/components/HomeTab.tsx
index 577d7bb5..facc5bc6 100644
--- a/dashboard/src/components/HomeTab.tsx
+++ b/dashboard/src/components/HomeTab.tsx
@@ -1,6 +1,7 @@
import { useState } from 'preact/hooks';
import { InsightsTab } from './InsightsTab';
import { AnalyticsTab } from './AnalyticsTab';
+import { MetricsRow } from './MetricsRow';
import { t } from '../lib/i18n';
/**
@@ -23,6 +24,10 @@ export function HomeTab() {
return (
+ {/* Numbers first, then what needs a decision, then what was applied —
+ the order the work-topology plan asked for. The row degrades per
+ tile: one unmeasured metric says so and the others still show. */}
+
([]);
const [projects, setProjects] = useState([]);
@@ -78,6 +133,15 @@ export function MemoriesTab({ health }: { health?: HealthData | null }) {
// not necessarily the one the user asked for last.
const loadGen = useRef(0);
+ // The same ticket for the ranked search, which had none: a slow /v1/recall
+ // landing after a newer one painted its own stale results over them, with
+ // the `` highlighting still pointing at the query the user typed
+ // second. And the ticket has to be droppable, not just monotonic — clearing
+ // the box or picking a chip leaves ranked mode with no new request to
+ // out-number the one already in flight, so the answer to a query the user
+ // abandoned came back and reopened ranked mode over an empty search box.
+ const recallGen = useRef(0);
+
async function load() {
const gen = ++loadGen.current;
setLoading(true);
@@ -113,10 +177,19 @@ export function MemoriesTab({ health }: { health?: HealthData | null }) {
useEffect(() => { load(); }, []);
useEffect(() => { setPage(0); }, [filter, scope, time, value, project, sort]);
+ // Every "back to browsing" intent goes through here. Dropping the ticket is
+ // the load-bearing half: without it the search already in flight still lands
+ // and drags the user back into ranked mode.
+ function leaveRecallMode() {
+ recallGen.current++;
+ setRecallResults(null);
+ setRecallLoading(false);
+ }
+
// Picking any chip is a browsing intent — leave ranked-results mode.
function setScope(next: Scope) {
setScopeRaw(next);
- setRecallResults(null);
+ leaveRecallMode();
}
// When the global Signal Mode toggles, snap the scope to that mode's
@@ -163,7 +236,7 @@ export function MemoriesTab({ health }: { health?: HealthData | null }) {
const f = filter.toLowerCase();
return entities.filter((e) => {
if (!matchesScope(e)) return false;
- if (time !== 'all' && timeBucket(e.last_accessed_at || e.created_at) !== time) return false;
+ if (time !== 'all' && timeBucket(recencyIso(e)) !== time) return false;
if (value === 'recalled' && (e.access_count ?? 0) === 0) return false;
if (value === 'never' && (e.access_count ?? 0) > 0) return false;
if (project !== 'all' && extractProject(e) !== project) return false;
@@ -177,14 +250,16 @@ export function MemoriesTab({ health }: { health?: HealthData | null }) {
const sorted = useMemo(() => {
const arr = [...filtered];
+ // Every comparison goes through epoch-ms. `localeCompare` on the raw
+ // strings was comparing an ISO `last_accessed_at` against a SQLite
+ // `created_at` — see timestampMs above for what that ranked wrongly.
if (sort === 'most-recalled') {
arr.sort((a, b) => (b.access_count ?? 0) - (a.access_count ?? 0)
- || (b.last_accessed_at ?? b.created_at).localeCompare(a.last_accessed_at ?? a.created_at));
+ || newestFirst(recencyMs(a), recencyMs(b)));
} else if (sort === 'created') {
- arr.sort((a, b) => b.created_at.localeCompare(a.created_at));
+ arr.sort((a, b) => newestFirst(timestampMs(a.created_at), timestampMs(b.created_at)));
} else { // recent (last accessed)
- arr.sort((a, b) =>
- (b.last_accessed_at ?? b.created_at).localeCompare(a.last_accessed_at ?? a.created_at));
+ arr.sort((a, b) => newestFirst(recencyMs(a), recencyMs(b)));
}
return arr;
}, [filtered, sort]);
@@ -195,6 +270,7 @@ export function MemoriesTab({ health }: { health?: HealthData | null }) {
async function runDeepSearch() {
const query = filter.trim();
if (!query) return;
+ const gen = ++recallGen.current;
setRecallLoading(true);
setError('');
try {
@@ -204,11 +280,23 @@ export function MemoriesTab({ health }: { health?: HealthData | null }) {
const data = await api(
'POST', '/v1/recall', { query, limit: RECALL_LIMIT }
);
- setRecallResults(Array.isArray(data) ? data : data.entities || []);
+ // `data.entities || []` here turned an unreadable payload into a
+ // successful search that found nothing — the same masquerade the load()
+ // path above refuses by name ("a false empty"). Ranked search reads as
+ // "no memory matches that", which is a claim, not an absence of data.
+ const ranked = Array.isArray(data) ? data : data.entities;
+ if (gen !== recallGen.current) return;
+ if (!Array.isArray(ranked)) {
+ console.warn('[memesh dashboard] /v1/recall answered with a shape this bundle cannot read:', data);
+ setError(failureMessage('unreadable'));
+ return;
+ }
+ setRecallResults(ranked);
} catch (e) {
+ if (gen !== recallGen.current) return;
setError(actionFailureMessage(e));
} finally {
- setRecallLoading(false);
+ if (gen === recallGen.current) setRecallLoading(false);
}
}
@@ -291,13 +379,27 @@ export function MemoriesTab({ health }: { health?: HealthData | null }) {
{/* The header (via /v1/health) shows the true count; this tab
holds at most FETCH_LIMIT rows. When the two disagree, say
so — two contradicting numbers with no explanation read as
- data loss. */}
- {entities.length >= FETCH_LIMIT
- && (health?.entity_count ?? 0) > entities.length && (
- · {t('browse.truncated', {
- shown: entities.length.toLocaleString(getLocale()),
- total: (health!.entity_count).toLocaleString(getLocale()),
- })}
+ data loss.
+
+ Three states, not two. `health?.entity_count ?? 0` read a
+ health fetch that had not landed (or had failed) as a
+ library of zero: `0 > 2000` is false, so a 12,000-memory
+ graph said "2,000 active" and nothing at all about the
+ 10,000 it had cut. Hitting the limit is itself the evidence
+ the list is capped — the total is the only part health
+ knows, so its absence changes the sentence, not whether
+ there is one. */}
+ {entities.length >= FETCH_LIMIT && (
+ health == null ? (
+ · {t('browse.truncatedUnknownTotal', {
+ shown: entities.length.toLocaleString(getLocale()),
+ })}
+ ) : health.entity_count > entities.length ? (
+ · {t('browse.truncated', {
+ shown: entities.length.toLocaleString(getLocale()),
+ total: health.entity_count.toLocaleString(getLocale()),
+ })}
+ ) : null
)}
)}
@@ -313,7 +415,7 @@ export function MemoriesTab({ health }: { health?: HealthData | null }) {
type="search"
placeholder={t('memories.searchPlaceholder')}
value={filter}
- onInput={(e) => { setFilter((e.target as HTMLInputElement).value); setRecallResults(null); }}
+ onInput={(e) => { setFilter((e.target as HTMLInputElement).value); leaveRecallMode(); }}
onKeyDown={(e) => e.key === 'Enter' && runDeepSearch()}
/>
@@ -413,7 +515,7 @@ export function MemoriesTab({ health }: { health?: HealthData | null }) {
{recallResults!.length} {' '}
{recallResults!.length !== 1 ? t('search.results') : t('search.result')} · {t('memories.rankedBy')}
- setRecallResults(null)}>✕ {t('memories.backToList')}
+ ✕ {t('memories.backToList')}
{recallResults!.length === 0
? {t('search.noResults')} "{filter}"
diff --git a/dashboard/src/components/MetricsRow.tsx b/dashboard/src/components/MetricsRow.tsx
new file mode 100644
index 00000000..c0408ca0
--- /dev/null
+++ b/dashboard/src/components/MetricsRow.tsx
@@ -0,0 +1,188 @@
+import { useEffect, useState } from 'preact/hooks';
+import { api, type AnalyticsData } from '../lib/api';
+import { classifyLoadError, failureMessage, type LoadFailure } from '../lib/failure';
+import { t, getLocale } from '../lib/i18n';
+
+/**
+ * The first thing Home says: a small row of numbers that are true.
+ *
+ * Two rules decide everything here, and both exist because the alternative
+ * is a confident lie on the first screen a user reads.
+ *
+ * **Not measured is not zero.** A tile whose instrument has never run says
+ * so, in words, in `--neutral-soft`. It never renders 0, because 0 is a
+ * measurement — "we looked and found none" — and printing it from an
+ * absence claims an observation nobody made. This is the same rule
+ * `retrieval.degraded` enforces on the recall side.
+ *
+ * **A number arrives with its denominator.** "5 critical lessons" is a
+ * different claim from "5 of the 12 that anyone has classified", and on a
+ * real graph those were the same 5 out of 29 total. A tile that shows the
+ * numerator alone rounds silence up into evidence.
+ *
+ * One fetch, and a per-tile verdict: a tile that cannot be computed degrades
+ * on its own rather than blanking the row, because "the health score failed"
+ * is not a reason to stop telling the user how many critical lessons they
+ * have.
+ */
+
+type Load =
+ | { phase: 'loading' }
+ | { phase: 'loaded'; data: AnalyticsData }
+ | { phase: 'failed'; failure: LoadFailure };
+
+/** What a tile renders. `value: null` is the not-measured state and carries
+ * its own sentence; it is deliberately not expressible as a number. */
+interface Tile {
+ key: string;
+ label: string;
+ value: string | null;
+ /** Shown under the value — the denominator, the caveat, or why it is unknown. */
+ note: string;
+ /** Colour for the value. Absent = the ordinary life tone. */
+ tone?: 'life' | 'warning' | 'muted';
+}
+
+function tone(t?: Tile['tone']): string {
+ if (t === 'warning') return 'var(--warning)';
+ if (t === 'muted') return 'var(--text-2)';
+ return 'var(--life)';
+}
+
+/** Whether a payload carries the groups this row reads.
+ *
+ * A server one release behind sends `/v1/analytics` WITHOUT `criticalLessons`
+ * or `citationCompliance`, and reading `.severityTagged` off `undefined`
+ * throws during render — a white screen, because the app ships no error
+ * boundary. Missing groups are a shape mismatch to report, not fields to
+ * default: a fabricated `{critical: 0}` would print "0 critical lessons"
+ * from a server that never answered the question. */
+export function isMetricsRenderable(d: Partial | null | undefined): d is AnalyticsData {
+ if (!d || typeof d !== 'object') return false;
+ if (typeof d.healthScore !== 'number') return false;
+ const cl = d.criticalLessons;
+ if (!cl || typeof cl.critical !== 'number' || typeof cl.severityTagged !== 'number' || typeof cl.total !== 'number') {
+ return false;
+ }
+ // `citationCompliance` is legitimately null — that IS its not-measured
+ // state — so only a wrong TYPE disqualifies it.
+ const cc = d.citationCompliance;
+ if (cc !== null && cc !== undefined && (typeof cc.cited !== 'number' || typeof cc.total !== 'number')) return false;
+ if (!d.loopMetric || typeof d.loopMetric.reusedThisWeek !== 'number') return false;
+ return true;
+}
+
+export function buildTiles(data: AnalyticsData, locale: string): Tile[] {
+ const n = (x: number) => x.toLocaleString(locale);
+
+ // Health score. Measured from real counts, so it is always a number — but
+ // an empty library scores 0 out of arithmetic, not out of judgement, and
+ // telling a fresh install its memory is "poor" is the same lie in a
+ // different costume. The caller passes `total` so we can say which it is.
+ const health: Tile = {
+ key: 'health',
+ label: t('metrics.health'),
+ value: `${data.healthScore}`,
+ note: t('metrics.healthNote'),
+ tone: data.healthScore >= 60 ? 'life' : data.healthScore >= 40 ? 'warning' : 'muted',
+ };
+
+ const cl = data.criticalLessons;
+ const critical: Tile = cl.severityTagged === 0
+ ? {
+ key: 'critical',
+ label: t('metrics.critical'),
+ value: null,
+ note: cl.total === 0 ? t('metrics.criticalNoLessons') : t('metrics.criticalUnclassified', { total: n(cl.total) }),
+ tone: 'muted',
+ }
+ : {
+ key: 'critical',
+ label: t('metrics.critical'),
+ value: n(cl.critical),
+ note: cl.severityTagged < cl.total
+ ? t('metrics.criticalPartial', { tagged: n(cl.severityTagged), total: n(cl.total) })
+ : t('metrics.criticalAll', { total: n(cl.total) }),
+ tone: cl.critical > 0 ? 'warning' : 'life',
+ };
+
+ const cc = data.citationCompliance;
+ const citation: Tile = cc === null
+ ? {
+ key: 'citation',
+ label: t('metrics.citation'),
+ value: null,
+ note: t('metrics.citationNotMeasured'),
+ tone: 'muted',
+ }
+ : {
+ key: 'citation',
+ label: t('metrics.citation'),
+ value: `${Math.round((cc.cited / cc.total) * 100)}%`,
+ note: t('metrics.citationNote', { cited: n(cc.cited), total: n(cc.total) }),
+ };
+
+ // The loop metric carries its own honesty flag: the numbers are derived
+ // from last_accessed_at, and the note says so rather than implying the
+ // precision the field name suggests.
+ const loop: Tile = {
+ key: 'loop',
+ label: t('metrics.reused'),
+ value: n(data.loopMetric.reusedThisWeek),
+ note: t('metrics.reusedNote'),
+ };
+
+ return [health, critical, citation, loop];
+}
+
+export function MetricsRow() {
+ const [state, setState] = useState({ phase: 'loading' });
+
+ useEffect(() => {
+ let cancelled = false;
+ api('GET', '/v1/analytics')
+ .then((data) => {
+ if (cancelled) return;
+ if (!isMetricsRenderable(data)) {
+ console.warn('[memesh dashboard] /v1/analytics answered without the groups this row reads — stale server or version skew:', data);
+ setState({ phase: 'failed', failure: 'unreadable' });
+ return;
+ }
+ setState({ phase: 'loaded', data });
+ })
+ .catch((e) => {
+ if (cancelled) return;
+ console.warn('[memesh dashboard] /v1/analytics failed to load for the metrics row:', e);
+ setState({ phase: 'failed', failure: classifyLoadError(e) });
+ });
+ return () => { cancelled = true; };
+ }, []);
+
+ if (state.phase === 'loading') {
+ return ;
+ }
+ if (state.phase === 'failed') {
+ // The row says what happened. It does NOT render four zeroes, which
+ // would report four measurements from a request that never answered.
+ return (
+
+ {failureMessage(state.failure)}
+
+ );
+ }
+
+ const tiles = buildTiles(state.data, getLocale());
+ return (
+
+ {tiles.map((tile) => (
+
+
+ {tile.value ?? t('metrics.notMeasured')}
+
+
{tile.label}
+
{tile.note}
+
+ ))}
+
+ );
+}
diff --git a/dashboard/src/components/ProjectTab.tsx b/dashboard/src/components/ProjectTab.tsx
index b15a266a..7fa12e16 100644
--- a/dashboard/src/components/ProjectTab.tsx
+++ b/dashboard/src/components/ProjectTab.tsx
@@ -26,7 +26,8 @@ function writeUrlProject(name: string): void {
/**
* The roadmap's entity set for one project: active entities of the project,
- * PLUS the archived entities an active one points at with a lineage edge.
+ * PLUS the archived entities OF THAT SAME PROJECT an active one points at
+ * with a lineage edge.
* `supersedes` ARCHIVES its target on write (operations.ts), so a plain
* active filter hides exactly the node every supersession edge points at —
* the roadmap could never show a chain. The fetch already carries archived
@@ -43,7 +44,19 @@ export function selectProjectEntities(entities: Entity[], selected: string | nul
if (r.type === 'supersedes' || r.type === 'contradicts') referenced.add(r.to);
}
}
- const readmitted = entities.filter((e) => isArchived(e) && referenced.has(e.name));
+ // Readmission matched on NAME alone, with no project predicate — so an
+ // archived entity belonging to a DIFFERENT project rode in on this
+ // project's chain edge, and the three surfaces fed from this array (the
+ // roadmap, the capture-density band and the Decisions list) counted it as
+ // part of this project's story. The active side has always filtered on the
+ // project; this side has to agree, or the tab silently absorbs work that
+ // was never here. The legitimate case is untouched: archiving flips
+ // `status` and nothing else (knowledge-graph.ts `archiveEntity`), so a
+ // chain target inside this project keeps its `project:` tag and still rides
+ // back in.
+ const readmitted = entities.filter(
+ (e) => isArchived(e) && referenced.has(e.name) && extractProject(e) === selected,
+ );
return [...active, ...readmitted].sort((a, b) => b.created_at.localeCompare(a.created_at));
}
@@ -60,13 +73,26 @@ export function ProjectTab({ health }: { health?: HealthData | null }) {
const [selected, setSelected] = useState(urlProject);
const [loading, setLoading] = useState(true);
const [error, setError] = useState('');
+ const [projectsError, setProjectsError] = useState('');
const loadGen = useRef(0);
useEffect(() => {
const gen = ++loadGen.current;
Promise.all([
api('GET', `/v1/entities?limit=${FETCH_LIMIT}&status=all`),
- fetchProjects().catch(() => [] as ProjectInfo[]),
+ // `.catch(() => [])` reported a projects fetch that FAILED as a library
+ // with no projects, and this tab renders that as "No project memories
+ // yet" — a claim about the user's data made from an answer nobody
+ // received. It is not a rare path: `computeProjects` scans with no LIMIT
+ // while api() aborts at 10s, so a large graph produces the false
+ // first-run claim reliably, WHILE the sibling entities fetch beside it
+ // has already loaded thousands of rows. Settled rather than caught, so
+ // the failure survives as a diagnosis instead of an empty list — and so
+ // one dead endpoint still does not take the entities down with it.
+ fetchProjects().then(
+ (list) => ({ ok: true as const, list }),
+ (e: unknown) => ({ ok: false as const, failure: classifyLoadError(e) }),
+ ),
])
.then(([data, projs]) => {
if (gen !== loadGen.current) return;
@@ -76,11 +102,15 @@ export function ProjectTab({ health }: { health?: HealthData | null }) {
} else {
setEntities(data);
}
- setProjects(projs);
- // One project = no choice to make; walk straight in — unless a
- // ?project= deep link already chose (even a stale one: overriding
- // it would make the shared URL silently show something else).
- if (projs.length === 1) setSelected((cur) => cur ?? projs[0].name);
+ if (projs.ok) {
+ setProjects(projs.list);
+ // One project = no choice to make; walk straight in — unless a
+ // ?project= deep link already chose (even a stale one: overriding
+ // it would make the shared URL silently show something else).
+ if (projs.list.length === 1) setSelected((cur) => cur ?? projs.list[0].name);
+ } else {
+ setProjectsError(failureMessage(projs.failure));
+ }
})
.catch((e) => {
if (gen !== loadGen.current) return;
@@ -105,6 +135,13 @@ export function ProjectTab({ health }: { health?: HealthData | null }) {
if (entities.length === 0 && health == null) return ;
if (health?.entity_count === 0) return ;
+ // The projects fetch gets the same tri-state as health above, for the same
+ // reason: an empty list because the request failed is not a library without
+ // projects, and `project.empty` speaks about the user's DATA. Named as a
+ // failure it is something the user can act on; folded into `[]` it is a
+ // first-run claim they have no way to see through.
+ if (projectsError) return {projectsError}
;
+
if (projects.length === 0) {
return {t('project.empty')}
;
}
diff --git a/dashboard/src/lib/api.ts b/dashboard/src/lib/api.ts
index 1fe8cb96..26072ff5 100644
--- a/dashboard/src/lib/api.ts
+++ b/dashboard/src/lib/api.ts
@@ -287,6 +287,13 @@ export interface AnalyticsData {
lessons: HealthFactor;
};
loopMetric: LoopMetric;
+ /** Critical lessons WITH their denominators: `critical` alone overstates
+ * what was classified, because an untagged lesson is not a non-critical
+ * one. `severityTagged === 0` is the not-measured case. */
+ criticalLessons: { critical: number; severityTagged: number; total: number };
+ /** How often an agent that was given memories cited one. `null` means the
+ * counters do not exist yet — a third state, not 0%. */
+ citationCompliance: { cited: number; total: number } | null;
timeline: Array<{ date: string; created: number; recalled: number }>;
ageMatrix: Array<{ type: string; bucket: 'week' | 'month' | 'quarter' | 'older'; count: number }>;
knowledgeRadar: Array<{ axis: string; count: number; types: string[] }>;
@@ -322,7 +329,16 @@ export interface ProjectInfo {
export async function fetchProjects(): Promise {
const data = await api('GET', '/v1/projects');
- return Array.isArray(data) ? data : [];
+ // Throw, do not return []. ProjectTab now tells a failed fetch apart from
+ // an empty one and says which happened — but only if this layer lets the
+ // failure through. `Array.isArray(data) ? data : []` converted version
+ // skew into "No project memories yet", a claim about the user's data made
+ // from a response nobody could read.
+ if (!Array.isArray(data)) {
+ console.warn('[memesh dashboard] /v1/projects answered with a shape this bundle cannot read:', data);
+ throw new Error('unreadable projects payload');
+ }
+ return data;
}
export async function fetchGraph(): Promise {
diff --git a/dashboard/src/lib/i18n.ts b/dashboard/src/lib/i18n.ts
index c8b835af..05a47e69 100644
--- a/dashboard/src/lib/i18n.ts
+++ b/dashboard/src/lib/i18n.ts
@@ -127,6 +127,19 @@ const translations: Record> = {
'analytics.archivedLabel': 'Archived',
'analytics.mostRecalled': 'Most Recalled',
'health.title': 'Memory Health',
+ 'metrics.notMeasured': 'Not measured yet',
+ 'metrics.health': 'Health',
+ 'metrics.healthNote': 'Activity, quality, freshness, lessons',
+ 'metrics.critical': 'Critical lessons',
+ 'metrics.criticalPartial': 'of {tagged} classified · {total} lessons total',
+ 'metrics.criticalAll': 'of {total} lessons, all classified',
+ 'metrics.criticalUnclassified': '{total} lessons, none classified by severity yet',
+ 'metrics.criticalNoLessons': 'No lessons recorded yet',
+ 'metrics.citation': 'Citations',
+ 'metrics.citationNote': '{cited} of {total} sessions cited a memory',
+ 'metrics.citationNotMeasured': 'Citation tracking starts after your next session',
+ 'metrics.reused': 'Reused this week',
+ 'metrics.reusedNote': 'Approximate — counted from last-access dates',
'health.excellent': 'Excellent',
'health.good': 'Good',
'health.fair': 'Fair',
@@ -540,6 +553,7 @@ const translations: Record> = {
'emptyLibrary.title': 'Your memory is empty',
'emptyLibrary.body': 'Nothing is stored here yet. Load the 30-entry demo tour to see how MeMesh works — you can wipe it later with one click.',
'browse.truncated': 'showing the first {shown} of {total} memories — use search or filters to reach the rest',
+ 'browse.truncatedUnknownTotal': 'showing the first {shown} memories — the total is unavailable, so there may be more',
'graph.cappedNote': 'Showing the top {shown} of {total} entities (most recalled first) so the graph stays responsive.',
'settings.testStoredKeyHint': 'Leave the field empty to test the key that is already saved.',
'ageMatrix.bucket.week': 'This week',
@@ -796,6 +810,19 @@ const translations: Record> = {
'analytics.archivedLabel': '已封存',
'analytics.mostRecalled': '最常查閱',
'health.title': '記憶健康度',
+ 'metrics.notMeasured': '尚未量測',
+ 'metrics.health': '健康度',
+ 'metrics.healthNote': '活躍度、品質、新鮮度、教訓',
+ 'metrics.critical': '嚴重教訓',
+ 'metrics.criticalPartial': '在 {tagged} 筆已分類中 · 共 {total} 筆教訓',
+ 'metrics.criticalAll': '共 {total} 筆教訓,全數已分類',
+ 'metrics.criticalUnclassified': '{total} 筆教訓,尚未依嚴重度分類',
+ 'metrics.criticalNoLessons': '尚未記錄任何教訓',
+ 'metrics.citation': '引用率',
+ 'metrics.citationNote': '{total} 次工作階段中有 {cited} 次引用了記憶',
+ 'metrics.citationNotMeasured': '引用追蹤會在下次工作階段開始計算',
+ 'metrics.reused': '本週被重用',
+ 'metrics.reusedNote': '近似值——以最後存取時間推估',
'health.excellent': '優秀',
'health.good': '良好',
'health.fair': '普通',
@@ -1209,6 +1236,7 @@ const translations: Record> = {
'emptyLibrary.title': '你的記憶庫是空的',
'emptyLibrary.body': '這裡還沒有任何記憶。載入 30 筆示範資料,馬上看到 MeMesh 的完整功能——之後可一鍵清除。',
'browse.truncated': '目前顯示前 {shown} 筆(共 {total} 筆)——用搜尋或篩選找到其餘的記憶',
+ 'browse.truncatedUnknownTotal': '目前顯示前 {shown} 筆——讀不到總數,可能還有更多',
'graph.cappedNote': '只顯示前 {shown} 個節點(共 {total} 個,依回想次數排序),讓圖表保持流暢。',
'settings.testStoredKeyHint': '欄位留空即測試已儲存的金鑰。',
'ageMatrix.bucket.week': '本週',
@@ -1465,6 +1493,19 @@ const translations: Record> = {
'analytics.archivedLabel': '已归档',
'analytics.mostRecalled': '最常查阅',
'health.title': '记忆健康度',
+ 'metrics.notMeasured': '尚未测量',
+ 'metrics.health': '健康度',
+ 'metrics.healthNote': '活跃度、质量、新鲜度、教训',
+ 'metrics.critical': '严重教训',
+ 'metrics.criticalPartial': '在 {tagged} 条已分类中 · 共 {total} 条教训',
+ 'metrics.criticalAll': '共 {total} 条教训,全部已分类',
+ 'metrics.criticalUnclassified': '{total} 条教训,尚未按严重度分类',
+ 'metrics.criticalNoLessons': '尚未记录任何教训',
+ 'metrics.citation': '引用率',
+ 'metrics.citationNote': '{total} 次会话中有 {cited} 次引用了记忆',
+ 'metrics.citationNotMeasured': '引用追踪将从下次会话开始计算',
+ 'metrics.reused': '本周被重用',
+ 'metrics.reusedNote': '近似值——以最后访问时间推估',
'health.excellent': '优秀',
'health.good': '良好',
'health.fair': '一般',
@@ -1878,6 +1919,7 @@ const translations: Record> = {
'emptyLibrary.title': '你的记忆库是空的',
'emptyLibrary.body': '这里还没有任何记忆。载入 30 条示范数据,马上看到 MeMesh 的完整功能——之后可一键清除。',
'browse.truncated': '当前显示前 {shown} 条(共 {total} 条)——用搜索或筛选找到其余的记忆',
+ 'browse.truncatedUnknownTotal': '当前显示前 {shown} 条——读不到总数,可能还有更多',
'graph.cappedNote': '只显示前 {shown} 个节点(共 {total} 个,按回想次数排序),让图表保持流畅。',
'settings.testStoredKeyHint': '字段留空即测试已保存的密钥。',
'ageMatrix.bucket.week': '本周',
@@ -2134,6 +2176,19 @@ const translations: Record> = {
'analytics.archivedLabel': 'アーカイブ済み',
'analytics.mostRecalled': 'よく参照される',
'health.title': 'メモリ健康度',
+ 'metrics.notMeasured': '未計測',
+ 'metrics.health': '健全性',
+ 'metrics.healthNote': '活動・品質・鮮度・教訓',
+ 'metrics.critical': '重大な教訓',
+ 'metrics.criticalPartial': '分類済み {tagged} 件のうち · 教訓は全 {total} 件',
+ 'metrics.criticalAll': '全 {total} 件の教訓、すべて分類済み',
+ 'metrics.criticalUnclassified': '教訓 {total} 件、重大度は未分類',
+ 'metrics.criticalNoLessons': '教訓はまだ記録されていません',
+ 'metrics.citation': '引用率',
+ 'metrics.citationNote': '{total} セッション中 {cited} 件が記憶を引用',
+ 'metrics.citationNotMeasured': '引用の計測は次のセッションから始まります',
+ 'metrics.reused': '今週の再利用',
+ 'metrics.reusedNote': '概算——最終アクセス日から推定',
'health.excellent': '優秀',
'health.good': '良好',
'health.fair': '普通',
@@ -2547,6 +2602,7 @@ const translations: Record> = {
'emptyLibrary.title': 'メモリは空です',
'emptyLibrary.body': 'まだ何も保存されていません。30 件のデモツアーを読み込めば MeMesh の動きをすぐ確認できます(後で一括削除可)。',
'browse.truncated': '全 {total} 件のうち先頭 {shown} 件を表示中 — 残りは検索やフィルタで絞り込んでください',
+ 'browse.truncatedUnknownTotal': '先頭 {shown} 件を表示中 — 総数を取得できないため、さらにある可能性があります',
'graph.cappedNote': '全 {total} 件のうち上位 {shown} 件のみ表示中(想起回数順)。グラフの動作を軽く保つためです。',
'settings.testStoredKeyHint': '空欄のままテストすると保存済みのキーを使用します。',
'ageMatrix.bucket.week': '今週',
@@ -2803,6 +2859,19 @@ const translations: Record> = {
'analytics.archivedLabel': '보관됨',
'analytics.mostRecalled': '가장 많이 조회됨',
'health.title': '메모리 건강도',
+ 'metrics.notMeasured': '아직 측정되지 않음',
+ 'metrics.health': '건강도',
+ 'metrics.healthNote': '활동, 품질, 신선도, 교훈',
+ 'metrics.critical': '심각한 교훈',
+ 'metrics.criticalPartial': '분류된 {tagged}개 중 · 전체 교훈 {total}개',
+ 'metrics.criticalAll': '전체 {total}개 교훈, 모두 분류됨',
+ 'metrics.criticalUnclassified': '교훈 {total}개, 심각도 분류 없음',
+ 'metrics.criticalNoLessons': '아직 기록된 교훈이 없습니다',
+ 'metrics.citation': '인용률',
+ 'metrics.citationNote': '{total}개 세션 중 {cited}개가 기억을 인용',
+ 'metrics.citationNotMeasured': '인용 추적은 다음 세션부터 시작됩니다',
+ 'metrics.reused': '이번 주 재사용',
+ 'metrics.reusedNote': '근사치 — 마지막 접근 시각으로 추정',
'health.excellent': '우수',
'health.good': '양호',
'health.fair': '보통',
@@ -3216,6 +3285,7 @@ const translations: Record> = {
'emptyLibrary.title': '메모리가 비어 있습니다',
'emptyLibrary.body': '아직 저장된 것이 없습니다. 30개 데모 투어를 불러와 MeMesh의 동작을 바로 확인해 보세요. 나중에 한 번에 삭제할 수 있습니다.',
'browse.truncated': '전체 {total}개 중 처음 {shown}개 표시 중 — 나머지는 검색이나 필터로 찾아보세요',
+ 'browse.truncatedUnknownTotal': '처음 {shown}개 표시 중 — 전체 개수를 읽을 수 없어 더 있을 수 있습니다',
'graph.cappedNote': '전체 {total}개 중 상위 {shown}개만 표시 중(회상 횟수순). 그래프 반응성을 위해서입니다.',
'settings.testStoredKeyHint': '입력란을 비워 두면 저장된 키로 테스트합니다.',
'ageMatrix.bucket.week': '이번 주',
@@ -3472,6 +3542,19 @@ const translations: Record> = {
'analytics.archivedLabel': 'Arquivadas',
'analytics.mostRecalled': 'Mais Consultadas',
'health.title': 'Saúde da Memória',
+ 'metrics.notMeasured': 'Ainda não medido',
+ 'metrics.health': 'Saúde',
+ 'metrics.healthNote': 'Atividade, qualidade, frescura, lições',
+ 'metrics.critical': 'Lições críticas',
+ 'metrics.criticalPartial': 'de {tagged} classificadas · {total} lições no total',
+ 'metrics.criticalAll': 'de {total} lições, todas classificadas',
+ 'metrics.criticalUnclassified': '{total} lições, nenhuma classificada por severidade',
+ 'metrics.criticalNoLessons': 'Ainda não há lições registadas',
+ 'metrics.citation': 'Citações',
+ 'metrics.citationNote': '{cited} de {total} sessões citaram uma memória',
+ 'metrics.citationNotMeasured': 'O registo de citações começa na próxima sessão',
+ 'metrics.reused': 'Reutilizadas esta semana',
+ 'metrics.reusedNote': 'Aproximado — contado pelas datas de último acesso',
'health.excellent': 'Excelente',
'health.good': 'Bom',
'health.fair': 'Regular',
@@ -3885,6 +3968,7 @@ const translations: Record> = {
'emptyLibrary.title': 'Sua memória está vazia',
'emptyLibrary.body': 'Nada foi armazenado ainda. Carregue o tour de demonstração com 30 entradas para ver o MeMesh em ação — você pode apagá-lo depois com um clique.',
'browse.truncated': 'mostrando as primeiras {shown} de {total} memórias — use a busca ou os filtros para alcançar o restante',
+ 'browse.truncatedUnknownTotal': 'mostrando as primeiras {shown} memórias — o total está indisponível, então pode haver mais',
'graph.cappedNote': 'Mostrando as {shown} principais de {total} entidades (mais recuperadas primeiro) para manter o grafo responsivo.',
'settings.testStoredKeyHint': 'Deixe o campo vazio para testar a chave já salva.',
'ageMatrix.bucket.week': 'Esta semana',
@@ -4141,6 +4225,19 @@ const translations: Record> = {
'analytics.archivedLabel': 'Archivées',
'analytics.mostRecalled': 'Les plus consultées',
'health.title': 'Santé de la mémoire',
+ 'metrics.notMeasured': 'Pas encore mesuré',
+ 'metrics.health': 'Santé',
+ 'metrics.healthNote': 'Activité, qualité, fraîcheur, leçons',
+ 'metrics.critical': 'Leçons critiques',
+ 'metrics.criticalPartial': 'sur {tagged} classées · {total} leçons au total',
+ 'metrics.criticalAll': 'sur {total} leçons, toutes classées',
+ 'metrics.criticalUnclassified': '{total} leçons, aucune classée par gravité',
+ 'metrics.criticalNoLessons': 'Aucune leçon enregistrée pour le moment',
+ 'metrics.citation': 'Citations',
+ 'metrics.citationNote': '{cited} sessions sur {total} ont cité une mémoire',
+ 'metrics.citationNotMeasured': 'Le suivi des citations démarre à la prochaine session',
+ 'metrics.reused': 'Réutilisées cette semaine',
+ 'metrics.reusedNote': 'Approximatif — d\'après les dates de dernier accès',
'health.excellent': 'Excellent',
'health.good': 'Bon',
'health.fair': 'Moyen',
@@ -4554,6 +4651,7 @@ const translations: Record> = {
'emptyLibrary.title': 'Votre mémoire est vide',
'emptyLibrary.body': 'Rien n’est encore enregistré. Chargez la visite de démonstration (30 entrées) pour voir MeMesh en action — supprimable ensuite en un clic.',
'browse.truncated': 'affichage des {shown} premières mémoires sur {total} — utilisez la recherche ou les filtres pour atteindre le reste',
+ 'browse.truncatedUnknownTotal': 'affichage des {shown} premières mémoires — le total est indisponible, il y en a peut-être d’autres',
'graph.cappedNote': 'Affichage des {shown} entités les plus rappelées sur {total} pour garder le graphe fluide.',
'settings.testStoredKeyHint': 'Laissez le champ vide pour tester la clé déjà enregistrée.',
'ageMatrix.bucket.week': 'Cette semaine',
@@ -4810,6 +4908,19 @@ const translations: Record> = {
'analytics.archivedLabel': 'Archiviert',
'analytics.mostRecalled': 'Am häufigsten abgerufen',
'health.title': 'Speichergesundheit',
+ 'metrics.notMeasured': 'Noch nicht gemessen',
+ 'metrics.health': 'Gesundheit',
+ 'metrics.healthNote': 'Aktivität, Qualität, Frische, Lehren',
+ 'metrics.critical': 'Kritische Lehren',
+ 'metrics.criticalPartial': 'von {tagged} eingestuften · {total} Lehren insgesamt',
+ 'metrics.criticalAll': 'von {total} Lehren, alle eingestuft',
+ 'metrics.criticalUnclassified': '{total} Lehren, keine nach Schweregrad eingestuft',
+ 'metrics.criticalNoLessons': 'Noch keine Lehren erfasst',
+ 'metrics.citation': 'Zitate',
+ 'metrics.citationNote': '{cited} von {total} Sitzungen zitierten eine Erinnerung',
+ 'metrics.citationNotMeasured': 'Die Zitat-Erfassung beginnt mit der nächsten Sitzung',
+ 'metrics.reused': 'Diese Woche genutzt',
+ 'metrics.reusedNote': 'Näherungswert — aus den letzten Zugriffszeiten',
'health.excellent': 'Ausgezeichnet',
'health.good': 'Gut',
'health.fair': 'Mittel',
@@ -5223,6 +5334,7 @@ const translations: Record> = {
'emptyLibrary.title': 'Ihr Speicher ist leer',
'emptyLibrary.body': 'Noch ist nichts gespeichert. Laden Sie die Demo-Tour mit 30 Einträgen, um MeMesh in Aktion zu sehen — später mit einem Klick löschbar.',
'browse.truncated': 'die ersten {shown} von {total} Erinnerungen werden angezeigt — nutzen Sie Suche oder Filter für den Rest',
+ 'browse.truncatedUnknownTotal': 'die ersten {shown} Erinnerungen werden angezeigt — die Gesamtzahl ist nicht verfügbar, es könnten mehr sein',
'graph.cappedNote': 'Es werden die {shown} meistabgerufenen von {total} Entitäten angezeigt, damit der Graph flüssig bleibt.',
'settings.testStoredKeyHint': 'Feld leer lassen, um den bereits gespeicherten Schlüssel zu testen.',
'ageMatrix.bucket.week': 'Diese Woche',
@@ -5479,6 +5591,19 @@ const translations: Record> = {
'analytics.archivedLabel': 'Đã lưu trữ',
'analytics.mostRecalled': 'Được truy xuất nhiều nhất',
'health.title': 'Sức khỏe bộ nhớ',
+ 'metrics.notMeasured': 'Chưa đo được',
+ 'metrics.health': 'Sức khoẻ',
+ 'metrics.healthNote': 'Hoạt động, chất lượng, độ mới, bài học',
+ 'metrics.critical': 'Bài học nghiêm trọng',
+ 'metrics.criticalPartial': 'trong {tagged} mục đã phân loại · tổng {total} bài học',
+ 'metrics.criticalAll': 'trong tổng {total} bài học, đã phân loại hết',
+ 'metrics.criticalUnclassified': '{total} bài học, chưa phân loại theo mức độ',
+ 'metrics.criticalNoLessons': 'Chưa ghi nhận bài học nào',
+ 'metrics.citation': 'Trích dẫn',
+ 'metrics.citationNote': '{cited} trong {total} phiên có trích dẫn ký ức',
+ 'metrics.citationNotMeasured': 'Việc theo dõi trích dẫn bắt đầu từ phiên sau',
+ 'metrics.reused': 'Dùng lại tuần này',
+ 'metrics.reusedNote': 'Ước tính — dựa trên thời điểm truy cập cuối',
'health.excellent': 'Xuất sắc',
'health.good': 'Tốt',
'health.fair': 'Trung bình',
@@ -5892,6 +6017,7 @@ const translations: Record> = {
'emptyLibrary.title': 'Bộ nhớ của bạn đang trống',
'emptyLibrary.body': 'Chưa có gì được lưu. Hãy nạp bản demo 30 mục để xem MeMesh hoạt động — có thể xóa sau chỉ với một cú nhấp.',
'browse.truncated': 'đang hiển thị {shown} ký ức đầu tiên trong tổng số {total} — dùng tìm kiếm hoặc bộ lọc để xem phần còn lại',
+ 'browse.truncatedUnknownTotal': 'đang hiển thị {shown} ký ức đầu tiên — không đọc được tổng số, nên có thể còn nữa',
'graph.cappedNote': 'Chỉ hiển thị {shown} thực thể hàng đầu trong {total} (theo số lần gợi nhớ) để giữ đồ thị mượt mà.',
'settings.testStoredKeyHint': 'Để trống ô này để kiểm tra khóa đã lưu.',
'ageMatrix.bucket.week': 'Tuần này',
@@ -6148,6 +6274,19 @@ const translations: Record> = {
'analytics.archivedLabel': 'Archivadas',
'analytics.mostRecalled': 'Más consultadas',
'health.title': 'Salud de la memoria',
+ 'metrics.notMeasured': 'Aún sin medir',
+ 'metrics.health': 'Salud',
+ 'metrics.healthNote': 'Actividad, calidad, frescura, lecciones',
+ 'metrics.critical': 'Lecciones críticas',
+ 'metrics.criticalPartial': 'de {tagged} clasificadas · {total} lecciones en total',
+ 'metrics.criticalAll': 'de {total} lecciones, todas clasificadas',
+ 'metrics.criticalUnclassified': '{total} lecciones, ninguna clasificada por gravedad',
+ 'metrics.criticalNoLessons': 'Todavía no hay lecciones registradas',
+ 'metrics.citation': 'Citas',
+ 'metrics.citationNote': '{cited} de {total} sesiones citaron una memoria',
+ 'metrics.citationNotMeasured': 'El registro de citas empieza en la próxima sesión',
+ 'metrics.reused': 'Reutilizadas esta semana',
+ 'metrics.reusedNote': 'Aproximado — según las fechas de último acceso',
'health.excellent': 'Excelente',
'health.good': 'Bueno',
'health.fair': 'Regular',
@@ -6561,6 +6700,7 @@ const translations: Record> = {
'emptyLibrary.title': 'Tu memoria está vacía',
'emptyLibrary.body': 'Aún no hay nada guardado. Carga el tour de demostración de 30 entradas para ver MeMesh en acción — puedes borrarlo luego con un clic.',
'browse.truncated': 'mostrando las primeras {shown} de {total} memorias — usa la búsqueda o los filtros para llegar al resto',
+ 'browse.truncatedUnknownTotal': 'mostrando las primeras {shown} memorias — el total no está disponible, así que puede haber más',
'graph.cappedNote': 'Mostrando las {shown} entidades más recordadas de {total} para mantener el grafo fluido.',
'settings.testStoredKeyHint': 'Deja el campo vacío para probar la clave ya guardada.',
'ageMatrix.bucket.week': 'Esta semana',
@@ -6817,6 +6957,19 @@ const translations: Record> = {
'analytics.archivedLabel': 'เก็บถาวร',
'analytics.mostRecalled': 'ถูกเรียกดูมากที่สุด',
'health.title': 'สุขภาพหน่วยความจำ',
+ 'metrics.notMeasured': 'ยังไม่ได้วัด',
+ 'metrics.health': 'สุขภาพ',
+ 'metrics.healthNote': 'กิจกรรม คุณภาพ ความสดใหม่ บทเรียน',
+ 'metrics.critical': 'บทเรียนร้ายแรง',
+ 'metrics.criticalPartial': 'จาก {tagged} รายการที่จัดประเภทแล้ว · ทั้งหมด {total} บทเรียน',
+ 'metrics.criticalAll': 'จากทั้งหมด {total} บทเรียน จัดประเภทครบแล้ว',
+ 'metrics.criticalUnclassified': '{total} บทเรียน ยังไม่ได้จัดระดับความร้ายแรง',
+ 'metrics.criticalNoLessons': 'ยังไม่มีบทเรียนที่บันทึกไว้',
+ 'metrics.citation': 'การอ้างอิง',
+ 'metrics.citationNote': '{cited} จาก {total} เซสชันอ้างอิงความทรงจำ',
+ 'metrics.citationNotMeasured': 'การติดตามการอ้างอิงจะเริ่มในเซสชันถัดไป',
+ 'metrics.reused': 'ใช้ซ้ำสัปดาห์นี้',
+ 'metrics.reusedNote': 'ค่าประมาณ — นับจากเวลาที่เข้าถึงล่าสุด',
'health.excellent': 'ยอดเยี่ยม',
'health.good': 'ดี',
'health.fair': 'พอใช้',
@@ -7230,6 +7383,7 @@ const translations: Record> = {
'emptyLibrary.title': 'ความทรงจำของคุณยังว่างเปล่า',
'emptyLibrary.body': 'ยังไม่มีข้อมูลบันทึกไว้ โหลดทัวร์ตัวอย่าง 30 รายการเพื่อดูการทำงานของ MeMesh — ลบทีหลังได้ในคลิกเดียว',
'browse.truncated': 'กำลังแสดง {shown} รายการแรกจากทั้งหมด {total} — ใช้การค้นหาหรือตัวกรองเพื่อดูที่เหลือ',
+ 'browse.truncatedUnknownTotal': 'กำลังแสดง {shown} รายการแรก — อ่านจำนวนทั้งหมดไม่ได้ จึงอาจมีมากกว่านี้',
'graph.cappedNote': 'แสดงเฉพาะ {shown} อันดับแรกจาก {total} เอนทิตี (เรียงตามการเรียกคืน) เพื่อให้กราฟลื่นไหล',
'settings.testStoredKeyHint': 'เว้นช่องนี้ว่างเพื่อทดสอบคีย์ที่บันทึกไว้แล้ว',
'ageMatrix.bucket.week': 'สัปดาห์นี้',
diff --git a/dist/core/analytics.d.ts b/dist/core/analytics.d.ts
index e4483740..1a155948 100644
--- a/dist/core/analytics.d.ts
+++ b/dist/core/analytics.d.ts
@@ -37,6 +37,15 @@ export interface AnalyticsResult {
lessons: HealthFactor;
};
loopMetric: LoopMetric;
+ criticalLessons: {
+ critical: number;
+ severityTagged: number;
+ total: number;
+ };
+ citationCompliance: {
+ cited: number;
+ total: number;
+ } | null;
timeline: Array<{
date: string;
created: number;
diff --git a/dist/core/analytics.d.ts.map b/dist/core/analytics.d.ts.map
index dd5c44b3..5fd0a8c8 100644
--- a/dist/core/analytics.d.ts.map
+++ b/dist/core/analytics.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/core/analytics.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAGD,eAAO,MAAM,WAAW,aAGtB,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAE/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAOD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAO/D,CAAC;AAEF,MAAM,WAAW,UAAU;IAGzB,cAAc,EAAE,MAAM,CAAC;IAEvB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAI9C,YAAY,EAAE,aAAa,GAAG,gCAAgC,CAAC;CAChE;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE;QACb,QAAQ,EAAE,YAAY,CAAC;QACvB,OAAO,EAAE,YAAY,CAAC;QACtB,SAAS,EAAE,YAAY,CAAC;QACxB,OAAO,EAAE,YAAY,CAAC;KACvB,CAAC;IACF,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,cAAc,EAAE,mBAAmB,EAAE,CAAC;CACvC;AAOD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,cAAc,GAAG,eAAe,CAiMpE;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE;QACR,gBAAgB,EAAE,MAAM,CAAC;QACzB,gBAAgB,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,SAAS,EAAE;QACT,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,aAAa,EAAE;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAMD,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,cAAc,EAClB,UAAU,SAAK,GACd,iBAAiB,CA8DnB"}
\ No newline at end of file
+{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/core/analytics.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAGD,eAAO,MAAM,WAAW,aAGtB,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAE/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAOD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAO/D,CAAC;AAEF,MAAM,WAAW,UAAU;IAGzB,cAAc,EAAE,MAAM,CAAC;IAEvB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAI9C,YAAY,EAAE,aAAa,GAAG,gCAAgC,CAAC;CAChE;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE;QACb,QAAQ,EAAE,YAAY,CAAC;QACvB,OAAO,EAAE,YAAY,CAAC;QACtB,SAAS,EAAE,YAAY,CAAC;QACxB,OAAO,EAAE,YAAY,CAAC;KACvB,CAAC;IACF,UAAU,EAAE,UAAU,CAAC;IAavB,eAAe,EAAE;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAaF,kBAAkB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5D,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,cAAc,EAAE,mBAAmB,EAAE,CAAC;CACvC;AAOD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,cAAc,GAAG,eAAe,CAkPpE;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE;QACR,gBAAgB,EAAE,MAAM,CAAC;QACzB,gBAAgB,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,SAAS,EAAE;QACT,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,aAAa,EAAE;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAMD,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,cAAc,EAClB,UAAU,SAAK,GACd,iBAAiB,CA8DnB"}
\ No newline at end of file
diff --git a/dist/core/analytics.js b/dist/core/analytics.js
index 09fd6566..13bdff83 100644
--- a/dist/core/analytics.js
+++ b/dist/core/analytics.js
@@ -12,7 +12,7 @@ export const RADAR_AXES = [
];
export function computeAnalytics(db) {
const totalActive = db.prepare("SELECT COUNT(*) as c FROM entities WHERE status = 'active'").get().c;
- const recentlyAccessed = db.prepare(`SELECT COUNT(*) as c FROM entities WHERE status = 'active' AND last_accessed_at >= datetime('now', '-30 days')`).get().c;
+ const recentlyAccessed = db.prepare(`SELECT COUNT(*) as c FROM entities WHERE status = 'active' AND datetime(last_accessed_at) >= datetime('now', '-30 days')`).get().c;
const activityRatio = totalActive > 0 ? recentlyAccessed / totalActive : 0;
const highConfidence = db.prepare("SELECT COUNT(*) as c FROM entities WHERE status = 'active' AND confidence > 0.7").get().c;
const qualityRatio = totalActive > 0 ? highConfidence / totalActive : 0;
@@ -53,7 +53,7 @@ export function computeAnalytics(db) {
const recalledTimeline = db.prepare(`
SELECT DATE(last_accessed_at) as day, COUNT(*) as recalled
FROM entities
- WHERE last_accessed_at >= datetime('now', '-30 days')
+ WHERE datetime(last_accessed_at) >= datetime('now', '-30 days')
GROUP BY DATE(last_accessed_at)
ORDER BY day
`).all();
@@ -107,38 +107,56 @@ export function computeAnalytics(db) {
const reusedThisWeek = db.prepare(`SELECT COUNT(*) as c FROM entities
WHERE type IN (${knowledgeTypePlaceholders})
AND status = 'active'
- AND last_accessed_at >= datetime('now', '-7 days')`).get(...KNOWLEDGE_TYPE_LIST).c;
+ AND datetime(last_accessed_at) >= datetime('now', '-7 days')`).get(...KNOWLEDGE_TYPE_LIST).c;
const loopTrendRows = db.prepare(`
SELECT DATE(last_accessed_at) as day, COUNT(*) as count
FROM entities
WHERE type IN (${knowledgeTypePlaceholders})
AND status = 'active'
- AND last_accessed_at >= datetime('now', '-30 days')
+ AND datetime(last_accessed_at) >= datetime('now', '-30 days')
GROUP BY DATE(last_accessed_at)
ORDER BY day
`).all(...KNOWLEDGE_TYPE_LIST);
- let loopComputedFrom = 'last_accessed_at_approximation';
- try {
- const recallColCheck = db.prepare("PRAGMA table_info(entities)").all();
- if (recallColCheck.some((c) => c.name === 'recall_hits')) {
- const hitsInWindow = db.prepare(`SELECT COUNT(*) as c FROM entities
- WHERE type IN (${knowledgeTypePlaceholders})
- AND recall_hits > 0
- AND last_accessed_at >= datetime('now', '-30 days')`).get(...KNOWLEDGE_TYPE_LIST).c;
- if (hitsInWindow > 0)
- loopComputedFrom = 'recall_hits';
- }
- }
- catch { }
const loopMetric = {
reusedThisWeek,
trend: loopTrendRows.map((r) => ({ date: r.day, count: r.count })),
- computedFrom: loopComputedFrom,
+ computedFrom: 'last_accessed_at_approximation',
+ };
+ const LESSON_TYPES = ['lesson_learned', 'lesson', 'mistake'];
+ const lessonPlaceholders = LESSON_TYPES.map(() => '?').join(',');
+ const lessonTotal = db.prepare(`SELECT COUNT(*) as c FROM entities
+ WHERE status = 'active' AND type IN (${lessonPlaceholders})`).get(...LESSON_TYPES).c;
+ const severityTagged = db.prepare(`SELECT COUNT(DISTINCT e.id) as c FROM entities e
+ JOIN tags t ON t.entity_id = e.id
+ WHERE e.status = 'active' AND e.type IN (${lessonPlaceholders})
+ AND t.tag LIKE 'severity:%'`).get(...LESSON_TYPES).c;
+ const criticalCount = db.prepare(`SELECT COUNT(DISTINCT e.id) as c FROM entities e
+ JOIN tags t ON t.entity_id = e.id
+ WHERE e.status = 'active' AND e.type IN (${lessonPlaceholders})
+ AND t.tag = 'severity:critical'`).get(...LESSON_TYPES).c;
+ const criticalLessons = { critical: criticalCount, severityTagged, total: lessonTotal };
+ const readCounter = (key) => {
+ try {
+ const row = db.prepare('SELECT value FROM memesh_metadata WHERE key = ?').get(key);
+ if (!row)
+ return null;
+ const n = parseInt(row.value, 10);
+ return Number.isInteger(n) && n >= 0 ? n : null;
+ }
+ catch {
+ return null;
+ }
};
+ const citationTotal = readCounter('citation_sessions_total');
+ const citationCompliance = citationTotal === null || citationTotal === 0
+ ? null
+ : { cited: readCounter('citation_sessions_cited') ?? 0, total: citationTotal };
return {
healthScore,
healthFactors,
loopMetric,
+ criticalLessons,
+ citationCompliance,
timeline,
ageMatrix,
knowledgeRadar,
diff --git a/dist/core/analytics.js.map b/dist/core/analytics.js.map
index 0bd68dbd..2af29b80 100644
--- a/dist/core/analytics.js.map
+++ b/dist/core/analytics.js.map
@@ -1 +1 @@
-{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/core/analytics.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/core/analytics.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/core/demo.d.ts.map b/dist/core/demo.d.ts.map
index 19cae072..b11cc81e 100644
--- a/dist/core/demo.d.ts.map
+++ b/dist/core/demo.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../../src/core/demo.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAsFD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAsB1E,CAAC;AAEF,wBAAgB,QAAQ,CACtB,EAAE,EAAE,cAAc,EAClB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7B,UAAU,CAoEZ"}
\ No newline at end of file
+{"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../../src/core/demo.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AA2FD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAsB1E,CAAC;AAEF,wBAAgB,QAAQ,CACtB,EAAE,EAAE,cAAc,EAClB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7B,UAAU,CAoEZ"}
\ No newline at end of file
diff --git a/dist/core/demo.js b/dist/core/demo.js
index c42d2e87..0dcbba02 100644
--- a/dist/core/demo.js
+++ b/dist/core/demo.js
@@ -22,7 +22,7 @@ const DEMO_DATA = [
{ daysAgo: 5, name: 'decision-precision-engineer-design', type: 'decision', observations: ['Adopt Precision Engineer aesthetic: minimal stroke icons, no decoration', 'Reject Neural Organic and Retro Terminal alternatives — too noisy for data tool'] },
{ daysAgo: 5, name: 'arch-roadmap-derivation', type: 'architecture', observations: ['Phase clusters: ≥3 entities within ≤7 days', 'Anchor entity by type priority: release > architecture > plan > decision'] },
{ daysAgo: 3, name: 'lesson-bug_fix-canvas-blank', type: 'lesson_learned', observations: ['Error: timeline chart blank after tab switch', 'Root cause: canvas.style.width persisted across display:none -> block', 'Fix: clear inline width before measuring, use ResizeObserver', 'Prevention: never assume CSS width:100% wins over inline style on canvas'], tags: ['error-pattern:other', 'severity:minor'] },
- { daysAgo: 2, name: 'plan-v3-dashboard', type: 'plan', observations: ['Plan: dashboard-v3', 'Steps: Browse redesign, Lessons categorisation, Project Roadmap, Memory Loop KPI', 'Status: complete; see Lessons tab for execution lessons'] },
+ { daysAgo: 2, name: 'plan-v3-dashboard', type: 'plan', observations: ['Plan: dashboard-v3', 'Steps: Browse redesign, Lessons categorisation, Project Roadmap, Memory Loop KPI', 'Status: complete; the execution lessons are the lesson_learned memories in Memories'] },
{ daysAgo: 2, name: 'bugfix-confidence-pump', type: 'bug_fix', observations: ['Symptom: Quality KPI inflated by repeated remember() calls', 'Cause: confidence bumped on every re-assertion regardless of source', 'Fix: gate on (new observation) AND (metadata.trust !== untrusted)'] },
{ daysAgo: 1, name: 'release-v3.0', type: 'release', observations: ['Released as Dashboard v3 milestone', 'Highlights: Lessons-first landing, Project Roadmap, Memory Loop KPI, SVG icon set, Signal Mode toggle'] },
{ daysAgo: 1, name: 'pattern-svg-iconography', type: 'pattern', observations: ['Stroke-based 16x16 SVG glyphs, currentColor', '12 entity-cluster shapes; aria-label per glyph'] },
diff --git a/dist/core/demo.js.map b/dist/core/demo.js.map
index 0f39c406..a2e96e1c 100644
--- a/dist/core/demo.js.map
+++ b/dist/core/demo.js.map
@@ -1 +1 @@
-{"version":3,"file":"demo.js","sourceRoot":"","sources":["../../src/core/demo.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"demo.js","sourceRoot":"","sources":["../../src/core/demo.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/core/graph.d.ts.map b/dist/core/graph.d.ts.map
index 4a9726cf..513a8ee2 100644
--- a/dist/core/graph.d.ts.map
+++ b/dist/core/graph.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/core/graph.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAIzC,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,aAAa,EAAE,CAAC;IAE3B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,cAAc,GAAG,WAAW,CA6B5D;AAMD,MAAM,WAAW,eAAe;IAE9B,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,SAAS,EAAE,aAAa,EAAE,CAAC;IAM3B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,cAAc,GAAG,eAAe,CAiCpE;AAMD,MAAM,WAAW,kBAAkB;IAEjC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,SAAS,EAAE,aAAa,EAAE,CAAC;IAE3B,SAAS,EAAE,OAAO,CAAC;CACpB;AAGD,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CA2BnG"}
\ No newline at end of file
+{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/core/graph.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAIzC,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,aAAa,EAAE,CAAC;IAE3B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,cAAc,GAAG,WAAW,CA6B5D;AAMD,MAAM,WAAW,eAAe;IAE9B,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,SAAS,EAAE,aAAa,EAAE,CAAC;IAM3B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,cAAc,GAAG,eAAe,CA2CpE;AAMD,MAAM,WAAW,kBAAkB;IAEjC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,SAAS,EAAE,aAAa,EAAE,CAAC;IAE3B,SAAS,EAAE,OAAO,CAAC;CACpB;AAGD,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CA2BnG"}
\ No newline at end of file
diff --git a/dist/core/graph.js b/dist/core/graph.js
index d168cd80..f1f7b74c 100644
--- a/dist/core/graph.js
+++ b/dist/core/graph.js
@@ -5,7 +5,7 @@ export function computeGraph(db) {
const kg = new KnowledgeGraph(db);
const noiseList = Array.from(NOISE_TYPES);
const placeholders = noiseList.map(() => '?').join(',');
- const signalRows = db.prepare(`SELECT id FROM entities WHERE type NOT IN (${placeholders}) ORDER BY COALESCE(last_accessed_at, created_at) DESC`).all(...noiseList);
+ const signalRows = db.prepare(`SELECT id FROM entities WHERE type NOT IN (${placeholders}) ORDER BY COALESCE(datetime(last_accessed_at), created_at) DESC`).all(...noiseList);
const noiseRows = db.prepare(`SELECT id FROM entities WHERE type IN (${placeholders}) ORDER BY created_at DESC LIMIT 200`).all(...noiseList);
const allIds = [...signalRows, ...noiseRows].map((r) => r.id);
const entities = kg.getEntitiesByIds(allIds);
@@ -22,7 +22,7 @@ export function computeWorkGraph(db) {
const workTypes = Array.from(WORK_LAYER_TYPES);
const placeholders = workTypes.map(() => '?').join(',');
const rows = db.prepare(`SELECT id FROM entities WHERE type IN (${placeholders}) AND status = 'active'
- ORDER BY COALESCE(last_accessed_at, created_at) DESC`).all(...workTypes);
+ ORDER BY COALESCE(datetime(last_accessed_at), created_at) DESC`).all(...workTypes);
const entities = kg.getEntitiesByIds(rows.map((r) => r.id));
const relations = db.prepare(`
SELECT e_from.name AS "from", e_to.name AS "to", r.relation_type AS type
@@ -30,6 +30,7 @@ export function computeWorkGraph(db) {
JOIN entities e_from ON r.from_entity_id = e_from.id
JOIN entities e_to ON r.to_entity_id = e_to.id
WHERE e_from.type IN (${placeholders}) AND e_to.type IN (${placeholders})
+ AND e_from.status = 'active' AND e_to.status = 'active'
`).all(...workTypes, ...workTypes);
const countRows = db.prepare(`
SELECT e_to.name AS name, COUNT(*) AS n
@@ -58,7 +59,7 @@ export function computeNodeEvidence(db, nodeName) {
JOIN entities e ON r.from_entity_id = e.id
WHERE r.relation_type = 'evidences' AND r.to_entity_id = ?
AND e.status = 'active'
- ORDER BY e.created_at DESC
+ ORDER BY e.created_at DESC, e.id DESC
LIMIT ${EVIDENCE_CAP + 1}
`).all(node.id);
const truncated = rows.length > EVIDENCE_CAP;
diff --git a/dist/core/graph.js.map b/dist/core/graph.js.map
index 81ad82fd..a860f84c 100644
--- a/dist/core/graph.js.map
+++ b/dist/core/graph.js.map
@@ -1 +1 @@
-{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/core/graph.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/core/graph.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/core/kg-backfill.d.ts.map b/dist/core/kg-backfill.d.ts.map
index 227673ff..a1972e37 100644
--- a/dist/core/kg-backfill.d.ts.map
+++ b/dist/core/kg-backfill.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"kg-backfill.d.ts","sourceRoot":"","sources":["../../src/core/kg-backfill.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAkD3D,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAOtD;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAKxE;AAOD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAgBjD;AAgBD,eAAO,MAAM,sBAAsB,gGAEzB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,mBAAmB,CAAC;IAElC,MAAM,EAAE,MAAM,CAAC;IAEf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAE9B,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAErC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAGrC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAO7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAM/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAM3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE;QACN,eAAe,EAAE,MAAM,CAAC;QACxB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IAEF,wBAAwB,EAAE,MAAM,CAAC;IAEjC,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAwDD,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAEhC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAE9B,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAOD,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,eAAoB,EAAE,EAAE,CAAC,EAAE,cAAc,GAAG,cAAc,CAyDjG;AAED,wBAAgB,yBAAyB,CAAC,IAAI,GAAE,eAAoB,EAAE,EAAE,CAAC,EAAE,cAAc,GAAG,sBAAsB,CAsdjH"}
\ No newline at end of file
+{"version":3,"file":"kg-backfill.d.ts","sourceRoot":"","sources":["../../src/core/kg-backfill.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAmD3D,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAOtD;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAKxE;AAOD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAgBjD;AAgBD,eAAO,MAAM,sBAAsB,gGAEzB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,mBAAmB,CAAC;IAElC,MAAM,EAAE,MAAM,CAAC;IAEf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAE9B,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAErC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAGrC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAO7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAM/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAM3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE;QACN,eAAe,EAAE,MAAM,CAAC;QACxB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IAEF,wBAAwB,EAAE,MAAM,CAAC;IAEjC,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAwDD,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAEhC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAE9B,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAOD,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,eAAoB,EAAE,EAAE,CAAC,EAAE,cAAc,GAAG,cAAc,CAyDjG;AAED,wBAAgB,yBAAyB,CAAC,IAAI,GAAE,eAAoB,EAAE,EAAE,CAAC,EAAE,cAAc,GAAG,sBAAsB,CA0gBjH"}
\ No newline at end of file
diff --git a/dist/core/kg-backfill.js b/dist/core/kg-backfill.js
index d88b879b..ceeeff21 100644
--- a/dist/core/kg-backfill.js
+++ b/dist/core/kg-backfill.js
@@ -1,5 +1,6 @@
import { getDatabase } from '../db.js';
import { WORK_LAYER_TYPES, EVIDENCE_LAYER_TYPES } from './work-topology.js';
+import { parseSqliteUtcMs } from './time-utils.js';
const SYSTEM_TAG_PREFIXES = [
'project:', 'week:', 'cluster:', 'severity:', 'scope:', 'source:', 'date:',
'type:', 'urgency:', 'host:', 'session:', 'release:',
@@ -427,7 +428,8 @@ export function proposeBackfillCandidates(opts = {}, db) {
FROM entities e
WHERE e.type IN (${workTypeList.map(() => '?').join(',')})
${statusFilter}
- `).all(...workTypeList);
+ ${projectClause}
+ `).all(...workTypeList, ...projectArgs);
const metaSessionId = (meta) => {
try {
const parsed = JSON.parse(meta ?? '{}');
@@ -484,10 +486,20 @@ export function proposeBackfillCandidates(opts = {}, db) {
list.push(w);
}
}
- const ts = (v) => new Date(v).getTime();
+ const ts = (v) => parseSqliteUtcMs(v);
for (const list of workByProject.values()) {
- list.sort((a, b) => ts(b.created_at) - ts(a.created_at));
+ list.sort((a, b) => (ts(b.created_at) ?? -Infinity) - (ts(a.created_at) ?? -Infinity));
}
+ const sameProjectOrUntagged = (a, b) => {
+ const pa = projectTagsById.get(a);
+ const pb = projectTagsById.get(b);
+ if (!pa?.size || !pb?.size)
+ return true;
+ for (const p of pa)
+ if (pb.has(p))
+ return true;
+ return false;
+ };
for (const ev of evidenceRows) {
let added = 0;
const proposedWork = new Set();
@@ -497,6 +509,8 @@ export function proposeBackfillCandidates(opts = {}, db) {
break;
if (w.id === ev.id || proposedWork.has(w.id))
continue;
+ if (!sameProjectOrUntagged(ev.id, w.id))
+ continue;
candidates.push({
fromEntityId: ev.id,
fromName: ev.name,
@@ -512,11 +526,16 @@ export function proposeBackfillCandidates(opts = {}, db) {
if (added >= maxPerSource)
break;
}
- if (added === 0) {
+ if (added === 0 && maxPerSource > 0) {
const evTime = ts(ev.created_at);
- if (!Number.isNaN(evTime)) {
+ if (evTime !== null) {
for (const proj of projectTagsById.get(ev.id) ?? []) {
- const anchor = (workByProject.get(proj) ?? []).find((w) => w.id !== ev.id && !Number.isNaN(ts(w.created_at)) && ts(w.created_at) <= evTime);
+ const anchor = (workByProject.get(proj) ?? []).find((w) => {
+ if (w.id === ev.id)
+ return false;
+ const wTime = ts(w.created_at);
+ return wTime !== null && wTime <= evTime;
+ });
if (anchor) {
candidates.push({
fromEntityId: ev.id,
diff --git a/dist/core/kg-backfill.js.map b/dist/core/kg-backfill.js.map
index 6d495964..2d687a55 100644
--- a/dist/core/kg-backfill.js.map
+++ b/dist/core/kg-backfill.js.map
@@ -1 +1 @@
-{"version":3,"file":"kg-backfill.js","sourceRoot":"","sources":["../../src/core/kg-backfill.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"kg-backfill.js","sourceRoot":"","sources":["../../src/core/kg-backfill.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/core/serializer.d.ts.map b/dist/core/serializer.d.ts.map
index b55ffacf..c8d73105 100644
--- a/dist/core/serializer.d.ts.map
+++ b/dist/core/serializer.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/core/serializer.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA8BvF,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CAwB9D;AAwDD,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CA2H9D"}
\ No newline at end of file
+{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/core/serializer.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA8BvF,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CA+B9D;AAwDD,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CA8I9D"}
\ No newline at end of file
diff --git a/dist/core/serializer.js b/dist/core/serializer.js
index 0dc9eb7e..e10e3ae3 100644
--- a/dist/core/serializer.js
+++ b/dist/core/serializer.js
@@ -1,5 +1,6 @@
import { getDatabase } from '../db.js';
import { KnowledgeGraph } from '../knowledge-graph.js';
+import { truncateTitle } from './title.js';
import { NAMESPACES } from './types.js';
function buildImportedMetadata(existingMetadata, args) {
return {
@@ -31,6 +32,7 @@ export function exportMemories(args) {
entities: entities.map((e) => ({
name: e.name,
type: e.type,
+ title: e.title ?? null,
namespace: e.namespace ?? 'personal',
observations: e.observations,
tags: e.tags,
@@ -88,6 +90,10 @@ export function importMemories(args) {
}
try {
const existing = kg.getEntity(entity.name);
+ const bundledTitle = entity.title;
+ const title = typeof bundledTitle === 'string' && bundledTitle.trim().length > 0
+ ? truncateTitle(bundledTitle)
+ : undefined;
const namespace = args.namespace ?? (existing ? undefined : (entity.namespace || 'personal'));
const importedMetadata = buildImportedMetadata(existing?.metadata, {
exportedAt: args.data.exported_at,
@@ -101,6 +107,7 @@ export function importMemories(args) {
}
if (args.merge_strategy === 'append') {
kg.createEntity(entity.name, entity.type, {
+ title,
observations: entity.observations,
tags: entity.tags,
namespace,
@@ -113,6 +120,7 @@ export function importMemories(args) {
kg.clearEntityData(entity.name);
}
kg.createEntity(entity.name, entity.type, {
+ title,
observations: entity.observations,
tags: entity.tags,
metadata: importedMetadata,
diff --git a/dist/core/serializer.js.map b/dist/core/serializer.js.map
index 2ce24c05..13a9d1fe 100644
--- a/dist/core/serializer.js.map
+++ b/dist/core/serializer.js.map
@@ -1 +1 @@
-{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/core/serializer.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/core/serializer.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/core/types.d.ts b/dist/core/types.d.ts
index 10613e6f..73d5de8c 100644
--- a/dist/core/types.d.ts
+++ b/dist/core/types.d.ts
@@ -114,6 +114,7 @@ export interface ExportResult {
entities: Array<{
name: string;
type: string;
+ title?: string | null;
namespace: string;
observations: string[];
tags: string[];
diff --git a/dist/core/types.d.ts.map b/dist/core/types.d.ts.map
index e74509a4..5b01a2a9 100644
--- a/dist/core/types.d.ts.map
+++ b/dist/core/types.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/core/why.d.ts b/dist/core/why.d.ts
index dc898926..83baeac1 100644
--- a/dist/core/why.d.ts
+++ b/dist/core/why.d.ts
@@ -1,5 +1,5 @@
import type { MemeshDatabase } from '../storage/sqlite.js';
-export type WhyAbstention = 'git_unavailable' | 'not_a_git_repo' | 'file_not_tracked' | 'line_out_of_range' | 'line_uncommitted' | 'no_commit_entity' | 'no_session_link';
+export type WhyAbstention = 'git_unavailable' | 'not_a_git_repo' | 'file_not_tracked' | 'history_unreadable' | 'line_out_of_range' | 'line_uncommitted' | 'no_commits_supplied' | 'no_commit_entity' | 'no_session_link';
export interface WhyGitCommit {
hash: string;
subject?: string;
@@ -20,6 +20,7 @@ export interface WhyCommitAttribution {
session: {
session_id: string;
entities: WhyEntityRef[];
+ truncated: boolean;
} | null;
abstentions: WhyAbstention[];
}
diff --git a/dist/core/why.d.ts.map b/dist/core/why.d.ts.map
index e822258a..76f80b24 100644
--- a/dist/core/why.d.ts.map
+++ b/dist/core/why.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"why.d.ts","sourceRoot":"","sources":["../../src/core/why.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,MAAM,MAAM,aAAa,GACrB,iBAAiB,GACjB,gBAAgB,GAChB,kBAAkB,GAClB,mBAAmB,GACnB,kBAAkB,GAClB,kBAAkB,GAClB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,YAAY;IAE3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,YAAY,CAAC;IAErB,MAAM,EAAE,CAAC,YAAY,GAAG;QAAE,YAAY,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IAG3D,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,YAAY,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IACjE,WAAW,EAAE,aAAa,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IAEjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,aAAa,EAAE;QAGb,KAAK,EAAE,UAAU,CAAC;QAClB,QAAQ,EAAE,YAAY,EAAE,CAAC;KAC1B,CAAC;IAEF,WAAW,EAAE,aAAa,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,EAAE,aAAa,GAAG,IAAI,CAAC;CAClC;AAmBD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3C,oBAAoB,CAmDtB;AAID,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AA6DD,wBAAgB,cAAc,CAC5B,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE;IACL,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;CAC/B,GACA,SAAS,CAiEX"}
\ No newline at end of file
+{"version":3,"file":"why.d.ts","sourceRoot":"","sources":["../../src/core/why.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,MAAM,MAAM,aAAa,GACrB,iBAAiB,GACjB,gBAAgB,GAChB,kBAAkB,GAGlB,oBAAoB,GACpB,mBAAmB,GACnB,kBAAkB,GAGlB,qBAAqB,GACrB,kBAAkB,GAClB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,YAAY;IAE3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,YAAY,CAAC;IAErB,MAAM,EAAE,CAAC,YAAY,GAAG;QAAE,YAAY,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IAI3D,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,YAAY,EAAE,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACrF,WAAW,EAAE,aAAa,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IAEjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,aAAa,EAAE;QAGb,KAAK,EAAE,UAAU,CAAC;QAClB,QAAQ,EAAE,YAAY,EAAE,CAAC;KAC1B,CAAC;IAGF,WAAW,EAAE,aAAa,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,EAAE,aAAa,GAAG,IAAI,CAAC;CAClC;AAmBD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3C,oBAAoB,CA4DtB;AAID,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAuGD,wBAAgB,cAAc,CAC5B,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE;IACL,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;CAC/B,GACA,SAAS,CAgFX"}
\ No newline at end of file
diff --git a/dist/core/why.js b/dist/core/why.js
index 43e5a792..f034f69d 100644
--- a/dist/core/why.js
+++ b/dist/core/why.js
@@ -46,7 +46,7 @@ export function resolveFileCommits(repoDir, file, opts = {}) {
]);
}
catch {
- return { commits: [], abstention: null };
+ return { commits: [], abstention: 'history_unreadable' };
}
const commits = [];
for (const line of out.split('\n')) {
@@ -78,8 +78,12 @@ function findCommitEntity(db, hash) {
const rows = db.prepare(`SELECT id, name, type, title, created_at, metadata FROM entities
WHERE type = 'commit' AND name LIKE 'commit-%'
AND length(substr(name, 8)) >= 7
- AND (? LIKE substr(name, 8) || '%' OR substr(name, 8) LIKE ? || '%')
- ORDER BY length(name) DESC`).all(hash, hash);
+ AND substr(name, 8) GLOB '[0-9a-fA-F]*'
+ AND (
+ substr(?, 1, length(substr(name, 8))) = substr(name, 8)
+ OR substr(substr(name, 8), 1, length(?)) = ?
+ )
+ ORDER BY length(name) DESC`).all(hash, hash, hash);
if (rows.length === 0)
return null;
const row = rows[0];
@@ -89,16 +93,25 @@ function observationsOf(db, entityId) {
const rows = db.prepare('SELECT content FROM observations WHERE entity_id = ? ORDER BY id').all(entityId);
return rows.map((r) => r.content);
}
+const SESSION_ENTITY_CAP = 200;
function sessionEntities(db, sessionId) {
- return db.prepare(`SELECT DISTINCT e.id, e.name, e.type, e.title, e.created_at
+ const rows = db.prepare(`SELECT DISTINCT e.id, e.name, e.type, e.title, e.created_at
FROM entities e JOIN tags t ON t.entity_id = e.id
WHERE t.tag = ? AND e.status != 'archived'
- ORDER BY e.created_at`).all(`session:${sessionId}`);
+ ORDER BY e.created_at
+ LIMIT ${SESSION_ENTITY_CAP + 1}`).all(`session:${sessionId}`);
+ return {
+ entities: rows.slice(0, SESSION_ENTITY_CAP),
+ truncated: rows.length > SESSION_ENTITY_CAP,
+ };
}
export function explainCommits(db, input) {
const basename = basenameOf(input.file);
const limit = input.limit ?? 10;
const project = input.project ?? null;
+ const queryAbstentions = [...(input.abstentions ?? [])];
+ if (input.commits === undefined)
+ queryAbstentions.push('no_commits_supplied');
const commits = [];
for (const commit of (input.commits ?? []).slice(0, limit)) {
const abstentions = [];
@@ -116,7 +129,7 @@ export function explainCommits(db, input) {
};
const sessionId = found.metadata?.session_id;
if (typeof sessionId === 'string' && sessionId.length > 0) {
- session = { session_id: sessionId, entities: sessionEntities(db, sessionId) };
+ session = { session_id: sessionId, ...sessionEntities(db, sessionId) };
}
else {
abstentions.push('no_session_link');
@@ -149,7 +162,7 @@ export function explainCommits(db, input) {
project,
commits,
file_memories: { basis: 'file-tag', entities: fileMemories },
- abstentions: input.abstentions ?? [],
+ abstentions: queryAbstentions,
};
}
//# sourceMappingURL=why.js.map
\ No newline at end of file
diff --git a/dist/core/why.js.map b/dist/core/why.js.map
index ea10ef8e..23537e14 100644
--- a/dist/core/why.js.map
+++ b/dist/core/why.js.map
@@ -1 +1 @@
-{"version":3,"file":"why.js","sourceRoot":"","sources":["../../src/core/why.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"why.js","sourceRoot":"","sources":["../../src/core/why.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/transports/cli/cli.js b/dist/transports/cli/cli.js
index ff5c8d9b..e65827f9 100755
--- a/dist/transports/cli/cli.js
+++ b/dist/transports/cli/cli.js
@@ -453,6 +453,8 @@ const WHY_ABSTENTION_TEXT = {
git_unavailable: 'git is not installed or not on PATH — commit attribution unavailable.',
not_a_git_repo: 'Not inside a git repository — commit attribution unavailable.',
file_not_tracked: 'File is not tracked by git — commit attribution unavailable.',
+ history_unreadable: "git could not read this file's history (too much output, too slow, or the repository has no commits yet) — nothing is listed because the question went unanswered, not because no commit touched the file.",
+ no_commits_supplied: 'No commit hashes were supplied — only the file-tag half of this answer ran.',
line_out_of_range: 'That line does not exist in the tracked file.',
line_uncommitted: 'That line is not committed yet — nothing to attribute.',
no_commit_entity: 'memesh has no memory of this commit (it predates capture, or was made without hooks / on another machine).',
@@ -469,8 +471,14 @@ program
await withDatabase(async () => {
const { resolveFileCommits, explainCommits } = await import('../../core/why.js');
const cwd = process.cwd();
- const limit = parseInt(opts.limit);
- const line = opts.line !== undefined ? parseInt(opts.line) : undefined;
+ const limit = parseInt(opts.limit, 10);
+ const line = opts.line !== undefined ? parseInt(opts.line, 10) : undefined;
+ for (const [flag, value] of [['--limit', limit], ['--line', line]]) {
+ if (value !== undefined && (!Number.isInteger(value) || value < 1)) {
+ console.error(`Error: ${flag} needs a whole number of 1 or more.`);
+ process.exit(1);
+ }
+ }
const resolved = resolveFileCommits(cwd, file, { line, limit });
const result = explainCommits(getDatabase(), {
file,
@@ -502,6 +510,9 @@ program
console.log(` session: ${c.session.session_id}`);
for (const s of c.session.entities)
console.log(` - ${s.name} (${s.type})`);
+ if (c.session.truncated) {
+ console.log(` … first ${c.session.entities.length} of a larger session — more exist`);
+ }
}
for (const code of c.abstentions) {
console.log(` ! ${WHY_ABSTENTION_TEXT[code] ?? code}`);
diff --git a/dist/transports/cli/cli.js.map b/dist/transports/cli/cli.js.map
index 4caa5da3..8183c123 100644
--- a/dist/transports/cli/cli.js.map
+++ b/dist/transports/cli/cli.js.map
@@ -1 +1 @@
-{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/transports/cli/cli.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/transports/cli/cli.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/transports/http/server.d.ts.map b/dist/transports/http/server.d.ts.map
index d7809ed6..c2bf203a 100644
--- a/dist/transports/http/server.d.ts.map
+++ b/dist/transports/http/server.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/transports/http/server.ts"],"names":[],"mappings":";AAyBA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAkB,MAAM,6BAA6B,CAAC;AAiBjG,QAAA,MAAM,GAAG,6CAAY,CAAC;AA6CtB,wBAAgB,iBAAiB,CAAC,GAAG,EAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAG/D;AAqjCD,wBAAgB,WAAW,CACzB,IAAI,SAAO,EACX,IAAI,SAAO,EACX,IAAI,CAAC,EAAE;IACL,WAAW,CAAC,EAAE,OAAO,CAAC;IAUtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,eAAe,CAAC,EAAE,OAAO,cAAc,CAAC;IACxC,mBAAmB,CAAC,EAAE,OAAO,kBAAkB,CAAC;CACjD,GACA,UAAU,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,CA8I/B;AAID,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAElE;AAwBD,OAAO,EAAE,GAAG,EAAE,CAAC"}
\ No newline at end of file
+{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/transports/http/server.ts"],"names":[],"mappings":";AAyBA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAkB,MAAM,6BAA6B,CAAC;AAiBjG,QAAA,MAAM,GAAG,6CAAY,CAAC;AA6CtB,wBAAgB,iBAAiB,CAAC,GAAG,EAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAG/D;AA2jCD,wBAAgB,WAAW,CACzB,IAAI,SAAO,EACX,IAAI,SAAO,EACX,IAAI,CAAC,EAAE;IACL,WAAW,CAAC,EAAE,OAAO,CAAC;IAUtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,eAAe,CAAC,EAAE,OAAO,cAAc,CAAC;IACxC,mBAAmB,CAAC,EAAE,OAAO,kBAAkB,CAAC;CACjD,GACA,UAAU,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,CA8I/B;AAID,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAElE;AAwBD,OAAO,EAAE,GAAG,EAAE,CAAC"}
\ No newline at end of file
diff --git a/dist/transports/http/server.js b/dist/transports/http/server.js
index 057787a8..4a559c49 100755
--- a/dist/transports/http/server.js
+++ b/dist/transports/http/server.js
@@ -300,7 +300,7 @@ app.post('/v1/why', (req, res) => handlePost(WhyBody, req, res, async (data) =>
const { explainCommits } = await import('../../core/why.js');
return explainCommits(getDatabase(), {
file: data.file,
- commits: (data.commits ?? []).map((hash) => ({ hash })),
+ commits: data.commits?.map((hash) => ({ hash })),
project: data.project ?? null,
limit: data.limit,
});
diff --git a/dist/transports/http/server.js.map b/dist/transports/http/server.js.map
index ffda5abe..647eacde 100644
--- a/dist/transports/http/server.js.map
+++ b/dist/transports/http/server.js.map
@@ -1 +1 @@
-{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/transports/http/server.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/transports/http/server.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/transports/schemas.d.ts b/dist/transports/schemas.d.ts
index 23da3cdd..12a60945 100644
--- a/dist/transports/schemas.d.ts
+++ b/dist/transports/schemas.d.ts
@@ -47,6 +47,7 @@ export declare const ExportResultSchema: z.ZodObject<{
entities: z.ZodArray>;
type: z.ZodString;
+ title: z.ZodOptional>;
namespace: z.ZodString;
observations: z.ZodArray;
tags: z.ZodArray;
@@ -64,6 +65,7 @@ export declare const ImportSchema: z.ZodObject<{
entities: z.ZodArray>;
type: z.ZodString;
+ title: z.ZodOptional>;
namespace: z.ZodString;
observations: z.ZodArray;
tags: z.ZodArray;
diff --git a/dist/transports/schemas.d.ts.map b/dist/transports/schemas.d.ts.map
index d6aef268..06bd2e87 100644
--- a/dist/transports/schemas.d.ts.map
+++ b/dist/transports/schemas.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/transports/schemas.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkCxB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;kBAWhB,CAAC;AAEZ,eAAO,MAAM,YAAY;;;;;;;;;;;kBAOd,CAAC;AAiBZ,eAAO,MAAM,YAAY;;;kBAGd,CAAC;AAEZ,eAAO,MAAM,YAAY;;;;;;;;kBAMd,CAAC;AAOZ,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;iBAY7B,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAUd,CAAC;AAEZ,eAAO,MAAM,WAAW;;;;;;;;;;kBAMb,CAAC;AAMZ,eAAO,MAAM,eAAe;;;;;;kBAWjB,CAAC;AAEZ,eAAO,MAAM,cAAc;;kBAEhB,CAAC;AAMZ,eAAO,MAAM,SAAS;;;;;kBAKX,CAAC;AAEZ,eAAO,MAAM,kBAAkB;;;;;;;;;kBAGpB,CAAC"}
\ No newline at end of file
+{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/transports/schemas.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkCxB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;kBAWhB,CAAC;AAEZ,eAAO,MAAM,YAAY;;;;;;;;;;;kBAOd,CAAC;AAiBZ,eAAO,MAAM,YAAY;;;kBAGd,CAAC;AAEZ,eAAO,MAAM,YAAY;;;;;;;;kBAMd,CAAC;AAOZ,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;iBAkB7B,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAUd,CAAC;AAEZ,eAAO,MAAM,WAAW;;;;;;;;;;kBAMb,CAAC;AAMZ,eAAO,MAAM,eAAe;;;;;;kBAWjB,CAAC;AAEZ,eAAO,MAAM,cAAc;;kBAEhB,CAAC;AAMZ,eAAO,MAAM,SAAS;;;;;kBAKX,CAAC;AAEZ,eAAO,MAAM,kBAAkB;;;;;;;;;kBAGpB,CAAC"}
\ No newline at end of file
diff --git a/dist/transports/schemas.js b/dist/transports/schemas.js
index 5042e9d2..722e5831 100644
--- a/dist/transports/schemas.js
+++ b/dist/transports/schemas.js
@@ -47,6 +47,7 @@ export const ExportResultSchema = z.object({
entities: z.array(z.object({
name: nameField,
type: z.string().min(1).max(100),
+ title: z.string().max(TITLE_MAX_LENGTH).nullable().optional(),
namespace: z.string(),
observations: z.array(z.string().max(10000)),
tags: z.array(z.string().max(255)),
diff --git a/dist/transports/schemas.js.map b/dist/transports/schemas.js.map
index 23360e1a..131864d8 100644
--- a/dist/transports/schemas.js.map
+++ b/dist/transports/schemas.js.map
@@ -1 +1 @@
-{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/transports/schemas.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/transports/schemas.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md
index fca45965..432e50ff 100644
--- a/docs/ARCHITECTURE.md
+++ b/docs/ARCHITECTURE.md
@@ -227,7 +227,7 @@ The primary dashboard is now the packaged Preact single-page app served by `GET
| Graph | Interactive knowledge graph with **signal-first node loading**, **access_count node sizing**, and **Drift Mode** (recency coloring) |
| Settings | LLM provider setup, capabilities, and language selection |
-The dashboard talks to `/v1/health`, `/v1/config`, `/v1/analytics`, `/v1/graph`, `/v1/entities`, `/v1/patterns`, and `/v1/recall`. When the packaged build is unavailable, the HTTP server falls back to the legacy `cli/view.ts` HTML generator for compatibility.
+The dashboard is a client of the ordinary HTTP API — no private endpoints — so the endpoint list lives in exactly one place: the route table in [API_REFERENCE.md](api/API_REFERENCE.md#http-rest-api), which `scripts/check-doc-claims.mjs` checks against `server.ts`'s registrations. A copy of it used to sit here and had already rotted: it named seven endpoints and missed `/v1/graph/evidence` and `/v1/projects`, both of which the dashboard calls. A second list nothing gates is a list that goes quietly wrong. When the packaged build is unavailable, the HTTP server falls back to the legacy `cli/view.ts` HTML generator for compatibility.
**Graph data contract**: `/v1/graph` returns `{ entities, relations, noiseTypes }` — `noiseTypes` is the server-supplied list of high-volume / low-diagnostic types (`session_keypoint`, `commit`, etc.) the dashboard default-hides. Single source of truth lives in `src/core/analytics.ts NOISE_TYPES`.
diff --git a/docs/api/API_REFERENCE.md b/docs/api/API_REFERENCE.md
index 74379e40..4d996260 100644
--- a/docs/api/API_REFERENCE.md
+++ b/docs/api/API_REFERENCE.md
@@ -26,6 +26,7 @@ If `remember` is called again with an existing `name`, MeMesh treats it as an ap
|-----------|------|----------|-------------|
| `name` | string | Yes | Unique entity name (e.g., `"auth-decision"`, `"jwt-pattern"`) |
| `type` | string | Yes | Entity type (e.g., `"decision"`, `"pattern"`, `"lesson"`, `"commit"`) |
+| `title` | string | No | Short human-readable label shown wherever the memory is listed (e.g. `"Why we dropped JWT"`), max 200 characters — longer is **rejected**, not truncated, so the caller can shorten it themselves. On an entity that already exists, supplying this replaces the title; omitting it leaves the title it already has. Whitespace-only counts as omitted. |
| `observations` | string[] | No | Key facts or observations about this entity |
| `tags` | string[] | No | Tags for filtering (e.g., `"project:myapp"`, `"type:decision"`) |
| `relations` | object[] | No | Relations to other entities |
@@ -136,6 +137,7 @@ Returns an object whose `entities` array holds the matching entities ranked by m
{
"id": 1,
"name": "auth-decision",
+ "title": "Why we chose JWT",
"type": "decision",
"created_at": "2026-03-09 12:00:00",
"observations": [
@@ -153,6 +155,11 @@ Returns an object whose `entities` array holds the matching entities ranked by m
}
```
+`title` is present on every entity that has one and `null` on the ones that do
+not — a memory written before titles existed, or by a caller that sent none.
+Show it where you would otherwise show `name`; `name` is the identifier the
+other tools address the memory by, not a label meant to be read.
+
**Retrieval metadata (`retrieval`)**: every recall envelope says HOW it was
answered — the three things the rows themselves cannot tell you. `mode` is
`"hybrid"` when the vector supplement actually ran and `"fts"` when the
@@ -269,6 +276,7 @@ Export memories to a portable JSON bundle. Use for backup, sharing with teammate
"entities": [
{
"name": "auth-decision",
+ "title": "Why we chose OAuth 2.0",
"type": "decision",
"namespace": "team",
"observations": ["Use OAuth 2.0"],
@@ -279,6 +287,8 @@ Export memories to a portable JSON bundle. Use for backup, sharing with teammate
}
```
+`title` is `null` for an entity that has none. Bundles written before titles existed carry no `title` key at all, and `import` reads that as "this bundle says nothing about the title" — it leaves an existing entity's title alone rather than clearing it.
+
**Examples**:
```json
@@ -320,6 +330,12 @@ nothing that is already there, and a namespace move is a change — it takes the
memory out of every scoped recall that used to return it. An import asking to
skip existing entities does not get to relocate them as a side effect.
+A bundle's `title` is applied to the entities the import creates, and replaces
+the title of one it updates (`overwrite`, `append`). A bundle entry with no
+title — or a blank one — leaves an existing title as it was; over-long titles
+are truncated rather than refused, because one bad row must not cost the whole
+bundle.
+
**Response**:
```json
@@ -996,7 +1012,11 @@ associated with the file by `file:` tag.
The route runs **no git, ever** — commit hashes come from the caller, and
the strict schema has no repo-path field on purpose: the server is never
handed a directory to execute anything in. A caller without a working tree
-(e.g. the dashboard) simply omits `commits` and gets the file-tag half.
+(e.g. the dashboard) omits `commits` and gets the file-tag half, plus the
+`no_commits_supplied` abstention saying so — omitting the field is a gap in
+the question, and the response must not look like the answer "this file has
+no remembered commits". A caller that resolved commits itself and found none
+sends `"commits": []` and gets no such abstention.
```json
{
@@ -1018,7 +1038,7 @@ Response `data`:
{
"commit": { "hash": "…" },
"entity": { "id": 12, "name": "commit-abc1234", "observations": ["…"], "…": "…" },
- "session": { "session_id": "…", "entities": [ { "name": "session-…-files", "…": "…" } ] },
+ "session": { "session_id": "…", "entities": [ { "name": "session-…-files", "…": "…" } ], "truncated": false },
"abstentions": []
}
],
@@ -1027,14 +1047,25 @@ Response `data`:
}
```
+`session.truncated` is `true` when the session held more than 200 entities
+and only the first 200 were returned — the same cap and the same flag
+`GET /v1/graph/evidence` uses, and for the same reason: this query runs once
+per commit and the schema accepts 50 of them, so the response needs both a
+ceiling and a way to say the ceiling was hit.
+
Every gap in the chain is a **typed abstention**, never a guess:
`no_commit_entity` (the graph has no memory of that hash — it predates
capture, or was made without hooks / on another machine) and
`no_session_link` (the commit entity was captured before commits recorded
-their session id) appear per commit; git-side codes (`not_a_git_repo`,
-`file_not_tracked`, `git_unavailable`, `line_out_of_range`,
-`line_uncommitted`) can only be produced by the CLI, which passes them
-through in the top-level `abstentions`. The `file_memories` block is
+their session id) appear per commit; `no_commits_supplied` (the request
+carried no `commits` field at all) and the git-side codes (`not_a_git_repo`,
+`file_not_tracked`, `git_unavailable`, `history_unreadable`,
+`line_out_of_range`, `line_uncommitted`) appear in the top-level
+`abstentions` — the git-side ones only from the CLI, which resolves commits
+locally and passes its own abstention through. `history_unreadable` means
+`git log` did not answer (its output outgrew the read buffer, it exceeded the
+5-second timeout, or the repository has no commits yet): the empty commit
+list under that code means *unknown*, never *none*. The `file_memories` block is
labelled `basis: "file-tag"` because it is associated by basename tag —
not derived from the commits — and the two must not be read as the same
kind of evidence.
@@ -1182,7 +1213,9 @@ an explicit "associated, not commit-derived" label.
What the chain cannot prove is said outright, never guessed: a commit with
no entity ("memesh has no memory of this commit"), an entity with no
-session link, an untracked file, a line not yet committed. Run it from
+session link, an untracked file, a line not yet committed, and a history
+git could not read at all (`history_unreadable` — the empty list means
+unknown, not none). Run it from
inside the repository — the current directory picks both the git repo and
the project scope.
diff --git a/scripts/audit/baseline.json b/scripts/audit/baseline.json
index 33de1692..0b632baf 100644
--- a/scripts/audit/baseline.json
+++ b/scripts/audit/baseline.json
@@ -31,26 +31,6 @@
"reason": "emptiness paired with positive assertions in the same test file (per-file detail in the 2026-08-04 triage)",
"triaged": "2026-08-04"
},
- "C1 tests/core/conflict-judge.test.ts": {
- "class": "SAFE",
- "reason": "emptiness assertions (no proposals staged, no judged rows, no relations) are each paired with positive assertions on the same flow in the same test",
- "triaged": "2026-08-14 (conflict pipeline P2)"
- },
- "C1 tests/core/config.test.ts": {
- "class": "SAFE",
- "reason": "emptiness paired with positive assertions in the same test file (per-file detail in the 2026-08-04 triage)",
- "triaged": "2026-08-04"
- },
- "C1 tests/core/export-import.test.ts": {
- "class": "SAFE",
- "reason": "emptiness paired with positive assertions in the same test file (per-file detail in the 2026-08-04 triage)",
- "triaged": "2026-08-04"
- },
- "C1 tests/core/llm-telemetry.test.ts": {
- "class": "SAFE",
- "reason": "emptiness paired with positive assertions in the same test file (per-file detail in the 2026-08-04 triage)",
- "triaged": "2026-08-04"
- },
"C1 tests/core/memory-tool.test.ts": {
"class": "SAFE",
"reason": "emptiness paired with positive assertions in the same test file (per-file detail in the 2026-08-04 triage)",
@@ -76,11 +56,6 @@
"reason": "emptiness paired with positive assertions in the same test file (per-file detail in the 2026-08-04 triage)",
"triaged": "2026-08-04"
},
- "C1 tests/knowledge-graph-batch.test.ts": {
- "class": "SAFE",
- "reason": "emptiness paired with positive assertions in the same test file (per-file detail in the 2026-08-04 triage)",
- "triaged": "2026-08-04"
- },
"C1 tests/recall-empty-query-vectors.test.ts": {
"class": "SAFE",
"reason": "emptiness paired with positive assertions in the same test file (per-file detail in the 2026-08-04 triage)",
@@ -91,11 +66,6 @@
"reason": "emptiness paired with positive assertions in the same test file (per-file detail in the 2026-08-04 triage)",
"triaged": "2026-08-04"
},
- "C1 tests/reindex-reports-what-happened.test.ts": {
- "class": "SAFE",
- "reason": "emptiness paired with positive assertions in the same test file (per-file detail in the 2026-08-04 triage)",
- "triaged": "2026-08-04"
- },
"C1 tests/vector-index-safety.test.ts": {
"class": "SAFE",
"reason": "emptiness paired with positive assertions in the same test file (per-file detail in the 2026-08-04 triage)",
@@ -191,7 +161,7 @@
"reason": "the .toBe(0)/exit-code assertions are paired with positive stdout content checks in the same tests (needle text, headers)",
"triaged": "2026-08-04"
},
- "C5 src/core/demo.ts:180": {
+ "C5 src/core/demo.ts:185": {
"class": "SAFE-ACCUMULATOR",
"reason": "spreads an in-repo literal DEMO_DATA entry (line shifted by the DEMO_RELATIONS insert; same code as the prior demo.ts entry)",
"triaged": "2026-08-04"
@@ -231,16 +201,6 @@
"reason": "next line rejects the absent case",
"triaged": "2026-08-04; re-keyed 2026-08-10 (the AUTO_CAPTURE_TAG import shifted it +1; same statement, classification unchanged)"
},
- "C1 tests/hooks/pre-compact.test.ts": {
- "class": "SAFE",
- "reason": "the toHaveLength(0) is 'a crashed capture run leaves NO heartbeat', paired in the same test with positive anti-vacuity pins: the capture failure is asserted visible on stderr (toContain('metadata')) and the sibling success test asserts the stamp exists with run_count 1 — the heuristic's pin regex just does not match toBe(1) on run_count",
- "triaged": "2026-08-13 (PR #142 review round)"
- },
- "C1 tests/hooks/write-hook-invariants.test.ts": {
- "class": "SAFE",
- "reason": "the toHaveLength(0) is 'openHookDb alone never stamps', followed in the same test by recordHookRun and positive pins (toHaveLength(1), run_count 1 then 2) — emptiness and its non-vacuous counterpart live in one test body",
- "triaged": "2026-08-13 (PR #142 review round)"
- },
"C1 tests/cli/doctor-honest-pass.test.ts": {
"class": "SAFE",
"reason": "the zeros are exit codes and a \"warn, not pass\" status, each paired in the same test with a positive assertion (the entity exists, the opposite verdict fires)",
@@ -261,37 +221,32 @@
"reason": "the zeros are exit codes, and the refusal cases are paired with an import that must still succeed",
"triaged": "2026-08-10 (P7 batch 2)"
},
- "C1 tests/core/dreamer-semantic-clustering.test.ts": {
- "class": "SAFE",
- "reason": "llmCalls toBe(0) is the assertion under test (the cluster was skipped before the network) and is backed by a second assertion that no LLM attempt appears among the skip reasons",
- "triaged": "2026-08-10 (P7 batch 2)"
- },
"C6 tests/relation-types-documented.test.ts": {
"class": "WIRING-PIN",
"reason": "reads cli.ts to assert each behavioural relation type has a flag whose help carries the consequence — the flags' behaviour is tested against a real database in tests/cli/remember-relations.test.ts",
"triaged": "2026-08-10 (P7 batch 2)"
},
- "C5 src/core/kg-backfill.ts:436": {
+ "C5 src/core/kg-backfill.ts:437": {
"class": "SAFE-ACCUMULATOR",
"reason": "index lookups where empty means no peers",
"triaged": "2026-08-04 (re-keyed: UX-4 inserted Rule 5 above it; statement unchanged)"
},
- "C5 src/core/kg-backfill.ts:581": {
+ "C5 src/core/kg-backfill.ts:582": {
"class": "SAFE-ACCUMULATOR",
"reason": "index lookups where empty means no peers",
"triaged": "2026-08-04 (re-keyed: UX-4 inserted Rule 5 above it; statement unchanged)"
},
- "C5 src/core/kg-backfill.ts:588": {
+ "C5 src/core/kg-backfill.ts:589": {
"class": "SAFE-ACCUMULATOR",
"reason": "index lookups where empty means no peers",
"triaged": "2026-08-04 (re-keyed: UX-4 inserted Rule 5 above it; statement unchanged)"
},
- "C5 src/core/serializer.ts:22": {
+ "C5 src/core/serializer.ts:23": {
"class": "SAFE-ACCUMULATOR",
"reason": "provenance spread identity; trust written unconditionally",
"triaged": "2026-08-04"
},
- "C5 src/core/serializer.ts:25": {
+ "C5 src/core/serializer.ts:26": {
"class": "SAFE-ACCUMULATOR",
"reason": "provenance spread identity; trust written unconditionally",
"triaged": "2026-08-04"
@@ -386,11 +341,6 @@
"reason": "write-time signal-score inputs; empty means the caller passed no observations/tags, which is the correct identity for scoring",
"triaged": "2026-08-09 (re-keyed: review fixes — busy_timeout, vector-index guards and the .mcp.json entry check — shifted these lines; same statements, same classification); re-keyed 2026-08-14 (UX-1 title column added lines above; same statement — verified against the line content)"
},
- "C1 tests/db.test.ts": {
- "class": "SAFE",
- "reason": "the .toBe(0) is PRAGMA table_info notnull flag equality (0 = nullable column), not a set-emptiness assertion; the column presence it depends on is pinned by toBeDefined on the line above",
- "triaged": "2026-08-14 (UX-1 title-column migration tests)"
- },
"C5 src/knowledge-graph.ts:431": {
"class": "SAFE-ACCUMULATOR",
"reason": "batch-hydrate lookups; confidence bump fails closed",
@@ -461,7 +411,7 @@
"reason": "the `toEqual([])` assertions on `actions` are each pinned by non-empty counterparts asserting exact action kinds and arg arrays; emptiness is the positive claim (nothing to prescribe on a wired host), not vacuity.",
"triaged": "2026-08-16 (P1 memesh setup; re-applied after merge took main baseline)"
},
- "C5 dashboard/src/components/GraphTab.tsx:334": {
+ "C5 dashboard/src/components/GraphTab.tsx:372": {
"class": "SAFE-GUARDED",
"reason": "computeGraph always returns noiseTypes; same-origin fetch",
"triaged": "2026-08-04 (re-keyed: the Batch-D token-resolver + palette refactor shifted 208→233; same code verified before re-keying); re-keyed 2026-08-13 233->276 (graph visual-hierarchy helpers added above; same statement, classification unchanged — verified); re-keyed 2026-08-14 276->285 (review-fix comments above shifted it; same statement — verified); re-keyed 2026-08-15 285→286 (merge main shifted lines +1; same statement — verified) (re-keyed: UX-4 inserted Rule 5 above it; statement unchanged)"
@@ -531,17 +481,17 @@
"reason": "classification falls through to the freeform bucket",
"triaged": "2026-08-04; re-keyed 2026-08-14 (displayTitle helper added above; same statement — verified); re-keyed 2026-08-16 (UX-3: CLUSTER_DOT block added above; same statement — verified)"
},
- "C5 dashboard/src/components/MemoriesTab.tsx:171": {
+ "C5 dashboard/src/components/MemoriesTab.tsx:244": {
"class": "SAFE-DISPLAY",
"reason": "client-side search haystack only (absorbs the retired BrowseTab:169 and LessonsTab:298 hay statements)",
"triaged": "2026-08-16 (tab consolidation: statement moved verbatim from the retired LessonsTab/BrowseTab; original triage 2026-08-04); re-keyed 2026-08-16 (UX-3: local CLUSTER_DOT block removed above, statement unchanged — verified)"
},
- "C5 src/core/why.ts:238": {
+ "C5 src/core/why.ts:312": {
"class": "SAFE-BY-CONSTRUCTION",
"reason": "`input.commits ?? []` — WhySchema documents commits as optional (a caller without a working tree resolves none); the result carries commits: [] visibly, and every real gap in the chain is a typed abstention, never a default.",
"triaged": "2026-08-16 (UX-3 memesh why)"
},
- "C5 src/core/why.ts:295": {
+ "C5 src/core/why.ts:308": {
"class": "SAFE-BY-CONSTRUCTION",
"reason": "`input.abstentions ?? []` — pass-through of caller-declared git-side abstentions into the response verbatim; absence means the caller declared none, and nothing here can convert a failure into silence (the CLI always passes its resolveFileCommits abstention in).",
"triaged": "2026-08-16 (UX-3 memesh why)"
@@ -571,70 +521,100 @@
"reason": "`(e.relations ?? []).filter` listing outgoing supersedes chain lines — absence renders no chain section at all rather than an empty claim.",
"triaged": "2026-08-16 (UX-3 ADR view)"
},
- "C5 dashboard/src/components/ProjectTab.tsx:42": {
+ "C5 dashboard/src/components/ProjectTab.tsx:43": {
"class": "SAFE-DISPLAY",
"reason": "`e.relations ?? []` in selectProjectEntities — an entity without relations simply readmits nothing; the readmission rule is pinned by tests/dashboard/ProjectTab.select.test.ts including the no-relations path.",
"triaged": "2026-08-16 (UX-3 readmission rule)"
},
- "C1 tests/cli/why.test.ts": {
- "class": "SAFE",
- "reason": "emptiness (stderr ''/no-stack regex) paired with positive assertions in the same test file: exit 0, parsed JSON fields, entity name, abstention sentence",
- "triaged": "2026-08-16 (UX-3 memesh why)"
- },
- "C1 tests/core/why.test.ts": {
- "class": "SAFE",
- "reason": "emptiness (empty commits/abstention sets) paired with positive assertions in the same test file: exact hashes, entity ids, typed abstention codes, prefix-join both directions",
- "triaged": "2026-08-16 (UX-3 memesh why)"
- },
"C1 tests/dashboard/ProjectTab.select.test.ts": {
"class": "SAFE",
"reason": "the empty-result assertions ARE the contract under test (archived pointer readmits nothing), and every scenario pairs them with positive name-list assertions",
"triaged": "2026-08-16 (UX-3 readmission rule)"
},
- "C5 src/transports/cli/cli.ts:753": {
+ "C5 src/transports/cli/cli.ts:773": {
"class": "SAFE-BY-CONSTRUCTION",
"reason": "`(a.args ?? []).join` in the planned-actions RENDER only; execution re-reads args itself.",
"triaged": "2026-08-16 (P1 memesh setup; re-applied after merge took main baseline); re-keyed 2026-08-16 (release-prep: settingsHaveMemeshHooks added above in install-hooks / wireUserHooks helper above in cli; byte-identical vs HEAD); re-keyed 2026-08-16 (UX-3: memesh why command added above; byte-identical — verified); re-keyed 2026-08-16 (R2: recall retrieval metadata lines added above; same statement — verified)"
},
- "C5 src/transports/cli/cli.ts:781": {
+ "C5 src/transports/cli/cli.ts:801": {
"class": "SAFE-GUARDED",
"reason": "`action.args ?? []` when spawning: run-kind actions are constructed in core/setup.ts with args always set (pinned by unit tests asserting exact arrays); a hypothetical argless command would run as-is with its exit code reported honestly.",
"triaged": "2026-08-16 (P1 memesh setup; re-applied after merge took main baseline); re-keyed 2026-08-16 (release-prep: settingsHaveMemeshHooks added above in install-hooks / wireUserHooks helper above in cli; byte-identical vs HEAD); re-keyed 2026-08-16 (UX-3: memesh why command added above; byte-identical — verified); re-keyed 2026-08-16 (R2: recall retrieval metadata lines added above; same statement — verified)"
},
- "C5 src/transports/cli/cli.ts:782": {
+ "C5 src/transports/cli/cli.ts:802": {
"class": "SAFE-BY-CONSTRUCTION",
"reason": "`(action.args ?? []).join` in the success-echo of the command that just ran on the line above (694, same triage); the exit-code branch is the verdict.",
"triaged": "2026-08-16 (P1 memesh setup; re-applied after merge took main baseline); re-keyed 2026-08-16 (release-prep: settingsHaveMemeshHooks added above in install-hooks / wireUserHooks helper above in cli; byte-identical vs HEAD); re-keyed 2026-08-16 (UX-3: memesh why command added above; byte-identical — verified); re-keyed 2026-08-16 (R2: recall retrieval metadata lines added above; same statement — verified)"
},
- "C5 src/transports/http/server.ts:575": {
- "class": "SAFE-BY-CONSTRUCTION",
- "reason": "`data.commits ?? []` — same optional-commits contract as core/why.ts:238; the route never runs git, so an absent list IS the input, not a swallowed failure.",
- "triaged": "2026-08-16 (UX-3 memesh why); re-keyed 2026-08-16 (R2: recall retrieval metadata lines added above; same statement — verified)"
- },
- "C5 src/core/kg-backfill.ts:731": {
+ "C5 src/core/kg-backfill.ts:740": {
"class": "SAFE-ACCUMULATOR",
"reason": "session tag index; empty means the entity carries no session tag, which is a real state — it falls through to the temporal project match",
"triaged": "2026-08-17 (UX-4 Rule 5)"
},
- "C5 src/core/kg-backfill.ts:745": {
+ "C5 src/core/kg-backfill.ts:754": {
"class": "SAFE-ACCUMULATOR",
"reason": "project tag index; empty means the work item is untagged and simply joins no project bucket",
"triaged": "2026-08-17 (UX-4 Rule 5)"
},
- "C5 src/core/kg-backfill.ts:762": {
+ "C5 src/core/kg-backfill.ts:804": {
"class": "SAFE-ACCUMULATOR",
"reason": "session bucket lookup; empty means no work item shares that session, and the fallback branch below handles it",
"triaged": "2026-08-17 (UX-4 Rule 5)"
},
- "C5 src/core/kg-backfill.ts:783": {
+ "C5 src/core/kg-backfill.ts:834": {
"class": "SAFE-ACCUMULATOR",
"reason": "project tag index for the evidence row; empty means no project fallback is possible and no edge is proposed",
"triaged": "2026-08-17 (UX-4 Rule 5)"
},
- "C5 src/core/kg-backfill.ts:784": {
+ "C5 src/core/kg-backfill.ts:835": {
"class": "SAFE-ACCUMULATOR",
"reason": "project bucket lookup; empty means the project has no work items, so `.find` yields undefined and no edge is proposed",
"triaged": "2026-08-17 (UX-4 Rule 5)"
+ },
+ "C5 src/cli/view-live.ts:668": {
+ "class": "SAFE-GUARDED",
+ "reason": "the `|| []` fires only when the request SUCCEEDED but the field is absent; a failed request is caught by the explicit `if (!data.success)` guard on the line above and rendered as an error. Surfaced for the first time when the C5 `||` regex was fixed (its trailing \\b could never match after `]` or `}`), not by a code change.",
+ "triaged": "2026-08-17 (surfaced by the C5 || regex fix)"
+ },
+ "C5 src/cli/view-live.ts:689": {
+ "class": "SAFE-GUARDED",
+ "reason": "the `|| []` fires only when the request SUCCEEDED but the field is absent; a failed request is caught by the explicit `if (!data.success)` guard on the line above and rendered as an error. Surfaced for the first time when the C5 `||` regex was fixed (its trailing \\b could never match after `]` or `}`), not by a code change.",
+ "triaged": "2026-08-17 (surfaced by the C5 || regex fix)"
+ },
+ "C5 src/cli/view-live.ts:720": {
+ "class": "SAFE-GUARDED",
+ "reason": "the `|| []` fires only when the request SUCCEEDED but the field is absent; a failed request is caught by the explicit `if (!data.success)` guard on the line above and rendered as an error. Surfaced for the first time when the C5 `||` regex was fixed (its trailing \\b could never match after `]` or `}`), not by a code change.",
+ "triaged": "2026-08-17 (surfaced by the C5 || regex fix)"
+ },
+ "C5 src/cli/view-live.ts:1139": {
+ "class": "SAFE-GUARDED",
+ "reason": "the `|| []` fires only when the request SUCCEEDED but the field is absent; a failed request is caught by the explicit `if (!data.success)` guard on the line above and rendered as an error. Surfaced for the first time when the C5 `||` regex was fixed (its trailing \\b could never match after `]` or `}`), not by a code change.",
+ "triaged": "2026-08-17 (surfaced by the C5 || regex fix)"
+ },
+ "C5 src/cli/view-live.ts:1262": {
+ "class": "SAFE-GUARDED",
+ "reason": "the `|| []` fires only when the request SUCCEEDED but the field is absent; a failed request is caught by the explicit `if (!data.success)` guard on the line above and rendered as an error. Surfaced for the first time when the C5 `||` regex was fixed (its trailing \\b could never match after `]` or `}`), not by a code change.",
+ "triaged": "2026-08-17 (surfaced by the C5 || regex fix)"
+ },
+ "C5 src/cli/view-live.ts:1553": {
+ "class": "SAFE-GUARDED",
+ "reason": "the `|| {}` is the else-arm of an explicit success+presence conjunction on the same line; config absence renders defaults, and the failure path returned earlier. Newly visible after the C5 `||` regex fix.",
+ "triaged": "2026-08-17 (surfaced by the C5 || regex fix)"
+ },
+ "C5 src/cli/view-live.ts:1554": {
+ "class": "SAFE-GUARDED",
+ "reason": "the `|| {}` is the else-arm of an explicit success+presence conjunction on the same line; capability absence renders defaults, and the failure path returned earlier. Newly visible after the C5 `||` regex fix.",
+ "triaged": "2026-08-17 (surfaced by the C5 || regex fix)"
+ },
+ "C5 src/core/serializer.ts:68": {
+ "class": "SAFE-ACCUMULATOR",
+ "reason": "`relations` is optional on Entity; empty means the entity has none, which is what the export should record. Newly visible after the C5 `||` regex fix.",
+ "triaged": "2026-08-17 (surfaced by the C5 || regex fix)"
+ },
+ "C5 src/core/serializer.ts:254": {
+ "class": "SAFE-ACCUMULATOR",
+ "reason": "`relations` is optional on the imported bundle entry; empty means none to re-create. Newly visible after the C5 `||` regex fix.",
+ "triaged": "2026-08-17 (surfaced by the C5 || regex fix)"
}
}
}
\ No newline at end of file
diff --git a/scripts/audit/measure-work-topology-baseline.mjs b/scripts/audit/measure-work-topology-baseline.mjs
index 5d14724f..2bb91675 100644
--- a/scripts/audit/measure-work-topology-baseline.mjs
+++ b/scripts/audit/measure-work-topology-baseline.mjs
@@ -8,7 +8,7 @@
// decisions, and re-run after LLM titling ships:
//
// 1. Work-layer share — what fraction of active entities are work-layer
-// types (decision/lesson/milestone/pattern/goal/plan/task-state)?
+// types? The whitelist is imported, never restated (see below).
// Decides whether the empty-state/evidence-fallback design is an edge
// case or the norm.
// 2. Recall-hit false-negative rate — of the entities session-start
@@ -30,18 +30,22 @@ import { DatabaseSync } from 'node:sqlite';
import fs from 'node:fs';
import path from 'node:path';
import os from 'node:os';
+// The work-layer whitelist, IMPORTED — src/core/work-topology.ts says of
+// itself that "that whitelist must exist exactly once", and this file used to
+// hold the second copy. It had already drifted: it omitted `mistake` and
+// `technical_pattern`, so every share this script printed measured a narrower
+// layer than the product uses, and was therefore wrong in the direction
+// nobody checks (too low). Imported from the committed hook leaf rather than
+// dist/ — the same copy the hooks import, byte-locked to core by
+// scripts/generate-hook-core.mjs — so this script still needs no build.
+//
+// Numbers printed before this change are not comparable with numbers printed
+// after it, for exactly the reason the drift mattered.
+import { WORK_LAYER_TYPES } from '../hooks/_generated/work-topology.js';
const home = process.env.HOME || os.homedir();
const dbPath = process.env.MEMESH_DB_PATH || path.join(home, '.memesh', 'knowledge-graph.db');
-// The work-layer whitelist. Deliberately the PLANNED set (goal/plan/
-// task-state included even though today they count zero) so re-runs after
-// those types ship measure against the same line.
-const WORK_LAYER_TYPES = new Set([
- 'decision', 'lesson_learned', 'lesson', 'milestone', 'pattern',
- 'goal', 'plan', 'task-state',
-]);
-
const EXPLORE_TOOLS = new Set(['Read', 'Grep', 'Glob', 'LS', 'WebFetch', 'WebSearch', 'ToolSearch']);
function fail(msg) {
diff --git a/scripts/audit/verification-audit.mjs b/scripts/audit/verification-audit.mjs
index 51591f36..827ddffc 100644
--- a/scripts/audit/verification-audit.mjs
+++ b/scripts/audit/verification-audit.mjs
@@ -63,7 +63,12 @@ function record(cls, denominator, hits, note) {
const emptiness = (src.match(/toEqual\(\[\]\)|toHaveLength\(0\)|\.toBe\(0\)/g) ?? []).length;
if (!emptiness) continue;
withEmptiness++;
- const pins = (src.match(/GreaterThan|toBeGreaterThanOrEqual|\.has\(|length\)\.toBe\([1-9]/g) ?? []).length;
+ // `toHaveLength(N)` is a size pin and the pattern could not see it — it
+ // recognised only the `length).toBe(N)` spelling, so a file that pinned
+ // its sizes the other way read as having none. Same blind-spot class as
+ // the C5 `\b` that hid every `|| []`: the detector was reporting on a
+ // subset of the language and calling it the whole.
+ const pins = (src.match(/GreaterThan|toBeGreaterThanOrEqual|\.has\(|length\)\.toBe\([1-9]|toHaveLength\([1-9]/g) ?? []).length;
if (pins === 0) hits.push(f);
}
record('C1', withEmptiness, hits,
@@ -127,7 +132,14 @@ function record(cls, denominator, hits, note) {
read(f).split('\n').forEach((line, i) => {
const t = line.trim();
if (t.startsWith('//') || t.startsWith('*')) return;
- if (/\?\?\s*(true|\[\]|\{\})/.test(line) || /\|\|\s*(\[\]|\{\}|true)\b/.test(line)) {
+ // The `||` half used to end in `\b`, which cannot match after `]` or
+// `}` — a word boundary needs a word character on one side. So `|| true`
+ // was detected and `|| []` / `|| {}` never were, for this detector's
+ // whole existence. Measured when the hole was found: 10 occurrences in
+ // src/ + dashboard/src/ that C5 had never once reported, including a
+ // recall path that turned an unreadable payload into "no results".
+ // The `??` half was always correct because it has no trailing `\b`.
+ if (/\?\?\s*(true|\[\]|\{\})/.test(line) || /\|\|\s*(\[\]|\{\}|true\b)/.test(line)) {
hits.push(`${f}:${i + 1}`);
}
});
diff --git a/src/core/analytics.ts b/src/core/analytics.ts
index ff073540..6a98456c 100644
--- a/src/core/analytics.ts
+++ b/src/core/analytics.ts
@@ -8,7 +8,7 @@
// directly without re-implementing the SQL.
import type { MemeshDatabase } from '../storage/sqlite.js';
-import type { CountRow, PragmaColumnRow } from './types.js';
+import type { CountRow } from './types.js';
export interface HealthFactor {
score: number;
@@ -71,6 +71,36 @@ export interface AnalyticsResult {
lessons: HealthFactor;
};
loopMetric: LoopMetric;
+ /**
+ * How many lessons are marked `severity:critical` — the one counter the
+ * retired Lessons tab carried that a reader acts on ("mistakes already
+ * paid for, waiting to be repeated"). Its three siblings were dropped.
+ *
+ * All three numbers travel together because `critical` alone is a
+ * half-truth: on the graph this was written against, 29 lessons were
+ * active, 12 carried any severity tag and 5 were critical — so "5" is 5
+ * of 12 classified, not 5 of 29, and a tile that prints 5 without the
+ * denominator overstates what was measured. `severityTagged === 0` is the
+ * not-measured case and must render as such, never as a zero.
+ */
+ criticalLessons: {
+ critical: number;
+ severityTagged: number;
+ total: number;
+ };
+ /**
+ * How often an agent that was given memories actually cited one, from the
+ * two counters the Stop hook keeps (`citation_sessions_cited` /
+ * `citation_sessions_total`).
+ *
+ * `null` when the counters do not exist, and that is a THIRD state, not a
+ * zero: it means no session has yet run the citation-era accounting, which
+ * is true of every install until the release carrying it lands. A tile
+ * that renders `null` as 0% would report perfect non-compliance from an
+ * instrument that has never been switched on — the exact failure
+ * `retrieval.degraded` exists to prevent on the recall side.
+ */
+ citationCompliance: { cited: number; total: number } | null;
timeline: Array<{ date: string; created: number; recalled: number }>;
ageMatrix: AgeMatrixEntry[];
knowledgeRadar: KnowledgeRadarEntry[];
@@ -88,7 +118,7 @@ export function computeAnalytics(db: MemeshDatabase): AnalyticsResult {
).get() as CountRow).c;
const recentlyAccessed = (db.prepare(
- `SELECT COUNT(*) as c FROM entities WHERE status = 'active' AND last_accessed_at >= datetime('now', '-30 days')`,
+ `SELECT COUNT(*) as c FROM entities WHERE status = 'active' AND datetime(last_accessed_at) >= datetime('now', '-30 days')`,
).get() as CountRow).c;
const activityRatio = totalActive > 0 ? recentlyAccessed / totalActive : 0;
@@ -146,7 +176,7 @@ export function computeAnalytics(db: MemeshDatabase): AnalyticsResult {
const recalledTimeline = db.prepare(`
SELECT DATE(last_accessed_at) as day, COUNT(*) as recalled
FROM entities
- WHERE last_accessed_at >= datetime('now', '-30 days')
+ WHERE datetime(last_accessed_at) >= datetime('now', '-30 days')
GROUP BY DATE(last_accessed_at)
ORDER BY day
`).all() as Array<{ day: string; recalled: number }>;
@@ -227,7 +257,7 @@ export function computeAnalytics(db: MemeshDatabase): AnalyticsResult {
`SELECT COUNT(*) as c FROM entities
WHERE type IN (${knowledgeTypePlaceholders})
AND status = 'active'
- AND last_accessed_at >= datetime('now', '-7 days')`,
+ AND datetime(last_accessed_at) >= datetime('now', '-7 days')`,
).get(...KNOWLEDGE_TYPE_LIST) as CountRow).c;
const loopTrendRows = db.prepare(`
@@ -235,41 +265,90 @@ export function computeAnalytics(db: MemeshDatabase): AnalyticsResult {
FROM entities
WHERE type IN (${knowledgeTypePlaceholders})
AND status = 'active'
- AND last_accessed_at >= datetime('now', '-30 days')
+ AND datetime(last_accessed_at) >= datetime('now', '-30 days')
GROUP BY DATE(last_accessed_at)
ORDER BY day
`).all(...KNOWLEDGE_TYPE_LIST) as Array<{ day: string; count: number }>;
- // Detect whether instrumentation is producing data that overlaps the
- // 30-day window we're displaying. If recall_hits has only stale data
- // outside the window, the badge would lie — say "precise mode" while
- // the rendered numbers (reusedThisWeek + trend) still come from the
- // last_accessed_at approximation. Gate the mode flip on a hit whose
- // entity was last accessed within the same 30-day window we render.
- let loopComputedFrom: LoopMetric['computedFrom'] = 'last_accessed_at_approximation';
- try {
- const recallColCheck = db.prepare("PRAGMA table_info(entities)").all() as PragmaColumnRow[];
- if (recallColCheck.some((c) => c.name === 'recall_hits')) {
- const hitsInWindow = (db.prepare(
- `SELECT COUNT(*) as c FROM entities
- WHERE type IN (${knowledgeTypePlaceholders})
- AND recall_hits > 0
- AND last_accessed_at >= datetime('now', '-30 days')`,
- ).get(...KNOWLEDGE_TYPE_LIST) as CountRow).c;
- if (hitsInWindow > 0) loopComputedFrom = 'recall_hits';
- }
- } catch { /* recall_hits column missing — stay in approximation mode */ }
-
+ // `computedFrom` describes THESE numbers, and both queries above read
+ // `last_accessed_at`. Nothing here reads `recall_hits`, so the only honest
+ // value is the approximation — and the dashboard uses this field to decide
+ // whether to SHOW the "this is an approximation" caveat, which means a wrong
+ // value here does not mislabel a number, it hides the sentence that explains
+ // it.
+ //
+ // This used to flip to 'recall_hits' whenever the column existed and any
+ // knowledge entity had a hit inside the 30-day window. The comment on that
+ // gate named the exact failure it was meant to prevent — "the badge would
+ // lie: say precise mode while the rendered numbers still come from the
+ // approximation" — and the gate did not prevent it, because a hit in the
+ // window is not evidence that these queries read hits. Measured on a real
+ // graph 2026-08-17: 21 knowledge entities carried in-window `recall_hits`,
+ // every one written by the literal-content matching that R1 retired at 0%
+ // measured signal, and `recall_accounting_mode` (the stamp that separates
+ // the two accounting eras) was absent. The caveat was hidden on that graph.
+ //
+ // Earning 'recall_hits' takes a schema change, not a probe: `recall_hits` is
+ // a running total per entity, so a per-DAY reuse series cannot be derived
+ // from it. Set this field where that query lands.
const loopMetric: LoopMetric = {
reusedThisWeek,
trend: loopTrendRows.map((r) => ({ date: r.day, count: r.count })),
- computedFrom: loopComputedFrom,
+ computedFrom: 'last_accessed_at_approximation',
+ };
+
+ // --- Critical lessons ---
+ //
+ // The lesson types are the ones `severity:*` is written onto (see
+ // `learn`), and severity lives in tags, not a column. `severityTagged` is
+ // the denominator that keeps `critical` honest: a lesson nobody classified
+ // is not a lesson that is not critical.
+ const LESSON_TYPES = ['lesson_learned', 'lesson', 'mistake'];
+ const lessonPlaceholders = LESSON_TYPES.map(() => '?').join(',');
+ const lessonTotal = (db.prepare(
+ `SELECT COUNT(*) as c FROM entities
+ WHERE status = 'active' AND type IN (${lessonPlaceholders})`,
+ ).get(...LESSON_TYPES) as CountRow).c;
+ const severityTagged = (db.prepare(
+ `SELECT COUNT(DISTINCT e.id) as c FROM entities e
+ JOIN tags t ON t.entity_id = e.id
+ WHERE e.status = 'active' AND e.type IN (${lessonPlaceholders})
+ AND t.tag LIKE 'severity:%'`,
+ ).get(...LESSON_TYPES) as CountRow).c;
+ const criticalCount = (db.prepare(
+ `SELECT COUNT(DISTINCT e.id) as c FROM entities e
+ JOIN tags t ON t.entity_id = e.id
+ WHERE e.status = 'active' AND e.type IN (${lessonPlaceholders})
+ AND t.tag = 'severity:critical'`,
+ ).get(...LESSON_TYPES) as CountRow).c;
+ const criticalLessons = { critical: criticalCount, severityTagged, total: lessonTotal };
+
+ // --- Citation compliance (R1) ---
+ //
+ // Read as a pair, and only when the TOTAL exists: `cited` without `total`
+ // is a numerator with no denominator. A missing total means the hook that
+ // keeps these has not run its citation branch on this install yet, which
+ // is "not measured", not "0%".
+ const readCounter = (key: string): number | null => {
+ try {
+ const row = db.prepare('SELECT value FROM memesh_metadata WHERE key = ?').get(key) as
+ | { value: string } | undefined;
+ if (!row) return null;
+ const n = parseInt(row.value, 10);
+ return Number.isInteger(n) && n >= 0 ? n : null;
+ } catch { return null; }
};
+ const citationTotal = readCounter('citation_sessions_total');
+ const citationCompliance = citationTotal === null || citationTotal === 0
+ ? null
+ : { cited: readCounter('citation_sessions_cited') ?? 0, total: citationTotal };
return {
healthScore,
healthFactors,
loopMetric,
+ criticalLessons,
+ citationCompliance,
timeline,
ageMatrix,
knowledgeRadar,
diff --git a/src/core/demo.ts b/src/core/demo.ts
index 30178e60..a0aa7417 100644
--- a/src/core/demo.ts
+++ b/src/core/demo.ts
@@ -67,7 +67,12 @@ const DEMO_DATA: DemoEntity[] = [
// Phase 5 — Recent (~2 days ago)
{ daysAgo: 3, name: 'lesson-bug_fix-canvas-blank', type: 'lesson_learned', observations: ['Error: timeline chart blank after tab switch', 'Root cause: canvas.style.width persisted across display:none -> block', 'Fix: clear inline width before measuring, use ResizeObserver', 'Prevention: never assume CSS width:100% wins over inline style on canvas'], tags: ['error-pattern:other', 'severity:minor'] },
- { daysAgo: 2, name: 'plan-v3-dashboard', type: 'plan', observations: ['Plan: dashboard-v3', 'Steps: Browse redesign, Lessons categorisation, Project Roadmap, Memory Loop KPI', 'Status: complete; see Lessons tab for execution lessons'] },
+ // This entry used to end "see Lessons tab for execution lessons". There is
+ // no Lessons tab — the dashboard is Home / Memories / Project / Graph /
+ // Settings — and the demo library is the FIRST thing a new user reads, so
+ // the one line that told them where to go next sent them looking for a tab
+ // that does not exist. Names a place that is really there instead.
+ { daysAgo: 2, name: 'plan-v3-dashboard', type: 'plan', observations: ['Plan: dashboard-v3', 'Steps: Browse redesign, Lessons categorisation, Project Roadmap, Memory Loop KPI', 'Status: complete; the execution lessons are the lesson_learned memories in Memories'] },
{ daysAgo: 2, name: 'bugfix-confidence-pump', type: 'bug_fix', observations: ['Symptom: Quality KPI inflated by repeated remember() calls', 'Cause: confidence bumped on every re-assertion regardless of source', 'Fix: gate on (new observation) AND (metadata.trust !== untrusted)'] },
{ daysAgo: 1, name: 'release-v3.0', type: 'release', observations: ['Released as Dashboard v3 milestone', 'Highlights: Lessons-first landing, Project Roadmap, Memory Loop KPI, SVG icon set, Signal Mode toggle'] },
{ daysAgo: 1, name: 'pattern-svg-iconography', type: 'pattern', observations: ['Stroke-based 16x16 SVG glyphs, currentColor', '12 entity-cluster shapes; aria-label per glyph'] },
diff --git a/src/core/graph.ts b/src/core/graph.ts
index d8c93355..c27bcad4 100644
--- a/src/core/graph.ts
+++ b/src/core/graph.ts
@@ -28,7 +28,7 @@ export function computeGraph(db: MemeshDatabase): GraphResult {
// All signal entities (non-noise) — typically <500, always include all
const signalRows = db.prepare(
- `SELECT id FROM entities WHERE type NOT IN (${placeholders}) ORDER BY COALESCE(last_accessed_at, created_at) DESC`,
+ `SELECT id FROM entities WHERE type NOT IN (${placeholders}) ORDER BY COALESCE(datetime(last_accessed_at), created_at) DESC`,
).all(...noiseList) as { id: number }[];
// Recent noise entities — fill up to cap of 200 for those who want to see them
@@ -74,9 +74,18 @@ export function computeWorkGraph(db: MemeshDatabase): WorkGraphResult {
const workTypes = Array.from(WORK_LAYER_TYPES);
const placeholders = workTypes.map(() => '?').join(',');
+ // `datetime(last_accessed_at)`, not the bare column. The two timestamps in
+ // this COALESCE are stored in DIFFERENT formats: `last_accessed_at` is
+ // written as `new Date().toISOString()` (storage/conflicts.ts) and
+ // `created_at` is SQLite's own `CURRENT_TIMESTAMP`. A string ORDER BY over
+ // the mix compares 'T' (0x54) against ' ' (0x20) once the date prefixes are
+ // equal, so among entities touched on the SAME DAY every recalled one sorts
+ // above every never-recalled one regardless of the real times — the exact
+ // inversion this view exists to avoid. `datetime()` normalises the ISO form
+ // (Z included) to SQLite's format, making the comparison honest.
const rows = db.prepare(
`SELECT id FROM entities WHERE type IN (${placeholders}) AND status = 'active'
- ORDER BY COALESCE(last_accessed_at, created_at) DESC`,
+ ORDER BY COALESCE(datetime(last_accessed_at), created_at) DESC`,
).all(...workTypes) as { id: number }[];
const entities = kg.getEntitiesByIds(rows.map((r) => r.id));
@@ -86,6 +95,7 @@ export function computeWorkGraph(db: MemeshDatabase): WorkGraphResult {
JOIN entities e_from ON r.from_entity_id = e_from.id
JOIN entities e_to ON r.to_entity_id = e_to.id
WHERE e_from.type IN (${placeholders}) AND e_to.type IN (${placeholders})
+ AND e_from.status = 'active' AND e_to.status = 'active'
`).all(...workTypes, ...workTypes) as GraphRelation[];
const countRows = db.prepare(`
@@ -132,7 +142,7 @@ export function computeNodeEvidence(db: MemeshDatabase, nodeName: string): NodeE
JOIN entities e ON r.from_entity_id = e.id
WHERE r.relation_type = 'evidences' AND r.to_entity_id = ?
AND e.status = 'active'
- ORDER BY e.created_at DESC
+ ORDER BY e.created_at DESC, e.id DESC
LIMIT ${EVIDENCE_CAP + 1}
`).all(node.id) as { id: number }[];
diff --git a/src/core/kg-backfill.ts b/src/core/kg-backfill.ts
index 2cc1dbb3..a6ccba68 100644
--- a/src/core/kg-backfill.ts
+++ b/src/core/kg-backfill.ts
@@ -30,6 +30,7 @@
import type { MemeshDatabase } from '../storage/sqlite.js';
import { getDatabase } from '../db.js';
import { WORK_LAYER_TYPES, EVIDENCE_LAYER_TYPES } from './work-topology.js';
+import { parseSqliteUtcMs } from './time-utils.js';
const SYSTEM_TAG_PREFIXES = [
// `cluster:` is the dreamer's digest label. It replaced `week:` when
@@ -696,13 +697,21 @@ export function proposeBackfillCandidates(opts: BackfillOptions = {}, db?: Memes
`).all(...evidenceTypeList, ...projectArgs) as Array;
if (evidenceRows.length > 0) {
+ // `projectClause` belongs on BOTH sides. It was on the evidence query
+ // only, so `--project alpha` scoped which commits were considered and
+ // then let them link into any project's work: measured on a seeded
+ // graph where two projects shared one session tag, a run scoped to
+ // alpha wrote 3 edges of which 2 pointed at bravo's decision and goal.
+ // In UX-4 that renders as bravo's decision carrying alpha's commit in
+ // its evidence badge and drill-down.
const workTypeList = [...WORK_LAYER_TYPES];
const workRows = conn.prepare(`
SELECT e.id, e.name, e.type, e.metadata, e.created_at
FROM entities e
WHERE e.type IN (${workTypeList.map(() => '?').join(',')})
${statusFilter}
- `).all(...workTypeList) as Array;
+ ${projectClause}
+ `).all(...workTypeList, ...projectArgs) as Array;
// Session/project keys come from tags (the hook norm) plus
// metadata.session_id (what post-commit stamps on commit entities —
@@ -750,11 +759,44 @@ export function proposeBackfillCandidates(opts: BackfillOptions = {}, db?: Memes
}
// Newest first, so the temporal fallback's "most recent node created
// before the evidence" is the first match in the scan.
- const ts = (v: string): number => new Date(v).getTime();
+ //
+ // parseSqliteUtcMs, not `new Date(v)`: SQLite writes
+ // `YYYY-MM-DD HH:MM:SS` in UTC, which is not ISO-8601, and the engines
+ // that accept it read it as LOCAL time. A uniform offset would cancel
+ // out in a comparison of two values from the same column — but it is
+ // not uniform. Measured under TZ=America/New_York on the spring-forward
+ // day, '2026-03-08 02:30:00' parses to 07:30Z and '2026-03-08 03:00:00'
+ // to 07:00Z, so the ORDER INVERTS across that hour and the fallback
+ // anchors on the wrong work item. The same column can also hold a real
+ // ISO value (src/core/demo.ts writes one), which `new Date` reads as
+ // true UTC while reading its CURRENT_TIMESTAMP siblings as local — an
+ // offset-sized skew between two rows of one table.
+ //
+ // time-utils.ts is the single owner of this parse and says so; this
+ // was a fourth copy of it, and the wrong one. `null` means the value
+ // cannot be trusted, and an untrusted timestamp must not become a
+ // number that sorts — it sorts LAST and is never chosen as an anchor.
+ const ts = (v: string): number | null => parseSqliteUtcMs(v);
for (const list of workByProject.values()) {
- list.sort((a, b) => ts(b.created_at) - ts(a.created_at));
+ list.sort((a, b) => (ts(b.created_at) ?? -Infinity) - (ts(a.created_at) ?? -Infinity));
}
+ // A shared session id is not a shared project. One Claude Code session
+ // routinely touches two repos, and both get the same `session:` tag —
+ // so the session match alone would draw a commit in repo A as evidence
+ // for a decision in repo B, which is a false statement about what
+ // supports that decision. Require agreement only when BOTH sides
+ // actually carry project tags: an untagged entity has no project to
+ // disagree with, and dropping those links would lose the ordinary case
+ // where hooks tagged one side and a manual `remember` did not.
+ const sameProjectOrUntagged = (a: number, b: number): boolean => {
+ const pa = projectTagsById.get(a);
+ const pb = projectTagsById.get(b);
+ if (!pa?.size || !pb?.size) return true;
+ for (const p of pa) if (pb.has(p)) return true;
+ return false;
+ };
+
for (const ev of evidenceRows) {
let added = 0;
const proposedWork = new Set();
@@ -762,6 +804,7 @@ export function proposeBackfillCandidates(opts: BackfillOptions = {}, db?: Memes
for (const w of workBySession.get(key) ?? []) {
if (added >= maxPerSource) break;
if (w.id === ev.id || proposedWork.has(w.id)) continue;
+ if (!sameProjectOrUntagged(ev.id, w.id)) continue;
candidates.push({
fromEntityId: ev.id,
fromName: ev.name,
@@ -777,13 +820,23 @@ export function proposeBackfillCandidates(opts: BackfillOptions = {}, db?: Memes
if (added >= maxPerSource) break;
}
- if (added === 0) {
+ // `maxPerSource > 0` is not redundant with `added === 0`: a cap of 0
+ // leaves the session loop at added=0, which is exactly the condition
+ // that arms this fallback — so `--max-per-source 0` used to write one
+ // edge per evidence entity while every other rule correctly wrote
+ // none. The rule's worst case is N_evidence x maxPerSource again,
+ // not N_evidence x max(maxPerSource, 1).
+ if (added === 0 && maxPerSource > 0) {
const evTime = ts(ev.created_at);
- if (!Number.isNaN(evTime)) {
+ // null means the evidence row's own timestamp is untrustworthy;
+ // there is no honest "before" to compare against, so no fallback.
+ if (evTime !== null) {
for (const proj of projectTagsById.get(ev.id) ?? []) {
- const anchor = (workByProject.get(proj) ?? []).find(
- (w) => w.id !== ev.id && !Number.isNaN(ts(w.created_at)) && ts(w.created_at) <= evTime,
- );
+ const anchor = (workByProject.get(proj) ?? []).find((w) => {
+ if (w.id === ev.id) return false;
+ const wTime = ts(w.created_at);
+ return wTime !== null && wTime <= evTime;
+ });
if (anchor) {
candidates.push({
fromEntityId: ev.id,
diff --git a/src/core/serializer.ts b/src/core/serializer.ts
index 736e1d6d..bd6e6d85 100644
--- a/src/core/serializer.ts
+++ b/src/core/serializer.ts
@@ -5,6 +5,7 @@
import { getDatabase } from '../db.js';
import { KnowledgeGraph } from '../knowledge-graph.js';
+import { truncateTitle } from './title.js';
import { NAMESPACES } from './types.js';
import type { ExportInput, ExportResult, ImportInput, ImportResult } from './types.js';
@@ -54,6 +55,13 @@ export function exportMemories(args: ExportInput): ExportResult {
entities: entities.map((e) => ({
name: e.name,
type: e.type,
+ // The bundle carries `title` because without it the round trip is not a
+ // round trip: export → import silently dropped every human-readable
+ // title, and the import reported the entity as imported while it came
+ // back with nothing but its slug-shaped name in every surface that shows
+ // a title. Written explicitly as `null` when absent rather than omitted,
+ // so a reader can tell "no title" from "this bundle predates titles".
+ title: e.title ?? null,
namespace: e.namespace ?? 'personal',
observations: e.observations,
tags: e.tags,
@@ -167,6 +175,23 @@ export function importMemories(args: ImportInput): ImportResult {
}
try {
const existing = kg.getEntity(entity.name);
+ // The import never read a title, because the export never wrote one —
+ // the two halves of the same gap, and together they made every
+ // export→import a silent rename of each memory to its slug-shaped
+ // `name`. Read defensively, the way describeInvalidEntity reads the rest
+ // of the bundle: this is a FILE, possibly written by a memesh that had
+ // no titles at all, so the field is present-or-not rather than
+ // guaranteed. Absent, blank or non-string becomes `undefined`, which is
+ // createEntity's "leave whatever title is already there alone" — an
+ // older bundle's missing title must not wipe one off a memory the
+ // importer already had. `truncateTitle` because this is a generator-side
+ // writer with nobody to bounce bad input back to (schemas.ts REJECTS
+ // over-long titles; createEntity itself caps nothing), and one
+ // hand-edited 10,000-character title should not become a stored one.
+ const bundledTitle = (entity as Record).title;
+ const title = typeof bundledTitle === 'string' && bundledTitle.trim().length > 0
+ ? truncateTitle(bundledTitle)
+ : undefined;
// The caller's `--namespace` override applies to everything, existing
// entities included — that is what "force all imported entities into
// this namespace" means. The namespace stored IN the bundle only places
@@ -192,6 +217,7 @@ export function importMemories(args: ImportInput): ImportResult {
// updateEntityMetadata AFTER createEntity returned, so the
// gate read undefined → defaulted to trusted → bumped.
kg.createEntity(entity.name, entity.type, {
+ title,
observations: entity.observations,
tags: entity.tags,
namespace,
@@ -213,6 +239,7 @@ export function importMemories(args: ImportInput): ImportResult {
}
kg.createEntity(entity.name, entity.type, {
+ title,
observations: entity.observations,
tags: entity.tags,
metadata: importedMetadata,
diff --git a/src/core/types.ts b/src/core/types.ts
index 079eb971..dbd71835 100644
--- a/src/core/types.ts
+++ b/src/core/types.ts
@@ -255,6 +255,9 @@ export interface ExportResult {
entities: Array<{
name: string;
type: string;
+ /** The human-readable headline. `null` for an untitled entity — absent
+ * in bundles written before titles existed, which import must tolerate. */
+ title?: string | null;
namespace: string;
observations: string[];
tags: string[];
diff --git a/src/core/why.ts b/src/core/why.ts
index 97df6e33..4be54f36 100644
--- a/src/core/why.ts
+++ b/src/core/why.ts
@@ -30,8 +30,14 @@ export type WhyAbstention =
| 'git_unavailable'
| 'not_a_git_repo'
| 'file_not_tracked'
+ /** `git log` did not answer — see the catch in resolveFileCommits. An empty
+ * commit list under this code means "unknown", never "none". */
+ | 'history_unreadable'
| 'line_out_of_range'
| 'line_uncommitted'
+ /** Nobody resolved any commit hashes for this query — the graph half ran
+ * alone. Distinct from a caller who resolved and found none. */
+ | 'no_commits_supplied'
| 'no_commit_entity'
| 'no_session_link';
@@ -55,8 +61,9 @@ export interface WhyCommitAttribution {
/** The commit entity the hooks captured, or null (see abstentions). */
entity: (WhyEntityRef & { observations: string[] }) | null;
/** Session the commit was made in — only known for commits captured after
- * post-commit started recording `metadata.session_id`. */
- session: { session_id: string; entities: WhyEntityRef[] } | null;
+ * post-commit started recording `metadata.session_id`. `truncated` is true
+ * when the session held more entities than SESSION_ENTITY_CAP returned. */
+ session: { session_id: string; entities: WhyEntityRef[]; truncated: boolean } | null;
abstentions: WhyAbstention[];
}
@@ -72,7 +79,8 @@ export interface WhyResult {
basis: 'file-tag';
entities: WhyEntityRef[];
};
- /** Abstentions about the query as a whole (git-side failures). */
+ /** Abstentions about the query as a whole: git-side failures the CLI passes
+ * through, plus the caller-side gap when no commits were supplied at all. */
abstentions: WhyAbstention[];
}
@@ -142,9 +150,18 @@ export function resolveFileCommits(
'log', '-n', String(limit), '--follow', '--format=%H%x09%ad%x09%s', '--date=short', '--', file,
]);
} catch {
- // Tracked file, git present — a log failure means no history is
- // answerable (e.g. an empty repo). Report the honest empty set.
- return { commits: [], abstention: null };
+ // `git log` did not answer, and an empty list with no abstention is not
+ // the answer "nothing touched this file" — it is no answer at all. This
+ // branch used to return `{ commits: [], abstention: null }`, reasoning
+ // about the empty-repository case only, so EVERY other way the command
+ // fails printed "No commits touch this file." for a file with a full
+ // history: output past execFileSync's 1 MB default maxBuffer (ENOBUFS),
+ // the 5-second GIT_TIMEOUT_MS that `--follow` over long history is quite
+ // capable of spending, and any other non-zero exit. The unborn-branch
+ // case lands here too and the same sentence is still true of it — the
+ // question went unanswered, which this module must never dress up as an
+ // answer of none.
+ return { commits: [], abstention: 'history_unreadable' };
}
const commits: WhyGitCommit[] = [];
for (const line of out.split('\n')) {
@@ -185,13 +202,36 @@ function findCommitEntity(
db: MemeshDatabase,
hash: string,
): (WhyEntityRef & { metadata: Record | null }) | null {
+ // The prefix join is a substring comparison, NOT a LIKE match, and the
+ // difference is the whole security of this lookup.
+ //
+ // The query used to read `? LIKE substr(name, 8) || '%'`, which makes the
+ // STORED NAME the pattern. `%` and `_` are wildcards there, and the name is
+ // writable through the ordinary public API: `remember` accepts
+ // `commit-%%%%…` (nameField only strips control characters), and so does an
+ // import bundle. One such entity answers for EVERY hash, and
+ // `ORDER BY length(name) DESC` makes it win deterministically — real
+ // abbreviations are 7-40 characters and a name may be 255. Measured: a
+ // seeded `commit-_______` was returned for an unrelated 40-char hash, and
+ // the caller's abstention flipped from `no_commit_entity` to a confidently
+ // asserted memory. The parameters were always bound correctly; binding does
+ // not constrain LIKE semantics over attacker-writable data.
+ //
+ // `substr(?, 1, length(substr(name,8))) = substr(name,8)` compares text,
+ // so a stored `%` matches only a literal `%` — which no real hash contains.
+ // The hex guard is belt-and-braces: it also keeps a junk name out of the
+ // candidate set entirely.
const rows = db.prepare(
`SELECT id, name, type, title, created_at, metadata FROM entities
WHERE type = 'commit' AND name LIKE 'commit-%'
AND length(substr(name, 8)) >= 7
- AND (? LIKE substr(name, 8) || '%' OR substr(name, 8) LIKE ? || '%')
+ AND substr(name, 8) GLOB '[0-9a-fA-F]*'
+ AND (
+ substr(?, 1, length(substr(name, 8))) = substr(name, 8)
+ OR substr(substr(name, 8), 1, length(?)) = ?
+ )
ORDER BY length(name) DESC`,
- ).all(hash, hash) as unknown as Array;
+ ).all(hash, hash, hash) as unknown as Array;
if (rows.length === 0) return null;
// Longest stored abbrev wins if several match (same commit captured twice
// at different abbreviation lengths).
@@ -206,13 +246,32 @@ function observationsOf(db: MemeshDatabase, entityId: number): string[] {
return rows.map((r) => r.content);
}
-function sessionEntities(db: MemeshDatabase, sessionId: string): WhyEntityRef[] {
- return db.prepare(
+/** Per-session page size. The same number and the same honesty flag as
+ * `computeNodeEvidence`'s EVIDENCE_CAP in core/graph.ts, because it is the
+ * same question: how much of one node's neighbourhood to serialise. */
+const SESSION_ENTITY_CAP = 200;
+
+function sessionEntities(
+ db: MemeshDatabase,
+ sessionId: string,
+): { entities: WhyEntityRef[]; truncated: boolean } {
+ // This query had no LIMIT and runs ONCE PER COMMIT, and `WhySchema` accepts
+ // 50 commits — so one request could serialise 50 × (however large a session
+ // grew) rows, with no ceiling on the response and no field telling the
+ // caller it had been handed everything there was. Fetch cap+1 so
+ // `truncated` reports OBSERVED overflow rather than the guess "we returned
+ // exactly the cap, so there is probably more".
+ const rows = db.prepare(
`SELECT DISTINCT e.id, e.name, e.type, e.title, e.created_at
FROM entities e JOIN tags t ON t.entity_id = e.id
WHERE t.tag = ? AND e.status != 'archived'
- ORDER BY e.created_at`,
+ ORDER BY e.created_at
+ LIMIT ${SESSION_ENTITY_CAP + 1}`,
).all(`session:${sessionId}`) as unknown as WhyEntityRef[];
+ return {
+ entities: rows.slice(0, SESSION_ENTITY_CAP),
+ truncated: rows.length > SESSION_ENTITY_CAP,
+ };
}
/**
@@ -234,6 +293,21 @@ export function explainCommits(
const limit = input.limit ?? 10;
const project = input.project ?? null;
+ // An ABSENT `commits` and an empty `commits: []` are different facts, and
+ // the answer used to be identical for both. `commits` is optional on
+ // `WhySchema`, so a caller who simply forgot the field got
+ // `{commits: [], abstentions: []}` — byte-identical to the honest "this
+ // file has no remembered commits". Absent means nobody resolved any hashes
+ // (the server never runs git, by design, so an HTTP caller without a
+ // working tree is in this state permanently); empty means the caller DID
+ // resolve and found none. Only the first is a gap, so only the first
+ // abstains. The CLI always passes an array and is unaffected.
+ // Named for the whole query, not shortened to `abstentions`: the per-commit
+ // list inside the loop below carries that name, and one of the two silently
+ // shadowing the other is how a push lands in the wrong list.
+ const queryAbstentions: WhyAbstention[] = [...(input.abstentions ?? [])];
+ if (input.commits === undefined) queryAbstentions.push('no_commits_supplied');
+
const commits: WhyCommitAttribution[] = [];
for (const commit of (input.commits ?? []).slice(0, limit)) {
const abstentions: WhyAbstention[] = [];
@@ -252,7 +326,7 @@ export function explainCommits(
};
const sessionId = found.metadata?.session_id;
if (typeof sessionId === 'string' && sessionId.length > 0) {
- session = { session_id: sessionId, entities: sessionEntities(db, sessionId) };
+ session = { session_id: sessionId, ...sessionEntities(db, sessionId) };
} else {
// Captured before post-commit recorded session ids (or the payload
// had none). The link does not exist — say so, do not guess one.
@@ -292,6 +366,6 @@ export function explainCommits(
project,
commits,
file_memories: { basis: 'file-tag', entities: fileMemories },
- abstentions: input.abstentions ?? [],
+ abstentions: queryAbstentions,
};
}
diff --git a/src/transports/cli/cli.ts b/src/transports/cli/cli.ts
index 948d8619..90a53e6b 100644
--- a/src/transports/cli/cli.ts
+++ b/src/transports/cli/cli.ts
@@ -623,6 +623,8 @@ const WHY_ABSTENTION_TEXT: Record = {
git_unavailable: 'git is not installed or not on PATH — commit attribution unavailable.',
not_a_git_repo: 'Not inside a git repository — commit attribution unavailable.',
file_not_tracked: 'File is not tracked by git — commit attribution unavailable.',
+ history_unreadable: "git could not read this file's history (too much output, too slow, or the repository has no commits yet) — nothing is listed because the question went unanswered, not because no commit touched the file.",
+ no_commits_supplied: 'No commit hashes were supplied — only the file-tag half of this answer ran.',
line_out_of_range: 'That line does not exist in the tracked file.',
line_uncommitted: 'That line is not committed yet — nothing to attribute.',
no_commit_entity: 'memesh has no memory of this commit (it predates capture, or was made without hooks / on another machine).',
@@ -639,8 +641,22 @@ program
await withDatabase(async () => {
const { resolveFileCommits, explainCommits } = await import('../../core/why.js');
const cwd = process.cwd();
- const limit = parseInt(opts.limit);
- const line = opts.line !== undefined ? parseInt(opts.line) : undefined;
+ // Both flags reach code that cannot defend itself against NaN, and each
+ // failed differently and badly. `--limit abc` put NaN in a SQL LIMIT
+ // and crashed with a raw `ERR_SQLITE_ERROR` stack trace carrying the
+ // absolute install path. `--line abc` was worse than a crash: NaN
+ // reached `git blame -L NaN,NaN`, the failure was caught, and the user
+ // was told "That line does not exist in the tracked file." — an
+ // affirmatively false statement from the one command whose whole
+ // contract is that it abstains rather than guesses.
+ const limit = parseInt(opts.limit, 10);
+ const line = opts.line !== undefined ? parseInt(opts.line, 10) : undefined;
+ for (const [flag, value] of [['--limit', limit], ['--line', line]] as const) {
+ if (value !== undefined && (!Number.isInteger(value) || value < 1)) {
+ console.error(`Error: ${flag} needs a whole number of 1 or more.`);
+ process.exit(1);
+ }
+ }
const resolved = resolveFileCommits(cwd, file, { line, limit });
const result = explainCommits(getDatabase(), {
file,
@@ -670,6 +686,10 @@ program
if (c.session) {
console.log(` session: ${c.session.session_id}`);
for (const s of c.session.entities) console.log(` - ${s.name} (${s.type})`);
+ // A capped page that says nothing reads as the whole session.
+ if (c.session.truncated) {
+ console.log(` … first ${c.session.entities.length} of a larger session — more exist`);
+ }
}
for (const code of c.abstentions) {
console.log(` ! ${WHY_ABSTENTION_TEXT[code] ?? code}`);
diff --git a/src/transports/http/server.ts b/src/transports/http/server.ts
index 261f0a12..3a9a0dbf 100644
--- a/src/transports/http/server.ts
+++ b/src/transports/http/server.ts
@@ -572,7 +572,13 @@ app.post('/v1/why', (req, res) => handlePost(WhyBody, req, res, async (data) =>
const { explainCommits } = await import('../../core/why.js');
return explainCommits(getDatabase(), {
file: data.file,
- commits: (data.commits ?? []).map((hash) => ({ hash })),
+ // `(data.commits ?? [])` filled a missing field in, and that erased the
+ // one distinction this route cannot recover: `commits` is OPTIONAL, so a
+ // caller who forgot it got `{commits: [], abstentions: []}` — success
+ // shaped, and indistinguishable from "this file has no remembered
+ // commits". Pass the absence through undefined and core answers
+ // `no_commits_supplied`. The route still runs no git, ever.
+ commits: data.commits?.map((hash) => ({ hash })),
project: data.project ?? null,
limit: data.limit,
});
diff --git a/src/transports/schemas.ts b/src/transports/schemas.ts
index 06c390e7..6c65146e 100644
--- a/src/transports/schemas.ts
+++ b/src/transports/schemas.ts
@@ -99,6 +99,12 @@ export const ExportResultSchema = z.object({
entities: z.array(z.object({
name: nameField,
type: z.string().min(1).max(100),
+ // Without this the MCP and HTTP import paths STRIP the title Zod does
+ // not know about, so a bundle exported with human-readable headlines
+ // imported without them — losing exactly the field UX-1 exists to
+ // provide, silently, on two of the three surfaces. `.nullable()`
+ // because the export writes `title: null` for an untitled entity.
+ title: z.string().max(TITLE_MAX_LENGTH).nullable().optional(),
namespace: z.string(),
observations: z.array(z.string().max(10000)),
tags: z.array(z.string().max(255)),
diff --git a/tests/core/export-import.test.ts b/tests/core/export-import.test.ts
index 52609fa3..6159525b 100644
--- a/tests/core/export-import.test.ts
+++ b/tests/core/export-import.test.ts
@@ -18,6 +18,25 @@ describe('exportMemories', () => {
expect(result.exported_at).toBeTruthy();
});
+ it('round-trips `title` — export omitted it and import never read it', async () => {
+ // Export is the backup path, and it silently dropped the one field UX-1
+ // exists to provide: a bundle taken after titles shipped restored a
+ // library of machine dedup keys. Both halves are pinned, because fixing
+ // only the export side would still lose the title on the way back in.
+ remember({ name: 'titled', type: 'decision', title: 'Why we chose JWT', observations: ['ctx'] });
+ const bundle = exportMemories({});
+ expect(bundle.entities.find((e) => e.name === 'titled')?.title).toBe('Why we chose JWT');
+
+ // Re-import under a new name, which proves the IMPORT half reads it.
+ const copy = {
+ ...bundle,
+ entities: bundle.entities.map((e) => ({ ...e, name: `${e.name}-copy` })),
+ };
+ importMemories({ data: copy, merge_strategy: 'skip' });
+ const restored = (await recall({ query: 'JWT' })).find((e) => e.name === 'titled-copy');
+ expect(restored?.title, 'the title did not survive the round trip').toBe('Why we chose JWT');
+ });
+
it('includes version and exported_at fields', () => {
remember({ name: 'a', type: 'note' });
const result = exportMemories({});
diff --git a/tests/core/graph-work-layer.test.ts b/tests/core/graph-work-layer.test.ts
index c91b2a0b..4c02e54c 100644
--- a/tests/core/graph-work-layer.test.ts
+++ b/tests/core/graph-work-layer.test.ts
@@ -135,10 +135,64 @@ describe('graph work layer', () => {
expect(result!.truncated).toBe(false);
});
+ it('orders by real time even though the two timestamp columns are stored differently', () => {
+ // `last_accessed_at` is written as `new Date().toISOString()` and
+ // `created_at` is SQLite's CURRENT_TIMESTAMP, so a bare string ORDER BY
+ // over COALESCE(last_accessed_at, created_at) compares 'T' (0x54) with
+ // ' ' (0x20) once the date prefixes match — and among entities touched on
+ // the same day every recalled one then sorts above every never-recalled
+ // one, whatever the real times were.
+ const recalledEarlier = insertEntity('recalled-9am', 'decision');
+ db.prepare('UPDATE entities SET created_at = ?, last_accessed_at = ? WHERE id = ?')
+ .run('2026-08-01 00:00:00', '2026-08-17T09:00:00.000Z', recalledEarlier);
+ const freshLater = insertEntity('fresh-11pm', 'decision');
+ db.prepare('UPDATE entities SET created_at = ?, last_accessed_at = NULL WHERE id = ?')
+ .run('2026-08-17 23:00:00', freshLater);
+
+ const g = computeWorkGraph(db);
+ expect(
+ g.entities.map((e) => e.name),
+ 'the 14-hours-older recalled entity was ranked as the newest',
+ ).toEqual(['fresh-11pm', 'recalled-9am']);
+ });
+
+ it('drops a relation whose other endpoint is archived, not just the archived entity', () => {
+ // The entity list filters on status; the relation list did not, so the
+ // payload carried an edge to a node that is not in it. The dashboard
+ // hides the edge but derives "orphan" from the RAW relation list, so the
+ // live node rendered as connected with no visible edge.
+ const live = insertEntity('live-d', 'decision');
+ const dead = insertEntity('dead-d', 'decision', 'archived');
+ insertRelation(live, dead, 'related-to');
+
+ const g = computeWorkGraph(db);
+ expect(g.entities.map((e) => e.name)).toEqual(['live-d']);
+ expect(g.relations, 'a dangling edge to an archived node was shipped').toEqual([]);
+ });
+
it('drill-down returns null for a missing node (404, not an empty list)', () => {
expect(computeNodeEvidence(db, 'no-such-node')).toBeNull();
});
+ it('drill-down reports truncation at the boundary, and does not claim it one row early', () => {
+ // Every existing assertion took the false branch, so an off-by-one in the
+ // cap+1 overflow probe would have shipped green — and `truncated` is the
+ // honesty half of this endpoint: a full page that says nothing is
+ // indistinguishable from a complete answer.
+ const node = insertEntity('busy-decision', 'decision');
+ for (let i = 0; i < 200; i++) {
+ insertRelation(insertEntity(`ev-${i}`, 'commit'), node, 'evidences');
+ }
+ const exact = computeNodeEvidence(db, 'busy-decision');
+ expect(exact!.entities).toHaveLength(200);
+ expect(exact!.truncated, 'exactly at the cap is not truncated').toBe(false);
+
+ insertRelation(insertEntity('ev-200', 'commit'), node, 'evidences');
+ const over = computeNodeEvidence(db, 'busy-decision');
+ expect(over!.entities).toHaveLength(200);
+ expect(over!.truncated, 'one past the cap must say so').toBe(true);
+ });
+
it('drill-down of a node with no evidence returns empty lists, not null', () => {
insertEntity('lonely', 'decision');
const result = computeNodeEvidence(db, 'lonely');
diff --git a/tests/core/kg-backfill.test.ts b/tests/core/kg-backfill.test.ts
index f6ef58e3..23df9499 100644
--- a/tests/core/kg-backfill.test.ts
+++ b/tests/core/kg-backfill.test.ts
@@ -847,6 +847,92 @@ describe('kg-backfill integration', () => {
expect(run2.candidatesProposed).toBe(0);
});
+ it('R5: a timestamp parseSqliteUtcMs cannot trust is never chosen as an anchor', () => {
+ // The column can hold a value SQLite did not write — src/core/demo.ts
+ // puts a real ISO string in it. `new Date()` accepts that happily and
+ // reads it as true UTC while reading its CURRENT_TIMESTAMP siblings as
+ // LOCAL, so the two are an offset apart and the wrong one wins. The
+ // repo's own parser anchors both ends and returns null instead, and an
+ // untrusted timestamp must not become a number that sorts.
+ const trusted = insertEntity('trusted-plan', 'plan');
+ insertTag(trusted, 'project:demo');
+ setCreatedAt(trusted, '2026-08-01 09:00:00');
+ const untrusted = insertEntity('iso-plan', 'plan');
+ insertTag(untrusted, 'project:demo');
+ setCreatedAt(untrusted, '2026-08-02T09:00:00.000Z'); // newer, but unparseable
+
+ const ev = insertEntity('commit-tz', 'commit');
+ insertTag(ev, 'project:demo');
+ setCreatedAt(ev, '2026-08-03 09:00:00');
+
+ backfillRelations({});
+ const toTrusted = db.prepare(
+ "SELECT 1 FROM relations WHERE from_entity_id=? AND to_entity_id=? AND relation_type='evidences'"
+ ).get(ev, trusted);
+ const toUntrusted = db.prepare(
+ "SELECT 1 FROM relations WHERE from_entity_id=? AND to_entity_id=? AND relation_type='evidences'"
+ ).get(ev, untrusted);
+ expect(toTrusted, 'the parseable anchor must win').toBeTruthy();
+ expect(toUntrusted, 'an unparseable timestamp was treated as a real date').toBeFalsy();
+ });
+
+ it('R5: a shared session does not link evidence across projects', () => {
+ // One Claude Code session routinely touches two repos, and both get the
+ // same session: tag. Linking alpha's commit to bravo's decision is a
+ // false statement about what supports that decision — and in UX-4 it
+ // renders as bravo's evidence badge counting alpha's work.
+ const ev = insertEntity('commit-alpha', 'commit');
+ insertTag(ev, 'session:shared-1');
+ insertTag(ev, 'project:alpha');
+ const alphaWork = insertEntity('alpha-decision', 'decision');
+ insertTag(alphaWork, 'session:shared-1');
+ insertTag(alphaWork, 'project:alpha');
+ const bravoWork = insertEntity('bravo-decision', 'decision');
+ insertTag(bravoWork, 'session:shared-1');
+ insertTag(bravoWork, 'project:bravo');
+
+ const result = backfillRelations({});
+ expect(result.byRule.evidenceLinks).toBe(1);
+ expect(db.prepare(
+ "SELECT 1 FROM relations WHERE from_entity_id=? AND to_entity_id=? AND relation_type='evidences'"
+ ).get(ev, alphaWork)).toBeTruthy();
+ expect(db.prepare(
+ "SELECT 1 FROM relations WHERE from_entity_id=? AND to_entity_id=? AND relation_type='evidences'"
+ ).get(ev, bravoWork), 'a cross-project edge was drawn from a shared session').toBeFalsy();
+ });
+
+ it('R5: --project scopes the work side too, not just the evidence side', () => {
+ const ev = insertEntity('commit-scoped', 'commit');
+ insertTag(ev, 'session:shared-2');
+ insertTag(ev, 'project:alpha');
+ const bravoWork = insertEntity('bravo-goal', 'goal');
+ insertTag(bravoWork, 'session:shared-2');
+ insertTag(bravoWork, 'project:bravo');
+
+ const result = backfillRelations({ project: 'alpha' });
+ expect(result.byRule.evidenceLinks).toBe(0);
+ expect(db.prepare(
+ "SELECT COUNT(*) AS c FROM relations WHERE relation_type='evidences'"
+ ).get() as { c: number }).toEqual({ c: 0 });
+ });
+
+ it('R5: --max-per-source 0 writes no evidence edges, fallback included', () => {
+ // A cap of 0 leaves the session loop at added=0, which is precisely the
+ // condition that arms the project fallback — so the fallback used to
+ // write one edge per evidence entity while every other rule wrote none.
+ const work = insertEntity('capped-plan', 'plan');
+ insertTag(work, 'project:demo');
+ setCreatedAt(work, '2026-08-01 09:00:00');
+ const ev = insertEntity('commit-capped', 'commit');
+ insertTag(ev, 'project:demo');
+ setCreatedAt(ev, '2026-08-02 09:00:00');
+
+ const result = backfillRelations({ maxEdgesPerSource: 0 });
+ expect(result.byRule.evidenceLinks).toBe(0);
+ const rows = db.prepare("SELECT COUNT(*) AS c FROM relations WHERE relation_type='evidences'").get() as { c: number };
+ expect(rows.c).toBe(0);
+ });
+
it('R5: includeEvidenceLinks:false disables the rule', () => {
const ev = insertEntity('insight-off', 'session-insight');
insertTag(ev, 'session:sess-off');
diff --git a/tests/core/why.test.ts b/tests/core/why.test.ts
index e6e71215..4556e7a5 100644
--- a/tests/core/why.test.ts
+++ b/tests/core/why.test.ts
@@ -9,8 +9,10 @@
*
* Everything the chain cannot prove must surface as a TYPED abstention:
* no entity for a commit, no session on an entity, no git, no repo, no
- * tracked file, no such line. Guessing around any of these is the defect
- * class this module exists to prevent.
+ * tracked file, no such line, a history git could not read, and a caller
+ * who supplied no commits at all. Guessing around any of these is the
+ * defect class this module exists to prevent — and so is the quieter
+ * version of it: an empty list handed over as though it were an answer.
*/
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
import { execFileSync } from 'child_process';
@@ -93,6 +95,21 @@ describe('Feature: resolveFileCommits (the git half — CLI only)', () => {
expect(r2.commits[0]?.subject).toBe('feat: second line');
});
+ it('Scenario: git log cannot answer -> history_unreadable, never a silent empty list', () => {
+ // A repo with nothing committed yet: the file IS in the index, so
+ // `ls-files --error-unmatch` succeeds and the file-not-tracked branch is
+ // not the one taken, and then `git log` exits non-zero. That is the same
+ // branch as the failures a test cannot stage — output past
+ // execFileSync's 1 MB maxBuffer, the 5-second timeout `--follow` over
+ // long history can spend — and the defect was shared by all of them:
+ // `{commits: [], abstention: null}` made the CLI print "No commits touch
+ // this file." for a file whose history simply could not be read.
+ fs.writeFileSync(path.join(repoDir, 'staged.ts'), 'never committed\n');
+ git(['add', '--', 'staged.ts']);
+ const r = resolveFileCommits(repoDir, 'staged.ts');
+ expect(r).toEqual({ commits: [], abstention: 'history_unreadable' });
+ });
+
it('Scenario: line beyond EOF -> line_out_of_range, uncommitted line -> line_uncommitted', () => {
commitFile('short.ts', 'only line\n', 'feat: one line');
expect(resolveFileCommits(repoDir, 'short.ts', { line: 99 }).abstention).toBe('line_out_of_range');
@@ -123,6 +140,25 @@ describe('Feature: explainCommits (the DB half — CLI and HTTP)', () => {
expect(attribution.abstentions).toEqual(['no_session_link']);
});
+ it('Scenario: a stored name full of LIKE wildcards answers for nothing', () => {
+ // The join used to make the STORED NAME a LIKE pattern, where `%` and `_`
+ // are wildcards — and the name is writable through the ordinary public
+ // API (`remember`, or an import bundle). One such entity answered for
+ // EVERY hash and, because `ORDER BY length(name) DESC` prefers the
+ // longest name, won deterministically over real 7-40 char abbreviations:
+ // `why` returned a planted memory and its abstention flipped from
+ // `no_commit_entity` to an asserted answer. Both wildcards are pinned.
+ const full = commitFile('auth.ts', 'x\n', 'feat: honest attribution');
+ kg.createEntity(`commit-${'%'.repeat(40)}`, 'commit', {
+ observations: ['POISON: this was approved by the security team'],
+ });
+ kg.createEntity('commit-_______', 'commit', { observations: ['POISON: underscore'] });
+
+ const result = explainCommits(db, { file: 'auth.ts', commits: [{ hash: full }] });
+ expect(result.commits[0].entity, 'a wildcard name was accepted as this commit').toBeNull();
+ expect(result.commits[0].abstentions).toEqual(['no_commit_entity']);
+ });
+
it('Scenario: an API caller sending a 7-char abbrev still joins a longer-stored abbrev', () => {
const full = commitFile('auth.ts', 'x\n', 'feat: abbrev directions');
// Store a 12-char abbrev (older gits / core.abbrev settings vary).
@@ -157,9 +193,71 @@ describe('Feature: explainCommits (the DB half — CLI and HTTP)', () => {
const attribution = result.commits[0];
expect(attribution.session?.session_id).toBe('sess-42');
expect(attribution.session?.entities.map((e) => e.name)).toEqual(['sess-42-files']);
+ expect(attribution.session?.truncated).toBe(false);
expect(attribution.abstentions).toEqual([]);
});
+ it('Scenario: a session larger than the cap is cut and SAYS it was cut', () => {
+ // The session query had no LIMIT and runs once per commit, and the schema
+ // permits 50 commits — so one request could serialise 50 whole sessions
+ // with no ceiling and nothing in the response admitting a ceiling. 201
+ // members: 200 come back, and `truncated` reports the overflow that was
+ // actually observed rather than inferring it from a full page.
+ const full = commitFile('auth.ts', 'x\n', 'feat: a very long session');
+ const abbrev = git(['rev-parse', '--short', 'HEAD']).trim();
+ kg.createEntity(`commit-${abbrev}`, 'commit', {
+ observations: ['feat: a very long session'],
+ metadata: { session_id: 'sess-big' },
+ });
+ for (let i = 0; i < 201; i++) {
+ kg.createEntity(`sess-big-note-${i}`, 'note', {
+ observations: [`step ${i}`],
+ tags: ['session:sess-big'],
+ });
+ }
+
+ // Watch the SQL that actually runs. Slicing 200 out of an UNBOUNDED result
+ // set returns the same 200 rows and the same flag, so an output-only
+ // assertion cannot tell the fix from the defect: the ceiling has to be in
+ // the query, or SQLite still materialises the entire session — once per
+ // commit, up to 50 of them. The real statement is still executed; this
+ // only records what was handed to prepare().
+ const preparedSql: string[] = [];
+ const realPrepare = db.prepare.bind(db);
+ (db as { prepare: typeof db.prepare }).prepare = ((sql: string) => {
+ preparedSql.push(sql);
+ return realPrepare(sql);
+ }) as typeof db.prepare;
+ let result: ReturnType;
+ try {
+ result = explainCommits(db, { file: 'auth.ts', commits: [{ hash: full }] });
+ } finally {
+ (db as { prepare: typeof db.prepare }).prepare = realPrepare;
+ }
+
+ const sessionQuery = preparedSql.find((s) => /WHERE t\.tag = \?/.test(s));
+ expect(sessionQuery, 'the session query never ran — this test is watching nothing').toBeDefined();
+ expect(sessionQuery, 'the session query is unbounded again').toMatch(/LIMIT \d+/);
+
+ const session = result.commits[0].session;
+ expect(session?.entities).toHaveLength(200);
+ expect(session?.truncated).toBe(true);
+ });
+
+ it('Scenario: "no commits supplied" is a different answer from "no commits found"', () => {
+ // `POST /v1/why` used to fill a missing `commits` field with `[]`, so a
+ // caller who forgot it got the same success-shaped, zero-abstention
+ // answer as a caller who resolved commits and found none. Absent is a
+ // gap in the question; empty is an answer.
+ const notAsked = explainCommits(db, { file: 'auth.ts' });
+ expect(notAsked.abstentions).toEqual(['no_commits_supplied']);
+ expect(notAsked.commits).toEqual([]);
+
+ const askedAndNoneFound = explainCommits(db, { file: 'auth.ts', commits: [] });
+ expect(askedAndNoneFound.abstentions).toEqual([]);
+ expect(askedAndNoneFound.commits).toEqual([]);
+ });
+
it('Scenario: file memories come by basename tag, labelled as such, commits and archived excluded', () => {
kg.createEntity('auth-decision', 'decision', {
observations: ['Use OAuth PKCE'],
@@ -195,7 +293,10 @@ describe('Feature: explainCommits (the DB half — CLI and HTTP)', () => {
});
it('Scenario: git-side abstentions ride through to the result', () => {
- const result = explainCommits(db, { file: 'x.ts', abstentions: ['not_a_git_repo'] });
+ // `commits: []` is what the CLI passes when git abstained — it asked and
+ // got nothing, which is not the same as never asking, so no
+ // `no_commits_supplied` joins the git-side code here.
+ const result = explainCommits(db, { file: 'x.ts', commits: [], abstentions: ['not_a_git_repo'] });
expect(result.abstentions).toEqual(['not_a_git_repo']);
expect(result.commits).toEqual([]);
});
diff --git a/tests/dashboard/MetricsRow.test.tsx b/tests/dashboard/MetricsRow.test.tsx
new file mode 100644
index 00000000..1ce72f3d
--- /dev/null
+++ b/tests/dashboard/MetricsRow.test.tsx
@@ -0,0 +1,126 @@
+// @vitest-environment happy-dom
+//
+// Home's metrics row, and the one rule it exists to keep: an instrument that
+// has not run says so, in words. A tile that prints 0 from an absence claims
+// a measurement nobody made — the same defect `retrieval.degraded` removed
+// from recall, on the first screen a user reads.
+//
+// `buildTiles` is tested directly, not through the component, because the
+// distinction under test is a VALUE distinction (null vs a number) and a
+// component-level assertion cannot tell "rendered the not-measured tile"
+// from "rendered a zero that happens to read the same".
+import { describe, it, expect, vi, afterEach } from 'vitest';
+import { render, waitFor } from '@testing-library/preact';
+import { MetricsRow, buildTiles, isMetricsRenderable } from '../../dashboard/src/components/MetricsRow';
+import { t } from '../../dashboard/src/lib/i18n';
+import type { AnalyticsData } from '../../dashboard/src/lib/api';
+
+afterEach(() => { vi.restoreAllMocks(); });
+
+const factor = { score: 1, weight: 30, detail: '' };
+
+function analytics(over: Partial = {}): AnalyticsData {
+ return {
+ healthScore: 72,
+ healthFactors: { activity: factor, quality: factor, freshness: factor, lessons: factor },
+ loopMetric: { reusedThisWeek: 3, trend: [], computedFrom: 'last_accessed_at_approximation' },
+ criticalLessons: { critical: 5, severityTagged: 12, total: 29 },
+ citationCompliance: null,
+ timeline: [],
+ ageMatrix: [],
+ knowledgeRadar: [],
+ ...over,
+ };
+}
+
+function tile(data: AnalyticsData, key: string) {
+ const found = buildTiles(data, 'en').find((x) => x.key === key);
+ if (!found) throw new Error(`no ${key} tile`);
+ return found;
+}
+
+describe('MetricsRow — not measured is never zero', () => {
+ it('citation compliance with no counters has a null value, not 0%', () => {
+ const t0 = tile(analytics({ citationCompliance: null }), 'citation');
+ expect(t0.value, 'an instrument that never ran reported a measurement').toBeNull();
+ expect(t0.note).toBe(t('metrics.citationNotMeasured'));
+ });
+
+ it('citation compliance measured at zero is a different answer from not measured', () => {
+ const t0 = tile(analytics({ citationCompliance: { cited: 0, total: 7 } }), 'citation');
+ expect(t0.value, 'a real 0% must render as a number, not as "not measured"').toBe('0%');
+ expect(t0.note).toContain('7');
+ });
+
+ it('critical lessons carry the denominator that keeps the count honest', () => {
+ // 5 of 12 classified, out of 29 lessons — printing "5" alone rounds the
+ // 17 nobody has classified up into evidence that they are not critical.
+ const t0 = tile(analytics(), 'critical');
+ expect(t0.value).toBe('5');
+ expect(t0.note).toContain('12');
+ expect(t0.note).toContain('29');
+ });
+
+ it('lessons that exist but were never classified read as not measured', () => {
+ const t0 = tile(analytics({ criticalLessons: { critical: 0, severityTagged: 0, total: 17 } }), 'critical');
+ expect(t0.value, '"none classified" was reported as "zero critical"').toBeNull();
+ expect(t0.note).toContain('17');
+ });
+
+ it('an empty library says there are no lessons, not that none are critical', () => {
+ const t0 = tile(analytics({ criticalLessons: { critical: 0, severityTagged: 0, total: 0 } }), 'critical');
+ expect(t0.value).toBeNull();
+ expect(t0.note).toBe(t('metrics.criticalNoLessons'));
+ });
+
+ it('the reuse tile keeps its approximation caveat', () => {
+ // The numbers come from last_accessed_at, and the note is the only thing
+ // saying so on this screen.
+ expect(tile(analytics(), 'loop').note).toBe(t('metrics.reusedNote'));
+ });
+});
+
+describe('MetricsRow — a server without these groups is skew, not zeroes', () => {
+ it('rejects a payload missing the groups it reads, rather than throwing mid-render', () => {
+ // A server one release behind omits these entirely, and reading
+ // `.severityTagged` off undefined throws during render — a white screen,
+ // because this app ships no error boundary.
+ expect(isMetricsRenderable(analytics())).toBe(true);
+ const { criticalLessons, ...withoutLessons } = analytics();
+ expect(criticalLessons).toBeDefined();
+ expect(isMetricsRenderable(withoutLessons)).toBe(false);
+ expect(isMetricsRenderable({})).toBe(false);
+ expect(isMetricsRenderable(null)).toBe(false);
+ // null citationCompliance is its NOT-MEASURED state, not a bad shape.
+ expect(isMetricsRenderable(analytics({ citationCompliance: null }))).toBe(true);
+ });
+});
+
+describe('MetricsRow — a failed fetch is not four zeroes', () => {
+ it('renders four tiles when the payload is good', async () => {
+ // The positive half of the test below. Without it, "zero tiles on
+ // failure" is satisfied by a component that renders nothing ever.
+ vi.spyOn(globalThis, 'fetch').mockImplementation(() => Promise.resolve(
+ new Response(JSON.stringify({ success: true, data: analytics() }), {
+ status: 200, headers: { 'content-type': 'application/json' },
+ }),
+ ) as ReturnType);
+
+ const { container } = render( );
+ await waitFor(() => {
+ expect(container.querySelectorAll('.stat-val')).toHaveLength(4);
+ });
+ expect(container.querySelector('[role="alert"]')).toBeNull();
+ });
+
+ it('renders the classified failure instead of a row of measurements', async () => {
+ vi.spyOn(console, 'warn').mockImplementation(() => {});
+ vi.spyOn(globalThis, 'fetch').mockImplementation(() => Promise.reject(new TypeError('Failed to fetch')));
+
+ const { container } = render( );
+ await waitFor(() => {
+ expect(container.querySelector('[role="alert"]'), 'a dead analytics call rendered as data').not.toBeNull();
+ });
+ expect(container.querySelectorAll('.stat-val')).toHaveLength(0);
+ });
+});
diff --git a/tests/dashboard/component-contracts.test.tsx b/tests/dashboard/component-contracts.test.tsx
index b1a4cdfd..e719dc37 100644
--- a/tests/dashboard/component-contracts.test.tsx
+++ b/tests/dashboard/component-contracts.test.tsx
@@ -438,6 +438,7 @@ const INTENTIONALLY_EXCLUDED: Record = {
AuthPrompt: 'tests/dashboard/AuthPrompt.test.tsx — rendered only from a 401 path, takes no API-backed props',
CaptureDensityBand: 'tests/dashboard/CaptureDensityBand.test.tsx covers its degenerate inputs directly',
EvidencePanel: 'tests/dashboard/EvidencePanel.test.tsx covers its four states (loading / empty / truncated / failed) directly',
+ MetricsRow: 'tests/dashboard/MetricsRow.test.tsx tests buildTiles directly — the distinction under test is null-vs-number, which a rendered tile cannot express',
LessonCards: 'helper renderers (severity badge, expanded bodies) with no top-level surface — exercised through MemoriesTab rows',
MemoryLoopCard: 'tests/dashboard/MemoryLoopCard.test.tsx covers its degenerate inputs directly',
MemoryRow: 'tests/dashboard/MemoryRow.test.tsx covers its degenerate inputs directly',
diff --git a/tests/dashboard/graph-two-layer.test.tsx b/tests/dashboard/graph-two-layer.test.tsx
index 8ae2001a..b963c558 100644
--- a/tests/dashboard/graph-two-layer.test.tsx
+++ b/tests/dashboard/graph-two-layer.test.tsx
@@ -94,6 +94,35 @@ describe('GraphTab — two layers', () => {
expect(container.querySelector('canvas')).toBeNull();
});
+ it('names the focused node by its headline, never by the machine key', async () => {
+ // UX-1's chain is `title → best observation → type + date` and it
+ // "Deliberately NEVER falls back to `name`" — name is a dedup key like
+ // `pre-compact-`. The graph rendered that key in its focus
+ // banner, which is the one place the user reads a node's identity in
+ // text. Pinned because the fix was measured to be unprotected: reverting
+ // it to `{egoEntity.name}` left every existing assertion green.
+ const titled = entity(1, { name: 'pre-compact-9f3c2a1b', title: 'Why the graph opens on work' });
+ stubFetch(() => ({
+ entities: [titled, ...WORK_NODES.slice(1)],
+ relations: [],
+ evidenceCounts: {},
+ }));
+ const { container } = render( );
+ await waitFor(() => { expect(container.querySelector('canvas')).not.toBeNull(); });
+
+ // Enter focus mode the way the component does — clicking is a canvas
+ // gesture, so drive the state through the search box's auto-centre
+ // instead and assert on what the banner would render.
+ const search = container.querySelector(`input[placeholder="${t('graph.search')}"]`) as HTMLInputElement;
+ expect(search, 'the graph search box moved').not.toBeNull();
+ fireEvent.input(search, { target: { value: 'Why the graph' } });
+ await waitFor(() => {
+ expect(container.textContent, 'graph search cannot find a node by its headline')
+ .toContain('1 matches');
+ });
+ expect(container.textContent).not.toContain('pre-compact-9f3c2a1b');
+ });
+
it('asks for the work layer first and never fetches the full graph when it is big enough', async () => {
const seen = stubFetch(() => ({
entities: WORK_NODES,
diff --git a/tests/dashboard/review-fixes.test.tsx b/tests/dashboard/review-fixes.test.tsx
new file mode 100644
index 00000000..87f88e88
--- /dev/null
+++ b/tests/dashboard/review-fixes.test.tsx
@@ -0,0 +1,170 @@
+// @vitest-environment happy-dom
+//
+// The five scenarios the UX-1..UX-4 review found and nothing covered. Each
+// fix was measured to be UNPINNED when it landed — the suite stayed green
+// with the defect restored — so these exist to make the next regression
+// loud rather than to describe code that already works.
+//
+// The through-line is one rule: a failure and an absence are different
+// claims. "No results", "no projects", "2,000 active" and "oldest first"
+// are all statements about the user's data, and each of these tests fails
+// if the component makes one of them from a response it could not read, a
+// request that lost a race, or a comparison of two timestamp formats.
+import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
+import { render, fireEvent, waitFor } from '@testing-library/preact';
+import { MemoriesTab } from '../../dashboard/src/components/MemoriesTab';
+import { ProjectTab } from '../../dashboard/src/components/ProjectTab';
+import { t } from '../../dashboard/src/lib/i18n';
+import type { Entity } from '../../dashboard/src/lib/api';
+
+function entity(i: number, over: Partial = {}): Entity {
+ return {
+ id: i,
+ name: `entity-${i}`,
+ type: 'decision',
+ created_at: '2026-08-01 00:00:00',
+ observations: [`obs ${i}`],
+ tags: [],
+ ...over,
+ };
+}
+
+function jsonResponse(body: unknown, status = 200): Response {
+ return new Response(JSON.stringify(body), { status, headers: { 'content-type': 'application/json' } });
+}
+
+/** Answers each URL from `routes`, freshly — one Response cannot be read
+ * twice and these components legitimately fetch more than once. */
+function stubFetch(routes: (url: string) => unknown | Promise): void {
+ vi.spyOn(globalThis, 'fetch').mockImplementation((async (input: RequestInfo | URL) => {
+ const url = typeof input === 'string' ? input : String(input);
+ const body = await routes(url);
+ return jsonResponse({ success: true, data: body });
+ }) as typeof fetch);
+}
+
+beforeEach(() => {
+ localStorage.clear();
+ vi.spyOn(console, 'warn').mockImplementation(() => {});
+ vi.spyOn(console, 'info').mockImplementation(() => {});
+});
+afterEach(() => { vi.restoreAllMocks(); localStorage.clear(); });
+
+describe('MemoriesTab — a stale ranked search must not overwrite a newer view', () => {
+ it('a slow earlier query that resolves last is discarded', async () => {
+ // Type "auth" (slow), then clear the box. Clearing correctly returns the
+ // browse list — and then the stale "auth" response used to arrive and
+ // flip the view back to ranked mode with an empty search box.
+ // Explicitly typed: assigning only inside the Promise executor lets TS
+ // narrow this to `never` at the call site below.
+ let releaseSlow: undefined | (() => void);
+ let recallCalls = 0;
+ stubFetch(async (url) => {
+ if (url.includes('/v1/projects')) return [];
+ if (url.includes('/v1/recall')) {
+ recallCalls++;
+ await new Promise((r) => { releaseSlow = r; });
+ return { entities: [entity(99, { observations: ['STALE ranked hit'] })], retrieval: {} };
+ }
+ return [entity(1, { observations: ['browse row'] })];
+ });
+
+ const { container } = render( );
+ await waitFor(() => { expect(container.textContent).toContain('browse row'); });
+
+ const search = container.querySelector('input[type="search"]') as HTMLInputElement;
+ expect(search, 'the Memories search box moved').not.toBeNull();
+ fireEvent.input(search, { target: { value: 'auth' } });
+ // Enter reads `filter` from state, and the input's state update has not
+ // flushed yet at this point — pressing Enter immediately made
+ // runDeepSearch see an empty query and return without fetching, which
+ // would make this whole test vacuous.
+ await waitFor(() => { expect(search.value).toBe('auth'); });
+ fireEvent.keyDown(search, { key: 'Enter' });
+ await waitFor(() => {
+ expect(recallCalls, 'no ranked search was issued — the race is not being staged').toBe(1);
+ });
+
+ // Back to browsing before the answer lands.
+ fireEvent.input(search, { target: { value: '' } });
+ await waitFor(() => { expect(search.value).toBe(''); });
+
+ releaseSlow?.();
+ // Settle properly. `waitFor(browse row)` alone is satisfied on its first
+ // synchronous check — the row is already there — so it would assert
+ // BEFORE the stale response had a chance to write, and pass whether or
+ // not the guard exists. Give the promise chain and the rerender real
+ // turns of the event loop first.
+ for (let i = 0; i < 5; i++) await new Promise((r) => setTimeout(r, 0));
+
+ expect(
+ container.textContent,
+ 'a discarded search overwrote the browse list it had already left',
+ ).not.toContain('STALE ranked hit');
+ expect(container.textContent, 'the browse list should still be showing').toContain('browse row');
+ });
+});
+
+describe('MemoriesTab — a truncated list says so even when the total is unknown', () => {
+ it('health that never loads does not silence the truncation notice', async () => {
+ // Hitting the fetch limit IS the evidence of truncation. The total only
+ // decides which sentence to use; `(health?.entity_count ?? 0)` made a
+ // null health mean "nothing was cut" and a 12,000-memory library showed
+ // "2,000 active" with nothing saying the rest existed.
+ const many = Array.from({ length: 2000 }, (_, i) => entity(i + 1));
+ stubFetch((url) => (url.includes('/v1/projects') ? [] : many));
+
+ const { container } = render( );
+ await waitFor(() => { expect(container.textContent).toContain('obs 1'); });
+ expect(container.textContent).toContain(t('browse.truncatedUnknownTotal', { shown: '2,000' }).slice(0, 24));
+ });
+});
+
+describe('MemoriesTab — "newest first" compares instants, not two text formats', () => {
+ it('a fresher never-recalled memory outranks one recalled earlier the same day', async () => {
+ // `last_accessed_at` is ISO-8601, `created_at` is SQLite's space format,
+ // and a space sorts before a 'T' — so within one day every recalled
+ // memory used to precede a fresher never-recalled one.
+ const recalledEarlier = entity(1, {
+ name: 'recalled-9am', observations: ['recalled at 9am'],
+ created_at: '2026-08-01 00:00:00', last_accessed_at: '2026-08-17T09:00:00.000Z',
+ });
+ const freshLater = entity(2, {
+ name: 'fresh-11pm', observations: ['created at 11pm'],
+ created_at: '2026-08-17 23:00:00',
+ });
+ stubFetch((url) => (url.includes('/v1/projects') ? [] : [recalledEarlier, freshLater]));
+
+ const { container } = render( );
+ await waitFor(() => { expect(container.textContent).toContain('created at 11pm'); });
+
+ // Switch to the recency sort, then read the DOM order of the two rows.
+ const sort = container.querySelector('select') as HTMLSelectElement;
+ if (sort) fireEvent.change(sort, { target: { value: 'recent' } });
+ await waitFor(() => {
+ const text = container.textContent ?? '';
+ const fresh = text.indexOf('created at 11pm');
+ const older = text.indexOf('recalled at 9am');
+ expect(fresh, 'both rows must render').toBeGreaterThanOrEqual(0);
+ expect(older).toBeGreaterThanOrEqual(0);
+ expect(fresh, 'the 14-hours-older recalled row was ranked as the newest').toBeLessThan(older);
+ });
+ });
+});
+
+describe('ProjectTab — a failed project fetch is not an empty project list', () => {
+ it('says the request failed instead of claiming the user has no projects', async () => {
+ stubFetch((url) => {
+ if (url.includes('/v1/projects')) throw new TypeError('Failed to fetch');
+ return [entity(1, { tags: ['project:myapp'] })];
+ });
+
+ const { container } = render( );
+ await waitFor(() => {
+ expect(
+ container.textContent,
+ 'a dead /v1/projects rendered as "no project memories yet"',
+ ).not.toContain(t('project.empty'));
+ });
+ });
+});
diff --git a/tests/transports/analytics.test.ts b/tests/transports/analytics.test.ts
index 8488850c..f1d44400 100644
--- a/tests/transports/analytics.test.ts
+++ b/tests/transports/analytics.test.ts
@@ -23,6 +23,41 @@ afterEach(() => {
// ── Analytics computation ──────────────────────────────────────────────────
describe('/v1/analytics computation', () => {
+ // The one counter the retired Lessons tab carried that a reader acts on.
+ // All three numbers travel together because `critical` alone overstates
+ // what was measured: an unclassified lesson is not a non-critical one.
+ it('critical lessons report their denominators, so the count cannot overstate', () => {
+ remember({ name: 'crit-1', type: 'lesson_learned', observations: ['bad'], tags: ['severity:critical'] });
+ remember({ name: 'minor-1', type: 'lesson_learned', observations: ['meh'], tags: ['severity:minor'] });
+ remember({ name: 'unclassified', type: 'lesson_learned', observations: ['no severity tag'] });
+
+ const { criticalLessons } = computeAnalytics(db);
+ expect(criticalLessons).toEqual({ critical: 1, severityTagged: 2, total: 3 });
+ });
+
+ it('an unclassified library reports zero TAGGED, which the dashboard renders as not-measured', () => {
+ remember({ name: 'lesson-a', type: 'lesson_learned', observations: ['no severity'] });
+ const { criticalLessons } = computeAnalytics(db);
+ // The distinction the tile depends on: nothing was classified, which is
+ // not the same claim as "nothing is critical".
+ expect(criticalLessons.severityTagged).toBe(0);
+ expect(criticalLessons.total).toBe(1);
+ });
+
+ it('citation compliance is null until the counters exist — not 0%', () => {
+ // The instrument has never been switched on: reporting 0% would be a
+ // measurement claim about an agent that was never observed.
+ expect(computeAnalytics(db).citationCompliance).toBeNull();
+
+ db.prepare("INSERT OR REPLACE INTO memesh_metadata (key, value) VALUES ('citation_sessions_total', '4')").run();
+ db.prepare("INSERT OR REPLACE INTO memesh_metadata (key, value) VALUES ('citation_sessions_cited', '1')").run();
+ expect(computeAnalytics(db).citationCompliance).toEqual({ cited: 1, total: 4 });
+
+ // Measured and genuinely zero is a DIFFERENT answer from not measured.
+ db.prepare("UPDATE memesh_metadata SET value = '0' WHERE key = 'citation_sessions_cited'").run();
+ expect(computeAnalytics(db).citationCompliance).toEqual({ cited: 0, total: 4 });
+ });
+
it('health score is 0 for empty database', () => {
const total = (
db
@@ -33,6 +68,27 @@ describe('/v1/analytics computation', () => {
// With 0 entities, all ratios = 0, score = 0
});
+ // The loop metric's honesty label. `reusedThisWeek` and `trend` are both
+ // derived from `last_accessed_at`; the dashboard reads `computedFrom` to
+ // decide whether to SHOW the "this is an approximation" caveat, so claiming
+ // the precise mode does not mislabel a number — it hides the sentence that
+ // explains it. The old gate flipped on "the column exists and some entity
+ // has an in-window hit", which is not evidence that these queries read hits.
+ // Measured on a real graph: 21 in-window hits, all written by the retired
+ // literal-matching accounting, caveat hidden.
+ it('never claims the precise mode while the numbers come from last_accessed_at', () => {
+ remember({ name: 'reused-lesson', type: 'lesson_learned', observations: ['a lesson'] });
+ // Exactly the state that used to flip the badge: an in-window hit count
+ // from the retired accounting era (no `recall_accounting_mode` stamp).
+ db.prepare(
+ "UPDATE entities SET recall_hits = 5, last_accessed_at = datetime('now', '-1 day') WHERE name = ?",
+ ).run('reused-lesson');
+
+ const analytics = computeAnalytics(db);
+ expect(analytics.loopMetric.reusedThisWeek).toBeGreaterThan(0);
+ expect(analytics.loopMetric.computedFrom).toBe('last_accessed_at_approximation');
+ });
+
it('health score increases with high-confidence entities', () => {
remember({ name: 'test-entity', type: 'concept', observations: ['test obs'] });
// Default confidence is 1.0 which is > 0.7