renma 0.8.1 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/CHANGELOG.md +32 -1
  2. package/dist/catalog-conflicts.d.ts +4 -0
  3. package/dist/catalog-conflicts.d.ts.map +1 -0
  4. package/dist/catalog-conflicts.js +86 -0
  5. package/dist/catalog-conflicts.js.map +1 -0
  6. package/dist/catalog-lifecycle.d.ts +4 -0
  7. package/dist/catalog-lifecycle.d.ts.map +1 -0
  8. package/dist/catalog-lifecycle.js +150 -0
  9. package/dist/catalog-lifecycle.js.map +1 -0
  10. package/dist/catalog.d.ts.map +1 -1
  11. package/dist/catalog.js +147 -0
  12. package/dist/catalog.js.map +1 -1
  13. package/dist/commands/ci-report.d.ts +5 -0
  14. package/dist/commands/ci-report.d.ts.map +1 -1
  15. package/dist/commands/ci-report.js +77 -2
  16. package/dist/commands/ci-report.js.map +1 -1
  17. package/dist/commands/diff.d.ts +4 -0
  18. package/dist/commands/diff.d.ts.map +1 -1
  19. package/dist/commands/diff.js +57 -8
  20. package/dist/commands/diff.js.map +1 -1
  21. package/dist/commands/readiness.d.ts +5 -1
  22. package/dist/commands/readiness.d.ts.map +1 -1
  23. package/dist/commands/readiness.js +66 -2
  24. package/dist/commands/readiness.js.map +1 -1
  25. package/dist/context-language-diagnostics.d.ts +2 -0
  26. package/dist/context-language-diagnostics.d.ts.map +1 -0
  27. package/dist/context-language-diagnostics.js +2 -0
  28. package/dist/context-language-diagnostics.js.map +1 -0
  29. package/dist/context-language.d.ts +20 -0
  30. package/dist/context-language.d.ts.map +1 -0
  31. package/dist/context-language.js +105 -0
  32. package/dist/context-language.js.map +1 -0
  33. package/dist/diagnostic-ids.d.ts +5 -0
  34. package/dist/diagnostic-ids.d.ts.map +1 -1
  35. package/dist/diagnostic-ids.js +5 -0
  36. package/dist/diagnostic-ids.js.map +1 -1
  37. package/dist/scanner.d.ts.map +1 -1
  38. package/dist/scanner.js +81 -0
  39. package/dist/scanner.js.map +1 -1
  40. package/dist/security-diagnostics.d.ts.map +1 -1
  41. package/dist/security-diagnostics.js +2 -266
  42. package/dist/security-diagnostics.js.map +1 -1
  43. package/dist/security-diff.d.ts +54 -0
  44. package/dist/security-diff.d.ts.map +1 -0
  45. package/dist/security-diff.js +78 -0
  46. package/dist/security-diff.js.map +1 -0
  47. package/dist/security-policy-inventory.d.ts +55 -0
  48. package/dist/security-policy-inventory.d.ts.map +1 -0
  49. package/dist/security-policy-inventory.js +172 -0
  50. package/dist/security-policy-inventory.js.map +1 -0
  51. package/dist/security-policy.d.ts +32 -0
  52. package/dist/security-policy.d.ts.map +1 -0
  53. package/dist/security-policy.js +237 -0
  54. package/dist/security-policy.js.map +1 -0
  55. package/dist/security-posture.d.ts +35 -0
  56. package/dist/security-posture.d.ts.map +1 -0
  57. package/dist/security-posture.js +108 -0
  58. package/dist/security-posture.js.map +1 -0
  59. package/dist/types.d.ts +2 -0
  60. package/dist/types.d.ts.map +1 -1
  61. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -6,6 +6,35 @@ This project follows the spirit of [Keep a Changelog](https://keepachangelog.com
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.10.0] - 2026-07-05
10
+
11
+ ### Added
12
+
13
+ - Added metadata budget diagnostics for oversized frontmatter and long metadata list items.
14
+ - Added shared context usage-boundary diagnostics for missing or placeholder `when_to_use` and `when_not_to_use` metadata.
15
+ - Added shared context language diagnostics for vague wording, relative currentness wording, and prompt/runtime-selection wording.
16
+ - Added shared context lifecycle diagnostics for deprecated assets, invalid `superseded_by` targets, and supersession cycles.
17
+ - Added context conflict graph diagnostics for invalid `conflicts` metadata and skills that require conflicting contexts.
18
+
19
+ ### Changed
20
+
21
+ - Simplified security policy frontmatter handling around canonical snake_case metadata keys.
22
+ - Expanded diagnostics documentation for metadata budgets and shared context governance checks.
23
+
24
+ ## [0.9.0] - 2026-07-03
25
+
26
+ ### Added
27
+
28
+ - Added security posture summaries to readiness and CI reports, derived from existing security findings and `riskClass` metadata.
29
+ - Added effective security policy inventory summaries for readiness and CI reporting, derived from asset policy metadata, security profiles, and repository security config.
30
+ - Added security-aware semantic diff summaries that compare security finding posture and effective policy inventory across revisions.
31
+
32
+ ### Changed
33
+
34
+ - Kept security posture reporting non-gating in v1; readiness score, readiness level, scan `fail_on`, and CI status semantics remain unchanged.
35
+ - Kept policy inventory reporting non-gating in v1; scan `fail_on`, readiness score/level, and CI status semantics remain unchanged.
36
+ - Kept security-aware diff reporting non-gating in v1; scan `fail_on`, readiness score/level, and CI status semantics remain unchanged.
37
+
9
38
  ## [0.8.1] - 2026-07-03
