@aibvf/core 0.3.4 → 0.5.0
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/changePlan.d.ts +22 -0
- package/dist/changePlan.d.ts.map +1 -0
- package/dist/changePlan.js +353 -0
- package/dist/changePlan.js.map +1 -0
- package/dist/changePlan.test.d.ts +2 -0
- package/dist/changePlan.test.d.ts.map +1 -0
- package/dist/changePlan.test.js +108 -0
- package/dist/changePlan.test.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/pillarsOptional.test.d.ts +2 -0
- package/dist/pillarsOptional.test.d.ts.map +1 -0
- package/dist/pillarsOptional.test.js +75 -0
- package/dist/pillarsOptional.test.js.map +1 -0
- package/dist/score.d.ts +29 -1
- package/dist/score.d.ts.map +1 -1
- package/dist/score.js +103 -14
- package/dist/score.js.map +1 -1
- package/dist/taxonomy.d.ts +7 -0
- package/dist/taxonomy.d.ts.map +1 -1
- package/dist/taxonomy.js +7 -0
- package/dist/taxonomy.js.map +1 -1
- package/dist/types.d.ts +77 -12
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The change-leader layer of the AI BVF.
|
|
3
|
+
*
|
|
4
|
+
* A Fix verdict without a route to Go is a Stop wearing a nicer word. This
|
|
5
|
+
* module turns a Fix or Stop into a specific, sequenced change plan: it names
|
|
6
|
+
* the one binding constraint, places the initiative between Go and Stop,
|
|
7
|
+
* selects named plays matched to the failing pillar AND the organisational
|
|
8
|
+
* context (readiness, tier, function, industry, and optional caller-supplied
|
|
9
|
+
* diagnostics), prices the cost of waiting from the pace-layer drag model,
|
|
10
|
+
* and sets a re-score gate so Fix is a decision with a deadline rather than
|
|
11
|
+
* a limbo state.
|
|
12
|
+
*
|
|
13
|
+
* Every play works at two altitudes, the organisation (Kotter) and the
|
|
14
|
+
* person (Prosci ADKAR), because a coalition without individual adoption
|
|
15
|
+
* dies quietly, and trained individuals without a coalition drift back.
|
|
16
|
+
* When the honest escalation from a play is Stop, the play says so.
|
|
17
|
+
*
|
|
18
|
+
* Deterministic, like everything in the engine: same inputs, same plan.
|
|
19
|
+
*/
|
|
20
|
+
import type { RecommendInput, Recommendation, ChangePlan, PillarScores } from './types.js';
|
|
21
|
+
export declare function buildChangePlan(input: RecommendInput, resolved: PillarScores, recommendations: Recommendation[], feasible: boolean): ChangePlan;
|
|
22
|
+
//# sourceMappingURL=changePlan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changePlan.d.ts","sourceRoot":"","sources":["../src/changePlan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EACV,cAAc,EAAE,cAAc,EAAE,UAAU,EAAc,YAAY,EACrE,MAAM,YAAY,CAAC;AAuRpB,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,YAAY,EACtB,eAAe,EAAE,cAAc,EAAE,EACjC,QAAQ,EAAE,OAAO,GAChB,UAAU,CAuFZ"}
|
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
import { PACE_DRAG_RATE } from './score.js';
|
|
2
|
+
import { REGULATED_FUNCTIONS, REGULATED_INDUSTRIES } from './taxonomy.js';
|
|
3
|
+
const ACCELERATE_FLOOR = 60;
|
|
4
|
+
const GOV_CEILING = 40;
|
|
5
|
+
// ── play builders ──────────────────────────────────────────────────────────
|
|
6
|
+
function coalitionFirst(readiness, provisional) {
|
|
7
|
+
return {
|
|
8
|
+
id: 'coalition-first',
|
|
9
|
+
pillar: 'change_enablement',
|
|
10
|
+
diagnosis: `The change-enablement gap here reads as desire, not budget. Readiness is ${readiness}, which means functional walls, hand-off habits, and people who have not yet been given a reason to want this. Funding adoption before people want the change buys training nobody attends.`,
|
|
11
|
+
org_move: {
|
|
12
|
+
method: 'Kotter steps 1 and 2, urgency and guiding coalition',
|
|
13
|
+
action: 'Write the one-page case for change that answers why now and why us, then name a cross-functional sponsor coalition with a single executive chair who owns the outcome by name.',
|
|
14
|
+
},
|
|
15
|
+
person_move: {
|
|
16
|
+
method: 'ADKAR Awareness and Desire',
|
|
17
|
+
action: 'Run listening sessions with the people whose daily work changes, surface the top three reasons a reasonable person would resist, and answer them in the open before any tool lands.',
|
|
18
|
+
},
|
|
19
|
+
steps: [
|
|
20
|
+
'Publish the one-page case for change: why now, why us, what changes for whom.',
|
|
21
|
+
'Name the sponsor coalition and its executive chair, in writing.',
|
|
22
|
+
'Hold listening sessions and publish the top three resistance points with honest answers.',
|
|
23
|
+
'Size and fund the change budget at 10 to 15 percent of initiative spend, after desire exists, not before.',
|
|
24
|
+
'Baseline adoption metrics before the build starts, so progress is measurable from day one.',
|
|
25
|
+
],
|
|
26
|
+
diagnostic_questions: [
|
|
27
|
+
'Who gains power, budget or status if this works?',
|
|
28
|
+
'Who loses power, budget or status if this works?',
|
|
29
|
+
'Who is likely to agree in the room and quietly block the change later?',
|
|
30
|
+
'What would make a good person resist this change for rational reasons?',
|
|
31
|
+
],
|
|
32
|
+
owner: 'Executive sponsor, a named individual who chairs the coalition',
|
|
33
|
+
timeline_weeks: [4, 6],
|
|
34
|
+
stop_condition: 'If no executive will chair the coalition after two direct asks, the initiative has a sponsorship vacuum, and the honest verdict is Stop until a sponsor exists.',
|
|
35
|
+
provisional,
|
|
36
|
+
source: 'Kotter, Leading Change (steps 1 to 2); Prosci ADKAR (Awareness, Desire); Prosci change benchmark',
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function ownerAndCapability(provisional) {
|
|
40
|
+
return {
|
|
41
|
+
id: 'owner-and-capability',
|
|
42
|
+
pillar: 'change_enablement',
|
|
43
|
+
diagnosis: 'The organisation can absorb change, this specific capability is simply unresourced. That is a knowledge and ability gap, not a resistance problem, and coalition-building theatre would waste the goodwill that already exists.',
|
|
44
|
+
org_move: {
|
|
45
|
+
method: 'Kotter step 5, remove barriers and empower action',
|
|
46
|
+
action: 'Name a single accountable product owner with real capacity in writing, and fund enablement as a budget line rather than an assumption.',
|
|
47
|
+
},
|
|
48
|
+
person_move: {
|
|
49
|
+
method: 'ADKAR Knowledge, Ability and Reinforcement',
|
|
50
|
+
action: 'Run role-based skilling on the exact workflows that change, with practice time inside work hours and a named floor-level coach per affected team.',
|
|
51
|
+
},
|
|
52
|
+
steps: [
|
|
53
|
+
'Name the accountable owner, with capacity confirmed in writing.',
|
|
54
|
+
'Map the skills gap per affected role against the workflows that actually change.',
|
|
55
|
+
'Deliver role-based training with protected practice windows.',
|
|
56
|
+
'Wire adoption telemetry from day one, measuring usage rather than attendance.',
|
|
57
|
+
'Run a reinforcement check at 30 days and close the gaps it finds.',
|
|
58
|
+
],
|
|
59
|
+
diagnostic_questions: [
|
|
60
|
+
'What skill does the workforce need before the tool can be trusted?',
|
|
61
|
+
'What behaviour has to change before the system can create value?',
|
|
62
|
+
'How will we know people have adopted the new way of working after the training has finished?',
|
|
63
|
+
],
|
|
64
|
+
owner: 'Accountable product owner',
|
|
65
|
+
timeline_weeks: [3, 5],
|
|
66
|
+
provisional,
|
|
67
|
+
source: 'Prosci ADKAR (Knowledge, Ability, Reinforcement); Kotter step 5',
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function regulatoryRemediation(provisional) {
|
|
71
|
+
return {
|
|
72
|
+
id: 'regulatory-remediation',
|
|
73
|
+
pillar: 'governance_risk',
|
|
74
|
+
diagnosis: 'The governance exposure here is regulatory, so no amount of change budget or communication reduces it. The remediation is sequence and design, done before the legal review at the end rather than during an incident.',
|
|
75
|
+
org_move: {
|
|
76
|
+
method: 'Pre-deployment regulatory sequence',
|
|
77
|
+
action: 'Classify the system under the EU AI Act, build the data lineage and model-risk file, run the DPIA where personal data is in scope, and keep a decision log that answers who owns the decision when it is wrong.',
|
|
78
|
+
},
|
|
79
|
+
person_move: {
|
|
80
|
+
method: 'Human-in-the-loop accountability',
|
|
81
|
+
action: 'Put a named human in the loop on every decision with legal or significant effect on a person, with authority to override and a script for when they should, so accountability sits with someone a regulator can name.',
|
|
82
|
+
},
|
|
83
|
+
steps: [
|
|
84
|
+
'Classify the system under the EU AI Act and record the reasoning.',
|
|
85
|
+
'Map every decision with legal or significant effect on people, the GDPR Article 22 surface.',
|
|
86
|
+
'Design the human-in-the-loop role with genuine override authority.',
|
|
87
|
+
'Complete the data lineage and model-risk documentation.',
|
|
88
|
+
'Run the DPIA, remediate the findings, then re-score.',
|
|
89
|
+
],
|
|
90
|
+
diagnostic_questions: [
|
|
91
|
+
'What is the AI allowed to decide?',
|
|
92
|
+
'Who owns the decision when it is wrong?',
|
|
93
|
+
'What evidence would we need to defend this decision six months from now?',
|
|
94
|
+
],
|
|
95
|
+
owner: 'Risk or compliance executive, jointly with the initiative owner',
|
|
96
|
+
timeline_weeks: [6, 10],
|
|
97
|
+
stop_condition: 'If the value case only works with full autonomy that regulation requires a human inside, this is not a Fix, it is a Stop, and finding that out now is the cheapest outcome available.',
|
|
98
|
+
provisional,
|
|
99
|
+
source: 'EU AI Act (Regulation 2024/1689); GDPR Article 22; DORA where in scope',
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function trustGuardrails() {
|
|
103
|
+
return {
|
|
104
|
+
id: 'trust-guardrails',
|
|
105
|
+
pillar: 'governance_risk',
|
|
106
|
+
diagnosis: 'The exposure is reputational, which means the risk lives in how failure looks and lands rather than in a statute. Controls that only report that governance exists will not help; the fix is guardrails people can see.',
|
|
107
|
+
org_move: {
|
|
108
|
+
method: 'Visible-failure red team',
|
|
109
|
+
action: 'Red-team the visible failure modes, publish the escalation path, and decide in advance what the organisation says and does on the worst day.',
|
|
110
|
+
},
|
|
111
|
+
person_move: {
|
|
112
|
+
method: 'ADKAR Reinforcement at the front line',
|
|
113
|
+
action: 'Give frontline staff the disclosure language and the escalation script, so the people closest to customers are never improvising on the day something goes wrong.',
|
|
114
|
+
},
|
|
115
|
+
steps: [
|
|
116
|
+
'Red-team the top failure modes as they would appear to a customer or a journalist.',
|
|
117
|
+
'Publish the disclosure and escalation path internally.',
|
|
118
|
+
'Script and train the frontline response.',
|
|
119
|
+
'Put monitoring on the failure modes themselves, not just system health.',
|
|
120
|
+
'Agree the worst-day communications plan before launch, then re-score.',
|
|
121
|
+
],
|
|
122
|
+
diagnostic_questions: [
|
|
123
|
+
'Which control is genuinely needed because of risk, and which control exists because trust is missing?',
|
|
124
|
+
'What does the executive team need to know before they can sign the release with confidence?',
|
|
125
|
+
],
|
|
126
|
+
owner: 'Initiative owner with the communications lead',
|
|
127
|
+
timeline_weeks: [3, 5],
|
|
128
|
+
provisional: false,
|
|
129
|
+
source: 'Operational resilience practice; Prosci ADKAR (Reinforcement)',
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
function governanceReview(provisional) {
|
|
133
|
+
return {
|
|
134
|
+
id: 'governance-review',
|
|
135
|
+
pillar: 'governance_risk',
|
|
136
|
+
diagnosis: 'The exposure reads operational: the risk is the system failing quietly inside a process rather than a regulator or a headline. The gap is control design, not communication.',
|
|
137
|
+
org_move: {
|
|
138
|
+
method: 'Proportionate pre-deployment review',
|
|
139
|
+
action: 'Run a governance review scaled to the actual risk: decision rights, failure detection, rollback, and the smallest safe version that still proves value.',
|
|
140
|
+
},
|
|
141
|
+
person_move: {
|
|
142
|
+
method: 'Named decision ownership',
|
|
143
|
+
action: 'Name the person who owns the decision when the system is wrong, and give them the authority and the information to catch it early.',
|
|
144
|
+
},
|
|
145
|
+
steps: [
|
|
146
|
+
'Map decision rights: what the AI touches, what it decides, who overrides.',
|
|
147
|
+
'Design failure detection and a rollback path.',
|
|
148
|
+
'Scope the smallest safe version that still proves something meaningful.',
|
|
149
|
+
'Review, remediate, then re-score.',
|
|
150
|
+
],
|
|
151
|
+
diagnostic_questions: [
|
|
152
|
+
'What governance helps the initiative reach production safely, and what governance only reports that governance exists?',
|
|
153
|
+
'What is the smallest safe version of this idea that still proves something meaningful?',
|
|
154
|
+
],
|
|
155
|
+
owner: 'Initiative owner with a risk partner',
|
|
156
|
+
timeline_weeks: [2, 4],
|
|
157
|
+
provisional,
|
|
158
|
+
source: 'AI BVF governance module',
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
function valueRescope(fr) {
|
|
162
|
+
const thin = fr <= 20;
|
|
163
|
+
return {
|
|
164
|
+
id: 'value-rescope',
|
|
165
|
+
pillar: 'financial_return',
|
|
166
|
+
diagnosis: thin
|
|
167
|
+
? 'Financial return this thin fails the initiative on its own, whatever the other pillars say. The honest move is subtractive: find the slice that pays, or stop.'
|
|
168
|
+
: 'The case is thin because the capture rate or the scope is doing wishful work. The fix is subtractive: strengthen the case by cutting, not by adding.',
|
|
169
|
+
org_move: {
|
|
170
|
+
method: 'Value engineering, Stop-first',
|
|
171
|
+
action: 'Rank the scope by modelled EUR contribution, cut the features dragging the case, and rebuild the business case on the highest-value slice with an honest capture rate.',
|
|
172
|
+
},
|
|
173
|
+
person_move: {
|
|
174
|
+
method: 'Credible small win',
|
|
175
|
+
action: 'Take the smaller, sharper promise to the people affected; a small win they can see builds the desire the bigger case will need later.',
|
|
176
|
+
},
|
|
177
|
+
steps: [
|
|
178
|
+
'Rank every scope element by modelled value contribution.',
|
|
179
|
+
'Cut the bottom half of the scope, deliberately and in writing.',
|
|
180
|
+
'Re-model the slice with benchmark rates and an honest capture rate.',
|
|
181
|
+
'Re-score the slice on its own numbers.',
|
|
182
|
+
'Scale only after the slice has paid.',
|
|
183
|
+
],
|
|
184
|
+
diagnostic_questions: [
|
|
185
|
+
'What is the unit of value here, a saved hour, a better decision, less risk, more revenue, faster cycle time or stronger trust?',
|
|
186
|
+
'What is the smallest safe version of this idea that still proves something meaningful?',
|
|
187
|
+
],
|
|
188
|
+
owner: 'Initiative owner with a finance partner',
|
|
189
|
+
timeline_weeks: [2, 4],
|
|
190
|
+
stop_condition: 'If no slice clears on its own numbers, the initiative does not have a thin case, it has no case, and the verdict is Stop.',
|
|
191
|
+
provisional: false,
|
|
192
|
+
source: 'AI BVF benchmark rates; McKinsey State of AI',
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
function boardAnchor() {
|
|
196
|
+
return {
|
|
197
|
+
id: 'board-anchor',
|
|
198
|
+
pillar: 'strategic_alignment',
|
|
199
|
+
diagnosis: 'Nobody at board level would miss this if it stopped tomorrow, which is what a low strategic alignment score means in practice.',
|
|
200
|
+
org_move: {
|
|
201
|
+
method: 'Kotter steps 1 and 3, urgency anchored in a real outcome',
|
|
202
|
+
action: 'Anchor the initiative to one named board-level KPI with a written success metric, an owner, and a timeframe, or accept that it is a pet project.',
|
|
203
|
+
},
|
|
204
|
+
person_move: {
|
|
205
|
+
method: 'Sponsor conviction test',
|
|
206
|
+
action: 'The sponsor explains to their own leadership why this initiative carries their name; if they will not make that argument, that is the answer.',
|
|
207
|
+
},
|
|
208
|
+
steps: [
|
|
209
|
+
'List the board-level KPIs this initiative could plausibly move.',
|
|
210
|
+
'Pick one, write the success metric and the timeframe.',
|
|
211
|
+
'Have the sponsor sign it, by name.',
|
|
212
|
+
'Re-score with the anchor in place.',
|
|
213
|
+
],
|
|
214
|
+
diagnostic_questions: [
|
|
215
|
+
'Which board outcome moves if this works, and who reports that number today?',
|
|
216
|
+
'What do people need to believe before they will back this properly?',
|
|
217
|
+
],
|
|
218
|
+
owner: 'Executive sponsor',
|
|
219
|
+
timeline_weeks: [1, 2],
|
|
220
|
+
stop_condition: 'If no board KPI plausibly moves, stop before this becomes a well-run irrelevant thing.',
|
|
221
|
+
provisional: false,
|
|
222
|
+
source: 'Kotter, Leading Change (steps 1, 3); AI BVF strategic alignment module',
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
function paceRealign(ai_tier, readiness) {
|
|
226
|
+
return {
|
|
227
|
+
id: 'pace-realign',
|
|
228
|
+
pillar: 'pace_gap',
|
|
229
|
+
diagnosis: `The initiative may be fine, the ground is not: ${ai_tier} ambition on ${readiness} readiness is a severe pace-layer mismatch, and project-level polish cannot fix an operating-model gap.`,
|
|
230
|
+
org_move: {
|
|
231
|
+
method: 'Pace-layer decision',
|
|
232
|
+
action: 'Choose deliberately: lift readiness first (decision rights, cross-functional teams, faster cadence) or drop the ambition one tier for phase one and earn the right to the higher tier.',
|
|
233
|
+
},
|
|
234
|
+
person_move: {
|
|
235
|
+
method: 'Change-load pacing',
|
|
236
|
+
action: 'Match the change load to what people can actually absorb; a tier too far breeds quiet non-adoption, which reads as failure of the AI when it is failure of pacing.',
|
|
237
|
+
},
|
|
238
|
+
steps: [
|
|
239
|
+
'Read the pace layers: which parts of the operating model move at which speed.',
|
|
240
|
+
'Decide: lift readiness or drop the tier for phase one, in writing.',
|
|
241
|
+
'If dropping the tier, rescope to the highest-value lower-tier slice.',
|
|
242
|
+
'Re-score with the pacing decision made.',
|
|
243
|
+
],
|
|
244
|
+
diagnostic_questions: [
|
|
245
|
+
'What behaviour has to change before the system can create value?',
|
|
246
|
+
'Where would a uniform control model create friction without creating confidence?',
|
|
247
|
+
],
|
|
248
|
+
owner: 'Executive sponsor with the operating-model owner',
|
|
249
|
+
timeline_weeks: [4, 8],
|
|
250
|
+
provisional: false,
|
|
251
|
+
source: 'AI BVF pace-layer diagnostic',
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
// ── plan assembly ──────────────────────────────────────────────────────────
|
|
255
|
+
function inferRiskType(input) {
|
|
256
|
+
if (input.ai_tier === 'gen3')
|
|
257
|
+
return 'regulatory';
|
|
258
|
+
if (REGULATED_FUNCTIONS.has(input.function))
|
|
259
|
+
return 'regulatory';
|
|
260
|
+
if (input.industry && REGULATED_INDUSTRIES.has(input.industry))
|
|
261
|
+
return 'regulatory';
|
|
262
|
+
if (input.function === 'cx' || input.function === 'sales')
|
|
263
|
+
return 'reputational';
|
|
264
|
+
return 'operational';
|
|
265
|
+
}
|
|
266
|
+
function inferResistanceType(input) {
|
|
267
|
+
return input.readiness === 'agile' ? 'skill' : 'will';
|
|
268
|
+
}
|
|
269
|
+
export function buildChangePlan(input, resolved, recommendations, feasible) {
|
|
270
|
+
const { strategic_alignment: sa, financial_return: fr, change_enablement: ce, governance_risk: gr } = resolved;
|
|
271
|
+
// Severity per pillar: distance from the Accelerate thresholds, with the
|
|
272
|
+
// forcing conditions (GR >= 70, FR <= 20) dominating everything else.
|
|
273
|
+
const allShortfalls = [
|
|
274
|
+
{ pillar: 'strategic_alignment', severity: Math.max(0, ACCELERATE_FLOOR - sa), forcing: false },
|
|
275
|
+
{ pillar: 'financial_return', severity: Math.max(0, ACCELERATE_FLOOR - fr), forcing: fr <= 20 },
|
|
276
|
+
{ pillar: 'change_enablement', severity: Math.max(0, ACCELERATE_FLOOR - ce), forcing: false },
|
|
277
|
+
{ pillar: 'governance_risk', severity: Math.max(0, gr - GOV_CEILING), forcing: gr >= 70 },
|
|
278
|
+
];
|
|
279
|
+
const shortfalls = allShortfalls.filter(s => s.severity > 0);
|
|
280
|
+
shortfalls.sort((a, b) => (Number(b.forcing) - Number(a.forcing)) || (b.severity - a.severity));
|
|
281
|
+
const PILLAR_NAME = {
|
|
282
|
+
strategic_alignment: 'strategic alignment',
|
|
283
|
+
financial_return: 'financial return',
|
|
284
|
+
change_enablement: 'change enablement',
|
|
285
|
+
governance_risk: 'governance risk',
|
|
286
|
+
};
|
|
287
|
+
const top = shortfalls[0];
|
|
288
|
+
const binding_constraint = top
|
|
289
|
+
? (shortfalls.length === 1
|
|
290
|
+
? `${PILLAR_NAME[top.pillar]} is the only thing standing between this initiative and a Go; everything else clears. The first play below is where this is won.`
|
|
291
|
+
: `${PILLAR_NAME[top.pillar]} is the binding constraint${top.forcing ? ', and it is currently forcing the verdict on its own' : ''}. The other gaps matter, but nothing moves until this one does, so the plays are sequenced with it first.`)
|
|
292
|
+
: 'No single pillar is failing; the verdict is being shaped by the combination. Work the plays in the order given.';
|
|
293
|
+
// Position between Go and Stop.
|
|
294
|
+
const totalShortfall = shortfalls.reduce((s, x) => s + x.severity, 0);
|
|
295
|
+
const nearStop = gr >= 60 || fr <= 30;
|
|
296
|
+
const position = nearStop ? 'near_stop' : (totalShortfall <= 20 ? 'near_go' : 'contested');
|
|
297
|
+
const position_detail = position === 'near_go'
|
|
298
|
+
? `This Fix is a Go you are ${totalShortfall} points away from. The gaps are closable inside the plan window; treat it as a funding decision waiting on evidence, not a rescue.`
|
|
299
|
+
: position === 'near_stop'
|
|
300
|
+
? 'This Fix is leaning toward Stop: one adverse finding on the weak pillar tips it. Run the first play only, then re-score before spending anything else.'
|
|
301
|
+
: 'This Fix is genuinely contested: real gaps on more than one pillar. Sequence the plays, do not run them in parallel, and let the re-score arbitrate.';
|
|
302
|
+
// Select plays, worst pillar first.
|
|
303
|
+
const plays = [];
|
|
304
|
+
for (const s of shortfalls) {
|
|
305
|
+
if (s.pillar === 'change_enablement') {
|
|
306
|
+
const told = input.resistance_type !== undefined;
|
|
307
|
+
const rt = input.resistance_type ?? inferResistanceType(input);
|
|
308
|
+
plays.push(rt === 'skill' ? ownerAndCapability(!told) : coalitionFirst(input.readiness, !told));
|
|
309
|
+
}
|
|
310
|
+
else if (s.pillar === 'governance_risk') {
|
|
311
|
+
const told = input.risk_type !== undefined;
|
|
312
|
+
const rt = input.risk_type ?? inferRiskType(input);
|
|
313
|
+
if (rt === 'regulatory')
|
|
314
|
+
plays.push(regulatoryRemediation(!told));
|
|
315
|
+
else if (rt === 'reputational')
|
|
316
|
+
plays.push(trustGuardrails());
|
|
317
|
+
else
|
|
318
|
+
plays.push(governanceReview(!told));
|
|
319
|
+
}
|
|
320
|
+
else if (s.pillar === 'financial_return') {
|
|
321
|
+
plays.push(valueRescope(fr));
|
|
322
|
+
}
|
|
323
|
+
else {
|
|
324
|
+
plays.push(boardAnchor());
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
// Severe pace-layer mismatch is a cross-cutting play: the ground, not the project.
|
|
328
|
+
const severeGap = (input.ai_tier === 'gen3' && input.readiness !== 'agile')
|
|
329
|
+
|| (input.ai_tier === 'gen2' && input.readiness === 'siloed');
|
|
330
|
+
if (severeGap)
|
|
331
|
+
plays.push(paceRealign(input.ai_tier, input.readiness));
|
|
332
|
+
// Price the delay from the drag model over the plan window.
|
|
333
|
+
const planWeeks = Math.max(...plays.map(p => p.timeline_weeks[1]), 4);
|
|
334
|
+
const rate = PACE_DRAG_RATE[input.ai_tier]?.[input.readiness];
|
|
335
|
+
const weeklyLow = rate ? (input.revenue_eur * rate.lo) / 52 : 0;
|
|
336
|
+
const weeklyHigh = rate ? (input.revenue_eur * rate.hi) / 52 : 0;
|
|
337
|
+
const cost_of_waiting_eur = {
|
|
338
|
+
low: Math.round(weeklyLow * planWeeks),
|
|
339
|
+
high: Math.round(weeklyHigh * planWeeks),
|
|
340
|
+
};
|
|
341
|
+
const cost_of_waiting = rate
|
|
342
|
+
? `Sitting in Fix is not free: over the ${planWeeks}-week plan window the pace-layer mismatch carries an estimated ${cost_of_waiting_eur.low.toLocaleString('en-IE')} to ${cost_of_waiting_eur.high.toLocaleString('en-IE')} EUR of organisational drag. If the cost of the plays above is clearly smaller than that, fix now; if it is clearly larger, treat this as a Stop and say so.`
|
|
343
|
+
: 'Cost of waiting could not be modelled for this tier and readiness combination.';
|
|
344
|
+
const rescore_gate = {
|
|
345
|
+
clears_when: 'strategic alignment, financial return and change enablement all at or above 60 with governance risk at or below 40, scored honestly, not negotiated',
|
|
346
|
+
deadline_weeks: planWeeks,
|
|
347
|
+
};
|
|
348
|
+
const honest_stop = !feasible
|
|
349
|
+
? 'The gaps are structurally too wide to close by improving this initiative: the truthful verdict is Stop. Redirect the plays toward scoping a different use case rather than rescuing this one, and treat the budget you have not yet spent as the win.'
|
|
350
|
+
: undefined;
|
|
351
|
+
return { binding_constraint, position, position_detail, plays, cost_of_waiting_eur, cost_of_waiting, rescore_gate, honest_stop };
|
|
352
|
+
}
|
|
353
|
+
//# sourceMappingURL=changePlan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changePlan.js","sourceRoot":"","sources":["../src/changePlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changePlan.test.d.ts","sourceRoot":"","sources":["../src/changePlan.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import test from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { recommendImprovements } from './score.js';
|
|
4
|
+
const base = {
|
|
5
|
+
industry: 'manufacturing',
|
|
6
|
+
revenue_eur: 2_400_000_000,
|
|
7
|
+
function: 'supply',
|
|
8
|
+
ai_tier: 'gen2',
|
|
9
|
+
readiness: 'traditional',
|
|
10
|
+
scores: { strategic_alignment: 70, financial_return: 65, change_enablement: 45, governance_risk: 35 },
|
|
11
|
+
};
|
|
12
|
+
test('CE-low on traditional readiness selects coalition-first, provisional, with a stop condition', () => {
|
|
13
|
+
const r = recommendImprovements(base);
|
|
14
|
+
const plan = r.change_plan;
|
|
15
|
+
const play = plan.plays.find(p => p.pillar === 'change_enablement');
|
|
16
|
+
assert.equal(play.id, 'coalition-first');
|
|
17
|
+
assert.equal(play.provisional, true);
|
|
18
|
+
assert.ok(play.person_move.method.includes('Awareness'));
|
|
19
|
+
assert.ok(play.stop_condition && play.stop_condition.includes('Stop'));
|
|
20
|
+
assert.ok(play.diagnostic_questions.length >= 3);
|
|
21
|
+
});
|
|
22
|
+
test('caller-supplied resistance_type=skill overrides inference and is not provisional', () => {
|
|
23
|
+
const r = recommendImprovements({ ...base, resistance_type: 'skill' });
|
|
24
|
+
const play = r.change_plan.plays.find(p => p.pillar === 'change_enablement');
|
|
25
|
+
assert.equal(play.id, 'owner-and-capability');
|
|
26
|
+
assert.equal(play.provisional, false);
|
|
27
|
+
assert.ok(play.person_move.method.includes('Knowledge'));
|
|
28
|
+
});
|
|
29
|
+
test('agile readiness infers the skill-side play', () => {
|
|
30
|
+
const r = recommendImprovements({ ...base, readiness: 'agile' });
|
|
31
|
+
const play = r.change_plan.plays.find(p => p.pillar === 'change_enablement');
|
|
32
|
+
assert.equal(play.id, 'owner-and-capability');
|
|
33
|
+
assert.equal(play.provisional, true);
|
|
34
|
+
});
|
|
35
|
+
test('high GR in a regulated function selects regulatory remediation with the honest stop language', () => {
|
|
36
|
+
const r = recommendImprovements({
|
|
37
|
+
...base,
|
|
38
|
+
function: 'risk',
|
|
39
|
+
scores: { ...base.scores, change_enablement: 70, governance_risk: 65 },
|
|
40
|
+
});
|
|
41
|
+
const play = r.change_plan.plays.find(p => p.pillar === 'governance_risk');
|
|
42
|
+
assert.equal(play.id, 'regulatory-remediation');
|
|
43
|
+
assert.ok(play.stop_condition && play.stop_condition.includes('Stop'));
|
|
44
|
+
assert.ok(play.steps.some(s => s.includes('EU AI Act')));
|
|
45
|
+
});
|
|
46
|
+
test('risk_type=reputational selects trust-guardrails', () => {
|
|
47
|
+
const r = recommendImprovements({
|
|
48
|
+
...base,
|
|
49
|
+
risk_type: 'reputational',
|
|
50
|
+
scores: { ...base.scores, change_enablement: 70, governance_risk: 55 },
|
|
51
|
+
});
|
|
52
|
+
const play = r.change_plan.plays.find(p => p.pillar === 'governance_risk');
|
|
53
|
+
assert.equal(play.id, 'trust-guardrails');
|
|
54
|
+
});
|
|
55
|
+
test('forcing FR selects value-rescope, positions near_stop, and binds the constraint to financial return', () => {
|
|
56
|
+
const r = recommendImprovements({
|
|
57
|
+
...base,
|
|
58
|
+
scores: { strategic_alignment: 70, financial_return: 15, change_enablement: 70, governance_risk: 35 },
|
|
59
|
+
});
|
|
60
|
+
const plan = r.change_plan;
|
|
61
|
+
assert.equal(plan.position, 'near_stop');
|
|
62
|
+
assert.ok(plan.binding_constraint.includes('financial return'));
|
|
63
|
+
const play = plan.plays.find(p => p.pillar === 'financial_return');
|
|
64
|
+
assert.equal(play.id, 'value-rescope');
|
|
65
|
+
assert.ok(play.stop_condition);
|
|
66
|
+
});
|
|
67
|
+
test('gen3 on siloed adds the cross-cutting pace-realign play', () => {
|
|
68
|
+
const r = recommendImprovements({ ...base, ai_tier: 'gen3', readiness: 'siloed' });
|
|
69
|
+
assert.ok(r.change_plan.plays.some(p => p.id === 'pace-realign'));
|
|
70
|
+
});
|
|
71
|
+
test('near_go when the total shortfall is small', () => {
|
|
72
|
+
const r = recommendImprovements({
|
|
73
|
+
...base,
|
|
74
|
+
scores: { strategic_alignment: 58, financial_return: 62, change_enablement: 58, governance_risk: 42 },
|
|
75
|
+
});
|
|
76
|
+
assert.equal(r.change_plan.position, 'near_go');
|
|
77
|
+
});
|
|
78
|
+
test('cost of waiting is a positive EUR range tied to the plan window', () => {
|
|
79
|
+
const plan = recommendImprovements(base).change_plan;
|
|
80
|
+
assert.ok(plan.cost_of_waiting_eur.low > 0);
|
|
81
|
+
assert.ok(plan.cost_of_waiting_eur.high > plan.cost_of_waiting_eur.low);
|
|
82
|
+
assert.ok(plan.cost_of_waiting.includes('EUR'));
|
|
83
|
+
assert.ok(plan.rescore_gate.deadline_weeks >= 4);
|
|
84
|
+
});
|
|
85
|
+
test('Accelerate carries no change plan', () => {
|
|
86
|
+
const r = recommendImprovements({
|
|
87
|
+
...base,
|
|
88
|
+
scores: { strategic_alignment: 80, financial_return: 75, change_enablement: 70, governance_risk: 30 },
|
|
89
|
+
});
|
|
90
|
+
assert.equal(r.change_plan, undefined);
|
|
91
|
+
});
|
|
92
|
+
test('infeasible gaps surface the honest stop', () => {
|
|
93
|
+
const r = recommendImprovements({
|
|
94
|
+
...base,
|
|
95
|
+
scores: { strategic_alignment: 30, financial_return: 5, change_enablement: 30, governance_risk: 80 },
|
|
96
|
+
});
|
|
97
|
+
assert.equal(r.feasible, false);
|
|
98
|
+
assert.ok(r.change_plan.honest_stop && r.change_plan.honest_stop.includes('Stop'));
|
|
99
|
+
});
|
|
100
|
+
test('plan text carries no em-dashes and no banned vocabulary', () => {
|
|
101
|
+
const plan = recommendImprovements(base).change_plan;
|
|
102
|
+
const text = JSON.stringify(plan);
|
|
103
|
+
assert.ok(!text.includes('—'), 'em-dash found in plan text');
|
|
104
|
+
for (const banned of ['boardroom', 'leverage', 'crucial', 'pivotal', 'seamless']) {
|
|
105
|
+
assert.ok(!text.toLowerCase().includes(banned), `banned word found: ${banned}`);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
//# sourceMappingURL=changePlan.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changePlan.test.js","sourceRoot":"","sources":["../src/changePlan.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { validate } from './validate.js';
|
|
2
|
-
export { score, recommendImprovements, calculatePaceLayerDrag, BASE_RATES, IND_MULT, TIER_ADJ, READINESS_CAPTURE, PACE_DRAG_RATE, } from './score.js';
|
|
2
|
+
export { score, recommendImprovements, calculatePaceLayerDrag, estimatePillars, resolvePillars, BASE_RATES, IND_MULT, TIER_ADJ, READINESS_CAPTURE, PACE_DRAG_RATE, } from './score.js';
|
|
3
3
|
export { diagnoseProcess, BRAIN_VERSION, EVIDENCE, FUNCTION_MEDIANS, } from './diagnose.js';
|
|
4
|
+
export { buildChangePlan } from './changePlan.js';
|
|
4
5
|
export { bvfSchema } from './schema.js';
|
|
5
6
|
export { INDUSTRIES, FUNCTIONS, AI_TIERS, READINESS, INDUSTRY_LABEL, FUNCTION_LABEL, TIER_LABEL } from './taxonomy.js';
|
|
6
7
|
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,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"}
|
|
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,eAAe,EAAE,cAAc,EAC/B,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,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,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,6 +1,7 @@
|
|
|
1
1
|
export { validate } from './validate.js';
|
|
2
|
-
export { score, recommendImprovements, calculatePaceLayerDrag, BASE_RATES, IND_MULT, TIER_ADJ, READINESS_CAPTURE, PACE_DRAG_RATE, } from './score.js';
|
|
2
|
+
export { score, recommendImprovements, calculatePaceLayerDrag, estimatePillars, resolvePillars, BASE_RATES, IND_MULT, TIER_ADJ, READINESS_CAPTURE, PACE_DRAG_RATE, } from './score.js';
|
|
3
3
|
export { diagnoseProcess, BRAIN_VERSION, EVIDENCE, FUNCTION_MEDIANS, } from './diagnose.js';
|
|
4
|
+
export { buildChangePlan } from './changePlan.js';
|
|
4
5
|
export { bvfSchema } from './schema.js';
|
|
5
6
|
export { INDUSTRIES, FUNCTIONS, AI_TIERS, READINESS, INDUSTRY_LABEL, FUNCTION_LABEL, TIER_LABEL } from './taxonomy.js';
|
|
6
7
|
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,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"}
|
|
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,eAAe,EAAE,cAAc,EAC/B,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,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pillarsOptional.test.d.ts","sourceRoot":"","sources":["../src/pillarsOptional.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import test from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { score, recommendImprovements, estimatePillars } from './score.js';
|
|
4
|
+
const bare = {
|
|
5
|
+
industry: 'manufacturing', revenue_eur: 500_000_000,
|
|
6
|
+
function: 'cx', ai_tier: 'gen2', readiness: 'agile',
|
|
7
|
+
};
|
|
8
|
+
test('score runs with no pillar scores at all and reports every pillar estimated', () => {
|
|
9
|
+
const r = score(bare);
|
|
10
|
+
assert.ok(['Fix', 'Stop'].includes(r.classification));
|
|
11
|
+
assert.deepEqual(Object.values(r.pillar_basis), ['estimated', 'estimated', 'estimated', 'estimated']);
|
|
12
|
+
assert.ok(r.caveat && r.caveat.includes('Estimated pillars'));
|
|
13
|
+
});
|
|
14
|
+
test('fully estimated pillars never produce an Accelerate, by prior design', () => {
|
|
15
|
+
// Sweep every tier x readiness x function combination with no scores given.
|
|
16
|
+
for (const ai_tier of ['gen1', 'gen2', 'gen3']) {
|
|
17
|
+
for (const readiness of ['agile', 'traditional', 'siloed']) {
|
|
18
|
+
for (const fn of ['finance', 'hr', 'sales', 'supply', 'cx', 'risk', 'it', 'rd']) {
|
|
19
|
+
const r = score({ ...bare, ai_tier, readiness, function: fn });
|
|
20
|
+
assert.notEqual(r.classification, 'Accelerate', `${ai_tier}/${readiness}/${fn} accelerated on estimates`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
test('estimated GR forces Stop for agentic AI in a regulated function and industry', () => {
|
|
26
|
+
const r = score({ ...bare, industry: 'financial', function: 'risk', ai_tier: 'gen3' });
|
|
27
|
+
// gen3 (55) + regulated function (+10) + regulated industry (+8) = 73 >= 70.
|
|
28
|
+
assert.equal(r.scores_used.governance_risk, 73);
|
|
29
|
+
assert.equal(r.classification, 'Stop');
|
|
30
|
+
});
|
|
31
|
+
test('estimation priors are deterministic and sit in unproven territory', () => {
|
|
32
|
+
const e = estimatePillars({ industry: 'retail', function: 'sales', ai_tier: 'gen1', readiness: 'siloed' });
|
|
33
|
+
assert.deepEqual(e, estimatePillars({ industry: 'retail', function: 'sales', ai_tier: 'gen1', readiness: 'siloed' }));
|
|
34
|
+
assert.equal(e.strategic_alignment, 50);
|
|
35
|
+
assert.equal(e.change_enablement, 32);
|
|
36
|
+
assert.ok(e.financial_return < 60 && e.financial_return > 20);
|
|
37
|
+
});
|
|
38
|
+
test('partial scores keep given values, estimate the rest, and scale the signal default', () => {
|
|
39
|
+
const r = score({ ...bare, scores: { strategic_alignment: 70, financial_return: 65 } });
|
|
40
|
+
assert.equal(r.pillar_basis.strategic_alignment, 'given');
|
|
41
|
+
assert.equal(r.pillar_basis.financial_return, 'given');
|
|
42
|
+
assert.equal(r.pillar_basis.change_enablement, 'estimated');
|
|
43
|
+
assert.equal(r.scores_used.strategic_alignment, 70);
|
|
44
|
+
// 2 of 4 given: default signal 0.75, so confidence is haircut below the full-signal figure.
|
|
45
|
+
const full = score({ ...bare, scores: { strategic_alignment: 70, financial_return: 65, change_enablement: 55, governance_risk: 42 } });
|
|
46
|
+
assert.ok(r.confidence < full.confidence + 10); // sanity: haircut applied, not inflated
|
|
47
|
+
});
|
|
48
|
+
test('a mixed call with one estimated pillar can still Accelerate, with the estimation caveat attached', () => {
|
|
49
|
+
const r = score({
|
|
50
|
+
...bare, ai_tier: 'gen1', industry: 'retail',
|
|
51
|
+
scores: { strategic_alignment: 72, financial_return: 68, change_enablement: 66 },
|
|
52
|
+
});
|
|
53
|
+
// GR estimated at gen1 unregulated = 30, under the 40 ceiling.
|
|
54
|
+
assert.equal(r.classification, 'Accelerate');
|
|
55
|
+
assert.equal(r.pillar_basis.governance_risk, 'estimated');
|
|
56
|
+
assert.ok(r.caveat && r.caveat.includes('governance_risk'));
|
|
57
|
+
});
|
|
58
|
+
test('all four given reproduces the old behaviour exactly: basis given, no estimation caveat, signal 1', () => {
|
|
59
|
+
const r = score({ ...bare, scores: { strategic_alignment: 70, financial_return: 65, change_enablement: 62, governance_risk: 35 } });
|
|
60
|
+
assert.deepEqual(Object.values(r.pillar_basis), ['given', 'given', 'given', 'given']);
|
|
61
|
+
assert.equal(r.classification, 'Accelerate');
|
|
62
|
+
assert.equal(r.caveat, undefined);
|
|
63
|
+
});
|
|
64
|
+
test('explicit signal_completeness still wins over the given-count default', () => {
|
|
65
|
+
const r = score({ ...bare, signal_completeness: 0.2 });
|
|
66
|
+
assert.ok(r.caveat && r.caveat.includes('0.2'));
|
|
67
|
+
});
|
|
68
|
+
test('recommend_improvements runs with no scores and returns a provisional change plan', () => {
|
|
69
|
+
const r = recommendImprovements({ ...bare, ai_tier: 'gen3', readiness: 'traditional' });
|
|
70
|
+
assert.ok(['Fix', 'Stop'].includes(r.current_classification));
|
|
71
|
+
assert.ok(r.notes.some(n => n.includes('Estimated pillars')));
|
|
72
|
+
assert.ok(r.change_plan && r.change_plan.plays.length > 0);
|
|
73
|
+
assert.ok(r.change_plan.plays.some(p => p.id === 'pace-realign'));
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=pillarsOptional.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pillarsOptional.test.js","sourceRoot":"","sources":["../src/pillarsOptional.test.ts"],"names":[],"mappings":"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"}
|
package/dist/score.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ScoreInput, ScoreResult, RecommendInput, RecommendResult, PaceLayerInput, PaceLayerResult, AiTier, Readiness } from './types.js';
|
|
1
|
+
import type { ScoreInput, ScoreResult, RecommendInput, RecommendResult, PaceLayerInput, PaceLayerResult, PillarScores, PillarBasis, AiTier, Readiness } from './types.js';
|
|
2
2
|
interface BaseRate {
|
|
3
3
|
rev: {
|
|
4
4
|
lo: number;
|
|
@@ -55,6 +55,34 @@ export declare const PACE_DRAG_RATE: Record<AiTier, Record<Readiness, {
|
|
|
55
55
|
lo: number;
|
|
56
56
|
hi: number;
|
|
57
57
|
}>>;
|
|
58
|
+
/**
|
|
59
|
+
* Deterministic pillar estimation for callers who do not have measured
|
|
60
|
+
* pillar scores. Every prior is anchored to something the engine already
|
|
61
|
+
* knows, and every estimated value sits in unproven territory by design:
|
|
62
|
+
* an estimate can force caution (a Stop) but can never hand out the
|
|
63
|
+
* evidence-cleared scores an Accelerate requires.
|
|
64
|
+
*
|
|
65
|
+
* - strategic_alignment: flat 50. Alignment to a board KPI cannot be read
|
|
66
|
+
* from industry or function; 50 means unproven, ask the board-anchor
|
|
67
|
+
* question.
|
|
68
|
+
* - financial_return: anchored to the published benchmark upside for the
|
|
69
|
+
* function (BASE_RATES). Strong upside estimates 52, mid 46, thin 40.
|
|
70
|
+
* Never above 60 (an unmodelled case is unproven), never at or below 20
|
|
71
|
+
* (no evidence of a bad case either).
|
|
72
|
+
* - change_enablement: from readiness, the engine's change-capability
|
|
73
|
+
* proxy. agile 55, traditional 45, siloed 32.
|
|
74
|
+
* - governance_risk: from tier plus regulated context. gen1 30, gen2 42,
|
|
75
|
+
* gen3 55, +10 in a regulated function, +8 in a regulated industry.
|
|
76
|
+
* Agentic AI in a regulated function and industry estimates at 73,
|
|
77
|
+
* which forces a Stop until governance evidence exists — deliberate.
|
|
78
|
+
*/
|
|
79
|
+
export declare function estimatePillars(input: Pick<ScoreInput, 'industry' | 'function' | 'ai_tier' | 'readiness'>): PillarScores;
|
|
80
|
+
/** Resolve given + estimated pillars into a full set, with provenance. */
|
|
81
|
+
export declare function resolvePillars(input: ScoreInput): {
|
|
82
|
+
scores: PillarScores;
|
|
83
|
+
basis: PillarBasis;
|
|
84
|
+
givenCount: number;
|
|
85
|
+
};
|
|
58
86
|
/**
|
|
59
87
|
* Score an initiative according to AI BVF v1.0.
|
|
60
88
|
* Deterministic. No network. No dependencies.
|
package/dist/score.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../src/score.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAAE,WAAW,EACvB,cAAc,EAAE,eAAe,EAC/B,cAAc,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../src/score.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAAE,WAAW,EACvB,cAAc,EAAE,eAAe,EAC/B,cAAc,EAAE,eAAe,EAC/B,YAAY,EAAE,WAAW,EACH,MAAM,EAAE,SAAS,EACxC,MAAM,YAAY,CAAC;AAMpB,UAAU,QAAQ;IAChB,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAS/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAe3D,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;CAAkD,CAAC;AAExE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;CAIpB,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAIxF,CAAC;AAgDF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC,GACzE,YAAY,CAed;AAED,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG;IACjD,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAaA;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAgEpD;AAwBD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAoD5E;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAwB7E"}
|
package/dist/score.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { REGULATED_FUNCTIONS, REGULATED_INDUSTRIES } from './taxonomy.js';
|
|
2
|
+
// Deferred-access import: buildChangePlan is only called inside
|
|
3
|
+
// recommendImprovements, so the score <-> changePlan module cycle is safe.
|
|
4
|
+
import { buildChangePlan } from './changePlan.js';
|
|
1
5
|
/**
|
|
2
6
|
* Published benchmark ranges, by business function.
|
|
3
7
|
* Rates are fractions of annual revenue (lo/hi).
|
|
@@ -100,12 +104,70 @@ function appliedModules(industry, fn, readiness) {
|
|
|
100
104
|
}
|
|
101
105
|
/** Below this signal_completeness, score() attaches a soft-inputs caveat. */
|
|
102
106
|
const SIGNAL_CAVEAT_THRESHOLD = 0.7;
|
|
107
|
+
/**
|
|
108
|
+
* Deterministic pillar estimation for callers who do not have measured
|
|
109
|
+
* pillar scores. Every prior is anchored to something the engine already
|
|
110
|
+
* knows, and every estimated value sits in unproven territory by design:
|
|
111
|
+
* an estimate can force caution (a Stop) but can never hand out the
|
|
112
|
+
* evidence-cleared scores an Accelerate requires.
|
|
113
|
+
*
|
|
114
|
+
* - strategic_alignment: flat 50. Alignment to a board KPI cannot be read
|
|
115
|
+
* from industry or function; 50 means unproven, ask the board-anchor
|
|
116
|
+
* question.
|
|
117
|
+
* - financial_return: anchored to the published benchmark upside for the
|
|
118
|
+
* function (BASE_RATES). Strong upside estimates 52, mid 46, thin 40.
|
|
119
|
+
* Never above 60 (an unmodelled case is unproven), never at or below 20
|
|
120
|
+
* (no evidence of a bad case either).
|
|
121
|
+
* - change_enablement: from readiness, the engine's change-capability
|
|
122
|
+
* proxy. agile 55, traditional 45, siloed 32.
|
|
123
|
+
* - governance_risk: from tier plus regulated context. gen1 30, gen2 42,
|
|
124
|
+
* gen3 55, +10 in a regulated function, +8 in a regulated industry.
|
|
125
|
+
* Agentic AI in a regulated function and industry estimates at 73,
|
|
126
|
+
* which forces a Stop until governance evidence exists — deliberate.
|
|
127
|
+
*/
|
|
128
|
+
export function estimatePillars(input) {
|
|
129
|
+
const base = BASE_RATES[input.function];
|
|
130
|
+
const upside = base ? base.rev.hi + base.cost.hi : 0;
|
|
131
|
+
const financial_return = upside >= 0.10 ? 52 : upside >= 0.07 ? 46 : 40;
|
|
132
|
+
const CE_BY_READINESS = { agile: 55, traditional: 45, siloed: 32 };
|
|
133
|
+
const change_enablement = CE_BY_READINESS[input.readiness] ?? 45;
|
|
134
|
+
const GR_BY_TIER = { gen1: 30, gen2: 42, gen3: 55 };
|
|
135
|
+
let governance_risk = GR_BY_TIER[input.ai_tier] ?? 42;
|
|
136
|
+
if (REGULATED_FUNCTIONS.has(input.function))
|
|
137
|
+
governance_risk += 10;
|
|
138
|
+
if (input.industry && REGULATED_INDUSTRIES.has(input.industry))
|
|
139
|
+
governance_risk += 8;
|
|
140
|
+
governance_risk = Math.min(100, governance_risk);
|
|
141
|
+
return { strategic_alignment: 50, financial_return, change_enablement, governance_risk };
|
|
142
|
+
}
|
|
143
|
+
/** Resolve given + estimated pillars into a full set, with provenance. */
|
|
144
|
+
export function resolvePillars(input) {
|
|
145
|
+
const est = estimatePillars(input);
|
|
146
|
+
const given = input.scores ?? {};
|
|
147
|
+
const pillars = ['strategic_alignment', 'financial_return', 'change_enablement', 'governance_risk'];
|
|
148
|
+
const scores = {};
|
|
149
|
+
const basis = {};
|
|
150
|
+
let givenCount = 0;
|
|
151
|
+
for (const p of pillars) {
|
|
152
|
+
const v = given[p];
|
|
153
|
+
if (typeof v === 'number') {
|
|
154
|
+
scores[p] = v;
|
|
155
|
+
basis[p] = 'given';
|
|
156
|
+
givenCount++;
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
scores[p] = est[p];
|
|
160
|
+
basis[p] = 'estimated';
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return { scores, basis, givenCount };
|
|
164
|
+
}
|
|
103
165
|
/**
|
|
104
166
|
* Score an initiative according to AI BVF v1.0.
|
|
105
167
|
* Deterministic. No network. No dependencies.
|
|
106
168
|
*/
|
|
107
169
|
export function score(input) {
|
|
108
|
-
const { industry, revenue_eur, function: fn, ai_tier, readiness
|
|
170
|
+
const { industry, revenue_eur, function: fn, ai_tier, readiness } = input;
|
|
109
171
|
const base = BASE_RATES[fn];
|
|
110
172
|
if (!base)
|
|
111
173
|
throw new Error(`Unknown function: ${fn}`);
|
|
@@ -116,23 +178,39 @@ export function score(input) {
|
|
|
116
178
|
const cap = READINESS_CAPTURE[readiness];
|
|
117
179
|
if (!cap)
|
|
118
180
|
throw new Error(`Unknown readiness: ${readiness}`);
|
|
119
|
-
const {
|
|
181
|
+
const { scores: resolved, basis, givenCount } = resolvePillars(input);
|
|
182
|
+
const { strategic_alignment: sa, financial_return: fr, change_enablement: ce, governance_risk: gr } = resolved;
|
|
183
|
+
const allEstimated = givenCount === 0;
|
|
184
|
+
const anyEstimated = givenCount < 4;
|
|
120
185
|
const grossLo = Math.round(revenue_eur * (base.rev.lo + base.cost.lo) * mult * tAdj);
|
|
121
186
|
const grossHi = Math.round(revenue_eur * (base.rev.hi + base.cost.hi) * mult * tAdj);
|
|
122
187
|
const netLo = Math.round(grossLo * cap.low);
|
|
123
188
|
const netHi = Math.round(grossHi * cap.high);
|
|
124
|
-
|
|
189
|
+
let cls = classify(sa, fr, ce, gr);
|
|
190
|
+
// Stop-first invariant: a fully-estimated pass can never hand out a green
|
|
191
|
+
// light. The priors already make this structurally impossible (estimated
|
|
192
|
+
// strategic_alignment is 50), this guard keeps the promise even if the
|
|
193
|
+
// priors ever change.
|
|
194
|
+
if (allEstimated && cls.label === 'Accelerate') {
|
|
195
|
+
cls = { label: 'Fix', reason: 'Clears the Accelerate thresholds on estimated pillars only. Confirm the four pillar scores with evidence to unlock the Go.' };
|
|
196
|
+
}
|
|
125
197
|
// Base confidence from the pillar scores themselves.
|
|
126
198
|
const baseConfidence = (sa + fr + ce + (100 - gr)) / 4;
|
|
127
|
-
// Input-quality haircut.
|
|
128
|
-
//
|
|
129
|
-
//
|
|
130
|
-
|
|
131
|
-
const signal = Math.max(0, Math.min(1, input.signal_completeness ??
|
|
199
|
+
// Input-quality haircut. When the caller does not supply
|
|
200
|
+
// signal_completeness it defaults from how many pillars were actually
|
|
201
|
+
// given: all four = 1 (identical to the pre-0.5.0 behaviour), none = 0.5.
|
|
202
|
+
const defaultSignal = 0.5 + 0.125 * givenCount;
|
|
203
|
+
const signal = Math.max(0, Math.min(1, input.signal_completeness ?? defaultSignal));
|
|
132
204
|
const confidence = Math.round(baseConfidence * (0.5 + 0.5 * signal));
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
|
|
205
|
+
const caveatParts = [];
|
|
206
|
+
if (anyEstimated) {
|
|
207
|
+
const estimated = Object.keys(basis).filter(k => basis[k] === 'estimated');
|
|
208
|
+
caveatParts.push(`Estimated pillars: ${estimated.join(', ')} (deterministic priors from readiness, tier, function and benchmarks, see pillar_basis). Confirm them with evidence before committing budget.`);
|
|
209
|
+
}
|
|
210
|
+
if (signal < SIGNAL_CAVEAT_THRESHOLD) {
|
|
211
|
+
caveatParts.push(`Verdict rests on soft inputs (signal_completeness ${signal}). Decision confidence has been reduced accordingly; treat this as directional.`);
|
|
212
|
+
}
|
|
213
|
+
const caveat = caveatParts.length ? caveatParts.join(' ') : undefined;
|
|
136
214
|
return {
|
|
137
215
|
classification: cls.label,
|
|
138
216
|
reason: cls.reason,
|
|
@@ -145,6 +223,8 @@ export function score(input) {
|
|
|
145
223
|
drivers: base.drivers,
|
|
146
224
|
source: base.source,
|
|
147
225
|
applied_modules: appliedModules(industry, fn, readiness),
|
|
226
|
+
scores_used: resolved,
|
|
227
|
+
pillar_basis: basis,
|
|
148
228
|
...(caveat ? { caveat } : {}),
|
|
149
229
|
};
|
|
150
230
|
}
|
|
@@ -176,11 +256,19 @@ const GOV_LOWER_TARGET = 35;
|
|
|
176
256
|
* high to recover.
|
|
177
257
|
*/
|
|
178
258
|
export function recommendImprovements(input) {
|
|
179
|
-
const { scores } = input;
|
|
180
|
-
const { strategic_alignment: sa, financial_return: fr, change_enablement: ce, governance_risk: gr } =
|
|
181
|
-
|
|
259
|
+
const { scores: resolved, basis, givenCount } = resolvePillars(input);
|
|
260
|
+
const { strategic_alignment: sa, financial_return: fr, change_enablement: ce, governance_risk: gr } = resolved;
|
|
261
|
+
let current = classify(sa, fr, ce, gr).label;
|
|
262
|
+
// Same Stop-first invariant as score(): fully-estimated pillars never
|
|
263
|
+
// produce an Accelerate, they produce a Fix pending confirmation.
|
|
264
|
+
if (givenCount === 0 && current === 'Accelerate')
|
|
265
|
+
current = 'Fix';
|
|
182
266
|
const recs = [];
|
|
183
267
|
const notes = [];
|
|
268
|
+
if (givenCount < 4) {
|
|
269
|
+
const estimated = Object.keys(basis).filter(k => basis[k] === 'estimated');
|
|
270
|
+
notes.push(`Estimated pillars: ${estimated.join(', ')} (deterministic priors from readiness, tier, function and benchmarks). The plan below is provisional on those pillars; confirm them with evidence and re-run.`);
|
|
271
|
+
}
|
|
184
272
|
if (current === 'Accelerate') {
|
|
185
273
|
return {
|
|
186
274
|
current_classification: current,
|
|
@@ -216,6 +304,7 @@ export function recommendImprovements(input) {
|
|
|
216
304
|
recommendations: recs,
|
|
217
305
|
projected_confidence: projectedConfidence,
|
|
218
306
|
notes,
|
|
307
|
+
change_plan: buildChangePlan(input, resolved, recs, feasible),
|
|
219
308
|
};
|
|
220
309
|
}
|
|
221
310
|
/**
|
package/dist/score.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"score.js","sourceRoot":"","sources":["../src/score.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"score.js","sourceRoot":"","sources":["../src/score.ts"],"names":[],"mappings":"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"}
|
package/dist/taxonomy.d.ts
CHANGED
|
@@ -5,4 +5,11 @@ export declare const READINESS: readonly ["agile", "traditional", "siloed"];
|
|
|
5
5
|
export declare const INDUSTRY_LABEL: Record<string, string>;
|
|
6
6
|
export declare const FUNCTION_LABEL: Record<string, string>;
|
|
7
7
|
export declare const TIER_LABEL: Record<string, string>;
|
|
8
|
+
/**
|
|
9
|
+
* Contexts where governance exposure defaults to regulatory. Shared by the
|
|
10
|
+
* pillar estimator and the change-leader play selector so both infer the
|
|
11
|
+
* same way from the same facts.
|
|
12
|
+
*/
|
|
13
|
+
export declare const REGULATED_FUNCTIONS: ReadonlySet<string>;
|
|
14
|
+
export declare const REGULATED_INDUSTRIES: ReadonlySet<string>;
|
|
8
15
|
//# sourceMappingURL=taxonomy.d.ts.map
|
package/dist/taxonomy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taxonomy.d.ts","sourceRoot":"","sources":["../src/taxonomy.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,yMAGb,CAAC;AAEX,eAAO,MAAM,SAAS,yEAAmE,CAAC;AAC1F,eAAO,MAAM,QAAQ,mCAAkC,CAAC;AACxD,eAAO,MAAM,SAAS,6CAA4C,CAAC;AAEnE,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOjD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGjD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAI7C,CAAC"}
|
|
1
|
+
{"version":3,"file":"taxonomy.d.ts","sourceRoot":"","sources":["../src/taxonomy.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,yMAGb,CAAC;AAEX,eAAO,MAAM,SAAS,yEAAmE,CAAC;AAC1F,eAAO,MAAM,QAAQ,mCAAkC,CAAC;AACxD,eAAO,MAAM,SAAS,6CAA4C,CAAC;AAEnE,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOjD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGjD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAI7C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAAsC,CAAC;AAC3F,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAmE,CAAC"}
|
package/dist/taxonomy.js
CHANGED
|
@@ -22,4 +22,11 @@ export const TIER_LABEL = {
|
|
|
22
22
|
gen2: 'Gen 2 — GenAI',
|
|
23
23
|
gen3: 'Gen 3 — Agentic',
|
|
24
24
|
};
|
|
25
|
+
/**
|
|
26
|
+
* Contexts where governance exposure defaults to regulatory. Shared by the
|
|
27
|
+
* pillar estimator and the change-leader play selector so both infer the
|
|
28
|
+
* same way from the same facts.
|
|
29
|
+
*/
|
|
30
|
+
export const REGULATED_FUNCTIONS = new Set(['risk', 'finance', 'hr']);
|
|
31
|
+
export const REGULATED_INDUSTRIES = new Set(['financial', 'healthcare', 'public_sector', 'energy']);
|
|
25
32
|
//# sourceMappingURL=taxonomy.js.map
|
package/dist/taxonomy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taxonomy.js","sourceRoot":"","sources":["../src/taxonomy.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,WAAW,EAAC,UAAU,EAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,YAAY,EAAC,WAAW;IAChF,eAAe,EAAC,WAAW,EAAC,cAAc,EAAC,eAAe,EAAC,aAAa,EAAC,QAAQ,EAAC,YAAY;CACtF,CAAC;AAEX,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,SAAS,EAAC,IAAI,EAAC,OAAO,EAAC,QAAQ,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,CAAU,CAAC;AAC1F,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAC,MAAM,EAAC,MAAM,CAAU,CAAC;AACxD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAO,EAAC,aAAa,EAAC,QAAQ,CAAU,CAAC;AAEnE,MAAM,CAAC,MAAM,cAAc,GAA2B;IACpD,SAAS,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,SAAS,EAAE,sBAAsB;IAC/F,MAAM,EAAE,oBAAoB,EAAE,SAAS,EAAE,oBAAoB,EAAE,UAAU,EAAE,sBAAsB;IACjG,SAAS,EAAE,4BAA4B,EAAE,aAAa,EAAE,8BAA8B;IACtF,SAAS,EAAE,kBAAkB,EAAE,YAAY,EAAE,uBAAuB;IACpE,aAAa,EAAE,4BAA4B,EAAE,WAAW,EAAE,4BAA4B;IACtF,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,YAAY;CACtD,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAA2B;IACpD,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc;IAChG,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,kBAAkB;CAClG,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAA2B;IAChD,IAAI,EAAE,0BAA0B;IAChC,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,iBAAiB;CACxB,CAAC"}
|
|
1
|
+
{"version":3,"file":"taxonomy.js","sourceRoot":"","sources":["../src/taxonomy.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,WAAW,EAAC,UAAU,EAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,YAAY,EAAC,WAAW;IAChF,eAAe,EAAC,WAAW,EAAC,cAAc,EAAC,eAAe,EAAC,aAAa,EAAC,QAAQ,EAAC,YAAY;CACtF,CAAC;AAEX,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,SAAS,EAAC,IAAI,EAAC,OAAO,EAAC,QAAQ,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,CAAU,CAAC;AAC1F,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAC,MAAM,EAAC,MAAM,CAAU,CAAC;AACxD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAO,EAAC,aAAa,EAAC,QAAQ,CAAU,CAAC;AAEnE,MAAM,CAAC,MAAM,cAAc,GAA2B;IACpD,SAAS,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,SAAS,EAAE,sBAAsB;IAC/F,MAAM,EAAE,oBAAoB,EAAE,SAAS,EAAE,oBAAoB,EAAE,UAAU,EAAE,sBAAsB;IACjG,SAAS,EAAE,4BAA4B,EAAE,aAAa,EAAE,8BAA8B;IACtF,SAAS,EAAE,kBAAkB,EAAE,YAAY,EAAE,uBAAuB;IACpE,aAAa,EAAE,4BAA4B,EAAE,WAAW,EAAE,4BAA4B;IACtF,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,YAAY;CACtD,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAA2B;IACpD,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc;IAChG,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,kBAAkB;CAClG,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAA2B;IAChD,IAAI,EAAE,0BAA0B;IAChC,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,iBAAiB;CACxB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3F,MAAM,CAAC,MAAM,oBAAoB,GAAwB,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -39,25 +39,35 @@ export interface Portfolio {
|
|
|
39
39
|
};
|
|
40
40
|
initiatives: Initiative[];
|
|
41
41
|
}
|
|
42
|
+
/** The four pillars, fully resolved (every pillar carries a number). */
|
|
43
|
+
export interface PillarScores {
|
|
44
|
+
strategic_alignment: number;
|
|
45
|
+
financial_return: number;
|
|
46
|
+
change_enablement: number;
|
|
47
|
+
governance_risk: number;
|
|
48
|
+
}
|
|
49
|
+
/** Where each resolved pillar value came from. */
|
|
50
|
+
export type PillarBasis = Record<keyof PillarScores, 'given' | 'estimated'>;
|
|
42
51
|
export interface ScoreInput {
|
|
43
52
|
industry: Industry;
|
|
44
53
|
revenue_eur: number;
|
|
45
54
|
function: FunctionId;
|
|
46
55
|
ai_tier: AiTier;
|
|
47
56
|
readiness: Readiness;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
57
|
+
/**
|
|
58
|
+
* Optional, and each pillar inside it is optional. Give the pillars you
|
|
59
|
+
* have evidence for; any missing pillar is estimated deterministically
|
|
60
|
+
* from readiness, tier, function and the published benchmarks, the result
|
|
61
|
+
* reports which were estimated via pillar_basis, and a fully-estimated
|
|
62
|
+
* pass can never return Accelerate.
|
|
63
|
+
*/
|
|
64
|
+
scores?: Partial<PillarScores>;
|
|
54
65
|
/**
|
|
55
66
|
* Optional 0–1. How grounded the four pillar scores are in real evidence
|
|
56
|
-
* versus estimated from context.
|
|
57
|
-
*
|
|
58
|
-
* confidence and
|
|
59
|
-
*
|
|
60
|
-
* signal_completeness.
|
|
67
|
+
* versus estimated from context. When omitted it defaults from the count
|
|
68
|
+
* of pillars actually given (all four = 1, none = 0.5), which haircuts
|
|
69
|
+
* decision confidence and attaches a caveat on soft inputs. Mirrors
|
|
70
|
+
* diagnose_process's signal_completeness.
|
|
61
71
|
*/
|
|
62
72
|
signal_completeness?: number;
|
|
63
73
|
}
|
|
@@ -78,10 +88,22 @@ export interface ScoreResult {
|
|
|
78
88
|
drivers: string[];
|
|
79
89
|
source: string;
|
|
80
90
|
applied_modules: string[];
|
|
81
|
-
/**
|
|
91
|
+
/** The four pillar values the verdict was computed on, given or estimated. */
|
|
92
|
+
scores_used: PillarScores;
|
|
93
|
+
/** Which pillars were given by the caller and which were estimated by the engine. */
|
|
94
|
+
pillar_basis: PillarBasis;
|
|
95
|
+
/** Present when signal_completeness is low or any pillar was estimated: warns the verdict rests on soft inputs. */
|
|
82
96
|
caveat?: string;
|
|
83
97
|
}
|
|
98
|
+
/** What kind of resistance sits behind a low change-enablement score. */
|
|
99
|
+
export type ResistanceType = 'will' | 'skill';
|
|
100
|
+
/** What kind of exposure sits behind a high governance-risk score. */
|
|
101
|
+
export type RiskType = 'regulatory' | 'reputational' | 'operational';
|
|
84
102
|
export interface RecommendInput extends ScoreInput {
|
|
103
|
+
/** Optional. Whether people do not WANT the change (will) or cannot yet DO it (skill). Sharpens the change plan; inferred from readiness when absent. */
|
|
104
|
+
resistance_type?: ResistanceType;
|
|
105
|
+
/** Optional. The nature of the governance exposure. Sharpens the change plan; inferred from tier, function and industry when absent. */
|
|
106
|
+
risk_type?: RiskType;
|
|
85
107
|
}
|
|
86
108
|
export interface Recommendation {
|
|
87
109
|
pillar: 'strategic_alignment' | 'financial_return' | 'change_enablement' | 'governance_risk';
|
|
@@ -91,6 +113,47 @@ export interface Recommendation {
|
|
|
91
113
|
action: string;
|
|
92
114
|
rationale: string;
|
|
93
115
|
}
|
|
116
|
+
/** One move at one altitude: the organisation (Kotter) or the person (ADKAR). */
|
|
117
|
+
export interface ChangeMove {
|
|
118
|
+
method: string;
|
|
119
|
+
action: string;
|
|
120
|
+
}
|
|
121
|
+
/** A named, context-selected change play. The unit of advice in the change plan. */
|
|
122
|
+
export interface ChangePlay {
|
|
123
|
+
id: string;
|
|
124
|
+
pillar: Recommendation['pillar'] | 'pace_gap';
|
|
125
|
+
diagnosis: string;
|
|
126
|
+
org_move: ChangeMove;
|
|
127
|
+
person_move: ChangeMove;
|
|
128
|
+
steps: string[];
|
|
129
|
+
diagnostic_questions: string[];
|
|
130
|
+
owner: string;
|
|
131
|
+
timeline_weeks: [number, number];
|
|
132
|
+
/** Present when the honest escalation from this play is Stop, and under what condition. */
|
|
133
|
+
stop_condition?: string;
|
|
134
|
+
/** True when the play was inferred from context rather than told via resistance_type / risk_type. */
|
|
135
|
+
provisional: boolean;
|
|
136
|
+
source: string;
|
|
137
|
+
}
|
|
138
|
+
export interface RescoreGate {
|
|
139
|
+
clears_when: string;
|
|
140
|
+
deadline_weeks: number;
|
|
141
|
+
}
|
|
142
|
+
/** The change-leader layer: a specific, sequenced route from Fix or Stop toward Go. */
|
|
143
|
+
export interface ChangePlan {
|
|
144
|
+
binding_constraint: string;
|
|
145
|
+
position: 'near_go' | 'contested' | 'near_stop';
|
|
146
|
+
position_detail: string;
|
|
147
|
+
plays: ChangePlay[];
|
|
148
|
+
cost_of_waiting_eur: {
|
|
149
|
+
low: number;
|
|
150
|
+
high: number;
|
|
151
|
+
};
|
|
152
|
+
cost_of_waiting: string;
|
|
153
|
+
rescore_gate: RescoreGate;
|
|
154
|
+
/** Present when the truthful call is Stop rather than Fix. */
|
|
155
|
+
honest_stop?: string;
|
|
156
|
+
}
|
|
94
157
|
export interface RecommendResult {
|
|
95
158
|
current_classification: Classification;
|
|
96
159
|
target_classification: Classification;
|
|
@@ -98,6 +161,8 @@ export interface RecommendResult {
|
|
|
98
161
|
recommendations: Recommendation[];
|
|
99
162
|
projected_confidence: number;
|
|
100
163
|
notes: string[];
|
|
164
|
+
/** Absent when the initiative is already Accelerate. */
|
|
165
|
+
change_plan?: ChangePlan;
|
|
101
166
|
}
|
|
102
167
|
export interface PaceLayerInput {
|
|
103
168
|
revenue_eur: number;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAChB,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAC/D,YAAY,GAAG,WAAW,GAAG,eAAe,GAAG,WAAW,GAC1D,cAAc,GAAG,eAAe,GAAG,aAAa,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE/E,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAC7F,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAC9C,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,aAAa,GAAG,QAAQ,CAAC;AAC3D,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,KAAK,GAAG,MAAM,CAAC;AAC3D,MAAM,MAAM,MAAM,GAAG,aAAa,GAAG,iBAAiB,GAAG,mBAAmB,CAAC;AAC7E,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAE5E,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,mBAAmB,EAAE,WAAW,CAAC;IACjC,gBAAgB,EAAE,WAAW,CAAC;IAC9B,iBAAiB,EAAE,WAAW,CAAC;IAC/B,eAAe,EAAE,WAAW,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,eAAe,CAAC;IACxB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,KAAK,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,QAAQ,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|