@productbrain/cli 0.1.0-beta.109 → 0.1.0-beta.1096
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__/audit.test.js +5 -0
- package/dist/__tests__/audit.test.js.map +1 -1
- package/dist/__tests__/config.test.js +272 -2
- package/dist/__tests__/config.test.js.map +1 -1
- package/dist/__tests__/handshake-augment.test.d.ts +2 -0
- package/dist/__tests__/handshake-augment.test.d.ts.map +1 -0
- package/dist/__tests__/handshake-augment.test.js +423 -0
- package/dist/__tests__/handshake-augment.test.js.map +1 -0
- package/dist/__tests__/handshake-dormancy.test.d.ts +2 -0
- package/dist/__tests__/handshake-dormancy.test.d.ts.map +1 -0
- package/dist/__tests__/handshake-dormancy.test.js +207 -0
- package/dist/__tests__/handshake-dormancy.test.js.map +1 -0
- package/dist/__tests__/handshake-formatter.test.d.ts +2 -0
- package/dist/__tests__/handshake-formatter.test.d.ts.map +1 -0
- package/dist/__tests__/handshake-formatter.test.js +67 -0
- package/dist/__tests__/handshake-formatter.test.js.map +1 -0
- package/dist/__tests__/handshake-preview.test.js +65 -3
- package/dist/__tests__/handshake-preview.test.js.map +1 -1
- package/dist/__tests__/handshake.e2e.test.js +998 -3
- package/dist/__tests__/handshake.e2e.test.js.map +1 -1
- package/dist/__tests__/handshake.test.js +4 -4
- package/dist/__tests__/handshake.test.js.map +1 -1
- package/dist/__tests__/notice-marker.test.d.ts +2 -0
- package/dist/__tests__/notice-marker.test.d.ts.map +1 -0
- package/dist/__tests__/notice-marker.test.js +41 -0
- package/dist/__tests__/notice-marker.test.js.map +1 -0
- package/dist/__tests__/onboarding-path-b.test.js +4 -4
- package/dist/__tests__/onboarding-path-b.test.js.map +1 -1
- package/dist/__tests__/orient.test.js +52 -2
- package/dist/__tests__/orient.test.js.map +1 -1
- package/dist/__tests__/perimeter.test.js +23 -1
- package/dist/__tests__/perimeter.test.js.map +1 -1
- package/dist/__tests__/preview-key-refresh.test.d.ts +2 -0
- package/dist/__tests__/preview-key-refresh.test.d.ts.map +1 -0
- package/dist/__tests__/preview-key-refresh.test.js +126 -0
- package/dist/__tests__/preview-key-refresh.test.js.map +1 -0
- package/dist/__tests__/profiles.test.js +106 -2
- package/dist/__tests__/profiles.test.js.map +1 -1
- package/dist/__tests__/proof-run.test.d.ts +2 -0
- package/dist/__tests__/proof-run.test.d.ts.map +1 -0
- package/dist/__tests__/proof-run.test.js +255 -0
- package/dist/__tests__/proof-run.test.js.map +1 -0
- package/dist/__tests__/session-reset.test.d.ts +2 -0
- package/dist/__tests__/session-reset.test.d.ts.map +1 -0
- package/dist/__tests__/session-reset.test.js +122 -0
- package/dist/__tests__/session-reset.test.js.map +1 -0
- package/dist/__tests__/session-resume-backstop.test.d.ts +2 -0
- package/dist/__tests__/session-resume-backstop.test.d.ts.map +1 -0
- package/dist/__tests__/session-resume-backstop.test.js +97 -0
- package/dist/__tests__/session-resume-backstop.test.js.map +1 -0
- package/dist/__tests__/session-start-key-refresh.test.d.ts +2 -0
- package/dist/__tests__/session-start-key-refresh.test.d.ts.map +1 -0
- package/dist/__tests__/session-start-key-refresh.test.js +178 -0
- package/dist/__tests__/session-start-key-refresh.test.js.map +1 -0
- package/dist/__tests__/session-state-machine.test.js +45 -1
- package/dist/__tests__/session-state-machine.test.js.map +1 -1
- package/dist/__tests__/session-switch.test.d.ts +2 -0
- package/dist/__tests__/session-switch.test.d.ts.map +1 -0
- package/dist/__tests__/session-switch.test.js +130 -0
- package/dist/__tests__/session-switch.test.js.map +1 -0
- package/dist/__tests__/update-check.test.js +160 -1
- package/dist/__tests__/update-check.test.js.map +1 -1
- package/dist/__tests__/upgrade-runner.test.js +12 -0
- package/dist/__tests__/upgrade-runner.test.js.map +1 -1
- package/dist/__tests__/upgrade.test.d.ts +2 -0
- package/dist/__tests__/upgrade.test.d.ts.map +1 -0
- package/dist/__tests__/upgrade.test.js +56 -0
- package/dist/__tests__/upgrade.test.js.map +1 -0
- package/dist/__tests__/vocabulary-leak.test.d.ts +27 -13
- package/dist/__tests__/vocabulary-leak.test.d.ts.map +1 -1
- package/dist/__tests__/vocabulary-leak.test.js +169 -14
- package/dist/__tests__/vocabulary-leak.test.js.map +1 -1
- package/dist/commands/__tests__/setup-detect-surfaces.test.d.ts +15 -0
- package/dist/commands/__tests__/setup-detect-surfaces.test.d.ts.map +1 -0
- package/dist/commands/__tests__/setup-detect-surfaces.test.js +149 -0
- package/dist/commands/__tests__/setup-detect-surfaces.test.js.map +1 -0
- package/dist/commands/admin/seedRegistryEntries.generated.js +2 -2
- package/dist/commands/admin/seedRegistryEntries.generated.js.map +1 -1
- package/dist/commands/admin/seedRegistryEntries.test.js +1 -1
- package/dist/commands/admin/seedRegistryEntries.test.js.map +1 -1
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +30 -3
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/authority-domains.d.ts.map +1 -1
- package/dist/commands/authority-domains.js +2 -1
- package/dist/commands/authority-domains.js.map +1 -1
- package/dist/commands/capture.d.ts +2 -0
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +5 -1
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/connect-config.test.d.ts +2 -0
- package/dist/commands/connect-config.test.d.ts.map +1 -0
- package/dist/commands/connect-config.test.js +44 -0
- package/dist/commands/connect-config.test.js.map +1 -0
- package/dist/commands/connect-context.d.ts +45 -0
- package/dist/commands/connect-context.d.ts.map +1 -0
- package/dist/commands/connect-context.js +64 -0
- package/dist/commands/connect-context.js.map +1 -0
- package/dist/commands/connect-context.test.d.ts +2 -0
- package/dist/commands/connect-context.test.d.ts.map +1 -0
- package/dist/commands/connect-context.test.js +110 -0
- package/dist/commands/connect-context.test.js.map +1 -0
- package/dist/commands/connect-screens.d.ts +5 -6
- package/dist/commands/connect-screens.d.ts.map +1 -1
- package/dist/commands/connect-screens.js +28 -35
- package/dist/commands/connect-screens.js.map +1 -1
- package/dist/commands/connect.d.ts +16 -0
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +21 -20
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/doctor.js +2 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/doctor.test.js +19 -0
- package/dist/commands/doctor.test.js.map +1 -1
- package/dist/commands/handshake.d.ts +59 -4
- package/dist/commands/handshake.d.ts.map +1 -1
- package/dist/commands/handshake.js +392 -97
- package/dist/commands/handshake.js.map +1 -1
- package/dist/commands/method.d.ts.map +1 -1
- package/dist/commands/method.js +2 -1
- package/dist/commands/method.js.map +1 -1
- package/dist/commands/orient.d.ts +48 -0
- package/dist/commands/orient.d.ts.map +1 -1
- package/dist/commands/orient.js +25 -5
- package/dist/commands/orient.js.map +1 -1
- package/dist/commands/profile.d.ts +1 -14
- package/dist/commands/profile.d.ts.map +1 -1
- package/dist/commands/profile.js +89 -72
- package/dist/commands/profile.js.map +1 -1
- package/dist/commands/proof-run.d.ts +51 -0
- package/dist/commands/proof-run.d.ts.map +1 -0
- package/dist/commands/proof-run.js +209 -0
- package/dist/commands/proof-run.js.map +1 -0
- package/dist/commands/reject.d.ts.map +1 -1
- package/dist/commands/reject.js +2 -1
- package/dist/commands/reject.js.map +1 -1
- package/dist/commands/relate.d.ts.map +1 -1
- package/dist/commands/relate.js +4 -2
- package/dist/commands/relate.js.map +1 -1
- package/dist/commands/session.d.ts +26 -2
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +216 -31
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/setup-audit.d.ts +59 -0
- package/dist/commands/setup-audit.d.ts.map +1 -0
- package/dist/commands/setup-audit.js +250 -0
- package/dist/commands/setup-audit.js.map +1 -0
- package/dist/commands/setup-detect-surfaces.d.ts.map +1 -1
- package/dist/commands/setup-detect-surfaces.js +10 -1
- package/dist/commands/setup-detect-surfaces.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +2 -1
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +31 -10
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +2 -1
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/whoami.d.ts +12 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +70 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/commands/whoami.test.d.ts +2 -0
- package/dist/commands/whoami.test.d.ts.map +1 -0
- package/dist/commands/whoami.test.js +50 -0
- package/dist/commands/whoami.test.js.map +1 -0
- package/dist/formatters/__tests__/orient-provenance.test.d.ts +7 -0
- package/dist/formatters/__tests__/orient-provenance.test.d.ts.map +1 -0
- package/dist/formatters/__tests__/orient-provenance.test.js +454 -0
- package/dist/formatters/__tests__/orient-provenance.test.js.map +1 -0
- package/dist/formatters/audit.d.ts +6 -0
- package/dist/formatters/audit.d.ts.map +1 -1
- package/dist/formatters/audit.js.map +1 -1
- package/dist/formatters/entry.d.ts +21 -0
- package/dist/formatters/entry.d.ts.map +1 -1
- package/dist/formatters/entry.js +46 -5
- package/dist/formatters/entry.js.map +1 -1
- package/dist/formatters/handshake.d.ts +7 -3
- package/dist/formatters/handshake.d.ts.map +1 -1
- package/dist/formatters/handshake.js +26 -23
- package/dist/formatters/handshake.js.map +1 -1
- package/dist/formatters/orient.d.ts +54 -0
- package/dist/formatters/orient.d.ts.map +1 -1
- package/dist/formatters/orient.js +71 -2
- package/dist/formatters/orient.js.map +1 -1
- package/dist/generators/adapters.js +4 -4
- package/dist/generators/region-projections.d.ts +18 -0
- package/dist/generators/region-projections.d.ts.map +1 -0
- package/dist/generators/region-projections.js +49 -0
- package/dist/generators/region-projections.js.map +1 -0
- package/dist/generators/region-projections.test.d.ts +2 -0
- package/dist/generators/region-projections.test.d.ts.map +1 -0
- package/dist/generators/region-projections.test.js +63 -0
- package/dist/generators/region-projections.test.js.map +1 -0
- package/dist/generators/region.d.ts +24 -0
- package/dist/generators/region.d.ts.map +1 -0
- package/dist/generators/region.js +87 -0
- package/dist/generators/region.js.map +1 -0
- package/dist/generators/region.test.d.ts +2 -0
- package/dist/generators/region.test.d.ts.map +1 -0
- package/dist/generators/region.test.js +126 -0
- package/dist/generators/region.test.js.map +1 -0
- package/dist/index.js +111 -9
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +101 -4
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +225 -11
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/notice-marker.d.ts +3 -0
- package/dist/lib/notice-marker.d.ts.map +1 -0
- package/dist/lib/notice-marker.js +53 -0
- package/dist/lib/notice-marker.js.map +1 -0
- package/dist/lib/onboarding-path-b.d.ts.map +1 -1
- package/dist/lib/onboarding-path-b.js +0 -1
- package/dist/lib/onboarding-path-b.js.map +1 -1
- package/dist/lib/onboarding-shared.d.ts +0 -1
- package/dist/lib/onboarding-shared.d.ts.map +1 -1
- package/dist/lib/onboarding-shared.js +0 -16
- package/dist/lib/onboarding-shared.js.map +1 -1
- package/dist/lib/profiles.d.ts +3 -1
- package/dist/lib/profiles.d.ts.map +1 -1
- package/dist/lib/profiles.js +9 -6
- package/dist/lib/profiles.js.map +1 -1
- package/dist/lib/session.d.ts +10 -0
- package/dist/lib/session.d.ts.map +1 -1
- package/dist/lib/session.js +26 -1
- package/dist/lib/session.js.map +1 -1
- package/dist/lib/tokenConstants.d.ts +2 -0
- package/dist/lib/tokenConstants.d.ts.map +1 -1
- package/dist/lib/tokenConstants.js +2 -0
- package/dist/lib/tokenConstants.js.map +1 -1
- package/dist/lib/update-check.d.ts +26 -11
- package/dist/lib/update-check.d.ts.map +1 -1
- package/dist/lib/update-check.js +123 -73
- package/dist/lib/update-check.js.map +1 -1
- package/dist/lib/upgrade-runner.d.ts +2 -1
- package/dist/lib/upgrade-runner.d.ts.map +1 -1
- package/dist/lib/upgrade-runner.js +8 -7
- package/dist/lib/upgrade-runner.js.map +1 -1
- package/dist/setup/perimeter.d.ts +10 -0
- package/dist/setup/perimeter.d.ts.map +1 -1
- package/dist/setup/perimeter.js +21 -6
- package/dist/setup/perimeter.js.map +1 -1
- package/package.json +2 -1
- package/dist/__tests__/setup.test.d.ts +0 -2
- package/dist/__tests__/setup.test.d.ts.map +0 -1
- package/dist/__tests__/setup.test.js +0 -141
- package/dist/__tests__/setup.test.js.map +0 -1
- package/dist/generators/__tests__/surface-profiles.test.d.ts +0 -2
- package/dist/generators/__tests__/surface-profiles.test.d.ts.map +0 -1
- package/dist/generators/__tests__/surface-profiles.test.js +0 -89
- package/dist/generators/__tests__/surface-profiles.test.js.map +0 -1
- package/dist/lib/onboarding-phases.d.ts +0 -9
- package/dist/lib/onboarding-phases.d.ts.map +0 -1
- package/dist/lib/onboarding-phases.js +0 -120
- package/dist/lib/onboarding-phases.js.map +0 -1
|
@@ -1,22 +1,36 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Vocabulary leak test — WP-436 S2 (PAT-229, DEC-1021).
|
|
2
|
+
* Vocabulary leak test — WP-436 S2 + TEN-2053 S2 (PAT-229, DEC-1021).
|
|
3
3
|
*
|
|
4
|
-
* Asserts
|
|
5
|
-
* CLI formatters when the workspace vocabulary is overridden to non-bet labels.
|
|
4
|
+
* Asserts two classes of regression are absent from user-facing CLI/MCP output:
|
|
6
5
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* If any "bet"/"BET" appears in formatted output (outside stored entry IDs), it's a leak.
|
|
6
|
+
* 1. **Workspace-vocab leaks** (`bet`/`BET`) — caught when the workspace
|
|
7
|
+
* vocabulary is overridden to non-bet labels. Any literal "bet"/"BET"
|
|
8
|
+
* outside stored entry IDs means a label resolver was bypassed.
|
|
11
9
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
10
|
+
* 2. **Stale governance-ID leaks** (TEN-2053 S2) — bare governance-ID
|
|
11
|
+
* prefixes without digits (e.g. typo'd "STD-" with no number, or
|
|
12
|
+
* "DEC-foo"). Stored entry IDs (`STD-113`, `DEC-1021`, etc.) are
|
|
13
|
+
* stripped BEFORE the leak check, so legitimate IDs don't false-
|
|
14
|
+
* positive. We do NOT treat Product Brain Method vocabulary as a leak
|
|
15
|
+
* (`Chain`, `Constellation`, `SSOT`, `shaping`, `handoff`, `gates`,
|
|
16
|
+
* `verdict`, `blocking`, `advisory` are the product — not jargon).
|
|
17
|
+
* The real leak class is OUR entry IDs (specific to our team's chain)
|
|
18
|
+
* surfacing in customer-facing output.
|
|
15
19
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
20
|
+
* Coverage:
|
|
21
|
+
* ALL_FIXTURES × { formatOrient, formatOrientBrief, formatSearchResults,
|
|
22
|
+
* formatCaptureReceipt, formatAudit (PASS/FAIL/verbose) }
|
|
23
|
+
* plus runOrient end-to-end command wiring.
|
|
18
24
|
*
|
|
19
|
-
*
|
|
25
|
+
* MCP-side note: the MCP markdown response in
|
|
26
|
+
* `packages/mcp-server/src/tools/audit.ts:handleAuditRun` is structurally
|
|
27
|
+
* identical to `formatAudit` here — kept in sync by manual review; no
|
|
28
|
+
* dedicated MCP audit test currently exists (`find packages/mcp-server -name
|
|
29
|
+
* "*.test.ts" -path "*audit*"` returns empty as of TEN-2053 S2).
|
|
30
|
+
*
|
|
31
|
+
* Whitelist: stored entry IDs matching /\b[A-Z]+-\d+\b/ (e.g. WP-436, BET-42,
|
|
32
|
+
* DEC-1021) are stripped before the leak check — they're stable database
|
|
33
|
+
* references, not vocabulary labels.
|
|
20
34
|
*
|
|
21
35
|
* Perf: fixture workspaces are seeded purely in-memory (no Convex, no HTTP).
|
|
22
36
|
* BET-241: no fixture has >100 entries.
|
|
@@ -25,6 +39,7 @@ import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
|
25
39
|
import { formatOrient, formatOrientBrief } from '../formatters/orient.js';
|
|
26
40
|
import { formatSearchResults } from '../formatters/search.js';
|
|
27
41
|
import { formatCaptureReceipt } from '../formatters/capture.js';
|
|
42
|
+
import { formatAudit } from '../formatters/audit.js';
|
|
28
43
|
import { clearVocabCache } from '../lib/workspaceVocabCache.js';
|
|
29
44
|
// ─── Fixture workspace vocabulary contexts ────────────────────────────────────
|
|
30
45
|
/**
|
|
@@ -165,6 +180,43 @@ function assertNoBetLeak(output, fixture, surface) {
|
|
|
165
180
|
`Full output (stripped IDs):\n${stripped}`);
|
|
166
181
|
}
|
|
167
182
|
}
|
|
183
|
+
/**
|
|
184
|
+
* Stale governance-ID leak patterns (TEN-2053 S2).
|
|
185
|
+
*
|
|
186
|
+
* After `stripStoredIds()` replaces /\b[A-Z]+-\d+\b/ with <<ENTRYID>>, the
|
|
187
|
+
* only residue we treat as a leak is a bare governance prefix WITHOUT digits
|
|
188
|
+
* — i.e. someone wrote `STD-foo` or `DEC-something` in free-form text, not
|
|
189
|
+
* a real entry reference. Real IDs (STD-113, DEC-1021) are stripped before
|
|
190
|
+
* this check.
|
|
191
|
+
*
|
|
192
|
+
* PBM concepts (Chain, Constellation, SSOT, shaping, handoff, gates, verdict)
|
|
193
|
+
* are intentionally NOT treated as leaks — they are the product's vocabulary.
|
|
194
|
+
* Workspace-vocab values (bet/Bet/work_package) are covered by
|
|
195
|
+
* `assertNoBetLeak` above.
|
|
196
|
+
*/
|
|
197
|
+
const GOVERNANCE_LEAK_PATTERNS = [
|
|
198
|
+
// Bare governance prefix not followed by a digit (catches typos like "STD-foo"
|
|
199
|
+
// or "DEC- something"). Stripped IDs (<<ENTRYID>>) are already replaced and
|
|
200
|
+
// won't match this pattern.
|
|
201
|
+
{ name: 'bare governance prefix', re: /\b(STD|DEC|INS|TEN|BET|WP|BR|PRI|FEAT|PAT|ARCH|KR)-(?!\d)/ },
|
|
202
|
+
];
|
|
203
|
+
/**
|
|
204
|
+
* Assert no governance-vocab leak in output (after stripping stored IDs).
|
|
205
|
+
* Tests every pattern and throws with the FIRST match's context on failure.
|
|
206
|
+
*/
|
|
207
|
+
function assertNoGovernanceLeak(output, fixture, surface) {
|
|
208
|
+
const stripped = stripStoredIds(output);
|
|
209
|
+
for (const { name, re } of GOVERNANCE_LEAK_PATTERNS) {
|
|
210
|
+
const match = stripped.match(re);
|
|
211
|
+
if (match) {
|
|
212
|
+
const idx = match.index ?? 0;
|
|
213
|
+
const context = stripped.slice(Math.max(0, idx - 30), idx + 50);
|
|
214
|
+
throw new Error(`[vocabulary-leak] Governance vocab "${name}" (matched: "${match[0]}") found in "${fixture}" fixture, "${surface}" surface.\n` +
|
|
215
|
+
`Context: ...${context}...\n` +
|
|
216
|
+
`Full output (stripped IDs):\n${stripped}`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
168
220
|
// ─── Captured search result fixture ──────────────────────────────────────────
|
|
169
221
|
/** Minimal search result that matches the formatSearchResults expected shape. */
|
|
170
222
|
const SEARCH_RESULTS = [
|
|
@@ -191,6 +243,8 @@ describe('vocabulary-leak: orient formatters', () => {
|
|
|
191
243
|
const output = formatOrient(ORIENT_VIEW, ctx);
|
|
192
244
|
if (!skipLeakCheck)
|
|
193
245
|
assertNoBetLeak(output, name, 'pb orient (full)');
|
|
246
|
+
// Governance-vocab assertion applies to ALL fixtures (including BET-label).
|
|
247
|
+
assertNoGovernanceLeak(output, name, 'pb orient (full)');
|
|
194
248
|
// Also verify the resolved label appears (positive check)
|
|
195
249
|
const expectedLabel = ctx.collectionLabels?.work_package?.plural ?? ctx.collectionDefaults?.work_package?.plural ?? 'work_package';
|
|
196
250
|
expect(output).toContain(expectedLabel);
|
|
@@ -199,6 +253,7 @@ describe('vocabulary-leak: orient formatters', () => {
|
|
|
199
253
|
const output = formatOrientBrief(ORIENT_VIEW, ctx);
|
|
200
254
|
if (!skipLeakCheck)
|
|
201
255
|
assertNoBetLeak(output, name, 'pb orient --brief');
|
|
256
|
+
assertNoGovernanceLeak(output, name, 'pb orient --brief');
|
|
202
257
|
// Also verify the resolved label appears in the count line
|
|
203
258
|
const expectedLabel = ctx.collectionLabels?.work_package?.plural ?? ctx.collectionDefaults?.work_package?.plural ?? 'work_package';
|
|
204
259
|
expect(output).toContain(expectedLabel);
|
|
@@ -216,6 +271,8 @@ describe('vocabulary-leak: search formatter', () => {
|
|
|
216
271
|
const output = formatSearchResults(SEARCH_RESULTS);
|
|
217
272
|
if (!skipLeakCheck)
|
|
218
273
|
assertNoBetLeak(output, name, 'pb search');
|
|
274
|
+
// Governance-vocab assertion applies universally.
|
|
275
|
+
assertNoGovernanceLeak(output, name, 'pb search');
|
|
219
276
|
});
|
|
220
277
|
}
|
|
221
278
|
});
|
|
@@ -228,10 +285,106 @@ describe('vocabulary-leak: capture formatter', () => {
|
|
|
228
285
|
const output = formatCaptureReceipt(CAPTURE_RECEIPT);
|
|
229
286
|
if (!skipLeakCheck)
|
|
230
287
|
assertNoBetLeak(output, name, 'pb capture');
|
|
288
|
+
assertNoGovernanceLeak(output, name, 'pb capture');
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
});
|
|
292
|
+
// ─── pb audit fixtures (TEN-2053 S2) ─────────────────────────────────────────
|
|
293
|
+
//
|
|
294
|
+
// formatAudit is workspace-vocab-agnostic (no vocabCtx parameter) — it renders
|
|
295
|
+
// gate detail/fix/hint strings produced upstream by chain.auditBet. The test
|
|
296
|
+
// runs the same AuditResult through every fixture so we exercise the matrix
|
|
297
|
+
// even though `bet` leaks aren't reachable through formatAudit by design.
|
|
298
|
+
//
|
|
299
|
+
// PASS_AUDIT_RESULT: success path (count summary). No gate jargon in detail.
|
|
300
|
+
// FAIL_AUDIT_RESULT: exercises fix/hint strings — the riskiest leak vector.
|
|
301
|
+
const PASS_AUDIT_RESULT = {
|
|
302
|
+
entryId: 'WP-100',
|
|
303
|
+
entryName: 'Ship vocabulary foundation',
|
|
304
|
+
phase: 'shaping',
|
|
305
|
+
clean: true,
|
|
306
|
+
verdict: 'pass',
|
|
307
|
+
gates: [
|
|
308
|
+
{
|
|
309
|
+
gate: 'intentional-relations',
|
|
310
|
+
status: 'pass',
|
|
311
|
+
blocking: true,
|
|
312
|
+
detail: '3 intentional relation(s) found. No duplicates detected.',
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
gate: 'strategic-anchor',
|
|
316
|
+
status: 'pass',
|
|
317
|
+
blocking: true,
|
|
318
|
+
detail: 'Linked to a strategic parent.',
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
gate: 'field-completeness',
|
|
322
|
+
status: 'pass',
|
|
323
|
+
blocking: true,
|
|
324
|
+
detail: 'All required fields populated.',
|
|
325
|
+
},
|
|
326
|
+
],
|
|
327
|
+
summary: { total: 3, passed: 3, failed: 0, warned: 0 },
|
|
328
|
+
elapsed_ms: 42,
|
|
329
|
+
};
|
|
330
|
+
const FAIL_AUDIT_RESULT = {
|
|
331
|
+
entryId: 'WP-200',
|
|
332
|
+
entryName: 'Incomplete work item',
|
|
333
|
+
phase: 'shaping',
|
|
334
|
+
clean: false,
|
|
335
|
+
verdict: 'fail',
|
|
336
|
+
gates: [
|
|
337
|
+
{
|
|
338
|
+
gate: 'intentional-relations',
|
|
339
|
+
status: 'fail',
|
|
340
|
+
blocking: true,
|
|
341
|
+
detail: '0 intentional relations.',
|
|
342
|
+
fix: "Set field 'problem' to 'needs definition'.",
|
|
343
|
+
fixType: 'exact',
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
gate: 'strategic-anchor',
|
|
347
|
+
status: 'pass',
|
|
348
|
+
blocking: true,
|
|
349
|
+
detail: 'Linked to a strategic parent.',
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
gate: 'field-completeness',
|
|
353
|
+
status: 'fail',
|
|
354
|
+
blocking: true,
|
|
355
|
+
detail: 'Missing: appetite, doneWhen.',
|
|
356
|
+
fix: "Update the entry to populate: appetite, doneWhen.",
|
|
357
|
+
fixType: 'exact',
|
|
358
|
+
hint: 'Required fields per the field schema.',
|
|
359
|
+
},
|
|
360
|
+
],
|
|
361
|
+
summary: { total: 3, passed: 1, failed: 2, warned: 0 },
|
|
362
|
+
elapsed_ms: 55,
|
|
363
|
+
};
|
|
364
|
+
describe('vocabulary-leak: audit formatter', () => {
|
|
365
|
+
for (const { name, skipLeakCheck } of ALL_FIXTURES) {
|
|
366
|
+
// formatAudit is vocab-agnostic, but we still skip the bet-leak check on the
|
|
367
|
+
// "Bet" label fixture per the existing skipLeakCheck convention.
|
|
368
|
+
it(`${name}: formatAudit (PASS verdict) contains no governance vocab`, () => {
|
|
369
|
+
const output = formatAudit(PASS_AUDIT_RESULT);
|
|
370
|
+
if (!skipLeakCheck)
|
|
371
|
+
assertNoBetLeak(output, name, 'pb audit (PASS)');
|
|
372
|
+
assertNoGovernanceLeak(output, name, 'pb audit (PASS)');
|
|
373
|
+
});
|
|
374
|
+
it(`${name}: formatAudit (FAIL verdict) contains no governance vocab`, () => {
|
|
375
|
+
const output = formatAudit(FAIL_AUDIT_RESULT);
|
|
376
|
+
if (!skipLeakCheck)
|
|
377
|
+
assertNoBetLeak(output, name, 'pb audit (FAIL)');
|
|
378
|
+
assertNoGovernanceLeak(output, name, 'pb audit (FAIL)');
|
|
379
|
+
});
|
|
380
|
+
it(`${name}: formatAudit (--verbose) contains no governance vocab`, () => {
|
|
381
|
+
const output = formatAudit(FAIL_AUDIT_RESULT, { verbose: true });
|
|
382
|
+
if (!skipLeakCheck)
|
|
383
|
+
assertNoBetLeak(output, name, 'pb audit (verbose)');
|
|
384
|
+
assertNoGovernanceLeak(output, name, 'pb audit (verbose)');
|
|
231
385
|
});
|
|
232
386
|
}
|
|
233
387
|
});
|
|
234
|
-
// NOTE: `pb audit` is excluded per R7 (WP-313 owns the audit surface rename).
|
|
235
388
|
// ─── Command-level leak tests (Gap 2) ────────────────────────────────────────
|
|
236
389
|
//
|
|
237
390
|
// These tests invoke `runOrient` from the actual CLI command module to prove
|
|
@@ -299,6 +452,7 @@ describe('vocabulary-leak: runOrient command (end-to-end vocab wiring)', () => {
|
|
|
299
452
|
writeSpy.mockRestore();
|
|
300
453
|
if (!skipLeakCheck)
|
|
301
454
|
assertNoBetLeak(output, name, 'pb orient (command)');
|
|
455
|
+
assertNoGovernanceLeak(output, name, 'pb orient (command)');
|
|
302
456
|
// Positive check: resolved label should appear in output.
|
|
303
457
|
const expectedLabel = ctx.collectionLabels?.work_package?.plural ?? ctx.collectionDefaults?.work_package?.plural ?? 'work_package';
|
|
304
458
|
expect(output).toContain(expectedLabel);
|
|
@@ -320,6 +474,7 @@ describe('vocabulary-leak: runOrient command (end-to-end vocab wiring)', () => {
|
|
|
320
474
|
writeSpy.mockRestore();
|
|
321
475
|
if (!skipLeakCheck)
|
|
322
476
|
assertNoBetLeak(output, name, 'pb orient --brief (command)');
|
|
477
|
+
assertNoGovernanceLeak(output, name, 'pb orient --brief (command)');
|
|
323
478
|
// Positive check: resolved label should appear in the count line.
|
|
324
479
|
const expectedLabel = ctx.collectionLabels?.work_package?.plural ?? ctx.collectionDefaults?.work_package?.plural ?? 'work_package';
|
|
325
480
|
expect(output).toContain(expectedLabel);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vocabulary-leak.test.js","sourceRoot":"","sources":["../../src/__tests__/vocabulary-leak.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vocabulary-leak.test.js","sourceRoot":"","sources":["../../src/__tests__/vocabulary-leak.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WP-433 S5 — `formatDetectSurfacesSummary` pure unit tests.
|
|
3
|
+
*
|
|
4
|
+
* Per INS-1420: runSetupDetectSurfaces makes live server calls via getConfigSafe()
|
|
5
|
+
* and kernelCall. These tests ONLY exercise the pure formatter on hand-crafted
|
|
6
|
+
* SetupDetectSurfacesResult objects — runSetupDetectSurfaces is never called.
|
|
7
|
+
*
|
|
8
|
+
* Test cases:
|
|
9
|
+
* 1. Bare-repo (zero detected, zero existing) → appends locked guidance question
|
|
10
|
+
* 2. Normal detect (new surfaces detected) → does NOT append
|
|
11
|
+
* 3. Idempotent re-run (existing surfaces, zero new) → does NOT append
|
|
12
|
+
* 4. Server-stamp-error case → surfaces error in summary, does NOT append extra question
|
|
13
|
+
*/
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=setup-detect-surfaces.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-detect-surfaces.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/setup-detect-surfaces.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WP-433 S5 — `formatDetectSurfacesSummary` pure unit tests.
|
|
3
|
+
*
|
|
4
|
+
* Per INS-1420: runSetupDetectSurfaces makes live server calls via getConfigSafe()
|
|
5
|
+
* and kernelCall. These tests ONLY exercise the pure formatter on hand-crafted
|
|
6
|
+
* SetupDetectSurfacesResult objects — runSetupDetectSurfaces is never called.
|
|
7
|
+
*
|
|
8
|
+
* Test cases:
|
|
9
|
+
* 1. Bare-repo (zero detected, zero existing) → appends locked guidance question
|
|
10
|
+
* 2. Normal detect (new surfaces detected) → does NOT append
|
|
11
|
+
* 3. Idempotent re-run (existing surfaces, zero new) → does NOT append
|
|
12
|
+
* 4. Server-stamp-error case → surfaces error in summary, does NOT append extra question
|
|
13
|
+
*/
|
|
14
|
+
import { describe, expect, it } from 'vitest';
|
|
15
|
+
import { formatDetectSurfacesSummary, } from '../setup-detect-surfaces.js';
|
|
16
|
+
const LOCKED_QUESTION = "I don't see Claude Code or Cursor — which AI tool do you use?";
|
|
17
|
+
/** Helper: build a minimal SetupDetectSurfacesResult */
|
|
18
|
+
function makeResult(overrides = {}) {
|
|
19
|
+
return {
|
|
20
|
+
detected: [],
|
|
21
|
+
existing: [],
|
|
22
|
+
newlyAdded: [],
|
|
23
|
+
union: [],
|
|
24
|
+
manifestUpdated: false,
|
|
25
|
+
manifestPath: '/repo/.productbrain/manifest.json',
|
|
26
|
+
serverStamp: null,
|
|
27
|
+
serverStampError: null,
|
|
28
|
+
...overrides,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
describe('formatDetectSurfacesSummary — WP-433 S5 bare-repo guidance', () => {
|
|
32
|
+
it('bare-repo (zero detected, zero existing) appends locked guidance question', () => {
|
|
33
|
+
const result = makeResult({
|
|
34
|
+
detected: [],
|
|
35
|
+
existing: [],
|
|
36
|
+
newlyAdded: [],
|
|
37
|
+
union: [],
|
|
38
|
+
manifestUpdated: false,
|
|
39
|
+
});
|
|
40
|
+
const summary = formatDetectSurfacesSummary(result);
|
|
41
|
+
expect(summary).toContain(LOCKED_QUESTION);
|
|
42
|
+
// Confirm the question is on a separate line
|
|
43
|
+
expect(summary).toContain('\n' + LOCKED_QUESTION);
|
|
44
|
+
});
|
|
45
|
+
it('normal detect (new surfaces detected) does NOT append locked question', () => {
|
|
46
|
+
const result = makeResult({
|
|
47
|
+
detected: ['claude'],
|
|
48
|
+
existing: [],
|
|
49
|
+
newlyAdded: ['claude'],
|
|
50
|
+
union: ['claude'],
|
|
51
|
+
manifestUpdated: true,
|
|
52
|
+
serverStamp: { stamped: true, surfaces: ['claude'] },
|
|
53
|
+
});
|
|
54
|
+
const summary = formatDetectSurfacesSummary(result);
|
|
55
|
+
expect(summary).not.toContain(LOCKED_QUESTION);
|
|
56
|
+
// Confirm surfaces are mentioned
|
|
57
|
+
expect(summary).toContain('claude');
|
|
58
|
+
});
|
|
59
|
+
it('STD-235 remnant (zero detected, existing surfaces remain in manifest) does NOT append locked question', () => {
|
|
60
|
+
// Marker dir deleted from disk; STD-235 forward-only keeps the surface in manifest.
|
|
61
|
+
// Detected is empty but existing is not — guard must NOT trigger bare-repo guidance.
|
|
62
|
+
const result = makeResult({
|
|
63
|
+
detected: [],
|
|
64
|
+
existing: ['claude'],
|
|
65
|
+
newlyAdded: [],
|
|
66
|
+
union: ['claude'],
|
|
67
|
+
manifestUpdated: false,
|
|
68
|
+
});
|
|
69
|
+
const summary = formatDetectSurfacesSummary(result);
|
|
70
|
+
expect(summary).not.toContain(LOCKED_QUESTION);
|
|
71
|
+
expect(summary).toContain('Detected: none');
|
|
72
|
+
expect(summary).toContain('Existing: claude');
|
|
73
|
+
});
|
|
74
|
+
it('idempotent re-run (existing surfaces, zero new detected) does NOT append locked question', () => {
|
|
75
|
+
const result = makeResult({
|
|
76
|
+
detected: ['claude'],
|
|
77
|
+
existing: ['claude'],
|
|
78
|
+
newlyAdded: [],
|
|
79
|
+
union: ['claude'],
|
|
80
|
+
manifestUpdated: false,
|
|
81
|
+
serverStamp: { stamped: false, surfaces: ['claude'] },
|
|
82
|
+
});
|
|
83
|
+
const summary = formatDetectSurfacesSummary(result);
|
|
84
|
+
expect(summary).not.toContain(LOCKED_QUESTION);
|
|
85
|
+
// Existing should appear in summary
|
|
86
|
+
expect(summary).toContain('claude');
|
|
87
|
+
});
|
|
88
|
+
it('server-stamp-error case surfaces the error and does NOT append the locked question', () => {
|
|
89
|
+
// If detect-surfaces fails at the server stamp but DID find surfaces locally,
|
|
90
|
+
// the error should appear but the bare-repo question should not.
|
|
91
|
+
const result = makeResult({
|
|
92
|
+
detected: ['cursor'],
|
|
93
|
+
existing: [],
|
|
94
|
+
newlyAdded: ['cursor'],
|
|
95
|
+
union: ['cursor'],
|
|
96
|
+
manifestUpdated: true,
|
|
97
|
+
serverStamp: null,
|
|
98
|
+
serverStampError: 'Network timeout connecting to workspace',
|
|
99
|
+
});
|
|
100
|
+
const summary = formatDetectSurfacesSummary(result);
|
|
101
|
+
// Error is surfaced
|
|
102
|
+
expect(summary).toContain('Server stamp failed: Network timeout connecting to workspace');
|
|
103
|
+
// Bare-repo question is NOT appended (surfaces were found)
|
|
104
|
+
expect(summary).not.toContain(LOCKED_QUESTION);
|
|
105
|
+
});
|
|
106
|
+
it('bare-repo with server-stamp-error (edge case: zero surfaces + server error) appends locked question', () => {
|
|
107
|
+
// Zero detected + zero existing → bare-repo. Server stamp would not have been
|
|
108
|
+
// called (union is empty), but if serverStampError somehow populated, the
|
|
109
|
+
// bare-repo signal still dominates and the question should appear.
|
|
110
|
+
const result = makeResult({
|
|
111
|
+
detected: [],
|
|
112
|
+
existing: [],
|
|
113
|
+
newlyAdded: [],
|
|
114
|
+
union: [],
|
|
115
|
+
manifestUpdated: false,
|
|
116
|
+
serverStamp: null,
|
|
117
|
+
serverStampError: 'Config missing',
|
|
118
|
+
});
|
|
119
|
+
const summary = formatDetectSurfacesSummary(result);
|
|
120
|
+
// Server stamp error is surfaced
|
|
121
|
+
expect(summary).toContain('Server stamp failed: Config missing');
|
|
122
|
+
// Bare-repo guidance still applies
|
|
123
|
+
expect(summary).toContain(LOCKED_QUESTION);
|
|
124
|
+
});
|
|
125
|
+
it('summary has correct shape for bare-repo result', () => {
|
|
126
|
+
const result = makeResult();
|
|
127
|
+
const summary = formatDetectSurfacesSummary(result);
|
|
128
|
+
// Base line before the question
|
|
129
|
+
expect(summary).toMatch(/^Detected: none \(new: none\)\. Existing: none\. Manifest unchanged\./);
|
|
130
|
+
});
|
|
131
|
+
it('summary has correct shape for normal detect', () => {
|
|
132
|
+
const result = makeResult({
|
|
133
|
+
detected: ['claude', 'cursor'],
|
|
134
|
+
existing: ['claude'],
|
|
135
|
+
newlyAdded: ['cursor'],
|
|
136
|
+
union: ['claude', 'cursor'],
|
|
137
|
+
manifestUpdated: true,
|
|
138
|
+
serverStamp: { stamped: true, surfaces: ['claude', 'cursor'] },
|
|
139
|
+
});
|
|
140
|
+
const summary = formatDetectSurfacesSummary(result);
|
|
141
|
+
expect(summary).toContain('Detected: claude, cursor');
|
|
142
|
+
expect(summary).toContain('new: cursor');
|
|
143
|
+
expect(summary).toContain('Existing: claude');
|
|
144
|
+
expect(summary).toContain('Manifest updated.');
|
|
145
|
+
expect(summary).toContain('Server stamped.');
|
|
146
|
+
expect(summary).not.toContain(LOCKED_QUESTION);
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
//# sourceMappingURL=setup-detect-surfaces.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-detect-surfaces.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/setup-detect-surfaces.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -78,8 +78,8 @@ export const REGISTRY_SEED_COMMAND_ENTRIES = [
|
|
|
78
78
|
runnable: true,
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
|
-
name: 'migrate-domains-to-
|
|
82
|
-
description: 'Repair (
|
|
81
|
+
name: 'migrate-domains-to-authority-domains',
|
|
82
|
+
description: 'Repair (WP-437 S2): migrate authority-domain entries from glossary ∪ architecture → authority-domains (multi-state: target-only / glossary-only / architecture-only / split).',
|
|
83
83
|
requiresWorkspaceId: true,
|
|
84
84
|
dryRunSupported: false,
|
|
85
85
|
level: 'repair',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seedRegistryEntries.generated.js","sourceRoot":"","sources":["../../../src/commands/admin/seedRegistryEntries.generated.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,MAAM,CAAC,MAAM,6BAA6B,GAAuC;IAChF;QACC,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE,wHAAwH;QACrI,mBAAmB,EAAE,IAAI;QACzB,eAAe,EAAE,KAAK;QACtB,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;QACvC,QAAQ,EAAE,KAAK;KACf;IACD;QACC,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,0HAA0H;QACvI,mBAAmB,EAAE,IAAI;QACzB,eAAe,EAAE,KAAK;QACtB,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;QACvC,QAAQ,EAAE,IAAI;KACd;IACD;QACC,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,8FAA8F;QAC3G,mBAAmB,EAAE,IAAI;QACzB,eAAe,EAAE,KAAK;QACtB,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;QACvC,QAAQ,EAAE,IAAI;KACd;IACD;QACC,IAAI,EAAE,kCAAkC;QACxC,WAAW,EAAE,0HAA0H;QACvI,mBAAmB,EAAE,IAAI;QACzB,eAAe,EAAE,KAAK;QACtB,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;QACvC,QAAQ,EAAE,IAAI;KACd;IACD;QACC,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,mGAAmG;QAChH,mBAAmB,EAAE,IAAI;QACzB,eAAe,EAAE,KAAK;QACtB,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;QACvC,QAAQ,EAAE,IAAI;KACd;IACD;QACC,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,sIAAsI;QACnJ,mBAAmB,EAAE,IAAI;QACzB,eAAe,EAAE,KAAK;QACtB,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;QACvC,QAAQ,EAAE,IAAI;KACd;IACD;QACC,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,iHAAiH;QAC9H,mBAAmB,EAAE,IAAI;QACzB,eAAe,EAAE,KAAK;QACtB,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;QACvC,QAAQ,EAAE,IAAI;KACd;IACD;QACC,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE,uGAAuG;QACpH,mBAAmB,EAAE,IAAI;QACzB,eAAe,EAAE,KAAK;QACtB,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,CAAC,WAAW,CAAC;QAC1B,QAAQ,EAAE,IAAI;KACd;IACD;QACC,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"seedRegistryEntries.generated.js","sourceRoot":"","sources":["../../../src/commands/admin/seedRegistryEntries.generated.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ describe('REGISTRY_SEED_COMMAND_ENTRIES', () => {
|
|
|
33
33
|
// seed.ts prepends seed: when dispatching to the Convex admin layer.
|
|
34
34
|
const repairSlugs = [
|
|
35
35
|
'migrate-setup-skill-entryid',
|
|
36
|
-
'migrate-domains-to-
|
|
36
|
+
'migrate-domains-to-authority-domains',
|
|
37
37
|
'backfill-glossary-canonicalkey',
|
|
38
38
|
'backfill-default-team',
|
|
39
39
|
'migrate-setup-skill-body',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seedRegistryEntries.test.js","sourceRoot":"","sources":["../../../src/commands/admin/seedRegistryEntries.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC9C,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC3D,uDAAuD;QACvD,MAAM,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC5D,+EAA+E;QAC/E,gFAAgF;QAChF,kDAAkD;QAClD,MAAM,OAAO,GAAG,6BAA6B,CAAC,IAAI,CACjD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,6BAA6B,CAC/C,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9B,MAAM,CAAC,OAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACnD,MAAM,SAAS,GAAG,6BAA6B,CAAC,MAAM,CACrD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,6BAA6B,CAC/C,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC3B,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACrD,6EAA6E;QAC7E,qEAAqE;QACrE,MAAM,WAAW,GAAG;YACnB,6BAA6B;YAC7B,
|
|
1
|
+
{"version":3,"file":"seedRegistryEntries.test.js","sourceRoot":"","sources":["../../../src/commands/admin/seedRegistryEntries.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAaH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAgKD,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DnE"}
|
package/dist/commands/audit.js
CHANGED
|
@@ -20,6 +20,8 @@ import { isJsonMode } from '../lib/runner.js';
|
|
|
20
20
|
import { readSession } from '../lib/session.js';
|
|
21
21
|
import { stripConvexInternals } from '../lib/strip.js';
|
|
22
22
|
import { formatAudit, formatBatchSummary } from '../formatters/audit.js';
|
|
23
|
+
import { getOrFetchVocabCtx } from '../lib/workspaceVocabCache.js';
|
|
24
|
+
import { replaceVocabTokens } from '../lib/canonicalRefs.js';
|
|
23
25
|
// Exit codes
|
|
24
26
|
const EXIT_PASS = 0;
|
|
25
27
|
const EXIT_FAIL = 1;
|
|
@@ -72,7 +74,7 @@ async function executeFixActions(actions, json) {
|
|
|
72
74
|
}
|
|
73
75
|
// ─── Single audit ───────────────────────────────────────────────────────────
|
|
74
76
|
async function auditOne(entryId, options) {
|
|
75
|
-
const { phase, gate: gateFilter, fix, verbose } = options;
|
|
77
|
+
const { phase, gate: gateFilter, fix, verbose, vocabCtx } = options;
|
|
76
78
|
const json = isJsonMode();
|
|
77
79
|
// Build MCP args
|
|
78
80
|
const args = { entryId };
|
|
@@ -124,6 +126,18 @@ async function auditOne(entryId, options) {
|
|
|
124
126
|
}
|
|
125
127
|
}
|
|
126
128
|
}
|
|
129
|
+
// WP-438 S1: resolve {{vocab:...}} tokens on each gate field flagged with
|
|
130
|
+
// tokens.* === true. Workspace vocab is fetched once per CLI invocation and
|
|
131
|
+
// passed through `options.vocabCtx`. Fail-open: when ctx is undefined the
|
|
132
|
+
// resolver falls back to the canonicalKey literal.
|
|
133
|
+
for (const gate of result.gates) {
|
|
134
|
+
if (gate.tokens?.detail)
|
|
135
|
+
gate.detail = replaceVocabTokens(gate.detail, vocabCtx);
|
|
136
|
+
if (gate.tokens?.fix && gate.fix)
|
|
137
|
+
gate.fix = replaceVocabTokens(gate.fix, vocabCtx);
|
|
138
|
+
if (gate.tokens?.hint && gate.hint)
|
|
139
|
+
gate.hint = replaceVocabTokens(gate.hint, vocabCtx);
|
|
140
|
+
}
|
|
127
141
|
// Output
|
|
128
142
|
if (json) {
|
|
129
143
|
// Apply gate filter for JSON output too
|
|
@@ -148,9 +162,22 @@ export async function runAudit(options) {
|
|
|
148
162
|
if (!config)
|
|
149
163
|
return;
|
|
150
164
|
const { entryIds, ...rest } = options;
|
|
165
|
+
// WP-438 S1: load workspace vocabulary once for the whole batch (PAT-230,
|
|
166
|
+
// DEC-1021). Cached for 5 min via the shared workspaceVocabCache. Fail-open.
|
|
167
|
+
const vocabCtx = await getOrFetchVocabCtx(config.apiKey, async () => {
|
|
168
|
+
const vocab = await kernelCall('chain.getVocabulary', {});
|
|
169
|
+
if (vocab?.collectionLabels || vocab?.collectionDefaults) {
|
|
170
|
+
return {
|
|
171
|
+
...(vocab.collectionLabels ? { collectionLabels: vocab.collectionLabels } : {}),
|
|
172
|
+
...(vocab.collectionDefaults ? { collectionDefaults: vocab.collectionDefaults } : {}),
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
return null;
|
|
176
|
+
});
|
|
177
|
+
const restWithVocab = { ...rest, vocabCtx };
|
|
151
178
|
if (entryIds.length === 1) {
|
|
152
179
|
// Single audit
|
|
153
|
-
const { exitCode } = await auditOne(entryIds[0],
|
|
180
|
+
const { exitCode } = await auditOne(entryIds[0], restWithVocab);
|
|
154
181
|
process.exit(exitCode);
|
|
155
182
|
}
|
|
156
183
|
// Batch mode: audit multiple bets sequentially
|
|
@@ -158,7 +185,7 @@ export async function runAudit(options) {
|
|
|
158
185
|
const results = [];
|
|
159
186
|
let worstExit = EXIT_PASS;
|
|
160
187
|
for (const entryId of entryIds) {
|
|
161
|
-
const { result, exitCode } = await auditOne(entryId,
|
|
188
|
+
const { result, exitCode } = await auditOne(entryId, restWithVocab);
|
|
162
189
|
if (result)
|
|
163
190
|
results.push(result);
|
|
164
191
|
if (exitCode > worstExit)
|