@aibvf/core 0.3.2 → 0.3.3
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/diagnose.d.ts +40 -0
- package/dist/diagnose.d.ts.map +1 -0
- package/dist/diagnose.js +217 -0
- package/dist/diagnose.js.map +1 -0
- package/dist/diagnose.test.d.ts +2 -0
- package/dist/diagnose.test.d.ts.map +1 -0
- package/dist/diagnose.test.js +93 -0
- package/dist/diagnose.test.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +44 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +24 -5
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ProcessSignals, BrainVerdict, Intervention, FunctionId, EvidenceMaturity } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* AI BVF Advisor Brain — process diagnosis.
|
|
4
|
+
*
|
|
5
|
+
* Deterministic. No network. No dependencies. Implements docs/brain-spec.md
|
|
6
|
+
* (the four models) calibrated by docs/evidence-table.md (the effectiveness
|
|
7
|
+
* bands). Given observed process signals it returns a BrainVerdict: the
|
|
8
|
+
* "this is too heavy → do X → save €Y → want me to get it done?" call, with
|
|
9
|
+
* confidence governed by how much was actually measured.
|
|
10
|
+
*
|
|
11
|
+
* Reuses the kernel's READINESS_CAPTURE so an org that can't absorb change
|
|
12
|
+
* doesn't get credited the gross saving.
|
|
13
|
+
*/
|
|
14
|
+
export declare const BRAIN_VERSION = "0.1";
|
|
15
|
+
interface Band {
|
|
16
|
+
lo: number;
|
|
17
|
+
hi: number;
|
|
18
|
+
maturity: EvidenceMaturity;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* DRAFT per-function medians for normalising cycle time + handoffs into a
|
|
22
|
+
* heaviness penalty. Pending calibration vs APQC process-cost distributions
|
|
23
|
+
* (evidence-table "honest gaps"). Directional, not audited.
|
|
24
|
+
*/
|
|
25
|
+
export declare const FUNCTION_MEDIANS: Record<FunctionId, {
|
|
26
|
+
cycle_days: number;
|
|
27
|
+
handoffs: number;
|
|
28
|
+
}>;
|
|
29
|
+
/**
|
|
30
|
+
* Per-(function × intervention) effectiveness bands, transcribed from
|
|
31
|
+
* docs/evidence-table.md. Conservative — haircut from cited headline
|
|
32
|
+
* benchmarks. Cells absent here fall back to CROSS_CUTTING.
|
|
33
|
+
*/
|
|
34
|
+
export declare const EVIDENCE: Partial<Record<FunctionId, Partial<Record<Intervention, Band>>>>;
|
|
35
|
+
/**
|
|
36
|
+
* Diagnose one process. Deterministic: same signals in, same verdict out.
|
|
37
|
+
*/
|
|
38
|
+
export declare function diagnoseProcess(s: ProcessSignals): BrainVerdict;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=diagnose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnose.d.ts","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EAAE,YAAY,EAAE,YAAY,EAC1C,UAAU,EAA6B,gBAAgB,EACxD,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,aAAa,QAAQ,CAAC;AAKnC,UAAU,IAAI;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAC;CAAE;AAEtE;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CASzF,CAAC;AAaF;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,CAsCrF,CAAC;AAwBF;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,cAAc,GAAG,YAAY,CAqH/D"}
|
package/dist/diagnose.js
ADDED
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { READINESS_CAPTURE } from './score.js';
|
|
2
|
+
/**
|
|
3
|
+
* AI BVF Advisor Brain — process diagnosis.
|
|
4
|
+
*
|
|
5
|
+
* Deterministic. No network. No dependencies. Implements docs/brain-spec.md
|
|
6
|
+
* (the four models) calibrated by docs/evidence-table.md (the effectiveness
|
|
7
|
+
* bands). Given observed process signals it returns a BrainVerdict: the
|
|
8
|
+
* "this is too heavy → do X → save €Y → want me to get it done?" call, with
|
|
9
|
+
* confidence governed by how much was actually measured.
|
|
10
|
+
*
|
|
11
|
+
* Reuses the kernel's READINESS_CAPTURE so an org that can't absorb change
|
|
12
|
+
* doesn't get credited the gross saving.
|
|
13
|
+
*/
|
|
14
|
+
export const BRAIN_VERSION = '0.1';
|
|
15
|
+
const clamp01 = (x) => Math.max(0, Math.min(1, x));
|
|
16
|
+
const round2 = (x) => Math.round(x * 100) / 100;
|
|
17
|
+
/**
|
|
18
|
+
* DRAFT per-function medians for normalising cycle time + handoffs into a
|
|
19
|
+
* heaviness penalty. Pending calibration vs APQC process-cost distributions
|
|
20
|
+
* (evidence-table "honest gaps"). Directional, not audited.
|
|
21
|
+
*/
|
|
22
|
+
export const FUNCTION_MEDIANS = {
|
|
23
|
+
finance: { cycle_days: 5, handoffs: 4 },
|
|
24
|
+
hr: { cycle_days: 7, handoffs: 4 },
|
|
25
|
+
sales: { cycle_days: 14, handoffs: 3 },
|
|
26
|
+
supply: { cycle_days: 10, handoffs: 5 },
|
|
27
|
+
cx: { cycle_days: 1, handoffs: 2 },
|
|
28
|
+
risk: { cycle_days: 7, handoffs: 4 },
|
|
29
|
+
it: { cycle_days: 2, handoffs: 3 },
|
|
30
|
+
rd: { cycle_days: 30, handoffs: 4 },
|
|
31
|
+
};
|
|
32
|
+
/** Heaviness factor weights (sum to 1.0). brain-spec §3.2. */
|
|
33
|
+
const HEAVINESS_WEIGHTS = { manual: 0.25, rework: 0.20, handoffs: 0.20, wait: 0.20, cycle: 0.15 };
|
|
34
|
+
/** Cross-cutting fallback bands (process-mining grounded). evidence-table. */
|
|
35
|
+
const CROSS_CUTTING = {
|
|
36
|
+
'Automate': { lo: 0.30, hi: 0.50, maturity: 'Medium' },
|
|
37
|
+
'Consolidate & re-sequence': { lo: 0.20, hi: 0.40, maturity: 'Medium' },
|
|
38
|
+
'Quality controls': { lo: 0.40, hi: 0.70, maturity: 'Medium' },
|
|
39
|
+
'Eliminate / insource': { lo: 0.60, hi: 0.90, maturity: 'Low' },
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Per-(function × intervention) effectiveness bands, transcribed from
|
|
43
|
+
* docs/evidence-table.md. Conservative — haircut from cited headline
|
|
44
|
+
* benchmarks. Cells absent here fall back to CROSS_CUTTING.
|
|
45
|
+
*/
|
|
46
|
+
export const EVIDENCE = {
|
|
47
|
+
finance: {
|
|
48
|
+
'Automate': { lo: 0.40, hi: 0.65, maturity: 'High' },
|
|
49
|
+
'Quality controls': { lo: 0.30, hi: 0.55, maturity: 'Medium' },
|
|
50
|
+
'Consolidate & re-sequence': { lo: 0.20, hi: 0.35, maturity: 'Medium' },
|
|
51
|
+
'Eliminate / insource': { lo: 0.50, hi: 0.80, maturity: 'Low' },
|
|
52
|
+
},
|
|
53
|
+
hr: {
|
|
54
|
+
'Automate': { lo: 0.35, hi: 0.60, maturity: 'High' },
|
|
55
|
+
'Consolidate & re-sequence': { lo: 0.20, hi: 0.35, maturity: 'Medium' },
|
|
56
|
+
'Quality controls': { lo: 0.25, hi: 0.45, maturity: 'Low' },
|
|
57
|
+
'Eliminate / insource': { lo: 0.50, hi: 0.80, maturity: 'Low' },
|
|
58
|
+
},
|
|
59
|
+
supply: {
|
|
60
|
+
'Automate': { lo: 0.25, hi: 0.45, maturity: 'Medium' },
|
|
61
|
+
'Quality controls': { lo: 0.30, hi: 0.55, maturity: 'Medium' },
|
|
62
|
+
'Consolidate & re-sequence': { lo: 0.20, hi: 0.40, maturity: 'Medium' },
|
|
63
|
+
'Eliminate / insource': { lo: 0.60, hi: 0.90, maturity: 'Low' },
|
|
64
|
+
},
|
|
65
|
+
cx: {
|
|
66
|
+
'Automate': { lo: 0.35, hi: 0.60, maturity: 'High' },
|
|
67
|
+
'Quality controls': { lo: 0.25, hi: 0.45, maturity: 'Medium' },
|
|
68
|
+
},
|
|
69
|
+
it: {
|
|
70
|
+
'Automate': { lo: 0.30, hi: 0.55, maturity: 'High' },
|
|
71
|
+
'Consolidate & re-sequence': { lo: 0.30, hi: 0.55, maturity: 'High' },
|
|
72
|
+
'Quality controls': { lo: 0.25, hi: 0.45, maturity: 'Medium' },
|
|
73
|
+
},
|
|
74
|
+
risk: {
|
|
75
|
+
'Quality controls': { lo: 0.30, hi: 0.50, maturity: 'Medium' },
|
|
76
|
+
'Automate': { lo: 0.30, hi: 0.55, maturity: 'Medium' },
|
|
77
|
+
},
|
|
78
|
+
sales: {
|
|
79
|
+
'Automate': { lo: 0.30, hi: 0.50, maturity: 'Low' },
|
|
80
|
+
},
|
|
81
|
+
rd: {
|
|
82
|
+
'Automate': { lo: 0.20, hi: 0.40, maturity: 'Medium' },
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
const MATURITY_EVIDENCE = { High: 0.9, Medium: 0.6, Low: 0.3 };
|
|
86
|
+
/** Low-volume threshold below which a heavy process is an Eliminate candidate. DRAFT. */
|
|
87
|
+
const ELIMINATE_VOLUME = 250;
|
|
88
|
+
function bandFor(fn, iv) {
|
|
89
|
+
return EVIDENCE[fn]?.[iv] ?? CROSS_CUTTING[iv];
|
|
90
|
+
}
|
|
91
|
+
function dominantFactor(d) {
|
|
92
|
+
return Object.keys(d).reduce((a, b) => (d[b] > d[a] ? b : a));
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Saturated signals (penalty near 0 or 1) mean we are extrapolating beyond the
|
|
96
|
+
* range the bands were calibrated on → lower fit. Mid-range signals → high fit.
|
|
97
|
+
*/
|
|
98
|
+
function benchmarkFit(penalties) {
|
|
99
|
+
const saturated = penalties.filter(p => p > 0.95 || p < 0.05).length;
|
|
100
|
+
return clamp01(1 - saturated / penalties.length);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Diagnose one process. Deterministic: same signals in, same verdict out.
|
|
104
|
+
*/
|
|
105
|
+
export function diagnoseProcess(s) {
|
|
106
|
+
const fn = s.function;
|
|
107
|
+
const med = FUNCTION_MEDIANS[fn];
|
|
108
|
+
if (!med)
|
|
109
|
+
throw new Error(`Unknown function: ${fn}`);
|
|
110
|
+
const readiness = s.readiness ?? 'traditional';
|
|
111
|
+
const cap = READINESS_CAPTURE[readiness];
|
|
112
|
+
if (!cap)
|
|
113
|
+
throw new Error(`Unknown readiness: ${readiness}`);
|
|
114
|
+
// ── 3.1 baseline cost ("your current spend") ──
|
|
115
|
+
const labour_cost = s.instances_per_year * s.fte_hours_per_instance * s.loaded_hourly_rate_eur;
|
|
116
|
+
const baseline_cost_eur = Math.round(labour_cost + s.direct_spend_eur);
|
|
117
|
+
if (baseline_cost_eur <= 0)
|
|
118
|
+
throw new Error('baseline_cost_eur must be positive — check signal inputs');
|
|
119
|
+
// ── 3.2 heaviness index + drag decomposition ──
|
|
120
|
+
const cycle_penalty = clamp01(s.cycle_time_days / (2 * med.cycle_days));
|
|
121
|
+
const handoff_penalty = clamp01(s.handoffs / (2 * med.handoffs));
|
|
122
|
+
const rework_penalty = clamp01(s.rework_rate);
|
|
123
|
+
const manual_penalty = clamp01(1 - s.automation_level);
|
|
124
|
+
const wait_penalty = clamp01(1 - s.touch_ratio);
|
|
125
|
+
const w = HEAVINESS_WEIGHTS;
|
|
126
|
+
const weighted = {
|
|
127
|
+
manual: manual_penalty * w.manual,
|
|
128
|
+
rework: rework_penalty * w.rework,
|
|
129
|
+
handoffs: handoff_penalty * w.handoffs,
|
|
130
|
+
wait: wait_penalty * w.wait,
|
|
131
|
+
cycle: cycle_penalty * w.cycle,
|
|
132
|
+
};
|
|
133
|
+
const heavySum = weighted.manual + weighted.rework + weighted.handoffs + weighted.wait + weighted.cycle;
|
|
134
|
+
const heaviness = Math.round(100 * heavySum); // weights sum to 1, penalties 0..1 → 0..100
|
|
135
|
+
const drag_decomposition = heavySum > 0 ? {
|
|
136
|
+
manual: round2(weighted.manual / heavySum),
|
|
137
|
+
handoffs: round2(weighted.handoffs / heavySum),
|
|
138
|
+
wait: round2(weighted.wait / heavySum),
|
|
139
|
+
rework: round2(weighted.rework / heavySum),
|
|
140
|
+
cycle: round2(weighted.cycle / heavySum),
|
|
141
|
+
} : { manual: 0, handoffs: 0, wait: 0, rework: 0, cycle: 0 };
|
|
142
|
+
// ── 3.3 intervention selector + addressable fraction ──
|
|
143
|
+
const labour_fraction = clamp01(labour_cost / ((labour_cost + s.direct_spend_eur) || 1));
|
|
144
|
+
let intervention;
|
|
145
|
+
let addressable;
|
|
146
|
+
if (s.instances_per_year < ELIMINATE_VOLUME && heaviness >= 50) {
|
|
147
|
+
intervention = 'Eliminate / insource';
|
|
148
|
+
addressable = 1.0;
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
const dominant = dominantFactor(drag_decomposition);
|
|
152
|
+
if (dominant === 'manual') {
|
|
153
|
+
intervention = 'Automate';
|
|
154
|
+
addressable = labour_fraction;
|
|
155
|
+
}
|
|
156
|
+
else if (dominant === 'rework') {
|
|
157
|
+
intervention = 'Quality controls';
|
|
158
|
+
addressable = clamp01(s.rework_rate);
|
|
159
|
+
}
|
|
160
|
+
else { // handoffs | wait | cycle
|
|
161
|
+
intervention = 'Consolidate & re-sequence';
|
|
162
|
+
addressable = labour_fraction;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
const band = bandFor(fn, intervention);
|
|
166
|
+
// ── 3.4 savings quantifier ──
|
|
167
|
+
const gross_low = baseline_cost_eur * addressable * band.lo;
|
|
168
|
+
const gross_high = baseline_cost_eur * addressable * band.hi;
|
|
169
|
+
const net_saving_low_eur = Math.round(gross_low * cap.low);
|
|
170
|
+
const net_saving_high_eur = Math.round(gross_high * cap.high);
|
|
171
|
+
const eff_mid = (band.lo + band.hi) / 2;
|
|
172
|
+
const efficiency_gain_pct = Math.round(eff_mid * addressable * 100);
|
|
173
|
+
// ── §4 decision confidence ──
|
|
174
|
+
const signal_completeness = clamp01(s.signal_completeness ?? 0.7);
|
|
175
|
+
const intervention_evidence = MATURITY_EVIDENCE[band.maturity];
|
|
176
|
+
const benchmark_fit = benchmarkFit([cycle_penalty, handoff_penalty, rework_penalty, manual_penalty, wait_penalty]);
|
|
177
|
+
const decision_confidence = round2(0.5 * signal_completeness + 0.4 * intervention_evidence + 0.1 * benchmark_fit);
|
|
178
|
+
// ── §4 verdict (on the intervention) ──
|
|
179
|
+
const net_mid = (net_saving_low_eur + net_saving_high_eur) / 2;
|
|
180
|
+
const saving_ratio = net_mid / baseline_cost_eur;
|
|
181
|
+
let verdict;
|
|
182
|
+
if (heaviness < 25 || saving_ratio < 0.02) {
|
|
183
|
+
verdict = 'Stop';
|
|
184
|
+
}
|
|
185
|
+
else if (saving_ratio >= 0.05 && decision_confidence >= 0.6) {
|
|
186
|
+
verdict = 'Accelerate';
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
verdict = 'Fix';
|
|
190
|
+
}
|
|
191
|
+
const assumptions = [
|
|
192
|
+
`loaded rate €${s.loaded_hourly_rate_eur}/hr`,
|
|
193
|
+
`${readiness} capture band ${cap.low}–${cap.high}`,
|
|
194
|
+
`evidence ${band.maturity} (effectiveness ${band.lo}–${band.hi})`,
|
|
195
|
+
`signal completeness ${signal_completeness}`,
|
|
196
|
+
'heaviness bands DRAFT — pending APQC calibration',
|
|
197
|
+
];
|
|
198
|
+
return {
|
|
199
|
+
process_id: s.process_id,
|
|
200
|
+
function: fn,
|
|
201
|
+
baseline_cost_eur,
|
|
202
|
+
heaviness,
|
|
203
|
+
drag_decomposition,
|
|
204
|
+
intervention,
|
|
205
|
+
net_saving_low_eur,
|
|
206
|
+
net_saving_high_eur,
|
|
207
|
+
efficiency_gain_pct,
|
|
208
|
+
verdict,
|
|
209
|
+
decision_confidence,
|
|
210
|
+
assumptions,
|
|
211
|
+
offer_to_execute: verdict === 'Accelerate',
|
|
212
|
+
evidence_maturity: band.maturity,
|
|
213
|
+
brain_version: BRAIN_VERSION,
|
|
214
|
+
disclaimer: 'Directional decision aid, not an audited figure.',
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=diagnose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnose.test.d.ts","sourceRoot":"","sources":["../src/diagnose.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { test } from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { diagnoseProcess } from './diagnose.js';
|
|
4
|
+
// A heavy, mostly-manual finance process: high volume, low automation,
|
|
5
|
+
// real rework, fully measured.
|
|
6
|
+
const heavyFinance = {
|
|
7
|
+
process_id: 'fin-ap',
|
|
8
|
+
function: 'finance',
|
|
9
|
+
instances_per_year: 50_000,
|
|
10
|
+
fte_hours_per_instance: 0.5,
|
|
11
|
+
loaded_hourly_rate_eur: 60,
|
|
12
|
+
cycle_time_days: 12,
|
|
13
|
+
touch_ratio: 0.3,
|
|
14
|
+
handoffs: 6,
|
|
15
|
+
rework_rate: 0.25,
|
|
16
|
+
automation_level: 0.1,
|
|
17
|
+
direct_spend_eur: 200_000,
|
|
18
|
+
signal_completeness: 0.9,
|
|
19
|
+
readiness: 'traditional',
|
|
20
|
+
};
|
|
21
|
+
test('baseline cost = labour + direct spend', () => {
|
|
22
|
+
const v = diagnoseProcess(heavyFinance);
|
|
23
|
+
// 50000 * 0.5 * 60 = 1_500_000 + 200_000 = 1_700_000
|
|
24
|
+
assert.equal(v.baseline_cost_eur, 1_700_000);
|
|
25
|
+
});
|
|
26
|
+
test('deterministic: same input → identical output', () => {
|
|
27
|
+
assert.deepEqual(diagnoseProcess(heavyFinance), diagnoseProcess(heavyFinance));
|
|
28
|
+
});
|
|
29
|
+
test('heavy manual finance process → Automate + Accelerate + offer', () => {
|
|
30
|
+
const v = diagnoseProcess(heavyFinance);
|
|
31
|
+
assert.equal(v.intervention, 'Automate');
|
|
32
|
+
assert.equal(v.verdict, 'Accelerate');
|
|
33
|
+
assert.equal(v.offer_to_execute, true);
|
|
34
|
+
assert.equal(v.evidence_maturity, 'High'); // finance×Automate
|
|
35
|
+
});
|
|
36
|
+
test('bounds: heaviness 0..100, confidence 0..1, savings ordered', () => {
|
|
37
|
+
const v = diagnoseProcess(heavyFinance);
|
|
38
|
+
assert.ok(v.heaviness >= 0 && v.heaviness <= 100);
|
|
39
|
+
assert.ok(v.decision_confidence >= 0 && v.decision_confidence <= 1);
|
|
40
|
+
assert.ok(v.net_saving_low_eur <= v.net_saving_high_eur);
|
|
41
|
+
const sum = Object.values(v.drag_decomposition).reduce((a, b) => a + b, 0);
|
|
42
|
+
assert.ok(Math.abs(sum - 1) < 0.02); // decomposition normalised
|
|
43
|
+
});
|
|
44
|
+
test('light process → low heaviness → Stop', () => {
|
|
45
|
+
const light = {
|
|
46
|
+
...heavyFinance,
|
|
47
|
+
process_id: 'fin-light',
|
|
48
|
+
automation_level: 0.95,
|
|
49
|
+
rework_rate: 0.01,
|
|
50
|
+
handoffs: 1,
|
|
51
|
+
touch_ratio: 0.95,
|
|
52
|
+
cycle_time_days: 1,
|
|
53
|
+
};
|
|
54
|
+
const v = diagnoseProcess(light);
|
|
55
|
+
assert.ok(v.heaviness < 25, `expected light, got heaviness ${v.heaviness}`);
|
|
56
|
+
assert.equal(v.verdict, 'Stop');
|
|
57
|
+
});
|
|
58
|
+
test('low signal completeness drags confidence down', () => {
|
|
59
|
+
const blind = { ...heavyFinance, signal_completeness: 0.2 };
|
|
60
|
+
const seen = diagnoseProcess(heavyFinance).decision_confidence;
|
|
61
|
+
const unseen = diagnoseProcess(blind).decision_confidence;
|
|
62
|
+
assert.ok(unseen < seen, `expected ${unseen} < ${seen}`);
|
|
63
|
+
});
|
|
64
|
+
test('evidence fallback: rework-dominant sales uses cross-cutting Quality band', () => {
|
|
65
|
+
const sales = {
|
|
66
|
+
process_id: 'sales-rework',
|
|
67
|
+
function: 'sales',
|
|
68
|
+
instances_per_year: 10_000,
|
|
69
|
+
fte_hours_per_instance: 1,
|
|
70
|
+
loaded_hourly_rate_eur: 70,
|
|
71
|
+
cycle_time_days: 5,
|
|
72
|
+
touch_ratio: 0.8,
|
|
73
|
+
handoffs: 2,
|
|
74
|
+
rework_rate: 0.9, // rework dominates → Quality controls
|
|
75
|
+
automation_level: 0.8,
|
|
76
|
+
direct_spend_eur: 0,
|
|
77
|
+
signal_completeness: 0.8,
|
|
78
|
+
};
|
|
79
|
+
const v = diagnoseProcess(sales);
|
|
80
|
+
assert.equal(v.intervention, 'Quality controls');
|
|
81
|
+
// sales has no Quality cell → cross-cutting Medium
|
|
82
|
+
assert.equal(v.evidence_maturity, 'Medium');
|
|
83
|
+
});
|
|
84
|
+
test('low-volume heavy process → Eliminate / insource', () => {
|
|
85
|
+
const niche = {
|
|
86
|
+
...heavyFinance,
|
|
87
|
+
process_id: 'fin-niche',
|
|
88
|
+
instances_per_year: 100, // below ELIMINATE_VOLUME
|
|
89
|
+
};
|
|
90
|
+
const v = diagnoseProcess(niche);
|
|
91
|
+
assert.equal(v.intervention, 'Eliminate / insource');
|
|
92
|
+
});
|
|
93
|
+
//# sourceMappingURL=diagnose.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnose.test.js","sourceRoot":"","sources":["../src/diagnose.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { validate } from './validate.js';
|
|
2
2
|
export { score, recommendImprovements, calculatePaceLayerDrag, BASE_RATES, IND_MULT, TIER_ADJ, READINESS_CAPTURE, PACE_DRAG_RATE, } from './score.js';
|
|
3
|
+
export { diagnoseProcess, BRAIN_VERSION, EVIDENCE, FUNCTION_MEDIANS, } from './diagnose.js';
|
|
3
4
|
export { bvfSchema } from './schema.js';
|
|
4
5
|
export { INDUSTRIES, FUNCTIONS, AI_TIERS, READINESS, INDUSTRY_LABEL, FUNCTION_LABEL, TIER_LABEL } from './taxonomy.js';
|
|
5
6
|
export type * from './types.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,KAAK,EACL,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,cAAc,GAClE,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACvH,mBAAmB,YAAY,CAAC;AAEhC,eAAO,MAAM,WAAW,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,KAAK,EACL,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,cAAc,GAClE,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,eAAe,EACf,aAAa,EAAE,QAAQ,EAAE,gBAAgB,GAC1C,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACvH,mBAAmB,YAAY,CAAC;AAEhC,eAAO,MAAM,WAAW,QAAQ,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { validate } from './validate.js';
|
|
2
2
|
export { score, recommendImprovements, calculatePaceLayerDrag, BASE_RATES, IND_MULT, TIER_ADJ, READINESS_CAPTURE, PACE_DRAG_RATE, } from './score.js';
|
|
3
|
+
export { diagnoseProcess, BRAIN_VERSION, EVIDENCE, FUNCTION_MEDIANS, } from './diagnose.js';
|
|
3
4
|
export { bvfSchema } from './schema.js';
|
|
4
5
|
export { INDUSTRIES, FUNCTIONS, AI_TIERS, READINESS, INDUSTRY_LABEL, FUNCTION_LABEL, TIER_LABEL } from './taxonomy.js';
|
|
5
6
|
export const BVF_VERSION = '1.0';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,KAAK,EACL,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,cAAc,GAClE,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGvH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,KAAK,EACL,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,cAAc,GAClE,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,eAAe,EACf,aAAa,EAAE,QAAQ,EAAE,gBAAgB,GAC1C,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGvH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -111,4 +111,48 @@ export interface ValidationResult {
|
|
|
111
111
|
valid: boolean;
|
|
112
112
|
errors: ValidationError[];
|
|
113
113
|
}
|
|
114
|
+
export type Intervention = 'Automate' | 'Consolidate & re-sequence' | 'Quality controls' | 'Eliminate / insource';
|
|
115
|
+
export type EvidenceMaturity = 'High' | 'Medium' | 'Low';
|
|
116
|
+
/** Source-agnostic process signals the agent extracts from digital exhaust. */
|
|
117
|
+
export interface ProcessSignals {
|
|
118
|
+
process_id: string;
|
|
119
|
+
function: FunctionId;
|
|
120
|
+
instances_per_year: number;
|
|
121
|
+
fte_hours_per_instance: number;
|
|
122
|
+
loaded_hourly_rate_eur: number;
|
|
123
|
+
cycle_time_days: number;
|
|
124
|
+
touch_ratio: number;
|
|
125
|
+
handoffs: number;
|
|
126
|
+
rework_rate: number;
|
|
127
|
+
automation_level: number;
|
|
128
|
+
direct_spend_eur: number;
|
|
129
|
+
signal_completeness?: number;
|
|
130
|
+
readiness?: Readiness;
|
|
131
|
+
}
|
|
132
|
+
export interface DragDecomposition {
|
|
133
|
+
manual: number;
|
|
134
|
+
handoffs: number;
|
|
135
|
+
wait: number;
|
|
136
|
+
rework: number;
|
|
137
|
+
cycle: number;
|
|
138
|
+
}
|
|
139
|
+
/** The Brain's verdict on one process — both the proposal and the one-pager. */
|
|
140
|
+
export interface BrainVerdict {
|
|
141
|
+
process_id: string;
|
|
142
|
+
function: FunctionId;
|
|
143
|
+
baseline_cost_eur: number;
|
|
144
|
+
heaviness: number;
|
|
145
|
+
drag_decomposition: DragDecomposition;
|
|
146
|
+
intervention: Intervention;
|
|
147
|
+
net_saving_low_eur: number;
|
|
148
|
+
net_saving_high_eur: number;
|
|
149
|
+
efficiency_gain_pct: number;
|
|
150
|
+
verdict: Classification;
|
|
151
|
+
decision_confidence: number;
|
|
152
|
+
assumptions: string[];
|
|
153
|
+
offer_to_execute: boolean;
|
|
154
|
+
evidence_maturity: EvidenceMaturity;
|
|
155
|
+
brain_version: string;
|
|
156
|
+
disclaimer: string;
|
|
157
|
+
}
|
|
114
158
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aibvf/core",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.3",
|
|
4
4
|
"description": "AI BVF — open protocol for scoring AI investments. Validator and scoring engine.",
|
|
5
|
-
"keywords": [
|
|
5
|
+
"keywords": [
|
|
6
|
+
"ai",
|
|
7
|
+
"bvf",
|
|
8
|
+
"ai-governance",
|
|
9
|
+
"enterprise-ai",
|
|
10
|
+
"ai-scoring",
|
|
11
|
+
"ai-roi",
|
|
12
|
+
"eu-ai-act",
|
|
13
|
+
"standards"
|
|
14
|
+
],
|
|
6
15
|
"homepage": "https://www.aibvf.com/protocol",
|
|
7
16
|
"repository": "github:Bahamas1717/ai-bvf",
|
|
8
17
|
"license": "MIT",
|
|
@@ -11,10 +20,20 @@
|
|
|
11
20
|
"main": "dist/index.js",
|
|
12
21
|
"types": "dist/index.d.ts",
|
|
13
22
|
"exports": {
|
|
14
|
-
".": {
|
|
15
|
-
|
|
23
|
+
".": {
|
|
24
|
+
"import": "./dist/index.js",
|
|
25
|
+
"types": "./dist/index.d.ts"
|
|
26
|
+
},
|
|
27
|
+
"./schema": {
|
|
28
|
+
"import": "./dist/schema.js",
|
|
29
|
+
"types": "./dist/schema.d.ts"
|
|
30
|
+
}
|
|
16
31
|
},
|
|
17
|
-
"files": [
|
|
32
|
+
"files": [
|
|
33
|
+
"dist",
|
|
34
|
+
"README.md",
|
|
35
|
+
"LICENSE"
|
|
36
|
+
],
|
|
18
37
|
"scripts": {
|
|
19
38
|
"build": "tsc",
|
|
20
39
|
"test": "node --test dist/*.test.js"
|