@leanspec/ui 0.2.7-dev.20251126100750 → 0.2.7

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 (364) hide show
  1. package/.next/standalone/node_modules/.pnpm/@img+sharp-darwin-arm64@0.34.5/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
  2. package/.next/standalone/node_modules/.pnpm/{@img+sharp-linux-x64@0.34.5/node_modules/@img/sharp-linux-x64 → @img+sharp-darwin-arm64@0.34.5/node_modules/@img/sharp-darwin-arm64}/package.json +7 -13
  3. package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/README.md +2 -2
  4. package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/lib/glib-2.0/include/glibconfig.h +8 -9
  5. package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib} +0 -0
  6. package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/package.json +5 -11
  7. package/.next/standalone/node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  8. package/.next/standalone/packages/ui/.next/BUILD_ID +1 -1
  9. package/.next/standalone/packages/ui/.next/build-manifest.json +2 -2
  10. package/.next/standalone/packages/ui/.next/prerender-manifest.json +3 -3
  11. package/.next/standalone/packages/ui/.next/required-server-files.json +4 -4
  12. package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js.nft.json +1 -1
  13. package/.next/standalone/packages/ui/.next/server/app/_global-error.html +2 -2
  14. package/.next/standalone/packages/ui/.next/server/app/_global-error.rsc +1 -1
  15. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  16. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  17. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  18. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  19. package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js.nft.json +1 -1
  20. package/.next/standalone/packages/ui/.next/server/app/_not-found.html +2 -2
  21. package/.next/standalone/packages/ui/.next/server/app/_not-found.rsc +2 -2
  22. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  23. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  24. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  25. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  26. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  27. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/[id]/route.js.nft.json +1 -1
  28. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/discover/route.js.nft.json +1 -1
  29. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route.js.nft.json +1 -1
  30. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/route.js.nft.json +1 -1
  31. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  32. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js.nft.json +1 -1
  33. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js.nft.json +1 -1
  34. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js.nft.json +1 -1
  35. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js.nft.json +1 -1
  36. package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js.nft.json +1 -1
  37. package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js.nft.json +1 -1
  38. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js.nft.json +1 -1
  39. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js.nft.json +1 -1
  40. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route.js.nft.json +1 -1
  41. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js.nft.json +1 -1
  42. package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js.nft.json +1 -1
  43. package/.next/standalone/packages/ui/.next/server/app/page.js.nft.json +1 -1
  44. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js.nft.json +1 -1
  45. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js.nft.json +1 -1
  46. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js.nft.json +1 -1
  47. package/.next/standalone/packages/ui/.next/server/app/projects/page.js.nft.json +1 -1
  48. package/.next/standalone/packages/ui/.next/server/app/projects.html +2 -2
  49. package/.next/standalone/packages/ui/.next/server/app/projects.rsc +2 -2
  50. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +2 -2
  51. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_index.segment.rsc +1 -1
  52. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_tree.segment.rsc +1 -1
  53. package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +1 -1
  54. package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  55. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js.nft.json +1 -1
  56. package/.next/standalone/packages/ui/.next/server/app/specs/page.js.nft.json +1 -1
  57. package/.next/standalone/packages/ui/.next/server/app/stats/page.js.nft.json +1 -1
  58. package/.next/standalone/packages/ui/.next/server/pages/404.html +2 -2
  59. package/.next/standalone/packages/ui/.next/server/pages/500.html +2 -2
  60. package/.next/standalone/packages/ui/.next/server/server-reference-manifest.js +1 -1
  61. package/.next/standalone/packages/ui/.next/server/server-reference-manifest.json +1 -1
  62. package/.next/standalone/packages/ui/dist/standalone/packages/web/README.md +196 -0
  63. package/.next/standalone/packages/ui/dist/standalone/packages/web/components.json +20 -0
  64. package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/0000_reflective_thena.sql +59 -0
  65. package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/0001_fresh_carmella_unuscione.sql +1 -0
  66. package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/0000_snapshot.json +427 -0
  67. package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/0001_snapshot.json +436 -0
  68. package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/_journal.json +20 -0
  69. package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle.config.ts +10 -0
  70. package/.next/standalone/packages/ui/dist/standalone/packages/web/eslint.config.mjs +18 -0
  71. package/.next/standalone/packages/ui/dist/standalone/packages/web/next.config.ts +7 -0
  72. package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +83 -0
  73. package/.next/standalone/packages/ui/dist/standalone/packages/web/postcss.config.mjs +8 -0
  74. package/.next/standalone/packages/ui/dist/standalone/packages/web/public/f864aa7e7061c0600e35cf3d879b27cf.txt +1 -0
  75. package/.next/standalone/packages/ui/dist/standalone/packages/web/public/favicon.ico +0 -0
  76. package/.next/standalone/packages/ui/dist/standalone/packages/web/public/file.svg +1 -0
  77. package/.next/standalone/packages/ui/dist/standalone/packages/web/public/github-mark-white.svg +1 -0
  78. package/.next/standalone/packages/ui/dist/standalone/packages/web/public/github-mark.svg +1 -0
  79. package/.next/standalone/packages/ui/dist/standalone/packages/web/public/globe.svg +1 -0
  80. package/.next/standalone/packages/ui/dist/standalone/packages/web/public/icon.svg +7 -0
  81. package/.next/standalone/packages/ui/dist/standalone/packages/web/public/logo-dark-bg.svg +17 -0
  82. package/.next/standalone/packages/ui/dist/standalone/packages/web/public/logo-with-bg.svg +17 -0
  83. package/.next/standalone/packages/ui/dist/standalone/packages/web/public/logo.svg +17 -0
  84. package/.next/standalone/packages/ui/dist/standalone/packages/web/public/next.svg +1 -0
  85. package/.next/standalone/packages/ui/dist/standalone/packages/web/public/vercel.svg +1 -0
  86. package/.next/standalone/packages/ui/dist/standalone/packages/web/public/window.svg +1 -0
  87. package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +44 -0
  88. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/projects/[id]/specs/route.ts +23 -0
  89. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/projects/route.ts +19 -0
  90. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/revalidate/route.ts +63 -0
  91. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/dependency-graph/route.test.ts +51 -0
  92. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/dependency-graph/route.ts +171 -0
  93. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/route.ts +36 -0
  94. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/subspecs/[file]/route.ts +46 -0
  95. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/stats/route.ts +19 -0
  96. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/board-client.tsx +162 -0
  97. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/loading.tsx +43 -0
  98. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/page.tsx +18 -0
  99. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/dashboard-client.tsx +364 -0
  100. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/error.tsx +43 -0
  101. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/globals.css +531 -0
  102. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/home-client.tsx +277 -0
  103. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/layout.tsx +70 -0
  104. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/loading.tsx +87 -0
  105. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/not-found.tsx +27 -0
  106. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/page.tsx +18 -0
  107. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/[id]/loading.tsx +5 -0
  108. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/[id]/page.tsx +43 -0
  109. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/page.tsx +18 -0
  110. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/specs-client.tsx +425 -0
  111. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/stats/page.tsx +18 -0
  112. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/stats/stats-client.tsx +283 -0
  113. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/back-to-top.tsx +46 -0
  114. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/empty-state.tsx +52 -0
  115. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/main-sidebar.tsx +175 -0
  116. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/markdown-link.test.ts +96 -0
  117. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/markdown-link.tsx +95 -0
  118. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/navigation.tsx +210 -0
  119. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/priority-badge.tsx +53 -0
  120. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/quick-search.tsx +180 -0
  121. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/skeletons.tsx +119 -0
  122. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-dependency-graph.tsx +369 -0
  123. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-client.tsx +372 -0
  124. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-loading-shell.tsx +42 -0
  125. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-wrapper.tsx +70 -0
  126. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-metadata.tsx +136 -0
  127. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-sidebar.tsx +127 -0
  128. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-timeline.tsx +186 -0
  129. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/specs-nav-sidebar.tsx +561 -0
  130. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/status-badge.tsx +53 -0
  131. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/sub-spec-tabs.tsx +143 -0
  132. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/table-of-contents.tsx +130 -0
  133. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/theme-provider.tsx +11 -0
  134. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/theme-toggle.tsx +37 -0
  135. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/avatar.tsx +50 -0
  136. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/badge.tsx +36 -0
  137. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/breadcrumb.tsx +110 -0
  138. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/button.tsx +57 -0
  139. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/card.tsx +76 -0
  140. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/command.tsx +153 -0
  141. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/dialog.tsx +122 -0
  142. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/input.tsx +24 -0
  143. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/select.tsx +159 -0
  144. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/separator.tsx +31 -0
  145. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/skeleton.tsx +15 -0
  146. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/tabs.tsx +55 -0
  147. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/toast.tsx +30 -0
  148. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/tooltip.tsx +32 -0
  149. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/date-utils.ts +76 -0
  150. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/index.ts +42 -0
  151. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/migrate.ts +18 -0
  152. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/queries.ts +114 -0
  153. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/schema.ts +123 -0
  154. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/seed.ts +156 -0
  155. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/service-queries.ts +216 -0
  156. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/dependency-graph.ts +105 -0
  157. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/service.ts +120 -0
  158. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/sources/database-source.ts +94 -0
  159. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/sources/filesystem-source.ts +249 -0
  160. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/types.ts +55 -0
  161. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/stores/specs-sidebar-store.ts +152 -0
  162. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/sub-specs.ts +171 -0
  163. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/utils.ts +17 -0
  164. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/types/specs.ts +18 -0
  165. package/.next/standalone/packages/ui/dist/standalone/packages/web/tailwind.config.ts +58 -0
  166. package/.next/standalone/packages/ui/dist/standalone/packages/web/tsconfig.json +34 -0
  167. package/.next/standalone/packages/ui/dist/standalone/packages/web/tsconfig.tsbuildinfo +1 -0
  168. package/.next/standalone/packages/ui/dist/standalone/packages/web/vitest.config.ts +14 -0
  169. package/.next/standalone/packages/ui/dist/standalone/specs/014-complete-custom-frontmatter/README.md +175 -0
  170. package/.next/standalone/packages/ui/dist/standalone/specs/016-github-action/README.md +317 -0
  171. package/.next/standalone/packages/ui/dist/standalone/specs/017-vscode-extension/README.md +261 -0
  172. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CLI-DESIGN.md +380 -0
  173. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION-EXAMPLES.md +230 -0
  174. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION.md +285 -0
  175. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/IMPLEMENTATION.md +358 -0
  176. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/README.md +303 -0
  177. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/TESTING.md +368 -0
  178. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/VALIDATION-RULES.md +327 -0
  179. package/.next/standalone/packages/ui/dist/standalone/specs/024-pattern-aware-list-grouping/README.md +117 -0
  180. package/.next/standalone/packages/ui/dist/standalone/specs/025-template-config-updates/README.md +73 -0
  181. package/.next/standalone/packages/ui/dist/standalone/specs/026-init-pattern-selection/README.md +109 -0
  182. package/.next/standalone/packages/ui/dist/standalone/specs/034-copilot-slash-commands/README.md +107 -0
  183. package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/ARCHITECTURE.md +244 -0
  184. package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/IMPLEMENTATION.md +429 -0
  185. package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/README.md +306 -0
  186. package/.next/standalone/packages/ui/dist/standalone/specs/036-pm-integrations/README.md +158 -0
  187. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-AI-ASSISTED.md +359 -0
  188. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-FULL-LIFECYCLE.md +86 -0
  189. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-REAL-FEATURE.md +437 -0
  190. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-SCRIPT.md +365 -0
  191. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-FINAL.md +203 -0
  192. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SESSION-2025-11-06.md +174 -0
  193. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SUMMARY.md +156 -0
  194. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/IMPLEMENTATION.md +183 -0
  195. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/MARKETING.md +229 -0
  196. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/NEXT-STEPS-DEMO.md +243 -0
  197. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/README.md +217 -0
  198. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/SESSION-2025-11-06.md +166 -0
  199. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/TESTING.md +126 -0
  200. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/ACTUAL-IMPLEMENTATION.md +108 -0
  201. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/DESIGN.md +382 -0
  202. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/IMPLEMENTATION.md +144 -0
  203. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/RATIONALE.md +146 -0
  204. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/README.md +208 -0
  205. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/TESTING.md +182 -0
  206. package/.next/standalone/packages/ui/dist/standalone/specs/047-git-backfill-timestamps/README.md +314 -0
  207. package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/FINDINGS.md +113 -0
  208. package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/GUIDELINES.md +237 -0
  209. package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/README.md +149 -0
  210. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-COMPARISONS.md +175 -0
  211. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-CONSTRAINTS.md +254 -0
  212. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/FIRST-PRINCIPLES.md +376 -0
  213. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-ROADMAP.md +240 -0
  214. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-TOOLS.md +175 -0
  215. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/README.md +374 -0
  216. package/.next/standalone/packages/ui/dist/standalone/specs/051-docs-system-prompt-principles/README.md +339 -0
  217. package/.next/standalone/packages/ui/dist/standalone/specs/052-branding-assets/README.md +128 -0
  218. package/.next/standalone/packages/ui/dist/standalone/specs/053-spec-assets-philosophy/README.md +97 -0
  219. package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/DESIGN-DECISIONS.md +93 -0
  220. package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/OUTPUT-FORMAT-SPEC.md +146 -0
  221. package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/README.md +175 -0
  222. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART1.md +397 -0
  223. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART2.md +342 -0
  224. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS.md +44 -0
  225. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CHANGES.md +150 -0
  226. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CONCERNS-ANALYSIS.md +351 -0
  227. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/DOCS-ALIGNMENT-ANALYSIS.md +238 -0
  228. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/README.md +280 -0
  229. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-DRAFT.md +372 -0
  230. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-REFINED.md +466 -0
  231. package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/AUDIT-RESULTS.md +178 -0
  232. package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/README.md +174 -0
  233. package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/README.md +295 -0
  234. package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/VALIDATION-RESULTS.md +487 -0
  235. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/ANALYSIS.md +241 -0
  236. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/DESIGN.md +279 -0
  237. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/IMPLEMENTATION.md +642 -0
  238. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/NOTES.md +125 -0
  239. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/README.md +286 -0
  240. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/ARCHITECTURE.md +392 -0
  241. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/COMMANDS.md +1002 -0
  242. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/CONTEXT-ENGINEERING.md +411 -0
  243. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/IMPLEMENTATION.md +812 -0
  244. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/README.md +504 -0
  245. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/TESTING.md +724 -0
  246. package/.next/standalone/packages/ui/dist/standalone/specs/060-core-concepts-coherence/README.md +125 -0
  247. package/.next/standalone/packages/ui/dist/standalone/specs/061-ai-assisted-spec-writing/README.md +299 -0
  248. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/IMPLEMENTATION-PLAN.md +174 -0
  249. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PAGE-SPECIFICATIONS.md +265 -0
  250. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PROBLEM-ANALYSIS.md +36 -0
  251. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/README.md +243 -0
  252. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/SOLUTION-DESIGN.md +82 -0
  253. package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/DESIGN.md +338 -0
  254. package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/EXAMPLES.md +354 -0
  255. package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/IMPLEMENTATION.md +189 -0
  256. package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/README.md +119 -0
  257. package/.next/standalone/packages/ui/dist/standalone/specs/064-docs-site-zh-translation/README.md +170 -0
  258. package/.next/standalone/packages/ui/dist/standalone/specs/065-v03-planning/README.md +158 -0
  259. package/.next/standalone/packages/ui/dist/standalone/specs/066-context-economy-thresholds-refinement/README.md +842 -0
  260. package/.next/standalone/packages/ui/dist/standalone/specs/067-monorepo-core-extraction/README.md +358 -0
  261. package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/DESIGN.md +444 -0
  262. package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/README.md +357 -0
  263. package/.next/standalone/packages/ui/dist/standalone/specs/069-token-counting-utils/README.md +551 -0
  264. package/.next/standalone/packages/ui/dist/standalone/specs/070-mcp-token-counting-tool/README.md +372 -0
  265. package/.next/standalone/packages/ui/dist/standalone/specs/071-simplified-token-validation/README.md +489 -0
  266. package/.next/standalone/packages/ui/dist/standalone/specs/072-ai-agent-first-use-workflow/README.md +287 -0
  267. package/.next/standalone/packages/ui/dist/standalone/specs/073-template-engine-agents-md/README.md +323 -0
  268. package/.next/standalone/packages/ui/dist/standalone/specs/074-content-at-creation/README.md +136 -0
  269. package/.next/standalone/packages/ui/dist/standalone/specs/075-intelligent-search-engine/README.md +399 -0
  270. package/.next/standalone/packages/ui/dist/standalone/specs/076-programmatic-spec-relationships/README.md +301 -0
  271. package/.next/standalone/packages/ui/dist/standalone/specs/077-archiving-strategy/README.md +235 -0
  272. package/.next/standalone/packages/ui/dist/standalone/specs/078-sub-spec-template-system/README.md +303 -0
  273. package/.next/standalone/packages/ui/dist/standalone/specs/079-cli-alphabetical-organization/README.md +196 -0
  274. package/.next/standalone/packages/ui/dist/standalone/specs/080-mcp-server-modular-architecture/README.md +388 -0
  275. package/.next/standalone/packages/ui/dist/standalone/specs/081-web-app-ux-redesign/README.md +825 -0
  276. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DATABASE.md +111 -0
  277. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DEPLOYMENT.md +69 -0
  278. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/FILESYSTEM.md +77 -0
  279. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/IMPLEMENTATION.md +184 -0
  280. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/README.md +501 -0
  281. package/.next/standalone/packages/ui/dist/standalone/specs/083-web-navigation-performance/README.md +490 -0
  282. package/.next/standalone/packages/ui/dist/standalone/specs/084-sub-spec-visibility-in-tools/README.md +389 -0
  283. package/.next/standalone/packages/ui/dist/standalone/specs/085-cli-relationship-commands/README.md +920 -0
  284. package/.next/standalone/packages/ui/dist/standalone/specs/086-template-component-deduplication/README.md +146 -0
  285. package/.next/standalone/packages/ui/dist/standalone/specs/087-cli-ui-command/README.md +421 -0
  286. package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +106 -0
  287. package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +126 -0
  288. package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +131 -0
  289. package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +254 -0
  290. package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +152 -0
  291. package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +65 -0
  292. package/.next/standalone/packages/ui/dist/standalone/specs/094-ai-chatbot-web-integration/README.md +332 -0
  293. package/.next/standalone/packages/ui/dist/standalone/specs/095-pr-migration-verification/README.md +339 -0
  294. package/.next/standalone/packages/ui/dist/standalone/specs/096-docs-beginner-first-reorg/README.md +399 -0
  295. package/.next/standalone/packages/ui/dist/standalone/specs/097-dag-visualization-library/README.md +525 -0
  296. package/.next/standalone/packages/ui/dist/standalone/specs/098-github-multi-project-integration/README.md +387 -0
  297. package/.next/standalone/packages/ui/dist/standalone/specs/099-enhanced-dependency-commands-cli-mcp/README.md +613 -0
  298. package/.next/standalone/packages/ui/dist/standalone/specs/100-release-process-typecheck-failure/README.md +266 -0
  299. package/.next/standalone/packages/ui/dist/standalone/specs/101-sidebar-scroll-position-drift/README.md +100 -0
  300. package/.next/standalone/packages/ui/dist/standalone/specs/102-mcp-wrapper-package/README.md +172 -0
  301. package/.next/standalone/packages/ui/dist/standalone/specs/archived/001-typescript-cli-migration/README.md +37 -0
  302. package/.next/standalone/packages/ui/dist/standalone/specs/archived/002-template-system-redesign/README.md +60 -0
  303. package/.next/standalone/packages/ui/dist/standalone/specs/archived/003-init-system-redesign/README.md +113 -0
  304. package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/README.md +69 -0
  305. package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/SUMMARY.md +112 -0
  306. package/.next/standalone/packages/ui/dist/standalone/specs/archived/005-structured-frontmatter/README.md +229 -0
  307. package/.next/standalone/packages/ui/dist/standalone/specs/archived/006-pm-visualization-tools/README.md +406 -0
  308. package/.next/standalone/packages/ui/dist/standalone/specs/archived/007-system-prompt-updates/README.md +168 -0
  309. package/.next/standalone/packages/ui/dist/standalone/specs/archived/008-commander-migration/README.md +174 -0
  310. package/.next/standalone/packages/ui/dist/standalone/specs/archived/009-cli-ux-enhancement/README.md +212 -0
  311. package/.next/standalone/packages/ui/dist/standalone/specs/archived/010-commands-refactor/README.md +249 -0
  312. package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/README.md +60 -0
  313. package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/TEST_SUMMARY.md +139 -0
  314. package/.next/standalone/packages/ui/dist/standalone/specs/archived/012-sub-spec-files/README.md +722 -0
  315. package/.next/standalone/packages/ui/dist/standalone/specs/archived/013-custom-spec-templates/README.md +413 -0
  316. package/.next/standalone/packages/ui/dist/standalone/specs/archived/015-npm-publishing/README.md +255 -0
  317. package/.next/standalone/packages/ui/dist/standalone/specs/archived/019-readme-improvement/README.md +252 -0
  318. package/.next/standalone/packages/ui/dist/standalone/specs/archived/020-documentation-website/README.md +253 -0
  319. package/.next/standalone/packages/ui/dist/standalone/specs/archived/021-docusaurus-vercel-migration/README.md +612 -0
  320. package/.next/standalone/packages/ui/dist/standalone/specs/archived/022-flexible-folder-structure/README.md +794 -0
  321. package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/DESIGN.md +834 -0
  322. package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/README.md +255 -0
  323. package/.next/standalone/packages/ui/dist/standalone/specs/archived/027-cli-ui-ux-optimization/README.md +454 -0
  324. package/.next/standalone/packages/ui/dist/standalone/specs/archived/028-cli-ui-modernization/README.md +172 -0
  325. package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/IMPLEMENTATION.md +152 -0
  326. package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/README.md +95 -0
  327. package/.next/standalone/packages/ui/dist/standalone/specs/archived/030-created-date-format-bug/README.md +87 -0
  328. package/.next/standalone/packages/ui/dist/standalone/specs/archived/031-gantt-ux-improvements/README.md +230 -0
  329. package/.next/standalone/packages/ui/dist/standalone/specs/archived/032-console-log-chalk-security/README.md +89 -0
  330. package/.next/standalone/packages/ui/dist/standalone/specs/archived/033-mcp-server/README.md +89 -0
  331. package/.next/standalone/packages/ui/dist/standalone/specs/archived/037-docs-overhaul/README.md +166 -0
  332. package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-flat-structure-migration/README.md +276 -0
  333. package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-mcp-frontmatter-bug-fix/README.md +122 -0
  334. package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-simplify-viewer-commands/README.md +198 -0
  335. package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-template-variable-sync/README.md +192 -0
  336. package/.next/standalone/packages/ui/dist/standalone/specs/archived/040-spec-viewer-commands/README.md +171 -0
  337. package/.next/standalone/packages/ui/dist/standalone/specs/archived/042-mcp-error-handling/README.md +200 -0
  338. package/.next/standalone/packages/ui/dist/standalone/specs/archived/044-spec-relationships-clarity/README.md +317 -0
  339. package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/DESIGN.md +276 -0
  340. package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/IMPLEMENTATION.md +241 -0
  341. package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/README.md +139 -0
  342. package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/TESTING.md +328 -0
  343. package/.next/standalone/packages/ui/dist/standalone/specs/archived/050-tool-redesign-first-principles/README.md +400 -0
  344. package/.next/standalone/packages/ui/package.json +1 -1
  345. package/.next/standalone/packages/ui/server.js +1 -1
  346. package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
  347. package/package.json +2 -2
  348. package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md +0 -46
  349. package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h +0 -221
  350. package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +0 -1
  351. package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
  352. package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +0 -42
  353. package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +0 -30
  354. package/.next/standalone/node_modules/.pnpm/@img+sharp-linux-x64@0.34.5/node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node +0 -0
  355. package/.next/standalone/node_modules/.pnpm/@img+sharp-linuxmusl-x64@0.34.5/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
  356. package/.next/standalone/node_modules/.pnpm/@img+sharp-linuxmusl-x64@0.34.5/node_modules/@img/sharp-linuxmusl-x64/package.json +0 -46
  357. /package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/lib/index.js +0 -0
  358. /package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/versions.json +0 -0
  359. /package/.next/standalone/packages/ui/.next/static/{_6lLNPdRExIaMIs9fFqLK → 6nq7WNafPv5Bf_7mWgRQ-}/_buildManifest.js +0 -0
  360. /package/.next/standalone/packages/ui/.next/static/{_6lLNPdRExIaMIs9fFqLK → 6nq7WNafPv5Bf_7mWgRQ-}/_clientMiddlewareManifest.json +0 -0
  361. /package/.next/standalone/packages/ui/.next/static/{_6lLNPdRExIaMIs9fFqLK → 6nq7WNafPv5Bf_7mWgRQ-}/_ssgManifest.js +0 -0
  362. /package/.next/static/{_6lLNPdRExIaMIs9fFqLK → 6nq7WNafPv5Bf_7mWgRQ-}/_buildManifest.js +0 -0
  363. /package/.next/static/{_6lLNPdRExIaMIs9fFqLK → 6nq7WNafPv5Bf_7mWgRQ-}/_clientMiddlewareManifest.json +0 -0
  364. /package/.next/static/{_6lLNPdRExIaMIs9fFqLK → 6nq7WNafPv5Bf_7mWgRQ-}/_ssgManifest.js +0 -0