10
39
 
11
40
  ### Added
@@ -145,7 +174,9 @@ Tag-only release. No GitHub Release entry was published for this version.
145
174
  - Added metadata governance, advisory diagnostics, local path checks, and semantic split suggestions.
146
175
  - Added the initial project documentation, architecture notes, package metadata, tests, and license.
147
176
 
148
- [Unreleased]: https://github.com/KazuCocoa/renma/compare/v0.8.1...HEAD
177
+ [Unreleased]: https://github.com/KazuCocoa/renma/compare/v0.10.0...HEAD
178
+ [0.10.0]: https://github.com/KazuCocoa/renma/compare/v0.9.0...v0.10.0
179
+ [0.9.0]: https://github.com/KazuCocoa/renma/compare/v0.8.1...v0.9.0
149
180
  [0.8.1]: https://github.com/KazuCocoa/renma/compare/v0.8.0...v0.8.1
150
181
  [0.8.0]: https://github.com/KazuCocoa/renma/compare/v0.7.0...v0.8.0
151
182
  [0.7.0]: https://github.com/KazuCocoa/renma/compare/v0.6.1...v0.7.0
@@ -0,0 +1,4 @@
1
+ import type { CatalogEntry } from "./model.js";
2
+ import type { Diagnostic } from "./types.js";
3
+ export declare function conflictDiagnostics(entries: CatalogEntry[]): Diagnostic[];
4
+ //# sourceMappingURL=catalog-conflicts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-conflicts.d.ts","sourceRoot":"","sources":["../src/catalog-conflicts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAY,MAAM,YAAY,CAAC;AAEvD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,CAiCzE"}
@@ -0,0 +1,86 @@
1
+ export function conflictDiagnostics(entries) {
2
+ const diagnostics = [];
3
+ const entriesById = new Map(entries.map((entry) => [entry.id, entry]));
4
+ const conflictPairs = new Set();
5
+ for (const entry of entries) {
6
+ for (const [index, targetId] of entry.metadata.conflicts.entries()) {
7
+ if (targetId === entry.id) {
8
+ diagnostics.push({
9
+ severity: "warning",
10
+ path: entry.sourcePath,
11
+ message: `Asset conflicts metadata references itself: "${targetId}".`,
12
+ evidence: metadataListEvidence(entry, "conflicts", index),
13
+ });
14
+ continue;
15
+ }
16
+ if (!entriesById.has(targetId)) {
17
+ diagnostics.push({
18
+ severity: "warning",
19
+ path: entry.sourcePath,
20
+ message: `Asset conflicts target "${targetId}" does not match a catalog entry.`,
21
+ evidence: metadataListEvidence(entry, "conflicts", index),
22
+ });
23
+ continue;
24
+ }
25
+ conflictPairs.add(pairKey(entry.id, targetId));
26
+ }
27
+ }
28
+ diagnostics.push(...requiredConflictDiagnostics(entries, conflictPairs));
29
+ return diagnostics;
30
+ }
31
+ function requiredConflictDiagnostics(entries, conflictPairs) {
32
+ const diagnostics = [];
33
+ for (const entry of entries) {
34
+ if (entry.kind !== "skill")
35
+ continue;
36
+ for (let leftIndex = 0; leftIndex < entry.requiredContext.length; leftIndex += 1) {
37
+ const left = entry.requiredContext[leftIndex];
38
+ if (left === undefined)
39
+ continue;
40
+ for (let rightIndex = leftIndex + 1; rightIndex < entry.requiredContext.length; rightIndex += 1) {
41
+ const right = entry.requiredContext[rightIndex];
42
+ if (right === undefined)
43
+ continue;
44
+ if (!conflictPairs.has(pairKey(left, right)))
45
+ continue;
46
+ diagnostics.push({
47
+ severity: "warning",
48
+ path: entry.sourcePath,
49
+ message: `Skill requires conflicting context assets "${left}" and "${right}".`,
50
+ evidence: metadataListEvidence(entry, "requires_context", rightIndex),
51
+ });
52
+ }
53
+ }
54
+ }
55
+ return diagnostics;
56
+ }
57
+ function pairKey(left, right) {
58
+ return [left, right].sort().join("\u0000");
59
+ }
60
+ function metadataListEvidence(entry, fieldKey, index) {
61
+ const item = entry.metadataListItems[fieldKey]?.[index];
62
+ if (item) {
63
+ return {
64
+ path: item.path,
65
+ startLine: item.startLine,
66
+ endLine: item.endLine,
67
+ snippet: item.raw,
68
+ };
69
+ }
70
+ const field = entry.metadataFields[fieldKey];
71
+ if (field) {
72
+ return {
73
+ path: field.path,
74
+ startLine: field.startLine,
75
+ endLine: field.endLine,
76
+ snippet: field.raw,
77
+ };
78
+ }
79
+ return {
80
+ path: entry.sourcePath,
81
+ startLine: 1,
82
+ endLine: 1,
83
+ snippet: `${fieldKey} metadata`,
84
+ };
85
+ }
86
+ //# sourceMappingURL=catalog-conflicts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-conflicts.js","sourceRoot":"","sources":["../src/catalog-conflicts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { CatalogEntry } from "./model.js";
2
+ import type { Diagnostic } from "./types.js";
3
+ export declare function lifecycleDiagnostics(entries: CatalogEntry[]): Diagnostic[];
4
+ //# sourceMappingURL=catalog-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-lifecycle.d.ts","sourceRoot":"","sources":["../src/catalog-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAY,MAAM,YAAY,CAAC;AAOvD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,CAyD1E"}
@@ -0,0 +1,150 @@
1
+ const ACTIVE_STATUSES = new Set(["experimental", "stable"]);
2
+ const INACTIVE_STATUSES = new Set(["deprecated", "archived"]);
3
+ const MISSING_SUPERSEDED_BY_MESSAGE = "Deprecated shared context asset is missing superseded_by metadata.";
4
+ export function lifecycleDiagnostics(entries) {
5
+ const diagnostics = [];
6
+ const entriesById = new Map(entries.map((entry) => [entry.id, entry]));
7
+ for (const entry of entries) {
8
+ if (!isGovernedContext(entry))
9
+ continue;
10
+ if (entry.metadata.status === "deprecated" &&
11
+ entry.metadata.supersededBy.length === 0) {
12
+ diagnostics.push({
13
+ severity: "warning",
14
+ path: entry.sourcePath,
15
+ message: MISSING_SUPERSEDED_BY_MESSAGE,
16
+ evidence: defaultMetadataEvidence(entry, "missing superseded_by metadata"),
17
+ });
18
+ }
19
+ for (const [index, targetId] of entry.metadata.supersededBy.entries()) {
20
+ if (targetId === entry.id) {
21
+ diagnostics.push({
22
+ severity: "warning",
23
+ path: entry.sourcePath,
24
+ message: selfReferenceMessage(targetId),
25
+ evidence: metadataListEvidence(entry, "superseded_by", index),
26
+ });
27
+ continue;
28
+ }
29
+ const target = entriesById.get(targetId);
30
+ if (!target) {
31
+ diagnostics.push({
32
+ severity: "warning",
33
+ path: entry.sourcePath,
34
+ message: missingTargetMessage(targetId),
35
+ evidence: metadataListEvidence(entry, "superseded_by", index),
36
+ });
37
+ continue;
38
+ }
39
+ if (isInactiveStatus(target.metadata.status)) {
40
+ diagnostics.push({
41
+ severity: "warning",
42
+ path: entry.sourcePath,
43
+ message: inactiveTargetMessage(targetId, target.metadata.status),
44
+ evidence: metadataListEvidence(entry, "superseded_by", index),
45
+ });
46
+ }
47
+ }
48
+ }
49
+ diagnostics.push(...supersessionCycleDiagnostics(entries, entriesById));
50
+ return diagnostics;
51
+ }
52
+ function supersessionCycleDiagnostics(entries, entriesById) {
53
+ const diagnostics = [];
54
+ const reported = new Set();
55
+ for (const entry of entries) {
56
+ if (!isGovernedContext(entry))
57
+ continue;
58
+ if (entry.metadata.supersededBy.length === 0)
59
+ continue;
60
+ const path = [];
61
+ const cycleEntry = firstCycleEntry(entry, entriesById, path);
62
+ if (!cycleEntry)
63
+ continue;
64
+ const cycleKey = [...new Set(path.slice(path.indexOf(cycleEntry.id)))]
65
+ .sort()
66
+ .join(" -> ");
67
+ if (reported.has(cycleKey))
68
+ continue;
69
+ reported.add(cycleKey);
70
+ diagnostics.push({
71
+ severity: "warning",
72
+ path: entry.sourcePath,
73
+ message: cycleMessage(cycleEntry.id),
74
+ evidence: metadataListEvidence(entry, "superseded_by", 0),
75
+ });
76
+ }
77
+ return diagnostics;
78
+ }
79
+ function firstCycleEntry(entry, entriesById, path) {
80
+ if (path.includes(entry.id))
81
+ return entry;
82
+ path.push(entry.id);
83
+ for (const targetId of entry.metadata.supersededBy) {
84
+ const target = entriesById.get(targetId);
85
+ if (!target || !isGovernedContext(target))
86
+ continue;
87
+ if (isActiveStatus(target.metadata.status))
88
+ continue;
89
+ const cycleEntry = firstCycleEntry(target, entriesById, path);
90
+ if (cycleEntry)
91
+ return cycleEntry;
92
+ }
93
+ path.pop();
94
+ return undefined;
95
+ }
96
+ function isGovernedContext(entry) {
97
+ return (entry.kind === "context" &&
98
+ entry.id.startsWith("context.") &&
99
+ Boolean(entry.metadata.owner) &&
100
+ entry.metadata.whenToUse.length > 0 &&
101
+ entry.metadata.whenNotToUse.length > 0);
102
+ }
103
+ function isActiveStatus(status) {
104
+ return status !== undefined && ACTIVE_STATUSES.has(status);
105
+ }
106
+ function isInactiveStatus(status) {
107
+ return status !== undefined && INACTIVE_STATUSES.has(status);
108
+ }
109
+ function selfReferenceMessage(targetId) {
110
+ return `Shared context asset superseded_by references itself: "${targetId}".`;
111
+ }
112
+ function missingTargetMessage(targetId) {
113
+ return `Shared context asset superseded_by target "${targetId}" does not match a catalog entry.`;
114
+ }
115
+ function inactiveTargetMessage(targetId, status) {
116
+ return `Shared context asset superseded_by target "${targetId}" resolves to an inactive asset with status "${status}".`;
117
+ }
118
+ function cycleMessage(entryId) {
119
+ return `Shared context asset superseded_by chain forms a cycle involving "${entryId}".`;
120
+ }
121
+ function metadataListEvidence(entry, fieldKey, index) {
122
+ const item = entry.metadataListItems[fieldKey]?.[index];
123
+ if (item) {
124
+ return {
125
+ path: item.path,
126
+ startLine: item.startLine,
127
+ endLine: item.endLine,
128
+ snippet: item.raw,
129
+ };
130
+ }
131
+ const field = entry.metadataFields[fieldKey];
132
+ if (field) {
133
+ return {
134
+ path: field.path,
135
+ startLine: field.startLine,
136
+ endLine: field.endLine,
137
+ snippet: field.raw,
138
+ };
139
+ }
140
+ return defaultMetadataEvidence(entry, `missing ${fieldKey} metadata`);
141
+ }
142
+ function defaultMetadataEvidence(entry, snippet) {
143
+ return {
144
+ path: entry.sourcePath,
145
+ startLine: 1,
146
+ endLine: 1,
147
+ snippet,
148
+ };
149
+ }
150
+ //# sourceMappingURL=catalog-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-lifecycle.js","sourceRoot":"","sources":["../src/catalog-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,OAAO,EAIR,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,UAAU,EAAY,cAAc,EAAE,MAAM,YAAY,CAAC;AAEvE,wFAAwF;AACxF,wBAAgB,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG;IACzD,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAqEA"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,OAAO,EAIR,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,UAAU,EAAY,cAAc,EAAE,MAAM,YAAY,CAAC;AAQvE,wFAAwF;AACxF,wBAAgB,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG;IACzD,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAwEA"}
package/dist/catalog.js CHANGED
@@ -1,11 +1,19 @@
1
1
  import { createHash } from "node:crypto";
