@leanspec/ui 0.2.7-dev.20251126100750 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/node_modules/.pnpm/@img+sharp-darwin-arm64@0.34.5/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-linux-x64@0.34.5/node_modules/@img/sharp-linux-x64 → @img+sharp-darwin-arm64@0.34.5/node_modules/@img/sharp-darwin-arm64}/package.json +7 -13
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/README.md +2 -2
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/lib/glib-2.0/include/glibconfig.h +8 -9
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib} +0 -0
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/package.json +5 -11
- 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/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/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.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_not-found.rsc +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/[id]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/discover/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/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/page.js.nft.json +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]/specs/[specId]/page.js.nft.json +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/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.rsc +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_index.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +1 -1
- 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/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/stats/page.js.nft.json +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/dist/standalone/packages/web/README.md +196 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/components.json +20 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/0000_reflective_thena.sql +59 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/0001_fresh_carmella_unuscione.sql +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/0000_snapshot.json +427 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/0001_snapshot.json +436 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/_journal.json +20 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle.config.ts +10 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/eslint.config.mjs +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/next.config.ts +7 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +83 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/postcss.config.mjs +8 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/f864aa7e7061c0600e35cf3d879b27cf.txt +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/favicon.ico +0 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/file.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/github-mark-white.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/github-mark.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/globe.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/icon.svg +7 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/logo-dark-bg.svg +17 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/logo-with-bg.svg +17 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/logo.svg +17 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/next.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/vercel.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/window.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +44 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/projects/[id]/specs/route.ts +23 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/projects/route.ts +19 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/revalidate/route.ts +63 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/dependency-graph/route.test.ts +51 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/dependency-graph/route.ts +171 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/route.ts +36 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/subspecs/[file]/route.ts +46 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/stats/route.ts +19 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/board-client.tsx +162 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/loading.tsx +43 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/page.tsx +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/dashboard-client.tsx +364 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/error.tsx +43 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/globals.css +531 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/home-client.tsx +277 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/layout.tsx +70 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/loading.tsx +87 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/not-found.tsx +27 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/page.tsx +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/[id]/loading.tsx +5 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/[id]/page.tsx +43 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/page.tsx +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/specs-client.tsx +425 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/stats/page.tsx +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/stats/stats-client.tsx +283 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/back-to-top.tsx +46 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/empty-state.tsx +52 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/main-sidebar.tsx +175 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/markdown-link.test.ts +96 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/markdown-link.tsx +95 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/navigation.tsx +210 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/priority-badge.tsx +53 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/quick-search.tsx +180 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/skeletons.tsx +119 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-dependency-graph.tsx +369 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-client.tsx +372 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-loading-shell.tsx +42 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-wrapper.tsx +70 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-metadata.tsx +136 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-sidebar.tsx +127 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-timeline.tsx +186 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/specs-nav-sidebar.tsx +561 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/status-badge.tsx +53 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/sub-spec-tabs.tsx +143 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/table-of-contents.tsx +130 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/theme-provider.tsx +11 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/theme-toggle.tsx +37 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/avatar.tsx +50 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/badge.tsx +36 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/breadcrumb.tsx +110 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/button.tsx +57 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/card.tsx +76 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/command.tsx +153 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/dialog.tsx +122 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/input.tsx +24 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/select.tsx +159 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/separator.tsx +31 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/skeleton.tsx +15 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/tabs.tsx +55 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/toast.tsx +30 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/tooltip.tsx +32 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/date-utils.ts +76 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/index.ts +42 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/migrate.ts +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/queries.ts +114 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/schema.ts +123 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/seed.ts +156 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/service-queries.ts +216 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/dependency-graph.ts +105 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/service.ts +120 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/sources/database-source.ts +94 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/sources/filesystem-source.ts +249 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/types.ts +55 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/stores/specs-sidebar-store.ts +152 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/sub-specs.ts +171 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/utils.ts +17 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/types/specs.ts +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/tailwind.config.ts +58 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/tsconfig.json +34 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/tsconfig.tsbuildinfo +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/vitest.config.ts +14 -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 +306 -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 +287 -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 +825 -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 +501 -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 +421 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +106 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +126 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +131 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +254 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +152 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +65 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/094-ai-chatbot-web-integration/README.md +332 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/095-pr-migration-verification/README.md +339 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/096-docs-beginner-first-reorg/README.md +399 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/097-dag-visualization-library/README.md +525 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/098-github-multi-project-integration/README.md +387 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/099-enhanced-dependency-commands-cli-mcp/README.md +613 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/100-release-process-typecheck-failure/README.md +266 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/101-sidebar-scroll-position-drift/README.md +100 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/102-mcp-wrapper-package/README.md +172 -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/package.json +1 -1
- package/.next/standalone/packages/ui/server.js +1 -1
- package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md +0 -46
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h +0 -221
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +0 -1
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +0 -42
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +0 -30
- package/.next/standalone/node_modules/.pnpm/@img+sharp-linux-x64@0.34.5/node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node +0 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-linuxmusl-x64@0.34.5/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-linuxmusl-x64@0.34.5/node_modules/@img/sharp-linuxmusl-x64/package.json +0 -46
- /package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/lib/index.js +0 -0
- /package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/versions.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{_6lLNPdRExIaMIs9fFqLK → 6nq7WNafPv5Bf_7mWgRQ-}/_buildManifest.js +0 -0
- /package/.next/standalone/packages/ui/.next/static/{_6lLNPdRExIaMIs9fFqLK → 6nq7WNafPv5Bf_7mWgRQ-}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{_6lLNPdRExIaMIs9fFqLK → 6nq7WNafPv5Bf_7mWgRQ-}/_ssgManifest.js +0 -0
- /package/.next/static/{_6lLNPdRExIaMIs9fFqLK → 6nq7WNafPv5Bf_7mWgRQ-}/_buildManifest.js +0 -0
- /package/.next/static/{_6lLNPdRExIaMIs9fFqLK → 6nq7WNafPv5Bf_7mWgRQ-}/_clientMiddlewareManifest.json +0 -0
- /package/.next/static/{_6lLNPdRExIaMIs9fFqLK → 6nq7WNafPv5Bf_7mWgRQ-}/_ssgManifest.js +0 -0
package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/FINDINGS.md
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Problem Analysis: Spec Complexity
|
|
2
|
+
|
|
3
|
+
> Part of spec: [048-spec-complexity-analysis](README.md)
|
|
4
|
+
|
|
5
|
+
## Symptoms of Over-Complexity
|
|
6
|
+
|
|
7
|
+
### 1. Corruption Issues
|
|
8
|
+
- Spec 018 had major corruption: duplicate sections, malformed code blocks, incomplete JSON
|
|
9
|
+
- This is the 3rd+ time we've encountered spec corruption
|
|
10
|
+
- Root cause: Complex multi-edit operations on large files with interleaved code/text
|
|
11
|
+
- **The tool struggles with its own specs**
|
|
12
|
+
|
|
13
|
+
### 2. Context Window Issues
|
|
14
|
+
- 591 lines = ~15,000-20,000 tokens
|
|
15
|
+
- AI agents must load entire spec to make any edit
|
|
16
|
+
- Risk of missing context or creating inconsistencies
|
|
17
|
+
- Exactly the problem we're solving for users!
|
|
18
|
+
|
|
19
|
+
### 3. Maintenance Burden
|
|
20
|
+
- Updates require careful coordination across many sections
|
|
21
|
+
- Easy to update one part and miss related sections
|
|
22
|
+
- Testing section disconnected from implementation plan
|
|
23
|
+
- Design decisions buried in implementation details
|
|
24
|
+
|
|
25
|
+
### 4. Cognitive Overload
|
|
26
|
+
- Hard to get "at a glance" understanding
|
|
27
|
+
- Must scroll through multiple screenfuls to find specific info
|
|
28
|
+
- Mixed concerns: philosophy, design, implementation, testing, configuration, examples
|
|
29
|
+
- Violates "clarity over documentation" principle
|
|
30
|
+
|
|
31
|
+
## Root Causes
|
|
32
|
+
|
|
33
|
+
### Why are our specs growing?
|
|
34
|
+
|
|
35
|
+
1. **Feature Complexity**: Some features genuinely are complex (spec 018 is comprehensive checking system)
|
|
36
|
+
2. **Over-Documentation**: Including every possible use case, edge case, example
|
|
37
|
+
3. **Mixed Concerns**: Design + implementation + testing + config + examples all in one file
|
|
38
|
+
4. **Lack of Structure**: No clear stopping point or guideline for "too much"
|
|
39
|
+
5. **Completeness Bias**: Feeling like we need to document everything upfront
|
|
40
|
+
6. **No Enforcement**: No tooling to detect when specs get too large
|
|
41
|
+
|
|
42
|
+
### Comparison to Our Philosophy
|
|
43
|
+
|
|
44
|
+
| Principle | What We Say | What We Do |
|
|
45
|
+
|-----------|-------------|------------|
|
|
46
|
+
| "Write only what matters" | ✅ | ❌ 591 lines with exhaustive examples |
|
|
47
|
+
| "If it doesn't add clarity, cut it" | ✅ | ❌ Keep adding sections for completeness |
|
|
48
|
+
| "Lightweight SDD" | ✅ | ❌ 1,166-line spec is heavyweight |
|
|
49
|
+
| "Clear enough for AI" | ✅ | ❌ AI corrupts our own specs |
|
|
50
|
+
| "Lean enough to maintain" | ✅ | ❌ Maintenance is becoming painful |
|
|
51
|
+
|
|
52
|
+
## What Makes a Spec "Too Complex"?
|
|
53
|
+
|
|
54
|
+
### Quantitative Signals
|
|
55
|
+
- **>400 lines**: High risk of becoming unwieldy
|
|
56
|
+
- **>600 lines**: Almost certainly too complex
|
|
57
|
+
- **>50 sections**: Too much to navigate mentally
|
|
58
|
+
- **>10 code blocks**: Mixing too much code with prose
|
|
59
|
+
- **Multiple corruption incidents**: Clear sign of tool limitations
|
|
60
|
+
|
|
61
|
+
### Qualitative Signals
|
|
62
|
+
- Multiple concerns mixed together (design + config + testing + examples)
|
|
63
|
+
- Can't summarize in 1-2 paragraphs what the spec is about
|
|
64
|
+
- Implementation plan has >6 phases
|
|
65
|
+
- Reading through it takes >10 minutes
|
|
66
|
+
- Updates frequently cause inconsistencies
|
|
67
|
+
- AI agents struggle to edit it reliably
|
|
68
|
+
|
|
69
|
+
### The Context Window Math
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
Average spec size:
|
|
73
|
+
- Spec 018: 591 lines ≈ 15,000 tokens
|
|
74
|
+
- Spec 045: 1,166 lines ≈ 30,000 tokens
|
|
75
|
+
- Spec 043: 408 lines ≈ 10,000 tokens
|
|
76
|
+
|
|
77
|
+
Claude Sonnet context: 200K tokens
|
|
78
|
+
- But loses quality after ~50K tokens of active context
|
|
79
|
+
- Working memory effectively ~20K-30K tokens
|
|
80
|
+
|
|
81
|
+
Spec 045 = 30K tokens = entire working memory for ONE spec
|
|
82
|
+
- No room for code context, other specs, codebase understanding
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## The Paradox: We Already Solved This!
|
|
86
|
+
|
|
87
|
+
**We have the solution but aren't using it**:
|
|
88
|
+
|
|
89
|
+
### Spec 012: Sub-Spec Files (Status: ✅ Complete, **never actually used**)
|
|
90
|
+
|
|
91
|
+
We built this exact feature:
|
|
92
|
+
```
|
|
93
|
+
specs/048-spec-complexity-analysis/
|
|
94
|
+
├── README.md # Main spec (overview, decision)
|
|
95
|
+
├── DESIGN.md # Detailed design
|
|
96
|
+
├── IMPLEMENTATION.md # Implementation plan
|
|
97
|
+
├── TESTING.md # Test strategy
|
|
98
|
+
└── EXAMPLES.md # Code examples and configs
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Why didn't we use it?
|
|
102
|
+
- Forgot it exists?
|
|
103
|
+
- Doesn't feel necessary until it's too late?
|
|
104
|
+
- No tooling reminder when specs get large?
|
|
105
|
+
- Cultural inertia toward single-file specs?
|
|
106
|
+
- **Not dogfooding our own solution**
|
|
107
|
+
|
|
108
|
+
### We're experiencing the exact problem we're solving
|
|
109
|
+
|
|
110
|
+
1. ✅ We correctly identified: "30-page documents blow up AI's context window"
|
|
111
|
+
2. ✅ We built tooling: Sub-spec files (spec 012) to split large docs
|
|
112
|
+
3. ❌ We didn't use it: All our specs are still single large files
|
|
113
|
+
4. ❌ We're hitting the limit: Corruption, maintenance burden, cognitive overload
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
# Guidelines: When to Split Specs
|
|
2
|
+
|
|
3
|
+
> Part of spec: [048-spec-complexity-analysis](README.md)
|
|
4
|
+
|
|
5
|
+
## Line Count Thresholds
|
|
6
|
+
|
|
7
|
+
- **<300 lines**: ✅ Ideal, keep as single file
|
|
8
|
+
- **300-400 lines**: ⚠️ Warning zone, consider simplifying or splitting
|
|
9
|
+
- **>400 lines**: 🔴 Strong candidate for splitting
|
|
10
|
+
- **>600 lines**: 🔴 Almost certainly should be split
|
|
11
|
+
|
|
12
|
+
## Complexity Signals
|
|
13
|
+
|
|
14
|
+
- **>6 implementation phases**: Consider IMPLEMENTATION.md
|
|
15
|
+
- **>10 code blocks**: Consider EXAMPLES.md or CONFIGURATION.md
|
|
16
|
+
- **>40 sections**: Too much cognitive load
|
|
17
|
+
- **Multiple corruption incidents**: Technical debt signal
|
|
18
|
+
|
|
19
|
+
## Decision Tree: When to Split
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
Is the spec over 300 lines?
|
|
23
|
+
├─ No → Keep as single file ✅
|
|
24
|
+
└─ Yes → Does it have multiple distinct concerns?
|
|
25
|
+
├─ No → Consider refactoring to be more concise
|
|
26
|
+
└─ Yes → Does each concern need deep detail?
|
|
27
|
+
├─ No → Keep as single file, but trim content
|
|
28
|
+
└─ Yes → Split into sub-specs
|
|
29
|
+
├── README.md (overview + decision)
|
|
30
|
+
├── DESIGN.md (detailed design)
|
|
31
|
+
├── IMPLEMENTATION.md (plan)
|
|
32
|
+
├── TESTING.md (test strategy)
|
|
33
|
+
└── {CONCERN}.md (specific concerns)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Distinct Concerns (Worthy of Split)
|
|
37
|
+
|
|
38
|
+
### Worthy of separate file:
|
|
39
|
+
- Detailed configuration (JSON schemas, examples >50 lines)
|
|
40
|
+
- Extensive test strategy (beyond simple checklist)
|
|
41
|
+
- Multi-phase implementation (>6 phases)
|
|
42
|
+
- Code examples and patterns (>50 lines of code)
|
|
43
|
+
- Architecture decisions (ADR-style documentation)
|
|
44
|
+
- Migration strategy (from old to new approach)
|
|
45
|
+
- API specifications (endpoints, schemas, validation)
|
|
46
|
+
|
|
47
|
+
### Not worthy of separate file:
|
|
48
|
+
- Simple plan with 3-4 steps
|
|
49
|
+
- Basic testing checklist
|
|
50
|
+
- Short code snippets (<20 lines)
|
|
51
|
+
- Overview and design that fit together naturally
|
|
52
|
+
|
|
53
|
+
## Progressive Disclosure Stages
|
|
54
|
+
|
|
55
|
+
### Stage 1: Single File (Most Specs - <300 lines)
|
|
56
|
+
- Use standard template
|
|
57
|
+
- Keep under ~300 lines
|
|
58
|
+
- If it fits comfortably, don't split
|
|
59
|
+
|
|
60
|
+
### Stage 2: Growing Complexity (Some Specs - 300-400 lines)
|
|
61
|
+
- Approaching complexity threshold
|
|
62
|
+
- Multiple distinct concerns emerging
|
|
63
|
+
- Consider splitting, but don't force it
|
|
64
|
+
|
|
65
|
+
### Stage 3: Complex Feature (Few Specs - >400 lines)
|
|
66
|
+
- Over 400 lines or multiple major concerns
|
|
67
|
+
- Use sub-spec files (spec 012)
|
|
68
|
+
- Split by concern, not arbitrarily
|
|
69
|
+
|
|
70
|
+
### Stage 4: Epic/Multi-Phase (Rare - >600 lines)
|
|
71
|
+
- Multi-month initiative
|
|
72
|
+
- Consider whether it should be multiple specs instead
|
|
73
|
+
- Or use sub-specs with phase-based breakdown
|
|
74
|
+
|
|
75
|
+
## Case Study: How to Split Spec 018
|
|
76
|
+
|
|
77
|
+
**Current state**: 591 lines, 43 sections, multiple concerns mixed
|
|
78
|
+
|
|
79
|
+
**Proposed split**:
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
specs/018-spec-validation/
|
|
83
|
+
├── README.md # Overview, decision, summary (150 lines)
|
|
84
|
+
│ ├─ Overview: Problem statement, goals
|
|
85
|
+
│ ├─ Design: High-level approach (unified `check` command)
|
|
86
|
+
│ ├─ Decision: Why expand `check` vs new `validate`
|
|
87
|
+
│ └─ Links to sub-specs for details
|
|
88
|
+
│
|
|
89
|
+
├── VALIDATION-RULES.md # What gets validated (150 lines)
|
|
90
|
+
│ ├─ Frontmatter rules
|
|
91
|
+
│ ├─ Structure rules
|
|
92
|
+
│ ├─ Content rules
|
|
93
|
+
│ ├─ Corruption detection rules
|
|
94
|
+
│ └─ Staleness rules
|
|
95
|
+
│
|
|
96
|
+
├── CLI-DESIGN.md # Command interface (100 lines)
|
|
97
|
+
│ ├─ Command syntax
|
|
98
|
+
│ ├─ Flags and options
|
|
99
|
+
│ ├─ Output formats
|
|
100
|
+
│ └─ Backwards compatibility
|
|
101
|
+
│
|
|
102
|
+
├── CONFIGURATION.md # Config with examples (100 lines)
|
|
103
|
+
│ ├─ Config schema
|
|
104
|
+
│ ├─ JSON examples
|
|
105
|
+
│ └─ Rule customization
|
|
106
|
+
│
|
|
107
|
+
├── IMPLEMENTATION.md # 8-phase plan (150 lines)
|
|
108
|
+
│ ├─ Phase 1: Refactor
|
|
109
|
+
│ ├─ Phase 2: Frontmatter
|
|
110
|
+
│ ├─ Phase 3: Structure
|
|
111
|
+
│ └─ ... (all 8 phases)
|
|
112
|
+
│
|
|
113
|
+
└── TESTING.md # Test strategy (80 lines)
|
|
114
|
+
├─ Test categories
|
|
115
|
+
├─ Test cases
|
|
116
|
+
└─ Integration tests
|
|
117
|
+
|
|
118
|
+
Total: ~730 lines, but chunked for comprehension
|
|
119
|
+
Largest file: 150 lines (manageable)
|
|
120
|
+
README.md: Entry point, links to details
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**Benefits**:
|
|
124
|
+
- Each file fits in <1 screen
|
|
125
|
+
- Can edit one concern without touching others
|
|
126
|
+
- Reduces corruption risk (smaller, focused edits)
|
|
127
|
+
- AI agents can load just what they need
|
|
128
|
+
- Easier to review and maintain
|
|
129
|
+
- Better separation of concerns
|
|
130
|
+
|
|
131
|
+
## Future Tooling
|
|
132
|
+
|
|
133
|
+
### Detection: `lean-spec check --complexity`
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
$ lean-spec check --complexity
|
|
137
|
+
|
|
138
|
+
Complexity Analysis:
|
|
139
|
+
⚠ 3 specs may be too complex:
|
|
140
|
+
|
|
141
|
+
018-spec-validation (591 lines, 43 sections)
|
|
142
|
+
→ High complexity
|
|
143
|
+
→ Suggest: Split into sub-specs
|
|
144
|
+
→ Files: VALIDATION-RULES.md, CLI-DESIGN.md, IMPLEMENTATION.md, TESTING.md
|
|
145
|
+
|
|
146
|
+
045-unified-dashboard (1,166 lines, 58 sections)
|
|
147
|
+
→ Very high complexity
|
|
148
|
+
→ Suggest: Consider if this should be multiple specs
|
|
149
|
+
→ Or split into: DESIGN.md, VELOCITY.md, DASHBOARD.md
|
|
150
|
+
|
|
151
|
+
043-official-launch (408 lines, 3 phases)
|
|
152
|
+
→ Moderate complexity
|
|
153
|
+
→ Consider: Use PHASES.md for multi-phase breakdown
|
|
154
|
+
|
|
155
|
+
Recommendations:
|
|
156
|
+
- Review specs over 400 lines
|
|
157
|
+
- Use sub-spec files (spec 012) to split concerns
|
|
158
|
+
- See: lean-spec view 012 for guidance
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Guided Splitting (v0.3.0+)
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
# Analyze spec complexity
|
|
165
|
+
lean-spec check --complexity
|
|
166
|
+
|
|
167
|
+
# Guided splitting
|
|
168
|
+
lean-spec split 018 --interactive
|
|
169
|
+
→ Analyzes structure
|
|
170
|
+
→ Suggests split strategy
|
|
171
|
+
→ Creates sub-spec files
|
|
172
|
+
→ Moves content appropriately
|
|
173
|
+
|
|
174
|
+
# View sub-specs
|
|
175
|
+
lean-spec view 018 # Shows README.md
|
|
176
|
+
lean-spec view 018 --all # Lists all sub-specs
|
|
177
|
+
lean-spec view 018/DESIGN # Views specific sub-spec
|
|
178
|
+
|
|
179
|
+
# Open in editor
|
|
180
|
+
lean-spec open 018 # Opens README.md
|
|
181
|
+
lean-spec open 018 --files # Opens all sub-specs
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## Warning Signs
|
|
185
|
+
|
|
186
|
+
Your spec might be too complex if:
|
|
187
|
+
- ⚠️ It takes >10 minutes to read through
|
|
188
|
+
- ⚠️ You can't summarize it in 2 paragraphs
|
|
189
|
+
- ⚠️ Recent edits caused corruption
|
|
190
|
+
- ⚠️ You're scrolling endlessly to find information
|
|
191
|
+
- ⚠️ Implementation plan has >8 phases
|
|
192
|
+
|
|
193
|
+
**Action**: Split using sub-specs, don't just keep growing the file.
|
|
194
|
+
|
|
195
|
+
## Documentation Updates
|
|
196
|
+
|
|
197
|
+
### AGENTS.md Template
|
|
198
|
+
|
|
199
|
+
```markdown
|
|
200
|
+
## Spec Complexity Guidelines
|
|
201
|
+
|
|
202
|
+
### Single File vs Sub-Specs
|
|
203
|
+
|
|
204
|
+
**Keep as single file when**:
|
|
205
|
+
- Under 300 lines
|
|
206
|
+
- Can be read/understood in 5-10 minutes
|
|
207
|
+
- Single, focused concern
|
|
208
|
+
- Implementation plan <6 phases
|
|
209
|
+
|
|
210
|
+
**Consider splitting when**:
|
|
211
|
+
- Over 400 lines
|
|
212
|
+
- Multiple distinct concerns (design + config + testing + examples)
|
|
213
|
+
- AI tools corrupt the spec during edits
|
|
214
|
+
- Updates frequently cause inconsistencies
|
|
215
|
+
- Implementation has >6 phases
|
|
216
|
+
|
|
217
|
+
**How to split** (see spec 012):
|
|
218
|
+
- README.md: Overview, decision, high-level design
|
|
219
|
+
- DESIGN.md: Detailed design and architecture
|
|
220
|
+
- IMPLEMENTATION.md: Implementation plan with phases
|
|
221
|
+
- TESTING.md: Test strategy and cases
|
|
222
|
+
- CONFIGURATION.md: Config examples and schemas
|
|
223
|
+
- {CONCERN}.md: Other specific concerns (API, MIGRATION, etc.)
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Template Hints
|
|
227
|
+
|
|
228
|
+
```markdown
|
|
229
|
+
## Plan
|
|
230
|
+
|
|
231
|
+
<!-- Break down implementation into steps -->
|
|
232
|
+
|
|
233
|
+
<!-- 💡 TIP: If your plan has >6 phases or this spec approaches
|
|
234
|
+
400 lines, consider using sub-spec files:
|
|
235
|
+
- IMPLEMENTATION.md for detailed implementation
|
|
236
|
+
- See spec 012 for guidance on splitting -->
|
|
237
|
+
```
|
package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/README.md
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: complete
|
|
3
|
+
created: '2025-11-04'
|
|
4
|
+
tags:
|
|
5
|
+
- philosophy
|
|
6
|
+
- quality
|
|
7
|
+
- lean-principle
|
|
8
|
+
- meta
|
|
9
|
+
priority: critical
|
|
10
|
+
related:
|
|
11
|
+
- 018-spec-validation
|
|
12
|
+
- 012-sub-spec-files
|
|
13
|
+
- 043-official-launch-02
|
|
14
|
+
created_at: '2025-11-04T00:00:00Z'
|
|
15
|
+
updated_at: '2025-11-06T21:15:00Z'
|
|
16
|
+
completed_at: '2025-11-05T05:03:54.952Z'
|
|
17
|
+
completed: '2025-11-05'
|
|
18
|
+
transitions:
|
|
19
|
+
- status: complete
|
|
20
|
+
at: '2025-11-05T05:03:54.952Z'
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# When Specs Become Too Complex
|
|
24
|
+
|
|
25
|
+
> **Status**: ✅ Complete · **Priority**: Critical · **Created**: 2025-11-04 · **Tags**: philosophy, quality, lean-principle, meta
|
|
26
|
+
|
|
27
|
+
**Split into sub-specs for Context Economy** - See detailed sections below
|
|
28
|
+
|
|
29
|
+
## Overview
|
|
30
|
+
|
|
31
|
+
**The Irony**: We're building LeanSpec to solve "specs that are too complex for AI," yet our own specs were becoming exactly what we're trying to prevent.
|
|
32
|
+
|
|
33
|
+
### The Evidence
|
|
34
|
+
|
|
35
|
+
- Spec 018 (spec-validation): **591 lines**, 43 sections, 13 code blocks
|
|
36
|
+
- Spec 045 (unified-dashboard): **1,166 lines** (largest spec in project)
|
|
37
|
+
- Spec 043 (official-launch): **408 lines** with 3 distinct phases
|
|
38
|
+
- Multiple instances of spec corruption from complex editing
|
|
39
|
+
|
|
40
|
+
### Core Philosophy Conflict
|
|
41
|
+
|
|
42
|
+
```markdown
|
|
43
|
+
# From our README:
|
|
44
|
+
"Context overload - 30-page documents blow up the AI's context window"
|
|
45
|
+
"Write only what matters - Clear intent AI can act on, not 50 pages of noise"
|
|
46
|
+
"Keep it minimal - If it doesn't add clarity, cut it"
|
|
47
|
+
|
|
48
|
+
# Reality (before this spec):
|
|
49
|
+
- 591-line spec with 8 implementation phases
|
|
50
|
+
- Specs getting corrupted from multi-replace operations
|
|
51
|
+
- AI agents struggling to maintain consistency
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**The Question**: Are we practicing what we preach?
|
|
55
|
+
|
|
56
|
+
**The Answer**: Not yet - but we're fixing it through dogfooding.
|
|
57
|
+
|
|
58
|
+
## Key Findings
|
|
59
|
+
|
|
60
|
+
### Quantitative Thresholds
|
|
61
|
+
|
|
62
|
+
- **<300 lines**: ✅ Ideal, keep as single file
|
|
63
|
+
- **300-400 lines**: ⚠️ Warning zone, consider simplifying or splitting
|
|
64
|
+
- **>400 lines**: 🔴 Strong candidate for splitting
|
|
65
|
+
- **>600 lines**: 🔴 Almost certainly should be split
|
|
66
|
+
|
|
67
|
+
### The Paradox
|
|
68
|
+
|
|
69
|
+
We built sub-spec files (spec 012) to solve this exact problem, but never used them ourselves! We were experiencing the problem we set out to solve.
|
|
70
|
+
|
|
71
|
+
### The Solution
|
|
72
|
+
|
|
73
|
+
Apply our own principles:
|
|
74
|
+
1. Establish clear complexity thresholds (Context Economy)
|
|
75
|
+
2. Use sub-spec files when specs exceed 400 lines
|
|
76
|
+
3. Add validation to catch violations automatically
|
|
77
|
+
4. Dogfood our own guidelines
|
|
78
|
+
|
|
79
|
+
## Quick Reference
|
|
80
|
+
|
|
81
|
+
### Warning Signs Your Spec is Too Complex
|
|
82
|
+
|
|
83
|
+
- Takes >10 minutes to read
|
|
84
|
+
- Can't summarize in 2 paragraphs
|
|
85
|
+
- Recent edits caused corruption
|
|
86
|
+
- Scrolling endlessly to find information
|
|
87
|
+
- Implementation plan has >8 phases
|
|
88
|
+
|
|
89
|
+
**Action**: Split using sub-specs (see spec 012).
|
|
90
|
+
|
|
91
|
+
### When to Split
|
|
92
|
+
|
|
93
|
+
Single file OK: <300 lines, single concern, <6 phases
|
|
94
|
+
|
|
95
|
+
Consider splitting: >400 lines, multiple concerns, >6 phases
|
|
96
|
+
|
|
97
|
+
Use sub-specs:
|
|
98
|
+
- README.md: Overview + decision
|
|
99
|
+
- DESIGN.md: Detailed design
|
|
100
|
+
- IMPLEMENTATION.md: Implementation plan
|
|
101
|
+
- TESTING.md: Test strategy
|
|
102
|
+
- {CONCERN}.md: Specific concerns
|
|
103
|
+
|
|
104
|
+
## Sub-Specs
|
|
105
|
+
|
|
106
|
+
Detailed information split for Context Economy (<400 lines per file):
|
|
107
|
+
|
|
108
|
+
- **[FINDINGS.md](./FINDINGS.md)** - Problem analysis, symptoms, root causes, the paradox
|
|
109
|
+
- **[GUIDELINES.md](./GUIDELINES.md)** - When to split, decision tree, thresholds, case studies
|
|
110
|
+
|
|
111
|
+
## Status
|
|
112
|
+
|
|
113
|
+
✅ **COMPLETE** - Guidelines established, validation added, specs 018 and 045 successfully split.
|
|
114
|
+
|
|
115
|
+
### Implementation Summary
|
|
116
|
+
|
|
117
|
+
**Phase 1: Establish Guidelines** ✅
|
|
118
|
+
- Defined complexity thresholds (300/400/600 lines)
|
|
119
|
+
- Created decision tree for when to split
|
|
120
|
+
- Documented in AGENTS.md
|
|
121
|
+
|
|
122
|
+
**Phase 2: Add Detection** ✅
|
|
123
|
+
- Line count detection in `lean-spec validate`
|
|
124
|
+
- Warnings for specs >400 lines
|
|
125
|
+
- Sub-spec validation
|
|
126
|
+
|
|
127
|
+
**Phase 3: Dogfood** ✅
|
|
128
|
+
- Spec 018 split into 6 focused sub-specs
|
|
129
|
+
- Spec 045 split into 5 focused sub-specs
|
|
130
|
+
- Spec 048 (this spec) split into sub-specs
|
|
131
|
+
|
|
132
|
+
**Phase 4: Future Enhancements** (v0.3.0+)
|
|
133
|
+
- `lean-spec split` command for guided splitting
|
|
134
|
+
- `lean-spec check --complexity` for detailed analysis
|
|
135
|
+
- Advanced sub-spec navigation
|
|
136
|
+
|
|
137
|
+
## Impact
|
|
138
|
+
|
|
139
|
+
### Before Dogfooding
|
|
140
|
+
- 3 specs >600 lines (Context Economy violations)
|
|
141
|
+
- No enforcement mechanism
|
|
142
|
+
- AI corruption incidents
|
|
143
|
+
|
|
144
|
+
### After Dogfooding
|
|
145
|
+
- All specs <400 lines (or split into sub-specs)
|
|
146
|
+
- Automatic validation catches violations
|
|
147
|
+
- Practicing what we preach ✅
|
|
148
|
+
|
|
149
|
+
This spec established the principle that drove our dogfooding effort in v0.2.0.
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
- Heavy review processes
|
|
2
|
+
- Separation: Design doc → Implementation → Maintenance doc
|
|
3
|
+
|
|
4
|
+
**Typical Scale:**
|
|
5
|
+
- Google Design Docs: 20-50 pages typical
|
|
6
|
+
- AWS RFCs: Can be 100+ pages
|
|
7
|
+
- Enterprise PRDs: Often 30-50 pages
|
|
8
|
+
|
|
9
|
+
**Root Difference:**
|
|
10
|
+
- Traditional: "Document everything before building"
|
|
11
|
+
- LeanSpec: "Document just enough to start, evolve as you learn"
|
|
12
|
+
|
|
13
|
+
**Why Different:**
|
|
14
|
+
- Traditional assumes: Complete understanding upfront possible
|
|
15
|
+
- LeanSpec assumes: Understanding emerges through building
|
|
16
|
+
- Traditional: Human-only communication
|
|
17
|
+
- LeanSpec: Human + AI communication
|
|
18
|
+
|
|
19
|
+
### Agile/Lean Methodologies
|
|
20
|
+
|
|
21
|
+
**Shared Principles:**
|
|
22
|
+
- Minimal viable documentation
|
|
23
|
+
- Iterative development
|
|
24
|
+
- Respond to change over following plan
|
|
25
|
+
|
|
26
|
+
**LeanSpec Addition:**
|
|
27
|
+
- Structured documentation for AI agents
|
|
28
|
+
- Clear metadata for tooling
|
|
29
|
+
- Visual management (boards, timelines)
|
|
30
|
+
- Spec-driven (not just story-driven)
|
|
31
|
+
|
|
32
|
+
**LeanSpec = Agile Principles + Structure for AI + Developer Experience**
|
|
33
|
+
|
|
34
|
+
## Part 4: Thought Experiments
|
|
35
|
+
|
|
36
|
+
### Experiment 1: "Infinite Context Windows"
|
|
37
|
+
|
|
38
|
+
**Question:** If context windows were infinite, what would change?
|
|
39
|
+
|
|
40
|
+
**Analysis:**
|
|
41
|
+
- Would we write longer specs? Probably yes.
|
|
42
|
+
- Would that be better? NO.
|
|
43
|
+
- Why not? Human cognitive limits still apply.
|
|
44
|
+
- Reading time still costs money.
|
|
45
|
+
- Maintenance burden still increases with length.
|
|
46
|
+
- Signal-to-noise ratio still matters.
|
|
47
|
+
|
|
48
|
+
**Revelation:** Context window limits are a SYMPTOM, not the root cause.
|
|
49
|
+
|
|
50
|
+
**Root Cause:** The real constraint is attention—both human and AI. Even with infinite storage, focused attention is finite.
|
|
51
|
+
|
|
52
|
+
**First Principle This Reveals:**
|
|
53
|
+
**"Optimize for attention, not storage."**
|
|
54
|
+
|
|
55
|
+
### Experiment 2: "Only 3 Rules"
|
|
56
|
+
|
|
57
|
+
**Question:** If we could only keep 3 rules, which ones?
|
|
58
|
+
|
|
59
|
+
**My picks:**
|
|
60
|
+
1. **Context Economy** - Fit in working memory
|
|
61
|
+
2. **Signal-to-Noise** - Say what matters, nothing more
|
|
62
|
+
3. **Intent Over Implementation** - Capture "why," let "how" emerge
|
|
63
|
+
|
|
64
|
+
**Why these 3?**
|
|
65
|
+
- They're constraints, not preferences
|
|
66
|
+
- Everything else can derive from them
|
|
67
|
+
- They apply to all contexts (solo → enterprise)
|
|
68
|
+
|
|
69
|
+
**Revelation:** These aren't rules we chose—they're constraints we must work within.
|
|
70
|
+
|
|
71
|
+
### Experiment 3: "Violate X, Keep Y"
|
|
72
|
+
|
|
73
|
+
**Question:** If a user violates rule X but follows Y, is it still LeanSpec?
|
|
74
|
+
|
|
75
|
+
**Test Cases:**
|
|
76
|
+
|
|
77
|
+
1. **1000-line spec but it's all signal (no noise)**
|
|
78
|
+
- Violates: Context economy
|
|
79
|
+
- Keeps: Signal-to-noise
|
|
80
|
+
- Verdict: NOT LeanSpec (context limits are physics)
|
|
81
|
+
|
|
82
|
+
2. **5-line spec that's vague and ambiguous**
|
|
83
|
+
- Violates: Clarity
|
|
84
|
+
- Keeps: Context economy
|
|
85
|
+
- Verdict: NOT LeanSpec (clarity is the point)
|
|
86
|
+
|
|
87
|
+
3. **Perfect spec but never updated after code changes**
|
|
88
|
+
- Violates: Living documentation
|
|
89
|
+
- Keeps: Clarity + context economy
|
|
90
|
+
- Verdict: NOT LeanSpec (stale specs are harmful)
|
|
91
|
+
|
|
92
|
+
4. **Uses different template every time**
|
|
93
|
+
- Violates: Structural consistency
|
|
94
|
+
- Keeps: Everything else
|
|
95
|
+
- Verdict: Still LeanSpec (templates are helpful but not essential)
|
|
96
|
+
|
|
97
|
+
**Revelation:** Some principles are MUST-HAVE (clarity, context economy, living), others are SHOULD-HAVE (consistency).
|
|
98
|
+
|
|
99
|
+
### Experiment 4: "What Makes LeanSpec Obsolete?"
|
|
100
|
+
|
|
101
|
+
**Question:** If X happened, LeanSpec wouldn't be needed. What is X?
|
|
102
|
+
|
|
103
|
+
**Candidate 1:** AI gets good enough it doesn't need specs
|
|
104
|
+
- But: Humans still need specs
|
|
105
|
+
- And: Human-AI communication still needs shared context
|
|
106
|
+
- Verdict: Won't make LeanSpec obsolete
|
|
107
|
+
|
|
108
|
+
**Candidate 2:** AI can perfectly read entire codebases
|
|
109
|
+
- But: Codebases don't contain "why" decisions were made
|
|
110
|
+
- And: Intent isn't in the code
|
|
111
|
+
- Verdict: Won't make LeanSpec obsolete
|
|
112
|
+
|
|
113
|
+
**Candidate 3:** Perfect automated spec generation from code
|
|
114
|
+
- But: Code shows "what," not "why"
|
|
115
|
+
- And: Future intent isn't in current code
|
|
116
|
+
- Verdict: Won't make LeanSpec obsolete
|
|
117
|
+
|
|
118
|
+
**Candidate 4:** Telepathic human-AI interface (sci-fi)
|
|
119
|
+
- No need for written communication
|
|
120
|
+
- Verdict: This would make LeanSpec obsolete!
|
|
121
|
+
|
|
122
|
+
**Revelation:** LeanSpec exists because of the gap between human intent and machine understanding. As long as that gap exists, we need a bridge.
|
|
123
|
+
|
|
124
|
+
**First Principle This Reveals:**
|
|
125
|
+
**"Bridge the intent gap between human and machine."**
|
|
126
|
+
|
|
127
|
+
## Part 5: Our Own Evolution Analysis
|
|
128
|
+
|
|
129
|
+
### What Worked Well
|
|
130
|
+
|
|
131
|
+
1. **Templates system** - Convention reduces decision fatigue
|
|
132
|
+
2. **Frontmatter** - Structured metadata enables tooling
|
|
133
|
+
3. **CLI tools** - Commands make specs actionable
|
|
134
|
+
4. **Flat folder structure** - Simple navigation, easy references
|
|
135
|
+
5. **Status tracking** - Clear project visibility
|
|
136
|
+
|
|
137
|
+
**Pattern:** Structure that enables without constraining.
|
|
138
|
+
|
|
139
|
+
### What Caused Problems
|
|
140
|
+
|
|
141
|
+
1. **Specs growing to 600-1,166 lines** - Violated context economy
|
|
142
|
+
2. **Built sub-spec feature but didn't use it** - Dogfooding failure
|
|
143
|
+
3. **Spec corruption** - Tool struggling with its own output
|
|
144
|
+
4. **Multiple similar sections** - Unclear purpose/hierarchy
|
|
145
|
+
|
|
146
|
+
**Pattern:** Principles without enforcement mechanisms.
|
|
147
|
+
|
|
148
|
+
### Root Cause Analysis
|
|
149
|
+
|
|
150
|
+
**Problem:** We built sub-specs (spec 012) but never used them.
|
|
151
|
+
|
|
152
|
+
**Why?**
|
|
153
|
+
- No pain threshold defined
|
|
154
|
+
- No tooling to detect problem
|
|
155
|
+
- No culture of "split early"
|
|
156
|
+
- Completeness bias (want everything in one place)
|
|
157
|
+
|
|
158
|
+
**Lesson:** Good principles need operationalization (tooling + culture + metrics).
|
|
159
|
+
|
|
160
|
+
### What Would Have Prevented the 600-Line Spec Problem?
|
|
161
|
+
|
|
162
|
+
**If we had:**
|
|
163
|
+
1. **Clear threshold**: "300 lines = warning, 400 lines = split"
|
|
164
|
+
2. **Automated detection**: `lean-spec validate --max-lines 400`
|
|
165
|
+
3. **Cultural norm**: "Split specs proactively, not reactively"
|
|
166
|
+
4. **Tooling support**: `lean-spec split <spec>` command
|
|
167
|
+
|
|
168
|
+
**First Principle This Reveals:**
|
|
169
|
+
**"Principles need operationalization to be followed."**
|
|
170
|
+
|
|
171
|
+
## Related Documents
|
|
172
|
+
|
|
173
|
+
- [Main Spec](README.md) - Overview and findings summary
|
|
174
|
+
- [First Principles](FIRST-PRINCIPLES.md) - The 5 crystal stone rules
|
|
175
|
+
- [Operationalization](OPERATIONALIZATION.md) - How to enforce principles
|