@leanspec/ui 0.2.9-dev.20251205030455 → 0.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
- package/.next/standalone/packages/ui/.next/BUILD_ID +1 -1
- package/.next/standalone/packages/ui/.next/app-path-routes-manifest.json +5 -0
- package/.next/standalone/packages/ui/.next/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/prerender-manifest.json +3 -3
- package/.next/standalone/packages/ui/.next/required-server-files.json +4 -4
- package/.next/standalone/packages/ui/.next/routes-manifest.json +40 -0
- package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_not-found.rsc +18 -20
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_full.segment.rsc +18 -20
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_index.segment.rsc +23 -26
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_tree.segment.rsc +5 -5
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/[id]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/discover/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/tags/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/tags/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/tags/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/tags/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/tags/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/tags/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/tags/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page.js +4 -3
- package/.next/standalone/packages/ui/.next/server/app/context/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/context/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js +4 -3
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.rsc +24 -25
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +24 -25
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_index.segment.rsc +20 -24
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/page.js +4 -3
- package/.next/standalone/packages/ui/.next/server/app/specs/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/stats/page.js +4 -3
- package/.next/standalone/packages/ui/.next/server/app/stats/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/stats/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app-paths-manifest.json +5 -0
- package/.next/standalone/packages/ui/.next/server/chunks/284a8_app_api_projects_[id]_specs_[spec]_dependency-graph_route_actions_f18476ed.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/730ea_ui__next-internal_server_app_api_projects_[id]_tags_route_actions_40899744.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/730ea_ui__next-internal_server_app_api_specs_[id]_metadata_route_actions_139bb09f.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0afcada7._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0e63a440._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0ec6f9b0._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0edb782a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0fbfea15._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__1706515f._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__1f037512._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__38780e00._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3a535244._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__41f43652._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__5081ac6f._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__526764b2._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__548e27d4._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__71d98924._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__74af400b._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8075fe29._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__9ce722b4._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__9cf3bf21._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__a2d7cbed._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b1ad8b69._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__c7a4906b._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__de15d2aa._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e16f7651._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e2fcb5c6._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e8d9903e._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f6936b89._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/f825c_server_app_api_projects_[id]_specs_[spec]_metadata_route_actions_35af9a8c.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui__next-internal_server_app_api_tags_route_actions_64625b2c.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__01bfc8ff._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__13f96ef4._.js → [root-of-the-server]__174e1ca1._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__38c56adc._.js → [root-of-the-server]__2d9202e8._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__338c65fe._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__366688dd._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__44b603f9._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__4ec37765._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__69a0d63a._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__7f55abaa._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__c158c9a9._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__c7735439._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__e2c760eb._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__84124d4b._.js → [root-of-the-server]__ead1539c._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__ec5b96a5._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_000dd317._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_adb9d7cb._.js → _22274047._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_59616aa6._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_5e1484f9._.js +7 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_8ab6f9ca._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_be836d6a._.js +5 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_ec637d7c._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_projects_page_tsx_6e166c8e._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_specs_specs-client_tsx_0bb8f8f8._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_spec-detail-wrapper_tsx_fd35401c._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/pages/404.html +2 -2
- package/.next/standalone/packages/ui/.next/server/pages/500.html +2 -2
- package/.next/standalone/packages/ui/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/0c7bbb59865774a1.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/0fe978002ba489fb.js +3 -0
- package/.next/standalone/packages/ui/.next/static/chunks/1169d4ac8f9df687.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/241b6b1c83610ebf.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/39931c5cecf4c4b7.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/6d7922838a3513a4.js +1 -0
- package/.next/{static/chunks/7a00633903e066b4.js → standalone/packages/ui/.next/static/chunks/781328ee279ffc41.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/937cb3894a606899.js +5 -0
- package/.next/standalone/packages/ui/.next/static/chunks/9cf644b700f37825.css +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/bc0f8f7f8dc0a352.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/dbce73f7087f2470.js +10 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f0a083ac29b4b6c2.js +1 -0
- package/.next/standalone/packages/ui/dist/BUILD_ID +1 -0
- package/.next/standalone/packages/ui/dist/public/f864aa7e7061c0600e35cf3d879b27cf.txt +1 -0
- package/.next/standalone/packages/ui/dist/public/favicon.ico +0 -0
- package/.next/standalone/packages/ui/dist/public/file.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/github-mark-white.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/github-mark.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/globe.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/icon.svg +7 -0
- package/.next/standalone/packages/ui/dist/public/logo-dark-bg.svg +17 -0
- package/.next/standalone/packages/ui/dist/public/logo-with-bg.svg +17 -0
- package/.next/standalone/packages/ui/dist/public/logo.svg +17 -0
- package/.next/standalone/packages/ui/dist/public/next.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/vercel.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/window.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/README.md +196 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +75 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +44 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/014-complete-custom-frontmatter/README.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/016-github-action/README.md +317 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/017-vscode-extension/README.md +261 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CLI-DESIGN.md +380 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION-EXAMPLES.md +230 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION.md +285 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/IMPLEMENTATION.md +358 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/README.md +303 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/TESTING.md +368 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/VALIDATION-RULES.md +327 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/024-pattern-aware-list-grouping/README.md +117 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/025-template-config-updates/README.md +73 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/026-init-pattern-selection/README.md +109 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/034-copilot-slash-commands/README.md +107 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/ARCHITECTURE.md +244 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/IMPLEMENTATION.md +429 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/README.md +302 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/036-pm-integrations/README.md +158 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-AI-ASSISTED.md +359 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-FULL-LIFECYCLE.md +86 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-REAL-FEATURE.md +437 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-SCRIPT.md +365 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-FINAL.md +203 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SESSION-2025-11-06.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SUMMARY.md +156 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/IMPLEMENTATION.md +183 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/MARKETING.md +229 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/NEXT-STEPS-DEMO.md +243 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/README.md +217 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/SESSION-2025-11-06.md +166 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/TESTING.md +126 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/ACTUAL-IMPLEMENTATION.md +108 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/DESIGN.md +382 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/IMPLEMENTATION.md +144 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/RATIONALE.md +146 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/README.md +208 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/TESTING.md +182 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/047-git-backfill-timestamps/README.md +314 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/FINDINGS.md +113 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/GUIDELINES.md +237 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/README.md +149 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-COMPARISONS.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-CONSTRAINTS.md +254 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/FIRST-PRINCIPLES.md +376 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-ROADMAP.md +240 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-TOOLS.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/README.md +374 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/051-docs-system-prompt-principles/README.md +339 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/052-branding-assets/README.md +128 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/053-spec-assets-philosophy/README.md +97 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/DESIGN-DECISIONS.md +93 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/OUTPUT-FORMAT-SPEC.md +146 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/README.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART1.md +397 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART2.md +342 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS.md +44 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CHANGES.md +150 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CONCERNS-ANALYSIS.md +351 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/DOCS-ALIGNMENT-ANALYSIS.md +238 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/README.md +280 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-DRAFT.md +372 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-REFINED.md +466 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/AUDIT-RESULTS.md +178 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/README.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/README.md +295 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/VALIDATION-RESULTS.md +487 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/ANALYSIS.md +241 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/DESIGN.md +279 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/IMPLEMENTATION.md +642 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/NOTES.md +125 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/README.md +286 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/ARCHITECTURE.md +392 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/COMMANDS.md +1002 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/CONTEXT-ENGINEERING.md +411 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/IMPLEMENTATION.md +812 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/README.md +504 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/TESTING.md +724 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/060-core-concepts-coherence/README.md +125 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/061-ai-assisted-spec-writing/README.md +299 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/IMPLEMENTATION-PLAN.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PAGE-SPECIFICATIONS.md +265 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PROBLEM-ANALYSIS.md +36 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/README.md +243 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/SOLUTION-DESIGN.md +82 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/DESIGN.md +338 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/EXAMPLES.md +354 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/IMPLEMENTATION.md +189 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/README.md +119 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/064-docs-site-zh-translation/README.md +170 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/065-v03-planning/README.md +158 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/066-context-economy-thresholds-refinement/README.md +842 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/067-monorepo-core-extraction/README.md +358 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/DESIGN.md +444 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/README.md +357 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/069-token-counting-utils/README.md +551 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/070-mcp-token-counting-tool/README.md +372 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/071-simplified-token-validation/README.md +489 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/072-ai-agent-first-use-workflow/README.md +285 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/073-template-engine-agents-md/README.md +323 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/074-content-at-creation/README.md +136 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/075-intelligent-search-engine/README.md +399 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/076-programmatic-spec-relationships/README.md +301 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/077-archiving-strategy/README.md +235 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/078-sub-spec-template-system/README.md +303 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/079-cli-alphabetical-organization/README.md +196 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/080-mcp-server-modular-architecture/README.md +388 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/081-web-app-ux-redesign/README.md +824 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DATABASE.md +111 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DEPLOYMENT.md +69 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/FILESYSTEM.md +77 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/IMPLEMENTATION.md +184 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/README.md +496 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/083-web-navigation-performance/README.md +490 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/084-sub-spec-visibility-in-tools/README.md +389 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/085-cli-relationship-commands/README.md +920 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/086-template-component-deduplication/README.md +146 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/087-cli-ui-command/README.md +607 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +104 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +124 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +129 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +244 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +148 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +54 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/001-typescript-cli-migration/README.md +37 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/002-template-system-redesign/README.md +60 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/003-init-system-redesign/README.md +113 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/README.md +69 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/SUMMARY.md +112 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/005-structured-frontmatter/README.md +229 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/006-pm-visualization-tools/README.md +406 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/007-system-prompt-updates/README.md +168 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/008-commander-migration/README.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/009-cli-ux-enhancement/README.md +212 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/010-commands-refactor/README.md +249 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/README.md +60 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/TEST_SUMMARY.md +139 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/012-sub-spec-files/README.md +722 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/013-custom-spec-templates/README.md +413 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/015-npm-publishing/README.md +255 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/019-readme-improvement/README.md +252 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/020-documentation-website/README.md +253 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/021-docusaurus-vercel-migration/README.md +612 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/022-flexible-folder-structure/README.md +794 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/DESIGN.md +834 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/README.md +255 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/027-cli-ui-ux-optimization/README.md +454 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/028-cli-ui-modernization/README.md +172 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/IMPLEMENTATION.md +152 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/README.md +95 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/030-created-date-format-bug/README.md +87 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/031-gantt-ux-improvements/README.md +230 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/032-console-log-chalk-security/README.md +89 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/033-mcp-server/README.md +89 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/037-docs-overhaul/README.md +166 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-flat-structure-migration/README.md +276 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-mcp-frontmatter-bug-fix/README.md +122 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-simplify-viewer-commands/README.md +198 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-template-variable-sync/README.md +192 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/040-spec-viewer-commands/README.md +171 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/042-mcp-error-handling/README.md +200 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/044-spec-relationships-clarity/README.md +317 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/DESIGN.md +276 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/IMPLEMENTATION.md +241 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/README.md +139 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/TESTING.md +328 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/050-tool-redesign-first-principles/README.md +400 -0
- package/.next/standalone/packages/ui/dist/static/chunks/0c19c69aa7625475.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/116800b03245a1e5.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/15843a3d7584e314.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/19e80edf527aef5c.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/465954d5af3284a9.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/5abeeb89f1412a80.js +3 -0
- package/.next/standalone/packages/ui/dist/static/chunks/5c2072ad938de8ed.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/6a05a93ec8fa7b83.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/778e42188e450b39.css +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/a02c1f50ff00204f.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/a45464b9776dd88e.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/a6dad97d9634a72d.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/b0ea0ac61604f843.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/c06e85b449720194.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/c557ac675be79771.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/cad005a57ffbb2d3.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/cdf6fe33bc65efbc.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/d12ed5dbe44caed7.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/d1ebe5c1a344f4ca.js +5 -0
- package/.next/standalone/packages/ui/dist/static/chunks/d42cf1682bc46652.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/dde5d8bddd7fbfcf.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/ebd89051637b9a47.js +4 -0
- package/.next/standalone/packages/ui/dist/static/chunks/ec82875d18b29f47.js +2 -0
- package/.next/standalone/packages/ui/dist/static/chunks/f0b701df9769bcc5.js +19 -0
- package/.next/standalone/packages/ui/dist/static/chunks/turbopack-1c09a99f4c9e28d3.js +3 -0
- package/.next/standalone/packages/ui/package.json +1 -1
- package/.next/standalone/packages/ui/server.js +1 -1
- package/.next/standalone/packages/ui/src/app/api/dependencies/route.ts +4 -67
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/dependencies/route.ts +3 -52
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/[spec]/dependency-graph/route.ts +129 -0
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/[spec]/metadata/route.ts +170 -0
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/[spec]/status/route.ts +9 -2
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/tags/route.ts +25 -0
- package/.next/standalone/packages/ui/src/app/api/specs/[id]/metadata/route.ts +184 -0
- package/.next/standalone/packages/ui/src/app/api/tags/route.ts +16 -0
- package/.next/standalone/packages/ui/src/app/context/page.tsx +22 -0
- package/.next/standalone/packages/ui/src/app/dashboard-client.tsx +14 -4
- package/.next/standalone/packages/ui/src/app/dependencies/dependencies-client.tsx +2 -2
- package/.next/standalone/packages/ui/src/app/dependencies/page.tsx +25 -13
- package/.next/standalone/packages/ui/src/app/projects/[projectId]/dependencies/page.tsx +1 -14
- package/.next/standalone/packages/ui/src/app/projects/page.tsx +234 -113
- package/.next/standalone/packages/ui/src/app/specs/[id]/page.tsx +24 -1
- package/.next/standalone/packages/ui/src/app/specs/page.tsx +22 -0
- package/.next/standalone/packages/ui/src/app/specs/specs-client.tsx +1 -1
- package/.next/standalone/packages/ui/src/app/stats/page.tsx +22 -0
- package/.next/standalone/packages/ui/src/components/editable-spec-metadata.tsx +152 -0
- package/.next/standalone/packages/ui/src/components/main-sidebar.tsx +6 -0
- package/.next/standalone/packages/ui/src/components/priority-editor.tsx +153 -0
- package/.next/standalone/packages/ui/src/components/project-switcher.tsx +53 -8
- package/.next/standalone/packages/ui/src/components/spec-detail-client.tsx +23 -20
- package/.next/standalone/packages/ui/src/components/status-editor.tsx +153 -0
- package/.next/standalone/packages/ui/src/components/tags-editor.tsx +238 -0
- package/.next/standalone/packages/ui/src/components/ui/command.tsx +1 -1
- package/.next/standalone/packages/ui/src/lib/db/service-queries.ts +151 -15
- package/.next/standalone/packages/ui/src/lib/projects/registry.ts +1 -1
- package/.next/standalone/packages/ui/src/lib/specs/sources/multi-project-source.ts +21 -5
- package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
- package/.next/static/chunks/0c7bbb59865774a1.js +1 -0
- package/.next/static/chunks/0fe978002ba489fb.js +3 -0
- package/.next/static/chunks/1169d4ac8f9df687.js +1 -0
- package/.next/static/chunks/241b6b1c83610ebf.js +1 -0
- package/.next/static/chunks/39931c5cecf4c4b7.js +1 -0
- package/.next/static/chunks/6d7922838a3513a4.js +1 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/7a00633903e066b4.js → static/chunks/781328ee279ffc41.js} +1 -1
- package/.next/static/chunks/937cb3894a606899.js +5 -0
- package/.next/static/chunks/9cf644b700f37825.css +1 -0
- package/.next/static/chunks/bc0f8f7f8dc0a352.js +1 -0
- package/.next/static/chunks/dbce73f7087f2470.js +10 -0
- package/.next/static/chunks/f0a083ac29b4b6c2.js +1 -0
- package/.next/static/s9uUE9DnvJD2xIz-iBGMe/_buildManifest.js +11 -0
- package/.next/static/s9uUE9DnvJD2xIz-iBGMe/_clientMiddlewareManifest.json +1 -0
- package/.next/static/s9uUE9DnvJD2xIz-iBGMe/_ssgManifest.js +1 -0
- package/package.json +2 -2
- package/.next/standalone/node_modules/.pnpm/source-map@0.8.0-beta.0/node_modules/source-map/package.json +0 -95
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__18aca702._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__27348781._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3a7f0840._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3e17db24._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__6e06fd2a._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__97b99cc0._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__9d9758e1._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b212b9bd._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b9c03a57._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e99e7672._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f38a5f20._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__fa8cf2bc._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__53f4506c._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__921689ca._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a9d7fd42._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b27b2469._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b3633d6e._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_03aa8d19._.js +0 -7
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_28fe1532._.js +0 -5
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_90eed09a._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_f9129aae._.js +0 -3
- package/.next/standalone/packages/ui/.next/static/chunks/04de9ed512b8098b.js +0 -10
- package/.next/standalone/packages/ui/.next/static/chunks/3d12a8c3152b526d.js +0 -3
- package/.next/standalone/packages/ui/.next/static/chunks/7931c6cb379305b1.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/7f9a218732be8099.js +0 -5
- package/.next/standalone/packages/ui/.next/static/chunks/8a6e8f3394240dbb.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/8d8c106c6848d15b.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/a640b005f2e15d98.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/a7075a240adea8e8.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/ddb2935cfe5310c7.css +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/f924ae32752e1583.js +0 -1
- package/.next/static/chunks/04de9ed512b8098b.js +0 -10
- package/.next/static/chunks/3d12a8c3152b526d.js +0 -3
- package/.next/static/chunks/7931c6cb379305b1.js +0 -1
- package/.next/static/chunks/7f9a218732be8099.js +0 -5
- package/.next/static/chunks/8a6e8f3394240dbb.js +0 -1
- package/.next/static/chunks/8d8c106c6848d15b.js +0 -1
- package/.next/static/chunks/a640b005f2e15d98.js +0 -1
- package/.next/static/chunks/a7075a240adea8e8.js +0 -1
- package/.next/static/chunks/ddb2935cfe5310c7.css +0 -1
- package/.next/static/chunks/f924ae32752e1583.js +0 -1
- /package/.next/standalone/packages/ui/.next/static/{T8X9UGfigRL0qWZiBHNjy → s9uUE9DnvJD2xIz-iBGMe}/_buildManifest.js +0 -0
- /package/.next/standalone/packages/ui/.next/static/{T8X9UGfigRL0qWZiBHNjy → s9uUE9DnvJD2xIz-iBGMe}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{T8X9UGfigRL0qWZiBHNjy → s9uUE9DnvJD2xIz-iBGMe}/_ssgManifest.js +0 -0
- /package/.next/{static/T8X9UGfigRL0qWZiBHNjy → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_buildManifest.js +0 -0
- /package/.next/{static/T8X9UGfigRL0qWZiBHNjy → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_clientMiddlewareManifest.json +0 -0
- /package/.next/{static/T8X9UGfigRL0qWZiBHNjy → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_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
|
package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/VALIDATION-RULES.md
ADDED
|
@@ -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
|