@productbrain/cli 0.1.0-beta.5912 → 0.1.0-beta.5946

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.
Files changed (48) hide show
  1. package/dist/__tests__/capture.test.js +1 -1
  2. package/dist/__tests__/capture.test.js.map +1 -1
  3. package/dist/__tests__/repo-detect.test.js +3 -0
  4. package/dist/__tests__/repo-detect.test.js.map +1 -1
  5. package/dist/commands/__tests__/quality.test.js +3 -3
  6. package/dist/commands/__tests__/quality.test.js.map +1 -1
  7. package/dist/formatters/brief.d.ts +2 -1
  8. package/dist/formatters/brief.d.ts.map +1 -1
  9. package/dist/formatters/brief.js +5 -2
  10. package/dist/formatters/brief.js.map +1 -1
  11. package/dist/formatters/brief.test.d.ts +2 -0
  12. package/dist/formatters/brief.test.d.ts.map +1 -0
  13. package/dist/formatters/brief.test.js +20 -0
  14. package/dist/formatters/brief.test.js.map +1 -0
  15. package/dist/formatters/orient.d.ts +6 -6
  16. package/dist/formatters/orient.d.ts.map +1 -1
  17. package/dist/formatters/orient.js +9 -8
  18. package/dist/formatters/orient.js.map +1 -1
  19. package/dist/formatters/orient.rituals.test.js +11 -4
  20. package/dist/formatters/orient.rituals.test.js.map +1 -1
  21. package/dist/formatters/spineCheck.d.ts +5 -68
  22. package/dist/formatters/spineCheck.d.ts.map +1 -1
  23. package/dist/formatters/spineCheck.js +15 -13
  24. package/dist/formatters/spineCheck.js.map +1 -1
  25. package/dist/formatters/spineCheck.test.d.ts +2 -0
  26. package/dist/formatters/spineCheck.test.d.ts.map +1 -0
  27. package/dist/formatters/spineCheck.test.js +76 -0
  28. package/dist/formatters/spineCheck.test.js.map +1 -0
  29. package/dist/lib/captureGrounding.d.ts +3 -2
  30. package/dist/lib/captureGrounding.d.ts.map +1 -1
  31. package/dist/lib/captureGrounding.js +16 -9
  32. package/dist/lib/captureGrounding.js.map +1 -1
  33. package/dist/lib/captureGrounding.test.d.ts +2 -0
  34. package/dist/lib/captureGrounding.test.d.ts.map +1 -0
  35. package/dist/lib/captureGrounding.test.js +40 -0
  36. package/dist/lib/captureGrounding.test.js.map +1 -0
  37. package/dist/lib/readinessNotices.d.ts +15 -0
  38. package/dist/lib/readinessNotices.d.ts.map +1 -0
  39. package/dist/lib/readinessNotices.js +15 -0
  40. package/dist/lib/readinessNotices.js.map +1 -0
  41. package/dist/lib/repo-detect.d.ts.map +1 -1
  42. package/dist/lib/repo-detect.js +4 -0
  43. package/dist/lib/repo-detect.js.map +1 -1
  44. package/dist/lib/spineVerdictRead.d.ts +65 -0
  45. package/dist/lib/spineVerdictRead.d.ts.map +1 -0
  46. package/dist/lib/spineVerdictRead.js +64 -0
  47. package/dist/lib/spineVerdictRead.js.map +1 -0
  48. package/package.json +1 -1
