open-wiki-spec 0.2.4 → 0.3.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 (251) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +50 -3
  3. package/dist/cli/commands/apply.d.ts.map +1 -1
  4. package/dist/cli/commands/apply.js +96 -4
  5. package/dist/cli/commands/apply.js.map +1 -1
  6. package/dist/cli/commands/archive.d.ts.map +1 -1
  7. package/dist/cli/commands/archive.js +19 -5
  8. package/dist/cli/commands/archive.js.map +1 -1
  9. package/dist/cli/commands/bulk-archive.d.ts +15 -0
  10. package/dist/cli/commands/bulk-archive.d.ts.map +1 -0
  11. package/dist/cli/commands/bulk-archive.js +97 -0
  12. package/dist/cli/commands/bulk-archive.js.map +1 -0
  13. package/dist/cli/commands/continue.d.ts.map +1 -1
  14. package/dist/cli/commands/continue.js +15 -2
  15. package/dist/cli/commands/continue.js.map +1 -1
  16. package/dist/cli/commands/error-handler.d.ts +1 -5
  17. package/dist/cli/commands/error-handler.d.ts.map +1 -1
  18. package/dist/cli/commands/error-handler.js +48 -3
  19. package/dist/cli/commands/error-handler.js.map +1 -1
  20. package/dist/cli/commands/init.d.ts +0 -3
  21. package/dist/cli/commands/init.d.ts.map +1 -1
  22. package/dist/cli/commands/init.js +22 -4
  23. package/dist/cli/commands/init.js.map +1 -1
  24. package/dist/cli/commands/list.d.ts +2 -17
  25. package/dist/cli/commands/list.d.ts.map +1 -1
  26. package/dist/cli/commands/list.js +15 -3
  27. package/dist/cli/commands/list.js.map +1 -1
  28. package/dist/cli/commands/migrate.d.ts.map +1 -1
  29. package/dist/cli/commands/migrate.js +6 -9
  30. package/dist/cli/commands/migrate.js.map +1 -1
  31. package/dist/cli/commands/propose.d.ts.map +1 -1
  32. package/dist/cli/commands/propose.js +46 -6
  33. package/dist/cli/commands/propose.js.map +1 -1
  34. package/dist/cli/commands/query.d.ts.map +1 -1
  35. package/dist/cli/commands/query.js +99 -4
  36. package/dist/cli/commands/query.js.map +1 -1
  37. package/dist/cli/commands/retrieve.d.ts +7 -0
  38. package/dist/cli/commands/retrieve.d.ts.map +1 -0
  39. package/dist/cli/commands/retrieve.js +70 -0
  40. package/dist/cli/commands/retrieve.js.map +1 -0
  41. package/dist/cli/commands/revert.d.ts +18 -0
  42. package/dist/cli/commands/revert.d.ts.map +1 -0
  43. package/dist/cli/commands/revert.js +109 -0
  44. package/dist/cli/commands/revert.js.map +1 -0
  45. package/dist/cli/commands/status.d.ts +2 -19
  46. package/dist/cli/commands/status.d.ts.map +1 -1
  47. package/dist/cli/commands/status.js +42 -3
  48. package/dist/cli/commands/status.js.map +1 -1
  49. package/dist/cli/commands/verify.d.ts.map +1 -1
  50. package/dist/cli/commands/verify.js +12 -1
  51. package/dist/cli/commands/verify.js.map +1 -1
  52. package/dist/cli/index.d.ts.map +1 -1
  53. package/dist/cli/index.js +68 -2
  54. package/dist/cli/index.js.map +1 -1
  55. package/dist/cli/init/init-engine.d.ts.map +1 -1
  56. package/dist/cli/init/init-engine.js +19 -6
  57. package/dist/cli/init/init-engine.js.map +1 -1
  58. package/dist/cli/init/meta-files.d.ts +2 -1
  59. package/dist/cli/init/meta-files.d.ts.map +1 -1
  60. package/dist/cli/init/meta-files.js +167 -8
  61. package/dist/cli/init/meta-files.js.map +1 -1
  62. package/dist/cli/init/skill-generator.d.ts +3 -0
  63. package/dist/cli/init/skill-generator.d.ts.map +1 -1
  64. package/dist/cli/init/skill-generator.js +184 -3
  65. package/dist/cli/init/skill-generator.js.map +1 -1
  66. package/dist/cli/json-envelope.d.ts +15 -0
  67. package/dist/cli/json-envelope.d.ts.map +1 -0
  68. package/dist/cli/json-envelope.js +86 -0
  69. package/dist/cli/json-envelope.js.map +1 -0
  70. package/dist/cli/schema-check.d.ts +27 -0
  71. package/dist/cli/schema-check.d.ts.map +1 -0
  72. package/dist/cli/schema-check.js +33 -0
  73. package/dist/cli/schema-check.js.map +1 -0
  74. package/dist/cli/vault-discovery.d.ts.map +1 -1
  75. package/dist/cli/vault-discovery.js +16 -2
  76. package/dist/cli/vault-discovery.js.map +1 -1
  77. package/dist/core/embedding/cache.d.ts +12 -3
  78. package/dist/core/embedding/cache.d.ts.map +1 -1
  79. package/dist/core/embedding/cache.js +42 -5
  80. package/dist/core/embedding/cache.js.map +1 -1
  81. package/dist/core/embedding/embedder.d.ts.map +1 -1
  82. package/dist/core/embedding/embedder.js +73 -6
  83. package/dist/core/embedding/embedder.js.map +1 -1
  84. package/dist/core/index/build.d.ts.map +1 -1
  85. package/dist/core/index/build.js +54 -6
  86. package/dist/core/index/build.js.map +1 -1
  87. package/dist/core/index/resolve.d.ts.map +1 -1
  88. package/dist/core/index/resolve.js +27 -12
  89. package/dist/core/index/resolve.js.map +1 -1
  90. package/dist/core/index/scan.d.ts +10 -1
  91. package/dist/core/index/scan.d.ts.map +1 -1
  92. package/dist/core/index/scan.js +59 -10
  93. package/dist/core/index/scan.js.map +1 -1
  94. package/dist/core/index/schema-version.d.ts +28 -0
  95. package/dist/core/index/schema-version.d.ts.map +1 -1
  96. package/dist/core/index/schema-version.js +47 -0
  97. package/dist/core/index/schema-version.js.map +1 -1
  98. package/dist/core/migrate/change-converter.d.ts.map +1 -1
  99. package/dist/core/migrate/change-converter.js +52 -5
  100. package/dist/core/migrate/change-converter.js.map +1 -1
  101. package/dist/core/migrate/migrate.d.ts.map +1 -1
  102. package/dist/core/migrate/migrate.js +115 -1
  103. package/dist/core/migrate/migrate.js.map +1 -1
  104. package/dist/core/migrate/spec-converter.js +5 -0
  105. package/dist/core/migrate/spec-converter.js.map +1 -1
  106. package/dist/core/migrate/types.d.ts +9 -0
  107. package/dist/core/migrate/types.d.ts.map +1 -1
  108. package/dist/core/parser/frontmatter-parser.d.ts +0 -6
  109. package/dist/core/parser/frontmatter-parser.d.ts.map +1 -1
  110. package/dist/core/parser/frontmatter-parser.js +59 -2
  111. package/dist/core/parser/frontmatter-parser.js.map +1 -1
  112. package/dist/core/parser/requirement-parser.js +4 -0
  113. package/dist/core/parser/requirement-parser.js.map +1 -1
  114. package/dist/core/parser/task-parser.d.ts.map +1 -1
  115. package/dist/core/parser/task-parser.js +19 -0
  116. package/dist/core/parser/task-parser.js.map +1 -1
  117. package/dist/core/parser/wikilink-parser.d.ts.map +1 -1
  118. package/dist/core/parser/wikilink-parser.js +21 -5
  119. package/dist/core/parser/wikilink-parser.js.map +1 -1
  120. package/dist/core/retrieval/classify.d.ts +11 -4
  121. package/dist/core/retrieval/classify.d.ts.map +1 -1
  122. package/dist/core/retrieval/classify.js +76 -14
  123. package/dist/core/retrieval/classify.js.map +1 -1
  124. package/dist/core/retrieval/lexical.d.ts.map +1 -1
  125. package/dist/core/retrieval/lexical.js +31 -12
  126. package/dist/core/retrieval/lexical.js.map +1 -1
  127. package/dist/core/retrieval/retrieve.d.ts.map +1 -1
  128. package/dist/core/retrieval/retrieve.js +45 -5
  129. package/dist/core/retrieval/retrieve.js.map +1 -1
  130. package/dist/core/retrieval/scoring.d.ts.map +1 -1
  131. package/dist/core/retrieval/scoring.js +37 -12
  132. package/dist/core/retrieval/scoring.js.map +1 -1
  133. package/dist/core/schema/change.schema.d.ts.map +1 -1
  134. package/dist/core/schema/change.schema.js +6 -1
  135. package/dist/core/schema/change.schema.js.map +1 -1
  136. package/dist/core/schema/feature.schema.d.ts +1 -1
  137. package/dist/core/schema/feature.schema.d.ts.map +1 -1
  138. package/dist/core/schema/feature.schema.js +1 -0
  139. package/dist/core/schema/feature.schema.js.map +1 -1
  140. package/dist/core/schema/frontmatter.d.ts +15 -0
  141. package/dist/core/schema/frontmatter.d.ts.map +1 -1
  142. package/dist/core/schema/index.d.ts +15 -0
  143. package/dist/core/schema/index.d.ts.map +1 -1
  144. package/dist/core/schema/query.schema.d.ts +15 -0
  145. package/dist/core/schema/query.schema.d.ts.map +1 -1
  146. package/dist/core/schema/query.schema.js +5 -0
  147. package/dist/core/schema/query.schema.js.map +1 -1
  148. package/dist/core/schema/templates.d.ts +0 -4
  149. package/dist/core/schema/templates.d.ts.map +1 -1
  150. package/dist/core/schema/templates.js +25 -7
  151. package/dist/core/schema/templates.js.map +1 -1
  152. package/dist/core/sequencing/analyze.d.ts.map +1 -1
  153. package/dist/core/sequencing/analyze.js +3 -1
  154. package/dist/core/sequencing/analyze.js.map +1 -1
  155. package/dist/core/sequencing/priority-queue.d.ts +9 -3
  156. package/dist/core/sequencing/priority-queue.d.ts.map +1 -1
  157. package/dist/core/sequencing/priority-queue.js +10 -4
  158. package/dist/core/sequencing/priority-queue.js.map +1 -1
  159. package/dist/core/sequencing/stale-detector.d.ts.map +1 -1
  160. package/dist/core/sequencing/stale-detector.js +5 -0
  161. package/dist/core/sequencing/stale-detector.js.map +1 -1
  162. package/dist/core/workflow/apply/apply.d.ts.map +1 -1
  163. package/dist/core/workflow/apply/apply.js +429 -25
  164. package/dist/core/workflow/apply/apply.js.map +1 -1
  165. package/dist/core/workflow/apply/delta-parser.d.ts.map +1 -1
  166. package/dist/core/workflow/apply/delta-parser.js +43 -9
  167. package/dist/core/workflow/apply/delta-parser.js.map +1 -1
  168. package/dist/core/workflow/apply/feature-updater.d.ts.map +1 -1
  169. package/dist/core/workflow/apply/feature-updater.js +27 -11
  170. package/dist/core/workflow/apply/feature-updater.js.map +1 -1
  171. package/dist/core/workflow/apply/types.d.ts +9 -0
  172. package/dist/core/workflow/apply/types.d.ts.map +1 -1
  173. package/dist/core/workflow/continue/continue.d.ts +18 -0
  174. package/dist/core/workflow/continue/continue.d.ts.map +1 -1
  175. package/dist/core/workflow/continue/continue.js +134 -15
  176. package/dist/core/workflow/continue/continue.js.map +1 -1
  177. package/dist/core/workflow/continue/next-action.d.ts.map +1 -1
  178. package/dist/core/workflow/continue/next-action.js +16 -3
  179. package/dist/core/workflow/continue/next-action.js.map +1 -1
  180. package/dist/core/workflow/continue/types.d.ts +12 -0
  181. package/dist/core/workflow/continue/types.d.ts.map +1 -1
  182. package/dist/core/workflow/propose/note-creator.d.ts +2 -2
  183. package/dist/core/workflow/propose/note-creator.d.ts.map +1 -1
  184. package/dist/core/workflow/propose/note-creator.js +89 -12
  185. package/dist/core/workflow/propose/note-creator.js.map +1 -1
  186. package/dist/core/workflow/propose/propose.d.ts.map +1 -1
  187. package/dist/core/workflow/propose/propose.js +189 -47
  188. package/dist/core/workflow/propose/propose.js.map +1 -1
  189. package/dist/core/workflow/propose/query-normalizer.d.ts.map +1 -1
  190. package/dist/core/workflow/propose/query-normalizer.js +37 -5
  191. package/dist/core/workflow/propose/query-normalizer.js.map +1 -1
  192. package/dist/core/workflow/propose/types.d.ts +15 -0
  193. package/dist/core/workflow/propose/types.d.ts.map +1 -1
  194. package/dist/core/workflow/propose/types.js +6 -1
  195. package/dist/core/workflow/propose/types.js.map +1 -1
  196. package/dist/core/workflow/query/query-note-creator.js +4 -0
  197. package/dist/core/workflow/query/query-note-creator.js.map +1 -1
  198. package/dist/core/workflow/verify/coherence.d.ts +10 -0
  199. package/dist/core/workflow/verify/coherence.d.ts.map +1 -1
  200. package/dist/core/workflow/verify/coherence.js +91 -4
  201. package/dist/core/workflow/verify/coherence.js.map +1 -1
  202. package/dist/core/workflow/verify/completeness.d.ts +1 -1
  203. package/dist/core/workflow/verify/completeness.d.ts.map +1 -1
  204. package/dist/core/workflow/verify/completeness.js +53 -10
  205. package/dist/core/workflow/verify/completeness.js.map +1 -1
  206. package/dist/core/workflow/verify/correctness.d.ts +1 -1
  207. package/dist/core/workflow/verify/correctness.d.ts.map +1 -1
  208. package/dist/core/workflow/verify/correctness.js +95 -14
  209. package/dist/core/workflow/verify/correctness.js.map +1 -1
  210. package/dist/core/workflow/verify/vault-integrity.d.ts +11 -0
  211. package/dist/core/workflow/verify/vault-integrity.d.ts.map +1 -1
  212. package/dist/core/workflow/verify/vault-integrity.js +80 -3
  213. package/dist/core/workflow/verify/vault-integrity.js.map +1 -1
  214. package/dist/core/workflow/verify/verify.d.ts +0 -5
  215. package/dist/core/workflow/verify/verify.d.ts.map +1 -1
  216. package/dist/core/workflow/verify/verify.js +54 -3
  217. package/dist/core/workflow/verify/verify.js.map +1 -1
  218. package/dist/index.d.ts +13 -0
  219. package/dist/index.d.ts.map +1 -1
  220. package/dist/index.js +11 -0
  221. package/dist/index.js.map +1 -1
  222. package/dist/types/cli-contracts.d.ts +78 -0
  223. package/dist/types/cli-contracts.d.ts.map +1 -0
  224. package/dist/types/cli-contracts.js +2 -0
  225. package/dist/types/cli-contracts.js.map +1 -0
  226. package/dist/types/error-codes.d.ts +25 -0
  227. package/dist/types/error-codes.d.ts.map +1 -0
  228. package/dist/types/error-codes.js +27 -0
  229. package/dist/types/error-codes.js.map +1 -0
  230. package/dist/types/frontmatter.d.ts +9 -2
  231. package/dist/types/frontmatter.d.ts.map +1 -1
  232. package/dist/types/next-action.d.ts +21 -0
  233. package/dist/types/next-action.d.ts.map +1 -1
  234. package/dist/types/retrieval.d.ts +17 -0
  235. package/dist/types/retrieval.d.ts.map +1 -1
  236. package/dist/types/verify.d.ts +58 -1
  237. package/dist/types/verify.d.ts.map +1 -1
  238. package/dist/types/verify.js +58 -1
  239. package/dist/types/verify.js.map +1 -1
  240. package/dist/utils/conventions.d.ts +9 -0
  241. package/dist/utils/conventions.d.ts.map +1 -0
  242. package/dist/utils/conventions.js +22 -0
  243. package/dist/utils/conventions.js.map +1 -0
  244. package/dist/utils/id-generator.d.ts.map +1 -1
  245. package/dist/utils/id-generator.js +8 -0
  246. package/dist/utils/id-generator.js.map +1 -1
  247. package/dist/utils/normalize.d.ts +7 -4
  248. package/dist/utils/normalize.d.ts.map +1 -1
  249. package/dist/utils/normalize.js +43 -6
  250. package/dist/utils/normalize.js.map +1 -1
  251. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"coherence.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/verify/coherence.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,WAAW,EAAE,EAC5B,KAAK,EAAE,UAAU,GAChB,WAAW,EAAE,CA2Ef;AAID;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAiDlF;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,WAAW,EAAE,EAC3B,WAAW,EAAE,WAAW,EAAE,GACzB,WAAW,EAAE,CAuDf;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,WAAW,EAAE,EAC5B,KAAK,EAAE,UAAU,GAChB,WAAW,EAAE,CAoBf"}
