@productbrain/cli 0.1.0-beta.7552 → 0.1.0-beta.7557
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/__tests__/handshake-augment.test.js +0 -2
- package/dist/__tests__/handshake-augment.test.js.map +1 -1
- package/dist/__tests__/handshake-preview.test.js +0 -2
- package/dist/__tests__/handshake-preview.test.js.map +1 -1
- package/dist/commands/handshake.d.ts.map +1 -1
- package/dist/commands/handshake.js +5 -17
- package/dist/commands/handshake.js.map +1 -1
- package/dist/generators/portable-knowledge.d.ts +3 -16
- package/dist/generators/portable-knowledge.d.ts.map +1 -1
- package/dist/generators/portable-knowledge.js +7 -69
- package/dist/generators/portable-knowledge.js.map +1 -1
- package/dist/generators/portable-knowledge.test.js +36 -186
- package/dist/generators/portable-knowledge.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -18,45 +18,11 @@ const LEVEL_HIERARCHY = {
|
|
|
18
18
|
};
|
|
19
19
|
const VALID_LEVELS = new Set(Object.keys(LEVEL_HIERARCHY));
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* Note: 'beginner' level allows only 'core' items; 'intermediate' allows core + intermediate.
|
|
24
|
-
*/
|
|
25
|
-
export const STAGE_TO_MAX_LEVEL = {
|
|
26
|
-
blank: 'beginner',
|
|
27
|
-
seed: 'intermediate',
|
|
28
|
-
grounded: 'expert',
|
|
29
|
-
connected: 'expert',
|
|
30
|
-
critical: 'expert',
|
|
31
|
-
};
|
|
32
|
-
/** Level ordering used to pick the more restrictive of two levels. */
|
|
33
|
-
export const LEVEL_ORDER = ['beginner', 'intermediate', 'expert'];
|
|
34
|
-
/**
|
|
35
|
-
* Pick the more restrictive of two levels.
|
|
36
|
-
* If either is undefined, returns the other (or undefined if both are).
|
|
37
|
-
*/
|
|
38
|
-
function capLevel(requested, cap) {
|
|
39
|
-
if (!requested && !cap)
|
|
40
|
-
return undefined;
|
|
41
|
-
if (!requested)
|
|
42
|
-
return cap;
|
|
43
|
-
if (!cap)
|
|
44
|
-
return requested;
|
|
45
|
-
const requestedIdx = LEVEL_ORDER.indexOf(requested);
|
|
46
|
-
const capIdx = LEVEL_ORDER.indexOf(cap);
|
|
47
|
-
return LEVEL_ORDER[Math.min(requestedIdx, capIdx)];
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Filter items by graduated level, with optional workspace stage-gating.
|
|
51
|
-
* - If requestedLevel is undefined/null AND stage provides no cap: return ALL items (backward compat).
|
|
21
|
+
* Filter items by graduated level.
|
|
22
|
+
* - If requestedLevel is undefined/null: return ALL items (backward compat).
|
|
52
23
|
* - Items with no `level` field: always included (backward compat).
|
|
53
|
-
* - Stage caps the effective level: blank→beginner, seed→intermediate, grounded/connected/critical→expert.
|
|
54
|
-
* - If stage is unknown or null: no cap applied (fail-open).
|
|
55
|
-
* - The effective level is min(requestedLevel, stageCap) — most restrictive wins.
|
|
56
24
|
*/
|
|
57
|
-
export function filterByLevel(items, requestedLevel
|
|
58
|
-
// Resolve stage cap (fail-open for unknown/undefined stage)
|
|
59
|
-
const stageCap = stage ? STAGE_TO_MAX_LEVEL[stage] : undefined;
|
|
25
|
+
export function filterByLevel(items, requestedLevel) {
|
|
60
26
|
// Resolve requested level as typed enum (validate if provided)
|
|
61
27
|
let typedRequested;
|
|
62
28
|
if (requestedLevel) {
|
|
@@ -65,16 +31,12 @@ export function filterByLevel(items, requestedLevel, stage) {
|
|
|
65
31
|
}
|
|
66
32
|
typedRequested = requestedLevel;
|
|
67
33
|
}
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
// No effective level — return all items (backward compat)
|
|
71
|
-
if (!effectiveLevel)
|
|
34
|
+
// No requested level — return all items (backward compat)
|
|
35
|
+
if (!typedRequested)
|
|
72
36
|
return items;
|
|
73
|
-
const allowedLevels = LEVEL_HIERARCHY[
|
|
37
|
+
const allowedLevels = LEVEL_HIERARCHY[typedRequested];
|
|
74
38
|
return items.filter((item) => !item.level || allowedLevels.includes(item.level));
|
|
75
39
|
}
|
|
76
|
-
// ── Stage ordering ────────────────────────────────────────────────────
|
|
77
|
-
const STAGE_ORDER = ['blank', 'seed', 'grounded', 'connected', 'critical'];
|
|
78
40
|
/**
|
|
79
41
|
* Evaluate when_* conditions against the workspace profile and repo context.
|
|
80
42
|
* Returns { included, reasons }.
|
|
@@ -83,7 +45,7 @@ const STAGE_ORDER = ['blank', 'seed', 'grounded', 'connected', 'critical'];
|
|
|
83
45
|
* the item is included (preserves current behavior when Chain is unavailable).
|
|
84
46
|
*/
|
|
85
47
|
export function evaluateConditions(conditions, profile, repoContext) {
|
|
86
|
-
const hasProfileConditions = conditions.
|
|
48
|
+
const hasProfileConditions = conditions.when_minGovernance !== undefined;
|
|
87
49
|
const hasStackCondition = conditions.when_stack !== undefined;
|
|
88
50
|
// No when_* keys at all — always include
|
|
89
51
|
if (!hasProfileConditions && !hasStackCondition) {
|
|
@@ -107,18 +69,6 @@ export function evaluateConditions(conditions, profile, repoContext) {
|
|
|
107
69
|
reasons.push(`when_stack=${conditions.when_stack} matched`);
|
|
108
70
|
}
|
|
109
71
|
}
|
|
110
|
-
// when_minStage: profile guaranteed non-null here when this condition is present
|
|
111
|
-
if (conditions.when_minStage !== undefined && profile !== null) {
|
|
112
|
-
const profileIdx = STAGE_ORDER.indexOf(profile.stage);
|
|
113
|
-
const thresholdIdx = STAGE_ORDER.indexOf(conditions.when_minStage);
|
|
114
|
-
if (thresholdIdx === -1 || profileIdx === -1 || profileIdx < thresholdIdx) {
|
|
115
|
-
included = false;
|
|
116
|
-
reasons.push(`when_minStage=${conditions.when_minStage} but workspace stage=${profile.stage}`);
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
reasons.push(`when_minStage=${conditions.when_minStage} satisfied (stage=${profile.stage})`);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
72
|
// when_minGovernance: profile guaranteed non-null here when this condition is present
|
|
123
73
|
if (conditions.when_minGovernance !== undefined && profile !== null) {
|
|
124
74
|
const threshold = parseInt(conditions.when_minGovernance, 10);
|
|
@@ -196,12 +146,9 @@ export function readCanonicalSkills(productbrainDir) {
|
|
|
196
146
|
const level = fields.get('level');
|
|
197
147
|
const conditions = {};
|
|
198
148
|
const whenStack = fields.get('when_stack');
|
|
199
|
-
const whenMinStage = fields.get('when_minStage');
|
|
200
149
|
const whenMinGovernance = fields.get('when_minGovernance');
|
|
201
150
|
if (whenStack)
|
|
202
151
|
conditions.when_stack = whenStack;
|
|
203
|
-
if (whenMinStage)
|
|
204
|
-
conditions.when_minStage = whenMinStage;
|
|
205
152
|
if (whenMinGovernance)
|
|
206
153
|
conditions.when_minGovernance = whenMinGovernance;
|
|
207
154
|
const hasConditions = Object.keys(conditions).length > 0;
|
|
@@ -228,12 +175,9 @@ export function readCanonicalRules(productbrainDir) {
|
|
|
228
175
|
const level = fields.get('level');
|
|
229
176
|
const conditions = {};
|
|
230
177
|
const whenStack = fields.get('when_stack');
|
|
231
|
-
const whenMinStage = fields.get('when_minStage');
|
|
232
178
|
const whenMinGovernance = fields.get('when_minGovernance');
|
|
233
179
|
if (whenStack)
|
|
234
180
|
conditions.when_stack = whenStack;
|
|
235
|
-
if (whenMinStage)
|
|
236
|
-
conditions.when_minStage = whenMinStage;
|
|
237
181
|
if (whenMinGovernance)
|
|
238
182
|
conditions.when_minGovernance = whenMinGovernance;
|
|
239
183
|
const hasConditions = Object.keys(conditions).length > 0;
|
|
@@ -265,12 +209,9 @@ export function readPersonalLayer(productbrainDir) {
|
|
|
265
209
|
const level = fields.get('level');
|
|
266
210
|
const conditions = {};
|
|
267
211
|
const whenStack = fields.get('when_stack');
|
|
268
|
-
const whenMinStage = fields.get('when_minStage');
|
|
269
212
|
const whenMinGovernance = fields.get('when_minGovernance');
|
|
270
213
|
if (whenStack)
|
|
271
214
|
conditions.when_stack = whenStack;
|
|
272
|
-
if (whenMinStage)
|
|
273
|
-
conditions.when_minStage = whenMinStage;
|
|
274
215
|
if (whenMinGovernance)
|
|
275
216
|
conditions.when_minGovernance = whenMinGovernance;
|
|
276
217
|
const hasConditions = Object.keys(conditions).length > 0;
|
|
@@ -312,12 +253,9 @@ export function readPersonalSkillsLayer(productbrainDir) {
|
|
|
312
253
|
const level = fields.get('level');
|
|
313
254
|
const conditions = {};
|
|
314
255
|
const whenStack = fields.get('when_stack');
|
|
315
|
-
const whenMinStage = fields.get('when_minStage');
|
|
316
256
|
const whenMinGovernance = fields.get('when_minGovernance');
|
|
317
257
|
if (whenStack)
|
|
318
258
|
conditions.when_stack = whenStack;
|
|
319
|
-
if (whenMinStage)
|
|
320
|
-
conditions.when_minStage = whenMinStage;
|
|
321
259
|
if (whenMinGovernance)
|
|
322
260
|
conditions.when_minGovernance = whenMinGovernance;
|
|
323
261
|
const hasConditions = Object.keys(conditions).length > 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portable-knowledge.js","sourceRoot":"","sources":["../../src/generators/portable-knowledge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"portable-knowledge.js","sourceRoot":"","sources":["../../src/generators/portable-knowledge.ts"],"names":[],"mappings":"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"}
|
|
@@ -504,62 +504,17 @@ describe('filterByLevel', () => {
|
|
|
504
504
|
it('unknown level throws an error', () => {
|
|
505
505
|
expect(() => filterByLevel(items, 'unknown')).toThrow('Unknown level "unknown"');
|
|
506
506
|
});
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
{ name: 'expert-item', level: 'expert' },
|
|
513
|
-
{ name: 'no-level-item' },
|
|
514
|
-
];
|
|
515
|
-
it('stage=blank caps at core even if requestedLevel=expert', () => {
|
|
516
|
-
const result = filterByLevel(items, 'expert', 'blank');
|
|
517
|
-
const names = result.map((i) => i.name);
|
|
518
|
-
expect(names).toContain('core-item');
|
|
519
|
-
expect(names).toContain('no-level-item');
|
|
520
|
-
expect(names).not.toContain('intermediate-item');
|
|
521
|
-
expect(names).not.toContain('expert-item');
|
|
522
|
-
expect(result).toHaveLength(2);
|
|
523
|
-
});
|
|
524
|
-
it('stage=seed caps at intermediate (core + intermediate + no-level)', () => {
|
|
525
|
-
const result = filterByLevel(items, 'expert', 'seed');
|
|
526
|
-
const names = result.map((i) => i.name);
|
|
527
|
-
expect(names).toContain('core-item');
|
|
528
|
-
expect(names).toContain('intermediate-item');
|
|
529
|
-
expect(names).toContain('no-level-item');
|
|
530
|
-
expect(names).not.toContain('expert-item');
|
|
531
|
-
expect(result).toHaveLength(3);
|
|
532
|
-
});
|
|
533
|
-
it('stage=grounded applies no cap — all items returned', () => {
|
|
534
|
-
const result = filterByLevel(items, 'expert', 'grounded');
|
|
535
|
-
expect(result).toHaveLength(4);
|
|
536
|
-
});
|
|
537
|
-
it('stage=connected applies no cap — all items returned', () => {
|
|
538
|
-
const result = filterByLevel(items, 'expert', 'connected');
|
|
539
|
-
expect(result).toHaveLength(4);
|
|
540
|
-
});
|
|
541
|
-
it('stage=undefined (no profile) — no cap, backward compat', () => {
|
|
542
|
-
const result = filterByLevel(items, 'expert', undefined);
|
|
543
|
-
expect(result).toHaveLength(4);
|
|
544
|
-
});
|
|
545
|
-
it('unknown stage — fail-open, no cap applied', () => {
|
|
546
|
-
const result = filterByLevel(items, 'expert', 'unknown-stage');
|
|
507
|
+
it('DEC-1800: filterByLevel with no requested level returns every item, unconditionally (no more stage cap)', () => {
|
|
508
|
+
// Red-then-green (DEC-1800): against the pre-fix code, calling the old 3-arg signature as
|
|
509
|
+
// filterByLevel(items, undefined, 'blank') capped the result to 2 (core + no-level only).
|
|
510
|
+
// The stage parameter is deleted — there is no argument left that can ever cap this call.
|
|
511
|
+
const result = filterByLevel(items, undefined);
|
|
547
512
|
expect(result).toHaveLength(4);
|
|
548
513
|
});
|
|
549
|
-
it('no requestedLevel + stage=blank still caps at beginner (core + no-level only)', () => {
|
|
550
|
-
const result = filterByLevel(items, undefined, 'blank');
|
|
551
|
-
const names = result.map((i) => i.name);
|
|
552
|
-
expect(names).toContain('core-item');
|
|
553
|
-
expect(names).toContain('no-level-item');
|
|
554
|
-
expect(names).not.toContain('intermediate-item');
|
|
555
|
-
expect(names).not.toContain('expert-item');
|
|
556
|
-
expect(result).toHaveLength(2);
|
|
557
|
-
});
|
|
558
514
|
});
|
|
559
515
|
describe('evaluateConditions', () => {
|
|
560
516
|
const noProfile = null;
|
|
561
517
|
const profile = {
|
|
562
|
-
stage: 'grounded',
|
|
563
518
|
totalRelations: 10,
|
|
564
519
|
};
|
|
565
520
|
const emptyRepo = { detectedStack: [] };
|
|
@@ -587,31 +542,6 @@ describe('evaluateConditions', () => {
|
|
|
587
542
|
const result = evaluateConditions({ when_stack: 'SvelteKit' }, profile, { detectedStack: ['sveltekit'] });
|
|
588
543
|
expect(result.included).toBe(true);
|
|
589
544
|
});
|
|
590
|
-
// 5. when_minStage ordering: blank < seed < grounded < connected < critical
|
|
591
|
-
it('when_minStage ordering: stage below threshold → excluded', () => {
|
|
592
|
-
const seedProfile = { stage: 'seed', totalRelations: 10 };
|
|
593
|
-
const result = evaluateConditions({ when_minStage: 'grounded' }, seedProfile, emptyRepo);
|
|
594
|
-
expect(result.included).toBe(false);
|
|
595
|
-
expect(result.reasons.some((r) => r.includes('when_minStage=grounded'))).toBe(true);
|
|
596
|
-
});
|
|
597
|
-
// 6. when_minStage with stage below threshold → excluded
|
|
598
|
-
it('when_minStage blank < connected threshold → excluded', () => {
|
|
599
|
-
const blankProfile = { stage: 'blank', totalRelations: 0 };
|
|
600
|
-
const result = evaluateConditions({ when_minStage: 'connected' }, blankProfile, emptyRepo);
|
|
601
|
-
expect(result.included).toBe(false);
|
|
602
|
-
});
|
|
603
|
-
// 7. when_minStage with stage at threshold → included
|
|
604
|
-
it('when_minStage with stage exactly at threshold → included', () => {
|
|
605
|
-
const result = evaluateConditions({ when_minStage: 'grounded' }, profile, emptyRepo);
|
|
606
|
-
expect(result.included).toBe(true);
|
|
607
|
-
expect(result.reasons.some((r) => r.includes('satisfied'))).toBe(true);
|
|
608
|
-
});
|
|
609
|
-
// Also verify stages above threshold pass
|
|
610
|
-
it('when_minStage with stage above threshold → included', () => {
|
|
611
|
-
const criticalProfile = { stage: 'critical', totalRelations: 10 };
|
|
612
|
-
const result = evaluateConditions({ when_minStage: 'grounded' }, criticalProfile, emptyRepo);
|
|
613
|
-
expect(result.included).toBe(true);
|
|
614
|
-
});
|
|
615
545
|
// 8. when_minGovernance with enough relations → included
|
|
616
546
|
it('when_minGovernance with enough relations → included', () => {
|
|
617
547
|
const result = evaluateConditions({ when_minGovernance: '5' }, profile, emptyRepo);
|
|
@@ -620,26 +550,27 @@ describe('evaluateConditions', () => {
|
|
|
620
550
|
});
|
|
621
551
|
// 9. when_minGovernance with too few → excluded
|
|
622
552
|
it('when_minGovernance with too few relations → excluded', () => {
|
|
623
|
-
const lowRelProfile = {
|
|
553
|
+
const lowRelProfile = { totalRelations: 3 };
|
|
624
554
|
const result = evaluateConditions({ when_minGovernance: '5' }, lowRelProfile, emptyRepo);
|
|
625
555
|
expect(result.included).toBe(false);
|
|
626
556
|
expect(result.reasons.some((r) => r.includes('when_minGovernance=5'))).toBe(true);
|
|
627
557
|
});
|
|
628
558
|
// 10. Multiple conditions: all pass → included
|
|
629
559
|
it('multiple conditions: all pass → included', () => {
|
|
630
|
-
const result = evaluateConditions({ when_stack: 'sveltekit',
|
|
560
|
+
const result = evaluateConditions({ when_stack: 'sveltekit', when_minGovernance: '5' }, profile, sveltekitRepo);
|
|
631
561
|
expect(result.included).toBe(true);
|
|
632
562
|
});
|
|
633
563
|
// 11. Multiple conditions: one fails → excluded (AND semantics)
|
|
634
564
|
it('multiple conditions: one fails → excluded', () => {
|
|
635
|
-
const result = evaluateConditions({ when_stack: '
|
|
636
|
-
sveltekitRepo
|
|
565
|
+
const result = evaluateConditions({ when_stack: 'nextjs', when_minGovernance: '5' }, profile, // totalRelations=10, satisfies when_minGovernance
|
|
566
|
+
sveltekitRepo // detectedStack has no 'nextjs'
|
|
567
|
+
);
|
|
637
568
|
expect(result.included).toBe(false);
|
|
638
|
-
expect(result.reasons.some((r) => r.includes('
|
|
569
|
+
expect(result.reasons.some((r) => r.includes('when_stack=nextjs'))).toBe(true);
|
|
639
570
|
});
|
|
640
|
-
// 12. Null profile +
|
|
641
|
-
it('null profile with
|
|
642
|
-
const result = evaluateConditions({
|
|
571
|
+
// 12. Null profile + when_minGovernance → included (fail-open)
|
|
572
|
+
it('null profile with when_minGovernance → fail-open (included)', () => {
|
|
573
|
+
const result = evaluateConditions({ when_minGovernance: '5' }, noProfile, emptyRepo);
|
|
643
574
|
expect(result.included).toBe(true);
|
|
644
575
|
expect(result.reasons.some((r) => r.includes('fail-open'))).toBe(true);
|
|
645
576
|
});
|
|
@@ -651,136 +582,70 @@ describe('evaluateConditions', () => {
|
|
|
651
582
|
expect(noMatchResult.included).toBe(false);
|
|
652
583
|
});
|
|
653
584
|
});
|
|
654
|
-
describe('BET-170 acceptance criteria — integration', () => {
|
|
585
|
+
describe('BET-170 acceptance criteria — integration (DEC-1800: stage-cap acceptance criteria deleted)', () => {
|
|
655
586
|
/**
|
|
656
|
-
* Mock rules cover
|
|
657
|
-
*
|
|
587
|
+
* Mock rules cover the surviving combinations: stack condition, governance condition, and
|
|
588
|
+
* unconditional at core/intermediate/expert levels. The stage-condition rule (`feature-flags`,
|
|
589
|
+
* formerly `when_minStage: 'grounded'`) and every stage-keyed acceptance criterion (AC1-AC5,
|
|
590
|
+
* the 0/5/50/500-entry scale test) are deleted with the cap they exercised — no more stage
|
|
591
|
+
* argument exists to feed them.
|
|
658
592
|
*/
|
|
659
593
|
const mockRules = [
|
|
660
594
|
{ name: 'deployment', level: 'core', conditions: { when_stack: 'sveltekit' } },
|
|
661
|
-
{ name: 'feature-flags', level: 'intermediate', conditions: { when_minStage: 'grounded' } },
|
|
662
595
|
{ name: 'domain-boundaries', level: 'expert', conditions: { when_minGovernance: '5' } },
|
|
663
596
|
{ name: 'code-integrity', level: 'core' }, // no conditions — always included
|
|
664
597
|
{ name: 'review-gate', level: 'intermediate' }, // no conditions
|
|
665
598
|
{ name: 'orchestrator-mode', level: 'expert' }, // no conditions
|
|
666
599
|
];
|
|
667
600
|
function applyPipeline(rules, profile, repo) {
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
const levelFiltered = filterByLevel(rules, undefined, profileStage);
|
|
601
|
+
// No stage argument — filterByLevel takes requestedLevel only (DEC-1800).
|
|
602
|
+
const levelFiltered = filterByLevel(rules, undefined);
|
|
671
603
|
// condition filter
|
|
672
604
|
return levelFiltered.filter((rule) => {
|
|
673
605
|
const result = evaluateConditions(rule.conditions ?? {}, profile, repo);
|
|
674
606
|
return result.included;
|
|
675
607
|
});
|
|
676
608
|
}
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
const profile = { stage: 'blank', totalEntries: 0, totalRelations: 0 };
|
|
680
|
-
const repo = { detectedStack: ['python'] };
|
|
681
|
-
const result = applyPipeline(mockRules, profile, repo);
|
|
682
|
-
const names = result.map((r) => r.name);
|
|
683
|
-
// Only code-integrity: core level, no conditions
|
|
684
|
-
// deployment: core but when_stack=sveltekit fails (python != sveltekit)
|
|
685
|
-
expect(names).toContain('code-integrity');
|
|
686
|
-
expect(names).not.toContain('deployment'); // core but sveltekit condition fails
|
|
687
|
-
expect(names).not.toContain('feature-flags'); // intermediate — capped by blank stage
|
|
688
|
-
expect(names).not.toContain('domain-boundaries'); // expert — capped by blank stage
|
|
689
|
-
expect(names).not.toContain('review-gate'); // intermediate — capped by blank stage
|
|
690
|
-
expect(names).not.toContain('orchestrator-mode'); // expert — capped by blank stage
|
|
691
|
-
expect(result).toHaveLength(1);
|
|
692
|
-
});
|
|
693
|
-
// AC2: Node/TS workspace (stage=grounded, 30 entries) — stack-matched, all levels
|
|
694
|
-
it('AC2: stage=grounded, sveltekit/typescript, 30 entries — all rules included', () => {
|
|
695
|
-
const profile = { stage: 'grounded', totalEntries: 30, totalRelations: 15 };
|
|
609
|
+
it('all levels included, unconditional + stack-matched + governance-satisfied rules pass', () => {
|
|
610
|
+
const profile = { totalRelations: 15 };
|
|
696
611
|
const repo = { detectedStack: ['typescript', 'sveltekit'] };
|
|
697
612
|
const result = applyPipeline(mockRules, profile, repo);
|
|
698
613
|
const names = result.map((r) => r.name);
|
|
699
|
-
//
|
|
614
|
+
// No stage cap: every level (core/intermediate/expert) survives filterByLevel.
|
|
615
|
+
// sveltekit matches, 15 >= 5 → every rule's condition passes.
|
|
700
616
|
expect(names).toContain('deployment');
|
|
701
|
-
expect(names).toContain('feature-flags');
|
|
702
617
|
expect(names).toContain('domain-boundaries');
|
|
703
618
|
expect(names).toContain('code-integrity');
|
|
704
619
|
expect(names).toContain('review-gate');
|
|
705
620
|
expect(names).toContain('orchestrator-mode');
|
|
706
|
-
expect(result).toHaveLength(
|
|
707
|
-
});
|
|
708
|
-
// AC3: Mature workspace (stage=connected, 100+ entries) — all rules and skills
|
|
709
|
-
it('AC3: stage=connected, 150 entries — all rules projected without filtering', () => {
|
|
710
|
-
const profile = { stage: 'connected', totalEntries: 150, totalRelations: 80 };
|
|
711
|
-
const repo = { detectedStack: ['typescript', 'sveltekit'] };
|
|
712
|
-
const result = applyPipeline(mockRules, profile, repo);
|
|
713
|
-
expect(result).toHaveLength(6);
|
|
621
|
+
expect(result).toHaveLength(5);
|
|
714
622
|
});
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
const profile = { stage: 'grounded', totalEntries: 30, totalRelations: 15 };
|
|
623
|
+
it('unknown stack — only non-stack-conditional rules pass, still no level cap', () => {
|
|
624
|
+
const profile = { totalRelations: 15 };
|
|
718
625
|
const repo = { detectedStack: [] };
|
|
719
626
|
const result = applyPipeline(mockRules, profile, repo);
|
|
720
627
|
const names = result.map((r) => r.name);
|
|
721
|
-
// deployment requires sveltekit stack — excluded
|
|
722
|
-
// all others: feature-flags (grounded ok), domain-boundaries (15 >= 5), unconditionals all pass
|
|
628
|
+
// deployment requires sveltekit stack — excluded; all others pass regardless of level.
|
|
723
629
|
expect(names).not.toContain('deployment');
|
|
724
|
-
expect(names).toContain('feature-flags');
|
|
725
630
|
expect(names).toContain('domain-boundaries');
|
|
726
631
|
expect(names).toContain('code-integrity');
|
|
727
632
|
expect(names).toContain('review-gate');
|
|
728
633
|
expect(names).toContain('orchestrator-mode');
|
|
729
|
-
expect(result).toHaveLength(
|
|
634
|
+
expect(result).toHaveLength(4);
|
|
730
635
|
});
|
|
731
|
-
|
|
732
|
-
it('AC5: null profile (readiness failure) — fail-open, profile conditions pass', () => {
|
|
636
|
+
it('null profile (readiness failure) — fail-open, profile conditions pass, no level cap', () => {
|
|
733
637
|
const profile = null;
|
|
734
638
|
const repo = { detectedStack: ['typescript'] };
|
|
735
639
|
const result = applyPipeline(mockRules, profile, repo);
|
|
736
640
|
const names = result.map((r) => r.name);
|
|
737
|
-
// Null profile:
|
|
738
|
-
//
|
|
739
|
-
|
|
740
|
-
// - when_stack: still evaluated against repoContext; sveltekit not in [typescript] → excluded
|
|
741
|
-
expect(names).not.toContain('deployment'); // when_stack=sveltekit, typescript doesn't match
|
|
742
|
-
expect(names).toContain('feature-flags'); // fail-open (profile null)
|
|
641
|
+
// Null profile: when_minGovernance fails open (included); when_stack still evaluated
|
|
642
|
+
// against repoContext — sveltekit not in [typescript] → excluded.
|
|
643
|
+
expect(names).not.toContain('deployment');
|
|
743
644
|
expect(names).toContain('domain-boundaries'); // fail-open (profile null)
|
|
744
645
|
expect(names).toContain('code-integrity');
|
|
745
646
|
expect(names).toContain('review-gate');
|
|
746
647
|
expect(names).toContain('orchestrator-mode');
|
|
747
|
-
expect(result).toHaveLength(
|
|
748
|
-
});
|
|
749
|
-
// Scale test: 0/5/50/500 entries — filtering correctness at different entry counts
|
|
750
|
-
it('scale test: filtering correctness at 0/5/50/500 totalEntries', () => {
|
|
751
|
-
const repo = { detectedStack: ['sveltekit'] };
|
|
752
|
-
// 0 entries: blank stage, low relations
|
|
753
|
-
// deployment: core level (passes stage cap), sveltekit matches → included
|
|
754
|
-
// code-integrity: core level, no conditions → included
|
|
755
|
-
// everything else: capped by blank stage (intermediate/expert excluded)
|
|
756
|
-
const result0 = applyPipeline(mockRules, { stage: 'blank', totalEntries: 0, totalRelations: 0 }, repo);
|
|
757
|
-
const names0 = result0.map((r) => r.name);
|
|
758
|
-
expect(names0).toContain('deployment');
|
|
759
|
-
expect(names0).toContain('code-integrity');
|
|
760
|
-
expect(names0).not.toContain('feature-flags'); // intermediate — capped
|
|
761
|
-
expect(names0).not.toContain('domain-boundaries'); // expert — capped
|
|
762
|
-
expect(names0).not.toContain('review-gate'); // intermediate — capped
|
|
763
|
-
expect(names0).not.toContain('orchestrator-mode'); // expert — capped
|
|
764
|
-
expect(result0).toHaveLength(2);
|
|
765
|
-
// 5 entries: seed stage, 2 relations (below governance threshold)
|
|
766
|
-
const result5 = applyPipeline(mockRules, { stage: 'seed', totalEntries: 5, totalRelations: 2 }, repo);
|
|
767
|
-
const names5 = result5.map((r) => r.name);
|
|
768
|
-
// seed caps at intermediate; domain-boundaries (expert) + orchestrator-mode (expert) excluded
|
|
769
|
-
// domain-boundaries also fails governance (2 < 5)
|
|
770
|
-
// feature-flags: intermediate ok, but when_minStage=grounded fails for seed → excluded
|
|
771
|
-
// deployment: core ok, sveltekit matches → included
|
|
772
|
-
expect(names5).toContain('deployment');
|
|
773
|
-
expect(names5).toContain('code-integrity');
|
|
774
|
-
expect(names5).toContain('review-gate');
|
|
775
|
-
expect(names5).not.toContain('domain-boundaries');
|
|
776
|
-
expect(names5).not.toContain('orchestrator-mode');
|
|
777
|
-
expect(names5).not.toContain('feature-flags');
|
|
778
|
-
// 50 entries: grounded stage, 20 relations
|
|
779
|
-
const result50 = applyPipeline(mockRules, { stage: 'grounded', totalEntries: 50, totalRelations: 20 }, repo);
|
|
780
|
-
expect(result50).toHaveLength(6);
|
|
781
|
-
// 500 entries: connected stage, 200 relations
|
|
782
|
-
const result500 = applyPipeline(mockRules, { stage: 'connected', totalEntries: 500, totalRelations: 200 }, repo);
|
|
783
|
-
expect(result500).toHaveLength(6);
|
|
648
|
+
expect(result).toHaveLength(4);
|
|
784
649
|
});
|
|
785
650
|
});
|
|
786
651
|
describe('readCanonicalRules — backward compat with when_* frontmatter', () => {
|
|
@@ -802,21 +667,6 @@ when_stack: sveltekit
|
|
|
802
667
|
expect(rules).toHaveLength(1);
|
|
803
668
|
expect(rules[0].conditions?.when_stack).toBe('sveltekit');
|
|
804
669
|
});
|
|
805
|
-
it('parses when_minStage from frontmatter into conditions', () => {
|
|
806
|
-
vfs[join(PB_DIR, 'rules', 'flags.md')] = `---
|
|
807
|
-
name: flags
|
|
808
|
-
description: Feature flags rule
|
|
809
|
-
scope: ""
|
|
810
|
-
autoApply: false
|
|
811
|
-
when_minStage: grounded
|
|
812
|
-
---
|
|
813
|
-
|
|
814
|
-
# Flags body
|
|
815
|
-
`;
|
|
816
|
-
const rules = readCanonicalRules(PB_DIR);
|
|
817
|
-
expect(rules).toHaveLength(1);
|
|
818
|
-
expect(rules[0].conditions?.when_minStage).toBe('grounded');
|
|
819
|
-
});
|
|
820
670
|
it('parses when_minGovernance from frontmatter into conditions', () => {
|
|
821
671
|
vfs[join(PB_DIR, 'rules', 'domains.md')] = `---
|
|
822
672
|
name: domains
|