@codeledger/insight-ui 0.9.1 → 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.
@@ -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":"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"}
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
- export function PageHeader({ title, subtitle, scope, confidence, syntheticLabel, trend }) {
4
- 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: [confidence && _jsxs("span", { className: `confidence-badge ${confidence}`, children: ["Confidence: ", confidence] }), syntheticLabel && _jsx("span", { className: "synthetic-pill", children: syntheticLabel })] })] }));
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 MetricGrid({ cards }) {
7
- return (_jsx("div", { className: "metric-grid", children: cards.map((card) => (_jsx(MetricCard, { ...card }, card.label))) }));
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
- function MetricCard({ label, value, detail, metricKey, severity, format = 'percent' }) {
10
- return (_jsxs("article", { className: "metric-card", children: [_jsxs("header", { children: [_jsx("span", { className: "metric-label", children: label }), 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 })] }), metricKey && (_jsx("footer", { children: _jsx(EvidenceLink, { metric: metricKey }) }))] }));
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;AAWrD,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAmB;IACvG,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,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;AAWD,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAqC;IACrE,OAAO,CACL,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,CACP,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAwB;IACzG,OAAO,CACL,mBAAS,SAAS,EAAC,aAAa,aAC9B,6BACE,eAAM,SAAS,EAAC,cAAc,YAAE,KAAK,GAAQ,EAC5C,QAAQ,IAAI,eAAM,SAAS,EAAE,mBAAmB,QAAQ,EAAE,YAAG,QAAQ,GAAQ,IACvE,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,IACjB,EACL,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
+ {"version":3,"file":"CockpitLayout.js","sourceRoot":"","sources":["../../src/components/CockpitLayout.tsx"],"names":[],"mappings":"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"}
@@ -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;AA4BD,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,GAAG,YAAY,CAuGhE"}
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"}
@@ -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
- const cards = [
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":"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"}
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,qBAAqB,CAAC,KAAa,EAAE,WAAmB;IAC/D,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,+BAA+B,CAAC;IAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;IACpC,IAAI,GAAG,IAAI,EAAE;QAAE,OAAO,GAAG,GAAG,gEAAgE,CAAC;IAC7F,IAAI,GAAG,IAAI,EAAE;QAAE,OAAO,GAAG,GAAG,oEAAoE,CAAC;IACjG,OAAO,GAAG,GAAG,mDAAmD,CAAC;AACnE,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,8FAA8F;IAC9F,MAAM,UAAU,GAA2B;QACzC;YACE,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK;YAC3B,MAAM,EAAE,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC;YAC3E,SAAS,EAAE,YAAY;YACvB,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;SACvG;QACD;YACE,KAAK,EAAE,qBAAqB;YAC5B,KAAK,EAAE,GAAG,CAAC,kBAAkB,CAAC,KAAK;YACnC,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,kBAAkB,CAAC,WAAW,CAAC;YAC5F,SAAS,EAAE,oBAAoB;YAC/B,QAAQ,EAAE,GAAG,CAAC,kBAAkB,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;SACxH;KACF,CAAC;IACF,MAAM,WAAW,GAA2B;QAC1C;YACE,KAAK,EAAE,eAAe;YACtB,KAAK,EAAE,GAAG,CAAC,YAAY,CAAC,KAAK;YAC7B,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC;YACtG,SAAS,EAAE,cAAc;YACzB,QAAQ,EAAE,GAAG,CAAC,YAAY,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;SAC3G;QACD;YACE,KAAK,EAAE,iBAAiB;YACxB,KAAK,EAAE,GAAG,CAAC,cAAc,CAAC,KAAK;YAC/B,MAAM,EAAE,qBAAqB,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC;YACvF,SAAS,EAAE,0BAA0B;YACrC,QAAQ,EAAE,GAAG,CAAC,cAAc,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;SAC/G;KACF,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,WAAW,GAAG,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAEnC,OAAO,CACL,eAAK,SAAS,EAAC,iBAAiB,aAC9B,KAAC,UAAU,IACT,KAAK,EAAC,sBAAsB,EAC5B,QAAQ,EAAC,4DAA4D,EACrE,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,QAAQ,CAAC,WAAW,GACjC,EACD,CAAC,OAAO,IAAI,CACX,eAAK,SAAS,EAAC,6BAA6B,aAC1C,sBAAG,gEAAiD,GAAI,EACxD,4JAGI,EACJ,YAAG,SAAS,EAAC,cAAc,+HAEvB,IACA,CACP,EACD,KAAC,UAAU,IAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAC,eAAe,GAAG,EAC5D,KAAC,UAAU,IAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAC,gBAAgB,GAAG,EAC7D,OAAO,IAAI,CACV,mBAAS,SAAS,EAAC,OAAO,aACxB,cAAK,SAAS,EAAC,QAAQ,gEAAsD,EAC7E,YAAG,SAAS,EAAC,eAAe,4JAGxB,IACI,CACX,EACA,QAAQ,IAAI,CACX,mBAAS,SAAS,EAAC,OAAO,aACxB,cAAK,SAAS,EAAC,QAAQ,qDAAiC,EACxD,aAAG,SAAS,EAAC,eAAe,8BACZ,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,UAAU,CAAC,QAAI,GAAG,0BAC9C,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,OAAO,CAAC,QAAI,GAAG,iBAC3D,KAAK,CAAC,MAAM,aACtB,EACJ,cAAK,SAAS,EAAC,eAAe,YAC3B,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC/B,eAAsB,SAAS,EAAC,iBAAiB,aAC/C,cACE,SAAS,EAAC,0BAA0B,EACpC,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,IAAI,EAAE,EAC3D,KAAK,EAAE,gBAAgB,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,GACpD,EACF,cACE,SAAS,EAAC,6BAA6B,EACvC,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE,EACxD,KAAK,EAAE,eAAe,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAChD,KAVM,KAAK,CAAC,IAAI,CAWd,CACP,CAAC,GACE,EACN,eAAK,SAAS,EAAC,cAAc,aAC3B,gBAAM,SAAS,EAAC,aAAa,aAAC,eAAM,SAAS,EAAC,cAAc,GAAG,oBAAmB,EAClF,gBAAM,SAAS,EAAC,aAAa,aAAC,eAAM,SAAS,EAAC,iBAAiB,GAAG,2BAA0B,IACxF,IACE,CACX,EACD,KAAC,YAAY,IACX,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,CAAC,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,0BAA0B,CAAC,EAC9F,KAAK,EAAC,oBAAoB,EAC1B,QAAQ,EAAC,sCAAsC,EAC/C,KAAK,EAAE,CAAC,GACR,IACE,CACP,CAAC;AACJ,CAAC"}
@@ -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,CA2D/D"}
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"}
@@ -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: "Governance, policy, and redact signals", scope: value.scope, confidence: value.confidence, syntheticLabel: syntheticLabel }), _jsx(MetricGrid, { cards: cards }), _jsx(InsightStrip, { insights: insights, focusMetrics: ['writeSafetySuccessRate', 'integrityDrift', 'rejectRate'], 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." })] }));
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,wCAAwC,EACjD,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,cAAc,EAAE,cAAc,GAC9B,EACF,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,GAAI,EAC5B,KAAC,YAAY,IACX,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,CAAC,wBAAwB,EAAE,gBAAgB,EAAE,YAAY,CAAC,EACxE,KAAK,EAAC,gBAAgB,EACtB,QAAQ,EAAC,2BAA2B,EACpC,KAAK,EAAE,CAAC,GACR,EACF,KAAC,YAAY,IACX,SAAS,EAAE,QAAQ,CAAC,gBAAgB,EACpC,IAAI,EAAC,WAAW,EAChB,KAAK,EAAC,yBAAyB,EAC/B,WAAW,EAAC,kDAAkD,GAC9D,IACE,CACP,CAAC;AACJ,CAAC"}
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,CAgD/D"}
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"}
@@ -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,GAC9B,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
+ {"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,EAAE,MAAM,mBAAmB,CAAC;AAKzE,UAAU,KAAK;IACb,QAAQ,EAAE,eAAe,CAAC;CAC3B;AA2CD,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,GAAG,YAAY,CAkG9D"}
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"}
@@ -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: "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 })] })] }));
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,CAyD7D"}
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"}
@@ -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,GAC9B,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
+ {"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,CAiG3D"}
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"}
@@ -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