@principles/core 1.114.0 → 1.116.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/runtime-v2/__tests__/activation-types-helpers.test.d.ts +20 -0
- package/dist/runtime-v2/__tests__/activation-types-helpers.test.d.ts.map +1 -0
- package/dist/runtime-v2/__tests__/activation-types-helpers.test.js +223 -0
- package/dist/runtime-v2/__tests__/activation-types-helpers.test.js.map +1 -0
- package/dist/runtime-v2/__tests__/architecture-regression.test.js +3 -3
- package/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/attack-e2e-pipeline-smoke.test.js +1 -1
- package/dist/runtime-v2/__tests__/attack-e2e-pipeline-smoke.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/evidence-guards.test.d.ts +18 -0
- package/dist/runtime-v2/__tests__/evidence-guards.test.d.ts.map +1 -0
- package/dist/runtime-v2/__tests__/evidence-guards.test.js +155 -0
- package/dist/runtime-v2/__tests__/evidence-guards.test.js.map +1 -0
- package/dist/runtime-v2/__tests__/pain-evidence-contract.test.js +1 -1
- package/dist/runtime-v2/__tests__/pain-evidence-contract.test.js.map +1 -1
- package/dist/runtime-v2/activation/__tests__/approval-queue.test.d.ts +15 -0
- package/dist/runtime-v2/activation/__tests__/approval-queue.test.d.ts.map +1 -1
- package/dist/runtime-v2/activation/__tests__/approval-queue.test.js +326 -164
- package/dist/runtime-v2/activation/__tests__/approval-queue.test.js.map +1 -1
- package/dist/runtime-v2/activation/__tests__/low-risk-writers.test.d.ts +21 -0
- package/dist/runtime-v2/activation/__tests__/low-risk-writers.test.d.ts.map +1 -0
- package/dist/runtime-v2/activation/__tests__/low-risk-writers.test.js +468 -0
- package/dist/runtime-v2/activation/__tests__/low-risk-writers.test.js.map +1 -0
- package/dist/runtime-v2/config/pd-config-types.d.ts.map +1 -1
- package/dist/runtime-v2/config/pd-config-types.js +2 -3
- package/dist/runtime-v2/config/pd-config-types.js.map +1 -1
- package/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.js +2 -2
- package/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.js.map +1 -1
- package/dist/runtime-v2/observer/empathy-observer.js +1 -1
- package/dist/runtime-v2/observer/empathy-observer.js.map +1 -1
- package/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.js +7 -15
- package/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.js.map +1 -1
- package/dist/runtime-v2/runner/__tests__/m9-e2e.test.js +3 -10
- package/dist/runtime-v2/runner/__tests__/m9-e2e.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Activation Types Helper Functions Tests
|
|
3
|
+
*
|
|
4
|
+
* Unit tests for helper functions in activation-types.ts:
|
|
5
|
+
* - makeIdempotencyKey()
|
|
6
|
+
* - isLowRiskChannel()
|
|
7
|
+
* - getChannelRiskLevel()
|
|
8
|
+
* - mapConfidenceToLabel()
|
|
9
|
+
*
|
|
10
|
+
* These functions are critical for activation dispatch decisions and
|
|
11
|
+
* approval queue operations. Tests verify boundary conditions and
|
|
12
|
+
* all possible input combinations.
|
|
13
|
+
*
|
|
14
|
+
* ERR checklist:
|
|
15
|
+
* - ERR-002: Every decision path carries reason + nextAction
|
|
16
|
+
* - ERR-009: Malformed state fails loud
|
|
17
|
+
* - ERR-025: Production-path tests, not just helpers
|
|
18
|
+
*/
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=activation-types-helpers.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activation-types-helpers.test.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/__tests__/activation-types-helpers.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Activation Types Helper Functions Tests
|
|
3
|
+
*
|
|
4
|
+
* Unit tests for helper functions in activation-types.ts:
|
|
5
|
+
* - makeIdempotencyKey()
|
|
6
|
+
* - isLowRiskChannel()
|
|
7
|
+
* - getChannelRiskLevel()
|
|
8
|
+
* - mapConfidenceToLabel()
|
|
9
|
+
*
|
|
10
|
+
* These functions are critical for activation dispatch decisions and
|
|
11
|
+
* approval queue operations. Tests verify boundary conditions and
|
|
12
|
+
* all possible input combinations.
|
|
13
|
+
*
|
|
14
|
+
* ERR checklist:
|
|
15
|
+
* - ERR-002: Every decision path carries reason + nextAction
|
|
16
|
+
* - ERR-009: Malformed state fails loud
|
|
17
|
+
* - ERR-025: Production-path tests, not just helpers
|
|
18
|
+
*/
|
|
19
|
+
import { describe, it, expect } from 'vitest';
|
|
20
|
+
import { makeIdempotencyKey, isLowRiskChannel, getChannelRiskLevel, mapConfidenceToLabel, LOW_RISK_CHANNELS, HIGH_RISK_CHANNEL_MAP, AUTO_PROMOTION_CONFIDENCE_THRESHOLD, AUTO_PROMOTABLE_CHANNELS, } from '../activation/activation-types';
|
|
21
|
+
// ── makeIdempotencyKey Tests ──────────────────────────────────────────────────
|
|
22
|
+
describe('makeIdempotencyKey', () => {
|
|
23
|
+
it('produces expected format: artifactId::channel', () => {
|
|
24
|
+
expect(makeIdempotencyKey('art-001', 'prompt')).toBe('art-001::prompt');
|
|
25
|
+
expect(makeIdempotencyKey('art-abc', 'code_tool_hook')).toBe('art-abc::code_tool_hook');
|
|
26
|
+
expect(makeIdempotencyKey('art-xyz', 'defer_archive')).toBe('art-xyz::defer_archive');
|
|
27
|
+
});
|
|
28
|
+
it('handles empty artifactId', () => {
|
|
29
|
+
expect(makeIdempotencyKey('', 'prompt')).toBe('::prompt');
|
|
30
|
+
});
|
|
31
|
+
it('handles artifactId with special characters', () => {
|
|
32
|
+
expect(makeIdempotencyKey('art-with-dashes', 'prompt')).toBe('art-with-dashes::prompt');
|
|
33
|
+
expect(makeIdempotencyKey('art_with_underscores', 'prompt')).toBe('art_with_underscores::prompt');
|
|
34
|
+
expect(makeIdempotencyKey('art.with.dots', 'prompt')).toBe('art.with.dots::prompt');
|
|
35
|
+
});
|
|
36
|
+
it('handles artifactId with colons (edge case)', () => {
|
|
37
|
+
// Colons in artifactId could cause ambiguity, but function doesn't escape
|
|
38
|
+
expect(makeIdempotencyKey('art:001', 'prompt')).toBe('art:001::prompt');
|
|
39
|
+
});
|
|
40
|
+
it('handles all valid channels', () => {
|
|
41
|
+
const channels = [
|
|
42
|
+
'prompt', 'defer_archive', 'skill', 'code_tool_hook', 'model_training',
|
|
43
|
+
];
|
|
44
|
+
for (const channel of channels) {
|
|
45
|
+
const key = makeIdempotencyKey('art-001', channel);
|
|
46
|
+
expect(key).toContain('::');
|
|
47
|
+
expect(key.endsWith(channel)).toBe(true);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
it('is deterministic — same inputs produce same output', () => {
|
|
51
|
+
const key1 = makeIdempotencyKey('art-001', 'prompt');
|
|
52
|
+
const key2 = makeIdempotencyKey('art-001', 'prompt');
|
|
53
|
+
expect(key1).toBe(key2);
|
|
54
|
+
});
|
|
55
|
+
it('is reversible — can parse back artifactId and channel', () => {
|
|
56
|
+
const key = makeIdempotencyKey('art-001', 'prompt');
|
|
57
|
+
const [artifactId, channel] = key.split('::');
|
|
58
|
+
expect(artifactId).toBe('art-001');
|
|
59
|
+
expect(channel).toBe('prompt');
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
// ── isLowRiskChannel Tests ───────────────────────────────────────────────────
|
|
63
|
+
describe('isLowRiskChannel', () => {
|
|
64
|
+
it('returns true for prompt channel', () => {
|
|
65
|
+
expect(isLowRiskChannel('prompt')).toBe(true);
|
|
66
|
+
});
|
|
67
|
+
it('returns true for defer_archive channel', () => {
|
|
68
|
+
expect(isLowRiskChannel('defer_archive')).toBe(true);
|
|
69
|
+
});
|
|
70
|
+
it('returns false for skill channel', () => {
|
|
71
|
+
expect(isLowRiskChannel('skill')).toBe(false);
|
|
72
|
+
});
|
|
73
|
+
it('returns false for code_tool_hook channel', () => {
|
|
74
|
+
expect(isLowRiskChannel('code_tool_hook')).toBe(false);
|
|
75
|
+
});
|
|
76
|
+
it('returns false for model_training channel', () => {
|
|
77
|
+
expect(isLowRiskChannel('model_training')).toBe(false);
|
|
78
|
+
});
|
|
79
|
+
it('LOW_RISK_CHANNELS contains exactly prompt and defer_archive', () => {
|
|
80
|
+
expect(LOW_RISK_CHANNELS).toHaveLength(2);
|
|
81
|
+
expect(LOW_RISK_CHANNELS).toContain('prompt');
|
|
82
|
+
expect(LOW_RISK_CHANNELS).toContain('defer_archive');
|
|
83
|
+
});
|
|
84
|
+
it('isLowRiskChannel matches LOW_RISK_CHANNELS membership', () => {
|
|
85
|
+
const allChannels = [
|
|
86
|
+
'prompt', 'defer_archive', 'skill', 'code_tool_hook', 'model_training',
|
|
87
|
+
];
|
|
88
|
+
for (const channel of allChannels) {
|
|
89
|
+
expect(isLowRiskChannel(channel)).toBe(LOW_RISK_CHANNELS.includes(channel));
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
it('returns false for unknown channel (safe default)', () => {
|
|
93
|
+
expect(isLowRiskChannel('unknown')).toBe(false);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
// ── getChannelRiskLevel Tests ────────────────────────────────────────────────
|
|
97
|
+
describe('getChannelRiskLevel', () => {
|
|
98
|
+
it('returns low for prompt channel', () => {
|
|
99
|
+
expect(getChannelRiskLevel('prompt')).toBe('low');
|
|
100
|
+
});
|
|
101
|
+
it('returns low for defer_archive channel', () => {
|
|
102
|
+
expect(getChannelRiskLevel('defer_archive')).toBe('low');
|
|
103
|
+
});
|
|
104
|
+
it('returns medium for skill channel', () => {
|
|
105
|
+
expect(getChannelRiskLevel('skill')).toBe('medium');
|
|
106
|
+
});
|
|
107
|
+
it('returns high for code_tool_hook channel', () => {
|
|
108
|
+
expect(getChannelRiskLevel('code_tool_hook')).toBe('high');
|
|
109
|
+
});
|
|
110
|
+
it('returns critical for model_training channel', () => {
|
|
111
|
+
expect(getChannelRiskLevel('model_training')).toBe('critical');
|
|
112
|
+
});
|
|
113
|
+
it('returns high for unknown channel (safe default)', () => {
|
|
114
|
+
expect(getChannelRiskLevel('unknown')).toBe('high');
|
|
115
|
+
});
|
|
116
|
+
it('HIGH_RISK_CHANNEL_MAP has correct entries', () => {
|
|
117
|
+
expect(HIGH_RISK_CHANNEL_MAP.skill).toBe('medium');
|
|
118
|
+
expect(HIGH_RISK_CHANNEL_MAP.code_tool_hook).toBe('high');
|
|
119
|
+
expect(HIGH_RISK_CHANNEL_MAP.model_training).toBe('critical');
|
|
120
|
+
});
|
|
121
|
+
it('getChannelRiskLevel returns low for LOW_RISK_CHANNELS', () => {
|
|
122
|
+
for (const channel of LOW_RISK_CHANNELS) {
|
|
123
|
+
expect(getChannelRiskLevel(channel)).toBe('low');
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
it('getChannelRiskLevel returns HIGH_RISK_CHANNEL_MAP value for high-risk channels', () => {
|
|
127
|
+
for (const [channel, riskLevel] of Object.entries(HIGH_RISK_CHANNEL_MAP)) {
|
|
128
|
+
expect(getChannelRiskLevel(channel)).toBe(riskLevel);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
it('risk levels are ordered: low < medium < high < critical', () => {
|
|
132
|
+
// This is a semantic ordering test, not a numeric comparison
|
|
133
|
+
const levels = ['low', 'medium', 'high', 'critical'];
|
|
134
|
+
expect(getChannelRiskLevel('prompt')).toBe(levels[0]);
|
|
135
|
+
expect(getChannelRiskLevel('skill')).toBe(levels[1]);
|
|
136
|
+
expect(getChannelRiskLevel('code_tool_hook')).toBe(levels[2]);
|
|
137
|
+
expect(getChannelRiskLevel('model_training')).toBe(levels[3]);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
// ── mapConfidenceToLabel Tests ───────────────────────────────────────────────
|
|
141
|
+
describe('mapConfidenceToLabel', () => {
|
|
142
|
+
it('returns high for confidence >= 0.8', () => {
|
|
143
|
+
expect(mapConfidenceToLabel(0.8)).toBe('high');
|
|
144
|
+
expect(mapConfidenceToLabel(0.85)).toBe('high');
|
|
145
|
+
expect(mapConfidenceToLabel(0.9)).toBe('high');
|
|
146
|
+
expect(mapConfidenceToLabel(1.0)).toBe('high');
|
|
147
|
+
});
|
|
148
|
+
it('returns medium for confidence >= 0.5 and < 0.8', () => {
|
|
149
|
+
expect(mapConfidenceToLabel(0.5)).toBe('medium');
|
|
150
|
+
expect(mapConfidenceToLabel(0.55)).toBe('medium');
|
|
151
|
+
expect(mapConfidenceToLabel(0.6)).toBe('medium');
|
|
152
|
+
expect(mapConfidenceToLabel(0.7)).toBe('medium');
|
|
153
|
+
expect(mapConfidenceToLabel(0.79)).toBe('medium');
|
|
154
|
+
});
|
|
155
|
+
it('returns low for confidence < 0.5', () => {
|
|
156
|
+
expect(mapConfidenceToLabel(0.0)).toBe('low');
|
|
157
|
+
expect(mapConfidenceToLabel(0.1)).toBe('low');
|
|
158
|
+
expect(mapConfidenceToLabel(0.2)).toBe('low');
|
|
159
|
+
expect(mapConfidenceToLabel(0.3)).toBe('low');
|
|
160
|
+
expect(mapConfidenceToLabel(0.4)).toBe('low');
|
|
161
|
+
expect(mapConfidenceToLabel(0.49)).toBe('low');
|
|
162
|
+
});
|
|
163
|
+
it('returns medium for undefined confidence', () => {
|
|
164
|
+
expect(mapConfidenceToLabel(undefined)).toBe('medium');
|
|
165
|
+
});
|
|
166
|
+
it('returns medium for null confidence', () => {
|
|
167
|
+
expect(mapConfidenceToLabel(null)).toBe('medium');
|
|
168
|
+
});
|
|
169
|
+
// Boundary tests
|
|
170
|
+
it('returns high at exact boundary 0.8', () => {
|
|
171
|
+
expect(mapConfidenceToLabel(0.8)).toBe('high');
|
|
172
|
+
});
|
|
173
|
+
it('returns medium just below boundary 0.79', () => {
|
|
174
|
+
expect(mapConfidenceToLabel(0.79)).toBe('medium');
|
|
175
|
+
});
|
|
176
|
+
it('returns medium at exact boundary 0.5', () => {
|
|
177
|
+
expect(mapConfidenceToLabel(0.5)).toBe('medium');
|
|
178
|
+
});
|
|
179
|
+
it('returns low just below boundary 0.49', () => {
|
|
180
|
+
expect(mapConfidenceToLabel(0.49)).toBe('low');
|
|
181
|
+
});
|
|
182
|
+
// Edge cases
|
|
183
|
+
it('returns low for negative confidence (invalid but handled)', () => {
|
|
184
|
+
expect(mapConfidenceToLabel(-0.1)).toBe('low');
|
|
185
|
+
});
|
|
186
|
+
it('returns high for confidence > 1.0 (invalid but handled)', () => {
|
|
187
|
+
expect(mapConfidenceToLabel(1.5)).toBe('high');
|
|
188
|
+
});
|
|
189
|
+
it('all possible return values are valid ConfidenceLabels', () => {
|
|
190
|
+
const validLabels = ['high', 'medium', 'low'];
|
|
191
|
+
const testValues = [undefined, null, 0, 0.25, 0.5, 0.75, 1.0];
|
|
192
|
+
for (const val of testValues) {
|
|
193
|
+
const label = mapConfidenceToLabel(val);
|
|
194
|
+
expect(validLabels).toContain(label);
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
// ── Constants Tests ──────────────────────────────────────────────────────────
|
|
199
|
+
describe('constants', () => {
|
|
200
|
+
it('AUTO_PROMOTION_CONFIDENCE_THRESHOLD is 0.95', () => {
|
|
201
|
+
expect(AUTO_PROMOTION_CONFIDENCE_THRESHOLD).toBe(0.95);
|
|
202
|
+
});
|
|
203
|
+
it('AUTO_PROMOTABLE_CHANNELS contains only skill', () => {
|
|
204
|
+
expect(AUTO_PROMOTABLE_CHANNELS).toEqual(['skill']);
|
|
205
|
+
expect(AUTO_PROMOTABLE_CHANNELS).toHaveLength(1);
|
|
206
|
+
});
|
|
207
|
+
it('LOW_RISK_CHANNELS and HIGH_RISK_CHANNEL_MAP are disjoint', () => {
|
|
208
|
+
for (const channel of LOW_RISK_CHANNELS) {
|
|
209
|
+
expect(HIGH_RISK_CHANNEL_MAP[channel]).toBeUndefined();
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
it('all InternalizationChannel values are covered', () => {
|
|
213
|
+
const allChannels = [
|
|
214
|
+
'prompt', 'defer_archive', 'skill', 'code_tool_hook', 'model_training',
|
|
215
|
+
];
|
|
216
|
+
// Every channel should have a defined risk level
|
|
217
|
+
for (const channel of allChannels) {
|
|
218
|
+
const riskLevel = getChannelRiskLevel(channel);
|
|
219
|
+
expect(['low', 'medium', 'high', 'critical']).toContain(riskLevel);
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
//# sourceMappingURL=activation-types-helpers.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activation-types-helpers.test.js","sourceRoot":"","sources":["../../../src/runtime-v2/__tests__/activation-types-helpers.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -201,6 +201,7 @@ const KNOWN_PLUGIN_CORE_FILES = new Set([
|
|
|
201
201
|
'principle-internalization/lifecycle-read-model.ts',
|
|
202
202
|
'principle-internalization/filesystem-lifecycle-datasource.ts',
|
|
203
203
|
'config-service.ts',
|
|
204
|
+
'config-health.ts', // PRI-346: Pure conversation access config check — plugin-specific due to OpenClaw config shape dependency
|
|
204
205
|
'principle-compiler/index.ts',
|
|
205
206
|
'principle-internalization/lifecycle-refresh.ts',
|
|
206
207
|
// ── Do Not Move — intrinsically plugin-specific ─────────────────────────
|
|
@@ -327,9 +328,8 @@ describe('PRI-212 plugin core anti-growth guard', () => {
|
|
|
327
328
|
// Prevents accidental baseline bloat from going unnoticed.
|
|
328
329
|
// See docs/reviews/plugin-core-inventory-2026-05.md §7
|
|
329
330
|
// PRI-286: Removed confirm-first-gate.ts (95 → 94)
|
|
330
|
-
// PRI-307: Added pd-config-loader.ts (
|
|
331
|
-
// PRI-346: Added config-health.ts (
|
|
332
|
-
// PRI-347: Removed JSONL trajectory writers (96 → 95 → 94 → ... → 98 after cleanup)
|
|
331
|
+
// PRI-307: Added pd-config-loader.ts (96 → 97)
|
|
332
|
+
// PRI-346: Added config-health.ts (97 → 98)
|
|
333
333
|
expect(KNOWN_PLUGIN_CORE_FILES.size).toBe(98);
|
|
334
334
|
});
|
|
335
335
|
});
|