@contractspec/module.lifecycle-core 3.7.6 → 3.7.7
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 +46 -56
- package/dist/browser/index.js +161 -161
- package/dist/collectors/signal-collector.d.ts +1 -1
- package/dist/i18n/catalogs/index.d.ts +1 -1
- package/dist/i18n/index.d.ts +7 -7
- package/dist/i18n/locale.d.ts +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +161 -161
- package/dist/node/index.js +161 -161
- package/dist/orchestrator/lifecycle-orchestrator.d.ts +1 -1
- package/package.json +5 -5
- package/src/data/milestones-catalog.json +85 -85
- package/src/data/stage-weights.json +107 -107
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contractspec/module.lifecycle-core",
|
|
3
|
-
"version": "3.7.
|
|
3
|
+
"version": "3.7.7",
|
|
4
4
|
"description": "Core lifecycle stage definitions and transitions",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"contractspec",
|
|
@@ -26,15 +26,15 @@
|
|
|
26
26
|
"dev": "contractspec-bun-build dev",
|
|
27
27
|
"clean": "rimraf dist .turbo",
|
|
28
28
|
"lint": "bun lint:fix",
|
|
29
|
-
"lint:fix": "
|
|
30
|
-
"lint:check": "
|
|
29
|
+
"lint:fix": "biome check --write --unsafe --only=nursery/useSortedClasses . && biome check --write .",
|
|
30
|
+
"lint:check": "biome check .",
|
|
31
31
|
"test": "bun test",
|
|
32
32
|
"prebuild": "contractspec-bun-build prebuild",
|
|
33
33
|
"typecheck": "tsc --noEmit"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@contractspec/lib.lifecycle": "3.7.
|
|
37
|
-
"@contractspec/lib.contracts-spec": "
|
|
36
|
+
"@contractspec/lib.lifecycle": "3.7.7",
|
|
37
|
+
"@contractspec/lib.contracts-spec": "4.0.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@contractspec/tool.typescript": "3.7.6",
|
|
@@ -1,87 +1,87 @@
|
|
|
1
1
|
[
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
2
|
+
{
|
|
3
|
+
"id": "stage0-problem-statement",
|
|
4
|
+
"stage": 0,
|
|
5
|
+
"category": "product",
|
|
6
|
+
"title": "Write the pain statement",
|
|
7
|
+
"description": "Capture the clearest description of the top problem in the customer’s own words.",
|
|
8
|
+
"priority": 1,
|
|
9
|
+
"actionItems": [
|
|
10
|
+
"Interview at least 5 ideal customers",
|
|
11
|
+
"Synthesize quotes into a one-page brief"
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "stage1-prototype-loop",
|
|
16
|
+
"stage": 1,
|
|
17
|
+
"category": "product",
|
|
18
|
+
"title": "Prototype feedback loop",
|
|
19
|
+
"description": "Ship a clickable prototype and gather 3 rounds of feedback.",
|
|
20
|
+
"priority": 2,
|
|
21
|
+
"actionItems": [
|
|
22
|
+
"Create a low-fidelity prototype",
|
|
23
|
+
"Schedule standing feedback calls"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "stage2-activation",
|
|
28
|
+
"stage": 2,
|
|
29
|
+
"category": "operations",
|
|
30
|
+
"title": "Activation checklist",
|
|
31
|
+
"description": "Define the minimum steps required for a new user to succeed.",
|
|
32
|
+
"priority": 1,
|
|
33
|
+
"actionItems": [
|
|
34
|
+
"Document onboarding flow",
|
|
35
|
+
"Instrument activation analytics"
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "stage3-retention-narrative",
|
|
40
|
+
"stage": 3,
|
|
41
|
+
"category": "product",
|
|
42
|
+
"title": "Retention narrative",
|
|
43
|
+
"description": "Create the before/after story that proves why users stay.",
|
|
44
|
+
"priority": 2,
|
|
45
|
+
"actionItems": [
|
|
46
|
+
"Interview 3 retained users",
|
|
47
|
+
"Publish a one-pager with concrete metrics"
|
|
48
|
+
]
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": "stage4-growth-loop",
|
|
52
|
+
"stage": 4,
|
|
53
|
+
"category": "growth",
|
|
54
|
+
"title": "Install a growth loop",
|
|
55
|
+
"description": "Stand up a repeatable acquisition → activation → referral motion.",
|
|
56
|
+
"priority": 1,
|
|
57
|
+
"actionItems": [
|
|
58
|
+
"Define loop metrics",
|
|
59
|
+
"Assign owners for each stage",
|
|
60
|
+
"Review weekly"
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "stage5-platform-blueprint",
|
|
65
|
+
"stage": 5,
|
|
66
|
+
"category": "product",
|
|
67
|
+
"title": "Platform blueprint",
|
|
68
|
+
"description": "Align on APIs, integrations, and governance for partners.",
|
|
69
|
+
"priority": 2,
|
|
70
|
+
"actionItems": [
|
|
71
|
+
"Create integration scoring rubric",
|
|
72
|
+
"Publish partner onboarding checklist"
|
|
73
|
+
]
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"id": "stage6-renewal-ops",
|
|
77
|
+
"stage": 6,
|
|
78
|
+
"category": "operations",
|
|
79
|
+
"title": "Renewal operating rhythm",
|
|
80
|
+
"description": "Decide whether to optimize, reinvest, or sunset each major surface.",
|
|
81
|
+
"priority": 1,
|
|
82
|
+
"actionItems": [
|
|
83
|
+
"Hold quarterly renewal review",
|
|
84
|
+
"Document reinvestment bets"
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
87
|
]
|
|
@@ -1,109 +1,109 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
2
|
+
"Exploration": {
|
|
3
|
+
"base": 0.35,
|
|
4
|
+
"metrics": {
|
|
5
|
+
"activeUsers": { "weight": 0.3, "direction": "lte", "threshold": 5 },
|
|
6
|
+
"customerCount": { "weight": 0.2, "direction": "lte", "threshold": 3 },
|
|
7
|
+
"teamSize": { "weight": 0.1, "direction": "lte", "threshold": 3 }
|
|
8
|
+
},
|
|
9
|
+
"signalKinds": {
|
|
10
|
+
"qualitative": 0.4,
|
|
11
|
+
"metric": 0.1
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"ProblemSolutionFit": {
|
|
15
|
+
"base": 0.4,
|
|
16
|
+
"metrics": {
|
|
17
|
+
"activeUsers": { "weight": 0.2, "direction": "gte", "threshold": 5 },
|
|
18
|
+
"customerCount": { "weight": 0.2, "direction": "gte", "threshold": 3 }
|
|
19
|
+
},
|
|
20
|
+
"signalKinds": {
|
|
21
|
+
"qualitative": 0.3,
|
|
22
|
+
"event": 0.1
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"MvpEarlyTraction": {
|
|
26
|
+
"base": 0.45,
|
|
27
|
+
"metrics": {
|
|
28
|
+
"activeUsers": { "weight": 0.25, "direction": "gte", "threshold": 25 },
|
|
29
|
+
"weeklyActiveUsers": {
|
|
30
|
+
"weight": 0.25,
|
|
31
|
+
"direction": "gte",
|
|
32
|
+
"threshold": 20
|
|
33
|
+
},
|
|
34
|
+
"retentionRate": { "weight": 0.2, "direction": "gte", "threshold": 0.25 }
|
|
35
|
+
},
|
|
36
|
+
"signalKinds": {
|
|
37
|
+
"metric": 0.15,
|
|
38
|
+
"event": 0.1
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"ProductMarketFit": {
|
|
42
|
+
"base": 0.5,
|
|
43
|
+
"metrics": {
|
|
44
|
+
"retentionRate": {
|
|
45
|
+
"weight": 0.35,
|
|
46
|
+
"direction": "gte",
|
|
47
|
+
"threshold": 0.45
|
|
48
|
+
},
|
|
49
|
+
"monthlyRecurringRevenue": {
|
|
50
|
+
"weight": 0.25,
|
|
51
|
+
"direction": "gte",
|
|
52
|
+
"threshold": 10000
|
|
53
|
+
},
|
|
54
|
+
"customerCount": { "weight": 0.2, "direction": "gte", "threshold": 30 }
|
|
55
|
+
},
|
|
56
|
+
"signalKinds": {
|
|
57
|
+
"metric": 0.15,
|
|
58
|
+
"event": 0.1
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"GrowthScaleUp": {
|
|
62
|
+
"base": 0.55,
|
|
63
|
+
"metrics": {
|
|
64
|
+
"retentionRate": { "weight": 0.2, "direction": "gte", "threshold": 0.55 },
|
|
65
|
+
"monthlyRecurringRevenue": {
|
|
66
|
+
"weight": 0.3,
|
|
67
|
+
"direction": "gte",
|
|
68
|
+
"threshold": 50000
|
|
69
|
+
},
|
|
70
|
+
"teamSize": { "weight": 0.15, "direction": "gte", "threshold": 15 }
|
|
71
|
+
},
|
|
72
|
+
"signalKinds": {
|
|
73
|
+
"event": 0.2,
|
|
74
|
+
"metric": 0.15
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"ExpansionPlatform": {
|
|
78
|
+
"base": 0.6,
|
|
79
|
+
"metrics": {
|
|
80
|
+
"monthlyRecurringRevenue": {
|
|
81
|
+
"weight": 0.35,
|
|
82
|
+
"direction": "gte",
|
|
83
|
+
"threshold": 150000
|
|
84
|
+
},
|
|
85
|
+
"customerCount": { "weight": 0.2, "direction": "gte", "threshold": 100 },
|
|
86
|
+
"teamSize": { "weight": 0.15, "direction": "gte", "threshold": 40 }
|
|
87
|
+
},
|
|
88
|
+
"signalKinds": {
|
|
89
|
+
"event": 0.2,
|
|
90
|
+
"milestone": 0.1
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"MaturityRenewal": {
|
|
94
|
+
"base": 0.6,
|
|
95
|
+
"metrics": {
|
|
96
|
+
"monthlyRecurringRevenue": {
|
|
97
|
+
"weight": 0.25,
|
|
98
|
+
"direction": "gte",
|
|
99
|
+
"threshold": 250000
|
|
100
|
+
},
|
|
101
|
+
"teamSize": { "weight": 0.15, "direction": "gte", "threshold": 80 },
|
|
102
|
+
"burnMultiple": { "weight": 0.2, "direction": "lte", "threshold": 1.5 }
|
|
103
|
+
},
|
|
104
|
+
"signalKinds": {
|
|
105
|
+
"event": 0.2,
|
|
106
|
+
"milestone": 0.15
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
109
|
}
|