@leanspec/ui 0.2.7-dev.20251128020042 → 0.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
- package/.next/standalone/packages/ui/.next/BUILD_ID +1 -1
- package/.next/standalone/packages/ui/.next/app-path-routes-manifest.json +2 -0
- package/.next/standalone/packages/ui/.next/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/prerender-manifest.json +3 -3
- package/.next/standalone/packages/ui/.next/required-server-files.json +4 -4
- package/.next/standalone/packages/ui/.next/routes-manifest.json +12 -0
- 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.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js.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 +6 -6
- package/.next/standalone/packages/ui/.next/server/app/api/context/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/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]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js.nft.json +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.nft.json +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/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page/build-manifest.json +18 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page/next-font-manifest.json +6 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page.js +19 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page_client-reference-manifest.js +2 -0
- 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]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js.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/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 +12 -12
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +12 -12
- 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 +3 -3
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/stats/page.js.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 +2 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3559376c._.js +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__65667b70._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__803d07f0._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__84cdc14a._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8a9ab1a3._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__bdc3963a._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f5c6d6b8._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui__next-internal_server_app_api_context_route_actions_dead6daa.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__12b4eb41._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__69a0d63a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__6e739186._.js +7 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a4c56419._.js +7 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b6632d78._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__daee3355._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__ead1539c._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_000dd317._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_0f9ffe32._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_28fe1532._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_315f3b3a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_959ad3d8._.js +4 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_9dcf102b._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_497c8b73._.js → _b397e94a._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_8272a49c._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui__next-internal_server_app_context_page_actions_1a062d48.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_context_context-client_tsx_4ba99a62._.js +12 -0
- 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_specs-nav-sidebar_tsx_8237ed13._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/pages/404.html +2 -2
- package/.next/standalone/packages/ui/.next/server/pages/500.html +2 -2
- package/.next/standalone/packages/ui/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/1eb8283995f370c6.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/336e8e8fc6b0fba8.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/37a1236ed50645a6.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/9d84ba08a41145ec.js +5 -0
- package/.next/standalone/packages/ui/.next/static/chunks/c4b1faff3361a749.js +1 -0
- package/.next/{static/chunks/294dea6dbec43ca6.js → standalone/packages/ui/.next/static/chunks/d7420d2a867e57b5.js} +1 -1
- package/.next/{static/chunks/cca4441cde342ae3.js → standalone/packages/ui/.next/static/chunks/dae403679aae65f4.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/efded9da04c960d8.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f382932f1a5d6359.js +10 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f43b6e43b4da1a32.css +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f6dd06e6d22d2d12.js +3 -0
- package/.next/standalone/packages/ui/dist/BUILD_ID +1 -0
- package/.next/standalone/packages/ui/dist/public/f864aa7e7061c0600e35cf3d879b27cf.txt +1 -0
- package/.next/standalone/packages/ui/dist/public/favicon.ico +0 -0
- package/.next/standalone/packages/ui/dist/public/file.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/github-mark-white.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/github-mark.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/globe.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/icon.svg +7 -0
- package/.next/standalone/packages/ui/dist/public/logo-dark-bg.svg +17 -0
- package/.next/standalone/packages/ui/dist/public/logo-with-bg.svg +17 -0
- package/.next/standalone/packages/ui/dist/public/logo.svg +17 -0
- package/.next/standalone/packages/ui/dist/public/next.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/vercel.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/window.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/README.md +196 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +75 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +44 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/014-complete-custom-frontmatter/README.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/016-github-action/README.md +317 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/017-vscode-extension/README.md +261 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CLI-DESIGN.md +380 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION-EXAMPLES.md +230 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION.md +285 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/IMPLEMENTATION.md +358 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/README.md +303 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/TESTING.md +368 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/VALIDATION-RULES.md +327 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/024-pattern-aware-list-grouping/README.md +117 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/025-template-config-updates/README.md +73 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/026-init-pattern-selection/README.md +109 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/034-copilot-slash-commands/README.md +107 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/ARCHITECTURE.md +244 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/IMPLEMENTATION.md +429 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/README.md +302 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/036-pm-integrations/README.md +158 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-AI-ASSISTED.md +359 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-FULL-LIFECYCLE.md +86 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-REAL-FEATURE.md +437 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-SCRIPT.md +365 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-FINAL.md +203 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SESSION-2025-11-06.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SUMMARY.md +156 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/IMPLEMENTATION.md +183 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/MARKETING.md +229 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/NEXT-STEPS-DEMO.md +243 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/README.md +217 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/SESSION-2025-11-06.md +166 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/TESTING.md +126 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/ACTUAL-IMPLEMENTATION.md +108 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/DESIGN.md +382 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/IMPLEMENTATION.md +144 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/RATIONALE.md +146 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/README.md +208 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/TESTING.md +182 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/047-git-backfill-timestamps/README.md +314 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/FINDINGS.md +113 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/GUIDELINES.md +237 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/README.md +149 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-COMPARISONS.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-CONSTRAINTS.md +254 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/FIRST-PRINCIPLES.md +376 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-ROADMAP.md +240 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-TOOLS.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/README.md +374 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/051-docs-system-prompt-principles/README.md +339 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/052-branding-assets/README.md +128 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/053-spec-assets-philosophy/README.md +97 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/DESIGN-DECISIONS.md +93 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/OUTPUT-FORMAT-SPEC.md +146 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/README.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART1.md +397 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART2.md +342 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS.md +44 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CHANGES.md +150 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CONCERNS-ANALYSIS.md +351 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/DOCS-ALIGNMENT-ANALYSIS.md +238 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/README.md +280 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-DRAFT.md +372 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-REFINED.md +466 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/AUDIT-RESULTS.md +178 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/README.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/README.md +295 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/VALIDATION-RESULTS.md +487 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/ANALYSIS.md +241 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/DESIGN.md +279 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/IMPLEMENTATION.md +642 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/NOTES.md +125 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/README.md +286 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/ARCHITECTURE.md +392 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/COMMANDS.md +1002 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/CONTEXT-ENGINEERING.md +411 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/IMPLEMENTATION.md +812 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/README.md +504 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/TESTING.md +724 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/060-core-concepts-coherence/README.md +125 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/061-ai-assisted-spec-writing/README.md +299 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/IMPLEMENTATION-PLAN.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PAGE-SPECIFICATIONS.md +265 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PROBLEM-ANALYSIS.md +36 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/README.md +243 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/SOLUTION-DESIGN.md +82 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/DESIGN.md +338 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/EXAMPLES.md +354 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/IMPLEMENTATION.md +189 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/README.md +119 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/064-docs-site-zh-translation/README.md +170 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/065-v03-planning/README.md +158 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/066-context-economy-thresholds-refinement/README.md +842 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/067-monorepo-core-extraction/README.md +358 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/DESIGN.md +444 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/README.md +357 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/069-token-counting-utils/README.md +551 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/070-mcp-token-counting-tool/README.md +372 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/071-simplified-token-validation/README.md +489 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/072-ai-agent-first-use-workflow/README.md +285 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/073-template-engine-agents-md/README.md +323 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/074-content-at-creation/README.md +136 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/075-intelligent-search-engine/README.md +399 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/076-programmatic-spec-relationships/README.md +301 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/077-archiving-strategy/README.md +235 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/078-sub-spec-template-system/README.md +303 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/079-cli-alphabetical-organization/README.md +196 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/080-mcp-server-modular-architecture/README.md +388 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/081-web-app-ux-redesign/README.md +824 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DATABASE.md +111 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DEPLOYMENT.md +69 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/FILESYSTEM.md +77 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/IMPLEMENTATION.md +184 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/README.md +496 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/083-web-navigation-performance/README.md +490 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/084-sub-spec-visibility-in-tools/README.md +389 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/085-cli-relationship-commands/README.md +920 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/086-template-component-deduplication/README.md +146 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/087-cli-ui-command/README.md +607 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +104 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +124 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +129 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +244 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +148 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +54 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/001-typescript-cli-migration/README.md +37 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/002-template-system-redesign/README.md +60 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/003-init-system-redesign/README.md +113 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/README.md +69 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/SUMMARY.md +112 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/005-structured-frontmatter/README.md +229 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/006-pm-visualization-tools/README.md +406 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/007-system-prompt-updates/README.md +168 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/008-commander-migration/README.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/009-cli-ux-enhancement/README.md +212 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/010-commands-refactor/README.md +249 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/README.md +60 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/TEST_SUMMARY.md +139 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/012-sub-spec-files/README.md +722 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/013-custom-spec-templates/README.md +413 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/015-npm-publishing/README.md +255 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/019-readme-improvement/README.md +252 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/020-documentation-website/README.md +253 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/021-docusaurus-vercel-migration/README.md +612 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/022-flexible-folder-structure/README.md +794 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/DESIGN.md +834 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/README.md +255 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/027-cli-ui-ux-optimization/README.md +454 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/028-cli-ui-modernization/README.md +172 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/IMPLEMENTATION.md +152 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/README.md +95 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/030-created-date-format-bug/README.md +87 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/031-gantt-ux-improvements/README.md +230 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/032-console-log-chalk-security/README.md +89 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/033-mcp-server/README.md +89 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/037-docs-overhaul/README.md +166 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-flat-structure-migration/README.md +276 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-mcp-frontmatter-bug-fix/README.md +122 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-simplify-viewer-commands/README.md +198 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-template-variable-sync/README.md +192 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/040-spec-viewer-commands/README.md +171 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/042-mcp-error-handling/README.md +200 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/044-spec-relationships-clarity/README.md +317 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/DESIGN.md +276 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/IMPLEMENTATION.md +241 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/README.md +139 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/TESTING.md +328 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/050-tool-redesign-first-principles/README.md +400 -0
- package/.next/standalone/packages/ui/dist/static/chunks/0c19c69aa7625475.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/116800b03245a1e5.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/15843a3d7584e314.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/19e80edf527aef5c.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/465954d5af3284a9.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/5abeeb89f1412a80.js +3 -0
- package/.next/standalone/packages/ui/dist/static/chunks/5c2072ad938de8ed.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/6a05a93ec8fa7b83.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/778e42188e450b39.css +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/a02c1f50ff00204f.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/a45464b9776dd88e.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/a6dad97d9634a72d.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/b0ea0ac61604f843.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/c06e85b449720194.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/c557ac675be79771.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/cad005a57ffbb2d3.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/cdf6fe33bc65efbc.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/d12ed5dbe44caed7.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/d1ebe5c1a344f4ca.js +5 -0
- package/.next/standalone/packages/ui/dist/static/chunks/d42cf1682bc46652.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/dde5d8bddd7fbfcf.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/ebd89051637b9a47.js +4 -0
- package/.next/standalone/packages/ui/dist/static/chunks/ec82875d18b29f47.js +2 -0
- package/.next/standalone/packages/ui/dist/static/chunks/f0b701df9769bcc5.js +19 -0
- package/.next/standalone/packages/ui/dist/static/chunks/turbopack-1c09a99f4c9e28d3.js +3 -0
- package/.next/standalone/packages/ui/package.json +2 -1
- package/.next/standalone/packages/ui/server.js +1 -1
- package/.next/standalone/packages/ui/src/app/api/context/route.ts +22 -0
- package/.next/standalone/packages/ui/src/app/context/context-client.tsx +371 -0
- package/.next/standalone/packages/ui/src/app/context/page.tsx +17 -0
- package/.next/standalone/packages/ui/src/app/globals.css +16 -16
- package/.next/standalone/packages/ui/src/app/layout.tsx +1 -7
- package/.next/standalone/packages/ui/src/components/context-file-viewer.tsx +291 -0
- package/.next/standalone/packages/ui/src/components/main-sidebar.tsx +10 -1
- package/.next/standalone/packages/ui/src/components/spec-detail-client.tsx +181 -134
- package/.next/standalone/packages/ui/src/components/spec-detail-wrapper.tsx +20 -0
- package/.next/standalone/packages/ui/src/components/specs-nav-sidebar.tsx +3 -2
- package/.next/standalone/packages/ui/src/components/ui/accordion.tsx +58 -0
- package/.next/standalone/packages/ui/src/lib/db/service-queries.ts +172 -3
- package/.next/standalone/packages/ui/src/lib/specs/types.ts +44 -0
- package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_buildManifest.js +11 -0
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_clientMiddlewareManifest.json +1 -0
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_ssgManifest.js +1 -0
- package/.next/static/chunks/1eb8283995f370c6.js +1 -0
- package/.next/static/chunks/336e8e8fc6b0fba8.js +1 -0
- package/.next/static/chunks/37a1236ed50645a6.js +1 -0
- package/.next/static/chunks/9d84ba08a41145ec.js +5 -0
- package/.next/static/chunks/c4b1faff3361a749.js +1 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/294dea6dbec43ca6.js → static/chunks/d7420d2a867e57b5.js} +1 -1
- package/.next/{standalone/packages/ui/.next/static/chunks/cca4441cde342ae3.js → static/chunks/dae403679aae65f4.js} +1 -1
- package/.next/static/chunks/efded9da04c960d8.js +1 -0
- package/.next/static/chunks/f382932f1a5d6359.js +10 -0
- package/.next/static/chunks/f43b6e43b4da1a32.css +1 -0
- package/.next/static/chunks/f6dd06e6d22d2d12.js +3 -0
- package/package.json +3 -2
- package/.next/standalone/node_modules/.pnpm/source-map@0.8.0-beta.0/node_modules/source-map/package.json +0 -95
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__1d0c2012._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__73f60f12._.js +0 -7
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a7ae8552._.js +0 -7
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_14118969._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_4129cc0f._.js +0 -3
- package/.next/standalone/packages/ui/.next/static/chunks/16ff9833ae1bb3ae.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/7590e65bcaa41e8b.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/a803d646487dfc2d.js +0 -3
- package/.next/standalone/packages/ui/.next/static/chunks/b6976cf6c48996e5.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/b845813463167db0.js +0 -5
- package/.next/standalone/packages/ui/.next/static/chunks/bd9893e28f8f6a9a.css +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/d784d84d5b880e48.js +0 -1
- package/.next/static/chunks/16ff9833ae1bb3ae.js +0 -1
- package/.next/static/chunks/7590e65bcaa41e8b.js +0 -1
- package/.next/static/chunks/a803d646487dfc2d.js +0 -3
- package/.next/static/chunks/b6976cf6c48996e5.js +0 -1
- package/.next/static/chunks/b845813463167db0.js +0 -5
- package/.next/static/chunks/bd9893e28f8f6a9a.css +0 -1
- package/.next/static/chunks/d784d84d5b880e48.js +0 -1
- /package/.next/standalone/packages/ui/.next/static/{RV93_WHoymRJ5886d_ry8 → -Mn9iD4O5f_khGd1P3kmB}/_buildManifest.js +0 -0
- /package/.next/standalone/packages/ui/.next/static/{RV93_WHoymRJ5886d_ry8 → -Mn9iD4O5f_khGd1P3kmB}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{RV93_WHoymRJ5886d_ry8 → -Mn9iD4O5f_khGd1P3kmB}/_ssgManifest.js +0 -0
- /package/.next/{static/RV93_WHoymRJ5886d_ry8 → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_buildManifest.js +0 -0
- /package/.next/{static/RV93_WHoymRJ5886d_ry8 → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_clientMiddlewareManifest.json +0 -0
- /package/.next/{static/RV93_WHoymRJ5886d_ry8 → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_ssgManifest.js +0 -0
package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION.md
ADDED
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
# Configuration
|
|
2
|
+
|
|
3
|
+
Configuration options for the `lean-spec validate` command.
|
|
4
|
+
|
|
5
|
+
> See [CONFIGURATION-EXAMPLES.md](./CONFIGURATION-EXAMPLES.md) for practical examples
|
|
6
|
+
|
|
7
|
+
## Configuration File
|
|
8
|
+
|
|
9
|
+
Configuration is stored in `.lean-spec/config.json`:
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
{
|
|
13
|
+
"validate": {
|
|
14
|
+
"mode": "comprehensive",
|
|
15
|
+
"rules": { /* rule configuration */ }
|
|
16
|
+
},
|
|
17
|
+
"ignorePaths": ["archived/**"]
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Complete Schema
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"validate": {
|
|
26
|
+
"mode": "comprehensive",
|
|
27
|
+
"autoValidate": false,
|
|
28
|
+
"rules": {
|
|
29
|
+
"frontmatter": {
|
|
30
|
+
"required": ["status", "created"],
|
|
31
|
+
"allowedStatus": ["planned", "in-progress", "complete", "archived"],
|
|
32
|
+
"allowedPriority": ["low", "medium", "high", "critical"]
|
|
33
|
+
},
|
|
34
|
+
"structure": {
|
|
35
|
+
"requireReadme": true,
|
|
36
|
+
"requiredSections": ["Overview", "Design", "Plan"],
|
|
37
|
+
"forbidEmptySections": true
|
|
38
|
+
},
|
|
39
|
+
"content": {
|
|
40
|
+
"minLength": 100,
|
|
41
|
+
"forbidTodoInComplete": true,
|
|
42
|
+
"validateLinks": true
|
|
43
|
+
},
|
|
44
|
+
"corruption": {
|
|
45
|
+
"detectDuplicateSections": true,
|
|
46
|
+
"validateCodeBlocks": true,
|
|
47
|
+
"validateJsonYaml": true,
|
|
48
|
+
"detectFragments": true
|
|
49
|
+
},
|
|
50
|
+
"staleness": {
|
|
51
|
+
"inProgressMaxDays": 30,
|
|
52
|
+
"noUpdateMaxDays": 90,
|
|
53
|
+
"plannedMaxDays": 60
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"ignorePaths": ["archived/**"]
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Configuration Options
|
|
62
|
+
|
|
63
|
+
### Validation Mode
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"validate": {
|
|
68
|
+
"mode": "comprehensive" // or "quick"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Modes:**
|
|
74
|
+
- `"comprehensive"` - All validations (default)
|
|
75
|
+
- `"quick"` - Basic checks only (faster)
|
|
76
|
+
|
|
77
|
+
### Frontmatter Rules
|
|
78
|
+
|
|
79
|
+
```json
|
|
80
|
+
{
|
|
81
|
+
"validate": {
|
|
82
|
+
"rules": {
|
|
83
|
+
"frontmatter": {
|
|
84
|
+
"required": ["status", "created"],
|
|
85
|
+
"allowedStatus": ["planned", "in-progress", "complete", "archived"],
|
|
86
|
+
"allowedPriority": ["low", "medium", "high", "critical"]
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Options:**
|
|
94
|
+
- `required` - Required frontmatter fields (array of strings)
|
|
95
|
+
- `allowedStatus` - Valid status values (array of strings)
|
|
96
|
+
- `allowedPriority` - Valid priority values (array of strings)
|
|
97
|
+
|
|
98
|
+
### Structure Rules
|
|
99
|
+
|
|
100
|
+
```json
|
|
101
|
+
{
|
|
102
|
+
"validate": {
|
|
103
|
+
"rules": {
|
|
104
|
+
"structure": {
|
|
105
|
+
"requireReadme": true,
|
|
106
|
+
"requiredSections": ["Overview", "Design", "Plan"],
|
|
107
|
+
"forbidEmptySections": true
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Options:**
|
|
115
|
+
- `requireReadme` - Spec must have README.md (boolean)
|
|
116
|
+
- `requiredSections` - Section headers that must exist (array of strings)
|
|
117
|
+
- `forbidEmptySections` - Empty sections are invalid (boolean)
|
|
118
|
+
|
|
119
|
+
### Content Rules
|
|
120
|
+
|
|
121
|
+
```json
|
|
122
|
+
{
|
|
123
|
+
"validate": {
|
|
124
|
+
"rules": {
|
|
125
|
+
"content": {
|
|
126
|
+
"minLength": 100,
|
|
127
|
+
"forbidTodoInComplete": true,
|
|
128
|
+
"validateLinks": true
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**Options:**
|
|
136
|
+
- `minLength` - Minimum character count (number)
|
|
137
|
+
- `forbidTodoInComplete` - No TODO/FIXME in complete specs (boolean)
|
|
138
|
+
- `validateLinks` - Check internal links are valid (boolean)
|
|
139
|
+
|
|
140
|
+
### Corruption Detection
|
|
141
|
+
|
|
142
|
+
```json
|
|
143
|
+
{
|
|
144
|
+
"validate": {
|
|
145
|
+
"rules": {
|
|
146
|
+
"corruption": {
|
|
147
|
+
"detectDuplicateSections": true,
|
|
148
|
+
"validateCodeBlocks": true,
|
|
149
|
+
"validateJsonYaml": true,
|
|
150
|
+
"detectFragments": true
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Options:**
|
|
158
|
+
- `detectDuplicateSections` - Find duplicate section headers (boolean)
|
|
159
|
+
- `validateCodeBlocks` - Check code blocks are properly closed (boolean)
|
|
160
|
+
- `validateJsonYaml` - Validate JSON/YAML syntax (boolean)
|
|
161
|
+
- `detectFragments` - Find duplicated content fragments (boolean)
|
|
162
|
+
|
|
163
|
+
### Staleness Rules
|
|
164
|
+
|
|
165
|
+
```json
|
|
166
|
+
{
|
|
167
|
+
"validate": {
|
|
168
|
+
"rules": {
|
|
169
|
+
"staleness": {
|
|
170
|
+
"inProgressMaxDays": 30,
|
|
171
|
+
"noUpdateMaxDays": 90,
|
|
172
|
+
"plannedMaxDays": 60
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**Options:**
|
|
180
|
+
- `inProgressMaxDays` - Days before warning on in-progress specs (number)
|
|
181
|
+
- `noUpdateMaxDays` - Days before warning on stale specs (number)
|
|
182
|
+
- `plannedMaxDays` - Days before warning on old planned specs (number)
|
|
183
|
+
|
|
184
|
+
## Ignore Paths
|
|
185
|
+
|
|
186
|
+
```json
|
|
187
|
+
{
|
|
188
|
+
"ignorePaths": [
|
|
189
|
+
"archived/**",
|
|
190
|
+
"experiments/**",
|
|
191
|
+
"drafts/**"
|
|
192
|
+
]
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Glob patterns to exclude from validation:
|
|
197
|
+
- `archived/**` - Ignore all archived specs
|
|
198
|
+
- `**/OLD_*.md` - Ignore files starting with OLD_
|
|
199
|
+
- `experiments/` - Ignore entire directory
|
|
200
|
+
|
|
201
|
+
## Configuration Precedence
|
|
202
|
+
|
|
203
|
+
1. **Command-line flags** (highest priority)
|
|
204
|
+
2. **Project config** (`.lean-spec/config.json`)
|
|
205
|
+
3. **Built-in defaults** (lowest priority)
|
|
206
|
+
|
|
207
|
+
Example:
|
|
208
|
+
```bash
|
|
209
|
+
# CLI flag overrides config
|
|
210
|
+
lean-spec validate --mode quick
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
## Default Configuration
|
|
214
|
+
|
|
215
|
+
If no configuration file exists:
|
|
216
|
+
|
|
217
|
+
```json
|
|
218
|
+
{
|
|
219
|
+
"validate": {
|
|
220
|
+
"mode": "comprehensive",
|
|
221
|
+
"autoValidate": false,
|
|
222
|
+
"rules": {
|
|
223
|
+
"frontmatter": {
|
|
224
|
+
"required": ["status", "created"],
|
|
225
|
+
"allowedStatus": ["planned", "in-progress", "complete", "archived"]
|
|
226
|
+
},
|
|
227
|
+
"structure": {
|
|
228
|
+
"requireReadme": true,
|
|
229
|
+
"requiredSections": [],
|
|
230
|
+
"forbidEmptySections": false
|
|
231
|
+
},
|
|
232
|
+
"content": {
|
|
233
|
+
"minLength": 0,
|
|
234
|
+
"forbidTodoInComplete": false,
|
|
235
|
+
"validateLinks": false
|
|
236
|
+
},
|
|
237
|
+
"corruption": {
|
|
238
|
+
"detectDuplicateSections": true,
|
|
239
|
+
"validateCodeBlocks": true,
|
|
240
|
+
"validateJsonYaml": false,
|
|
241
|
+
"detectFragments": false
|
|
242
|
+
},
|
|
243
|
+
"staleness": {
|
|
244
|
+
"inProgressMaxDays": 90,
|
|
245
|
+
"noUpdateMaxDays": 180,
|
|
246
|
+
"plannedMaxDays": 120
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
},
|
|
250
|
+
"ignorePaths": []
|
|
251
|
+
}
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
## Quick Reference
|
|
255
|
+
|
|
256
|
+
### Common Configurations
|
|
257
|
+
|
|
258
|
+
**Strict (CI/CD):**
|
|
259
|
+
```json
|
|
260
|
+
{
|
|
261
|
+
"validate": {
|
|
262
|
+
"mode": "comprehensive",
|
|
263
|
+
"rules": {
|
|
264
|
+
"content": { "minLength": 200, "forbidTodoInComplete": true },
|
|
265
|
+
"structure": { "forbidEmptySections": true },
|
|
266
|
+
"staleness": { "inProgressMaxDays": 14 }
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
**Relaxed (Development):**
|
|
273
|
+
```json
|
|
274
|
+
{
|
|
275
|
+
"validate": {
|
|
276
|
+
"mode": "quick",
|
|
277
|
+
"rules": {
|
|
278
|
+
"content": { "minLength": 50 },
|
|
279
|
+
"staleness": { "inProgressMaxDays": 90 }
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
See [CONFIGURATION-EXAMPLES.md](./CONFIGURATION-EXAMPLES.md) for more examples.
|
package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/IMPLEMENTATION.md
ADDED
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
# Implementation Plan
|
|
2
|
+
|
|
3
|
+
8-phase implementation plan for the `lean-spec validate` command.
|
|
4
|
+
|
|
5
|
+
**Note:** This spec originally proposed expanding `lean-spec check`, but the implementation created `lean-spec validate` as a separate command to keep sequence checking and quality validation as separate concerns.
|
|
6
|
+
|
|
7
|
+
## Status
|
|
8
|
+
|
|
9
|
+
**Overall Status:** ✅ COMPLETE for v0.2.0 - Core validation (Phases 1-3.5) shipped
|
|
10
|
+
|
|
11
|
+
**Priority:** CRITICAL - Quality gates and spec corruption prevention
|
|
12
|
+
|
|
13
|
+
**v0.2.0 Delivered:** Core validation working, finding real issues, 370+ tests passing.
|
|
14
|
+
|
|
15
|
+
## Phase 1a: Basic Validation Framework (✅ COMPLETE)
|
|
16
|
+
|
|
17
|
+
**Goal:** Create modular framework for validation rules
|
|
18
|
+
|
|
19
|
+
**Completed Tasks:**
|
|
20
|
+
- [x] Created validation framework architecture
|
|
21
|
+
- [x] Implemented `ValidationRule` interface
|
|
22
|
+
- [x] Created `LineCountValidator` with warning/error thresholds
|
|
23
|
+
- [x] Implemented `lean-spec validate` command with `--max-lines` flag
|
|
24
|
+
- [x] Added integration tests
|
|
25
|
+
- [x] Documented in README
|
|
26
|
+
|
|
27
|
+
**Notes:**
|
|
28
|
+
- Built as separate `validate` command (not expansion of `check`)
|
|
29
|
+
- Framework allows easy addition of new validators
|
|
30
|
+
- Already in production use
|
|
31
|
+
|
|
32
|
+
**Phase Completed:** November 2025
|
|
33
|
+
|
|
34
|
+
## Phase 1b: Frontmatter Validation (✅ COMPLETE)
|
|
35
|
+
|
|
36
|
+
**Goal:** Validate spec frontmatter for required fields and valid values
|
|
37
|
+
|
|
38
|
+
**Completed Tasks:**
|
|
39
|
+
- [x] Create frontmatter validator module (`src/validators/frontmatter.ts`)
|
|
40
|
+
- [x] Validate required fields present (status, created)
|
|
41
|
+
- [x] Validate status values (planned, in-progress, complete, archived)
|
|
42
|
+
- [x] Validate priority values (low, medium, high, critical)
|
|
43
|
+
- [x] Validate date formats (ISO 8601: YYYY-MM-DD or full timestamp)
|
|
44
|
+
- [x] Validate tags format (must be array)
|
|
45
|
+
- [x] Add comprehensive unit tests (27 tests passing)
|
|
46
|
+
- [x] Integrate with `lean-spec validate` command
|
|
47
|
+
- [ ] Validate custom fields (if defined in config) - deferred to future phase
|
|
48
|
+
- [ ] Add `--frontmatter` flag for selective validation - deferred to future phase
|
|
49
|
+
|
|
50
|
+
**Notes:**
|
|
51
|
+
- Most critical for catching common mistakes ✓
|
|
52
|
+
- Enables comprehensive pre-commit hooks ✓
|
|
53
|
+
- Prevents invalid specs from being created ✓
|
|
54
|
+
- Pragmatic approach: coerces types where reasonable
|
|
55
|
+
- Clear error messages with actionable suggestions
|
|
56
|
+
- Tested against real repository specs: all passing
|
|
57
|
+
|
|
58
|
+
**Phase Completed:** November 2025
|
|
59
|
+
|
|
60
|
+
**Actual Effort:** 1 day (ahead of 2-day estimate)
|
|
61
|
+
|
|
62
|
+
## Phase 2: Structure Validation (✅ COMPLETE)
|
|
63
|
+
|
|
64
|
+
**Goal:** Ensure specs follow structural conventions
|
|
65
|
+
|
|
66
|
+
**Completed Tasks:**
|
|
67
|
+
- [x] Create structure validator module (`src/validators/structure.ts`)
|
|
68
|
+
- [x] Validate YAML frontmatter syntax
|
|
69
|
+
- [x] Check for title (H1 heading)
|
|
70
|
+
- [x] Validate required sections present (Overview, Design)
|
|
71
|
+
- [x] Check for empty sections (with proper subsection handling)
|
|
72
|
+
- [x] Detect duplicate section headers
|
|
73
|
+
- [x] Add comprehensive unit tests (17 tests passing)
|
|
74
|
+
- [x] Integrate with `lean-spec validate` command
|
|
75
|
+
- [x] Test against real repository specs
|
|
76
|
+
|
|
77
|
+
**Notes:**
|
|
78
|
+
- Ensures spec consistency across team ✓
|
|
79
|
+
- Template-specific validation rules (configurable)
|
|
80
|
+
- Properly handles sections with subsections (doesn't flag as empty)
|
|
81
|
+
- Found 2 real issues in repository (duplicate headers in specs 048, 049)
|
|
82
|
+
|
|
83
|
+
**Phase Completed:** November 2025
|
|
84
|
+
|
|
85
|
+
**Actual Effort:** 0.5 days (ahead of 2-day estimate)
|
|
86
|
+
|
|
87
|
+
## Phase 3: Corruption Detection (✅ COMPLETE)
|
|
88
|
+
|
|
89
|
+
**Goal:** Detect file corruption from failed edits
|
|
90
|
+
|
|
91
|
+
**Completed Tasks:**
|
|
92
|
+
- [x] Create corruption detector module (`src/validators/corruption.ts`)
|
|
93
|
+
- [x] Detect duplicate sections at same level (delegated to structure validator)
|
|
94
|
+
- [x] Validate code blocks are properly closed
|
|
95
|
+
- [x] Check JSON/YAML blocks are complete and parseable
|
|
96
|
+
- [x] Detect content fragments (partial duplicates / merge artifacts)
|
|
97
|
+
- [x] Validate markdown structure (unclosed formatting)
|
|
98
|
+
- [x] Add comprehensive unit tests (19 tests passing)
|
|
99
|
+
- [x] Integrate with `lean-spec validate` command
|
|
100
|
+
- [x] Test against real repository specs
|
|
101
|
+
|
|
102
|
+
**Notes:**
|
|
103
|
+
- Addresses real pain point we've experienced ✓
|
|
104
|
+
- Runs by default to catch AI edit failures ✓
|
|
105
|
+
- Critical for maintaining spec quality ✓
|
|
106
|
+
- Found 6 real corruption issues in repository:
|
|
107
|
+
- Invalid YAML blocks (specs 044, 045)
|
|
108
|
+
- Unclosed formatting (specs 036, 037, 038, 045, 046)
|
|
109
|
+
|
|
110
|
+
**Phase Completed:** November 2025
|
|
111
|
+
|
|
112
|
+
**Actual Effort:** 1 day (ahead of 3-day estimate)
|
|
113
|
+
|
|
114
|
+
## Phase 3.5: Sub-Spec Validation (✅ COMPLETE)
|
|
115
|
+
|
|
116
|
+
**Goal:** Validate sub-spec files per spec 012 conventions
|
|
117
|
+
|
|
118
|
+
**Completed Tasks:**
|
|
119
|
+
- [x] Create sub-spec validator module (`src/validators/sub-spec.ts`)
|
|
120
|
+
- [x] Check sub-spec naming conventions (uppercase .md files)
|
|
121
|
+
- [x] Validate README.md references all sub-specs
|
|
122
|
+
- [x] Check line counts per sub-spec file (<400 lines)
|
|
123
|
+
- [x] Detect orphaned sub-spec files (not linked from README)
|
|
124
|
+
- [x] Validate cross-document references
|
|
125
|
+
- [x] Add comprehensive unit tests (16 tests passing)
|
|
126
|
+
- [x] Integrate with `lean-spec validate` command
|
|
127
|
+
- [ ] Check for content duplication across sub-specs (deferred - complex analysis)
|
|
128
|
+
|
|
129
|
+
**Notes:**
|
|
130
|
+
- Complements spec 012 (sub-spec files management) ✓
|
|
131
|
+
- Important as teams adopt multi-file specs ✓
|
|
132
|
+
- Enforces Context Economy principle per file ✓
|
|
133
|
+
- Leverages existing `loadSubFiles()` infrastructure ✓
|
|
134
|
+
- Found real issues in repository:
|
|
135
|
+
- spec 049: ANALYSIS.md (428 lines), OPERATIONALIZATION.md (415 lines)
|
|
136
|
+
- spec 018: CONFIGURATION.md (443 lines)
|
|
137
|
+
|
|
138
|
+
**Phase Completed:** November 2025
|
|
139
|
+
|
|
140
|
+
**Actual Effort:** 0.5 days (ahead of 2-day estimate)
|
|
141
|
+
|
|
142
|
+
## Phase 4: Content Validation (OPTIONAL for v0.3.0)
|
|
143
|
+
|
|
144
|
+
**Goal:** Validate spec content quality
|
|
145
|
+
|
|
146
|
+
**Tasks:**
|
|
147
|
+
- [ ] Minimum content length check
|
|
148
|
+
- [ ] Detect TODO/FIXME in complete specs
|
|
149
|
+
- [ ] Validate internal links
|
|
150
|
+
- [ ] Check for placeholder text
|
|
151
|
+
- [ ] Integrate with `lean-spec validate --content` flag
|
|
152
|
+
|
|
153
|
+
**Notes:**
|
|
154
|
+
- Nice to have, can defer to v0.3.0 if time-constrained
|
|
155
|
+
- Lower priority than corruption detection
|
|
156
|
+
- Useful for quality gates
|
|
157
|
+
|
|
158
|
+
**Estimated Effort:** 1-2 days
|
|
159
|
+
|
|
160
|
+
## Phase 5: Staleness Detection (OPTIONAL for v0.3.0)
|
|
161
|
+
|
|
162
|
+
**Goal:** Identify stale or abandoned specs
|
|
163
|
+
|
|
164
|
+
**Tasks:**
|
|
165
|
+
- [ ] Calculate spec age (created date)
|
|
166
|
+
- [ ] Calculate last update (git or file mtime)
|
|
167
|
+
- [ ] Warn on in-progress specs > 30 days
|
|
168
|
+
- [ ] Warn on no updates > 90 days
|
|
169
|
+
- [ ] Warn on planned specs > 60 days
|
|
170
|
+
- [ ] Integrate with `lean-spec validate --staleness` flag
|
|
171
|
+
|
|
172
|
+
**Notes:**
|
|
173
|
+
- Useful for maintenance
|
|
174
|
+
- Lower priority for launch
|
|
175
|
+
- Git integration adds complexity
|
|
176
|
+
|
|
177
|
+
**Estimated Effort:** 2 days
|
|
178
|
+
|
|
179
|
+
## Phase 6: Auto-Fix (OPTIONAL for v0.3.0)
|
|
180
|
+
|
|
181
|
+
**Goal:** Automatically fix common issues
|
|
182
|
+
|
|
183
|
+
**Tasks:**
|
|
184
|
+
- [ ] Implement --fix flag for `lean-spec validate`
|
|
185
|
+
- [ ] Add missing frontmatter fields
|
|
186
|
+
- [ ] Format dates to ISO 8601
|
|
187
|
+
- [ ] Sort frontmatter fields
|
|
188
|
+
- [ ] Update visual badges
|
|
189
|
+
- [ ] Remove duplicate sections
|
|
190
|
+
- [ ] Close unclosed code blocks
|
|
191
|
+
- [ ] Report what was fixed
|
|
192
|
+
|
|
193
|
+
**Notes:**
|
|
194
|
+
- Great UX feature
|
|
195
|
+
- Can defer to post-launch iteration
|
|
196
|
+
- Should be conservative (only fix obvious issues)
|
|
197
|
+
|
|
198
|
+
**Estimated Effort:** 3 days
|
|
199
|
+
|
|
200
|
+
## Phase 8: Integration & Polish
|
|
201
|
+
|
|
202
|
+
**Goal:** Complete feature with docs and tests
|
|
203
|
+
|
|
204
|
+
**Tasks:**
|
|
205
|
+
- [ ] Add tests for all check types
|
|
206
|
+
- [ ] Update README with expanded check command
|
|
207
|
+
- [ ] Update AGENTS.md to mention comprehensive checking
|
|
208
|
+
- [ ] Create pre-commit hook example
|
|
209
|
+
- [ ] Document migration guide for backwards compatibility
|
|
210
|
+
- [ ] Update MCP server to expose new check capabilities
|
|
211
|
+
- [ ] Performance optimization (parallel checking)
|
|
212
|
+
- [ ] Caching for repeated checks
|
|
213
|
+
|
|
214
|
+
**Notes:**
|
|
215
|
+
- Essential for launch
|
|
216
|
+
- Documentation is critical for adoption
|
|
217
|
+
- Performance matters for large projects
|
|
218
|
+
|
|
219
|
+
**Estimated Effort:** 2-3 days
|
|
220
|
+
|
|
221
|
+
## Launch Strategy (2025-11-04)
|
|
222
|
+
|
|
223
|
+
### v0.2.0 Scope
|
|
224
|
+
- **MUST HAVE:** Phases 1-3 (refactored framework + frontmatter + structure validation)
|
|
225
|
+
- **HIGHLY RECOMMENDED:** Phase 3.5 (sub-spec validation - enforces spec 012)
|
|
226
|
+
- **HIGHLY RECOMMENDED:** Phase 4 (corruption detection - addresses real pain point)
|
|
227
|
+
- **SHOULD HAVE:** Phase 7 (auto-fix, at least for corruption issues)
|
|
228
|
+
- **NICE TO HAVE:** Phases 5-6 (content, staleness)
|
|
229
|
+
|
|
230
|
+
### v0.3.0 Scope
|
|
231
|
+
- Complete all remaining phases
|
|
232
|
+
- Roll out comprehensive checking with backwards compatibility
|
|
233
|
+
- Enable by default with config override
|
|
234
|
+
|
|
235
|
+
### Post-v0.3.0
|
|
236
|
+
- Add advanced features based on user feedback
|
|
237
|
+
- Custom validation rules
|
|
238
|
+
- Performance optimizations
|
|
239
|
+
- Additional check types
|
|
240
|
+
|
|
241
|
+
## Total Estimated Effort
|
|
242
|
+
|
|
243
|
+
**Minimum (Phases 1-3.5):** 11-12 days
|
|
244
|
+
**Complete (All phases):** 17-20 days
|
|
245
|
+
|
|
246
|
+
## Dependencies
|
|
247
|
+
|
|
248
|
+
- Existing `check` command (sequence conflicts)
|
|
249
|
+
- Frontmatter parsing infrastructure
|
|
250
|
+
- Spec loading system (with `loadSubFiles()` support)
|
|
251
|
+
- Config system
|
|
252
|
+
- Spec 012 conventions (sub-spec file organization)
|
|
253
|
+
|
|
254
|
+
## Risks & Mitigation
|
|
255
|
+
|
|
256
|
+
**Risk:** Breaking backwards compatibility
|
|
257
|
+
- **Mitigation:** Comprehensive testing, config options, gradual rollout
|
|
258
|
+
|
|
259
|
+
**Risk:** Performance degradation with many checks
|
|
260
|
+
- **Mitigation:** Parallel checking, caching, incremental mode
|
|
261
|
+
|
|
262
|
+
**Risk:** False positives in corruption detection
|
|
263
|
+
- **Mitigation:** Conservative rules, allow configuration
|
|
264
|
+
|
|
265
|
+
**Risk:** Scope creep (too many check types)
|
|
266
|
+
- **Mitigation:** Focus on Phases 1-4 for launch, defer others
|
|
267
|
+
|
|
268
|
+
## Success Metrics
|
|
269
|
+
|
|
270
|
+
- Zero spec corruption incidents after deployment
|
|
271
|
+
- >90% of specs pass validation checks
|
|
272
|
+
- <1s check time for 100 specs
|
|
273
|
+
- Positive user feedback on validation quality
|
|
274
|
+
- Reduced time debugging spec issues
|
|
275
|
+
|
|
276
|
+
## Testing Strategy
|
|
277
|
+
|
|
278
|
+
Each phase includes:
|
|
279
|
+
- Unit tests for validator modules
|
|
280
|
+
- Integration tests with real specs
|
|
281
|
+
- Edge case testing
|
|
282
|
+
- Performance benchmarks
|
|
283
|
+
- Backwards compatibility tests
|
|
284
|
+
|
|
285
|
+
See [TESTING.md](./TESTING.md) for detailed test plan.
|
|
286
|
+
|
|
287
|
+
## Migration Path
|
|
288
|
+
|
|
289
|
+
### For Existing Projects
|
|
290
|
+
|
|
291
|
+
1. **Run initial validation:**
|
|
292
|
+
```bash
|
|
293
|
+
lean-spec validate --max-lines 400
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
2. **Review and fix issues:**
|
|
297
|
+
```bash
|
|
298
|
+
lean-spec validate --fix # When auto-fix is available
|
|
299
|
+
lean-spec validate # Verify fixes
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
3. **Enable in CI:**
|
|
303
|
+
```yaml
|
|
304
|
+
- run: lean-spec validate --strict --format=json
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
4. **Add pre-commit hook:**
|
|
308
|
+
```bash
|
|
309
|
+
lean-spec check # Sequence conflicts
|
|
310
|
+
lean-spec validate # Quality validation
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
### For New Projects
|
|
314
|
+
|
|
315
|
+
- Comprehensive checking enabled by default
|
|
316
|
+
- Use templates with validation hints
|
|
317
|
+
- Pre-commit hooks included
|
|
318
|
+
|
|
319
|
+
## Alternative Approaches Considered
|
|
320
|
+
|
|
321
|
+
### Separate `lean-spec validate` Command
|
|
322
|
+
|
|
323
|
+
**Pros:**
|
|
324
|
+
- Clear separation of concerns
|
|
325
|
+
- No backwards compatibility issues
|
|
326
|
+
|
|
327
|
+
**Cons:**
|
|
328
|
+
- Two commands for quality checking
|
|
329
|
+
- User confusion (when to use which?)
|
|
330
|
+
- More maintenance burden
|
|
331
|
+
|
|
332
|
+
**Decision:** Expand `check` with flags for better UX
|
|
333
|
+
|
|
334
|
+
### Always-On Comprehensive Checking
|
|
335
|
+
|
|
336
|
+
**Pros:**
|
|
337
|
+
- Maximum quality enforcement
|
|
338
|
+
- Simple model
|
|
339
|
+
|
|
340
|
+
**Cons:**
|
|
341
|
+
- Breaking change
|
|
342
|
+
- Performance impact for large projects
|
|
343
|
+
- User pushback
|
|
344
|
+
|
|
345
|
+
**Decision:** Make it opt-in with config, default in v0.3.0
|
|
346
|
+
|
|
347
|
+
### External Plugin System
|
|
348
|
+
|
|
349
|
+
**Pros:**
|
|
350
|
+
- Extensibility
|
|
351
|
+
- Community contributions
|
|
352
|
+
|
|
353
|
+
**Cons:**
|
|
354
|
+
- Over-engineering for current needs
|
|
355
|
+
- Added complexity
|
|
356
|
+
- Maintenance burden
|
|
357
|
+
|
|
358
|
+
**Decision:** Defer to future version if needed
|