2
+ import { conflictDiagnostics } from "./catalog-conflicts.js";
3
+ import { lifecycleDiagnostics } from "./catalog-lifecycle.js";
4
+ import { contextBodyLanguageDiagnostics } from "./context-language-diagnostics.js";
2
5
  import { parseAssetMetadata } from "./metadata.js";
6
+ const FRONTMATTER_MAX_LINES = 24;
7
+ const FRONTMATTER_MAX_CHARS = 1200;
8
+ const METADATA_LIST_ITEM_MAX_CHARS = 140;
9
+ const PLACEHOLDER_USAGE_BOUNDARY_PATTERN = /^(?:todo|tbd|tba|unknown|n\/?a|none|placeholder|to be defined)(?:[\s:-].*)?$/i;
3
10
  /** Build a deterministic catalog of skill and context entries from parsed documents. */
4
11
  export function buildCatalog(documents) {
5
12
  const diagnostics = [];
6
13
  const entries = documents
7
14
  .map((document) => {
8
15
  const result = parseAssetMetadata(document);
16
+ diagnostics.push(...metadataBudgetDiagnostics(document));
9
17
  diagnostics.push(...result.diagnostics);
10
18
  diagnostics.push(...sharedContextMetadataDiagnostics(document, result.metadata));
11
19
  const base = {
@@ -55,6 +63,8 @@ export function buildCatalog(documents) {
55
63
  return a.to.localeCompare(b.to);
56
64
  });
57
65
  diagnostics.push(...dependencyDiagnostics(entries, dependencies));
66
+ diagnostics.push(...lifecycleDiagnostics(entries));
67
+ diagnostics.push(...conflictDiagnostics(entries));
58
68
  return {
59
69
  catalog: {
60
70
  entries,
@@ -64,6 +74,58 @@ export function buildCatalog(documents) {
64
74
  diagnostics,
65
75
  };
66
76
  }
77
+ function metadataBudgetDiagnostics(document) {
78
+ const frontmatter = frontmatterRange(document);
79
+ if (!frontmatter)
80
+ return [];
81
+ const diagnostics = [];
82
+ const frontmatterLines = document.lines.slice(frontmatter.startLine - 1, frontmatter.endLine);
83
+ const lineCount = frontmatterLines.length;
84
+ const charCount = frontmatterLines.join("\n").length;
85
+ if (lineCount > FRONTMATTER_MAX_LINES || charCount > FRONTMATTER_MAX_CHARS) {
86
+ diagnostics.push({
87
+ severity: "warning",
88
+ path: document.artifact.path,
89
+ message: `Frontmatter metadata is too large. Frontmatter has ${lineCount} lines and ${charCount} characters; keep metadata as a compact index and move detailed guidance into the markdown body or referenced context assets.`,
90
+ evidence: {
91
+ path: document.artifact.path,
92
+ startLine: frontmatter.startLine,
93
+ endLine: frontmatter.endLine,
94
+ snippet: `frontmatter: ${lineCount} lines, ${charCount} characters`,
95
+ },
96
+ });
97
+ }
98
+ for (const [key, items] of Object.entries(document.metadataListItems)) {
99
+ for (const item of items) {
100
+ const itemText = metadataListItemText(item.raw);
101
+ if (itemText.length <= METADATA_LIST_ITEM_MAX_CHARS)
102
+ continue;
103
+ diagnostics.push({
104
+ severity: "warning",
105
+ path: document.artifact.path,
106
+ message: `Metadata list item is too long in ${key}. Item has ${itemText.length} characters; keep list items short and move routing prose into the markdown body or referenced context assets.`,
107
+ evidence: {
108
+ path: item.path,
109
+ startLine: item.startLine,
110
+ endLine: item.endLine,
111
+ snippet: item.raw,
112
+ },
113
+ });
114
+ }
115
+ }
116
+ return diagnostics;
117
+ }
118
+ function frontmatterRange(document) {
119
+ if (document.lines[0]?.trim() !== "---")
120
+ return undefined;
121
+ const endIndex = document.lines.findIndex((line, index) => index > 0 && line.trim() === "---");
122
+ if (endIndex < 0)
123
+ return undefined;
124
+ return { startLine: 1, endLine: endIndex + 1 };
125
+ }
126
+ function metadataListItemText(raw) {
127
+ return raw.replace(/^\s*-\s*/, "").trim();
128
+ }
67
129
  function dependencyDiagnostics(entries, dependencies) {
68
130
  const entriesById = new Map(entries.map((entry) => [entry.id, entry]));
69
131
  const diagnostics = [];
@@ -74,6 +136,8 @@ function dependencyDiagnostics(entries, dependencies) {
74
136
  continue;
75
137
  const target = entriesById.get(dependency.to);
76
138
  if (!target) {
139
+ if (dependency.kind === "conflicts")
140
+ continue;
77
141
  diagnostics.push({
78
142
  severity: "warning",
79
143
  path: dependency.sourcePath,
@@ -116,8 +180,91 @@ function sharedContextMetadataDiagnostics(document, metadata) {
116
180
  message: "Shared context asset is missing an owner.",
117
181
  });
118
182
  }
183
+ if (isCanonicalSharedContext(metadata) && isActiveContext(metadata)) {
184
+ diagnostics.push(...usageBoundaryDiagnostics(document, metadata), ...contextBodyLanguageDiagnostics(document));
185
+ }
186
+ return diagnostics;
187
+ }
188
+ function isCanonicalSharedContext(metadata) {
189
+ return Boolean(metadata.id?.startsWith("context.") && metadata.owner);
190
+ }
191
+ function isActiveContext(metadata) {
192
+ return metadata.status !== "deprecated" && metadata.status !== "archived";
193
+ }
194
+ function usageBoundaryDiagnostics(document, metadata) {
195
+ const diagnostics = [];
196
+ if (metadata.whenToUse.length === 0) {
197
+ diagnostics.push({
198
+ severity: "warning",
199
+ path: document.artifact.path,
200
+ message: "Shared context asset is missing when_to_use metadata.",
201
+ evidence: missingMetadataEvidence(document, "when_to_use"),
202
+ });
203
+ }
204
+ if (metadata.whenNotToUse.length === 0) {
205
+ diagnostics.push({
206
+ severity: "warning",
207
+ path: document.artifact.path,
208
+ message: "Shared context asset is missing when_not_to_use metadata.",
209
+ evidence: missingMetadataEvidence(document, "when_not_to_use"),
210
+ });
211
+ }
212
+ diagnostics.push(...placeholderUsageBoundaryDiagnostics(document, "when_to_use", metadata.whenToUse), ...placeholderUsageBoundaryDiagnostics(document, "when_not_to_use", metadata.whenNotToUse));
119
213
  return diagnostics;
120
214
  }
215
+ function placeholderUsageBoundaryDiagnostics(document, fieldKey, values) {
216
+ return values
217
+ .map((value, index) => {
218
+ if (!PLACEHOLDER_USAGE_BOUNDARY_PATTERN.test(value.trim())) {
219
+ return undefined;
220
+ }
221
+ return {
222
+ severity: "warning",
223
+ path: document.artifact.path,
224
+ message: `Shared context asset usage-boundary metadata contains placeholder values in ${fieldKey}.`,
225
+ evidence: metadataValueEvidence(document, fieldKey, index),
226
+ };
227
+ })
228
+ .filter((diagnostic) => diagnostic !== undefined);
229
+ }
230
+ function metadataValueEvidence(document, fieldKey, index) {
231
+ const item = document.metadataListItems[fieldKey]?.[index];
232
+ if (item) {
233
+ return {
234
+ path: item.path,
235
+ startLine: item.startLine,
236
+ endLine: item.endLine,
237
+ snippet: item.raw,
238
+ };
239
+ }
240
+ const field = document.metadataFields[fieldKey];
241
+ if (field) {
242
+ return {
243
+ path: field.path,
244
+ startLine: field.startLine,
245
+ endLine: field.endLine,
246
+ snippet: field.raw,
247
+ };
248
+ }
249
+ return missingMetadataEvidence(document, fieldKey);
250
+ }
251
+ function missingMetadataEvidence(document, fieldKey) {
252
+ const frontmatter = frontmatterRange(document);
253
+ if (frontmatter) {
254
+ return {
255
+ path: document.artifact.path,
256
+ startLine: frontmatter.startLine,
257
+ endLine: frontmatter.endLine,
258
+ snippet: `frontmatter missing ${fieldKey}`,
259
+ };
260
+ }
261
+ return {
262
+ path: document.artifact.path,
263
+ startLine: 1,
264
+ endLine: 1,
265
+ snippet: `missing ${fieldKey} metadata`,
266
+ };
267
+ }
121
268
  /** Convert metadata relationship lists into graph edges for a catalog entry. */
122
269
  function dependenciesForEntry(entry) {
123
270
  return [
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { type DiffReport, type DiffFormat } from "./diff.js";
2
+ import { type SecurityPostureSummary } from "../security-posture.js";
2
3
  import type { ConfigOverrides } from "../config.js";
3
4
  export type CiReportFormat = DiffFormat;
4
5
  export type CiReportStatus = "pass" | "warn" | "fail";
@@ -8,6 +9,10 @@ export interface CiReport {
8
9
  to: DiffReport["to"];
9
10
  status: CiReportStatus;
10
11
  summary: DiffReport["summary"];
12
+ securityPosture: {
13
+ added: SecurityPostureSummary;
14
+ resolved: SecurityPostureSummary;
15
+ };
11
16
  notes: string[];
12
17
  diff: DiffReport;
13
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ci-report.d.ts","sourceRoot":"","sources":["../../src/commands/ci-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC;AACxC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACzB,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAiBD,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,GAAG;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,GACpD,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED,wBAAsB,QAAQ,CAC5B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,QAAQ,CAAC,CAYnB;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,cAAc,GACrB,MAAM,CAGR;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,CAkB1E"}
1
+ {"version":3,"file":"ci-report.d.ts","sourceRoot":"","sources":["../../src/commands/ci-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,wBAAwB,CAAC;AAShC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC;AACxC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACzB,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IAC/B,eAAe,EAAE;QACf,KAAK,EAAE,sBAAsB,CAAC;QAC9B,QAAQ,EAAE,sBAAsB,CAAC;KAClC,CAAC;IACF,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAiBD,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,GAAG;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,GACpD,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED,wBAAsB,QAAQ,CAC5B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,QAAQ,CAAC,CAiBnB;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,cAAc,GACrB,MAAM,CAGR;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,CAkB1E"}