@@ -0,0 +1,368 @@
1
+ # Testing Strategy
2
+
3
+ Comprehensive test plan for the `lean-spec validate` command.
4
+
5
+ **Note:** This spec originally proposed expanding `lean-spec check`, but the implementation created `lean-spec validate` as a separate command.
6
+
7
+ ## Test Categories
8
+
9
+ ### 1. Frontmatter Validation Tests ✅
10
+
11
+ **Status: Phase 1b Complete - 27 tests passing**
12
+
13
+ **Missing Required Fields:**
14
+ - [x] Detects missing `status` field ✅
15
+ - [x] Detects missing `created` field ✅
16
+ - [x] Passes when all required fields present ✅
17
+ - [x] Detects when no frontmatter exists ✅
18
+ - [ ] Detects missing custom required fields (if configured) - future
19
+
20
+ **Invalid Status Values:**
21
+ - [x] Detects invalid status "wip" ✅
22
+ - [x] Detects invalid status values (any non-standard) ✅
23
+ - [x] Passes valid status "planned" ✅
24
+ - [x] Passes valid status "in-progress" ✅
25
+ - [x] Passes valid status "complete" ✅
26
+ - [x] Passes valid status "archived" ✅
27
+ - [x] Coerces non-string status to string and validates ✅
28
+
29
+ **Invalid Priority Values:**
30
+ - [x] Detects invalid priority "urgent" ✅
31
+ - [x] Detects invalid priority values (any non-standard) ✅
32
+ - [x] Passes valid priority "low" ✅
33
+ - [x] Passes valid priority "medium" ✅
34
+ - [x] Passes valid priority "high" ✅
35
+ - [x] Passes valid priority "critical" ✅
36
+ - [x] Passes when priority is optional and missing ✅
37
+ - [x] Coerces non-string priority to string and validates ✅
38
+
39
+ **Date Format Validation:**
40
+ - [x] Detects invalid date formats (11/05/2025, etc.) ✅
41
+ - [x] Detects invalid date values (2025-99-99) ✅
42
+ - [x] Passes valid date "2025-11-04" ✅
43
+ - [x] Passes valid ISO timestamps (with timezone, milliseconds) ✅
44
+ - [x] Warns for invalid optional date fields (e.g., updated) ✅
45
+ - [x] Fails for non-string/non-date created field ✅
46
+
47
+ **Tags Validation:**
48
+ - [x] Detects tags as string instead of array ✅
49
+ - [x] Accepts tags with various types (YAML parsing) ✅
50
+ - [x] Passes valid tags array ✅
51
+ - [x] Passes empty tags array ✅
52
+
53
+ **YAML Parsing:**
54
+ - [x] Detects malformed YAML frontmatter ✅
55
+
56
+ **Custom Configuration:**
57
+ - [x] Respects custom valid statuses (configurable) ✅
58
+ - [x] Validator metadata (name, description) ✅
59
+
60
+ ### 2. Structure Validation Tests
61
+
62
+ **File Requirements:**
63
+ - [ ] Detects missing README.md
64
+ - [ ] Detects invalid YAML frontmatter syntax
65
+ - [ ] Detects missing title (H1 heading)
66
+ - [ ] Passes spec with valid structure
67
+
68
+ **Section Requirements:**
69
+ - [ ] Detects missing required section "Overview"
70
+ - [ ] Detects missing required section "Design"
71
+ - [ ] Detects missing required section "Plan"
72
+ - [ ] Passes when all required sections present
73
+ - [ ] Template-specific section validation
74
+
75
+ **Empty Sections:**
76
+ - [ ] Detects empty required sections (when configured)
77
+ - [ ] Passes sections with only comments (if allowed)
78
+ - [ ] Passes sections with content
79
+
80
+ **Duplicate Sections:**
81
+ - [ ] Detects duplicate "## Plan" sections
82
+ - [ ] Detects duplicate "## Test" sections
83
+ - [ ] Allows same section name at different levels
84
+ - [ ] Passes unique sections
85
+
86
+ ### 3. Corruption Detection Tests
87
+
88
+ **Duplicate Sections:**
89
+ - [ ] Detects exact duplicate sections
90
+ - [ ] Detects sections with same name at same level
91
+ - [ ] Reports line numbers of duplicates
92
+ - [ ] Passes specs with unique sections
93
+
94
+ **Code Block Validation:**
95
+ - [ ] Detects unclosed code block (missing closing ```)
96
+ - [ ] Detects extra closing ``` without opening
97
+ - [ ] Detects mismatched code fence lengths
98
+ - [ ] Passes properly closed code blocks
99
+
100
+ **JSON/YAML Validation:**
101
+ - [ ] Detects incomplete JSON in code blocks
102
+ - [ ] Detects invalid JSON syntax
103
+ - [ ] Detects incomplete YAML in frontmatter
104
+ - [ ] Detects invalid YAML syntax
105
+ - [ ] Passes valid JSON blocks
106
+ - [ ] Passes valid YAML blocks
107
+
108
+ **Content Fragments:**
109
+ - [ ] Detects duplicated content blocks
110
+ - [ ] Detects partial duplicates (merge artifacts)
111
+ - [ ] Detects remnants from failed edits
112
+ - [ ] Passes unique content
113
+
114
+ **Markdown Structure:**
115
+ - [ ] Detects malformed lists
116
+ - [ ] Detects broken tables
117
+ - [ ] Detects unclosed formatting (bold, italic)
118
+ - [ ] Passes valid markdown
119
+
120
+ ### 4. Content Validation Tests
121
+
122
+ **Minimum Length:**
123
+ - [ ] Detects specs below minimum length
124
+ - [ ] Passes specs above minimum length
125
+ - [ ] Respects configured minimum
126
+
127
+ **TODO/FIXME Detection:**
128
+ - [ ] Detects TODO in complete specs
129
+ - [ ] Detects FIXME in complete specs
130
+ - [ ] Allows TODO in non-complete specs
131
+ - [ ] Passes complete specs without TODO
132
+
133
+ **Link Validation:**
134
+ - [ ] Detects broken internal links
135
+ - [ ] Detects links to non-existent specs
136
+ - [ ] Passes valid internal links
137
+ - [ ] Passes external links (not validated)
138
+
139
+ **Placeholder Text:**
140
+ - [ ] Detects common placeholder patterns
141
+ - [ ] Passes real content
142
+
143
+ ### 5. Staleness Tests
144
+
145
+ **In-Progress Specs:**
146
+ - [ ] Warns on in-progress spec > 30 days old
147
+ - [ ] No warning for recent in-progress specs
148
+ - [ ] Respects configured threshold
149
+
150
+ **No Updates:**
151
+ - [ ] Warns on spec with no updates > 90 days
152
+ - [ ] No warning for recently updated specs
153
+ - [ ] Uses git history when available
154
+ - [ ] Falls back to file mtime
155
+
156
+ **Planned Specs:**
157
+ - [ ] Warns on planned spec > 60 days old
158
+ - [ ] No warning for recent planned specs
159
+
160
+ **Archived Specs:**
161
+ - [ ] No staleness warnings for archived specs
162
+
163
+ ### 6. Auto-Fix Tests
164
+
165
+ **Frontmatter Fixes:**
166
+ - [ ] Adds missing `status` field with default
167
+ - [ ] Adds missing `created` field with current date
168
+ - [ ] Formats dates to ISO 8601
169
+ - [ ] Sorts frontmatter fields alphabetically
170
+ - [ ] Updates visual badges from frontmatter
171
+
172
+ **Structure Fixes:**
173
+ - [ ] Adds missing required sections as comments
174
+ - [ ] Removes duplicate sections (keeps first)
175
+
176
+ **Corruption Fixes:**
177
+ - [ ] Closes unclosed code blocks
178
+ - [ ] Removes exact duplicate sections
179
+
180
+ **Non-Fixable Issues:**
181
+ - [ ] Reports invalid status (requires manual fix)
182
+ - [ ] Reports empty sections (requires content)
183
+ - [ ] Reports broken links (requires investigation)
184
+
185
+ **Fix Reporting:**
186
+ - [ ] Reports what was fixed
187
+ - [ ] Reports what couldn't be fixed
188
+ - [ ] Doesn't break valid specs
189
+ - [ ] Maintains spec readability
190
+
191
+ ### 7. Integration Tests
192
+
193
+ **Multiple Specs:**
194
+ - [ ] Validates all specs in project
195
+ - [ ] Reports aggregate results
196
+ - [ ] Handles large number of specs (100+)
197
+
198
+ **Filtering:**
199
+ - [ ] Filters by status work correctly
200
+ - [ ] Filters by tag work correctly
201
+ - [ ] Filters by priority work correctly
202
+ - [ ] Path pattern filtering works
203
+
204
+ **Output Formats:**
205
+ - [ ] Console output is readable
206
+ - [ ] JSON output is valid
207
+ - [ ] Quiet mode produces minimal output
208
+ - [ ] Verbose mode includes details
209
+
210
+ **Exit Codes:**
211
+ - [ ] Returns 0 when all checks pass
212
+ - [ ] Returns 1 when errors found
213
+ - [ ] Returns 2 when warnings in strict mode
214
+ - [ ] Returns 3 on command error
215
+
216
+ **Configuration:**
217
+ - [ ] Respects custom config
218
+ - [ ] Falls back to defaults
219
+ - [ ] Command-line flags override config
220
+ - [ ] Template-specific rules work
221
+
222
+ **Backwards Compatibility:**
223
+ - [ ] `lean-spec check` (sequence conflicts) behavior unchanged
224
+ - [ ] `lean-spec validate` doesn't interfere with check command
225
+ - [ ] Exit codes follow standard pattern
226
+ - [ ] Output format is consistent
227
+
228
+ ### 8. Performance Tests
229
+
230
+ **Speed:**
231
+ - [ ] Validates 10 specs in < 100ms
232
+ - [ ] Validates 100 specs in < 1s
233
+ - [ ] Parallel validation improves performance
234
+
235
+ **Memory:**
236
+ - [ ] Memory usage stays reasonable
237
+ - [ ] No memory leaks with many specs
238
+
239
+ **Caching:**
240
+ - [ ] Cached results speed up repeated checks
241
+ - [ ] Cache invalidation works correctly
242
+
243
+ ### 9. Edge Cases
244
+
245
+ **Empty Specs:**
246
+ - [ ] Handles specs with only frontmatter
247
+ - [ ] Handles completely empty files
248
+
249
+ **Large Specs:**
250
+ - [ ] Handles specs > 1000 lines
251
+ - [ ] Handles specs with > 100 sections
252
+ - [ ] Performance doesn't degrade
253
+
254
+ **Special Characters:**
255
+ - [ ] Handles Unicode in frontmatter
256
+ - [ ] Handles special characters in content
257
+ - [ ] Handles emoji in titles
258
+
259
+ **Symlinks:**
260
+ - [ ] Follows symlinks correctly
261
+ - [ ] Detects circular symlinks
262
+
263
+ **Sub-Spec Files:**
264
+ - [ ] Validates specs with sub-files
265
+ - [ ] Checks README.md in multi-file specs
266
+ - [ ] Doesn't validate sub-files as specs
267
+
268
+ ## Test Organization
269
+
270
+ ```
271
+ src/
272
+ commands/
273
+ check.test.ts # Command-level tests
274
+ validators/
275
+ frontmatter.test.ts # Frontmatter validator tests
276
+ structure.test.ts # Structure validator tests
277
+ corruption.test.ts # Corruption detector tests
278
+ content.test.ts # Content validator tests
279
+ staleness.test.ts # Staleness detector tests
280
+ integration/
281
+ check-integration.test.ts # End-to-end tests
282
+ ```
283
+
284
+ ## Test Data
285
+
286
+ ```
287
+ test-fixtures/
288
+ valid/
289
+ 001-valid-spec/
290
+ README.md # Completely valid spec
291
+ invalid-frontmatter/
292
+ 002-missing-status/
293
+ README.md # Missing status field
294
+ 003-invalid-status/
295
+ README.md # Invalid status value
296
+ invalid-structure/
297
+ 004-missing-sections/
298
+ README.md # Missing required sections
299
+ 005-duplicate-sections/
300
+ README.md # Duplicate section headers
301
+ corrupted/
302
+ 006-unclosed-code-block/
303
+ README.md # Unclosed code block
304
+ 007-invalid-json/
305
+ README.md # Malformed JSON in code block
306
+ 008-duplicate-content/
307
+ README.md # Duplicated content
308
+ stale/
309
+ 009-old-in-progress/
310
+ README.md # Old in-progress spec
311
+ ```
312
+
313
+ ## Continuous Testing
314
+
315
+ **Pre-Commit:**
316
+ ```bash
317
+ npm test # Run all tests
318
+ ```
319
+
320
+ **CI/CD:**
321
+ ```yaml
322
+ - name: Run tests
323
+ run: npm test
324
+
325
+ - name: Check coverage
326
+ run: npm run test:coverage
327
+ ```
328
+
329
+ **Test Coverage Goals:**
330
+ - Overall: >80%
331
+ - Validators: >90%
332
+ - Critical paths: 100%
333
+
334
+ ## Manual Testing Checklist
335
+
336
+ **Before Release:**
337
+ - [ ] Test on real project (this repo)
338
+ - [ ] Test backwards compatibility
339
+ - [ ] Test performance with 100+ specs
340
+ - [ ] Test all output formats
341
+ - [ ] Test all command-line flags
342
+ - [ ] Test configuration options
343
+ - [ ] Test auto-fix on corrupted specs
344
+ - [ ] Test CI/CD integration
345
+ - [ ] Test pre-commit hook
346
+
347
+ **Dogfooding:**
348
+ - [ ] Use comprehensive checking on lean-spec itself
349
+ - [ ] Fix any issues found
350
+ - [ ] Verify no false positives
351
+ - [ ] Collect user feedback
352
+
353
+ ## Test Automation
354
+
355
+ **Snapshot Testing:**
356
+ - Output format snapshots
357
+ - JSON structure snapshots
358
+ - Error message snapshots
359
+
360
+ **Property-Based Testing:**
361
+ - Generate random specs
362
+ - Verify validators don't crash
363
+ - Verify auto-fix doesn't corrupt
364
+
365
+ **Regression Testing:**
366
+ - Save examples of past bugs
367
+ - Ensure fixes remain effective
368
+ - Prevent regressions
@@ -0,0 +1,327 @@
1
+ # Validation Rules
2
+
3
+ This document details what gets validated by `lean-spec validate` and the specific rules for each validation type.
4
+
5
+ **Note:** This spec originally proposed expanding `lean-spec check`, but the implementation created `lean-spec validate` as a separate command.
6
+
7
+ ## Implementation Status
8
+
9
+ - ✅ **Line Count Validation** - Phase 1a Complete
10
+ - ✅ **Frontmatter Validation** - Phase 1b Complete
11
+ - ⏳ **Structure Validation** - Phase 2 (Planned)
12
+ - ⏳ **Corruption Detection** - Phase 3 (High Priority)
13
+ - ⏳ **Sub-Spec Validation** - Phase 3.5 (High Priority)
14
+ - ⏳ **Content Validation** - Phase 4 (Optional)
15
+ - ⏳ **Staleness Detection** - Phase 5 (Optional)
16
+
17
+ ---
18
+
19
+ ## Line Count Validation ✅
20
+
21
+ **Status:** Implemented in Phase 1a
22
+
23
+ **Thresholds:**
24
+ - **Warning**: 300-400 lines (approaching limit)
25
+ - **Error**: >400 lines (exceeds limit)
26
+ - **Configurable**: `--max-lines` flag to customize limit
27
+
28
+ **Rationale:**
29
+ Enforces **Context Economy** principle - specs must fit in working memory (human and AI). Files >400 lines become difficult to read, edit, and maintain.
30
+
31
+ **Suggestions:**
32
+ - Warns: "Consider simplification or splitting"
33
+ - Errors: "Consider splitting into sub-specs using spec 012 pattern"
34
+
35
+ ---
36
+
37
+ ## Frontmatter Validation ✅
38
+
39
+ **Status:** Implemented in Phase 1b (27 tests passing)
40
+
41
+ **Required Fields:**
42
+ - `status` - Must be present
43
+ - `created` - Must be present
44
+
45
+ **Status Values:**
46
+ - Valid: `planned`, `in-progress`, `complete`, `archived`
47
+ - Invalid: Any other value (e.g., `wip`, `draft`, `done`)
48
+
49
+ **Priority Values:**
50
+ - Valid: `low`, `medium`, `high`, `critical`
51
+ - Optional field, but if present must be valid
52
+
53
+ **Date Formats:**
54
+ - ISO 8601 format (YYYY-MM-DD or full ISO timestamp)
55
+ - `created` field must be valid date
56
+ - Other date fields (if present) must be valid
57
+
58
+ **Tags:**
59
+ - Must be array of strings
60
+ - Example: `["quality", "validation", "cli"]`
61
+
62
+ **Custom Fields:**
63
+ - If config schema defined, custom fields must match
64
+ - Type validation based on config
65
+
66
+ ## Structure Validation
67
+
68
+ **File Requirements:**
69
+ - `README.md` must exist in spec directory
70
+ - Frontmatter must be valid YAML
71
+ - Must have title (H1 heading: `# Title`)
72
+
73
+ **Section Requirements:**
74
+ - Required sections based on template
75
+ - Typically: Overview, Design, Plan, Test
76
+ - No empty required sections (content beyond just comment)
77
+ - No duplicate section headers at same level
78
+
79
+ ## Sub-Spec Validation
80
+
81
+ **File Naming Conventions (from spec 012):**
82
+ - Sub-spec files should follow recommended naming patterns
83
+ - Standard names: `DESIGN.md`, `IMPLEMENTATION.md`, `TESTING.md`, `API.md`, `ARCHITECTURE.md`, `MIGRATION.md`, `CONFIGURATION.md`, etc.
84
+ - Custom names allowed but should be descriptive (e.g., `PHASE1.md`, `RESEARCH.md`)
85
+ - Assets should be in `assets/` subdirectory
86
+
87
+ **README.md Integration:**
88
+ - Main `README.md` should reference all sub-spec files
89
+ - Links can be in any section (Overview, Design, etc.)
90
+ - Missing links to sub-specs generate warnings
91
+ - Example: `[Testing Strategy](TESTING.md)` or `See [DESIGN.md](DESIGN.md)`
92
+
93
+ **Line Count Per Sub-Spec (Context Economy):**
94
+ - Each sub-spec file should be < 400 lines (error threshold)
95
+ - Warning at 300 lines (same as main spec)
96
+ - Rationale: Context Economy applies to each file independently
97
+ - Sub-specs exist to split complexity - they shouldn't become bloated
98
+
99
+ **Orphan Detection:**
100
+ - Detect sub-spec markdown files not referenced from README.md
101
+ - Warn about orphaned sub-specs (may be deprecated)
102
+ - Exception: README.md itself is never orphaned
103
+ - Assets (.png, .svg, etc.) are checked separately
104
+
105
+ **Cross-Document Validation:**
106
+ - Validate internal links between sub-specs work correctly
107
+ - Check relative paths are correct
108
+ - Detect circular references (if spec A links to B, B to C, C to A)
109
+
110
+ **Sub-Spec Structure:**
111
+ - Each sub-spec should have clear heading structure
112
+ - Should include backlink to main spec (recommended)
113
+ - Example: `> Part of spec: [018-spec-validation](README.md)`
114
+
115
+ ## Content Validation
116
+
117
+ **Minimum Requirements:**
118
+ - Spec must have minimum content length (avoid stub specs)
119
+ - Default: 100 characters (configurable)
120
+
121
+ **Quality Checks:**
122
+ - No TODO/FIXME in complete specs
123
+ - Internal links should be valid (no broken references)
124
+ - No placeholder text in complete specs
125
+
126
+ ## Corruption Detection
127
+
128
+ **Duplicate Content:**
129
+ - No duplicate section headers at same level
130
+ - Detect sections appearing multiple times
131
+ - Example: "## Plan" appearing twice in same spec
132
+
133
+ **Code Block Validation:**
134
+ - All code blocks properly closed (unclosed blocks break syntax highlighting)
135
+ - Matching number of opening ``` and closing ```
136
+ - This is the #1 indicator of corruption humans notice visually
137
+
138
+ **Formatting Validation:**
139
+ - Unclosed bold formatting (**) in actual content
140
+ - Unclosed italic formatting (*) in actual content
141
+ - Excludes code blocks, inline code, and list markers from checks
142
+ - Only validates markdown content outside code fences
143
+
144
+ **Duplicate Content Detection:**
145
+ - Detects duplicated content blocks (5+ consecutive lines, 100+ chars)
146
+ - Excludes code blocks to prevent false positives from code examples
147
+ - Tuned to reduce noise: was 3 lines/50 chars (too sensitive)
148
+ - Helps find merge artifacts and failed edits
149
+ - Warnings only (not errors) as some duplication is intentional
150
+
151
+ **Intentionally Excluded:**
152
+ - ❌ JSON/YAML validation in code blocks (examples often show invalid syntax)
153
+ - ❌ Table and list structure validation (too noisy, not actual corruption)
154
+
155
+ **Sub-Spec Duplication:**
156
+ - Detect if same content appears in multiple sub-specs
157
+ - Warn about significant content overlap between files
158
+ - Helps identify when content should be consolidated
159
+
160
+ ### Corruption Detection Philosophy
161
+
162
+ **Focus on visually apparent corruption:**
163
+ - What breaks rendering (unclosed code blocks, unclosed formatting)
164
+ - What humans actually notice when reading specs
165
+ - Not semantic issues or style preferences
166
+
167
+ **Why we exclude certain checks:**
168
+ - JSON/YAML in code blocks: Examples intentionally show invalid syntax
169
+ - Duplicate content detection: Many false positives from boilerplate/templates
170
+ - Table/list validation: Too noisy, rarely indicates actual corruption
171
+
172
+ **Tuning for signal-to-noise:**
173
+ - Originally: 3 lines, 50 chars → 13 duplicate warnings across all specs
174
+ - Improved: 5 lines, 100 chars, exclude code blocks → More targeted detection
175
+ - Goal: Only flag genuine corruption, not common patterns
176
+
177
+ ## Staleness Detection
178
+
179
+ **In-Progress Specs:**
180
+ - Warn if status is `in-progress` for > 30 days
181
+ - Suggests spec might be stalled
182
+
183
+ **No Updates:**
184
+ - Warn if no updates in > 90 days
185
+ - Based on git history or file mtime
186
+ - Suggests spec might be abandoned
187
+
188
+ **Planned Specs:**
189
+ - Warn if status is `planned` for > 60 days
190
+ - Suggests planning without execution
191
+
192
+ **Archived Specs:**
193
+ - No staleness warnings for archived specs
194
+ - Archived specs are expected to be static
195
+
196
+ ## Auto-Fix Capabilities
197
+
198
+ ### Fixable Issues
199
+
200
+ **Frontmatter:**
201
+ - Add missing required fields (use defaults)
202
+ - Format dates to ISO 8601 standard
203
+ - Sort frontmatter fields alphabetically
204
+ - Update visual badges to match frontmatter
205
+
206
+ **Structure:**
207
+ - Add missing required sections (as comments)
208
+ - Remove duplicate sections (keep first occurrence)
209
+ - Close unclosed code blocks (where unambiguous)
210
+
211
+ **Sub-Specs:**
212
+ - Add missing links to sub-specs in README.md
213
+ - Generate suggested backlinks for sub-specs
214
+ - Create "Documentation Structure" section if missing (when sub-specs exist)
215
+
216
+ ### Non-Fixable Issues
217
+
218
+ These require manual intervention:
219
+ - Invalid status/priority values (requires decision)
220
+ - Empty required sections (requires content)
221
+ - Broken links (requires investigation)
222
+ - Stale specs (requires status update or work)
223
+ - Complex corruption (requires human judgment)
224
+
225
+ ## Error Severity Levels
226
+
227
+ **Error (blocks passing):**
228
+ - Missing required fields
229
+ - Invalid status/priority values
230
+ - Duplicate sections
231
+ - Corrupted code blocks
232
+ - Invalid JSON/YAML syntax
233
+ - Malformed markdown structure
234
+
235
+ **Warning (passes with warning):**
236
+ - Stale specs
237
+ - Suggested improvements
238
+ - Minor formatting issues
239
+ - Empty optional sections
240
+
241
+ **Info (informational):**
242
+ - Best practice suggestions
243
+ - Style recommendations
244
+ - Optimization hints
245
+
246
+ ## Validation Rules Configuration
247
+
248
+ Rules can be customized in `.lean-spec/config.json`:
249
+
250
+ ```json
251
+ {
252
+ "check": {
253
+ "rules": {
254
+ "frontmatter": {
255
+ "required": ["status", "created"],
256
+ "allowedStatus": ["planned", "in-progress", "complete", "archived"],
257
+ "allowedPriority": ["low", "medium", "high", "critical"]
258
+ },
259
+ "structure": {
260
+ "requireReadme": true,
261
+ "requiredSections": ["Overview", "Design", "Plan"],
262
+ "forbidEmptySections": true
263
+ },
264
+ "content": {
265
+ "minLength": 100,
266
+ "forbidTodoInComplete": true,
267
+ "validateLinks": true
268
+ },
269
+ "corruption": {
270
+ "detectDuplicateSections": true,
271
+ "validateCodeBlocks": true,
272
+ "validateJsonYaml": true,
273
+ "detectFragments": true
274
+ },
275
+ "staleness": {
276
+ "inProgressMaxDays": 30,
277
+ "noUpdateMaxDays": 90,
278
+ "plannedMaxDays": 60
279
+ },
280
+ "subSpecs": {
281
+ "validateNaming": true,
282
+ "requireReferences": true,
283
+ "detectOrphans": true,
284
+ "maxLinesPerFile": 400,
285
+ "warnLinesPerFile": 300,
286
+ "validateCrossReferences": true,
287
+ "standardNames": [
288
+ "DESIGN.md",
289
+ "IMPLEMENTATION.md",
290
+ "TESTING.md",
291
+ "API.md",
292
+ "ARCHITECTURE.md",
293
+ "MIGRATION.md",
294
+ "CONFIGURATION.md"
295
+ ]
296
+ }
297
+ }
298
+ }
299
+ }
300
+ ```
301
+
302
+ ## Why These Rules?
303
+
304
+ **Frontmatter:**
305
+ - Ensures specs are trackable and categorizable
306
+ - Required fields enable automation and reporting
307
+ - Valid values prevent typos and inconsistencies
308
+
309
+ **Structure:**
310
+ - Maintains consistency across team
311
+ - Makes specs easier to navigate
312
+ - Enables automated processing
313
+
314
+ **Content:**
315
+ - Prevents stub specs from cluttering project
316
+ - Ensures specs are complete before marking done
317
+ - Maintains quality standards
318
+
319
+ **Corruption:**
320
+ - Catches errors from failed AI edits
321
+ - Prevents shipping broken specs
322
+ - Early detection saves debugging time
323
+
324
+ **Staleness:**
325
+ - Identifies abandoned work
326
+ - Prompts status updates
327
+ - Keeps project health visible