1
+ {"version":3,"file":"coherence.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/verify/coherence.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,WAAW,EAAE,EAC5B,KAAK,EAAE,UAAU,GAChB,WAAW,EAAE,CA0Gf;AAID;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAiDlF;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,WAAW,EAAE,EAC3B,WAAW,EAAE,WAAW,EAAE,GACzB,WAAW,EAAE,CAuDf;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,WAAW,EAAE,GACxB,WAAW,EAAE,CAuCf;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,WAAW,EAAE,EAC5B,KAAK,EAAE,UAAU,GAChB,WAAW,EAAE,CA+Bf"}
@@ -8,6 +8,21 @@ export function checkConflictsViaSequencing(activeChanges, index) {
8
8
  const issues = [];
9
9
  // Delegate to sequencing engine (expects Map<string, IndexRecord>)
10
10
  const result = analyzeSequencing(index.records);
11
+ // Build a set of change-pair keys that have an actual requirement-level
12
+ // conflict so Feature-level `conflict_candidate` pairs that DON'T also
13
+ // hit a requirement collision can be surfaced as warnings instead of
14
+ // errors. Two Changes that touch the same Feature but modify disjoint
15
+ // requirements are serialization-unsafe (whoever applies second needs
16
+ // a rebase of base_fingerprint) but they do not step on each other's
17
+ // content — an error-level verdict was overly strict and caused
18
+ // false-positive CI failures.
19
+ const hasRequirementConflict = new Set();
20
+ for (const c of result.requirement_conflicts) {
21
+ const a = c.change_a;
22
+ const b = c.change_b;
23
+ const key = a < b ? `${a}|${b}` : `${b}|${a}`;
24
+ hasRequirementConflict.add(key);
25
+ }
11
26
  // Map pairwise touches severities to VerifyIssue
12
27
  for (const pair of result.pairwise_severities) {
13
28
  if (pair.severity === 'blocked') {
@@ -21,13 +36,26 @@ export function checkConflictsViaSequencing(activeChanges, index) {
21
36
  });
22
37
  }
23
38
  else if (pair.severity === 'conflict_candidate') {
39
+ const pairKey = pair.change_a < pair.change_b
40
+ ? `${pair.change_a}|${pair.change_b}`
41
+ : `${pair.change_b}|${pair.change_a}`;
42
+ const alsoRequirementLevel = hasRequirementConflict.has(pairKey);
24
43
  issues.push({
25
44
  dimension: 'coherence',
26
- severity: 'error',
45
+ // Downgrade to warning when the Feature-level overlap does NOT
46
+ // coincide with a requirement-level collision. The pair is still
47
+ // worth surfacing because serialization order matters, but it
48
+ // shouldn't block a pass.
49
+ severity: alsoRequirementLevel ? 'error' : 'warning',
27
50
  code: 'TOUCHES_OVERLAP_CONFLICT',
28
- message: `Changes "${pair.change_a}" and "${pair.change_b}" both touch Feature(s): ${pair.overlapping_features.join(', ')} -- conflict_candidate`,
51
+ message: `Changes "${pair.change_a}" and "${pair.change_b}" both touch Feature(s): ${pair.overlapping_features.join(', ')}` +
52
+ (alsoRequirementLevel
53
+ ? ' — with overlapping requirement(s); apply order must be resolved.'
54
+ : ' — at Feature level only; apply in order and rebase base_fingerprint if needed.'),
29
55
  note_id: pair.change_a,
30
- suggestion: 'User confirmation required. Auto-apply is blocked.',
56
+ suggestion: alsoRequirementLevel
57
+ ? 'Resolve the requirement collision manually; auto-apply is blocked.'
58
+ : 'Apply one change, then rebase the other\'s Delta Summary base_fingerprint against the new Feature content.',
31
59
  });
32
60
  }
33
61
  else if (pair.severity === 'needs_review') {
@@ -181,6 +209,53 @@ export function checkDecisionConsistency(allDecisions, allFeatures) {
181
209
  }
182
210
  return issues;
183
211
  }
212
+ /**
213
+ * Check Feature ↔ Change bidirectional backlink consistency.
214
+ *
215
+ * When `propose` creates a Change targeting a Feature, it updates the
216
+ * Feature's `changes:` frontmatter field via `updateFeatureChangesField`.
217
+ * If that step fails (or if the user manually creates a Change), the
218
+ * backlink is missing. This check detects the mismatch so users can fix
219
+ * either side.
220
+ */
221
+ export function checkFeatureChangeBacklinks(allRecords) {
222
+ const issues = [];
223
+ const features = new Map();
224
+ const changes = [];
225
+ for (const r of allRecords) {
226
+ if (r.type === 'feature')
227
+ features.set(r.id, r);
228
+ if (r.type === 'change')
229
+ changes.push(r);
230
+ }
231
+ for (const change of changes) {
232
+ const featureIds = [];
233
+ if (change.feature)
234
+ featureIds.push(change.feature);
235
+ if (change.features)
236
+ featureIds.push(...change.features);
237
+ for (const fId of featureIds) {
238
+ const feature = features.get(fId);
239
+ if (!feature)
240
+ continue; // Caught by INVALID_FRONTMATTER_REF
241
+ // Feature.changes should contain a reference to this Change
242
+ const featureLinksBack = feature.changes?.includes(change.id) ?? false;
243
+ if (!featureLinksBack) {
244
+ issues.push({
245
+ dimension: 'coherence',
246
+ severity: 'warning',
247
+ code: 'MISSING_LINK',
248
+ message: `Change "${change.id}" declares feature "${fId}" but the Feature's ` +
249
+ `\`changes\` frontmatter does not link back to this Change.`,
250
+ note_id: change.id,
251
+ note_path: change.path,
252
+ suggestion: `Add "[[${change.title}]]" to the \`changes:\` list in Feature "${fId}" frontmatter.`,
253
+ });
254
+ }
255
+ }
256
+ }
257
+ return issues;
258
+ }
184
259
  /**
185
260
  * Check that all depends_on targets actually exist in the index.
186
261
  */
@@ -188,7 +263,8 @@ export function checkDependsOnConsistency(activeChanges, index) {
188
263
  const issues = [];
189
264
  for (const change of activeChanges) {
190
265
  for (const dep of change.depends_on) {
191
- if (!index.records.has(dep)) {
266
+ const depRecord = index.records.get(dep);
267
+ if (!depRecord) {
192
268
  issues.push({
193
269
  dimension: 'coherence',
194
270
  severity: 'error',
@@ -199,6 +275,17 @@ export function checkDependsOnConsistency(activeChanges, index) {
199
275
  suggestion: 'Fix the depends_on entry or create the missing Change note.',
200
276
  });
201
277
  }
278
+ else if (depRecord.type !== 'change') {
279
+ issues.push({
280
+ dimension: 'coherence',
281
+ severity: 'warning',
282
+ code: 'INVALID_DEPENDS_ON_TYPE',
283
+ message: `Change "${change.id}" depends_on "${dep}" which is a ${depRecord.type}, not a change`,
284
+ note_id: change.id,
285
+ note_path: change.path,
286
+ suggestion: 'depends_on should reference Change notes only.',
287
+ });
288
+ }
202
289
  }
203
290
  }
204
291
  return issues;
@@ -1 +1 @@
1
- {"version":3,"file":"coherence.js","sourceRoot":"","sources":["../../../../src/core/workflow/verify/coherence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coherence.js","sourceRoot":"","sources":["../../../../src/core/workflow/verify/coherence.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import type { VaultIndex, IndexRecord } from '../../../types/index.js';
6
6
  import type { VerifyIssue } from '../../../types/verify.js';
7
7
  /**
8
8
  * Check completeness of a Feature note.
9
- * Required: Purpose, Current Behavior, Requirements sections.
9
+ * Required: Purpose, Current Behavior, Constraints, Known Gaps, Requirements sections.
10
10
  * Requirements must have SHALL/MUST and at least one scenario.
11
11
  */
12
12
  export declare function checkFeatureCompleteness(feature: IndexRecord, _index: VaultIndex): VerifyIssue[];
@@ -1 +1 @@
1
- {"version":3,"file":"completeness.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/verify/completeness.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAa5D;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,WAAW,EAAE,CA0DhG;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,WAAW,EAAE,CAoH9F;AAsCD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,EAAE,CA8CrE"}
1
+ {"version":3,"file":"completeness.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/verify/completeness.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAY5D;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,WAAW,EAAE,CA+FhG;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,WAAW,EAAE,CA2H9F;AAsCD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,EAAE,CA8CrE"}
@@ -1,4 +1,4 @@
1
- const FEATURE_REQUIRED_SECTIONS = ['Purpose', 'Current Behavior', 'Requirements'];
1
+ import { FEATURE_REQUIRED_SECTIONS } from '../../schema/feature.schema.js';
2
2
  const CHANGE_REQUIRED_SECTIONS = ['Why'];
3
3
  /** Sections whose body must contain meaningful content (not just a heading). */
4
4
  const CHANGE_CONTENT_REQUIRED_SECTIONS = ['Why', 'Delta Summary', 'Tasks', 'Validation'];
@@ -8,7 +8,7 @@ const MIN_SECTION_CONTENT_LENGTH = 10;
8
8
  const COMPLEX_CHANGE_DELTA_THRESHOLD = 3;
9
9
  /**
10
10
  * Check completeness of a Feature note.
11
- * Required: Purpose, Current Behavior, Requirements sections.
11
+ * Required: Purpose, Current Behavior, Constraints, Known Gaps, Requirements sections.
12
12
  * Requirements must have SHALL/MUST and at least one scenario.
13
13
  */
14
14
  export function checkFeatureCompleteness(feature, _index) {
@@ -39,28 +39,64 @@ export function checkFeatureCompleteness(feature, _index) {
39
39
  suggestion: 'Add at least one "### Requirement: <name>" under the Requirements section.',
40
40
  });
41
41
  }
42
- // Each requirement must have SHALL/MUST and at least one scenario
42
+ // Duplicate requirement name check: the parser skips the second
43
+ // occurrence and records a parse error, but that error doesn't make
44
+ // it into the verify report on its own. Surface duplicates here so
45
+ // users see a clear completeness error instead of silently losing a
46
+ // requirement entry. Note: seen is built from parser output, which
47
+ // already deduped — so duplicates show up as "parser skipped N".
48
+ // We detect via raw headings instead: count `### Requirement: X`
49
+ // occurrences across the Feature's headings list.
50
+ const requirementHeadingCounts = new Map();
51
+ for (const heading of feature.headings) {
52
+ const match = heading.match(/^Requirement:\s*(.+)$/i);
53
+ if (match) {
54
+ const name = match[1].trim();
55
+ requirementHeadingCounts.set(name, (requirementHeadingCounts.get(name) ?? 0) + 1);
56
+ }
57
+ }
58
+ for (const [name, count] of requirementHeadingCounts) {
59
+ if (count > 1) {
60
+ issues.push({
61
+ dimension: 'completeness',
62
+ severity: 'error',
63
+ code: 'MISSING_REQUIREMENTS',
64
+ message: `Requirement "${name}" in Feature "${feature.id}" appears ${count} times — each name must be unique within the Feature.`,
65
+ note_id: feature.id,
66
+ note_path: feature.path,
67
+ suggestion: `Rename the duplicate headings (e.g., "${name} (auth flow)", "${name} (legacy)") or merge them into one requirement.`,
68
+ });
69
+ }
70
+ }
71
+ // Each requirement must have SHALL/MUST and at least one scenario.
72
+ // Migrated notes (from OpenSpec) may not follow this convention — downgrade to warning.
73
+ const isMigrated = feature.tags?.includes('migrated') ?? false;
74
+ const reqSeverity = isMigrated ? 'warning' : 'error';
43
75
  for (const req of feature.requirements) {
44
76
  if (!/\b(SHALL|MUST)\b/.test(req.normative)) {
45
77
  issues.push({
46
78
  dimension: 'completeness',
47
- severity: 'error',
79
+ severity: reqSeverity,
48
80
  code: 'MISSING_REQUIREMENTS',
49
81
  message: `Requirement "${req.name}" in Feature "${feature.id}" lacks SHALL or MUST keyword`,
50
82
  note_id: feature.id,
51
83
  note_path: feature.path,
52
- suggestion: 'Normative statements must contain SHALL or MUST.',
84
+ suggestion: isMigrated
85
+ ? 'Migrated requirement — consider adding SHALL/MUST when updating this Feature.'
86
+ : 'Normative statements must contain SHALL or MUST.',
53
87
  });
54
88
  }
55
89
  if (req.scenarios.length === 0) {
56
90
  issues.push({
57
91
  dimension: 'completeness',
58
- severity: 'error',
92
+ severity: reqSeverity,
59
93
  code: 'MISSING_REQUIREMENTS',
60
94
  message: `Requirement "${req.name}" in Feature "${feature.id}" has no scenario defined`,
61
95
  note_id: feature.id,
62
96
  note_path: feature.path,
63
- suggestion: 'Add at least one "#### Scenario:" with WHEN/THEN format.',
97
+ suggestion: isMigrated
98
+ ? 'Migrated requirement — consider adding WHEN/THEN scenarios when updating.'
99
+ : 'Add at least one "#### Scenario:" with WHEN/THEN format.',
64
100
  });
65
101
  }
66
102
  }
@@ -87,16 +123,23 @@ export function checkChangeCompleteness(change, _index) {
87
123
  });
88
124
  }
89
125
  }
90
- // Delta Summary check
126
+ // Delta Summary check. Migrated changes (OpenSpec's free-form
127
+ // "What Changes" doesn't map cleanly to canonical delta_summary) get
128
+ // a warning instead of an error so a fresh migration doesn't fail
129
+ // verify out of the gate. Authors still need to fill in canonical
130
+ // delta_summary before `ows apply` can run.
131
+ const isMigratedChange = change.tags?.includes('migrated') ?? false;
91
132
  if (change.delta_summary.length === 0) {
92
133
  issues.push({
93
134
  dimension: 'completeness',
94
- severity: 'error',
135
+ severity: isMigratedChange ? 'warning' : 'error',
95
136
  code: 'MISSING_DELTA_SUMMARY',
96
137
  message: `Change "${change.id}" has no Delta Summary entries`,
97
138
  note_id: change.id,
98
139
  note_path: change.path,
99
- suggestion: 'Add a Delta Summary with ADDED/MODIFIED/REMOVED/RENAMED operations.',
140
+ suggestion: isMigratedChange
141
+ ? 'Migrated from OpenSpec — fill in canonical Delta Summary (ADDED/MODIFIED/REMOVED/RENAMED) before applying.'
142
+ : 'Add a Delta Summary with ADDED/MODIFIED/REMOVED/RENAMED operations.',
100
143
  });
101
144
  }
102
145
  // Tasks check
@@ -1 +1 @@
1
- {"version":3,"file":"completeness.js","sourceRoot":"","sources":["../../../../src/core/workflow/verify/completeness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"completeness.js","sourceRoot":"","sources":["../../../../src/core/workflow/verify/completeness.ts"],"names":[],"mappings":"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"}
@@ -29,7 +29,7 @@ export declare function checkStatusTransition(change: IndexRecord, index: VaultI
29
29
  * so per-record comparison is always a no-op. Instead, we surface index-level
30
30
  * schema_mismatch warnings (e.g., missing schema.md).
31
31
  */
32
- export declare function checkSchemaVersionMatch(_note: IndexRecord, _declaredVersion: string, index?: VaultIndex): VerifyIssue[];
32
+ export declare function checkSchemaVersionMatch(_note: IndexRecord, declaredVersion: string, index?: VaultIndex): VerifyIssue[];
33
33
  /**
34
34
  * Check drift between Delta Summary and current Feature state based on Change status.
35
35
  * Drift is acceptable during active work but is an error for applied Changes.
@@ -1 +1 @@
1
- {"version":3,"file":"correctness.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/verify/correctness.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAkKlG;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CA4CpF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAoC3F;AAED;;GAEG;AACH;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,WAAW,EAAE,CAYvH;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,EACjB,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAC5B,WAAW,EAAE,CAiEf;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAgC/F"}
1
+ {"version":3,"file":"correctness.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/verify/correctness.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAQ5D;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAkKlG;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAuDpF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAiF3F;AAED;;GAEG;AACH;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,WAAW,EAAE,CA+CtH;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,EACjB,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAC5B,WAAW,EAAE,CAiEf;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAgC/F"}
@@ -1,3 +1,4 @@
1
+ import { isSchemaVersionSupported, SUPPORTED_SCHEMA_VERSIONS, computeSchemaFingerprint, BASELINE_SCHEMA_FINGERPRINT, } from '../../index/schema-version.js';
1
2
  /**
2
3
  * Run the operation validation matrix for a Change's Delta Summary.
3
4
  * Pre-apply: checks preconditions (requirement must/must not exist).
@@ -200,10 +201,19 @@ export function checkStaleBase(change, index) {
200
201
  dimension: 'correctness',
201
202
  severity: 'error',
202
203
  code: 'STALE_BASE',
203
- message: `${entry.op} "${entry.target_name}": base_fingerprint mismatch. Expected ${entry.base_fingerprint}, current is ${currentReq.content_hash}. Another Change may have been applied since this Delta Summary was written.`,
204
+ // Surface both possible causes explicitly we can't distinguish
205
+ // "legitimately stale because another Change applied first" from
206
+ // "the author copy-pasted or mistyped the hash and it was never a
207
+ // real prior value" without traversing git history. Giving users
208
+ // both diagnoses up front saves a confused debugging round-trip.
209
+ message: `${entry.op} "${entry.target_name}": base_fingerprint mismatch. ` +
210
+ `Expected ${entry.base_fingerprint}, current is ${currentReq.content_hash}. ` +
211
+ `Either another Change was applied since this Delta Summary was written, ` +
212
+ `or the base_fingerprint was typed/copied incorrectly and never matched the Feature.`,
204
213
  note_id: change.id,
205
214
  note_path: change.path,
206
- suggestion: 'Re-read the current Feature requirement and update the Delta Summary base_fingerprint.',
215
+ suggestion: 'Re-read the current Feature requirement and paste its actual content_hash into the Delta Summary base_fingerprint. ' +
216
+ 'If you believe your hash is correct, check `git log -p` on the Feature file to see which Change last modified it.',
207
217
  });
208
218
  }
209
219
  }
@@ -230,6 +240,19 @@ export function checkStatusTransition(change, index) {
230
240
  }
231
241
  }
232
242
  if (change.status === 'in_progress') {
243
+ // Must have all prerequisites met (planned-level checks)
244
+ const missing = checkPlannedPrerequisites(change);
245
+ if (missing.length > 0) {
246
+ issues.push({
247
+ dimension: 'correctness',
248
+ severity: 'error',
249
+ code: 'INVALID_STATUS_TRANSITION',
250
+ message: `Change "${change.id}" is "in_progress" but missing planned-level prerequisites: ${missing.join(', ')}`,
251
+ note_id: change.id,
252
+ note_path: change.path,
253
+ suggestion: 'Status cannot skip from proposed directly to in_progress. Fill sections first.',
254
+ });
255
+ }
233
256
  for (const dep of change.depends_on) {
234
257
  const depRecord = index.records.get(dep);
235
258
  if (depRecord && depRecord.status !== 'applied') {
@@ -245,6 +268,35 @@ export function checkStatusTransition(change, index) {
245
268
  }
246
269
  }
247
270
  }
271
+ if (change.status === 'applied') {
272
+ // Applied changes must have all prerequisites met and all tasks done
273
+ const missing = checkPlannedPrerequisites(change);
274
+ if (missing.length > 0) {
275
+ issues.push({
276
+ dimension: 'correctness',
277
+ severity: 'error',
278
+ code: 'INVALID_STATUS_TRANSITION',
279
+ message: `Change "${change.id}" is "applied" but missing prerequisites: ${missing.join(', ')}. ` +
280
+ `Status may have been set manually (e.g., proposed → applied via file edit), bypassing the apply workflow.`,
281
+ note_id: change.id,
282
+ note_path: change.path,
283
+ suggestion: 'Run the apply workflow instead of editing the status field directly.',
284
+ });
285
+ }
286
+ const unfinishedTasks = change.tasks.filter((t) => !t.done);
287
+ if (unfinishedTasks.length > 0) {
288
+ issues.push({
289
+ dimension: 'correctness',
290
+ severity: 'error',
291
+ code: 'INVALID_STATUS_TRANSITION',
292
+ message: `Change "${change.id}" is "applied" but has ${unfinishedTasks.length} unchecked task(s). ` +
293
+ `The apply workflow requires all tasks to be checked before transitioning.`,
294
+ note_id: change.id,
295
+ note_path: change.path,
296
+ suggestion: 'Either complete the remaining tasks, or revert the status field to "in_progress".',
297
+ });
298
+ }
299
+ }
248
300
  return issues;
249
301
  }
250
302
  /**
@@ -256,19 +308,48 @@ export function checkStatusTransition(change, index) {
256
308
  * so per-record comparison is always a no-op. Instead, we surface index-level
257
309
  * schema_mismatch warnings (e.g., missing schema.md).
258
310
  */
259
- export function checkSchemaVersionMatch(_note, _declaredVersion, index) {
311
+ export function checkSchemaVersionMatch(_note, declaredVersion, index) {
312
+ const issues = [];
260
313
  if (!index)
261
- return [];
262
- return index.warnings
263
- .filter((w) => w.type === 'schema_mismatch')
264
- .map((w) => ({
265
- dimension: 'correctness',
266
- severity: 'error',
267
- code: 'SCHEMA_MISMATCH',
268
- message: w.message,
269
- note_path: w.note_path,
270
- suggestion: 'Create or fix wiki/00-meta/schema.md with a valid schema_version field.',
271
- }));
314
+ return issues;
315
+ // Add index-level schema_mismatch warnings
316
+ for (const w of index.warnings) {
317
+ if (w.type === 'schema_mismatch') {
318
+ issues.push({
319
+ dimension: 'correctness',
320
+ severity: 'error',
321
+ code: 'SCHEMA_MISMATCH',
322
+ message: w.message,
323
+ note_path: w.note_path,
324
+ suggestion: 'Create or fix wiki/00-meta/schema.md with a valid schema_version field.',
325
+ });
326
+ }
327
+ }
328
+ // Gate: unsupported schema version
329
+ if (declaredVersion && declaredVersion !== 'unknown' && !isSchemaVersionSupported(declaredVersion)) {
330
+ issues.push({
331
+ dimension: 'correctness',
332
+ severity: 'error',
333
+ code: 'UNSUPPORTED_SCHEMA_VERSION',
334
+ message: `Vault schema version "${declaredVersion}" is not supported by this ows version. Supported: ${SUPPORTED_SCHEMA_VERSIONS.join(', ')}`,
335
+ suggestion: 'Upgrade the vault schema or use a matching ows version.',
336
+ });
337
+ }
338
+ // Tripwire: schema shape changed without bumping CURRENT_SCHEMA_VERSION.
339
+ // Warns developers (not end users) that required/optional sections diverged
340
+ // from the baseline — a silent breaking change.
341
+ const runtimeFingerprint = computeSchemaFingerprint();
342
+ if (runtimeFingerprint !== BASELINE_SCHEMA_FINGERPRINT) {
343
+ issues.push({
344
+ dimension: 'correctness',
345
+ severity: 'warning',
346
+ code: 'BREAKING_CHANGE_WITHOUT_VERSION_BUMP',
347
+ message: `ows schema shape changed (fingerprint ${runtimeFingerprint}) but CURRENT_SCHEMA_VERSION was not bumped. ` +
348
+ `Baseline: ${BASELINE_SCHEMA_FINGERPRINT}. Vaults built with the old shape may break silently.`,
349
+ suggestion: 'Bump CURRENT_SCHEMA_VERSION in src/core/index/schema-version.ts and update BASELINE_SCHEMA_FINGERPRINT to match.',
350
+ });
351
+ }
352
+ return issues;
272
353
  }
273
354
  /**
274
355
  * Check drift between Delta Summary and current Feature state based on Change status.
@@ -1 +1 @@
1
- {"version":3,"file":"correctness.js","sourceRoot":"","sources":["../../../../src/core/workflow/verify/correctness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"correctness.js","sourceRoot":"","sources":["../../../../src/core/workflow/verify/correctness.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,+BAA+B,CAAC;AAEvC;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAAC,MAAmB,EAAE,KAAiB;IACjF,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzC,IAAI,KAAK,CAAC,WAAW,KAAK,aAAa;YAAE,SAAS;QAElD,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC9D,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC;gBACV,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,0CAA0C,KAAK,CAAC,cAAc,GAAG;gBAC1E,OAAO,EAAE,MAAM,CAAC,EAAE;gBAClB,SAAS,EAAE,MAAM,CAAC,IAAI;gBACtB,UAAU,EAAE,sDAAsD;aACnE,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjF,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,wBAAwB;YACxB,QAAQ,KAAK,CAAC,EAAE,EAAE,CAAC;gBACjB,KAAK,OAAO;oBACV,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;wBACzC,MAAM,CAAC,IAAI,CAAC;4BACV,SAAS,EAAE,aAAa;4BACxB,QAAQ,EAAE,OAAO;4BACjB,IAAI,EAAE,sBAAsB;4BAC5B,OAAO,EAAE,sBAAsB,KAAK,CAAC,WAAW,oCAAoC;4BACpF,OAAO,EAAE,MAAM,CAAC,EAAE;4BAClB,SAAS,EAAE,MAAM,CAAC,IAAI;yBACvB,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM;gBACR,KAAK,UAAU,CAAC,CAAC,CAAC;oBAChB,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBAChD,IAAI,CAAC,GAAG,EAAE,CAAC;wBACT,MAAM,CAAC,IAAI,CAAC;4BACV,SAAS,EAAE,aAAa;4BACxB,QAAQ,EAAE,OAAO;4BACjB,IAAI,EAAE,yBAAyB;4BAC/B,OAAO,EAAE,yBAAyB,KAAK,CAAC,WAAW,oCAAoC;4BACvF,OAAO,EAAE,MAAM,CAAC,EAAE;4BAClB,SAAS,EAAE,MAAM,CAAC,IAAI;yBACvB,CAAC,CAAC;oBACL,CAAC;yBAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,GAAG,CAAC,YAAY,KAAK,KAAK,CAAC,gBAAgB,EAAE,CAAC;wBACjF,MAAM,CAAC,IAAI,CAAC;4BACV,SAAS,EAAE,aAAa;4BACxB,QAAQ,EAAE,SAAS;4BACnB,IAAI,EAAE,oBAAoB;4BAC1B,OAAO,EAAE,yBAAyB,KAAK,CAAC,WAAW,sCAAsC;4BACzF,OAAO,EAAE,MAAM,CAAC,EAAE;4BAClB,SAAS,EAAE,MAAM,CAAC,IAAI;4BACtB,UAAU,EAAE,0FAA0F;yBACvG,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,KAAK,SAAS;oBACZ,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;wBACxC,MAAM,CAAC,IAAI,CAAC;4BACV,SAAS,EAAE,aAAa;4BACxB,QAAQ,EAAE,OAAO;4BACjB,IAAI,EAAE,wBAAwB;4BAC9B,OAAO,EAAE,wBAAwB,KAAK,CAAC,WAAW,uCAAuC;4BACzF,OAAO,EAAE,MAAM,CAAC,EAAE;4BAClB,SAAS,EAAE,MAAM,CAAC,IAAI;yBACvB,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;wBACxC,MAAM,CAAC,IAAI,CAAC;4BACV,SAAS,EAAE,aAAa;4BACxB,QAAQ,EAAE,OAAO;4BACjB,IAAI,EAAE,wBAAwB;4BAC9B,OAAO,EAAE,qBAAqB,KAAK,CAAC,WAAW,2BAA2B;4BAC1E,OAAO,EAAE,MAAM,CAAC,EAAE;4BAClB,SAAS,EAAE,MAAM,CAAC,IAAI;yBACvB,CAAC,CAAC;oBACL,CAAC;oBACD,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACxD,MAAM,CAAC,IAAI,CAAC;4BACV,SAAS,EAAE,aAAa;4BACxB,QAAQ,EAAE,OAAO;4BACjB,IAAI,EAAE,wBAAwB;4BAC9B,OAAO,EAAE,qBAAqB,KAAK,CAAC,QAAQ,wBAAwB;4BACpE,OAAO,EAAE,MAAM,CAAC,EAAE;4BAClB,SAAS,EAAE,MAAM,CAAC,IAAI;yBACvB,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM;YACV,CAAC;QACH,CAAC;aAAM,CAAC;YACN,sDAAsD;YACtD,QAAQ,KAAK,CAAC,EAAE,EAAE,CAAC;gBACjB,KAAK,OAAO;oBACV,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;wBACxC,MAAM,CAAC,IAAI,CAAC;4BACV,SAAS,EAAE,aAAa;4BACxB,QAAQ,EAAE,OAAO;4BACjB,IAAI,EAAE,sBAAsB;4BAC5B,OAAO,EAAE,sBAAsB,KAAK,CAAC,WAAW,yCAAyC;4BACzF,OAAO,EAAE,MAAM,CAAC,EAAE;4BAClB,SAAS,EAAE,MAAM,CAAC,IAAI;yBACvB,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM;gBACR,KAAK,UAAU;oBACb,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;wBACzC,MAAM,CAAC,IAAI,CAAC;4BACV,SAAS,EAAE,aAAa;4BACxB,QAAQ,EAAE,OAAO;4BACjB,IAAI,EAAE,yBAAyB;4BAC/B,OAAO,EAAE,yBAAyB,KAAK,CAAC,WAAW,yCAAyC;4BAC5F,OAAO,EAAE,MAAM,CAAC,EAAE;4BAClB,SAAS,EAAE,MAAM,CAAC,IAAI;yBACvB,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;wBACzC,MAAM,CAAC,IAAI,CAAC;4BACV,SAAS,EAAE,aAAa;4BACxB,QAAQ,EAAE,OAAO;4BACjB,IAAI,EAAE,wBAAwB;4BAC9B,OAAO,EAAE,wBAAwB,KAAK,CAAC,WAAW,yCAAyC;4BAC3F,OAAO,EAAE,MAAM,CAAC,EAAE;4BAClB,SAAS,EAAE,MAAM,CAAC,IAAI;yBACvB,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;wBACzC,MAAM,CAAC,IAAI,CAAC;4BACV,SAAS,EAAE,aAAa;4BACxB,QAAQ,EAAE,OAAO;4BACjB,IAAI,EAAE,wBAAwB;4BAC9B,OAAO,EAAE,qBAAqB,KAAK,CAAC,WAAW,6BAA6B;4BAC5E,OAAO,EAAE,MAAM,CAAC,EAAE;4BAClB,SAAS,EAAE,MAAM,CAAC,IAAI;yBACvB,CAAC,CAAC;oBACL,CAAC;oBACD,IAAI,KAAK,CAAC,QAAQ,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACvD,MAAM,CAAC,IAAI,CAAC;4BACV,SAAS,EAAE,aAAa;4BACxB,QAAQ,EAAE,OAAO;4BACjB,IAAI,EAAE,wBAAwB;4BAC9B,OAAO,EAAE,qBAAqB,KAAK,CAAC,QAAQ,6BAA6B;4BACzE,OAAO,EAAE,MAAM,CAAC,EAAE;4BAClB,SAAS,EAAE,MAAM,CAAC,IAAI;yBACvB,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM;YACV,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAmB,EAAE,KAAiB;IACnE,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzC,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO;YAAE,SAAS;QAEnC,IAAI,KAAK,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC;gBACV,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,SAAS;gBACnB,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,GAAG,KAAK,CAAC,EAAE,eAAe,KAAK,CAAC,WAAW,2BAA2B;gBAC/E,OAAO,EAAE,MAAM,CAAC,EAAE;gBAClB,SAAS,EAAE,MAAM,CAAC,IAAI;gBACtB,UAAU,EAAE,6EAA6E;aAC1F,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,4DAA4D;QAC5D,IAAI,KAAK,CAAC,gBAAgB,KAAK,UAAU,EAAE,CAAC;YAC1C,SAAS;QACX,CAAC;QAED,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC9D,IAAI,CAAC,aAAa;YAAE,SAAS,CAAC,2BAA2B;QAEzD,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,WAAW,CAAC,CAAC;QACxF,IAAI,CAAC,UAAU;YAAE,SAAS,CAAC,iCAAiC;QAE5D,IAAI,UAAU,CAAC,YAAY,KAAK,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC;gBACV,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,YAAY;gBAClB,iEAAiE;gBACjE,iEAAiE;gBACjE,kEAAkE;gBAClE,iEAAiE;gBACjE,iEAAiE;gBACjE,OAAO,EACL,GAAG,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,WAAW,gCAAgC;oBACjE,YAAY,KAAK,CAAC,gBAAgB,gBAAgB,UAAU,CAAC,YAAY,IAAI;oBAC7E,0EAA0E;oBAC1E,qFAAqF;gBACvF,OAAO,EAAE,MAAM,CAAC,EAAE;gBAClB,SAAS,EAAE,MAAM,CAAC,IAAI;gBACtB,UAAU,EACR,qHAAqH;oBACrH,mHAAmH;aACtH,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAmB,EAAE,KAAiB;IAC1E,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC;gBACV,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,2BAA2B;gBACjC,OAAO,EAAE,WAAW,MAAM,CAAC,EAAE,6CAA6C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC9F,OAAO,EAAE,MAAM,CAAC,EAAE;gBAClB,SAAS,EAAE,MAAM,CAAC,IAAI;gBACtB,UAAU,EAAE,+DAA+D;aAC5E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACpC,yDAAyD;QACzD,MAAM,OAAO,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC;gBACV,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,2BAA2B;gBACjC,OAAO,EAAE,WAAW,MAAM,CAAC,EAAE,+DAA+D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAChH,OAAO,EAAE,MAAM,CAAC,EAAE;gBAClB,SAAS,EAAE,MAAM,CAAC,IAAI;gBACtB,UAAU,EAAE,gFAAgF;aAC7F,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzC,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChD,MAAM,CAAC,IAAI,CAAC;oBACV,SAAS,EAAE,aAAa;oBACxB,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,mBAAmB;oBACzB,OAAO,EAAE,WAAW,MAAM,CAAC,EAAE,sCAAsC,GAAG,SAAS,SAAS,CAAC,MAAM,GAAG;oBAClG,OAAO,EAAE,MAAM,CAAC,EAAE;oBAClB,SAAS,EAAE,MAAM,CAAC,IAAI;oBACtB,UAAU,EAAE,aAAa,GAAG,iDAAiD;iBAC9E,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,qEAAqE;QACrE,MAAM,OAAO,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC;gBACV,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,2BAA2B;gBACjC,OAAO,EAAE,WAAW,MAAM,CAAC,EAAE,6CAA6C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;oBAC9F,2GAA2G;gBAC7G,OAAO,EAAE,MAAM,CAAC,EAAE;gBAClB,SAAS,EAAE,MAAM,CAAC,IAAI;gBACtB,UAAU,EAAE,sEAAsE;aACnF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC;gBACV,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,2BAA2B;gBACjC,OAAO,EAAE,WAAW,MAAM,CAAC,EAAE,0BAA0B,eAAe,CAAC,MAAM,sBAAsB;oBACjG,2EAA2E;gBAC7E,OAAO,EAAE,MAAM,CAAC,EAAE;gBAClB,SAAS,EAAE,MAAM,CAAC,IAAI;gBACtB,UAAU,EAAE,mFAAmF;aAChG,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAkB,EAAE,eAAuB,EAAE,KAAkB;IACrG,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAE1B,2CAA2C;IAC3C,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC;gBACV,SAAS,EAAE,aAAsB;gBACjC,QAAQ,EAAE,OAAgB;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,UAAU,EAAE,yEAAyE;aACtF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,IAAI,eAAe,IAAI,eAAe,KAAK,SAAS,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC,EAAE,CAAC;QACnG,MAAM,CAAC,IAAI,CAAC;YACV,SAAS,EAAE,aAAsB;YACjC,QAAQ,EAAE,OAAgB;YAC1B,IAAI,EAAE,4BAA4B;YAClC,OAAO,EAAE,yBAAyB,eAAe,sDAAsD,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC7I,UAAU,EAAE,yDAAyD;SACtE,CAAC,CAAC;IACL,CAAC;IAED,yEAAyE;IACzE,4EAA4E;IAC5E,gDAAgD;IAChD,MAAM,kBAAkB,GAAG,wBAAwB,EAAE,CAAC;IACtD,IAAI,kBAAkB,KAAK,2BAA2B,EAAE,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC;YACV,SAAS,EAAE,aAAsB;YACjC,QAAQ,EAAE,SAAkB;YAC5B,IAAI,EAAE,sCAAsC;YAC5C,OAAO,EACL,yCAAyC,kBAAkB,+CAA+C;gBAC1G,aAAa,2BAA2B,uDAAuD;YACjG,UAAU,EACR,kHAAkH;SACrH,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAmB,EACnB,KAAiB,EACjB,eAA6B;IAE7B,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAErD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzC,IAAI,KAAK,CAAC,WAAW,KAAK,aAAa;YAAE,SAAS;QAElD,8DAA8D;QAC9D,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,cAAc,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;QACjE,IAAI,eAAe,EAAE,GAAG,CAAC,QAAQ,CAAC;YAAE,SAAS;QAE7C,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC9D,IAAI,CAAC,aAAa;YAAE,SAAS;QAE7B,MAAM,WAAW,GAAG,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,WAAW,CAAC,CAAC;QAEzF,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,UAAU,CAAC;YAChB,KAAK,SAAS,CAAC;YACf,KAAK,aAAa;gBAChB,iDAAiD;gBACjD,MAAM;YAER,KAAK,SAAS;gBACZ,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;oBACzC,MAAM,CAAC,IAAI,CAAC;wBACV,SAAS,EAAE,aAAa;wBACxB,QAAQ,EAAE,OAAO;wBACjB,IAAI,EAAE,iBAAiB;wBACvB,OAAO,EAAE,WAAW,MAAM,CAAC,EAAE,uCAAuC,KAAK,CAAC,WAAW,8BAA8B,KAAK,CAAC,cAAc,GAAG;wBAC1I,OAAO,EAAE,MAAM,CAAC,EAAE;wBAClB,SAAS,EAAE,MAAM,CAAC,IAAI;wBACtB,UAAU,EAAE,+FAA+F;qBAC5G,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,IAAI,WAAW,EAAE,CAAC;oBAC1C,MAAM,CAAC,IAAI,CAAC;wBACV,SAAS,EAAE,aAAa;wBACxB,QAAQ,EAAE,OAAO;wBACjB,IAAI,EAAE,iBAAiB;wBACvB,OAAO,EAAE,WAAW,MAAM,CAAC,EAAE,yCAAyC,KAAK,CAAC,WAAW,8BAA8B,KAAK,CAAC,cAAc,GAAG;wBAC5I,OAAO,EAAE,MAAM,CAAC,EAAE;wBAClB,SAAS,EAAE,MAAM,CAAC,IAAI;wBACtB,UAAU,EAAE,4EAA4E;qBACzF,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,KAAK,CAAC,EAAE,KAAK,UAAU,IAAI,WAAW,EAAE,CAAC;oBAC3C,IAAI,KAAK,CAAC,gBAAgB,IAAI,WAAW,CAAC,YAAY,KAAK,KAAK,CAAC,gBAAgB,EAAE,CAAC;wBAClF,MAAM,CAAC,IAAI,CAAC;4BACV,SAAS,EAAE,aAAa;4BACxB,QAAQ,EAAE,OAAO;4BACjB,IAAI,EAAE,iBAAiB;4BACvB,OAAO,EAAE,WAAW,MAAM,CAAC,EAAE,0CAA0C,KAAK,CAAC,WAAW,2CAA2C,KAAK,CAAC,cAAc,GAAG;4BAC1J,OAAO,EAAE,MAAM,CAAC,EAAE;4BAClB,SAAS,EAAE,MAAM,CAAC,IAAI;4BACtB,UAAU,EAAE,yDAAyD;yBACtE,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBACD,MAAM;QACV,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAmB,EAAE,KAAiB;IAC9E,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAE3C,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,cAAc,GAAG,yCAAyC,CAAC;IAEjE,uDAAuD;IACvD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzC,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,IAAI,KAAK,CAAC,EAAE,KAAK,UAAU,EAAE,CAAC;YACpD,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,gBAAgB,EAAE,CAAC;QACzC,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa;YAAE,SAAS;QAE7B,IAAI,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC;gBACV,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,YAAY,SAAS,yDAAyD,MAAM,CAAC,EAAE,eAAe;gBAC/G,OAAO,EAAE,MAAM,CAAC,EAAE;gBAClB,SAAS,EAAE,MAAM,CAAC,IAAI;gBACtB,UAAU,EAAE,0EAA0E;aACvF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,kDAAkD;AAClD,SAAS,yBAAyB,CAAC,MAAmB;IACpD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAClE,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACrE,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAChF,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -27,10 +27,16 @@ export declare function ambiguousAliasCheck(index: VaultIndex): VerifyIssue[];
27
27
  /**
28
28
  * Check for orphan notes (notes with no incoming or outgoing links).
29
29
  * Meta files are excluded from this check.
30
+ *
31
+ * Bootstrap exemption: if the vault contains only a single typed note, it
32
+ * cannot possibly link anywhere (there is nothing to link to), so flagging
33
+ * it as an orphan is noise that would break the first-note experience
34
+ * under `--strict`. Skip the check in that case.
30
35
  */
31
36
  export declare function orphanNoteCheck(index: VaultIndex): VerifyIssue[];
32
37
  /**
33
38
  * Check for notes in 99-archive/ that don't have 'applied' status.
39
+ * Also check that note type matches its typed folder location (e.g., feature → 03-features/).
34
40
  */
35
41
  export declare function archivePlacementCheck(index: VaultIndex): VerifyIssue[];
36
42
  /**
@@ -48,6 +54,11 @@ export declare function emptyTypedNoteCheck(index: VaultIndex): VerifyIssue[];
48
54
  * This can cause ambiguous wikilink resolution.
49
55
  */
50
56
  export declare function titleIdCollisionCheck(index: VaultIndex): VerifyIssue[];
57
+ /**
58
+ * Scan note body for accidental secret leakage.
59
+ * Returns warnings (not errors) to encourage removal without blocking work.
60
+ */
61
+ export declare function secretLeakCheck(notes: IndexRecord[]): VerifyIssue[];
51
62
  /**
52
63
  * Resolve a wikilink target against the vault index.
53
64
  * Checks id, title, and aliases.
@@ -1 +1 @@
1
- {"version":3,"file":"vault-integrity.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/verify/vault-integrity.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAWjE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAW/D;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAWxE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAWpE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAiBhE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAiBtE;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAa5E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAWpE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAoBtE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAYpF"}
1
+ {"version":3,"file":"vault-integrity.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/verify/vault-integrity.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAWjE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAW/D;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAWxE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAWpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAqBhE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CA4CtE;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAa5E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAWpE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAoBtE;AAuBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAuBnE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAYpF"}