@codeledger/insight-ui 0.9.0 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/CockpitLayout.d.ts +12 -2
- package/dist/components/CockpitLayout.d.ts.map +1 -1
- package/dist/components/CockpitLayout.js +85 -6
- package/dist/components/CockpitLayout.js.map +1 -1
- package/dist/pages/Efficiency.d.ts.map +1 -1
- package/dist/pages/Efficiency.js +22 -2
- package/dist/pages/Efficiency.js.map +1 -1
- package/dist/pages/Integrity.d.ts.map +1 -1
- package/dist/pages/Integrity.js +7 -1
- package/dist/pages/Integrity.js.map +1 -1
- package/dist/pages/Knowledge.d.ts.map +1 -1
- package/dist/pages/Knowledge.js +1 -1
- package/dist/pages/Knowledge.js.map +1 -1
- package/dist/pages/Overview.d.ts.map +1 -1
- package/dist/pages/Overview.js +74 -1
- package/dist/pages/Overview.js.map +1 -1
- package/dist/pages/Quality.d.ts.map +1 -1
- package/dist/pages/Quality.js +1 -1
- package/dist/pages/Quality.js.map +1 -1
- package/dist/pages/Value.d.ts.map +1 -1
- package/dist/pages/Value.js +1 -1
- package/dist/pages/Value.js.map +1 -1
- package/dist/render.d.ts +26 -1
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +182 -35
- package/dist/render.js.map +1 -1
- package/dist/theme.d.ts +1 -1
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +108 -9
- package/dist/theme.js.map +1 -1
- package/package.json +3 -3
|
@@ -7,18 +7,28 @@ interface PageHeaderProps {
|
|
|
7
7
|
confidence?: string;
|
|
8
8
|
syntheticLabel?: string;
|
|
9
9
|
trend?: InsightValueTrend;
|
|
10
|
+
/** ISO timestamp of when the snapshot was generated */
|
|
11
|
+
generatedAt?: string;
|
|
10
12
|
}
|
|
11
|
-
export declare function PageHeader({ title, subtitle, scope, confidence, syntheticLabel, trend }: PageHeaderProps): ReactElement;
|
|
13
|
+
export declare function PageHeader({ title, subtitle, scope, confidence, syntheticLabel, trend, generatedAt }: PageHeaderProps): ReactElement;
|
|
14
|
+
/** Definition + executive framing for each metric — shown inline on expand */
|
|
15
|
+
export declare const METRIC_HELP: Record<string, {
|
|
16
|
+
definition: string;
|
|
17
|
+
whyItMatters: string;
|
|
18
|
+
}>;
|
|
12
19
|
export interface MetricCardDefinition {
|
|
13
20
|
label: string;
|
|
14
21
|
value: number;
|
|
15
22
|
detail: string;
|
|
23
|
+
/** Subordinate data line — smaller, muted, distinct from primary detail */
|
|
24
|
+
secondaryDetail?: string;
|
|
16
25
|
metricKey?: string;
|
|
17
26
|
severity?: 'high' | 'medium' | 'low';
|
|
18
27
|
format?: 'percent' | 'raw';
|
|
19
28
|
}
|
|
20
|
-
export declare function MetricGrid({ cards }: {
|
|
29
|
+
export declare function MetricGrid({ cards, groupLabel }: {
|
|
21
30
|
cards: MetricCardDefinition[];
|
|
31
|
+
groupLabel?: string;
|
|
22
32
|
}): ReactElement;
|
|
23
33
|
interface EvidenceLinkProps {
|
|
24
34
|
metric: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CockpitLayout.d.ts","sourceRoot":"","sources":["../../src/components/CockpitLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAG3B,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,iBAAiB,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"CockpitLayout.d.ts","sourceRoot":"","sources":["../../src/components/CockpitLayout.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,92 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { SystemInsights } from './SystemInsights.js';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
function formatAge(generatedAt) {
|
|
4
|
+
const age = Date.now() - new Date(generatedAt).getTime();
|
|
5
|
+
if (age < 30 * 60_000)
|
|
6
|
+
return null; // Fresh (< 30 min)
|
|
7
|
+
const hours = Math.floor(age / 3_600_000);
|
|
8
|
+
const mins = Math.floor((age % 3_600_000) / 60_000);
|
|
9
|
+
if (hours > 0)
|
|
10
|
+
return `${hours}h ${mins}m ago`;
|
|
11
|
+
return `${mins}m ago`;
|
|
5
12
|
}
|
|
6
|
-
export function
|
|
7
|
-
|
|
13
|
+
export function PageHeader({ title, subtitle, scope, confidence, syntheticLabel, trend, generatedAt }) {
|
|
14
|
+
const staleLabel = generatedAt ? formatAge(generatedAt) : null;
|
|
15
|
+
return (_jsxs("section", { className: "page-header", children: [_jsxs("div", { children: [_jsx("p", { className: "page-title", children: title }), subtitle && _jsx("p", { className: "page-subtitle", children: subtitle }), _jsxs("div", { className: "scope-context-bar", children: [_jsx("span", { children: scope.windowLabel }), _jsxs("span", { children: [scope.executions, " executions \u00B7 ", scope.repos, " repos"] }), _jsxs("span", { children: ["Teams: ", scope.teams.length > 0 ? scope.teams.join(', ') : 'unattributed'] })] }), trend && (_jsxs("p", { className: "page-trend-note", children: ["Value ", trend.direction, " ", Math.abs(trend.delta), " vs ", trend.period, "."] }))] }), _jsxs("div", { className: "header-badges", children: [staleLabel && (_jsxs("span", { className: "stale-badge", children: ["Last updated ", staleLabel, ' · ', _jsx("a", { href: typeof window !== 'undefined' ? window.location.pathname : '/', className: "stale-refresh", children: "Refresh" })] })), confidence && _jsxs("span", { className: `confidence-badge ${confidence}`, children: ["Confidence: ", confidence] }), syntheticLabel && _jsx("span", { className: "synthetic-pill", children: syntheticLabel })] })] }));
|
|
8
16
|
}
|
|
9
|
-
|
|
10
|
-
|
|
17
|
+
/** Definition + executive framing for each metric — shown inline on expand */
|
|
18
|
+
export const METRIC_HELP = {
|
|
19
|
+
writeSafetySuccessRate: {
|
|
20
|
+
definition: 'Percentage of executions that passed all write-safety checks without modification.',
|
|
21
|
+
whyItMatters: 'High scores indicate developer intent is naturally aligned with security policy, reducing the compliance tax on your team.',
|
|
22
|
+
},
|
|
23
|
+
redactRate: {
|
|
24
|
+
definition: 'Percentage of writes that required content redaction before storage.',
|
|
25
|
+
whyItMatters: 'Rising redaction means developers are producing sensitive output that the system must clean — a training or tooling gap.',
|
|
26
|
+
},
|
|
27
|
+
rejectRate: {
|
|
28
|
+
definition: 'Percentage of writes blocked entirely by safety checks.',
|
|
29
|
+
whyItMatters: 'Rejections are expensive — the work was done but can\'t be stored. Investigate patterns behind high reject rates.',
|
|
30
|
+
},
|
|
31
|
+
integrityDrift: {
|
|
32
|
+
definition: 'Share of policy evaluations that found at least one violation.',
|
|
33
|
+
whyItMatters: 'Drift signals that architecture boundaries are eroding. Small drift compounds into large tech debt.',
|
|
34
|
+
},
|
|
35
|
+
boundaryIntegrity: {
|
|
36
|
+
definition: 'Percentage of policy evaluations that passed without boundary violations.',
|
|
37
|
+
whyItMatters: 'Strong boundary integrity means teams are working within declared architecture seams, reducing surprise in production.',
|
|
38
|
+
},
|
|
39
|
+
cleanLedgerAdmissionRate: {
|
|
40
|
+
definition: 'Percentage of writes admitted to the ledger without redaction, rejection, or escalation.',
|
|
41
|
+
whyItMatters: 'Clean admission means your institutional memory is building without friction — the system trusts what developers produce.',
|
|
42
|
+
},
|
|
43
|
+
firstPassSuccessRate: {
|
|
44
|
+
definition: 'Percentage of tasks completed successfully on the first attempt.',
|
|
45
|
+
whyItMatters: 'High first-pass success means context selection is working — developers get the right files and don\'t need to retry.',
|
|
46
|
+
},
|
|
47
|
+
reworkRatio: {
|
|
48
|
+
definition: 'Percentage of executions that required rework after initial completion.',
|
|
49
|
+
whyItMatters: 'Rework is hidden cost — it looks like productivity but doesn\'t ship new value. Lower is always better.',
|
|
50
|
+
},
|
|
51
|
+
executionReliability: {
|
|
52
|
+
definition: 'Overall success rate across all execution events.',
|
|
53
|
+
whyItMatters: 'This is your system\'s batting average. Sustained drops here signal tooling or process issues worth investigating.',
|
|
54
|
+
},
|
|
55
|
+
patternReuseRate: {
|
|
56
|
+
definition: 'Percentage of pattern encounters that reused an existing implementation.',
|
|
57
|
+
whyItMatters: 'Pattern reuse compounds institutional knowledge. Low reuse means teams are reinventing solutions that already exist.',
|
|
58
|
+
},
|
|
59
|
+
timeToContext: {
|
|
60
|
+
definition: 'Average time to usable context, derived from bundle size.',
|
|
61
|
+
whyItMatters: 'Fast context recovery means less onboarding friction and quicker debugging. Every minute saved scales across your team.',
|
|
62
|
+
},
|
|
63
|
+
shadowKnowledgeIndex: {
|
|
64
|
+
definition: 'Average weight of implicit knowledge signals — knowledge that exists but isn\'t documented.',
|
|
65
|
+
whyItMatters: 'High shadow knowledge creates single points of failure. When the expert leaves, the knowledge leaves with them.',
|
|
66
|
+
},
|
|
67
|
+
goldenPathAdherence: {
|
|
68
|
+
definition: 'Percentage of flows following the intended architecture path.',
|
|
69
|
+
whyItMatters: 'Adherence means teams are building consistently. Divergence creates maintenance burden and architectural drift.',
|
|
70
|
+
},
|
|
71
|
+
promptLift: {
|
|
72
|
+
definition: 'Blended measure of how effectively teams use prompt refinement.',
|
|
73
|
+
whyItMatters: 'Higher prompt lift means better input quality, which cascades into smaller context, fewer retries, and less rework.',
|
|
74
|
+
},
|
|
75
|
+
contextCompression: {
|
|
76
|
+
definition: 'Average percentage reduction in context scope after refinement.',
|
|
77
|
+
whyItMatters: 'Compressed context means agents work with focused, relevant files — fewer hallucinations, faster execution.',
|
|
78
|
+
},
|
|
79
|
+
wasteAvoided: {
|
|
80
|
+
definition: 'Operational proxy for overhead reduction from better prompts.',
|
|
81
|
+
whyItMatters: 'This estimates the work your team didn\'t have to redo. Directional, not precise — use as a leading indicator.',
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
export function MetricGrid({ cards, groupLabel }) {
|
|
85
|
+
return (_jsxs("div", { className: "metric-grid-wrapper", children: [groupLabel && _jsx("div", { className: "metric-group-label", children: groupLabel }), _jsx("div", { className: "metric-grid", children: cards.map((card) => (_jsx(MetricCard, { ...card }, card.label))) })] }));
|
|
86
|
+
}
|
|
87
|
+
function MetricCard({ label, value, detail, secondaryDetail, metricKey, severity, format = 'percent' }) {
|
|
88
|
+
const help = metricKey ? METRIC_HELP[metricKey] : undefined;
|
|
89
|
+
return (_jsxs("article", { className: "metric-card", children: [_jsxs("header", { children: [_jsx("span", { className: "metric-label", children: label }), _jsxs("div", { className: "metric-header-actions", children: [help && (_jsx("button", { className: "metric-help-toggle", "data-help-for": metricKey, title: "What is this?", children: "?" })), severity && _jsx("span", { className: `metric-severity ${severity}`, children: severity })] })] }), _jsxs("div", { className: "metric-display", children: [_jsx("strong", { children: format === 'percent' ? `${Math.round(value * 100)}%` : value.toFixed(2) }), _jsx("span", { children: detail }), secondaryDetail && _jsx("span", { className: "metric-secondary", children: secondaryDetail })] }), help && (_jsxs("div", { className: "metric-help-content", "data-help-content": metricKey, children: [_jsx("p", { className: "metric-help-definition", children: help.definition }), _jsxs("p", { className: "metric-help-why", children: [_jsx("strong", { children: "Why this matters:" }), " ", help.whyItMatters] })] })), metricKey && (_jsx("footer", { children: _jsx(EvidenceLink, { metric: metricKey }) }))] }));
|
|
11
90
|
}
|
|
12
91
|
export function EvidenceLink({ metric }) {
|
|
13
92
|
return (_jsx("button", { className: "btn-link evidence-link", "data-metric": metric, children: "View evidence" }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CockpitLayout.js","sourceRoot":"","sources":["../../src/components/CockpitLayout.tsx"],"names":[],"mappings":";AAUA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"CockpitLayout.js","sourceRoot":"","sources":["../../src/components/CockpitLayout.tsx"],"names":[],"mappings":";AAUA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAarD,SAAS,SAAS,CAAC,WAAmB;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;IACzD,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM;QAAE,OAAO,IAAI,CAAC,CAAC,mBAAmB;IACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC;IACpD,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,GAAG,KAAK,KAAK,IAAI,OAAO,CAAC;IAC/C,OAAO,GAAG,IAAI,OAAO,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAmB;IACpH,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,OAAO,CACL,mBAAS,SAAS,EAAC,aAAa,aAC9B,0BACE,YAAG,SAAS,EAAC,YAAY,YAAE,KAAK,GAAK,EACpC,QAAQ,IAAI,YAAG,SAAS,EAAC,eAAe,YAAE,QAAQ,GAAK,EACxD,eAAK,SAAS,EAAC,mBAAmB,aAChC,yBAAO,KAAK,CAAC,WAAW,GAAQ,EAChC,2BAAO,KAAK,CAAC,UAAU,yBAAgB,KAAK,CAAC,KAAK,cAAc,EAChE,sCAAc,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,IAAQ,IAClF,EACL,KAAK,IAAI,CACR,aAAG,SAAS,EAAC,iBAAiB,uBACrB,KAAK,CAAC,SAAS,OAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,UAAM,KAAK,CAAC,MAAM,SAC9D,CACL,IACG,EACN,eAAK,SAAS,EAAC,eAAe,aAC3B,UAAU,IAAI,CACb,gBAAM,SAAS,EAAC,aAAa,8BACb,UAAU,EACvB,KAAK,EACN,YAAG,IAAI,EAAE,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAC,eAAe,wBAAY,IACzG,CACR,EACA,UAAU,IAAI,gBAAM,SAAS,EAAE,oBAAoB,UAAU,EAAE,6BAAe,UAAU,IAAQ,EAChG,cAAc,IAAI,eAAM,SAAS,EAAC,gBAAgB,YAAE,cAAc,GAAQ,IACvE,IACE,CACX,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,MAAM,WAAW,GAAiE;IACvF,sBAAsB,EAAE;QACtB,UAAU,EAAE,oFAAoF;QAChG,YAAY,EAAE,4HAA4H;KAC3I;IACD,UAAU,EAAE;QACV,UAAU,EAAE,sEAAsE;QAClF,YAAY,EAAE,0HAA0H;KACzI;IACD,UAAU,EAAE;QACV,UAAU,EAAE,yDAAyD;QACrE,YAAY,EAAE,mHAAmH;KAClI;IACD,cAAc,EAAE;QACd,UAAU,EAAE,gEAAgE;QAC5E,YAAY,EAAE,qGAAqG;KACpH;IACD,iBAAiB,EAAE;QACjB,UAAU,EAAE,2EAA2E;QACvF,YAAY,EAAE,wHAAwH;KACvI;IACD,wBAAwB,EAAE;QACxB,UAAU,EAAE,0FAA0F;QACtG,YAAY,EAAE,2HAA2H;KAC1I;IACD,oBAAoB,EAAE;QACpB,UAAU,EAAE,kEAAkE;QAC9E,YAAY,EAAE,uHAAuH;KACtI;IACD,WAAW,EAAE;QACX,UAAU,EAAE,yEAAyE;QACrF,YAAY,EAAE,yGAAyG;KACxH;IACD,oBAAoB,EAAE;QACpB,UAAU,EAAE,mDAAmD;QAC/D,YAAY,EAAE,oHAAoH;KACnI;IACD,gBAAgB,EAAE;QAChB,UAAU,EAAE,0EAA0E;QACtF,YAAY,EAAE,sHAAsH;KACrI;IACD,aAAa,EAAE;QACb,UAAU,EAAE,2DAA2D;QACvE,YAAY,EAAE,yHAAyH;KACxI;IACD,oBAAoB,EAAE;QACpB,UAAU,EAAE,6FAA6F;QACzG,YAAY,EAAE,iHAAiH;KAChI;IACD,mBAAmB,EAAE;QACnB,UAAU,EAAE,+DAA+D;QAC3E,YAAY,EAAE,iHAAiH;KAChI;IACD,UAAU,EAAE;QACV,UAAU,EAAE,iEAAiE;QAC7E,YAAY,EAAE,qHAAqH;KACpI;IACD,kBAAkB,EAAE;QAClB,UAAU,EAAE,iEAAiE;QAC7E,YAAY,EAAE,6GAA6G;KAC5H;IACD,YAAY,EAAE;QACZ,UAAU,EAAE,+DAA+D;QAC3E,YAAY,EAAE,gHAAgH;KAC/H;CACF,CAAC;AAaF,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAE,UAAU,EAA0D;IACtG,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aACjC,UAAU,IAAI,cAAK,SAAS,EAAC,oBAAoB,YAAE,UAAU,GAAO,EACrE,cAAK,SAAS,EAAC,aAAa,YACzB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,KAAC,UAAU,OAAsB,IAAI,IAApB,IAAI,CAAC,KAAK,CAAc,CAC1C,CAAC,GACE,IACF,CACP,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAwB;IAC1H,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5D,OAAO,CACL,mBAAS,SAAS,EAAC,aAAa,aAC9B,6BACE,eAAM,SAAS,EAAC,cAAc,YAAE,KAAK,GAAQ,EAC7C,eAAK,SAAS,EAAC,uBAAuB,aACnC,IAAI,IAAI,CACP,iBAAQ,SAAS,EAAC,oBAAoB,mBAAgB,SAAS,EAAE,KAAK,EAAC,eAAe,kBAAW,CAClG,EACA,QAAQ,IAAI,eAAM,SAAS,EAAE,mBAAmB,QAAQ,EAAE,YAAG,QAAQ,GAAQ,IAC1E,IACC,EACT,eAAK,SAAS,EAAC,gBAAgB,aAC7B,2BAAS,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAU,EAC1F,yBAAO,MAAM,GAAQ,EACpB,eAAe,IAAI,eAAM,SAAS,EAAC,kBAAkB,YAAE,eAAe,GAAQ,IAC3E,EACL,IAAI,IAAI,CACP,eAAK,SAAS,EAAC,qBAAqB,uBAAoB,SAAS,aAC/D,YAAG,SAAS,EAAC,wBAAwB,YAAE,IAAI,CAAC,UAAU,GAAK,EAC3D,aAAG,SAAS,EAAC,iBAAiB,aAAC,iDAAkC,OAAE,IAAI,CAAC,YAAY,IAAK,IACrF,CACP,EACA,SAAS,IAAI,CACZ,2BACE,KAAC,YAAY,IAAC,MAAM,EAAE,SAAS,GAAI,GAC5B,CACV,IACO,CACX,CAAC;AACJ,CAAC;AAMD,MAAM,UAAU,YAAY,CAAC,EAAE,MAAM,EAAqB;IACxD,OAAO,CACL,iBAAQ,SAAS,EAAC,wBAAwB,iBAAc,MAAM,8BAErD,CACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAM5B;IACC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChE,OAAO,CACL,cAAK,SAAS,EAAC,eAAe,YAC5B,KAAC,cAAc,OAAK,KAAK,EAAE,SAAS,EAAC,qBAAqB,EAAC,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,GAAI,GAClF,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EACxB,SAAS,EACT,KAAK,EACL,UAAU,EACV,KAAK,GAMN;IACC,OAAO,CACL,mBAAS,SAAS,EAAC,YAAY,aAC7B,0BACE,YAAG,SAAS,EAAC,QAAQ,sBAAU,EAC/B,cAAI,SAAS,EAAC,aAAa,kBAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,IAAM,EACzE,KAAK,IAAI,CACR,aAAG,SAAS,EAAC,kBAAkB,aAC5B,KAAK,CAAC,SAAS,OAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,UAAM,KAAK,CAAC,MAAM,IACxD,CACL,EACD,eAAK,SAAS,EAAC,mBAAmB,aAChC,yBAAO,KAAK,CAAC,WAAW,GAAQ,EAChC,2BAAO,KAAK,CAAC,UAAU,mBAAmB,EAC1C,2BAAO,KAAK,CAAC,KAAK,cAAc,IAC5B,IACF,EACL,UAAU,IAAI,eAAM,SAAS,EAAE,oBAAoB,UAAU,EAAE,YAAG,UAAU,GAAQ,IAC7E,CACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAE,eAAe,EAAgD;IAC7F,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,CACL,kBAAS,SAAS,EAAC,gBAAgB,YACjC,yDAAqC,GAC7B,CACX,CAAC;IACJ,CAAC;IACD,OAAO,CACL,mBAAS,SAAS,EAAC,gBAAgB,aACjC,cAAK,SAAS,EAAC,QAAQ,4BAAkB,EACzC,cAAK,SAAS,EAAC,cAAc,YAC1B,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACzC,8BACE,eAAK,SAAS,EAAC,eAAe,aAC5B,2BAAS,IAAI,CAAC,KAAK,GAAU,EAC7B,eAAM,SAAS,EAAE,mBAAmB,IAAI,CAAC,QAAQ,EAAE,YAAG,IAAI,CAAC,QAAQ,GAAQ,IACvE,EACN,sBAAI,IAAI,CAAC,WAAW,GAAK,KALb,IAAI,CAAC,KAAK,CAMd,CACX,CAAC,GACE,IACE,CACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAqD;IAC/F,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,CACL,mBAAS,SAAS,EAAC,cAAc,aAC/B,cAAK,SAAS,EAAC,QAAQ,YAAE,KAAK,GAAO,EACrC,YAAG,SAAS,EAAC,eAAe,0CAA8B,IAClD,CACX,CAAC;IACJ,CAAC;IACD,OAAO,CACL,mBAAS,SAAS,EAAC,cAAc,aAC/B,cAAK,SAAS,EAAC,QAAQ,YAAE,KAAK,GAAO,EACrC,cAAK,SAAS,EAAC,eAAe,YAC3B,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAClC,8BACE,6BACE,2BAAS,KAAK,CAAC,IAAI,GAAU,EAC7B,eAAM,SAAS,EAAE,mBAAmB,KAAK,CAAC,SAAS,EAAE,YAAG,KAAK,CAAC,SAAS,GAAQ,IACxE,EACT,sBAAI,KAAK,CAAC,KAAK,GAAK,EACpB,eAAK,SAAS,EAAC,iBAAiB,aAC9B,2BAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,EAC7C,2BAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC,SAAS,IAClD,EACN,KAAC,YAAY,IAAC,MAAM,EAAE,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,sBAAsB,GAAI,KAVjI,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAWlC,CACX,CAAC,GACE,IACE,CACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAAE,QAAQ,EAAwC;IAClF,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,OAAO,CACL,mBAAS,SAAS,EAAC,cAAc,aAC/B,cAAK,SAAS,EAAC,QAAQ,oCAA0B,EACjD,cAAK,SAAS,EAAC,eAAe,YAC3B,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CACrC,8BACE,2BAAS,OAAO,CAAC,OAAO,GAAU,EAClC,wBAAI,OAAO,CAAC,KAAK,2BAAkB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAK,KAFpD,OAAO,CAAC,OAAO,CAGnB,CACX,CAAC,GACE,IACE,CACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAAE,OAAO,EAAsC;IAC/E,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClD,OAAO,CACL,mBAAS,SAAS,EAAC,cAAc,aAC/B,cAAK,SAAS,EAAC,QAAQ,0CAAgC,EACvD,cAAK,SAAS,EAAC,eAAe,YAC3B,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAClC,8BACE,2BAAS,KAAK,CAAC,IAAI,GAAU,EAC7B,yCAAiB,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAK,KAFtC,KAAK,CAAC,IAAI,CAGd,CACX,CAAC,GACE,IACE,CACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EACjC,KAAK,EACL,KAAK,EACL,KAAK,EACL,SAAS,GAMV;IACC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACjF,OAAO,CACL,eAAK,SAAS,EAAC,yBAAyB,aACtC,0BACE,2BAAS,KAAK,GAAU,EACxB,2BAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAW,UAAU,IAAQ,IAChD,EACN,KAAC,YAAY,IAAC,MAAM,EAAE,SAAS,GAAI,IAC/B,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Efficiency.d.ts","sourceRoot":"","sources":["../../src/pages/Efficiency.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIzD,UAAU,KAAK;IACb,QAAQ,EAAE,eAAe,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"Efficiency.d.ts","sourceRoot":"","sources":["../../src/pages/Efficiency.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIzD,UAAU,KAAK;IACb,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAoCD,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,GAAG,YAAY,CAmHhE"}
|
package/dist/pages/Efficiency.js
CHANGED
|
@@ -22,6 +22,16 @@ function compressionSummary(value, denominator) {
|
|
|
22
22
|
return `Context reduced by ${pct}% — meaningful but room to improve.`;
|
|
23
23
|
return `Context reduction is ${pct}% — teams may benefit from more prompt refinement.`;
|
|
24
24
|
}
|
|
25
|
+
function cleanAdmissionSummary(value, denominator) {
|
|
26
|
+
if (denominator === 0)
|
|
27
|
+
return 'No ledger admission data yet.';
|
|
28
|
+
const pct = Math.round(value * 100);
|
|
29
|
+
if (pct >= 95)
|
|
30
|
+
return `${pct}% of writes stored cleanly — no redaction or rejection needed.`;
|
|
31
|
+
if (pct >= 80)
|
|
32
|
+
return `${pct}% clean — some writes required safety modification before storage.`;
|
|
33
|
+
return `${pct}% clean admission — review write-safety patterns.`;
|
|
34
|
+
}
|
|
25
35
|
function wasteSummary(value, numerator, denominator) {
|
|
26
36
|
if (denominator === 0)
|
|
27
37
|
return 'No waste avoidance data yet.';
|
|
@@ -35,7 +45,8 @@ export function EfficiencyPage({ snapshot }) {
|
|
|
35
45
|
const syntheticLabel = snapshot.syntheticScenario?.scenarioIds?.join(', ');
|
|
36
46
|
const { metrics, insights, value } = snapshot;
|
|
37
47
|
const eff = metrics.efficiency;
|
|
38
|
-
|
|
48
|
+
// Pair cards into input quality (prompt → context) and output quality (execution → admission)
|
|
49
|
+
const inputCards = [
|
|
39
50
|
{
|
|
40
51
|
label: 'Prompt lift',
|
|
41
52
|
value: eff.promptLift.value,
|
|
@@ -50,6 +61,8 @@ export function EfficiencyPage({ snapshot }) {
|
|
|
50
61
|
metricKey: 'contextCompression',
|
|
51
62
|
severity: eff.contextCompression.denominator === 0 ? undefined : eff.contextCompression.value < 0.25 ? 'medium' : 'low',
|
|
52
63
|
},
|
|
64
|
+
];
|
|
65
|
+
const outputCards = [
|
|
53
66
|
{
|
|
54
67
|
label: 'Waste avoided',
|
|
55
68
|
value: eff.wasteAvoided.value,
|
|
@@ -57,10 +70,17 @@ export function EfficiencyPage({ snapshot }) {
|
|
|
57
70
|
metricKey: 'wasteAvoided',
|
|
58
71
|
severity: eff.wasteAvoided.denominator === 0 ? undefined : eff.wasteAvoided.value < 0.4 ? 'medium' : 'low',
|
|
59
72
|
},
|
|
73
|
+
{
|
|
74
|
+
label: 'Clean admission',
|
|
75
|
+
value: eff.cleanAdmission.value,
|
|
76
|
+
detail: cleanAdmissionSummary(eff.cleanAdmission.value, eff.cleanAdmission.denominator),
|
|
77
|
+
metricKey: 'cleanLedgerAdmissionRate',
|
|
78
|
+
severity: eff.cleanAdmission.denominator === 0 ? undefined : eff.cleanAdmission.value < 0.8 ? 'medium' : 'low',
|
|
79
|
+
},
|
|
60
80
|
];
|
|
61
81
|
const hasData = eff.promptLift.denominator > 0;
|
|
62
82
|
const trend = snapshot.metrics.overview.trend;
|
|
63
83
|
const hasTrend = trend.length >= 2;
|
|
64
|
-
return (_jsxs("div", { className: "efficiency-page", children: [_jsx(PageHeader, { title: "Execution efficiency", subtitle: "How prompt refinement and context compression reduce waste", scope: value.scope, confidence: value.confidence, syntheticLabel: syntheticLabel }), !hasData && (_jsxs("div", { className: "efficiency-zero-state panel", children: [_jsx("p", { children: _jsx("strong", { children: "No prompt refinement events yet." }) }), _jsx("p", { children: "When your team uses Prompt Coach, this tab will show how refined prompts lead to smaller context, fewer retries, and less rework." }), _jsx("p", { className: "causal-chain", children: "better prompts \u2192 smaller context \u2192 fewer retries \u2192 less rework \u2192 higher first-pass success" })] })), _jsx(MetricGrid, { cards: cards }), hasData && (_jsxs("section", { className: "panel", children: [_jsx("div", { className: "kicker", children: "Waste avoided is an estimated operational proxy" }), _jsx("p", { className: "scope-context", children: "Based on retries avoided, first-pass success, and low rework signals. Not a precise financial metric \u2014 use as a directional indicator." })] })), hasTrend && (_jsxs("section", { className: "panel", children: [_jsx("div", { className: "kicker", children: "Prompt \u2192 Context \u2192 Outcome" }), _jsxs("p", { className: "scope-context", children: ["Prompt lift: ", formatPct(trend[trend.length - 1].efficiency), " |", ' ', "First-pass success: ", formatPct(trend[trend.length - 1].quality), " |", ' ', "Trend over ", trend.length, " days"] }), _jsx("div", { className: "trend-compact", children: trend.slice(-14).map((point) => (_jsxs("div", { className: "trend-bar-group", children: [_jsx("div", { className: "trend-bar trend-bar-lift", style: { height: `${Math.round(point.efficiency * 60)}px` }, title: `Prompt lift: ${formatPct(point.efficiency)}` }), _jsx("div", { className: "trend-bar trend-bar-quality", style: { height: `${Math.round(point.quality * 60)}px` }, title: `First-pass: ${formatPct(point.quality)}` })] }, point.date))) }), _jsxs("div", { className: "trend-legend", children: [_jsxs("span", { className: "legend-item", children: [_jsx("span", { className: "dot dot-lift" }), " Prompt lift"] }), _jsxs("span", { className: "legend-item", children: [_jsx("span", { className: "dot dot-quality" }), " First-pass success"] })] })] })), _jsx(InsightStrip, { insights: insights, focusMetrics: ['promptLift', 'contextCompression', 'wasteAvoided'], title: "Efficiency signals", subtitle: "What changed in execution efficiency", limit: 3 })] }));
|
|
84
|
+
return (_jsxs("div", { className: "efficiency-page", children: [_jsx(PageHeader, { title: "Execution efficiency", subtitle: "How prompt refinement and context compression reduce waste", scope: value.scope, confidence: value.confidence, syntheticLabel: syntheticLabel, generatedAt: snapshot.generatedAt }), !hasData && (_jsxs("div", { className: "efficiency-zero-state panel", children: [_jsx("p", { children: _jsx("strong", { children: "No prompt refinement events yet." }) }), _jsx("p", { children: "When your team uses Prompt Coach, this tab will show how refined prompts lead to smaller context, fewer retries, and less rework." }), _jsx("p", { className: "causal-chain", children: "better prompts \u2192 smaller context \u2192 fewer retries \u2192 less rework \u2192 higher first-pass success" })] })), _jsx(MetricGrid, { cards: inputCards, groupLabel: "Input quality" }), _jsx(MetricGrid, { cards: outputCards, groupLabel: "Output quality" }), hasData && (_jsxs("section", { className: "panel", children: [_jsx("div", { className: "kicker", children: "Waste avoided is an estimated operational proxy" }), _jsx("p", { className: "scope-context", children: "Based on retries avoided, first-pass success, and low rework signals. Not a precise financial metric \u2014 use as a directional indicator." })] })), hasTrend && (_jsxs("section", { className: "panel", children: [_jsx("div", { className: "kicker", children: "Prompt \u2192 Context \u2192 Outcome" }), _jsxs("p", { className: "scope-context", children: ["Prompt lift: ", formatPct(trend[trend.length - 1].efficiency), " |", ' ', "First-pass success: ", formatPct(trend[trend.length - 1].quality), " |", ' ', "Trend over ", trend.length, " days"] }), _jsx("div", { className: "trend-compact", children: trend.slice(-14).map((point) => (_jsxs("div", { className: "trend-bar-group", children: [_jsx("div", { className: "trend-bar trend-bar-lift", style: { height: `${Math.round(point.efficiency * 60)}px` }, title: `Prompt lift: ${formatPct(point.efficiency)}` }), _jsx("div", { className: "trend-bar trend-bar-quality", style: { height: `${Math.round(point.quality * 60)}px` }, title: `First-pass: ${formatPct(point.quality)}` })] }, point.date))) }), _jsxs("div", { className: "trend-legend", children: [_jsxs("span", { className: "legend-item", children: [_jsx("span", { className: "dot dot-lift" }), " Prompt lift"] }), _jsxs("span", { className: "legend-item", children: [_jsx("span", { className: "dot dot-quality" }), " First-pass success"] })] })] })), _jsx(InsightStrip, { insights: insights, focusMetrics: ['promptLift', 'contextCompression', 'wasteAvoided', 'cleanLedgerAdmissionRate'], title: "Efficiency signals", subtitle: "What changed in execution efficiency", limit: 3 })] }));
|
|
65
85
|
}
|
|
66
86
|
//# sourceMappingURL=Efficiency.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Efficiency.js","sourceRoot":"","sources":["../../src/pages/Efficiency.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAMtF,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;AACvC,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa,EAAE,WAAmB;IAC3D,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,kCAAkC,CAAC;IACjE,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,qDAAqD,CAAC;IAChF,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,8DAA8D,CAAC;IACzF,OAAO,6CAA6C,CAAC;AACvD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,WAAmB;IAC5D,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,kCAAkC,CAAC;IACjE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;IACpC,IAAI,GAAG,IAAI,EAAE;QAAE,OAAO,qBAAqB,GAAG,8CAA8C,CAAC;IAC7F,IAAI,GAAG,IAAI,EAAE;QAAE,OAAO,sBAAsB,GAAG,qCAAqC,CAAC;IACrF,OAAO,wBAAwB,GAAG,oDAAoD,CAAC;AACzF,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,SAAiB,EAAE,WAAmB;IACzE,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,8BAA8B,CAAC;IAC7D,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,kBAAkB,SAAS,wCAAwC,CAAC;IAC9F,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,oEAAoE,CAAC;IAC/F,OAAO,2EAA2E,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAE,QAAQ,EAAS;IAChD,MAAM,cAAc,GAAG,QAAQ,CAAC,iBAAiB,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3E,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;IAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC;IAE/B,MAAM,
|
|
1
|
+
{"version":3,"file":"Efficiency.js","sourceRoot":"","sources":["../../src/pages/Efficiency.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Integrity.d.ts","sourceRoot":"","sources":["../../src/pages/Integrity.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKzD,UAAU,KAAK;IACb,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"Integrity.d.ts","sourceRoot":"","sources":["../../src/pages/Integrity.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKzD,UAAU,KAAK;IACb,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,GAAG,YAAY,CAmE/D"}
|
package/dist/pages/Integrity.js
CHANGED
|
@@ -4,11 +4,16 @@ import { InsightStrip, MetricGrid, PageHeader } from '../components/CockpitLayou
|
|
|
4
4
|
export function IntegrityPage({ snapshot }) {
|
|
5
5
|
const syntheticLabel = snapshot.syntheticScenario?.scenarioIds?.join(', ');
|
|
6
6
|
const { metrics, insights, value } = snapshot;
|
|
7
|
+
const cleanAdmPct = Math.round(metrics.integrity.cleanLedgerAdmissionRate.value * 100);
|
|
8
|
+
const boundaryPct = Math.round(metrics.integrity.boundaryIntegrity.value * 100);
|
|
9
|
+
const hasAdmissionData = metrics.integrity.cleanLedgerAdmissionRate.denominator > 0;
|
|
10
|
+
const hasBoundaryData = metrics.integrity.boundaryIntegrity.denominator > 0;
|
|
7
11
|
const cards = [
|
|
8
12
|
{
|
|
9
13
|
label: 'Write safety',
|
|
10
14
|
value: metrics.integrity.writeSafetySuccessRate.value,
|
|
11
15
|
detail: 'Write safety success',
|
|
16
|
+
secondaryDetail: hasAdmissionData ? `${cleanAdmPct}% clean ledger admission` : undefined,
|
|
12
17
|
metricKey: 'writeSafetySuccessRate',
|
|
13
18
|
severity: 'low',
|
|
14
19
|
},
|
|
@@ -30,10 +35,11 @@ export function IntegrityPage({ snapshot }) {
|
|
|
30
35
|
label: 'Integrity drift',
|
|
31
36
|
value: metrics.integrity.integrityDrift.value,
|
|
32
37
|
detail: 'Policy violations',
|
|
38
|
+
secondaryDetail: hasBoundaryData ? `${boundaryPct}% boundary integrity` : undefined,
|
|
33
39
|
metricKey: 'integrityDrift',
|
|
34
40
|
severity: metrics.integrity.integrityDrift.value > 0.25 ? 'high' : 'medium',
|
|
35
41
|
},
|
|
36
42
|
];
|
|
37
|
-
return (_jsxs("div", { className: "integrity-page", children: [_jsx(PageHeader, { title: "Integrity cockpit", subtitle: "
|
|
43
|
+
return (_jsxs("div", { className: "integrity-page", children: [_jsx(PageHeader, { title: "Integrity cockpit", subtitle: "Write safety, boundary integrity, and ledger admission", scope: value.scope, confidence: value.confidence, syntheticLabel: syntheticLabel, generatedAt: snapshot.generatedAt }), _jsx(MetricGrid, { cards: cards }), _jsx(InsightStrip, { insights: insights, focusMetrics: ['writeSafetySuccessRate', 'integrityDrift', 'rejectRate', 'cleanLedgerAdmissionRate', 'boundaryIntegrity'], title: "System signals", subtitle: "What changed in integrity", limit: 3 }), _jsx(HotspotPanel, { summaries: snapshot.hotspotSummaries, type: "integrity", title: "Violation concentration", placeholder: "Integrity is stable; no concentrated violations." })] }));
|
|
38
44
|
}
|
|
39
45
|
//# sourceMappingURL=Integrity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Integrity.js","sourceRoot":"","sources":["../../src/pages/Integrity.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAMtF,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAS;IAC/C,MAAM,cAAc,GAAG,QAAQ,CAAC,iBAAiB,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3E,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;IAC9C,MAAM,KAAK,GAA2B;QACpC;YACE,KAAK,EAAE,cAAc;YACrB,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,sBAAsB,CAAC,KAAK;YACrD,MAAM,EAAE,sBAAsB;YAC9B,SAAS,EAAE,wBAAwB;YACnC,QAAQ,EAAE,KAAK;SAChB;QACD;YACE,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK;YACzC,MAAM,EAAE,oBAAoB;YAC5B,SAAS,EAAE,YAAY;YACvB,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;SACvE;QACD;YACE,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK;YACzC,MAAM,EAAE,qBAAqB;YAC7B,SAAS,EAAE,YAAY;YACvB,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;SACvE;QACD;YACE,KAAK,EAAE,iBAAiB;YACxB,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK;YAC7C,MAAM,EAAE,mBAAmB;YAC3B,SAAS,EAAE,gBAAgB;YAC3B,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;SAC5E;KACF,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,gBAAgB,aAC7B,KAAC,UAAU,IACT,KAAK,EAAC,mBAAmB,EACzB,QAAQ,EAAC,
|
|
1
|
+
{"version":3,"file":"Integrity.js","sourceRoot":"","sources":["../../src/pages/Integrity.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Knowledge.d.ts","sourceRoot":"","sources":["../../src/pages/Knowledge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKzD,UAAU,KAAK;IACb,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"Knowledge.d.ts","sourceRoot":"","sources":["../../src/pages/Knowledge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKzD,UAAU,KAAK;IACb,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,GAAG,YAAY,CAiD/D"}
|
package/dist/pages/Knowledge.js
CHANGED
|
@@ -27,6 +27,6 @@ export function KnowledgePage({ snapshot }) {
|
|
|
27
27
|
severity: metrics.knowledge.shadowKnowledgeIndex.value > 0.4 ? 'high' : 'medium',
|
|
28
28
|
},
|
|
29
29
|
];
|
|
30
|
-
return (_jsxs("div", { className: "knowledge-page", children: [_jsx(PageHeader, { title: "Knowledge cockpit", subtitle: "Patterns, context, and documentation coverage", scope: value.scope, confidence: value.confidence, syntheticLabel: syntheticLabel }), _jsx(MetricGrid, { cards: cards }), _jsx(InsightStrip, { insights: insights, focusMetrics: ['patternReuseRate', 'timeToContext', 'shadowKnowledgeIndex'], title: "Knowledge signals", subtitle: "Memory compounding + emerging gaps", limit: 3 }), _jsx(PatternSpreadPanel, { patternSpread: patternSpread }), _jsx(ShadowHotspotList, { entries: shadowHotspots })] }));
|
|
30
|
+
return (_jsxs("div", { className: "knowledge-page", children: [_jsx(PageHeader, { title: "Knowledge cockpit", subtitle: "Patterns, context, and documentation coverage", scope: value.scope, confidence: value.confidence, syntheticLabel: syntheticLabel, generatedAt: snapshot.generatedAt }), _jsx(MetricGrid, { cards: cards }), _jsx(InsightStrip, { insights: insights, focusMetrics: ['patternReuseRate', 'timeToContext', 'shadowKnowledgeIndex'], title: "Knowledge signals", subtitle: "Memory compounding + emerging gaps", limit: 3 }), _jsx(PatternSpreadPanel, { patternSpread: patternSpread }), _jsx(ShadowHotspotList, { entries: shadowHotspots })] }));
|
|
31
31
|
}
|
|
32
32
|
//# sourceMappingURL=Knowledge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Knowledge.js","sourceRoot":"","sources":["../../src/pages/Knowledge.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAMzG,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAS;IAC/C,MAAM,cAAc,GAAG,QAAQ,CAAC,iBAAiB,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3E,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,QAAQ,CAAC;IAC7E,MAAM,KAAK,GAA2B;QACpC;YACE,KAAK,EAAE,eAAe;YACtB,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK;YAC/C,MAAM,EAAE,iBAAiB;YACzB,SAAS,EAAE,kBAAkB;YAC7B,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;SAC7E;QACD;YACE,KAAK,EAAE,iBAAiB;YACxB,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;YACjD,MAAM,EAAE,iBAAiB;YACzB,SAAS,EAAE,eAAe;YAC1B,MAAM,EAAE,KAAK;SACd;QACD;YACE,KAAK,EAAE,kBAAkB;YACzB,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,KAAK;YACnD,MAAM,EAAE,gBAAgB;YACxB,SAAS,EAAE,sBAAsB;YACjC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;SACjF;KACF,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,gBAAgB,aAC7B,KAAC,UAAU,IACT,KAAK,EAAC,mBAAmB,EACzB,QAAQ,EAAC,+CAA+C,EACxD,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,cAAc,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"Knowledge.js","sourceRoot":"","sources":["../../src/pages/Knowledge.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAMzG,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAS;IAC/C,MAAM,cAAc,GAAG,QAAQ,CAAC,iBAAiB,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3E,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,QAAQ,CAAC;IAC7E,MAAM,KAAK,GAA2B;QACpC;YACE,KAAK,EAAE,eAAe;YACtB,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK;YAC/C,MAAM,EAAE,iBAAiB;YACzB,SAAS,EAAE,kBAAkB;YAC7B,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;SAC7E;QACD;YACE,KAAK,EAAE,iBAAiB;YACxB,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;YACjD,MAAM,EAAE,iBAAiB;YACzB,SAAS,EAAE,eAAe;YAC1B,MAAM,EAAE,KAAK;SACd;QACD;YACE,KAAK,EAAE,kBAAkB;YACzB,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,KAAK;YACnD,MAAM,EAAE,gBAAgB;YACxB,SAAS,EAAE,sBAAsB;YACjC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;SACjF;KACF,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,gBAAgB,aAC7B,KAAC,UAAU,IACT,KAAK,EAAC,mBAAmB,EACzB,QAAQ,EAAC,+CAA+C,EACxD,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,QAAQ,CAAC,WAAW,GACjC,EACF,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,GAAI,EAC5B,KAAC,YAAY,IACX,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,CAAC,kBAAkB,EAAE,eAAe,EAAE,sBAAsB,CAAC,EAC3E,KAAK,EAAC,mBAAmB,EACzB,QAAQ,EAAC,oCAAoC,EAC7C,KAAK,EAAE,CAAC,GACR,EACF,KAAC,kBAAkB,IAAC,aAAa,EAAE,aAAa,GAAI,EACpD,KAAC,iBAAiB,IAAC,OAAO,EAAE,cAAc,GAAI,IAC1C,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Overview.d.ts","sourceRoot":"","sources":["../../src/pages/Overview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAkB,eAAe,
|
|
1
|
+
{"version":3,"file":"Overview.d.ts","sourceRoot":"","sources":["../../src/pages/Overview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAkB,eAAe,EAAgB,MAAM,mBAAmB,CAAC;AAKvF,UAAU,KAAK;IACb,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAoHD,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,GAAG,YAAY,CAuM9D"}
|
package/dist/pages/Overview.js
CHANGED
|
@@ -36,6 +36,67 @@ function severityDot(value) {
|
|
|
36
36
|
return 'amber';
|
|
37
37
|
return 'red';
|
|
38
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Build a 2-3 sentence executive synthesis from the 5 Control Plane signals.
|
|
41
|
+
* This is the "5-second read" for a VP — no jargon, no numbers without context.
|
|
42
|
+
*/
|
|
43
|
+
function buildSynthesis(metrics, _value, snapshot) {
|
|
44
|
+
const score = healthScore(metrics);
|
|
45
|
+
const parts = [];
|
|
46
|
+
// Sentence 1: Overall health
|
|
47
|
+
if (score >= 0.85) {
|
|
48
|
+
parts.push('The Fabric is healthy.');
|
|
49
|
+
}
|
|
50
|
+
else if (score >= 0.70) {
|
|
51
|
+
parts.push('The Fabric is mostly healthy.');
|
|
52
|
+
}
|
|
53
|
+
else if (score >= 0.50) {
|
|
54
|
+
parts.push('The Fabric shows mixed signals.');
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
parts.push('The Fabric needs attention.');
|
|
58
|
+
}
|
|
59
|
+
// Sentence 2: Strongest signal + weakest signal
|
|
60
|
+
const highlights = [];
|
|
61
|
+
const writeSafety = metrics.integrity.writeSafetySuccessRate.value;
|
|
62
|
+
if (writeSafety >= 0.90 && metrics.integrity.writeSafetySuccessRate.denominator > 0) {
|
|
63
|
+
highlights.push({ label: `Write safety is strong (${fmt(writeSafety)})`, value: writeSafety, isGood: true });
|
|
64
|
+
}
|
|
65
|
+
const cleanAdm = metrics.integrity.cleanLedgerAdmissionRate.value;
|
|
66
|
+
if (cleanAdm >= 0.90 && metrics.integrity.cleanLedgerAdmissionRate.denominator > 0) {
|
|
67
|
+
highlights.push({ label: `clean admission at ${fmt(cleanAdm)}`, value: cleanAdm, isGood: true });
|
|
68
|
+
}
|
|
69
|
+
const drift = metrics.integrity.integrityDrift.value;
|
|
70
|
+
if (drift > 0.15 && metrics.integrity.integrityDrift.denominator > 0) {
|
|
71
|
+
highlights.push({ label: `${Math.round(drift * 100)}% boundary drift detected`, value: drift, isGood: false });
|
|
72
|
+
}
|
|
73
|
+
const rework = metrics.quality.reworkRatio.value;
|
|
74
|
+
if (rework > 0.25 && metrics.quality.reworkRatio.denominator > 0) {
|
|
75
|
+
highlights.push({ label: `rework is elevated at ${fmt(rework)}`, value: rework, isGood: false });
|
|
76
|
+
}
|
|
77
|
+
const reuse = metrics.knowledge.patternReuseRate.value;
|
|
78
|
+
if (reuse >= 0.60 && metrics.knowledge.patternReuseRate.denominator > 0) {
|
|
79
|
+
highlights.push({ label: `pattern reuse at ${fmt(reuse)}`, value: reuse, isGood: true });
|
|
80
|
+
}
|
|
81
|
+
// Pick the strongest good + strongest bad
|
|
82
|
+
const goods = highlights.filter((h) => h.isGood);
|
|
83
|
+
const bads = highlights.filter((h) => !h.isGood);
|
|
84
|
+
if (goods.length > 0 && bads.length > 0) {
|
|
85
|
+
parts.push(`${goods[0].label}, but ${bads[0].label}.`);
|
|
86
|
+
}
|
|
87
|
+
else if (goods.length > 0) {
|
|
88
|
+
parts.push(`${goods.map((g) => g.label).join(', ')}.`);
|
|
89
|
+
}
|
|
90
|
+
else if (bads.length > 0) {
|
|
91
|
+
parts.push(`${bads.map((b) => b.label).join(', ')}.`);
|
|
92
|
+
}
|
|
93
|
+
// Sentence 3: Actionable recommendation (if any)
|
|
94
|
+
if (snapshot.recommendations && snapshot.recommendations.length > 0) {
|
|
95
|
+
const top = snapshot.recommendations[0];
|
|
96
|
+
parts.push(`Recommend: ${top.title.toLowerCase()}.`);
|
|
97
|
+
}
|
|
98
|
+
return parts.join(' ');
|
|
99
|
+
}
|
|
39
100
|
export function OverviewPage({ snapshot }) {
|
|
40
101
|
const { metrics, value, recommendations, insights } = snapshot;
|
|
41
102
|
const syntheticLabel = snapshot.syntheticScenario?.scenarioIds?.join(', ');
|
|
@@ -48,6 +109,18 @@ export function OverviewPage({ snapshot }) {
|
|
|
48
109
|
const score = healthScore(metrics);
|
|
49
110
|
const eff = metrics.efficiency;
|
|
50
111
|
const hasEffData = eff.promptLift.denominator > 0;
|
|
51
|
-
return (_jsxs("div", { className: "overview-page", children: [_jsx(PageHeader, { title: "System health", scope: value.scope, confidence: value.confidence, syntheticLabel: syntheticLabel, trend: snapshot.valueTrend }), _jsxs("section", { className: "panel system-health-card", children: [_jsxs("div", { className: "health-headline", children: [_jsx("strong", { className: "health-score", children: fmt(score) }), _jsx("span", { className: "health-sentence", children: healthSentence(score, pillars) })] }), _jsx("div", { className: "health-sub-metrics", children: pillars.map((p) => (_jsxs("a", { className: "health-sub", href: p.href, children: [_jsx("span", { className: `severity-dot ${severityDot(p.value)}` }), _jsx("span", { className: "health-sub-label", children: p.label }), _jsx("strong", { children: fmt(p.value) })] }, p.label))) })] }), _jsx(ValueHero, { estimated: value.estimatedSavings, scope: value.scope, trend: snapshot.valueTrend, confidence: value.confidence }), _jsxs("section", { className: "panel drivers-section", children: [_jsx("div", { className: "kicker", children: "Drivers" }), _jsx("p", { className: "drivers-subtitle", children: "What is driving the current result" }), _jsxs("div", { className: "drivers-row", children: [_jsxs("div", { className: "driver-item", children: [_jsx("span", { className: "driver-label", children: "Prompt lift" }), _jsx("strong", { children: hasEffData ? fmt(eff.promptLift.value) : '—' }), hasEffData && _jsx(EvidenceLink, { metric: "promptLift" })] }), _jsxs("div", { className: "driver-item", children: [_jsx("span", { className: "driver-label", children: "Context compression" }), _jsx("strong", { children: hasEffData ? fmt(eff.contextCompression.value) : '—' }), hasEffData && _jsx(EvidenceLink, { metric: "contextCompression" })] }), _jsxs("div", { className: "driver-item", children: [_jsx("span", { className: "driver-label", children: "Waste avoided" }), _jsx("strong", { children: hasEffData ? fmt(eff.wasteAvoided.value) : '—' }), hasEffData && _jsx(EvidenceLink, { metric: "wasteAvoided" })] })] }), !hasEffData && (_jsxs("p", { className: "scope-context", children: ["No prompt refinement data yet. ", _jsx("a", { href: "/efficiency", children: "Learn more \u2192" })] }))] }), _jsx(InsightStrip, { insights: insights, title: "Signals", limit: 3 }), _jsx(ActionCallout, { recommendations: recommendations }), _jsxs("section", { className: "
|
|
112
|
+
return (_jsxs("div", { className: "overview-page", children: [_jsx(PageHeader, { title: "System health", scope: value.scope, confidence: value.confidence, syntheticLabel: syntheticLabel, generatedAt: snapshot.generatedAt, trend: snapshot.valueTrend }), _jsx("section", { className: "signal-synthesis", children: _jsx("p", { className: "synthesis-text", children: buildSynthesis(metrics, value, snapshot) }) }), _jsxs("section", { className: "panel system-health-card", children: [_jsxs("div", { className: "health-headline", children: [_jsx("strong", { className: "health-score", children: fmt(score) }), _jsx("span", { className: "health-sentence", children: healthSentence(score, pillars) })] }), _jsx("div", { className: "health-sub-metrics", children: pillars.map((p) => (_jsxs("a", { className: "health-sub", href: p.href, children: [_jsx("span", { className: `severity-dot ${severityDot(p.value)}` }), _jsx("span", { className: "health-sub-label", children: p.label }), _jsx("strong", { children: fmt(p.value) })] }, p.label))) })] }), _jsx(ValueHero, { estimated: value.estimatedSavings, scope: value.scope, trend: snapshot.valueTrend, confidence: value.confidence }), _jsxs("section", { className: "panel drivers-section", children: [_jsx("div", { className: "kicker", children: "Drivers" }), _jsx("p", { className: "drivers-subtitle", children: "What is driving the current result" }), _jsxs("div", { className: "drivers-row", children: [_jsxs("div", { className: "driver-item", children: [_jsx("span", { className: "driver-label", children: "Prompt lift" }), _jsx("strong", { children: hasEffData ? fmt(eff.promptLift.value) : '—' }), hasEffData && _jsx(EvidenceLink, { metric: "promptLift" })] }), _jsxs("div", { className: "driver-item", children: [_jsx("span", { className: "driver-label", children: "Context compression" }), _jsx("strong", { children: hasEffData ? fmt(eff.contextCompression.value) : '—' }), hasEffData && _jsx(EvidenceLink, { metric: "contextCompression" })] }), _jsxs("div", { className: "driver-item", children: [_jsx("span", { className: "driver-label", children: "Waste avoided" }), _jsx("strong", { children: hasEffData ? fmt(eff.wasteAvoided.value) : '—' }), hasEffData && _jsx(EvidenceLink, { metric: "wasteAvoided" })] })] }), !hasEffData && (_jsxs("p", { className: "scope-context", children: ["No prompt refinement data yet. ", _jsx("a", { href: "/efficiency", children: "Learn more \u2192" })] }))] }), _jsx(InsightStrip, { insights: insights, title: "Signals", limit: 3 }), _jsx(ActionCallout, { recommendations: recommendations }), _jsxs("section", { className: "panel intelligence-section", children: [_jsx("div", { className: "kicker", children: "What got smarter" }), snapshot.knowledgePatterns && snapshot.knowledgePatterns.length > 0 ? (_jsx("div", { className: "intelligence-list", children: snapshot.knowledgePatterns.slice(0, 3).map((p) => (_jsxs("div", { className: "intelligence-item", children: [_jsx("strong", { children: p.pattern }), _jsxs("span", { className: "scope-context", children: [p.count, " occurrences \u00B7 ", p.repos.length, " repo", p.repos.length !== 1 ? 's' : ''] })] }, p.pattern))) })) : (_jsx("p", { className: "scope-context", children: "Patterns will appear here as your team builds reusable flows." }))] }), _jsxs("section", { className: "panel intelligence-section", children: [_jsx("div", { className: "kicker", children: "Repeated friction" }), (() => {
|
|
113
|
+
const rework = metrics.quality.reworkRatio;
|
|
114
|
+
const drift = metrics.integrity.integrityDrift;
|
|
115
|
+
const hasFriction = rework.value > 0.2 || drift.value > 0.15;
|
|
116
|
+
if (!hasFriction) {
|
|
117
|
+
return _jsx("p", { className: "scope-context", children: "No recurring friction detected this period." });
|
|
118
|
+
}
|
|
119
|
+
return (_jsxs("div", { className: "intelligence-list", children: [rework.value > 0.2 && (_jsxs("div", { className: "intelligence-item friction", children: [_jsx("strong", { children: "Rework elevated" }), _jsxs("span", { className: "scope-context", children: [Math.round(rework.value * 100), "% rework ratio \u2014 no pattern promoted yet"] })] })), drift.value > 0.15 && (_jsxs("div", { className: "intelligence-item friction", children: [_jsx("strong", { children: "Boundary drift" }), _jsxs("span", { className: "scope-context", children: [Math.round(drift.value * 100), "% policy evaluations with violations"] })] }))] }));
|
|
120
|
+
})()] }), _jsxs("section", { className: "panel intelligence-section", children: [_jsx("div", { className: "kicker", children: "Prompt coaching impact" }), hasEffData ? (_jsxs("div", { className: "intelligence-list", children: [_jsxs("div", { className: "intelligence-item", children: [_jsxs("strong", { children: ["Prompt lift: ", fmt(eff.promptLift.value)] }), _jsx("span", { className: "scope-context", children: eff.promptLift.value >= 0.6
|
|
121
|
+
? 'Coached prompts are driving consistently clearer tasks'
|
|
122
|
+
: eff.promptLift.value >= 0.3
|
|
123
|
+
? 'Coaching adoption is growing — specificity improving'
|
|
124
|
+
: 'Early stage — prompt coaching signals accumulating' })] }), eff.contextCompression.value > 0 && (_jsxs("div", { className: "intelligence-item", children: [_jsxs("strong", { children: ["Context compression: ", fmt(eff.contextCompression.value)] }), _jsx("span", { className: "scope-context", children: "Coached prompts reduce context scope on average" })] }))] })) : (_jsx("p", { className: "scope-context", children: "Prompt coaching signals accumulating. Impact will appear as your team uses Prompt Coach." }))] }), _jsxs("section", { className: "panel intelligence-section", children: [_jsx("div", { className: "kicker", children: "Compounding trend" }), _jsxs("div", { className: "compounding-grid", children: [_jsxs("div", { className: "compounding-item", children: [_jsx("span", { className: "compounding-label", children: "Evidence" }), _jsx("strong", { children: metrics.overview.eventCount > 0 ? 'growing' : 'awaiting' })] }), _jsxs("div", { className: "compounding-item", children: [_jsx("span", { className: "compounding-label", children: "Patterns" }), _jsx("strong", { children: snapshot.knowledgePatterns && snapshot.knowledgePatterns.length > 0 ? 'emerging' : 'awaiting' })] }), _jsxs("div", { className: "compounding-item", children: [_jsx("span", { className: "compounding-label", children: "Reuse" }), _jsx("strong", { children: metrics.knowledge.patternReuseRate.value > 0.3 ? 'active' : metrics.knowledge.patternReuseRate.value > 0 ? 'starting' : 'awaiting' })] }), _jsxs("div", { className: "compounding-item", children: [_jsx("span", { className: "compounding-label", children: "Coaching" }), _jsx("strong", { children: hasEffData ? 'active' : 'awaiting' })] })] })] }), _jsxs("section", { className: "detail-section", children: [metrics.overview.trend.length >= 2 && (_jsxs("section", { className: "panel chart-wrap trend-panel demoted", children: [_jsx("div", { className: "kicker", children: "Trend" }), _jsxs(LineChart, { width: 960, height: 200, data: metrics.overview.trend, children: [_jsx(CartesianGrid, { stroke: "#d7d0c3", strokeDasharray: "3 3" }), _jsx(XAxis, { dataKey: "date", tick: { fontSize: 11 } }), _jsx(YAxis, { domain: [0, 1], tick: { fontSize: 11 } }), _jsx(Tooltip, {}), _jsx(Line, { type: "monotone", dataKey: "integrity", stroke: "#0b6e4f", strokeWidth: 2, dot: false }), _jsx(Line, { type: "monotone", dataKey: "quality", stroke: "#bc6c25", strokeWidth: 2, dot: false }), _jsx(Line, { type: "monotone", dataKey: "knowledge", stroke: "#1e2430", strokeWidth: 1.5, dot: false })] })] })), _jsx(PatternSpreadPanel, { patternSpread: snapshot.patternSpread })] })] }));
|
|
52
125
|
}
|
|
53
126
|
//# sourceMappingURL=Overview.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Overview.js","sourceRoot":"","sources":["../../src/pages/Overview.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Overview.js","sourceRoot":"","sources":["../../src/pages/Overview.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Quality.d.ts","sourceRoot":"","sources":["../../src/pages/Quality.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKzD,UAAU,KAAK;IACb,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"Quality.d.ts","sourceRoot":"","sources":["../../src/pages/Quality.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKzD,UAAU,KAAK;IACb,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,GAAG,YAAY,CA0D7D"}
|
package/dist/pages/Quality.js
CHANGED
|
@@ -27,6 +27,6 @@ export function QualityPage({ snapshot }) {
|
|
|
27
27
|
severity: metrics.quality.executionReliability.value < 0.8 ? 'medium' : 'low',
|
|
28
28
|
},
|
|
29
29
|
];
|
|
30
|
-
return (_jsxs("div", { className: "quality-page", children: [_jsx(PageHeader, { title: "Quality cockpit", subtitle: "Execution performance and rework health", scope: value.scope, confidence: value.confidence, syntheticLabel: syntheticLabel }), _jsx(MetricGrid, { cards: cards }), _jsx(InsightStrip, { insights: insights, focusMetrics: ['firstPassSuccessRate', 'reworkRatio', 'executionReliability'], title: "Quality signals", subtitle: "What shifted in quality this period", limit: 3 }), _jsx(HotspotPanel, { summaries: snapshot.hotspotSummaries, type: "quality", title: "Top hotspots", placeholder: "No quality hotspots yet." }), _jsx(ComparisonPanel, { comparisons: snapshot.scopeComparisons ?? [], filter: ['executionReliability', 'firstPassSuccessRate'], title: "Compare to org" })] }));
|
|
30
|
+
return (_jsxs("div", { className: "quality-page", children: [_jsx(PageHeader, { title: "Quality cockpit", subtitle: "Execution performance and rework health", scope: value.scope, confidence: value.confidence, syntheticLabel: syntheticLabel, generatedAt: snapshot.generatedAt }), _jsx(MetricGrid, { cards: cards }), _jsx(InsightStrip, { insights: insights, focusMetrics: ['firstPassSuccessRate', 'reworkRatio', 'executionReliability'], title: "Quality signals", subtitle: "What shifted in quality this period", limit: 3 }), _jsx(HotspotPanel, { summaries: snapshot.hotspotSummaries, type: "quality", title: "Top hotspots", placeholder: "No quality hotspots yet." }), _jsx(ComparisonPanel, { comparisons: snapshot.scopeComparisons ?? [], filter: ['executionReliability', 'firstPassSuccessRate'], title: "Compare to org" })] }));
|
|
31
31
|
}
|
|
32
32
|
//# sourceMappingURL=Quality.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Quality.js","sourceRoot":"","sources":["../../src/pages/Quality.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAMtF,MAAM,UAAU,WAAW,CAAC,EAAE,QAAQ,EAAS;IAC7C,MAAM,cAAc,GAAG,QAAQ,CAAC,iBAAiB,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3E,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;IAC9C,MAAM,KAAK,GAA2B;QACpC;YACE,KAAK,EAAE,oBAAoB;YAC3B,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK;YACjD,MAAM,EAAE,oBAAoB;YAC5B,SAAS,EAAE,sBAAsB;YACjC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;SAC/E;QACD;YACE,KAAK,EAAE,cAAc;YACrB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK;YACxC,MAAM,EAAE,mBAAmB;YAC3B,SAAS,EAAE,aAAa;YACxB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;SACtE;QACD;YACE,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK;YACjD,MAAM,EAAE,oBAAoB;YAC5B,SAAS,EAAE,sBAAsB;YACjC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;SAC9E;KACF,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,cAAc,aAC3B,KAAC,UAAU,IACT,KAAK,EAAC,iBAAiB,EACvB,QAAQ,EAAC,yCAAyC,EAClD,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,cAAc,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"Quality.js","sourceRoot":"","sources":["../../src/pages/Quality.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAMtF,MAAM,UAAU,WAAW,CAAC,EAAE,QAAQ,EAAS;IAC7C,MAAM,cAAc,GAAG,QAAQ,CAAC,iBAAiB,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3E,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;IAC9C,MAAM,KAAK,GAA2B;QACpC;YACE,KAAK,EAAE,oBAAoB;YAC3B,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK;YACjD,MAAM,EAAE,oBAAoB;YAC5B,SAAS,EAAE,sBAAsB;YACjC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;SAC/E;QACD;YACE,KAAK,EAAE,cAAc;YACrB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK;YACxC,MAAM,EAAE,mBAAmB;YAC3B,SAAS,EAAE,aAAa;YACxB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;SACtE;QACD;YACE,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK;YACjD,MAAM,EAAE,oBAAoB;YAC5B,SAAS,EAAE,sBAAsB;YACjC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;SAC9E;KACF,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,cAAc,aAC3B,KAAC,UAAU,IACT,KAAK,EAAC,iBAAiB,EACvB,QAAQ,EAAC,yCAAyC,EAClD,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,QAAQ,CAAC,WAAW,GACjC,EACF,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,GAAI,EAC5B,KAAC,YAAY,IACX,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,CAAC,sBAAsB,EAAE,aAAa,EAAE,sBAAsB,CAAC,EAC7E,KAAK,EAAC,iBAAiB,EACvB,QAAQ,EAAC,qCAAqC,EAC9C,KAAK,EAAE,CAAC,GACR,EACF,KAAC,YAAY,IACX,SAAS,EAAE,QAAQ,CAAC,gBAAgB,EACpC,IAAI,EAAC,SAAS,EACd,KAAK,EAAC,cAAc,EACpB,WAAW,EAAC,0BAA0B,GACtC,EACF,KAAC,eAAe,IACd,WAAW,EAAE,QAAQ,CAAC,gBAAgB,IAAI,EAAE,EAC5C,MAAM,EAAE,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,EACxD,KAAK,EAAC,gBAAgB,GACtB,IACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Value.d.ts","sourceRoot":"","sources":["../../src/pages/Value.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAczD,UAAU,KAAK;IACb,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"Value.d.ts","sourceRoot":"","sources":["../../src/pages/Value.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAczD,UAAU,KAAK;IACb,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,GAAG,YAAY,CAuG3D"}
|
package/dist/pages/Value.js
CHANGED
|
@@ -5,6 +5,6 @@ export function ValuePage({ snapshot }) {
|
|
|
5
5
|
const syntheticLabel = snapshot.syntheticScenario?.scenarioIds?.join(', ');
|
|
6
6
|
const { value, recommendations, insights } = snapshot;
|
|
7
7
|
const totalHours = value.reworkAvoidedHours + value.contextRecoveryHours + value.patternLeverageHours || 1;
|
|
8
|
-
return (_jsxs("div", { className: "value-page", children: [_jsx(PageHeader, { title: "Value cockpit", subtitle: "Estimated savings derived from observed signals", scope: value.scope, confidence: value.confidence, syntheticLabel: syntheticLabel, trend: snapshot.valueTrend }), _jsx(ValueHero, { estimated: value.estimatedSavings, scope: value.scope, confidence: value.confidence, trend: snapshot.valueTrend }), _jsxs("section", { className: "value-breakdown", children: [_jsx("div", { className: "kicker", children: "Breakdown" }), _jsx(ValueBreakdownCard, { label: "Rework reduction", hours: value.reworkAvoidedHours, share: value.reworkAvoidedHours / totalHours, metricKey: "reworkRatio" }), _jsx(ValueBreakdownCard, { label: "Context recovery", hours: value.contextRecoveryHours, share: value.contextRecoveryHours / totalHours, metricKey: "timeToContext" }), _jsx(ValueBreakdownCard, { label: "Pattern leverage", hours: value.patternLeverageHours, share: value.patternLeverageHours / totalHours, metricKey: "patternReuseRate" })] }), _jsxs("section", { className: "value-formula", children: [_jsx("div", { className: "kicker", children: "How this value is computed" }), _jsx("p", { children: VALUE_FORMULA_DESCRIPTION }), _jsx("div", { className: "formula-metrics", children: VALUE_METRICS_USED.map((metric) => (_jsxs("article", { children: [_jsx("strong", { children: metric.label }), _jsx("span", { children: metric.key })] }, metric.key))) }), _jsxs("p", { className: "confidence-note", children: ["Confidence: ", _jsx("strong", { children: value.confidence }), " \u2014 ", VALUE_CONFIDENCE_DESCRIPTIONS[value.confidence]] }), _jsxs("p", { className: "scope-context", children: ["Execution volume taken from execution reliability events (", value.scope.executions, " executions)."] })] }), value.derivation && value.derivation.length > 0 && (_jsxs("section", { className: "value-derivation", children: [_jsx("div", { className: "kicker", children: "Component derivation" }), value.derivation.map((d) => (_jsxs("article", { className: "derivation-card", children: [_jsxs("div", { className: "derivation-header", children: [_jsx("strong", { children: d.label }), _jsxs("span", { children: [d.hours.toFixed(1), "h"] })] }), _jsx("code", { className: "derivation-formula", children: d.formula }), _jsx("div", { className: "derivation-inputs", children: Object.entries(d.inputs).map(([k, v]) => (_jsxs("span", { className: "input-pair", children: [k, ": ", typeof v === 'number' ? v.toFixed(3) : v] }, k))) })] }, d.label)))] })), _jsxs("section", { className: "value-assumptions", children: [_jsx("div", { className: "kicker", children: "Assumptions" }), _jsxs("div", { className: "list", children: [_jsxs("div", { className: "row", children: [_jsx("span", { children: "Cost per hour" }), _jsxs("strong", { children: ["$", value.assumptions.cost_per_hour, "/hr"] })] }), _jsxs("div", { className: "row", children: [_jsx("span", { children: "Rework multiplier" }), _jsxs("strong", { children: [value.assumptions.rework_multiplier, "\u00D7"] })] })] }), _jsx("p", { className: "scope-context", children: "Value is grounded in aggregate signals. No individual developer scoring." })] }), _jsx(InsightStrip, { insights: insights, title: "Evidence-backed signals", subtitle: "Driving the estimated savings", limit: 3 }), _jsx(ActionCallout, { recommendations: recommendations })] }));
|
|
8
|
+
return (_jsxs("div", { className: "value-page", children: [_jsx(PageHeader, { title: "Value cockpit", subtitle: "Estimated savings derived from observed signals", scope: value.scope, confidence: value.confidence, syntheticLabel: syntheticLabel, generatedAt: snapshot.generatedAt, trend: snapshot.valueTrend }), _jsx(ValueHero, { estimated: value.estimatedSavings, scope: value.scope, confidence: value.confidence, trend: snapshot.valueTrend }), _jsxs("section", { className: "value-breakdown", children: [_jsx("div", { className: "kicker", children: "Breakdown" }), _jsx(ValueBreakdownCard, { label: "Rework reduction", hours: value.reworkAvoidedHours, share: value.reworkAvoidedHours / totalHours, metricKey: "reworkRatio" }), _jsx(ValueBreakdownCard, { label: "Context recovery", hours: value.contextRecoveryHours, share: value.contextRecoveryHours / totalHours, metricKey: "timeToContext" }), _jsx(ValueBreakdownCard, { label: "Pattern leverage", hours: value.patternLeverageHours, share: value.patternLeverageHours / totalHours, metricKey: "patternReuseRate" })] }), _jsxs("section", { className: "value-formula", children: [_jsx("div", { className: "kicker", children: "How this value is computed" }), _jsx("p", { children: VALUE_FORMULA_DESCRIPTION }), _jsx("div", { className: "formula-metrics", children: VALUE_METRICS_USED.map((metric) => (_jsxs("article", { children: [_jsx("strong", { children: metric.label }), _jsx("span", { children: metric.key })] }, metric.key))) }), _jsxs("p", { className: "confidence-note", children: ["Confidence: ", _jsx("strong", { children: value.confidence }), " \u2014 ", VALUE_CONFIDENCE_DESCRIPTIONS[value.confidence]] }), _jsxs("p", { className: "scope-context", children: ["Execution volume taken from execution reliability events (", value.scope.executions, " executions)."] })] }), value.derivation && value.derivation.length > 0 && (_jsxs("section", { className: "value-derivation", children: [_jsx("div", { className: "kicker", children: "Component derivation" }), value.derivation.map((d) => (_jsxs("article", { className: "derivation-card", children: [_jsxs("div", { className: "derivation-header", children: [_jsx("strong", { children: d.label }), _jsxs("span", { children: [d.hours.toFixed(1), "h"] })] }), _jsx("code", { className: "derivation-formula", children: d.formula }), _jsx("div", { className: "derivation-inputs", children: Object.entries(d.inputs).map(([k, v]) => (_jsxs("span", { className: "input-pair", children: [k, ": ", typeof v === 'number' ? v.toFixed(3) : v] }, k))) })] }, d.label)))] })), _jsxs("section", { className: "value-assumptions", children: [_jsx("div", { className: "kicker", children: "Assumptions" }), _jsxs("div", { className: "list", children: [_jsxs("div", { className: "row", children: [_jsx("span", { children: "Cost per hour" }), _jsxs("strong", { children: ["$", value.assumptions.cost_per_hour, "/hr"] })] }), _jsxs("div", { className: "row", children: [_jsx("span", { children: "Rework multiplier" }), _jsxs("strong", { children: [value.assumptions.rework_multiplier, "\u00D7"] })] })] }), _jsx("p", { className: "scope-context", children: "Value is grounded in aggregate signals. No individual developer scoring." }), _jsx("p", { className: "scope-context", children: "Value also includes prevention of unsafe memory persistence \u2014 writes that required redaction or were blocked by safety checks represent avoided risk that does not appear in the dollar estimate but contributes to institutional memory hygiene." })] }), _jsx(InsightStrip, { insights: insights, title: "Evidence-backed signals", subtitle: "Driving the estimated savings", limit: 3 }), _jsx(ActionCallout, { recommendations: recommendations })] }));
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=Value.js.map
|