@medicine-wheel/gap-analysis 0.26.2 → 0.26.4
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/README.md +89 -28
- package/dist/index.d.ts +98 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +148 -7
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,41 +1,52 @@
|
|
|
1
1
|
# @medicine-wheel/gap-analysis
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
A gap analysis looks for what is missing. It measures what is true now against
|
|
4
|
+
a prior state that existed, names the difference, and lists elimination steps
|
|
5
|
+
you can verify. Root cause, incidents, regressions, troubleshooting: when
|
|
6
|
+
something worked and stopped, the technique can be useful.
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
It is not part of the creative orientation. This package lets the analysis
|
|
9
|
+
happen, then turns the work to the creative orientation.
|
|
10
|
+
|
|
11
|
+
One question confirms that an analysis fits:
|
|
8
12
|
|
|
9
13
|
> **Is there a prior state you are restoring?**
|
|
10
14
|
|
|
11
|
-
**Yes, and you can evidence it.**
|
|
12
|
-
|
|
15
|
+
**Yes, and you can evidence it.** Open the analysis: baseline, observation, the
|
|
16
|
+
difference between them, and elimination steps you can verify.
|
|
13
17
|
|
|
14
|
-
**No
|
|
18
|
+
**No, you cannot name a state that actually existed.** Then the difference has
|
|
15
19
|
nothing to be measured against, and
|
|
16
20
|
[`@medicine-wheel/creative-orientation`](https://www.npmjs.com/package/@medicine-wheel/creative-orientation)
|
|
17
21
|
will point you toward structural tension instead. A feeling of urgency is not
|
|
18
22
|
evidence.
|
|
19
23
|
|
|
20
|
-
That requirement — a baseline with evidence — is what separates a fire from a
|
|
21
|
-
creating act, and it is why this package carries the name it does.
|
|
22
|
-
|
|
23
24
|
> [!WARNING]
|
|
24
25
|
> **Experimental alpha.** Part of the Medicine Wheel Developer Suite, which is
|
|
25
26
|
> under active development. APIs change between patch versions and all packages
|
|
26
27
|
> move in lockstep — pin exact versions. See
|
|
27
28
|
> [ALPHA.md](https://github.com/jgwill/medicine-wheel/blob/main/ALPHA.md).
|
|
28
29
|
|
|
29
|
-
##
|
|
30
|
+
## What it is for
|
|
31
|
+
|
|
32
|
+
A gap analysis looks for what is missing, and its main job here is to teach
|
|
33
|
+
the model using it. A model that has found what is missing is pulled toward
|
|
34
|
+
filling each missing item, one task per item. That is not what we are doing.
|
|
30
35
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
one is the **right** move — oscillating back to a baseline is the goal when you
|
|
34
|
-
are below the baseline.
|
|
36
|
+
So the package lets the analysis happen, then names that pull and turns the
|
|
37
|
+
work to the creative orientation:
|
|
35
38
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
+
1. **Findings become current reality.** What the analysis found is kept as
|
|
40
|
+
facts about today. It is not turned into a list of tasks.
|
|
41
|
+
2. **The pull is named.** The reflection says, in plain words, that the next
|
|
42
|
+
impulse is to fill each missing item, and that this is not what we are doing.
|
|
43
|
+
3. **The desired outcome is asked for on its own terms.** What do we want to
|
|
44
|
+
create, stated as something that will exist? It is not derived from the
|
|
45
|
+
findings.
|
|
46
|
+
4. **The chart follows.** Current reality (including the findings) and the
|
|
47
|
+
desired outcome go into a structural tension chart. Its action steps
|
|
48
|
+
resolve tension toward the outcome. Some findings will matter to it, and
|
|
49
|
+
others will not.
|
|
39
50
|
|
|
40
51
|
## The question at the door
|
|
41
52
|
|
|
@@ -43,9 +54,9 @@ Every analysis carries an orientation reading taken when it was opened, via
|
|
|
43
54
|
`@medicine-wheel/creative-orientation`. The question is always the same: *is a
|
|
44
55
|
prior state actually being restored?*
|
|
45
56
|
|
|
46
|
-
Opening an analysis **requires a baseline with evidence**. That requirement
|
|
47
|
-
|
|
48
|
-
it
|
|
57
|
+
Opening an analysis **requires a baseline with evidence**. That requirement
|
|
58
|
+
separates a restore from a creating act, and a feeling of urgency cannot
|
|
59
|
+
satisfy it.
|
|
49
60
|
|
|
50
61
|
```ts
|
|
51
62
|
import { openGapAnalysis, addStep, doorAdvice } from '@medicine-wheel/gap-analysis';
|
|
@@ -66,6 +77,54 @@ analysis = addStep(analysis, {
|
|
|
66
77
|
});
|
|
67
78
|
```
|
|
68
79
|
|
|
80
|
+
## The turn
|
|
81
|
+
|
|
82
|
+
```ts
|
|
83
|
+
import { turnToCreativeOrientation } from '@medicine-wheel/gap-analysis';
|
|
84
|
+
|
|
85
|
+
const turn = turnToCreativeOrientation(analysis);
|
|
86
|
+
turn.currentReality; // the findings, as facts about today
|
|
87
|
+
turn.reflection; // names the pull to fill each missing item
|
|
88
|
+
turn.nextStep; // { tool: 'create_structural_tension_chart',
|
|
89
|
+
// needs: ['desired_outcome', 'direction'], question }
|
|
90
|
+
|
|
91
|
+
const withOutcome = turnToCreativeOrientation(analysis, {
|
|
92
|
+
desiredOutcome: 'every release publishes its image from the tag, with no one remembering a flag',
|
|
93
|
+
});
|
|
94
|
+
withOutcome.chartDraft;
|
|
95
|
+
// { desired_outcome, current_reality, action_steps: [] }
|
|
96
|
+
// No action step is taken from the findings. Add a direction and create the chart.
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
A desired outcome phrased as removing something is still placed in the draft,
|
|
100
|
+
with `desiredOutcomeAdvice` beside it.
|
|
101
|
+
|
|
102
|
+
The MCP server (`@medicine-wheel/mcp`) carries the same turn as the tool
|
|
103
|
+
`turn_to_creative_orientation`, called after `open_gap_analysis`.
|
|
104
|
+
|
|
105
|
+
### After a check
|
|
106
|
+
|
|
107
|
+
A check (a validator, an audit, a coverage reading) has no baseline that
|
|
108
|
+
existed. It reads a plan or a graph as it is and says what it does not find.
|
|
109
|
+
Its findings turn the same way:
|
|
110
|
+
|
|
111
|
+
```ts
|
|
112
|
+
const turn = turnToCreativeOrientation({
|
|
113
|
+
check: 'accountability_validator',
|
|
114
|
+
findings: ['CRITICAL: The plan has no Elder co-investigators; …'],
|
|
115
|
+
holds: ['Hold the research while Elder co-investigators are part of the plan.'],
|
|
116
|
+
});
|
|
117
|
+
turn.currentReality; // each finding as { from: 'finding' }, each hold as { from: 'hold' }
|
|
118
|
+
turn.reflection; // names the pull, and says the holds stay as the check states them
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
A hold says what must be in place before the research continues: community
|
|
122
|
+
review, consent, governance. It is kept as current reality, reached with the
|
|
123
|
+
community, and never turned into a task. The MCP checks
|
|
124
|
+
(`accountability_validator`, `ocap_compliance_checker`, `wilson_paradigm_checker`,
|
|
125
|
+
`mw_snapshot_transformation`) answer `next_tool: "turn_to_creative_orientation"`
|
|
126
|
+
with `next_tool_args` ready to pass.
|
|
127
|
+
|
|
69
128
|
## It advises; it never refuses
|
|
70
129
|
|
|
71
130
|
If you open an analysis without evidence for the baseline, you get the analysis
|
|
@@ -81,18 +140,20 @@ check is a wish; the fire is out only when something says so.
|
|
|
81
140
|
## Where it sits
|
|
82
141
|
|
|
83
142
|
```
|
|
84
|
-
creative-orientation ......... the
|
|
85
|
-
├── gap-analysis .........
|
|
86
|
-
└──
|
|
143
|
+
creative-orientation ......... the question asked first
|
|
144
|
+
├── gap-analysis ......... a prior state is being restored: looks for what is missing
|
|
145
|
+
│ └── turnToCreativeOrientation ... findings become current reality
|
|
146
|
+
└── structural-tension ... desired outcome, current reality stated as fact, action steps
|
|
87
147
|
```
|
|
88
148
|
|
|
89
|
-
Gap analysis is a
|
|
90
|
-
|
|
91
|
-
to
|
|
149
|
+
Gap analysis is a technique the creative orientation does not include. The
|
|
150
|
+
orientation question comes first, and after an analysis the turn brings the
|
|
151
|
+
work back to a structural tension chart.
|
|
92
152
|
|
|
93
153
|
## Status
|
|
94
154
|
|
|
95
|
-
|
|
155
|
+
Small on purpose. `turnToCreativeOrientation` arrived in 0.26.3, and took a
|
|
156
|
+
check's findings in 0.26.4.
|
|
96
157
|
|
|
97
158
|
## License
|
|
98
159
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @medicine-wheel/gap-analysis
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* A gap analysis looks for what is missing. It measures an observation against
|
|
5
|
+
* a baseline that existed, names the difference, and lists elimination steps
|
|
6
|
+
* that can be verified. That technique can be useful, for instance when
|
|
7
|
+
* something worked and stopped. It is not part of the creative orientation.
|
|
5
8
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
9
|
+
* The package has a second job, and it is the main one: to teach the model
|
|
10
|
+
* using it. A model that has found what is missing is pulled toward filling
|
|
11
|
+
* each missing item. `turnToCreativeOrientation` comes after the analysis. It
|
|
12
|
+
* keeps the findings as current reality, names that pull, and asks for the
|
|
13
|
+
* desired outcome on its own terms, so that a structural tension chart can
|
|
14
|
+
* follow.
|
|
10
15
|
*
|
|
11
|
-
* It carries one question at its door
|
|
12
|
-
* restored?
|
|
16
|
+
* It carries one question at its door (is a prior state actually being
|
|
17
|
+
* restored?) and asks it through `@medicine-wheel/creative-orientation`.
|
|
13
18
|
* It **advises and proceeds**. It never refuses. A package that blocks you is
|
|
14
19
|
* a package you learn to route around.
|
|
15
20
|
*
|
|
@@ -77,4 +82,90 @@ export declare function isClosed(analysis: GapAnalysis): boolean;
|
|
|
77
82
|
* correctly-framed work is noise, and noise is how checks get switched off.
|
|
78
83
|
*/
|
|
79
84
|
export declare function doorAdvice(analysis: GapAnalysis): string | null;
|
|
85
|
+
/** One finding of an analysis, kept as a fact about today. */
|
|
86
|
+
export interface CurrentRealityFact {
|
|
87
|
+
/**
|
|
88
|
+
* The part of the analysis the fact comes from. A check's findings arrive as
|
|
89
|
+
* `finding`, and the holds it keeps as `hold`.
|
|
90
|
+
*/
|
|
91
|
+
from: 'observation' | 'baseline' | 'difference' | 'root-cause' | 'step-done' | 'steps-open' | 'finding' | 'hold';
|
|
92
|
+
/** The fact, stated about today. Never phrased as a task. */
|
|
93
|
+
fact: string;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* What a check found, as the check returns it: a validator, an audit, a
|
|
97
|
+
* coverage reading. A check has no baseline that existed; it reads a plan or a
|
|
98
|
+
* graph as it is today and says what it does not find there.
|
|
99
|
+
*/
|
|
100
|
+
export interface CheckFindings {
|
|
101
|
+
/** The check that produced the findings, e.g. `accountability_validator`. */
|
|
102
|
+
check: string;
|
|
103
|
+
/** Each finding, stated as a fact about the plan or the graph today. */
|
|
104
|
+
findings: string[];
|
|
105
|
+
/**
|
|
106
|
+
* What must be in place before the work continues, as the check states it:
|
|
107
|
+
* community review, consent, governance. A hold is kept as it is. It is
|
|
108
|
+
* reached with the community, not filled in, and it is never turned into a
|
|
109
|
+
* task.
|
|
110
|
+
*/
|
|
111
|
+
holds?: string[];
|
|
112
|
+
}
|
|
113
|
+
/** True when the input is a check's findings rather than a gap analysis. */
|
|
114
|
+
export declare function isCheckFindings(input: unknown): input is CheckFindings;
|
|
115
|
+
export interface TurnOptions {
|
|
116
|
+
/**
|
|
117
|
+
* What we want to create, stated as something that will exist. It is named
|
|
118
|
+
* on its own terms and is not derived from the findings. Without it, the
|
|
119
|
+
* turn asks for it.
|
|
120
|
+
*/
|
|
121
|
+
desiredOutcome?: string;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Input for `create_structural_tension_chart`, except the direction, which
|
|
125
|
+
* the caller chooses.
|
|
126
|
+
*/
|
|
127
|
+
export interface ChartDraft {
|
|
128
|
+
desired_outcome: string;
|
|
129
|
+
current_reality: string;
|
|
130
|
+
/** Always empty: no action step is taken from the findings. */
|
|
131
|
+
action_steps: string[];
|
|
132
|
+
}
|
|
133
|
+
export interface TurnNextStep {
|
|
134
|
+
tool: 'create_structural_tension_chart';
|
|
135
|
+
/** What the chart still needs before it can be created. */
|
|
136
|
+
needs: Array<'desired_outcome' | 'direction'>;
|
|
137
|
+
/** The question the desired outcome answers. */
|
|
138
|
+
question: string;
|
|
139
|
+
}
|
|
140
|
+
export interface CreativeOrientationTurn {
|
|
141
|
+
/** The analysis's id, or `check:<name>` when the input was a check's findings. */
|
|
142
|
+
analysisId: string;
|
|
143
|
+
/** The findings, as facts about today. */
|
|
144
|
+
currentReality: CurrentRealityFact[];
|
|
145
|
+
/** Names the pull to fill each missing item, and says that is not what we are doing. */
|
|
146
|
+
reflection: string;
|
|
147
|
+
nextStep: TurnNextStep;
|
|
148
|
+
/** Present only when a desired outcome was given. */
|
|
149
|
+
chartDraft?: ChartDraft;
|
|
150
|
+
/** Present when the desired outcome given is phrased as removing something. */
|
|
151
|
+
desiredOutcomeAdvice?: string;
|
|
152
|
+
}
|
|
153
|
+
export declare const DESIRED_OUTCOME_QUESTION: "What do we want to create, stated as something that will exist?";
|
|
154
|
+
/**
|
|
155
|
+
* The turn after a gap analysis, or after a check that reports what it did
|
|
156
|
+
* not find.
|
|
157
|
+
*
|
|
158
|
+
* Returns the findings as current-reality facts (never as tasks), the
|
|
159
|
+
* reflection that names the pull to fill each missing item, and the next step:
|
|
160
|
+
* `create_structural_tension_chart`, which needs a desired outcome. With a
|
|
161
|
+
* desired outcome, it also returns a draft chart input whose action steps are
|
|
162
|
+
* empty, because no action step is taken from the findings.
|
|
163
|
+
*
|
|
164
|
+
* A check's findings (`CheckFindings`) turn the same way. Its holds are kept
|
|
165
|
+
* as current reality beside the findings, as the check states them.
|
|
166
|
+
*
|
|
167
|
+
* It advises and proceeds. A desired outcome phrased as removing something is
|
|
168
|
+
* still placed in the draft, with advice beside it.
|
|
169
|
+
*/
|
|
170
|
+
export declare function turnToCreativeOrientation(analysis: GapAnalysis | CheckFindings, options?: TurnOptions): CreativeOrientationTurn;
|
|
80
171
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,22 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DESIRED_OUTCOME_QUESTION = void 0;
|
|
3
4
|
exports.openGapAnalysis = openGapAnalysis;
|
|
4
5
|
exports.addStep = addStep;
|
|
5
6
|
exports.markDone = markDone;
|
|
6
7
|
exports.isClosed = isClosed;
|
|
7
8
|
exports.doorAdvice = doorAdvice;
|
|
9
|
+
exports.isCheckFindings = isCheckFindings;
|
|
10
|
+
exports.turnToCreativeOrientation = turnToCreativeOrientation;
|
|
8
11
|
/**
|
|
9
12
|
* @medicine-wheel/gap-analysis
|
|
10
13
|
*
|
|
11
|
-
*
|
|
14
|
+
* A gap analysis looks for what is missing. It measures an observation against
|
|
15
|
+
* a baseline that existed, names the difference, and lists elimination steps
|
|
16
|
+
* that can be verified. That technique can be useful, for instance when
|
|
17
|
+
* something worked and stopped. It is not part of the creative orientation.
|
|
12
18
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
19
|
+
* The package has a second job, and it is the main one: to teach the model
|
|
20
|
+
* using it. A model that has found what is missing is pulled toward filling
|
|
21
|
+
* each missing item. `turnToCreativeOrientation` comes after the analysis. It
|
|
22
|
+
* keeps the findings as current reality, names that pull, and asks for the
|
|
23
|
+
* desired outcome on its own terms, so that a structural tension chart can
|
|
24
|
+
* follow.
|
|
17
25
|
*
|
|
18
|
-
* It carries one question at its door
|
|
19
|
-
* restored?
|
|
26
|
+
* It carries one question at its door (is a prior state actually being
|
|
27
|
+
* restored?) and asks it through `@medicine-wheel/creative-orientation`.
|
|
20
28
|
* It **advises and proceeds**. It never refuses. A package that blocks you is
|
|
21
29
|
* a package you learn to route around.
|
|
22
30
|
*
|
|
@@ -85,4 +93,137 @@ function isClosed(analysis) {
|
|
|
85
93
|
function doorAdvice(analysis) {
|
|
86
94
|
return (0, creative_orientation_1.worthSaying)(analysis.orientation) ? analysis.orientation.advice ?? null : null;
|
|
87
95
|
}
|
|
96
|
+
/** True when the input is a check's findings rather than a gap analysis. */
|
|
97
|
+
function isCheckFindings(input) {
|
|
98
|
+
return (!!input &&
|
|
99
|
+
typeof input === 'object' &&
|
|
100
|
+
typeof input.check === 'string' &&
|
|
101
|
+
Array.isArray(input.findings));
|
|
102
|
+
}
|
|
103
|
+
exports.DESIRED_OUTCOME_QUESTION = 'What do we want to create, stated as something that will exist?';
|
|
104
|
+
function asSentence(text) {
|
|
105
|
+
const trimmed = text.trim();
|
|
106
|
+
return /[.!?]$/.test(trimmed) ? trimmed : `${trimmed}.`;
|
|
107
|
+
}
|
|
108
|
+
function withNote(text, label, note) {
|
|
109
|
+
const base = text.trim().replace(/[.]$/, '');
|
|
110
|
+
return note?.trim() ? `${base} (${label}: ${note.trim()}).` : `${base}.`;
|
|
111
|
+
}
|
|
112
|
+
function findingsAsFacts(analysis) {
|
|
113
|
+
const facts = [
|
|
114
|
+
{ from: 'observation', fact: `Observed now: ${withNote(analysis.current.description, 'source', analysis.current.source)}` },
|
|
115
|
+
{ from: 'baseline', fact: `Before: ${withNote(analysis.baseline.description, 'evidence', analysis.baseline.evidence)}` },
|
|
116
|
+
{ from: 'difference', fact: `The analysis found: ${asSentence(analysis.difference)}` },
|
|
117
|
+
];
|
|
118
|
+
if (analysis.rootCause?.trim()) {
|
|
119
|
+
facts.push({ from: 'root-cause', fact: `Named cause: ${asSentence(analysis.rootCause)}` });
|
|
120
|
+
}
|
|
121
|
+
const steps = analysis.steps ?? [];
|
|
122
|
+
for (const step of steps.filter(s => s.done === true)) {
|
|
123
|
+
facts.push({ from: 'step-done', fact: `Done: ${withNote(step.action, 'verified by', step.verifiedBy)}` });
|
|
124
|
+
}
|
|
125
|
+
const open = steps.filter(s => s.done !== true).length;
|
|
126
|
+
if (open > 0) {
|
|
127
|
+
facts.push({
|
|
128
|
+
from: 'steps-open',
|
|
129
|
+
fact: `The analysis lists ${open} open elimination step${open === 1 ? '' : 's'}. They stay with the analysis and are not carried into a chart.`,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
return facts;
|
|
133
|
+
}
|
|
134
|
+
function checkFindingsAsFacts(input) {
|
|
135
|
+
const facts = input.findings
|
|
136
|
+
.filter(f => typeof f === 'string' && f.trim())
|
|
137
|
+
.map(f => ({ from: 'finding', fact: asSentence(f) }));
|
|
138
|
+
for (const hold of input.holds ?? []) {
|
|
139
|
+
if (typeof hold === 'string' && hold.trim())
|
|
140
|
+
facts.push({ from: 'hold', fact: asSentence(hold) });
|
|
141
|
+
}
|
|
142
|
+
return facts;
|
|
143
|
+
}
|
|
144
|
+
function reflectionForCheck(input) {
|
|
145
|
+
const n = input.findings.filter(f => typeof f === 'string' && f.trim()).length;
|
|
146
|
+
const holds = (input.holds ?? []).some(h => typeof h === 'string' && h.trim());
|
|
147
|
+
return [
|
|
148
|
+
`The check ${input.check} found what is missing: ${n} finding${n === 1 ? '' : 's'}, each a fact about the plan or the graph today.`,
|
|
149
|
+
'The pull now is to fill each missing item, one task per item, until nothing is missing. That is not what we are doing.',
|
|
150
|
+
'The findings are kept as current reality, stated as fact. They are not a list of tasks.',
|
|
151
|
+
...(holds
|
|
152
|
+
? ['The holds stay as the check states them: they say what must be in place before the work continues. They are reached with the community, not filled in, and consent is the community\'s to give.']
|
|
153
|
+
: []),
|
|
154
|
+
`Next comes the desired outcome, named on its own terms. ${exports.DESIRED_OUTCOME_QUESTION} It does not come from the findings.`,
|
|
155
|
+
'Then a structural tension chart holds current reality and the desired outcome, and its action steps resolve the tension toward that outcome. Some findings will matter to it, and others will not.',
|
|
156
|
+
].join(' ');
|
|
157
|
+
}
|
|
158
|
+
function reflectionFor(analysis) {
|
|
159
|
+
return [
|
|
160
|
+
`This gap analysis found what is missing: ${asSentence(analysis.difference)}`,
|
|
161
|
+
'The pull now is to fill each missing item, one task per item, until nothing is missing. That is not what we are doing.',
|
|
162
|
+
'The findings are kept as current reality, stated as fact. They are not a list of tasks.',
|
|
163
|
+
`Next comes the desired outcome, named on its own terms. ${exports.DESIRED_OUTCOME_QUESTION} It does not come from the findings.`,
|
|
164
|
+
'Then a structural tension chart holds current reality and the desired outcome, and its action steps resolve the tension toward that outcome. Some findings will matter to it, and others will not.',
|
|
165
|
+
].join(' ');
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* The turn after a gap analysis, or after a check that reports what it did
|
|
169
|
+
* not find.
|
|
170
|
+
*
|
|
171
|
+
* Returns the findings as current-reality facts (never as tasks), the
|
|
172
|
+
* reflection that names the pull to fill each missing item, and the next step:
|
|
173
|
+
* `create_structural_tension_chart`, which needs a desired outcome. With a
|
|
174
|
+
* desired outcome, it also returns a draft chart input whose action steps are
|
|
175
|
+
* empty, because no action step is taken from the findings.
|
|
176
|
+
*
|
|
177
|
+
* A check's findings (`CheckFindings`) turn the same way. Its holds are kept
|
|
178
|
+
* as current reality beside the findings, as the check states them.
|
|
179
|
+
*
|
|
180
|
+
* It advises and proceeds. A desired outcome phrased as removing something is
|
|
181
|
+
* still placed in the draft, with advice beside it.
|
|
182
|
+
*/
|
|
183
|
+
function turnToCreativeOrientation(analysis, options = {}) {
|
|
184
|
+
let analysisId;
|
|
185
|
+
let currentReality;
|
|
186
|
+
let reflection;
|
|
187
|
+
if (isCheckFindings(analysis)) {
|
|
188
|
+
if (!analysis.check.trim() || !analysis.findings.some(f => typeof f === 'string' && f.trim())) {
|
|
189
|
+
throw new Error('The turn needs a check\'s findings: the check\'s name and at least one finding.');
|
|
190
|
+
}
|
|
191
|
+
analysisId = `check:${analysis.check.trim()}`;
|
|
192
|
+
currentReality = checkFindingsAsFacts(analysis);
|
|
193
|
+
reflection = reflectionForCheck(analysis);
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
if (!analysis ||
|
|
197
|
+
typeof analysis.difference !== 'string' ||
|
|
198
|
+
!analysis.current?.description?.trim() ||
|
|
199
|
+
!analysis.baseline?.description?.trim()) {
|
|
200
|
+
throw new Error('The turn needs a gap analysis as openGapAnalysis returns it: baseline, current and difference.');
|
|
201
|
+
}
|
|
202
|
+
analysisId = analysis.id;
|
|
203
|
+
currentReality = findingsAsFacts(analysis);
|
|
204
|
+
reflection = reflectionFor(analysis);
|
|
205
|
+
}
|
|
206
|
+
const desiredOutcome = options.desiredOutcome?.trim() || undefined;
|
|
207
|
+
const turn = {
|
|
208
|
+
analysisId,
|
|
209
|
+
currentReality,
|
|
210
|
+
reflection,
|
|
211
|
+
nextStep: {
|
|
212
|
+
tool: 'create_structural_tension_chart',
|
|
213
|
+
needs: desiredOutcome ? ['direction'] : ['desired_outcome', 'direction'],
|
|
214
|
+
question: exports.DESIRED_OUTCOME_QUESTION,
|
|
215
|
+
},
|
|
216
|
+
};
|
|
217
|
+
if (desiredOutcome) {
|
|
218
|
+
turn.chartDraft = {
|
|
219
|
+
desired_outcome: desiredOutcome,
|
|
220
|
+
current_reality: currentReality.map(f => f.fact).join(' '),
|
|
221
|
+
action_steps: [],
|
|
222
|
+
};
|
|
223
|
+
const reading = (0, creative_orientation_1.readOrientation)({ outcome: desiredOutcome, restores: null });
|
|
224
|
+
if ((0, creative_orientation_1.worthSaying)(reading))
|
|
225
|
+
turn.desiredOutcomeAdvice = reading.advice;
|
|
226
|
+
}
|
|
227
|
+
return turn;
|
|
228
|
+
}
|
|
88
229
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@medicine-wheel/gap-analysis",
|
|
3
|
-
"version": "0.26.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.26.4",
|
|
4
|
+
"description": "A gap analysis looks for what is missing: evidenced baseline, observation, difference, verifiable elimination steps. Useful when something worked and stopped (root cause, incidents, regressions, troubleshooting). It is not part of the creative orientation: turnToCreativeOrientation follows the analysis, keeps its findings as current reality, names the pull to fill each missing item, and asks for the desired outcome of a structural tension chart.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"exports": {
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"directory": "src/gap-analysis"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@medicine-wheel/creative-orientation": "^0.26.
|
|
48
|
+
"@medicine-wheel/creative-orientation": "^0.26.4"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"typescript": "^5.7.0"
|