@@ -1,9 +1,3 @@
1
- /**
2
- * `pb capture` grounding presentation helpers — extracted from capture.ts (WP-688 S4, TASK-105)
3
- * purely to fund that file's shrink-only LOC budget (STD-2/DEC-1504); no behavior change.
4
- * `promptYN` moves here as dead-on-arrival for the `--link-type` refusal path — it stays used
5
- * only by `--strict`'s existing possible-duplicate confirmation, unchanged.
6
- */
7
1
  /**
8
2
  * Extract a known ID prefix hint from capture text.
9
3
  * Pattern: "FLO: description" or "TEN: something broken" — prefix must be uppercase,
@@ -21,7 +15,14 @@ export function extractPrefixHint(text, prefixMap) {
21
15
  return { resolvedCollection: slug, cleanText: rest.trim() };
22
16
  }
23
17
  // WP-319 S3: Grounding helpers — advisory output, stderr only.
24
- /** Print advisory grounding banner to stderr. Suppressed when grounding has no matches. */
18
+ function groundingCoverageNote(grounding) {
19
+ if (grounding.scanTruncated === false)
20
+ return null;
21
+ return grounding.scanTruncated === true
22
+ ? 'Grounding sample omitted accepted entries; additional matching entries may exist.'
23
+ : 'Grounding completeness is unverified; additional matching entries may exist.';
24
+ }
25
+ /** Print advisory grounding banner; suppress only complete checks with no matches. */
25
26
  export function printGroundingBanner(grounding) {
26
27
  const possibleDuplicates = grounding.duplicates.filter((d) => d.matchType === 'possible_duplicate');
27
28
  const related = [
@@ -30,10 +31,13 @@ export function printGroundingBanner(grounding) {
30
31
  ];
31
32
  const governance = grounding.governance ?? [];
32
33
  const hasGovernance = governance.length > 0;
33
- if (possibleDuplicates.length === 0 && related.length === 0 && !hasGovernance) {
34
+ const coverageNote = groundingCoverageNote(grounding);
35
+ if (possibleDuplicates.length === 0 && related.length === 0 && !hasGovernance && !coverageNote) {
34
36
  return; // Zero-noise floor: nothing to show
35
37
  }
36
38
  const lines = ['\n Grounding:'];
39
+ if (coverageNote)
40
+ lines.push(` ${coverageNote}`);
37
41
  if (possibleDuplicates.length > 0) {
38
42
  const label = possibleDuplicates.length === 1 ? 'Possible duplicate' : 'Possible duplicates';
39
43
  const items = possibleDuplicates.map((d) => `${d.entryId} "${d.name}"`).join(', ');
@@ -61,6 +65,9 @@ export function printGroundingPreview(grounding, entryName, collectionSlug) {
61
65
  process.stdout.write(' No grounding data available (timeout or unavailable).\n\n');
62
66
  return;
63
67
  }
68
+ const coverageNote = groundingCoverageNote(grounding);
69
+ if (coverageNote)
70
+ process.stdout.write(` ${coverageNote}\n\n`);
64
71
  const possibleDuplicates = grounding.duplicates.filter((d) => d.matchType === 'possible_duplicate');
65
72
  const related = [
66
73
  ...grounding.related,
@@ -68,7 +75,7 @@ export function printGroundingPreview(grounding, entryName, collectionSlug) {
68
75
  ];
69
76
  const govCandidates = grounding.governance ?? [];
70
77
  if (possibleDuplicates.length === 0 && related.length === 0 && govCandidates.length === 0) {
71
- process.stdout.write(' No matches found — capture looks unique.\n\n');
78
+ process.stdout.write(' No matches found in this check.\n\n');
72
79
  return;
73
80
  }
74
81
  if (possibleDuplicates.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"captureGrounding.js","sourceRoot":"","sources":["../../src/lib/captureGrounding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"captureGrounding.js","sourceRoot":"","sources":["../../src/lib/captureGrounding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=captureGrounding.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captureGrounding.test.d.ts","sourceRoot":"","sources":["../../src/lib/captureGrounding.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ import { afterEach, describe, expect, it, vi } from 'vitest';
2
+ import { printGroundingBanner, printGroundingPreview } from './captureGrounding.js';
3
+ const empty = { index: 0, related: [], duplicates: [], governance: [] };
4
+ afterEach(() => vi.restoreAllMocks());
5
+ describe('capture grounding completeness', () => {
6
+ it.each([true, undefined, false])('preview preserves completeness=%s without claiming uniqueness', (scanTruncated) => {
7
+ const output = vi.spyOn(process.stdout, 'write').mockReturnValue(true);
8
+ printGroundingPreview({ ...empty, scanTruncated }, 'Equipment maintenance', 'decisions');
9
+ const text = output.mock.calls.map(([chunk]) => String(chunk)).join('');
10
+ expect(text).toContain('No matches found in this check.');
11
+ expect(text).not.toContain('looks unique');
12
+ expect(text.includes('additional matching entries may exist')).toBe(scanTruncated !== false);
13
+ if (scanTruncated === undefined)
14
+ expect(text).toContain('completeness is unverified');
15
+ });
16
+ it.each([true, undefined, false])('normal-capture banner preserves completeness=%s', (scanTruncated) => {
17
+ const output = vi.spyOn(process.stderr, 'write').mockReturnValue(true);
18
+ printGroundingBanner({ ...empty, scanTruncated });
19
+ const text = output.mock.calls.map(([chunk]) => String(chunk)).join('');
20
+ expect(text.includes('additional matching entries may exist')).toBe(scanTruncated !== false);
21
+ if (scanTruncated === false)
22
+ expect(output).not.toHaveBeenCalled();
23
+ });
24
+ it('keeps known duplicate evidence alongside the truncation caveat', () => {
25
+ const output = vi.spyOn(process.stdout, 'write').mockReturnValue(true);
26
+ printGroundingPreview({ ...empty, scanTruncated: true, duplicates: [{ entryId: 'DEC-1', name: 'Maintenance plan', collectionSlug: 'decisions', matchType: 'possible_duplicate', overlapRatio: 0.9 }] }, 'Maintenance plan', 'decisions');
27
+ const text = output.mock.calls.map(([chunk]) => String(chunk)).join('');
28
+ expect(text).toContain('additional matching entries may exist');
29
+ expect(text).toContain('DEC-1');
30
+ expect(text).toContain('Possible duplicates:');
31
+ });
32
+ it('reports unavailable grounding without an absence claim', () => {
33
+ const output = vi.spyOn(process.stdout, 'write').mockReturnValue(true);
34
+ printGroundingPreview(null, 'Maintenance plan', 'decisions');
35
+ const text = output.mock.calls.map(([chunk]) => String(chunk)).join('');
36
+ expect(text).toContain('timeout or unavailable');
37
+ expect(text).not.toContain('No matches');
38
+ });
39
+ });
40
+ //# sourceMappingURL=captureGrounding.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captureGrounding.test.js","sourceRoot":"","sources":["../../src/lib/captureGrounding.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The ONE served wording for a capped readiness scan — `chain.workspaceReadiness`'s
3
+ * accepted-entry sample hit its cap, so entry counts are floors, an apparent gap may already be
4
+ * covered, and the stage verdict is unproven. One declaration per package, imported by every
5
+ * surface that discloses it.
6
+ *
7
+ * Byte-identical to the MCP twin (packages/mcp-server/src/lib/readinessNotices.ts) but
8
+ * deliberately a separate constant: mcp-server's isolated Docker build resolves no private
9
+ * workspace package at runtime, the same constraint that keeps FEEDBACK_SUBMIT_HINT duplicated
10
+ * across the two packages (see scripts/check-notice-hint-drift.mjs for that pair's guard).
11
+ */
12
+ export declare const READINESS_PROVISIONAL_LINE = "Readiness is provisional: its sample omitted accepted entries. Counts are lower bounds, apparent gaps may already be covered, and the overall stage is unverified.";
13
+ /** The same disclosure inline, for surfaces that render the stage on a shared line. */
14
+ export declare const READINESS_PROVISIONAL_STAGE_SUFFIX = " (provisional: readiness sample omitted entries; absence is unverified)";
15
+ //# sourceMappingURL=readinessNotices.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readinessNotices.d.ts","sourceRoot":"","sources":["../../src/lib/readinessNotices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,0BAA0B,uKAC+H,CAAC;AAEvK,uFAAuF;AACvF,eAAO,MAAM,kCAAkC,4EAC4B,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The ONE served wording for a capped readiness scan — `chain.workspaceReadiness`'s
3
+ * accepted-entry sample hit its cap, so entry counts are floors, an apparent gap may already be
4
+ * covered, and the stage verdict is unproven. One declaration per package, imported by every
5
+ * surface that discloses it.
6
+ *
7
+ * Byte-identical to the MCP twin (packages/mcp-server/src/lib/readinessNotices.ts) but
8
+ * deliberately a separate constant: mcp-server's isolated Docker build resolves no private
9
+ * workspace package at runtime, the same constraint that keeps FEEDBACK_SUBMIT_HINT duplicated
10
+ * across the two packages (see scripts/check-notice-hint-drift.mjs for that pair's guard).
11
+ */
12
+ export const READINESS_PROVISIONAL_LINE = 'Readiness is provisional: its sample omitted accepted entries. Counts are lower bounds, apparent gaps may already be covered, and the overall stage is unverified.';
13
+ /** The same disclosure inline, for surfaces that render the stage on a shared line. */
14
+ export const READINESS_PROVISIONAL_STAGE_SUFFIX = ' (provisional: readiness sample omitted entries; absence is unverified)';
15
+ //# sourceMappingURL=readinessNotices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readinessNotices.js","sourceRoot":"","sources":["../../src/lib/readinessNotices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,0BAA0B,GACrC,oKAAoK,CAAC;AAEvK,uFAAuF;AACvF,MAAM,CAAC,MAAM,kCAAkC,GAC7C,yEAAyE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"repo-detect.d.ts","sourceRoot":"","sources":["../../src/lib/repo-detect.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAsBlF;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,UAAU,CAAC,GAAG,SAAgB,GAAG,WAAW,CAiD3D"}
1
+ {"version":3,"file":"repo-detect.d.ts","sourceRoot":"","sources":["../../src/lib/repo-detect.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAyBlF;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,UAAU,CAAC,GAAG,SAAgB,GAAG,WAAW,CAiD3D"}
@@ -13,6 +13,10 @@ export function extractWorkspaceProfile(response) {
13
13
  if (!response || typeof response !== 'object')
14
14
  return null;
15
15
  const r = response;
16
+ // A sampled stage cannot safely exclude portable guidance or describe workspace maturity.
17
+ // Reuse the existing unavailable-profile path instead of promoting it to an exact profile.
18
+ if (r['sampleTruncated'] === true)
19
+ return null;
16
20
  const stage = typeof r['stage'] === 'string' ? r['stage'] : null;
17
21
  const governanceMode = typeof r['governanceMode'] === 'string' ? r['governanceMode'] : null;
18
22
  if (!stage || !governanceMode)
@@ -1 +1 @@
1
- {"version":3,"file":"repo-detect.js","sourceRoot":"","sources":["../../src/lib/repo-detect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repo-detect.js","sourceRoot":"","sources":["../../src/lib/repo-detect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Read contract for the append-only spine verdict payload (stored as unknown).
3
+ * This validates display data, never regrades the spine. Original producers always wrote
4
+ * noSpineEntries; newer connectivity/truncation fields may be absent on historical rows.
5
+ * Dependency-free: the existing embedded-copy generator ships this same source to both
6
+ * isolated connectors. Edit here, then run `npm run mcp:embedded-copies`.
7
+ */
8
+ export interface SpineStructuralRead {
9
+ passed: boolean;
10
+ missing: string[];
11
+ duplicateSingletons: {
12
+ purpose: string[] | null;
13
+ vision: string[] | null;
14
+ };
15
+ unconnectedStrategyIds: string[];
16
+ visionConnectedToPurpose: boolean | null;
17
+ strategiesWithUnknownConnectivity?: string[] | null;
18
+ visionPurposeConnectivityTruncated?: boolean;
19
+ unconnectedObjectiveIds?: string[] | null;
20
+ objectivesWithUnknownConnectivity?: string[] | null;
21
+ unconnectedKeyResultIds?: string[] | null;
22
+ keyResultsWithUnknownConnectivity?: string[] | null;
23
+ }
24
+ export interface SpineStrategyRead {
25
+ entryId: string;
26
+ refusal: {
27
+ hasRefusalSignal: boolean;
28
+ };
29
+ rogerMartin: {
30
+ isStrategicChoice: boolean;
31
+ reasoning: string;
32
+ } | null;
33
+ }
34
+ export interface SpineStoryRead {
35
+ passed: boolean;
36
+ failedCriterion: string | null;
37
+ criteria: Array<{
38
+ id: string;
39
+ passed: boolean;
40
+ reasoning: string;
41
+ }>;
42
+ }
43
+ export interface GradedSpineVerdict {
44
+ noSpineEntries: false;
45
+ structural: SpineStructuralRead;
46
+ perStrategy: SpineStrategyRead[];
47
+ story: SpineStoryRead | null;
48
+ strategiesTruncated?: boolean;
49
+ perStrategyEvaluationTruncated?: boolean;
50
+ objectivesTruncated?: boolean;
51
+ keyResultsTruncated?: boolean;
52
+ }
53
+ export type SpineVerdictRead = {
54
+ kind: 'malformed';
55
+ } | {
56
+ kind: 'empty';
57
+ } | {
58
+ kind: 'graded';
59
+ verdict: GradedSpineVerdict;
60
+ };
61
+ /** Branch on the original discriminant before touching optional graded data. */
62
+ export declare function readSpineVerdict(value: unknown): SpineVerdictRead;
63
+ /** A capped membership read preserves positive evidence, never infers removals by absence. */
64
+ export declare function describeSpineStaleness(changedMemberCount: number, membershipTruncated?: boolean): string;
65
+ //# sourceMappingURL=spineVerdictRead.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spineVerdictRead.d.ts","sourceRoot":"","sources":["../../src/lib/spineVerdictRead.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mBAAmB,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;KAAE,CAAC;IAC3E,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,wBAAwB,EAAE,OAAO,GAAG,IAAI,CAAC;IACzC,iCAAiC,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACpD,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C,uBAAuB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1C,iCAAiC,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACpD,uBAAuB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1C,iCAAiC,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE;QAAE,gBAAgB,EAAE,OAAO,CAAA;KAAE,CAAC;IACvC,WAAW,EAAE;QAAE,iBAAiB,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACtE;AAED,MAAM,WAAW,cAAc;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,kBAAkB;IAClC,cAAc,EAAE,KAAK,CAAC;IACtB,UAAU,EAAE,mBAAmB,CAAC;IAChC,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,MAAM,gBAAgB,GACzB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAuCnD,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAWjE;AAGD,8FAA8F;AAC9F,wBAAgB,sBAAsB,CAAC,kBAAkB,EAAE,MAAM,EAAE,mBAAmB,UAAQ,GAAG,MAAM,CAKtG"}
@@ -0,0 +1,64 @@
1
+ // GENERATED by scripts/generate-mcp-embedded-copies.mjs from kernel/quality/spineVerdictRead.ts.
2
+ // DO NOT EDIT. Run `npm run mcp:embedded-copies` to regenerate.
3
+ // Local runtime copy for the isolated connector build.
4
+ function isRecord(value) {
5
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
6
+ }
7
+ function isStringArray(value) {
8
+ return Array.isArray(value) && value.every((item) => typeof item === 'string');
9
+ }
10
+ function isStructural(value) {
11
+ if (!isRecord(value) || typeof value.passed !== 'boolean' || !isStringArray(value.missing) ||
12
+ !isRecord(value.duplicateSingletons) || !isStringArray(value.unconnectedStrategyIds) ||
13
+ (value.visionConnectedToPurpose !== null && typeof value.visionConnectedToPurpose !== 'boolean'))
14
+ return false;
15
+ for (const key of ['purpose', 'vision']) {
16
+ const ids = value.duplicateSingletons[key];
17
+ if (ids !== null && !isStringArray(ids))
18
+ return false;
19
+ }
20
+ for (const key of ['strategiesWithUnknownConnectivity', 'unconnectedObjectiveIds',
21
+ 'objectivesWithUnknownConnectivity', 'unconnectedKeyResultIds', 'keyResultsWithUnknownConnectivity']) {
22
+ if (value[key] != null && !isStringArray(value[key]))
23
+ return false;
24
+ }
25
+ return value.visionPurposeConnectivityTruncated === undefined || typeof value.visionPurposeConnectivityTruncated === 'boolean';
26
+ }
27
+ function isStrategy(value) {
28
+ if (!isRecord(value) || typeof value.entryId !== 'string' || !isRecord(value.refusal) ||
29
+ typeof value.refusal.hasRefusalSignal !== 'boolean')
30
+ return false;
31
+ return value.rogerMartin === null || (isRecord(value.rogerMartin) &&
32
+ typeof value.rogerMartin.isStrategicChoice === 'boolean' && typeof value.rogerMartin.reasoning === 'string');
33
+ }
34
+ function isStory(value) {
35
+ return value === null || (isRecord(value) && typeof value.passed === 'boolean' &&
36
+ (value.failedCriterion === null || typeof value.failedCriterion === 'string') &&
37
+ Array.isArray(value.criteria) && value.criteria.every((item) => isRecord(item) &&
38
+ typeof item.id === 'string' && typeof item.passed === 'boolean' && typeof item.reasoning === 'string'));
39
+ }
40
+ /** Branch on the original discriminant before touching optional graded data. */
41
+ export function readSpineVerdict(value) {
42
+ if (!isRecord(value) || typeof value.noSpineEntries !== 'boolean')
43
+ return { kind: 'malformed' };
44
+ // Empty checks have no grade to consume. Historical rows may store structural:null.
45
+ if (value.noSpineEntries)
46
+ return { kind: 'empty' };
47
+ if (!isStructural(value.structural) || !Array.isArray(value.perStrategy) ||
48
+ !value.perStrategy.every(isStrategy) || !isStory(value.story))
49
+ return { kind: 'malformed' };
50
+ for (const key of ['strategiesTruncated', 'perStrategyEvaluationTruncated', 'objectivesTruncated', 'keyResultsTruncated']) {
51
+ if (value[key] !== undefined && typeof value[key] !== 'boolean')
52
+ return { kind: 'malformed' };
53
+ }
54
+ // Keep the original payload (including newer fields); validation never strips information.
55
+ return { kind: 'graded', verdict: value };
56
+ }
57
+ /** A capped membership read preserves positive evidence, never infers removals by absence. */
58
+ export function describeSpineStaleness(changedMemberCount, membershipTruncated = false) {
59
+ const reason = changedMemberCount > 0
60
+ ? `${membershipTruncated ? 'at least ' : ''}${changedMemberCount} entr${changedMemberCount === 1 ? 'y' : 'ies'} changed or joined/left the spine since this was computed`
61
+ : 'freshness could not be verified; the changed-entry count is unknown';
62
+ return reason + (membershipTruncated ? '; membership scan incomplete' : '');
63
+ }
64
+ //# sourceMappingURL=spineVerdictRead.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spineVerdictRead.js","sourceRoot":"","sources":["../../src/lib/spineVerdictRead.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@productbrain/cli",
3
- "version": "0.1.0-beta.5912",
3
+ "version": "0.1.0-beta.5946",
4
4
  "description": "Product Brain — Chain knowledge and write-back CLI",
5
5
  "type": "module",
6
6
  "bin": {