@leanspec/ui 0.2.8 → 0.2.9-dev.20251205030455
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/node_modules/.pnpm/source-map@0.8.0-beta.0/node_modules/source-map/package.json +95 -0
- package/.next/standalone/packages/ui/.next/BUILD_ID +1 -1
- package/.next/standalone/packages/ui/.next/app-path-routes-manifest.json +8 -0
- package/.next/standalone/packages/ui/.next/build-manifest.json +4 -4
- 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 +60 -0
- package/.next/standalone/packages/ui/.next/server/app/_global-error/page/build-manifest.json +2 -2
- 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/build-manifest.json +2 -2
- 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 -18
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_full.segment.rsc +18 -18
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
- 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/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route_client-reference-manifest.js +2 -0
- 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/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route.js +1 -3
- 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]/route.js +1 -2
- 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 -2
- 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]/validate/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route.js +6 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js +1 -3
- 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 +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]/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/context/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/context/page.js +2 -2
- 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/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page/build-manifest.json +18 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page/next-font-manifest.json +6 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js +19 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/page.js +4 -3
- 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/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page/build-manifest.json +18 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page/next-font-manifest.json +6 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js +21 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page/build-manifest.json +18 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page/next-font-manifest.json +6 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js +21 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js +7 -7
- 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/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js +8 -7
- 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/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js +7 -6
- 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/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page/build-manifest.json +18 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page/next-font-manifest.json +6 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js +21 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/page.js +7 -6
- 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 -23
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +24 -23
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_index.segment.rsc +9 -9
- 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/build-manifest.json +2 -2
- 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/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/specs/page.js +2 -2
- 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/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/stats/page.js +2 -2
- 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 +8 -0
- package/.next/standalone/packages/ui/.next/server/chunks/6681a__next-internal_server_app_api_projects_[id]_dependencies_route_actions_7ac49581.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/730ea_ui__next-internal_server_app_api_projects_[id]_context_route_actions_96adca70.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/730ea_ui__next-internal_server_app_api_projects_[id]_validate_route_actions_b60372c9.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[externals]_better-sqlite3_a1cc22cb._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__1706515f._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__18aca702._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__27348781._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3a7f0840._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3e17db24._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__5f1e0195._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__6e06fd2a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__71d98924._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__97b99cc0._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__9d9758e1._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b1ad8b69._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b212b9bd._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b9c03a57._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e99e7672._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f38a5f20._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/{[root-of-the-server]__126dea7b._.js → [root-of-the-server]__fa8cf2bc._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui__next-internal_server_app_api_dependencies_route_actions_cf6b14c3.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui_src_lib_specs_sources_database-source_ts_b8c1af87._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui_src_lib_specs_sources_database-source_ts_baa0160d._.js +72 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/730ea_ui__next-internal_server_app_projects_[projectId]_context_page_actions_e4940a48.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/730ea_ui__next-internal_server_app_projects_[projectId]_stats_page_actions_82a85203.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__0f0dade1._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__13f96ef4._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__212c8580._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__2b66bcca._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__312221a2._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__366688dd._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__fd80e4dd._.js → [root-of-the-server]__38c56adc._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__44b603f9._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__46b71f61._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__53f4506c._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__665ae766._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__84124d4b._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__921689ca._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a34731d8._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a9d7fd42._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b0d6e2ad._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b27b2469._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b3633d6e._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__dcee62dd._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_000dd317._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_03aa8d19._.js +7 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_39562b2a._.js → _170362f4._.js} +3 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_1a642e67._.js +4 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_28fe1532._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_85effc18._.js → _2bc76f88._.js} +3 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_fdd7780b._.js → _3f059230._.js} +3 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_58b98a8f._.js +4 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_8ab6f9ca._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_90eed09a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_22274047._.js → _adb9d7cb._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_b303aeea._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_bae6d2b8._.js → _b421ba4a._.js} +3 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_d840ffc6._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_da18b655._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_ec637d7c._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_f05260d6._.js +4 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_f38e75b7._.js +4 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_f9129aae._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/f825c_server_app_projects_[projectId]_dependencies_page_actions_ba2321b8.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_0056f1f2._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_015f83ca._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_30b0b05a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_478d57e5._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_4e3e790c._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_80605a06._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_f5b29533._.js → node_modules__pnpm_8680dc29._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_e175b92a._.js → node_modules__pnpm_94a0b1f5._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_b4ff5c78._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_bb80de48._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_7791e3b8._.js → node_modules__pnpm_d3262b3d._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_e8075f9b._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_f919ef4a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui__next-internal_server_app_dependencies_page_actions_57387d47.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_context_context-client_tsx_4ba99a62._.js +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_dependencies_dependencies-client_tsx_0e82443a._.js +4 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_projects_layout_tsx_86c2ce0f._.js +3 -0
- 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 +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_specs-nav-sidebar_tsx_8237ed13._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/middleware-build-manifest.js +2 -2
- 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/04de9ed512b8098b.js +10 -0
- package/.next/standalone/packages/ui/.next/static/chunks/1e0689744f87e958.js +2 -0
- package/.next/standalone/packages/ui/.next/static/chunks/3d12a8c3152b526d.js +3 -0
- package/.next/standalone/packages/ui/.next/static/chunks/4610aea3ca2e69eb.js +2 -0
- package/.next/standalone/packages/ui/.next/static/chunks/46275d9d67603bf5.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/7931c6cb379305b1.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/7a00633903e066b4.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/{942cf63b4032c808.js → 7df6308e6cfcf902.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/7f9a218732be8099.js +5 -0
- package/.next/standalone/packages/ui/.next/static/chunks/840c6743a491a398.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/8a6e8f3394240dbb.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/8d8c106c6848d15b.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/a5e25b9fa6b88eee.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/a640b005f2e15d98.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/a7075a240adea8e8.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/b53250480fde6816.js +1 -0
- package/.next/{static/chunks/794f3931f1ca12d2.js → standalone/packages/ui/.next/static/chunks/bbd498aa5689c057.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/c26909a25ca9fc9b.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/c658e22a605e0ed1.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/c92660d8d0c4763d.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/{e3bc96a996e2a314.js → d26f4109b44eb240.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/{3276ca6fd9005903.js → d52a048b511c32bd.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/ddb2935cfe5310c7.css +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/e399b4afc7936907.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f924ae32752e1583.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/ff11efb770d5a0bc.js +1 -0
- package/.next/{static/chunks/turbopack-5fa55215af0efb15.js → standalone/packages/ui/.next/static/chunks/turbopack-261c5dcdd873f310.js} +1 -1
- package/.next/standalone/packages/ui/package.json +3 -1
- package/.next/standalone/packages/ui/server.js +1 -1
- package/.next/standalone/packages/ui/src/app/api/dependencies/route.ts +81 -0
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/context/route.ts +39 -0
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/dependencies/route.ts +69 -0
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/route.ts +25 -9
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/[spec]/route.ts +14 -14
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/route.ts +9 -8
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/validate/route.ts +49 -0
- package/.next/standalone/packages/ui/src/app/api/projects/route.ts +18 -5
- package/.next/standalone/packages/ui/src/app/api/specs/[id]/dependency-graph/route.test.ts +0 -2
- package/.next/standalone/packages/ui/src/app/api/specs/[id]/dependency-graph/route.ts +0 -15
- package/.next/standalone/packages/ui/src/app/context/context-client.tsx +23 -1
- package/.next/standalone/packages/ui/src/app/dashboard-client.tsx +29 -58
- package/.next/standalone/packages/ui/src/app/dependencies/constants.ts +25 -0
- package/.next/standalone/packages/ui/src/app/dependencies/dependencies-client.tsx +700 -0
- package/.next/standalone/packages/ui/src/app/dependencies/index.ts +19 -0
- package/.next/standalone/packages/ui/src/app/dependencies/page.tsx +38 -0
- package/.next/standalone/packages/ui/src/app/dependencies/spec-node.tsx +80 -0
- package/.next/standalone/packages/ui/src/app/dependencies/spec-sidebar.tsx +171 -0
- package/.next/standalone/packages/ui/src/app/dependencies/types.ts +37 -0
- package/.next/standalone/packages/ui/src/app/dependencies/utils.ts +194 -0
- package/.next/standalone/packages/ui/src/app/page.tsx +24 -0
- package/.next/standalone/packages/ui/src/app/projects/[projectId]/context/page.tsx +41 -0
- package/.next/standalone/packages/ui/src/app/projects/[projectId]/dependencies/page.tsx +43 -0
- package/.next/standalone/packages/ui/src/app/projects/[projectId]/page.tsx +18 -2
- package/.next/standalone/packages/ui/src/app/projects/[projectId]/stats/page.tsx +24 -0
- package/.next/standalone/packages/ui/src/app/projects/layout.tsx +7 -0
- package/.next/standalone/packages/ui/src/app/projects/page.tsx +167 -20
- package/.next/standalone/packages/ui/src/app/specs/specs-client.tsx +27 -17
- package/.next/standalone/packages/ui/src/components/color-picker.tsx +73 -0
- package/.next/standalone/packages/ui/src/components/context-file-detail.tsx +308 -0
- package/.next/standalone/packages/ui/src/components/context-file-viewer.tsx +96 -2
- package/.next/standalone/packages/ui/src/components/create-project-dialog.tsx +3 -5
- package/.next/standalone/packages/ui/src/components/directory-picker.tsx +1 -0
- package/.next/standalone/packages/ui/src/components/main-sidebar.tsx +31 -6
- package/.next/standalone/packages/ui/src/components/markdown-link.tsx +15 -8
- package/.next/standalone/packages/ui/src/components/project-switcher.tsx +24 -5
- package/.next/standalone/packages/ui/src/components/quick-search.tsx +3 -1
- package/.next/standalone/packages/ui/src/components/spec-dependency-graph.tsx +13 -52
- package/.next/standalone/packages/ui/src/components/spec-detail-client.tsx +36 -11
- package/.next/standalone/packages/ui/src/components/spec-detail-wrapper.tsx +3 -4
- package/.next/standalone/packages/ui/src/components/specs-nav-sidebar.tsx +8 -6
- package/.next/standalone/packages/ui/src/contexts/project-context.tsx +24 -0
- package/.next/standalone/packages/ui/src/lib/db/service-queries.ts +85 -31
- package/.next/standalone/packages/ui/src/lib/dependency-graph.ts +0 -13
- package/.next/standalone/packages/ui/src/types/specs.ts +6 -4
- package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
- package/.next/static/chunks/04de9ed512b8098b.js +10 -0
- package/.next/static/chunks/1e0689744f87e958.js +2 -0
- package/.next/static/chunks/3d12a8c3152b526d.js +3 -0
- package/.next/static/chunks/4610aea3ca2e69eb.js +2 -0
- package/.next/static/chunks/46275d9d67603bf5.js +1 -0
- package/.next/static/chunks/7931c6cb379305b1.js +1 -0
- package/.next/static/chunks/7a00633903e066b4.js +1 -0
- package/.next/static/chunks/{942cf63b4032c808.js → 7df6308e6cfcf902.js} +1 -1
- package/.next/static/chunks/7f9a218732be8099.js +5 -0
- package/.next/static/chunks/840c6743a491a398.js +1 -0
- package/.next/static/chunks/8a6e8f3394240dbb.js +1 -0
- package/.next/static/chunks/8d8c106c6848d15b.js +1 -0
- package/.next/static/chunks/a5e25b9fa6b88eee.js +1 -0
- package/.next/static/chunks/a640b005f2e15d98.js +1 -0
- package/.next/static/chunks/a7075a240adea8e8.js +1 -0
- package/.next/static/chunks/b53250480fde6816.js +1 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/794f3931f1ca12d2.js → static/chunks/bbd498aa5689c057.js} +1 -1
- package/.next/static/chunks/c26909a25ca9fc9b.js +1 -0
- package/.next/static/chunks/c658e22a605e0ed1.js +1 -0
- package/.next/static/chunks/c92660d8d0c4763d.js +1 -0
- package/.next/static/chunks/{e3bc96a996e2a314.js → d26f4109b44eb240.js} +1 -1
- package/.next/static/chunks/{3276ca6fd9005903.js → d52a048b511c32bd.js} +1 -1
- package/.next/static/chunks/ddb2935cfe5310c7.css +1 -0
- package/.next/static/chunks/e399b4afc7936907.js +1 -0
- package/.next/static/chunks/f924ae32752e1583.js +1 -0
- package/.next/static/chunks/ff11efb770d5a0bc.js +1 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/turbopack-5fa55215af0efb15.js → static/chunks/turbopack-261c5dcdd873f310.js} +1 -1
- package/package.json +4 -2
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__65667b70._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__675a763e._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__803d07f0._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8233e09b._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__84cdc14a._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8a9ab1a3._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__aa677b0d._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__ae726e9c._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__bdc3963a._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f06435b0._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f5c6d6b8._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__fb91986f._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui_src_lib_db_index_ts_556307fa._.js +0 -74
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui_src_lib_specs_sources_database-source_ts_0bd881ee._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__01bfc8ff._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__12b4eb41._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__4ec37765._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__50122e7e._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__6e739186._.js +0 -7
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__88a691ee._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a4c56419._.js +0 -7
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b6632d78._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__bdbbba01._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__cc589a54._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__daee3355._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__ead1539c._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_0f9ffe32._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_315f3b3a._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_3b617676._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_9dcf102b._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_ac867463._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_b397e94a._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_3ba1438c._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_8272a49c._.js +0 -3
- package/.next/standalone/packages/ui/.next/static/chunks/1eb8283995f370c6.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/20f4141ccb5d4eb4.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/2c85b8059e42248a.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/336e8e8fc6b0fba8.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/37a1236ed50645a6.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/3b6b058ebd14dbed.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/9d84ba08a41145ec.js +0 -5
- package/.next/standalone/packages/ui/.next/static/chunks/b8353eb8c6fb895e.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/c4b1faff3361a749.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/d7420d2a867e57b5.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/dae403679aae65f4.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/efded9da04c960d8.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/f382932f1a5d6359.js +0 -10
- package/.next/standalone/packages/ui/.next/static/chunks/f43b6e43b4da1a32.css +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/f6dd06e6d22d2d12.js +0 -3
- package/.next/standalone/packages/ui/dist/BUILD_ID +0 -1
- package/.next/standalone/packages/ui/dist/public/f864aa7e7061c0600e35cf3d879b27cf.txt +0 -1
- package/.next/standalone/packages/ui/dist/public/favicon.ico +0 -0
- package/.next/standalone/packages/ui/dist/public/file.svg +0 -1
- package/.next/standalone/packages/ui/dist/public/github-mark-white.svg +0 -1
- package/.next/standalone/packages/ui/dist/public/github-mark.svg +0 -1
- package/.next/standalone/packages/ui/dist/public/globe.svg +0 -1
- package/.next/standalone/packages/ui/dist/public/icon.svg +0 -7
- package/.next/standalone/packages/ui/dist/public/logo-dark-bg.svg +0 -17
- package/.next/standalone/packages/ui/dist/public/logo-with-bg.svg +0 -17
- package/.next/standalone/packages/ui/dist/public/logo.svg +0 -17
- package/.next/standalone/packages/ui/dist/public/next.svg +0 -1
- package/.next/standalone/packages/ui/dist/public/vercel.svg +0 -1
- package/.next/standalone/packages/ui/dist/public/window.svg +0 -1
- package/.next/standalone/packages/ui/dist/standalone/packages/web/README.md +0 -196
- package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +0 -75
- package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +0 -44
- package/.next/standalone/packages/ui/dist/standalone/specs/014-complete-custom-frontmatter/README.md +0 -175
- package/.next/standalone/packages/ui/dist/standalone/specs/016-github-action/README.md +0 -317
- package/.next/standalone/packages/ui/dist/standalone/specs/017-vscode-extension/README.md +0 -261
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CLI-DESIGN.md +0 -380
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION-EXAMPLES.md +0 -230
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION.md +0 -285
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/IMPLEMENTATION.md +0 -358
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/README.md +0 -303
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/TESTING.md +0 -368
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/VALIDATION-RULES.md +0 -327
- package/.next/standalone/packages/ui/dist/standalone/specs/024-pattern-aware-list-grouping/README.md +0 -117
- package/.next/standalone/packages/ui/dist/standalone/specs/025-template-config-updates/README.md +0 -73
- package/.next/standalone/packages/ui/dist/standalone/specs/026-init-pattern-selection/README.md +0 -109
- package/.next/standalone/packages/ui/dist/standalone/specs/034-copilot-slash-commands/README.md +0 -107
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/ARCHITECTURE.md +0 -244
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/IMPLEMENTATION.md +0 -429
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/README.md +0 -302
- package/.next/standalone/packages/ui/dist/standalone/specs/036-pm-integrations/README.md +0 -158
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-AI-ASSISTED.md +0 -359
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-FULL-LIFECYCLE.md +0 -86
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-REAL-FEATURE.md +0 -437
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-SCRIPT.md +0 -365
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-FINAL.md +0 -203
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SESSION-2025-11-06.md +0 -174
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SUMMARY.md +0 -156
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/IMPLEMENTATION.md +0 -183
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/MARKETING.md +0 -229
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/NEXT-STEPS-DEMO.md +0 -243
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/README.md +0 -217
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/SESSION-2025-11-06.md +0 -166
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/TESTING.md +0 -126
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/ACTUAL-IMPLEMENTATION.md +0 -108
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/DESIGN.md +0 -382
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/IMPLEMENTATION.md +0 -144
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/RATIONALE.md +0 -146
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/README.md +0 -208
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/TESTING.md +0 -182
- package/.next/standalone/packages/ui/dist/standalone/specs/047-git-backfill-timestamps/README.md +0 -314
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/FINDINGS.md +0 -113
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/GUIDELINES.md +0 -237
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/README.md +0 -149
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-COMPARISONS.md +0 -175
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-CONSTRAINTS.md +0 -254
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/FIRST-PRINCIPLES.md +0 -376
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-ROADMAP.md +0 -240
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-TOOLS.md +0 -175
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/README.md +0 -374
- package/.next/standalone/packages/ui/dist/standalone/specs/051-docs-system-prompt-principles/README.md +0 -339
- package/.next/standalone/packages/ui/dist/standalone/specs/052-branding-assets/README.md +0 -128
- package/.next/standalone/packages/ui/dist/standalone/specs/053-spec-assets-philosophy/README.md +0 -97
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/DESIGN-DECISIONS.md +0 -93
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/OUTPUT-FORMAT-SPEC.md +0 -146
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/README.md +0 -175
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART1.md +0 -397
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART2.md +0 -342
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS.md +0 -44
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CHANGES.md +0 -150
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CONCERNS-ANALYSIS.md +0 -351
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/DOCS-ALIGNMENT-ANALYSIS.md +0 -238
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/README.md +0 -280
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-DRAFT.md +0 -372
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-REFINED.md +0 -466
- package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/AUDIT-RESULTS.md +0 -178
- package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/README.md +0 -174
- package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/README.md +0 -295
- package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/VALIDATION-RESULTS.md +0 -487
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/ANALYSIS.md +0 -241
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/DESIGN.md +0 -279
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/IMPLEMENTATION.md +0 -642
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/NOTES.md +0 -125
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/README.md +0 -286
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/ARCHITECTURE.md +0 -392
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/COMMANDS.md +0 -1002
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/CONTEXT-ENGINEERING.md +0 -411
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/IMPLEMENTATION.md +0 -812
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/README.md +0 -504
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/TESTING.md +0 -724
- package/.next/standalone/packages/ui/dist/standalone/specs/060-core-concepts-coherence/README.md +0 -125
- package/.next/standalone/packages/ui/dist/standalone/specs/061-ai-assisted-spec-writing/README.md +0 -299
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/IMPLEMENTATION-PLAN.md +0 -174
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PAGE-SPECIFICATIONS.md +0 -265
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PROBLEM-ANALYSIS.md +0 -36
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/README.md +0 -243
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/SOLUTION-DESIGN.md +0 -82
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/DESIGN.md +0 -338
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/EXAMPLES.md +0 -354
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/IMPLEMENTATION.md +0 -189
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/README.md +0 -119
- package/.next/standalone/packages/ui/dist/standalone/specs/064-docs-site-zh-translation/README.md +0 -170
- package/.next/standalone/packages/ui/dist/standalone/specs/065-v03-planning/README.md +0 -158
- package/.next/standalone/packages/ui/dist/standalone/specs/066-context-economy-thresholds-refinement/README.md +0 -842
- package/.next/standalone/packages/ui/dist/standalone/specs/067-monorepo-core-extraction/README.md +0 -358
- package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/DESIGN.md +0 -444
- package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/README.md +0 -357
- package/.next/standalone/packages/ui/dist/standalone/specs/069-token-counting-utils/README.md +0 -551
- package/.next/standalone/packages/ui/dist/standalone/specs/070-mcp-token-counting-tool/README.md +0 -372
- package/.next/standalone/packages/ui/dist/standalone/specs/071-simplified-token-validation/README.md +0 -489
- package/.next/standalone/packages/ui/dist/standalone/specs/072-ai-agent-first-use-workflow/README.md +0 -285
- package/.next/standalone/packages/ui/dist/standalone/specs/073-template-engine-agents-md/README.md +0 -323
- package/.next/standalone/packages/ui/dist/standalone/specs/074-content-at-creation/README.md +0 -136
- package/.next/standalone/packages/ui/dist/standalone/specs/075-intelligent-search-engine/README.md +0 -399
- package/.next/standalone/packages/ui/dist/standalone/specs/076-programmatic-spec-relationships/README.md +0 -301
- package/.next/standalone/packages/ui/dist/standalone/specs/077-archiving-strategy/README.md +0 -235
- package/.next/standalone/packages/ui/dist/standalone/specs/078-sub-spec-template-system/README.md +0 -303
- package/.next/standalone/packages/ui/dist/standalone/specs/079-cli-alphabetical-organization/README.md +0 -196
- package/.next/standalone/packages/ui/dist/standalone/specs/080-mcp-server-modular-architecture/README.md +0 -388
- package/.next/standalone/packages/ui/dist/standalone/specs/081-web-app-ux-redesign/README.md +0 -824
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DATABASE.md +0 -111
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DEPLOYMENT.md +0 -69
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/FILESYSTEM.md +0 -77
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/IMPLEMENTATION.md +0 -184
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/README.md +0 -496
- package/.next/standalone/packages/ui/dist/standalone/specs/083-web-navigation-performance/README.md +0 -490
- package/.next/standalone/packages/ui/dist/standalone/specs/084-sub-spec-visibility-in-tools/README.md +0 -389
- package/.next/standalone/packages/ui/dist/standalone/specs/085-cli-relationship-commands/README.md +0 -920
- package/.next/standalone/packages/ui/dist/standalone/specs/086-template-component-deduplication/README.md +0 -146
- package/.next/standalone/packages/ui/dist/standalone/specs/087-cli-ui-command/README.md +0 -607
- package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +0 -104
- package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +0 -124
- package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +0 -129
- package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +0 -244
- package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +0 -148
- package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +0 -54
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/001-typescript-cli-migration/README.md +0 -37
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/002-template-system-redesign/README.md +0 -60
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/003-init-system-redesign/README.md +0 -113
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/README.md +0 -69
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/SUMMARY.md +0 -112
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/005-structured-frontmatter/README.md +0 -229
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/006-pm-visualization-tools/README.md +0 -406
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/007-system-prompt-updates/README.md +0 -168
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/008-commander-migration/README.md +0 -174
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/009-cli-ux-enhancement/README.md +0 -212
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/010-commands-refactor/README.md +0 -249
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/README.md +0 -60
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/TEST_SUMMARY.md +0 -139
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/012-sub-spec-files/README.md +0 -722
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/013-custom-spec-templates/README.md +0 -413
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/015-npm-publishing/README.md +0 -255
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/019-readme-improvement/README.md +0 -252
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/020-documentation-website/README.md +0 -253
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/021-docusaurus-vercel-migration/README.md +0 -612
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/022-flexible-folder-structure/README.md +0 -794
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/DESIGN.md +0 -834
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/README.md +0 -255
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/027-cli-ui-ux-optimization/README.md +0 -454
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/028-cli-ui-modernization/README.md +0 -172
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/IMPLEMENTATION.md +0 -152
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/README.md +0 -95
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/030-created-date-format-bug/README.md +0 -87
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/031-gantt-ux-improvements/README.md +0 -230
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/032-console-log-chalk-security/README.md +0 -89
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/033-mcp-server/README.md +0 -89
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/037-docs-overhaul/README.md +0 -166
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-flat-structure-migration/README.md +0 -276
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-mcp-frontmatter-bug-fix/README.md +0 -122
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-simplify-viewer-commands/README.md +0 -198
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-template-variable-sync/README.md +0 -192
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/040-spec-viewer-commands/README.md +0 -171
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/042-mcp-error-handling/README.md +0 -200
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/044-spec-relationships-clarity/README.md +0 -317
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/DESIGN.md +0 -276
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/IMPLEMENTATION.md +0 -241
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/README.md +0 -139
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/TESTING.md +0 -328
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/050-tool-redesign-first-principles/README.md +0 -400
- package/.next/standalone/packages/ui/dist/static/chunks/0c19c69aa7625475.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/116800b03245a1e5.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/15843a3d7584e314.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/19e80edf527aef5c.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/465954d5af3284a9.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/5abeeb89f1412a80.js +0 -3
- package/.next/standalone/packages/ui/dist/static/chunks/5c2072ad938de8ed.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/6a05a93ec8fa7b83.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/778e42188e450b39.css +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/a02c1f50ff00204f.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/a45464b9776dd88e.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/a6dad97d9634a72d.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/b0ea0ac61604f843.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/c06e85b449720194.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/c557ac675be79771.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/cad005a57ffbb2d3.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/cdf6fe33bc65efbc.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/d12ed5dbe44caed7.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/d1ebe5c1a344f4ca.js +0 -5
- package/.next/standalone/packages/ui/dist/static/chunks/d42cf1682bc46652.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/dde5d8bddd7fbfcf.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/ebd89051637b9a47.js +0 -4
- package/.next/standalone/packages/ui/dist/static/chunks/ec82875d18b29f47.js +0 -2
- package/.next/standalone/packages/ui/dist/static/chunks/f0b701df9769bcc5.js +0 -19
- package/.next/standalone/packages/ui/dist/static/chunks/turbopack-1c09a99f4c9e28d3.js +0 -3
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_buildManifest.js +0 -11
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_clientMiddlewareManifest.json +0 -1
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_ssgManifest.js +0 -1
- package/.next/static/chunks/1eb8283995f370c6.js +0 -1
- package/.next/static/chunks/20f4141ccb5d4eb4.js +0 -1
- package/.next/static/chunks/2c85b8059e42248a.js +0 -1
- package/.next/static/chunks/336e8e8fc6b0fba8.js +0 -1
- package/.next/static/chunks/37a1236ed50645a6.js +0 -1
- package/.next/static/chunks/3b6b058ebd14dbed.js +0 -1
- package/.next/static/chunks/9d84ba08a41145ec.js +0 -5
- package/.next/static/chunks/b8353eb8c6fb895e.js +0 -1
- package/.next/static/chunks/c4b1faff3361a749.js +0 -1
- package/.next/static/chunks/d7420d2a867e57b5.js +0 -1
- package/.next/static/chunks/dae403679aae65f4.js +0 -1
- package/.next/static/chunks/efded9da04c960d8.js +0 -1
- package/.next/static/chunks/f382932f1a5d6359.js +0 -10
- package/.next/static/chunks/f43b6e43b4da1a32.css +0 -1
- package/.next/static/chunks/f6dd06e6d22d2d12.js +0 -3
- /package/.next/standalone/packages/ui/.next/static/{-Mn9iD4O5f_khGd1P3kmB → T8X9UGfigRL0qWZiBHNjy}/_buildManifest.js +0 -0
- /package/.next/standalone/packages/ui/.next/static/{-Mn9iD4O5f_khGd1P3kmB → T8X9UGfigRL0qWZiBHNjy}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{-Mn9iD4O5f_khGd1P3kmB → T8X9UGfigRL0qWZiBHNjy}/_ssgManifest.js +0 -0
- /package/.next/{standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT → static/T8X9UGfigRL0qWZiBHNjy}/_buildManifest.js +0 -0
- /package/.next/{standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT → static/T8X9UGfigRL0qWZiBHNjy}/_clientMiddlewareManifest.json +0 -0
- /package/.next/{standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT → static/T8X9UGfigRL0qWZiBHNjy}/_ssgManifest.js +0 -0
|
@@ -1,842 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
status: complete
|
|
3
|
-
created: '2025-11-11'
|
|
4
|
-
tags:
|
|
5
|
-
- validation
|
|
6
|
-
- philosophy
|
|
7
|
-
- context-economy
|
|
8
|
-
- quality
|
|
9
|
-
priority: high
|
|
10
|
-
related:
|
|
11
|
-
- 048-spec-complexity-analysis
|
|
12
|
-
- 049-leanspec-first-principles
|
|
13
|
-
- 018-spec-validation
|
|
14
|
-
- 059-programmatic-spec-management
|
|
15
|
-
- 069-token-counting-utils
|
|
16
|
-
created_at: '2025-11-11T06:58:44.846Z'
|
|
17
|
-
updated_at: '2025-11-11T15:00:26.886Z'
|
|
18
|
-
completed_at: '2025-11-11T15:00:26.886Z'
|
|
19
|
-
completed: '2025-11-11'
|
|
20
|
-
transitions:
|
|
21
|
-
- status: complete
|
|
22
|
-
at: '2025-11-11T15:00:26.886Z'
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
# Context Economy Thresholds Refinement
|
|
26
|
-
|
|
27
|
-
> **Status**: ✅ Complete · **Priority**: High · **Created**: 2025-11-11 · **Tags**: validation, philosophy, context-economy, quality
|
|
28
|
-
|
|
29
|
-
## Overview
|
|
30
|
-
|
|
31
|
-
**The Suspicion**: Hard line thresholds (>300 warning, >400 error) may not accurately reflect spec complexity and readability.
|
|
32
|
-
|
|
33
|
-
**The Investigation**: Deep dive into existing specs + research on LLM performance reveals that **structure, density, and token count matter more than raw line count**.
|
|
34
|
-
|
|
35
|
-
**Key Finding**: A well-structured 394-line spec with sub-specs can be **more readable** than a dense 316-line spec with 26 code blocks. **Token count is critical** - research shows 39% performance drop in multi-turn contexts and quality degradation beyond 50K tokens.
|
|
36
|
-
|
|
37
|
-
## Evidence from Current Specs
|
|
38
|
-
|
|
39
|
-
### Top 4 Largest Specs (All Near Threshold)
|
|
40
|
-
|
|
41
|
-
| Spec | Lines | Tokens* | Sections | Code Blocks | Lines/Section | Sub-specs | Readable? |
|
|
42
|
-
|------|-------|---------|----------|-------------|---------------|-----------|-----------|
|
|
43
|
-
| 059-programmatic | 394 | ~2,100 | 32 | 8 | ~12 | 6 files | ✅ Yes |
|
|
44
|
-
| 049-first-principles | 374 | ~1,700 | 38 | 0 | ~9 | 5 files | ✅ Yes |
|
|
45
|
-
| 051-docs-system-prompt | 339 | ~1,600 | 28 | 4 | ~12 | 0 | ✅ Yes |
|
|
46
|
-
| 016-github-action | 315 | ~2,400 | 20 | 26 | ~15 | 0 | ⚠️ Dense |
|
|
47
|
-
|
|
48
|
-
*Estimated tokens (code is denser: ~3 chars/token vs prose: ~4 chars/token)
|
|
49
|
-
|
|
50
|
-
### Key Observations
|
|
51
|
-
|
|
52
|
-
**1. Sub-specs Improve Readability**
|
|
53
|
-
- Spec 059 (394 lines): Has 6 sub-spec files → README is just an overview
|
|
54
|
-
- Spec 049 (374 lines): Has 5 sub-spec files → Progressive disclosure works
|
|
55
|
-
- These are **easier to navigate** than 300-line single-file specs
|
|
56
|
-
|
|
57
|
-
**2. Section Density Matters More Than Line Count**
|
|
58
|
-
- Spec 049: 9 lines/section → Easy to scan and understand
|
|
59
|
-
- Spec 016: 15 lines/section + 26 code blocks → Cognitively heavier despite fewer lines
|
|
60
|
-
|
|
61
|
-
**3. Code Block Density is a Complexity Factor**
|
|
62
|
-
- High code density (like spec 016 with 26 blocks) increases cognitive load
|
|
63
|
-
- Code requires more attention than prose
|
|
64
|
-
- Not captured by simple line counting
|
|
65
|
-
|
|
66
|
-
**4. Structure Trumps Size**
|
|
67
|
-
- A well-organized 400-line spec with clear sections and sub-specs
|
|
68
|
-
- Is MORE readable than a poorly structured 250-line spec
|
|
69
|
-
- Current validation misses this
|
|
70
|
-
|
|
71
|
-
**5. Token Count Reveals True Cognitive Load**
|
|
72
|
-
- Spec 016: Only 315 lines but **~2,400 tokens** (26 code blocks = dense)
|
|
73
|
-
- Spec 049: 374 lines but only **~1,700 tokens** (pure prose, no code)
|
|
74
|
-
- Research shows: Quality drops beyond 50K tokens, 6x cost difference between 2,000-line vs 300-line specs
|
|
75
|
-
- **Token count better predicts AI performance** than line count
|
|
76
|
-
|
|
77
|
-
## The Problem with Hard Thresholds
|
|
78
|
-
|
|
79
|
-
### What Current Validation Checks
|
|
80
|
-
|
|
81
|
-
```typescript
|
|
82
|
-
// Current: Simple line counting
|
|
83
|
-
if (lines > 400) return ERROR;
|
|
84
|
-
if (lines > 300) return WARNING;
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
**Issues**:
|
|
88
|
-
1. ❌ Doesn't account for structure (section organization)
|
|
89
|
-
2. ❌ Doesn't account for density (code blocks, lists, tables)
|
|
90
|
-
3. ❌ Doesn't account for sub-specs (progressive disclosure)
|
|
91
|
-
4. ❌ Doesn't account for content type (prose vs. code vs. data)
|
|
92
|
-
5. ❌ **Doesn't account for token count** (true cognitive load for AI)
|
|
93
|
-
6. ❌ False positives: 394-line spec with 6 sub-specs → WARNING (but it's fine!)
|
|
94
|
-
7. ❌ False negatives: 280-line dense spec with no structure → PASS (but it's hard to read!)
|
|
95
|
-
|
|
96
|
-
### What Actually Affects Readability
|
|
97
|
-
|
|
98
|
-
**Cognitive Load Factors (in priority order)**:
|
|
99
|
-
|
|
100
|
-
1. **Cognitive Chunking** - Can you break it into 7±2 concepts?
|
|
101
|
-
- Well-sectioned spec with 15-30 sections: Easy to chunk
|
|
102
|
-
- Monolithic wall of text: Hard to process
|
|
103
|
-
|
|
104
|
-
2. **Information Density** - How much attention does each line require?
|
|
105
|
-
- Code blocks: High cognitive load
|
|
106
|
-
- Tables: Medium load
|
|
107
|
-
- Narrative prose: Lower load
|
|
108
|
-
- Frontmatter/lists: Scannable
|
|
109
|
-
|
|
110
|
-
3. **Progressive Disclosure** - Can you defer details?
|
|
111
|
-
- Spec with sub-specs: Read README for overview, dive into DESIGN.md when needed
|
|
112
|
-
- Single file: Must read everything to understand
|
|
113
|
-
|
|
114
|
-
4. **Signal-to-Noise** - How much is fluff vs. decision-critical?
|
|
115
|
-
- High signal: Every sentence informs decisions
|
|
116
|
-
- Low signal: Obvious content, verbose explanations
|
|
117
|
-
|
|
118
|
-
5. **Token Count** - True AI cognitive load (CRITICAL)
|
|
119
|
-
- Research: 39% performance drop in multi-turn contexts
|
|
120
|
-
- Quality degrades beyond 50K tokens despite 200K limits
|
|
121
|
-
- 6x cost difference: 2,000 lines vs 300 lines
|
|
122
|
-
- Code is denser (~3 chars/token) than prose (~4 chars/token)
|
|
123
|
-
- **Better predictor of AI effectiveness than line count**
|
|
124
|
-
|
|
125
|
-
6. **Total Length** - Raw line count (legacy metric)
|
|
126
|
-
- Yes, it matters, but LESS than the above factors
|
|
127
|
-
- A necessary but not sufficient condition
|
|
128
|
-
- Proxy for token count but less accurate
|
|
129
|
-
|
|
130
|
-
## Proposed Refined Approach
|
|
131
|
-
|
|
132
|
-
### Multi-Dimensional Complexity Score
|
|
133
|
-
|
|
134
|
-
Instead of just line count, calculate **Cognitive Load Score**:
|
|
135
|
-
|
|
136
|
-
```typescript
|
|
137
|
-
type ComplexityMetrics = {
|
|
138
|
-
lineCount: number;
|
|
139
|
-
sectionCount: number;
|
|
140
|
-
codeBlockCount: number;
|
|
141
|
-
codeBlockChars: number; // Total characters in code blocks
|
|
142
|
-
listItemCount: number;
|
|
143
|
-
tableCount: number;
|
|
144
|
-
tableChars: number; // Total characters in tables
|
|
145
|
-
hasSubSpecs: boolean;
|
|
146
|
-
subSpecCount: number;
|
|
147
|
-
averageSectionLength: number;
|
|
148
|
-
estimatedTokens: number; // Estimated token count for LLM input
|
|
149
|
-
estimatedReadingTime: number; // minutes
|
|
150
|
-
};
|
|
151
|
-
|
|
152
|
-
type ComplexityScore = {
|
|
153
|
-
score: number; // 0-100
|
|
154
|
-
factors: {
|
|
155
|
-
tokens: number; // Primary: token-based score (0-60)
|
|
156
|
-
structure: number; // Modifier: structure quality (-30 to +20)
|
|
157
|
-
};
|
|
158
|
-
recommendation: 'good' | 'review' | 'split';
|
|
159
|
-
costMultiplier: number; // vs 300-line baseline
|
|
160
|
-
aiEffectiveness: number; // 0-100% (hypothesis to validate)
|
|
161
|
-
};
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
### Scoring Algorithm (Draft)
|
|
165
|
-
|
|
166
|
-
```typescript
|
|
167
|
-
// Token estimation using tokenx package (https://www.npmjs.com/package/tokenx)
|
|
168
|
-
// 94% accuracy, 2kB size, zero dependencies
|
|
169
|
-
import { estimateTokenCount } from 'tokenx';
|
|
170
|
-
|
|
171
|
-
function calculateComplexityScore(metrics: ComplexityMetrics): ComplexityScore {
|
|
172
|
-
// PRIMARY: Token count (research-backed predictor of AI performance)
|
|
173
|
-
// Thresholds to be validated empirically - these are hypotheses
|
|
174
|
-
const tokenScore =
|
|
175
|
-
metrics.estimatedTokens < 2000 ? 0 : // Excellent
|
|
176
|
-
metrics.estimatedTokens < 3500 ? 20 : // Good
|
|
177
|
-
metrics.estimatedTokens < 5000 ? 40 : // Warning
|
|
178
|
-
60; // Should split
|
|
179
|
-
|
|
180
|
-
// MODIFIERS: Structure quality adjusts token-based score
|
|
181
|
-
// Sub-specs enable progressive disclosure (big win for Context Economy)
|
|
182
|
-
// Good sectioning enables cognitive chunking (7±2 rule)
|
|
183
|
-
const structureModifier =
|
|
184
|
-
metrics.hasSubSpecs ? -30 : // Progressive disclosure bonus
|
|
185
|
-
(metrics.sectionCount >= 15 && metrics.sectionCount <= 35) ? -15 : // Good chunking
|
|
186
|
-
(metrics.sectionCount < 8) ? +20 : // Too monolithic
|
|
187
|
-
0; // Acceptable
|
|
188
|
-
|
|
189
|
-
const finalScore = Math.max(0, Math.min(100, tokenScore + structureModifier));
|
|
190
|
-
|
|
191
|
-
// Calculate cost multiplier (vs 300-line baseline ≈ 1,200 tokens)
|
|
192
|
-
const baselineTokens = 1200;
|
|
193
|
-
const costMultiplier = metrics.estimatedTokens / baselineTokens;
|
|
194
|
-
|
|
195
|
-
// AI effectiveness estimate (to be validated empirically)
|
|
196
|
-
// Research suggests degradation, but exact thresholds need testing
|
|
197
|
-
let aiEffectiveness = 100;
|
|
198
|
-
if (metrics.estimatedTokens > 10000) {
|
|
199
|
-
aiEffectiveness = 50; // Severe degradation (hypothesis)
|
|
200
|
-
} else if (metrics.estimatedTokens > 5000) {
|
|
201
|
-
aiEffectiveness = 65; // Significant degradation (hypothesis)
|
|
202
|
-
} else if (metrics.estimatedTokens > 3500) {
|
|
203
|
-
aiEffectiveness = 80; // Noticeable degradation (hypothesis)
|
|
204
|
-
} else if (metrics.estimatedTokens > 2000) {
|
|
205
|
-
aiEffectiveness = 90; // Slight degradation (hypothesis)
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
return {
|
|
209
|
-
score: finalScore,
|
|
210
|
-
factors: {
|
|
211
|
-
tokens: tokenScore, // Primary factor
|
|
212
|
-
structure: structureModifier, // Modifier
|
|
213
|
-
},
|
|
214
|
-
recommendation:
|
|
215
|
-
finalScore <= 25 ? 'good' :
|
|
216
|
-
finalScore <= 50 ? 'review' :
|
|
217
|
-
'split',
|
|
218
|
-
costMultiplier: Math.round(costMultiplier * 10) / 10,
|
|
219
|
-
aiEffectiveness: Math.round(aiEffectiveness),
|
|
220
|
-
};
|
|
221
|
-
}
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
### New Thresholds
|
|
225
|
-
|
|
226
|
-
Instead of hard line limits:
|
|
227
|
-
|
|
228
|
-
- **Score 0-30**: ✅ Good - Readable and well-structured
|
|
229
|
-
- **Score 31-60**: ⚠️ Review - Consider simplification or splitting
|
|
230
|
-
- **Score 61-100**: 🔴 Split - Too complex, should split
|
|
231
|
-
|
|
232
|
-
### Examples Applied to Current Specs
|
|
233
|
-
|
|
234
|
-
**Spec 059 (394 lines, ~2,100 tokens, 32 sections, 8 code blocks, 6 sub-specs)**:
|
|
235
|
-
- Token score: 20 (~2,100 tokens)
|
|
236
|
-
- Structure modifier: -30 (has sub-specs)
|
|
237
|
-
- **Total: -10 points** → ✅ Excellent | Cost: 1.8x | AI: 90%
|
|
238
|
-
|
|
239
|
-
**Spec 016 (315 lines, ~2,400 tokens, 20 sections, 26 code blocks, no sub-specs)**:
|
|
240
|
-
- Token score: 20 (~2,400 tokens)
|
|
241
|
-
- Structure modifier: -15 (20 sections, good chunking)
|
|
242
|
-
- **Total: 5 points** → ✅ Good | Cost: 2.0x | AI: 90%
|
|
243
|
-
- **Key insight**: Token count captures code density automatically
|
|
244
|
-
|
|
245
|
-
**Spec 051 (339 lines, ~1,600 tokens, 28 sections, 4 code blocks, no sub-specs)**:
|
|
246
|
-
- Token score: 0 (~1,600 tokens)
|
|
247
|
-
- Structure modifier: -15 (28 sections, good chunking)
|
|
248
|
-
- **Total: -15 points** → ✅ Excellent | Cost: 1.3x | AI: 100%
|
|
249
|
-
|
|
250
|
-
**Spec 049 (374 lines, ~1,700 tokens, 38 sections, 0 code blocks, 5 sub-specs)**:
|
|
251
|
-
- Token score: 0 (~1,700 tokens)
|
|
252
|
-
- Structure modifier: -30 (has sub-specs, 38 sections)
|
|
253
|
-
- **Total: -30 points** → ✅ Excellent | Cost: 1.4x | AI: 100%
|
|
254
|
-
- **Key insight**: Sub-specs + good structure = optimal
|
|
255
|
-
|
|
256
|
-
**Hypothetical: 280 lines, ~1,400 tokens, 5 sections, no code blocks, no sub-specs**:
|
|
257
|
-
- Token score: 0 (~1,400 tokens)
|
|
258
|
-
- Structure modifier: +20 (only 5 sections, poor chunking)
|
|
259
|
-
- **Total: 20 points** → ✅ Good | Cost: 1.2x | AI: 100%
|
|
260
|
-
- **Key insight**: Short with poor structure still acceptable (tokens dominate)
|
|
261
|
-
|
|
262
|
-
## Validation Changes Needed
|
|
263
|
-
|
|
264
|
-
### Phase 1: Add Complexity Metrics (v0.3.0)
|
|
265
|
-
|
|
266
|
-
Enhance validation to collect:
|
|
267
|
-
```typescript
|
|
268
|
-
interface SpecComplexity {
|
|
269
|
-
lineCount: number;
|
|
270
|
-
sectionCount: number;
|
|
271
|
-
codeBlockCount: number;
|
|
272
|
-
listItemCount: number;
|
|
273
|
-
tableCount: number;
|
|
274
|
-
subSpecFiles: string[];
|
|
275
|
-
averageSectionLength: number;
|
|
276
|
-
estimatedReadingTime: number;
|
|
277
|
-
}
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
### Phase 2: Implement Complexity Scoring (v0.3.0)
|
|
281
|
-
|
|
282
|
-
Add new validator:
|
|
283
|
-
```typescript
|
|
284
|
-
class ComplexityScoreValidator implements ValidationRule {
|
|
285
|
-
name = 'complexity-score';
|
|
286
|
-
description = 'Multi-dimensional complexity analysis';
|
|
287
|
-
|
|
288
|
-
validate(spec: SpecInfo, content: string): ValidationResult {
|
|
289
|
-
const metrics = analyzeComplexity(spec, content);
|
|
290
|
-
const score = calculateComplexityScore(metrics);
|
|
291
|
-
|
|
292
|
-
if (score.recommendation === 'split') {
|
|
293
|
-
return {
|
|
294
|
-
passed: false,
|
|
295
|
-
errors: [{
|
|
296
|
-
message: `Spec complexity too high (score: ${score.score}/100)`,
|
|
297
|
-
suggestion: `Consider splitting. Main issues: ${identifyTopIssues(score.factors)}`,
|
|
298
|
-
}],
|
|
299
|
-
};
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
if (score.recommendation === 'review') {
|
|
303
|
-
return {
|
|
304
|
-
passed: true,
|
|
305
|
-
warnings: [{
|
|
306
|
-
message: `Spec complexity moderate (score: ${score.score}/100)`,
|
|
307
|
-
suggestion: `Consider: ${suggestImprovements(metrics, score.factors)}`,
|
|
308
|
-
}],
|
|
309
|
-
};
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
return { passed: true, errors: [], warnings: [] };
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
```
|
|
316
|
-
|
|
317
|
-
### Phase 3: Keep Line Count as Backstop (v0.3.0)
|
|
318
|
-
|
|
319
|
-
Don't remove line count validation entirely - use it as a **backstop**:
|
|
320
|
-
|
|
321
|
-
```typescript
|
|
322
|
-
// Complexity score is primary
|
|
323
|
-
// Line count is secondary safety net
|
|
324
|
-
|
|
325
|
-
if (complexityScore < 60 && lineCount < 500) {
|
|
326
|
-
// Good - pass both checks
|
|
327
|
-
} else if (complexityScore < 60 && lineCount >= 500) {
|
|
328
|
-
// Warning - good structure but very long
|
|
329
|
-
warning("Well-structured but consider splitting for Context Economy");
|
|
330
|
-
} else if (complexityScore >= 60 && lineCount < 400) {
|
|
331
|
-
// Error - complex despite being shorter
|
|
332
|
-
error("Poor structure or high density - needs refactoring");
|
|
333
|
-
} else {
|
|
334
|
-
// Error - both metrics problematic
|
|
335
|
-
error("Too complex - split into sub-specs");
|
|
336
|
-
}
|
|
337
|
-
```
|
|
338
|
-
|
|
339
|
-
### Phase 4: Educate Users (v0.3.0)
|
|
340
|
-
|
|
341
|
-
Update guidance:
|
|
342
|
-
- AGENTS.md: Explain complexity factors beyond line count
|
|
343
|
-
- README.md: Show examples of good vs. poor structure
|
|
344
|
-
- Validation output: Explain WHY a spec is complex
|
|
345
|
-
- CLI: Add `lean-spec complexity <spec>` command for detailed analysis
|
|
346
|
-
|
|
347
|
-
## Research Evidence
|
|
348
|
-
|
|
349
|
-
### 1. Token Count is Critical
|
|
350
|
-
|
|
351
|
-
**Source**: [AI Agent Performance Blog Post](https://www.lean-spec.dev/blog/ai-agent-performance)
|
|
352
|
-
|
|
353
|
-
- **Finding**: 2,000-line spec costs **6x more** than 300-line spec
|
|
354
|
-
- **Finding**: Quality degradation happens **even within context limits** (not just at 50K)
|
|
355
|
-
- **Key Quote**: "Quality drops beyond 50K tokens despite 200K limits" - but degradation **starts much earlier**
|
|
356
|
-
- **Why**: Attention dilution (N² complexity), context rot, option overload, premature convergence
|
|
357
|
-
|
|
358
|
-
### 2. Multi-Turn Performance Degradation
|
|
359
|
-
|
|
360
|
-
**Source**: [arXiv:2505.06120 - "LLMs Get Lost In Multi-Turn Conversation"](https://arxiv.org/abs/2505.06120)
|
|
361
|
-
|
|
362
|
-
- **Finding**: **39% average performance drop** across six generation tasks
|
|
363
|
-
- **Root Cause**: LLMs make premature assumptions and can't recover
|
|
364
|
-
- **Key Quote**: "When LLMs take a wrong turn, they get lost and do not recover"
|
|
365
|
-
|
|
366
|
-
### 3. Function-Calling Performance
|
|
367
|
-
|
|
368
|
-
**Source**: [Berkeley Function-Calling Leaderboard (BFCL)](https://gorilla.cs.berkeley.edu/leaderboard.html)
|
|
369
|
-
|
|
370
|
-
- **Finding**: ALL models perform worse with more tools/options
|
|
371
|
-
- **Implication**: More context = more confusion = lower accuracy
|
|
372
|
-
|
|
373
|
-
### 4. Information Density Matters
|
|
374
|
-
|
|
375
|
-
**Source**: [arXiv:2407.11963 - "NeedleBench"](https://arxiv.org/abs/2407.11963)
|
|
376
|
-
|
|
377
|
-
- **Finding**: Models struggle with information-dense scenarios even at shorter context lengths
|
|
378
|
-
- **Phenomenon**: "Under-thinking" - premature reasoning termination
|
|
379
|
-
|
|
380
|
-
### 5. Long-Context RAG Performance
|
|
381
|
-
|
|
382
|
-
**Source**: [Databricks Research](https://www.databricks.com/blog/long-context-rag-performance-llms)
|
|
383
|
-
|
|
384
|
-
- **Finding**: Long-context performance degrades significantly even within theoretical limits
|
|
385
|
-
- **Implication**: Smaller models degrade earlier
|
|
386
|
-
|
|
387
|
-
### Key Takeaway
|
|
388
|
-
|
|
389
|
-
**Token count is a better predictor of AI performance than line count** because:
|
|
390
|
-
1. Direct measure of LLM input cost
|
|
391
|
-
2. Accounts for content density (code vs prose)
|
|
392
|
-
3. Backed by research showing **non-linear degradation patterns**
|
|
393
|
-
4. Correlates with actual AI effectiveness
|
|
394
|
-
|
|
395
|
-
**Degradation Gradient** (based on research):
|
|
396
|
-
- **<2K tokens**: Baseline performance (~100% effectiveness)
|
|
397
|
-
- **2-5K tokens**: Early degradation begins (~85-95% effectiveness)
|
|
398
|
-
- **5-10K tokens**: Noticeable degradation (~65-85% effectiveness)
|
|
399
|
-
- **10-20K tokens**: Moderate degradation (~50-65% effectiveness)
|
|
400
|
-
- **50K+ tokens**: Severe "cliff" effect (~40% performance drop or worse)
|
|
401
|
-
|
|
402
|
-
For validation, we use conservative thresholds (5K tokens = severe penalty) to catch specs **before** they reach problematic sizes.
|
|
403
|
-
|
|
404
|
-
## Implementation Plan
|
|
405
|
-
|
|
406
|
-
### Phase 1: Research & Metrics ✅ (This spec)
|
|
407
|
-
- [x] Investigate current specs
|
|
408
|
-
- [x] Identify complexity factors
|
|
409
|
-
- [x] Propose scoring algorithm
|
|
410
|
-
- [x] Design empirical validation plan
|
|
411
|
-
- [x] Get feedback on approach
|
|
412
|
-
|
|
413
|
-
### Phase 2: Core Implementation (v0.3.0 - Next)
|
|
414
|
-
- [ ] Install `tokenx` for token estimation
|
|
415
|
-
- [ ] Implement simplified `calculateComplexityScore()` function
|
|
416
|
-
- [ ] Use **hypothesis thresholds** (2K/3.5K/5K tokens) initially
|
|
417
|
-
- [ ] Create `ComplexityScoreValidator` class
|
|
418
|
-
- [ ] Add tests for edge cases
|
|
419
|
-
- [ ] Integrate with existing validation framework
|
|
420
|
-
|
|
421
|
-
### Phase 3: CLI Integration (v0.3.0)
|
|
422
|
-
- [ ] Add `lean-spec complexity <spec>` command
|
|
423
|
-
- [ ] Show breakdown: token score, structure modifier
|
|
424
|
-
- [ ] Display cost multiplier and AI effectiveness estimates
|
|
425
|
-
- [ ] Provide actionable suggestions
|
|
426
|
-
- [ ] Update `lean-spec validate` output
|
|
427
|
-
|
|
428
|
-
### Phase 4: Documentation (v0.3.0)
|
|
429
|
-
- [ ] Update AGENTS.md with complexity guidance
|
|
430
|
-
- [ ] Update README.md with examples
|
|
431
|
-
- [ ] Create "good structure" showcase
|
|
432
|
-
- [ ] Document that thresholds are hypotheses pending validation
|
|
433
|
-
|
|
434
|
-
### Phase 5: Empirical Validation (Future - v0.4.0+)
|
|
435
|
-
**Deferred until we have:**
|
|
436
|
-
- More real-world usage data from v0.3.0
|
|
437
|
-
- Clear methodology for LLM integration
|
|
438
|
-
- Resources for comprehensive benchmarking
|
|
439
|
-
|
|
440
|
-
**Tasks when ready:**
|
|
441
|
-
- [ ] Implement benchmark framework (already stubbed in `src/benchmark/`)
|
|
442
|
-
- [ ] Define benchmark tasks for 10+ specs
|
|
443
|
-
- [ ] Run benchmarks to validate thresholds
|
|
444
|
-
- [ ] Refine scoring weights based on data
|
|
445
|
-
- [ ] Publish empirical findings
|
|
446
|
-
|
|
447
|
-
### Phase 6: Advanced Features (v0.4.0+)
|
|
448
|
-
- [ ] Complexity trends over time
|
|
449
|
-
- [ ] Project-wide complexity dashboard
|
|
450
|
-
- [ ] Automated splitting suggestions
|
|
451
|
-
- [ ] Model-specific thresholds (if empirical data shows need)
|
|
452
|
-
|
|
453
|
-
## Implementation Details
|
|
454
|
-
|
|
455
|
-
### Token Estimation: Two Options
|
|
456
|
-
|
|
457
|
-
We have two viable approaches for token counting, each with different tradeoffs:
|
|
458
|
-
|
|
459
|
-
#### Option 1: tokenx (Recommended for Validation)
|
|
460
|
-
|
|
461
|
-
**Fast, lightweight estimation** - Best for validation thresholds where perfect accuracy isn't critical.
|
|
462
|
-
|
|
463
|
-
**Pros:**
|
|
464
|
-
- ✅ 94% accuracy compared to full tokenizers
|
|
465
|
-
- ✅ Just **2kB** bundle size with **zero dependencies**
|
|
466
|
-
- ✅ Very fast - no tokenization overhead
|
|
467
|
-
- ✅ Multi-language support (English, German, French, Chinese, etc.)
|
|
468
|
-
- ✅ Good enough for validation warnings/errors
|
|
469
|
-
- ✅ 45K+ weekly downloads
|
|
470
|
-
|
|
471
|
-
**Cons:**
|
|
472
|
-
- ❌ Not 100% accurate (6-12% error margin)
|
|
473
|
-
- ❌ Estimation-based, not true BPE encoding
|
|
474
|
-
|
|
475
|
-
**Installation:**
|
|
476
|
-
```bash
|
|
477
|
-
npm install tokenx
|
|
478
|
-
```
|
|
479
|
-
|
|
480
|
-
**Usage:**
|
|
481
|
-
```typescript
|
|
482
|
-
import { estimateTokenCount, isWithinTokenLimit } from 'tokenx';
|
|
483
|
-
|
|
484
|
-
// Fast estimation for validation
|
|
485
|
-
const tokens = estimateTokenCount(specContent);
|
|
486
|
-
|
|
487
|
-
// Check if within limit (e.g., 5000 token warning threshold)
|
|
488
|
-
const needsReview = !isWithinTokenLimit(specContent, 5000);
|
|
489
|
-
```
|
|
490
|
-
|
|
491
|
-
**Accuracy benchmarks:**
|
|
492
|
-
- English prose: 10-12% error margin
|
|
493
|
-
- Code (TypeScript): 6.18% error margin
|
|
494
|
-
- Large text (31K tokens): 12.29% error margin
|
|
495
|
-
|
|
496
|
-
---
|
|
497
|
-
|
|
498
|
-
#### Option 2: gpt-tokenizer (For Exact Counts)
|
|
499
|
-
|
|
500
|
-
**Precise tokenization** - Port of OpenAI's tiktoken with 100% accuracy.
|
|
501
|
-
|
|
502
|
-
**Pros:**
|
|
503
|
-
- ✅ **100% accurate** - exact BPE encoding
|
|
504
|
-
- ✅ Supports all OpenAI models (GPT-4o, GPT-4, GPT-3.5, etc.)
|
|
505
|
-
- ✅ Fastest full tokenizer on NPM (faster than WASM bindings)
|
|
506
|
-
- ✅ Built-in cost estimation with `estimateCost()`
|
|
507
|
-
- ✅ Chat-specific tokenization with `encodeChat()`
|
|
508
|
-
- ✅ 283K+ weekly downloads, trusted by Microsoft, Elastic
|
|
509
|
-
|
|
510
|
-
**Cons:**
|
|
511
|
-
- ❌ **53.1 MB** unpacked size (vs 2kB for tokenx)
|
|
512
|
-
- ❌ Slower than estimation (but still fastest full tokenizer)
|
|
513
|
-
- ❌ Model-specific - need to import correct encoding
|
|
514
|
-
|
|
515
|
-
**Installation:**
|
|
516
|
-
```bash
|
|
517
|
-
npm install gpt-tokenizer
|
|
518
|
-
```
|
|
519
|
-
|
|
520
|
-
**Usage:**
|
|
521
|
-
```typescript
|
|
522
|
-
import { encode, countTokens, isWithinTokenLimit } from 'gpt-tokenizer';
|
|
523
|
-
// or model-specific: from 'gpt-tokenizer/model/gpt-4o'
|
|
524
|
-
|
|
525
|
-
// Exact token count
|
|
526
|
-
const tokens = encode(specContent);
|
|
527
|
-
const count = tokens.length;
|
|
528
|
-
|
|
529
|
-
// Or use helper
|
|
530
|
-
const exactCount = countTokens(specContent);
|
|
531
|
-
|
|
532
|
-
// Check limit with exact counting
|
|
533
|
-
const needsReview = !isWithinTokenLimit(specContent, 5000);
|
|
534
|
-
```
|
|
535
|
-
|
|
536
|
-
**Accuracy:**
|
|
537
|
-
- 100% accurate (port of OpenAI's tiktoken)
|
|
538
|
-
- Benchmarked against OpenAI's Python library
|
|
539
|
-
|
|
540
|
-
---
|
|
541
|
-
|
|
542
|
-
### Recommendation: Hybrid Approach
|
|
543
|
-
|
|
544
|
-
**For v0.3.0, use tokenx:**
|
|
545
|
-
- Fast validation during CLI commands
|
|
546
|
-
- 2kB size won't bloat the package
|
|
547
|
-
- 94% accuracy is sufficient for warnings/errors
|
|
548
|
-
- 6-12% margin is acceptable for thresholds
|
|
549
|
-
|
|
550
|
-
**Future: Offer gpt-tokenizer as optional**
|
|
551
|
-
- Add as peer dependency (optional install)
|
|
552
|
-
- Use if available for exact counts
|
|
553
|
-
- Fall back to tokenx if not installed
|
|
554
|
-
- Display "estimated" vs "exact" in output
|
|
555
|
-
|
|
556
|
-
**Implementation:**
|
|
557
|
-
```typescript
|
|
558
|
-
// Try exact tokenizer first, fall back to estimation
|
|
559
|
-
let tokenCount: number;
|
|
560
|
-
let isExact = false;
|
|
561
|
-
|
|
562
|
-
try {
|
|
563
|
-
const { countTokens } = await import('gpt-tokenizer');
|
|
564
|
-
tokenCount = countTokens(content);
|
|
565
|
-
isExact = true;
|
|
566
|
-
} catch {
|
|
567
|
-
const { estimateTokenCount } = await import('tokenx');
|
|
568
|
-
tokenCount = estimateTokenCount(content);
|
|
569
|
-
isExact = false;
|
|
570
|
-
}
|
|
571
|
-
|
|
572
|
-
// Display in output
|
|
573
|
-
console.log(`Tokens: ${tokenCount} ${isExact ? '(exact)' : '(estimated ±6%)'}`);
|
|
574
|
-
```
|
|
575
|
-
|
|
576
|
-
## Empirical Validation Plan (Future Work)
|
|
577
|
-
|
|
578
|
-
**Status**: Deferred to v0.4.0+ - too early for comprehensive benchmarking
|
|
579
|
-
|
|
580
|
-
**The Problem**: Current thresholds (2K/3.5K/5K tokens) are hypotheses based on research, not validated on LeanSpec's actual use case.
|
|
581
|
-
|
|
582
|
-
**The Challenge**: Building a proper benchmark suite requires:
|
|
583
|
-
- Clear methodology for LLM integration and evaluation
|
|
584
|
-
- Significant time investment for framework + test data
|
|
585
|
-
- Real-world usage patterns from v0.3.0 to guide validation
|
|
586
|
-
- Resources for running benchmarks across multiple models
|
|
587
|
-
|
|
588
|
-
**The Pragmatic Approach**:
|
|
589
|
-
1. **v0.3.0**: Ship complexity scoring with research-based thresholds (good enough to start)
|
|
590
|
-
2. **Collect data**: Gather real-world usage patterns, see which specs trigger warnings
|
|
591
|
-
3. **v0.4.0+**: Build benchmark framework when we have clearer requirements
|
|
592
|
-
|
|
593
|
-
**Validation Framework Stub** (see `src/benchmark/` for implementation):
|
|
594
|
-
- Type definitions and interfaces ready
|
|
595
|
-
- Complexity analysis functions implemented
|
|
596
|
-
- Benchmark task examples defined
|
|
597
|
-
- LLM integration and statistical analysis deferred
|
|
598
|
-
|
|
599
|
-
**When ready to validate**, the framework will answer:
|
|
600
|
-
- Does token count predict performance better than line count?
|
|
601
|
-
- Where does degradation actually start? (2K? 3K? 5K?)
|
|
602
|
-
- How much do sub-specs improve AI comprehension?
|
|
603
|
-
- What's the real cost multiplier for large specs?
|
|
604
|
-
|
|
605
|
-
**For now**: Use hypothesis thresholds, document them as such, refine based on user feedback in v0.3.0.
|
|
606
|
-
|
|
607
|
-
## Open Questions
|
|
608
|
-
|
|
609
|
-
1. **Token Thresholds**: Are 2K/3.5K/5K correct?
|
|
610
|
-
- **Current**: Using research-based hypotheses
|
|
611
|
-
- **To validate (v0.4.0+)**: Run benchmark suite when methodology is clear
|
|
612
|
-
- **For now**: Gather user feedback in v0.3.0, adjust if obviously wrong
|
|
613
|
-
|
|
614
|
-
2. **Structure Impact**: How much does it matter?
|
|
615
|
-
- **Current**: -30 bonus for sub-specs, -15 for good sectioning
|
|
616
|
-
- **To validate (v0.4.0+)**: Compare monolithic vs sub-spec variants
|
|
617
|
-
- **For now**: Based on cognitive science (7±2 chunks) and intuition
|
|
618
|
-
|
|
619
|
-
3. **Section Count Sweet Spot**: Is 15-35 sections right?
|
|
620
|
-
- **Current**: Based on cognitive load theory
|
|
621
|
-
- **To validate (v0.4.0+)**: Test specs with varying section counts
|
|
622
|
-
- **For now**: Seems reasonable, may adjust based on user feedback
|
|
623
|
-
|
|
624
|
-
4. **Model Differences**: Do thresholds vary by model?
|
|
625
|
-
- **Current**: Assume similar across Claude/GPT
|
|
626
|
-
- **To validate (v0.4.0+)**: Test multiple models if data shows divergence
|
|
627
|
-
- **For now**: Single set of thresholds
|
|
628
|
-
|
|
629
|
-
5. **Performance**: Can we run this efficiently?
|
|
630
|
-
- **Current**: tokenx is very fast (2kB, no dependencies)
|
|
631
|
-
- **To benchmark**: Test on 100+ specs to verify <100ms per spec
|
|
632
|
-
- **For now**: Should be fine, optimize if issues arise
|
|
633
|
-
|
|
634
|
-
## Success Criteria
|
|
635
|
-
|
|
636
|
-
### Phase 2-4: Initial Implementation (v0.3.0)
|
|
637
|
-
- ✅ Spec 059 (394 lines, 6 sub-specs) scores well (≤25 points)
|
|
638
|
-
- ✅ Poorly structured specs flagged even if short
|
|
639
|
-
- ✅ Users understand WHY a spec is complex (clear breakdown)
|
|
640
|
-
- ✅ Validation guides toward better structure, not just length reduction
|
|
641
|
-
- ✅ AI agents make informed splitting decisions based on token count + structure
|
|
642
|
-
- ✅ No false negatives: Truly oversized specs (>600 lines) caught
|
|
643
|
-
- ✅ Thresholds documented as hypotheses, not validated facts
|
|
644
|
-
|
|
645
|
-
### Phase 5: Empirical Validation (v0.4.0+ - When Ready)
|
|
646
|
-
- ✅ Token count predicts performance better than line count (R² > 0.7 vs < 0.5)
|
|
647
|
-
- ✅ Degradation thresholds validated within ±500 tokens of hypothesis
|
|
648
|
-
- ✅ Sub-specs show measurable quality improvement (>5% accuracy)
|
|
649
|
-
- ✅ Cost multiplier validated against actual API usage
|
|
650
|
-
- ✅ Multi-turn degradation measured and documented
|
|
651
|
-
|
|
652
|
-
### User Experience (All Phases)
|
|
653
|
-
- ✅ Complexity scores align with user intuition
|
|
654
|
-
- ✅ Suggestions are actionable and specific
|
|
655
|
-
- ✅ AGENTS.md reflects current best practices (hypothesis-based for v0.3.0)
|
|
656
|
-
|
|
657
|
-
## Related Specs
|
|
658
|
-
|
|
659
|
-
- **[048-spec-complexity-analysis](../048-spec-complexity-analysis/)** - Identified line count thresholds
|
|
660
|
-
- **[049-leanspec-first-principles](../049-leanspec-first-principles/)** - Context Economy principle
|
|
661
|
-
- **[059-programmatic-spec-management](../059-programmatic-spec-management/)** - Context engineering and programmatic analysis
|
|
662
|
-
- **[018-spec-validation](../018-spec-validation/)** - Current validation framework
|
|
663
|
-
|
|
664
|
-
## Notes
|
|
665
|
-
|
|
666
|
-
### Why This Matters
|
|
667
|
-
|
|
668
|
-
**Current Problem**: False positives and false negatives
|
|
669
|
-
- We're warning about well-structured 394-line specs (false positive)
|
|
670
|
-
- We're missing dense 280-line specs with poor structure (false negative)
|
|
671
|
-
|
|
672
|
-
**Impact**:
|
|
673
|
-
- Users may ignore warnings if they seem arbitrary
|
|
674
|
-
- AI agents get confused about when to split
|
|
675
|
-
- We're not measuring what we actually care about (readability, not just length)
|
|
676
|
-
|
|
677
|
-
**Solution**: Measure complexity more holistically
|
|
678
|
-
- Line count remains important but not sufficient
|
|
679
|
-
- Structure, density, and progressive disclosure matter
|
|
680
|
-
- Give users actionable feedback
|
|
681
|
-
|
|
682
|
-
### The Meta-Learning
|
|
683
|
-
|
|
684
|
-
This spec itself demonstrates the principle:
|
|
685
|
-
- 410 lines, ~2,200 tokens (includes code examples)
|
|
686
|
-
- Well-structured with clear sections (28 sections)
|
|
687
|
-
- Each section is scannable and focused
|
|
688
|
-
- Tables and lists make information easy to parse
|
|
689
|
-
- References research with clear citations
|
|
690
|
-
|
|
691
|
-
**Applying the simplified scoring to this spec:**
|
|
692
|
-
- Token score: 20 (~2,200 tokens, in good range)
|
|
693
|
-
- Structure modifier: -15 (28 sections, good chunking, no sub-specs)
|
|
694
|
-
- **Total: 5 points** → ✅ Good | Cost: 1.8x | AI: 90%
|
|
695
|
-
|
|
696
|
-
**Insight**: Well-structured with clear sections. Could benefit from sub-specs for benchmark details (would get -30 modifier).
|
|
697
|
-
|
|
698
|
-
Using old rules: "🔴 Error: 410/400 lines - must split!"
|
|
699
|
-
Using new rules: "✅ Good: Score 5/100 - well-structured, token count acceptable, consider sub-specs to reach 'excellent'"
|
|
700
|
-
|
|
701
|
-
---
|
|
702
|
-
|
|
703
|
-
## Implementation Status (2025-11-11)
|
|
704
|
-
|
|
705
|
-
### ✅ What's Done
|
|
706
|
-
|
|
707
|
-
**Core Implementation Exists**:
|
|
708
|
-
- `ComplexityValidator` class implemented in `packages/core/src/validators/complexity.ts`
|
|
709
|
-
- Token estimation using `tokenx` package (installed and working)
|
|
710
|
-
- Multi-dimensional scoring algorithm implemented
|
|
711
|
-
- Registered in validation pipeline (`packages/cli/src/commands/validate.ts`)
|
|
712
|
-
- All token thresholds and structure modifiers coded as designed
|
|
713
|
-
|
|
714
|
-
**Build Status**:
|
|
715
|
-
- `@leanspec/core` package builds successfully
|
|
716
|
-
- `@leanspec/cli` package builds successfully
|
|
717
|
-
- `tokenx` dependency properly installed
|
|
718
|
-
|
|
719
|
-
### 🐛 Issues Found
|
|
720
|
-
|
|
721
|
-
**1. Sub-Spec Detection Bug (Critical)**
|
|
722
|
-
- **Problem**: `hasSubSpecs` detected by text pattern matching, not actual file existence
|
|
723
|
-
- **Current Code**: `/\b(DESIGN|IMPLEMENTATION|TESTING|CONFIGURATION|API|MIGRATION)\.md\b/.test(content)`
|
|
724
|
-
- **Issue**: Spec 066 mentions "DESIGN.md" in documentation → gets -30 bonus it doesn't deserve
|
|
725
|
-
- **Impact**: False negatives - specs get structure bonuses for merely documenting sub-specs
|
|
726
|
-
|
|
727
|
-
**2. Silent Warning Issue**
|
|
728
|
-
- **Problem**: Complexity validator produces no output even when it should warn
|
|
729
|
-
- **Actual Score for Spec 066**:
|
|
730
|
-
- 706 lines
|
|
731
|
-
- **7,307 tokens** (very high, >5000 threshold)
|
|
732
|
-
- 45 sections
|
|
733
|
-
- Token score: 60
|
|
734
|
-
- Structure modifier: -30 (false positive due to bug #1)
|
|
735
|
-
- Final score: 30 → "review" recommendation (should show warning)
|
|
736
|
-
- **Expected**: Warning message displayed
|
|
737
|
-
- **Actual**: No output from complexity validator
|
|
738
|
-
- **Hypothesis**: Warning not being formatted/displayed (need to debug formatter or result handling)
|
|
739
|
-
|
|
740
|
-
**3. Old Line Count Validator Still Active**
|
|
741
|
-
- **Current Behavior**: Shows "Error: Spec exceeds 400 lines (706 lines)"
|
|
742
|
-
- **Expected**: Complexity validator should be primary, line count as backstop
|
|
743
|
-
- **Decision Needed**: Should old validator be:
|
|
744
|
-
- Disabled entirely?
|
|
745
|
-
- Adjusted to only warn at 500+ lines?
|
|
746
|
-
- Kept as-is for redundancy?
|
|
747
|
-
|
|
748
|
-
### 🔧 Fixes Needed for Next Session
|
|
749
|
-
|
|
750
|
-
**Priority 1: Fix Sub-Spec Detection**
|
|
751
|
-
```typescript
|
|
752
|
-
// Current (WRONG):
|
|
753
|
-
const hasSubSpecs = /\b(DESIGN|IMPLEMENTATION|TESTING|CONFIGURATION|API|MIGRATION)\.md\b/.test(content);
|
|
754
|
-
|
|
755
|
-
// Should be (need to check actual files):
|
|
756
|
-
// Option A: Pass file list to validator
|
|
757
|
-
const hasSubSpecs = subSpecFiles.length > 0;
|
|
758
|
-
|
|
759
|
-
// Option B: Check spec directory for .md files (requires fs access)
|
|
760
|
-
const files = await fs.readdir(path.dirname(spec.filePath));
|
|
761
|
-
const mdFiles = files.filter(f => f.endsWith('.md') && f !== 'README.md');
|
|
762
|
-
const hasSubSpecs = mdFiles.length > 0;
|
|
763
|
-
```
|
|
764
|
-
|
|
765
|
-
**Location**: `packages/core/src/validators/complexity.ts`, line ~160
|
|
766
|
-
|
|
767
|
-
**Priority 2: Debug Silent Warning**
|
|
768
|
-
- Add logging to see if validator is running and producing results
|
|
769
|
-
- Check if `ValidationResult` with warnings is being filtered out
|
|
770
|
-
- Verify formatter (`validate-formatter.ts`) handles complexity validator output
|
|
771
|
-
- Test with simpler spec to isolate issue
|
|
772
|
-
|
|
773
|
-
**Priority 3: Coordinate Line Count Validator**
|
|
774
|
-
- Decide on line count validator role (keep, adjust, or remove)
|
|
775
|
-
- Update thresholds if keeping (suggest 500/600 instead of 300/400)
|
|
776
|
-
- Document relationship between validators in code comments
|
|
777
|
-
|
|
778
|
-
### 📊 Test Cases for Validation
|
|
779
|
-
|
|
780
|
-
**Test with Spec 066** (this spec):
|
|
781
|
-
- Expected: Score 60 (no sub-specs) → "split" recommendation → ERROR
|
|
782
|
-
- Currently: Score 30 (false bonus) → "review" → WARNING (but silent)
|
|
783
|
-
|
|
784
|
-
**Test with Spec 049** (has 5 sub-specs):
|
|
785
|
-
- 374 lines, ~1,700 tokens, 38 sections, 5 sub-spec files
|
|
786
|
-
- Expected: Score -30 → "excellent" → PASS
|
|
787
|
-
- Should verify this works correctly
|
|
788
|
-
|
|
789
|
-
**Test with Spec 059** (has 6 sub-specs):
|
|
790
|
-
- 394 lines, ~2,100 tokens, 32 sections, 6 sub-spec files
|
|
791
|
-
- Expected: Score -10 → "excellent" → PASS
|
|
792
|
-
- Should verify this works correctly
|
|
793
|
-
|
|
794
|
-
### 🎯 Next Steps
|
|
795
|
-
|
|
796
|
-
1. **Fix sub-spec detection** (30 min):
|
|
797
|
-
- Modify `analyzeComplexity()` to check actual files
|
|
798
|
-
- May need to pass spec path or file list to validator
|
|
799
|
-
- Update tests to verify correct detection
|
|
800
|
-
|
|
801
|
-
2. **Debug warning output** (20 min):
|
|
802
|
-
- Add temporary console.log in validator
|
|
803
|
-
- Rebuild and test
|
|
804
|
-
- Check if result is being produced but not displayed
|
|
805
|
-
|
|
806
|
-
3. **Verify full pipeline** (10 min):
|
|
807
|
-
- Run validation on multiple specs
|
|
808
|
-
- Confirm token counts and scores match expectations
|
|
809
|
-
- Validate formatter displays all validator results
|
|
810
|
-
|
|
811
|
-
4. **Update line count validator** (10 min):
|
|
812
|
-
- Adjust thresholds to 500/600 or disable
|
|
813
|
-
- Update messages to reference complexity validator
|
|
814
|
-
- Document as backstop in comments
|
|
815
|
-
|
|
816
|
-
5. **Test and document** (20 min):
|
|
817
|
-
- Validate spec 049, 059, 066 with corrected logic
|
|
818
|
-
- Update AGENTS.md with complexity guidance
|
|
819
|
-
- Mark spec 066 as fully implemented
|
|
820
|
-
|
|
821
|
-
**Estimated Total**: ~90 minutes of focused work
|
|
822
|
-
|
|
823
|
-
### 💡 Design Questions to Resolve
|
|
824
|
-
|
|
825
|
-
1. **File Detection Approach**: Should we:
|
|
826
|
-
- A) Pass file list to validator (cleaner, requires API change)
|
|
827
|
-
- B) Let validator read directory (simpler, but core needs fs access)
|
|
828
|
-
- C) Pre-compute in CLI and pass as metadata (best separation of concerns)
|
|
829
|
-
|
|
830
|
-
2. **Line Count Validator**: Should we:
|
|
831
|
-
- A) Remove it (complexity validator handles everything)
|
|
832
|
-
- B) Keep with raised thresholds (500/600) as backstop
|
|
833
|
-
- C) Keep current thresholds for redundancy
|
|
834
|
-
|
|
835
|
-
3. **Sections Outside 15-35 Range**: Currently gives 0 modifier. Should we:
|
|
836
|
-
- A) Keep as-is (only penalize <8 sections)
|
|
837
|
-
- B) Penalize >35 sections (too fragmented)
|
|
838
|
-
- C) Use sliding scale instead of fixed ranges
|
|
839
|
-
|
|
840
|
-
---
|
|
841
|
-
|
|
842
|
-
**Status**: Implementation exists but has bugs. Ready for debugging and fixing in next session.
|