@libar-dev/architect 1.0.0-pre.3
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/CHANGELOG.md +50 -0
- package/LICENSE +25 -0
- package/LICENSE-MCP +62 -0
- package/README.md +147 -0
- package/dist/api/arch-queries.d.ts +95 -0
- package/dist/api/arch-queries.d.ts.map +1 -0
- package/dist/api/arch-queries.js +310 -0
- package/dist/api/arch-queries.js.map +1 -0
- package/dist/api/context-assembler.d.ts +124 -0
- package/dist/api/context-assembler.d.ts.map +1 -0
- package/dist/api/context-assembler.js +472 -0
- package/dist/api/context-assembler.js.map +1 -0
- package/dist/api/context-formatter.d.ts +26 -0
- package/dist/api/context-formatter.d.ts.map +1 -0
- package/dist/api/context-formatter.js +183 -0
- package/dist/api/context-formatter.js.map +1 -0
- package/dist/api/coverage-analyzer.d.ts +38 -0
- package/dist/api/coverage-analyzer.d.ts.map +1 -0
- package/dist/api/coverage-analyzer.js +117 -0
- package/dist/api/coverage-analyzer.js.map +1 -0
- package/dist/api/fuzzy-match.d.ts +75 -0
- package/dist/api/fuzzy-match.d.ts.map +1 -0
- package/dist/api/fuzzy-match.js +150 -0
- package/dist/api/fuzzy-match.js.map +1 -0
- package/dist/api/handoff-generator.d.ts +45 -0
- package/dist/api/handoff-generator.d.ts.map +1 -0
- package/dist/api/handoff-generator.js +139 -0
- package/dist/api/handoff-generator.js.map +1 -0
- package/dist/api/index.d.ts +61 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +54 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/pattern-helpers.d.ts +51 -0
- package/dist/api/pattern-helpers.d.ts.map +1 -0
- package/dist/api/pattern-helpers.js +84 -0
- package/dist/api/pattern-helpers.js.map +1 -0
- package/dist/api/process-state.d.ts +224 -0
- package/dist/api/process-state.d.ts.map +1 -0
- package/dist/api/process-state.js +308 -0
- package/dist/api/process-state.js.map +1 -0
- package/dist/api/rules-query.d.ts +60 -0
- package/dist/api/rules-query.d.ts.map +1 -0
- package/dist/api/rules-query.js +154 -0
- package/dist/api/rules-query.js.map +1 -0
- package/dist/api/scope-validator.d.ts +56 -0
- package/dist/api/scope-validator.d.ts.map +1 -0
- package/dist/api/scope-validator.js +293 -0
- package/dist/api/scope-validator.js.map +1 -0
- package/dist/api/stub-resolver.d.ts +117 -0
- package/dist/api/stub-resolver.d.ts.map +1 -0
- package/dist/api/stub-resolver.js +154 -0
- package/dist/api/stub-resolver.js.map +1 -0
- package/dist/api/summarize.d.ts +75 -0
- package/dist/api/summarize.d.ts.map +1 -0
- package/dist/api/summarize.js +97 -0
- package/dist/api/summarize.js.map +1 -0
- package/dist/api/types.d.ts +221 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +57 -0
- package/dist/api/types.js.map +1 -0
- package/dist/cache/file-cache.d.ts +72 -0
- package/dist/cache/file-cache.d.ts.map +1 -0
- package/dist/cache/file-cache.js +80 -0
- package/dist/cache/file-cache.js.map +1 -0
- package/dist/cache/index.d.ts +5 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +5 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cli/cli-schema.d.ts +83 -0
- package/dist/cli/cli-schema.d.ts.map +1 -0
- package/dist/cli/cli-schema.js +505 -0
- package/dist/cli/cli-schema.js.map +1 -0
- package/dist/cli/dataset-cache.d.ts +66 -0
- package/dist/cli/dataset-cache.d.ts.map +1 -0
- package/dist/cli/dataset-cache.js +179 -0
- package/dist/cli/dataset-cache.js.map +1 -0
- package/dist/cli/error-handler.d.ts +84 -0
- package/dist/cli/error-handler.d.ts.map +1 -0
- package/dist/cli/error-handler.js +197 -0
- package/dist/cli/error-handler.js.map +1 -0
- package/dist/cli/generate-docs.d.ts +30 -0
- package/dist/cli/generate-docs.d.ts.map +1 -0
- package/dist/cli/generate-docs.js +370 -0
- package/dist/cli/generate-docs.js.map +1 -0
- package/dist/cli/lint-patterns.d.ts +57 -0
- package/dist/cli/lint-patterns.d.ts.map +1 -0
- package/dist/cli/lint-patterns.js +257 -0
- package/dist/cli/lint-patterns.js.map +1 -0
- package/dist/cli/lint-process.d.ts +54 -0
- package/dist/cli/lint-process.d.ts.map +1 -0
- package/dist/cli/lint-process.js +319 -0
- package/dist/cli/lint-process.js.map +1 -0
- package/dist/cli/lint-steps.d.ts +32 -0
- package/dist/cli/lint-steps.d.ts.map +1 -0
- package/dist/cli/lint-steps.js +172 -0
- package/dist/cli/lint-steps.js.map +1 -0
- package/dist/cli/mcp-server.d.ts +22 -0
- package/dist/cli/mcp-server.d.ts.map +1 -0
- package/dist/cli/mcp-server.js +57 -0
- package/dist/cli/mcp-server.js.map +1 -0
- package/dist/cli/output-pipeline.d.ts +130 -0
- package/dist/cli/output-pipeline.d.ts.map +1 -0
- package/dist/cli/output-pipeline.js +234 -0
- package/dist/cli/output-pipeline.js.map +1 -0
- package/dist/cli/process-api.d.ts +37 -0
- package/dist/cli/process-api.d.ts.map +1 -0
- package/dist/cli/process-api.js +1550 -0
- package/dist/cli/process-api.js.map +1 -0
- package/dist/cli/repl.d.ts +38 -0
- package/dist/cli/repl.d.ts.map +1 -0
- package/dist/cli/repl.js +239 -0
- package/dist/cli/repl.js.map +1 -0
- package/dist/cli/validate-patterns.d.ts +115 -0
- package/dist/cli/validate-patterns.d.ts.map +1 -0
- package/dist/cli/validate-patterns.js +707 -0
- package/dist/cli/validate-patterns.js.map +1 -0
- package/dist/cli/version.d.ts +35 -0
- package/dist/cli/version.d.ts.map +1 -0
- package/dist/cli/version.js +64 -0
- package/dist/cli/version.js.map +1 -0
- package/dist/config/config-loader.d.ts +167 -0
- package/dist/config/config-loader.d.ts.map +1 -0
- package/dist/config/config-loader.js +294 -0
- package/dist/config/config-loader.js.map +1 -0
- package/dist/config/defaults.d.ts +92 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +103 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/define-config.d.ts +37 -0
- package/dist/config/define-config.d.ts.map +1 -0
- package/dist/config/define-config.js +38 -0
- package/dist/config/define-config.js.map +1 -0
- package/dist/config/factory.d.ts +79 -0
- package/dist/config/factory.d.ts.map +1 -0
- package/dist/config/factory.js +116 -0
- package/dist/config/factory.js.map +1 -0
- package/dist/config/index.d.ts +45 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +48 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/merge-sources.d.ts +47 -0
- package/dist/config/merge-sources.d.ts.map +1 -0
- package/dist/config/merge-sources.js +61 -0
- package/dist/config/merge-sources.js.map +1 -0
- package/dist/config/presets.d.ts +115 -0
- package/dist/config/presets.d.ts.map +1 -0
- package/dist/config/presets.js +119 -0
- package/dist/config/presets.js.map +1 -0
- package/dist/config/project-config-schema.d.ts +192 -0
- package/dist/config/project-config-schema.d.ts.map +1 -0
- package/dist/config/project-config-schema.js +231 -0
- package/dist/config/project-config-schema.js.map +1 -0
- package/dist/config/project-config.d.ts +229 -0
- package/dist/config/project-config.d.ts.map +1 -0
- package/dist/config/project-config.js +37 -0
- package/dist/config/project-config.js.map +1 -0
- package/dist/config/regex-builders.d.ts +49 -0
- package/dist/config/regex-builders.d.ts.map +1 -0
- package/dist/config/regex-builders.js +85 -0
- package/dist/config/regex-builders.js.map +1 -0
- package/dist/config/resolve-config.d.ts +65 -0
- package/dist/config/resolve-config.d.ts.map +1 -0
- package/dist/config/resolve-config.js +150 -0
- package/dist/config/resolve-config.js.map +1 -0
- package/dist/config/types.d.ts +81 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +22 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config/workflow-loader.d.ts +90 -0
- package/dist/config/workflow-loader.d.ts.map +1 -0
- package/dist/config/workflow-loader.js +167 -0
- package/dist/config/workflow-loader.js.map +1 -0
- package/dist/extractor/doc-extractor.d.ts +233 -0
- package/dist/extractor/doc-extractor.d.ts.map +1 -0
- package/dist/extractor/doc-extractor.js +481 -0
- package/dist/extractor/doc-extractor.js.map +1 -0
- package/dist/extractor/dual-source-extractor.d.ts +161 -0
- package/dist/extractor/dual-source-extractor.d.ts.map +1 -0
- package/dist/extractor/dual-source-extractor.js +407 -0
- package/dist/extractor/dual-source-extractor.js.map +1 -0
- package/dist/extractor/gherkin-extractor.d.ts +170 -0
- package/dist/extractor/gherkin-extractor.d.ts.map +1 -0
- package/dist/extractor/gherkin-extractor.js +543 -0
- package/dist/extractor/gherkin-extractor.js.map +1 -0
- package/dist/extractor/index.d.ts +7 -0
- package/dist/extractor/index.d.ts.map +1 -0
- package/dist/extractor/index.js +11 -0
- package/dist/extractor/index.js.map +1 -0
- package/dist/extractor/layer-inference.d.ts +66 -0
- package/dist/extractor/layer-inference.d.ts.map +1 -0
- package/dist/extractor/layer-inference.js +93 -0
- package/dist/extractor/layer-inference.js.map +1 -0
- package/dist/extractor/shape-extractor.d.ts +79 -0
- package/dist/extractor/shape-extractor.d.ts.map +1 -0
- package/dist/extractor/shape-extractor.js +966 -0
- package/dist/extractor/shape-extractor.js.map +1 -0
- package/dist/generators/built-in/cli-recipe-generator.d.ts +30 -0
- package/dist/generators/built-in/cli-recipe-generator.d.ts.map +1 -0
- package/dist/generators/built-in/cli-recipe-generator.js +155 -0
- package/dist/generators/built-in/cli-recipe-generator.js.map +1 -0
- package/dist/generators/built-in/codec-generators.d.ts +29 -0
- package/dist/generators/built-in/codec-generators.d.ts.map +1 -0
- package/dist/generators/built-in/codec-generators.js +195 -0
- package/dist/generators/built-in/codec-generators.js.map +1 -0
- package/dist/generators/built-in/decision-doc-generator.d.ts +204 -0
- package/dist/generators/built-in/decision-doc-generator.d.ts.map +1 -0
- package/dist/generators/built-in/decision-doc-generator.js +654 -0
- package/dist/generators/built-in/decision-doc-generator.js.map +1 -0
- package/dist/generators/built-in/design-review-generator.d.ts +26 -0
- package/dist/generators/built-in/design-review-generator.d.ts.map +1 -0
- package/dist/generators/built-in/design-review-generator.js +94 -0
- package/dist/generators/built-in/design-review-generator.js.map +1 -0
- package/dist/generators/built-in/index.d.ts +22 -0
- package/dist/generators/built-in/index.d.ts.map +1 -0
- package/dist/generators/built-in/index.js +23 -0
- package/dist/generators/built-in/index.js.map +1 -0
- package/dist/generators/built-in/process-api-reference-generator.d.ts +18 -0
- package/dist/generators/built-in/process-api-reference-generator.d.ts.map +1 -0
- package/dist/generators/built-in/process-api-reference-generator.js +85 -0
- package/dist/generators/built-in/process-api-reference-generator.js.map +1 -0
- package/dist/generators/built-in/reference-generators.d.ts +51 -0
- package/dist/generators/built-in/reference-generators.d.ts.map +1 -0
- package/dist/generators/built-in/reference-generators.js +320 -0
- package/dist/generators/built-in/reference-generators.js.map +1 -0
- package/dist/generators/codec-based.d.ts +63 -0
- package/dist/generators/codec-based.d.ts.map +1 -0
- package/dist/generators/codec-based.js +88 -0
- package/dist/generators/codec-based.js.map +1 -0
- package/dist/generators/content-deduplicator.d.ts +114 -0
- package/dist/generators/content-deduplicator.d.ts.map +1 -0
- package/dist/generators/content-deduplicator.js +356 -0
- package/dist/generators/content-deduplicator.js.map +1 -0
- package/dist/generators/index.d.ts +50 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +54 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/orchestrator.d.ts +265 -0
- package/dist/generators/orchestrator.d.ts.map +1 -0
- package/dist/generators/orchestrator.js +570 -0
- package/dist/generators/orchestrator.js.map +1 -0
- package/dist/generators/pipeline/build-pipeline.d.ts +131 -0
- package/dist/generators/pipeline/build-pipeline.d.ts.map +1 -0
- package/dist/generators/pipeline/build-pipeline.js +248 -0
- package/dist/generators/pipeline/build-pipeline.js.map +1 -0
- package/dist/generators/pipeline/context-inference.d.ts +55 -0
- package/dist/generators/pipeline/context-inference.d.ts.map +1 -0
- package/dist/generators/pipeline/context-inference.js +76 -0
- package/dist/generators/pipeline/context-inference.js.map +1 -0
- package/dist/generators/pipeline/index.d.ts +27 -0
- package/dist/generators/pipeline/index.d.ts.map +1 -0
- package/dist/generators/pipeline/index.js +34 -0
- package/dist/generators/pipeline/index.js.map +1 -0
- package/dist/generators/pipeline/merge-patterns.d.ts +33 -0
- package/dist/generators/pipeline/merge-patterns.d.ts.map +1 -0
- package/dist/generators/pipeline/merge-patterns.js +50 -0
- package/dist/generators/pipeline/merge-patterns.js.map +1 -0
- package/dist/generators/pipeline/relationship-resolver.d.ts +47 -0
- package/dist/generators/pipeline/relationship-resolver.d.ts.map +1 -0
- package/dist/generators/pipeline/relationship-resolver.js +132 -0
- package/dist/generators/pipeline/relationship-resolver.js.map +1 -0
- package/dist/generators/pipeline/sequence-utils.d.ts +49 -0
- package/dist/generators/pipeline/sequence-utils.d.ts.map +1 -0
- package/dist/generators/pipeline/sequence-utils.js +235 -0
- package/dist/generators/pipeline/sequence-utils.js.map +1 -0
- package/dist/generators/pipeline/transform-dataset.d.ts +82 -0
- package/dist/generators/pipeline/transform-dataset.d.ts.map +1 -0
- package/dist/generators/pipeline/transform-dataset.js +355 -0
- package/dist/generators/pipeline/transform-dataset.js.map +1 -0
- package/dist/generators/pipeline/transform-types.d.ts +96 -0
- package/dist/generators/pipeline/transform-types.d.ts.map +1 -0
- package/dist/generators/pipeline/transform-types.js +18 -0
- package/dist/generators/pipeline/transform-types.js.map +1 -0
- package/dist/generators/registry.d.ts +64 -0
- package/dist/generators/registry.d.ts.map +1 -0
- package/dist/generators/registry.js +77 -0
- package/dist/generators/registry.js.map +1 -0
- package/dist/generators/source-mapper.d.ts +143 -0
- package/dist/generators/source-mapper.d.ts.map +1 -0
- package/dist/generators/source-mapper.js +602 -0
- package/dist/generators/source-mapper.js.map +1 -0
- package/dist/generators/source-mapping-validator.d.ts +118 -0
- package/dist/generators/source-mapping-validator.d.ts.map +1 -0
- package/dist/generators/source-mapping-validator.js +334 -0
- package/dist/generators/source-mapping-validator.js.map +1 -0
- package/dist/generators/types.d.ts +104 -0
- package/dist/generators/types.d.ts.map +1 -0
- package/dist/generators/types.js +5 -0
- package/dist/generators/types.js.map +1 -0
- package/dist/generators/warning-collector.d.ts +144 -0
- package/dist/generators/warning-collector.d.ts.map +1 -0
- package/dist/generators/warning-collector.js +166 -0
- package/dist/generators/warning-collector.js.map +1 -0
- package/dist/git/branch-diff.d.ts +44 -0
- package/dist/git/branch-diff.d.ts.map +1 -0
- package/dist/git/branch-diff.js +57 -0
- package/dist/git/branch-diff.js.map +1 -0
- package/dist/git/helpers.d.ts +46 -0
- package/dist/git/helpers.d.ts.map +1 -0
- package/dist/git/helpers.js +67 -0
- package/dist/git/helpers.js.map +1 -0
- package/dist/git/index.d.ts +18 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +18 -0
- package/dist/git/index.js.map +1 -0
- package/dist/git/name-status.d.ts +32 -0
- package/dist/git/name-status.d.ts.map +1 -0
- package/dist/git/name-status.js +66 -0
- package/dist/git/name-status.js.map +1 -0
- package/dist/index.d.ts +107 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +122 -0
- package/dist/index.js.map +1 -0
- package/dist/lint/engine.d.ts +113 -0
- package/dist/lint/engine.d.ts.map +1 -0
- package/dist/lint/engine.js +228 -0
- package/dist/lint/engine.js.map +1 -0
- package/dist/lint/index.d.ts +26 -0
- package/dist/lint/index.d.ts.map +1 -0
- package/dist/lint/index.js +24 -0
- package/dist/lint/index.js.map +1 -0
- package/dist/lint/process-guard/decider.d.ts +166 -0
- package/dist/lint/process-guard/decider.d.ts.map +1 -0
- package/dist/lint/process-guard/decider.js +412 -0
- package/dist/lint/process-guard/decider.js.map +1 -0
- package/dist/lint/process-guard/derive-state.d.ts +96 -0
- package/dist/lint/process-guard/derive-state.d.ts.map +1 -0
- package/dist/lint/process-guard/derive-state.js +368 -0
- package/dist/lint/process-guard/derive-state.js.map +1 -0
- package/dist/lint/process-guard/detect-changes.d.ts +109 -0
- package/dist/lint/process-guard/detect-changes.d.ts.map +1 -0
- package/dist/lint/process-guard/detect-changes.js +487 -0
- package/dist/lint/process-guard/detect-changes.js.map +1 -0
- package/dist/lint/process-guard/index.d.ts +35 -0
- package/dist/lint/process-guard/index.d.ts.map +1 -0
- package/dist/lint/process-guard/index.js +39 -0
- package/dist/lint/process-guard/index.js.map +1 -0
- package/dist/lint/process-guard/types.d.ts +255 -0
- package/dist/lint/process-guard/types.d.ts.map +1 -0
- package/dist/lint/process-guard/types.js +31 -0
- package/dist/lint/process-guard/types.js.map +1 -0
- package/dist/lint/rules.d.ts +147 -0
- package/dist/lint/rules.d.ts.map +1 -0
- package/dist/lint/rules.js +289 -0
- package/dist/lint/rules.js.map +1 -0
- package/dist/lint/steps/cross-checks.d.ts +66 -0
- package/dist/lint/steps/cross-checks.d.ts.map +1 -0
- package/dist/lint/steps/cross-checks.js +290 -0
- package/dist/lint/steps/cross-checks.js.map +1 -0
- package/dist/lint/steps/feature-checks.d.ts +78 -0
- package/dist/lint/steps/feature-checks.d.ts.map +1 -0
- package/dist/lint/steps/feature-checks.js +279 -0
- package/dist/lint/steps/feature-checks.js.map +1 -0
- package/dist/lint/steps/index.d.ts +22 -0
- package/dist/lint/steps/index.d.ts.map +1 -0
- package/dist/lint/steps/index.js +26 -0
- package/dist/lint/steps/index.js.map +1 -0
- package/dist/lint/steps/pair-resolver.d.ts +29 -0
- package/dist/lint/steps/pair-resolver.d.ts.map +1 -0
- package/dist/lint/steps/pair-resolver.js +76 -0
- package/dist/lint/steps/pair-resolver.js.map +1 -0
- package/dist/lint/steps/runner.d.ts +28 -0
- package/dist/lint/steps/runner.d.ts.map +1 -0
- package/dist/lint/steps/runner.js +143 -0
- package/dist/lint/steps/runner.js.map +1 -0
- package/dist/lint/steps/step-checks.d.ts +41 -0
- package/dist/lint/steps/step-checks.d.ts.map +1 -0
- package/dist/lint/steps/step-checks.js +164 -0
- package/dist/lint/steps/step-checks.js.map +1 -0
- package/dist/lint/steps/types.d.ts +95 -0
- package/dist/lint/steps/types.d.ts.map +1 -0
- package/dist/lint/steps/types.js +79 -0
- package/dist/lint/steps/types.js.map +1 -0
- package/dist/lint/steps/utils.d.ts +22 -0
- package/dist/lint/steps/utils.d.ts.map +1 -0
- package/dist/lint/steps/utils.js +57 -0
- package/dist/lint/steps/utils.js.map +1 -0
- package/dist/mcp/file-watcher.d.ts +24 -0
- package/dist/mcp/file-watcher.d.ts.map +1 -0
- package/dist/mcp/file-watcher.js +75 -0
- package/dist/mcp/file-watcher.js.map +1 -0
- package/dist/mcp/index.d.ts +19 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +21 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/pipeline-session.d.ts +33 -0
- package/dist/mcp/pipeline-session.d.ts.map +1 -0
- package/dist/mcp/pipeline-session.js +149 -0
- package/dist/mcp/pipeline-session.js.map +1 -0
- package/dist/mcp/server.d.ts +28 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +197 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tool-registry.d.ts +4 -0
- package/dist/mcp/tool-registry.d.ts.map +1 -0
- package/dist/mcp/tool-registry.js +525 -0
- package/dist/mcp/tool-registry.js.map +1 -0
- package/dist/renderable/codecs/adr.d.ts +4730 -0
- package/dist/renderable/codecs/adr.d.ts.map +1 -0
- package/dist/renderable/codecs/adr.js +590 -0
- package/dist/renderable/codecs/adr.js.map +1 -0
- package/dist/renderable/codecs/architecture.d.ts +4760 -0
- package/dist/renderable/codecs/architecture.d.ts.map +1 -0
- package/dist/renderable/codecs/architecture.js +524 -0
- package/dist/renderable/codecs/architecture.js.map +1 -0
- package/dist/renderable/codecs/business-rules.d.ts +4777 -0
- package/dist/renderable/codecs/business-rules.d.ts.map +1 -0
- package/dist/renderable/codecs/business-rules.js +648 -0
- package/dist/renderable/codecs/business-rules.js.map +1 -0
- package/dist/renderable/codecs/claude-module.d.ts +4710 -0
- package/dist/renderable/codecs/claude-module.d.ts.map +1 -0
- package/dist/renderable/codecs/claude-module.js +214 -0
- package/dist/renderable/codecs/claude-module.js.map +1 -0
- package/dist/renderable/codecs/composite.d.ts +84 -0
- package/dist/renderable/codecs/composite.d.ts.map +1 -0
- package/dist/renderable/codecs/composite.js +124 -0
- package/dist/renderable/codecs/composite.js.map +1 -0
- package/dist/renderable/codecs/convention-extractor.d.ts +105 -0
- package/dist/renderable/codecs/convention-extractor.d.ts.map +1 -0
- package/dist/renderable/codecs/convention-extractor.js +353 -0
- package/dist/renderable/codecs/convention-extractor.js.map +1 -0
- package/dist/renderable/codecs/decision-doc.d.ts +308 -0
- package/dist/renderable/codecs/decision-doc.d.ts.map +1 -0
- package/dist/renderable/codecs/decision-doc.js +485 -0
- package/dist/renderable/codecs/decision-doc.js.map +1 -0
- package/dist/renderable/codecs/design-review.d.ts +55 -0
- package/dist/renderable/codecs/design-review.d.ts.map +1 -0
- package/dist/renderable/codecs/design-review.js +532 -0
- package/dist/renderable/codecs/design-review.js.map +1 -0
- package/dist/renderable/codecs/diagram-utils.d.ts +62 -0
- package/dist/renderable/codecs/diagram-utils.d.ts.map +1 -0
- package/dist/renderable/codecs/diagram-utils.js +70 -0
- package/dist/renderable/codecs/diagram-utils.js.map +1 -0
- package/dist/renderable/codecs/helpers.d.ts +553 -0
- package/dist/renderable/codecs/helpers.d.ts.map +1 -0
- package/dist/renderable/codecs/helpers.js +913 -0
- package/dist/renderable/codecs/helpers.js.map +1 -0
- package/dist/renderable/codecs/index-codec.d.ts +4714 -0
- package/dist/renderable/codecs/index-codec.d.ts.map +1 -0
- package/dist/renderable/codecs/index-codec.js +250 -0
- package/dist/renderable/codecs/index-codec.js.map +1 -0
- package/dist/renderable/codecs/index.d.ts +46 -0
- package/dist/renderable/codecs/index.d.ts.map +1 -0
- package/dist/renderable/codecs/index.js +70 -0
- package/dist/renderable/codecs/index.js.map +1 -0
- package/dist/renderable/codecs/patterns.d.ts +4757 -0
- package/dist/renderable/codecs/patterns.d.ts.map +1 -0
- package/dist/renderable/codecs/patterns.js +462 -0
- package/dist/renderable/codecs/patterns.js.map +1 -0
- package/dist/renderable/codecs/planning.d.ts +14055 -0
- package/dist/renderable/codecs/planning.d.ts.map +1 -0
- package/dist/renderable/codecs/planning.js +449 -0
- package/dist/renderable/codecs/planning.js.map +1 -0
- package/dist/renderable/codecs/pr-changes.d.ts +4742 -0
- package/dist/renderable/codecs/pr-changes.d.ts.map +1 -0
- package/dist/renderable/codecs/pr-changes.js +425 -0
- package/dist/renderable/codecs/pr-changes.js.map +1 -0
- package/dist/renderable/codecs/reference.d.ts +215 -0
- package/dist/renderable/codecs/reference.d.ts.map +1 -0
- package/dist/renderable/codecs/reference.js +1578 -0
- package/dist/renderable/codecs/reference.js.map +1 -0
- package/dist/renderable/codecs/reporting.d.ts +14026 -0
- package/dist/renderable/codecs/reporting.d.ts.map +1 -0
- package/dist/renderable/codecs/reporting.js +365 -0
- package/dist/renderable/codecs/reporting.js.map +1 -0
- package/dist/renderable/codecs/requirements.d.ts +4743 -0
- package/dist/renderable/codecs/requirements.d.ts.map +1 -0
- package/dist/renderable/codecs/requirements.js +428 -0
- package/dist/renderable/codecs/requirements.js.map +1 -0
- package/dist/renderable/codecs/session.d.ts +9410 -0
- package/dist/renderable/codecs/session.d.ts.map +1 -0
- package/dist/renderable/codecs/session.js +848 -0
- package/dist/renderable/codecs/session.js.map +1 -0
- package/dist/renderable/codecs/shape-matcher.d.ts +54 -0
- package/dist/renderable/codecs/shape-matcher.d.ts.map +1 -0
- package/dist/renderable/codecs/shape-matcher.js +106 -0
- package/dist/renderable/codecs/shape-matcher.js.map +1 -0
- package/dist/renderable/codecs/shared-schema.d.ts +44 -0
- package/dist/renderable/codecs/shared-schema.d.ts.map +1 -0
- package/dist/renderable/codecs/shared-schema.js +43 -0
- package/dist/renderable/codecs/shared-schema.js.map +1 -0
- package/dist/renderable/codecs/taxonomy.d.ts +4733 -0
- package/dist/renderable/codecs/taxonomy.d.ts.map +1 -0
- package/dist/renderable/codecs/taxonomy.js +570 -0
- package/dist/renderable/codecs/taxonomy.js.map +1 -0
- package/dist/renderable/codecs/timeline.d.ts +14094 -0
- package/dist/renderable/codecs/timeline.d.ts.map +1 -0
- package/dist/renderable/codecs/timeline.js +906 -0
- package/dist/renderable/codecs/timeline.js.map +1 -0
- package/dist/renderable/codecs/types/base.d.ts +81 -0
- package/dist/renderable/codecs/types/base.d.ts.map +1 -0
- package/dist/renderable/codecs/types/base.js +56 -0
- package/dist/renderable/codecs/types/base.js.map +1 -0
- package/dist/renderable/codecs/types/index.d.ts +5 -0
- package/dist/renderable/codecs/types/index.d.ts.map +1 -0
- package/dist/renderable/codecs/types/index.js +5 -0
- package/dist/renderable/codecs/types/index.js.map +1 -0
- package/dist/renderable/codecs/validation-rules.d.ts +4773 -0
- package/dist/renderable/codecs/validation-rules.d.ts.map +1 -0
- package/dist/renderable/codecs/validation-rules.js +537 -0
- package/dist/renderable/codecs/validation-rules.js.map +1 -0
- package/dist/renderable/generate.d.ts +338 -0
- package/dist/renderable/generate.d.ts.map +1 -0
- package/dist/renderable/generate.js +437 -0
- package/dist/renderable/generate.js.map +1 -0
- package/dist/renderable/index.d.ts +36 -0
- package/dist/renderable/index.d.ts.map +1 -0
- package/dist/renderable/index.js +58 -0
- package/dist/renderable/index.js.map +1 -0
- package/dist/renderable/load-preamble.d.ts +56 -0
- package/dist/renderable/load-preamble.d.ts.map +1 -0
- package/dist/renderable/load-preamble.js +298 -0
- package/dist/renderable/load-preamble.js.map +1 -0
- package/dist/renderable/render.d.ts +61 -0
- package/dist/renderable/render.d.ts.map +1 -0
- package/dist/renderable/render.js +346 -0
- package/dist/renderable/render.js.map +1 -0
- package/dist/renderable/schema.d.ts +194 -0
- package/dist/renderable/schema.d.ts.map +1 -0
- package/dist/renderable/schema.js +197 -0
- package/dist/renderable/schema.js.map +1 -0
- package/dist/renderable/utils.d.ts +146 -0
- package/dist/renderable/utils.d.ts.map +1 -0
- package/dist/renderable/utils.js +362 -0
- package/dist/renderable/utils.js.map +1 -0
- package/dist/scanner/ast-parser.d.ts +75 -0
- package/dist/scanner/ast-parser.d.ts.map +1 -0
- package/dist/scanner/ast-parser.js +835 -0
- package/dist/scanner/ast-parser.js.map +1 -0
- package/dist/scanner/gherkin-ast-parser.d.ts +166 -0
- package/dist/scanner/gherkin-ast-parser.d.ts.map +1 -0
- package/dist/scanner/gherkin-ast-parser.js +507 -0
- package/dist/scanner/gherkin-ast-parser.js.map +1 -0
- package/dist/scanner/gherkin-scanner.d.ts +106 -0
- package/dist/scanner/gherkin-scanner.d.ts.map +1 -0
- package/dist/scanner/gherkin-scanner.js +149 -0
- package/dist/scanner/gherkin-scanner.js.map +1 -0
- package/dist/scanner/index.d.ts +85 -0
- package/dist/scanner/index.d.ts.map +1 -0
- package/dist/scanner/index.js +102 -0
- package/dist/scanner/index.js.map +1 -0
- package/dist/scanner/pattern-scanner.d.ts +83 -0
- package/dist/scanner/pattern-scanner.d.ts.map +1 -0
- package/dist/scanner/pattern-scanner.js +110 -0
- package/dist/scanner/pattern-scanner.js.map +1 -0
- package/dist/taxonomy/categories.d.ts +47 -0
- package/dist/taxonomy/categories.d.ts.map +1 -0
- package/dist/taxonomy/categories.js +175 -0
- package/dist/taxonomy/categories.js.map +1 -0
- package/dist/taxonomy/claude-section-values.d.ts +12 -0
- package/dist/taxonomy/claude-section-values.d.ts.map +1 -0
- package/dist/taxonomy/claude-section-values.js +17 -0
- package/dist/taxonomy/claude-section-values.js.map +1 -0
- package/dist/taxonomy/conventions.d.ts +13 -0
- package/dist/taxonomy/conventions.d.ts.map +1 -0
- package/dist/taxonomy/conventions.js +27 -0
- package/dist/taxonomy/conventions.js.map +1 -0
- package/dist/taxonomy/deliverable-status.d.ts +99 -0
- package/dist/taxonomy/deliverable-status.d.ts.map +1 -0
- package/dist/taxonomy/deliverable-status.js +131 -0
- package/dist/taxonomy/deliverable-status.js.map +1 -0
- package/dist/taxonomy/format-types.d.ts +17 -0
- package/dist/taxonomy/format-types.d.ts.map +1 -0
- package/dist/taxonomy/format-types.js +23 -0
- package/dist/taxonomy/format-types.js.map +1 -0
- package/dist/taxonomy/generator-options.d.ts +67 -0
- package/dist/taxonomy/generator-options.d.ts.map +1 -0
- package/dist/taxonomy/generator-options.js +75 -0
- package/dist/taxonomy/generator-options.js.map +1 -0
- package/dist/taxonomy/hierarchy-levels.d.ts +23 -0
- package/dist/taxonomy/hierarchy-levels.d.ts.map +1 -0
- package/dist/taxonomy/hierarchy-levels.js +22 -0
- package/dist/taxonomy/hierarchy-levels.js.map +1 -0
- package/dist/taxonomy/index.d.ts +35 -0
- package/dist/taxonomy/index.d.ts.map +1 -0
- package/dist/taxonomy/index.js +56 -0
- package/dist/taxonomy/index.js.map +1 -0
- package/dist/taxonomy/layer-types.d.ts +22 -0
- package/dist/taxonomy/layer-types.d.ts.map +1 -0
- package/dist/taxonomy/layer-types.js +28 -0
- package/dist/taxonomy/layer-types.js.map +1 -0
- package/dist/taxonomy/normalized-status.d.ts +99 -0
- package/dist/taxonomy/normalized-status.d.ts.map +1 -0
- package/dist/taxonomy/normalized-status.js +113 -0
- package/dist/taxonomy/normalized-status.js.map +1 -0
- package/dist/taxonomy/registry-builder.d.ts +104 -0
- package/dist/taxonomy/registry-builder.d.ts.map +1 -0
- package/dist/taxonomy/registry-builder.js +561 -0
- package/dist/taxonomy/registry-builder.js.map +1 -0
- package/dist/taxonomy/risk-levels.d.ts +16 -0
- package/dist/taxonomy/risk-levels.d.ts.map +1 -0
- package/dist/taxonomy/risk-levels.js +15 -0
- package/dist/taxonomy/risk-levels.js.map +1 -0
- package/dist/taxonomy/severity-types.d.ts +6 -0
- package/dist/taxonomy/severity-types.d.ts.map +1 -0
- package/dist/taxonomy/severity-types.js +5 -0
- package/dist/taxonomy/severity-types.js.map +1 -0
- package/dist/taxonomy/status-values.d.ts +39 -0
- package/dist/taxonomy/status-values.d.ts.map +1 -0
- package/dist/taxonomy/status-values.js +42 -0
- package/dist/taxonomy/status-values.js.map +1 -0
- package/dist/types/branded.d.ts +89 -0
- package/dist/types/branded.d.ts.map +1 -0
- package/dist/types/branded.js +57 -0
- package/dist/types/branded.js.map +1 -0
- package/dist/types/errors.d.ts +342 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +251 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/index.d.ts +41 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/result.d.ts +78 -0
- package/dist/types/result.d.ts.map +1 -0
- package/dist/types/result.js +78 -0
- package/dist/types/result.js.map +1 -0
- package/dist/utils/collection-utils.d.ts +49 -0
- package/dist/utils/collection-utils.d.ts.map +1 -0
- package/dist/utils/collection-utils.js +58 -0
- package/dist/utils/collection-utils.js.map +1 -0
- package/dist/utils/id-utils.d.ts +46 -0
- package/dist/utils/id-utils.d.ts.map +1 -0
- package/dist/utils/id-utils.js +51 -0
- package/dist/utils/id-utils.js.map +1 -0
- package/dist/utils/index.d.ts +21 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +21 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/string-utils.d.ts +150 -0
- package/dist/utils/string-utils.d.ts.map +1 -0
- package/dist/utils/string-utils.js +281 -0
- package/dist/utils/string-utils.js.map +1 -0
- package/dist/validation/anti-patterns.d.ts +134 -0
- package/dist/validation/anti-patterns.d.ts.map +1 -0
- package/dist/validation/anti-patterns.js +307 -0
- package/dist/validation/anti-patterns.js.map +1 -0
- package/dist/validation/dod-validator.d.ts +94 -0
- package/dist/validation/dod-validator.d.ts.map +1 -0
- package/dist/validation/dod-validator.js +198 -0
- package/dist/validation/dod-validator.js.map +1 -0
- package/dist/validation/fsm/index.d.ts +59 -0
- package/dist/validation/fsm/index.d.ts.map +1 -0
- package/dist/validation/fsm/index.js +64 -0
- package/dist/validation/fsm/index.js.map +1 -0
- package/dist/validation/fsm/states.d.ts +93 -0
- package/dist/validation/fsm/states.d.ts.map +1 -0
- package/dist/validation/fsm/states.js +98 -0
- package/dist/validation/fsm/states.js.map +1 -0
- package/dist/validation/fsm/transitions.d.ts +100 -0
- package/dist/validation/fsm/transitions.d.ts.map +1 -0
- package/dist/validation/fsm/transitions.js +122 -0
- package/dist/validation/fsm/transitions.js.map +1 -0
- package/dist/validation/fsm/validator.d.ts +163 -0
- package/dist/validation/fsm/validator.d.ts.map +1 -0
- package/dist/validation/fsm/validator.js +205 -0
- package/dist/validation/fsm/validator.js.map +1 -0
- package/dist/validation/index.d.ts +23 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +25 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/types.d.ts +136 -0
- package/dist/validation/types.d.ts.map +1 -0
- package/dist/validation/types.js +56 -0
- package/dist/validation/types.js.map +1 -0
- package/dist/validation-schemas/codec-utils.d.ts +188 -0
- package/dist/validation-schemas/codec-utils.d.ts.map +1 -0
- package/dist/validation-schemas/codec-utils.js +258 -0
- package/dist/validation-schemas/codec-utils.js.map +1 -0
- package/dist/validation-schemas/config.d.ts +99 -0
- package/dist/validation-schemas/config.d.ts.map +1 -0
- package/dist/validation-schemas/config.js +178 -0
- package/dist/validation-schemas/config.js.map +1 -0
- package/dist/validation-schemas/doc-directive.d.ts +195 -0
- package/dist/validation-schemas/doc-directive.d.ts.map +1 -0
- package/dist/validation-schemas/doc-directive.js +239 -0
- package/dist/validation-schemas/doc-directive.js.map +1 -0
- package/dist/validation-schemas/dual-source.d.ts +167 -0
- package/dist/validation-schemas/dual-source.d.ts.map +1 -0
- package/dist/validation-schemas/dual-source.js +168 -0
- package/dist/validation-schemas/dual-source.js.map +1 -0
- package/dist/validation-schemas/export-info.d.ts +53 -0
- package/dist/validation-schemas/export-info.d.ts.map +1 -0
- package/dist/validation-schemas/export-info.js +101 -0
- package/dist/validation-schemas/export-info.js.map +1 -0
- package/dist/validation-schemas/extracted-pattern.d.ts +351 -0
- package/dist/validation-schemas/extracted-pattern.d.ts.map +1 -0
- package/dist/validation-schemas/extracted-pattern.js +459 -0
- package/dist/validation-schemas/extracted-pattern.js.map +1 -0
- package/dist/validation-schemas/extracted-shape.d.ts +200 -0
- package/dist/validation-schemas/extracted-shape.d.ts.map +1 -0
- package/dist/validation-schemas/extracted-shape.js +182 -0
- package/dist/validation-schemas/extracted-shape.js.map +1 -0
- package/dist/validation-schemas/feature.d.ts +554 -0
- package/dist/validation-schemas/feature.d.ts.map +1 -0
- package/dist/validation-schemas/feature.js +262 -0
- package/dist/validation-schemas/feature.js.map +1 -0
- package/dist/validation-schemas/index.d.ts +15 -0
- package/dist/validation-schemas/index.d.ts.map +1 -0
- package/dist/validation-schemas/index.js +32 -0
- package/dist/validation-schemas/index.js.map +1 -0
- package/dist/validation-schemas/lint.d.ts +46 -0
- package/dist/validation-schemas/lint.d.ts.map +1 -0
- package/dist/validation-schemas/lint.js +45 -0
- package/dist/validation-schemas/lint.js.map +1 -0
- package/dist/validation-schemas/master-dataset.d.ts +8299 -0
- package/dist/validation-schemas/master-dataset.d.ts.map +1 -0
- package/dist/validation-schemas/master-dataset.js +275 -0
- package/dist/validation-schemas/master-dataset.js.map +1 -0
- package/dist/validation-schemas/output-schemas.d.ts +183 -0
- package/dist/validation-schemas/output-schemas.d.ts.map +1 -0
- package/dist/validation-schemas/output-schemas.js +149 -0
- package/dist/validation-schemas/output-schemas.js.map +1 -0
- package/dist/validation-schemas/scenario-ref.d.ts +80 -0
- package/dist/validation-schemas/scenario-ref.d.ts.map +1 -0
- package/dist/validation-schemas/scenario-ref.js +73 -0
- package/dist/validation-schemas/scenario-ref.js.map +1 -0
- package/dist/validation-schemas/tag-registry.d.ts +210 -0
- package/dist/validation-schemas/tag-registry.d.ts.map +1 -0
- package/dist/validation-schemas/tag-registry.js +248 -0
- package/dist/validation-schemas/tag-registry.js.map +1 -0
- package/dist/validation-schemas/workflow-config.d.ts +125 -0
- package/dist/validation-schemas/workflow-config.d.ts.map +1 -0
- package/dist/validation-schemas/workflow-config.js +138 -0
- package/dist/validation-schemas/workflow-config.js.map +1 -0
- package/docs/ANNOTATION-GUIDE.md +271 -0
- package/docs/ARCHITECTURE.md +1636 -0
- package/docs/CONFIGURATION.md +337 -0
- package/docs/DOCS-GAP-ANALYSIS.md +811 -0
- package/docs/GHERKIN-PATTERNS.md +366 -0
- package/docs/INDEX.md +345 -0
- package/docs/MCP-SETUP.md +140 -0
- package/docs/METHODOLOGY.md +240 -0
- package/docs/PROCESS-API.md +65 -0
- package/docs/PROCESS-GUARD.md +341 -0
- package/docs/SESSION-GUIDES.md +391 -0
- package/docs/TAXONOMY.md +106 -0
- package/docs/VALIDATION.md +418 -0
- package/docs-live/ARCHITECTURE.md +362 -0
- package/docs-live/BUSINESS-RULES.md +24 -0
- package/docs-live/CHANGELOG-GENERATED.md +375 -0
- package/docs-live/DECISIONS.md +78 -0
- package/docs-live/INDEX.md +231 -0
- package/docs-live/PRODUCT-AREAS.md +255 -0
- package/docs-live/TAXONOMY.md +202 -0
- package/docs-live/VALIDATION-RULES.md +119 -0
- package/docs-live/_claude-md/annotation/annotation-overview.md +26 -0
- package/docs-live/_claude-md/annotation/annotation-reference.md +213 -0
- package/docs-live/_claude-md/architecture/architecture-codecs.md +160 -0
- package/docs-live/_claude-md/architecture/architecture-types.md +32 -0
- package/docs-live/_claude-md/architecture/reference-sample.md +162 -0
- package/docs-live/_claude-md/authoring/gherkin-authoring-guide.md +245 -0
- package/docs-live/_claude-md/configuration/configuration-guide.md +216 -0
- package/docs-live/_claude-md/configuration/configuration-overview.md +37 -0
- package/docs-live/_claude-md/core-types/core-types-overview.md +20 -0
- package/docs-live/_claude-md/data-api/data-api-overview.md +39 -0
- package/docs-live/_claude-md/generation/generation-overview.md +30 -0
- package/docs-live/_claude-md/process/process-overview.md +127 -0
- package/docs-live/_claude-md/validation/process-guard.md +185 -0
- package/docs-live/_claude-md/validation/validation-overview.md +37 -0
- package/docs-live/_claude-md/validation/validation-tools-guide.md +242 -0
- package/docs-live/_claude-md/workflow/session-workflow-guide.md +141 -0
- package/docs-live/business-rules/annotation.md +1462 -0
- package/docs-live/business-rules/configuration.md +465 -0
- package/docs-live/business-rules/core-types.md +531 -0
- package/docs-live/business-rules/data-api.md +1403 -0
- package/docs-live/business-rules/generation.md +4726 -0
- package/docs-live/business-rules/process.md +122 -0
- package/docs-live/business-rules/validation.md +998 -0
- package/docs-live/decisions/adr-001-taxonomy-canonical-values.md +197 -0
- package/docs-live/decisions/adr-002-gherkin-only-testing.md +57 -0
- package/docs-live/decisions/adr-003-source-first-pattern-architecture.md +147 -0
- package/docs-live/decisions/adr-004-session-workflow-commands.md +137 -0
- package/docs-live/decisions/adr-005-codec-based-markdown-rendering.md +150 -0
- package/docs-live/decisions/adr-006-single-read-model-architecture.md +136 -0
- package/docs-live/decisions/adr-021-doc-generation-proof-of-concept.md +489 -0
- package/docs-live/product-areas/ANNOTATION.md +591 -0
- package/docs-live/product-areas/CONFIGURATION.md +1048 -0
- package/docs-live/product-areas/CORE-TYPES.md +221 -0
- package/docs-live/product-areas/DATA-API.md +850 -0
- package/docs-live/product-areas/GENERATION.md +1200 -0
- package/docs-live/product-areas/PROCESS.md +351 -0
- package/docs-live/product-areas/VALIDATION.md +1135 -0
- package/docs-live/reference/ANNOTATION-REFERENCE.md +232 -0
- package/docs-live/reference/ARCHITECTURE-CODECS.md +675 -0
- package/docs-live/reference/ARCHITECTURE-TYPES.md +436 -0
- package/docs-live/reference/CONFIGURATION-GUIDE.md +235 -0
- package/docs-live/reference/GHERKIN-AUTHORING-GUIDE.md +270 -0
- package/docs-live/reference/PROCESS-API-RECIPES.md +476 -0
- package/docs-live/reference/PROCESS-API-REFERENCE.md +63 -0
- package/docs-live/reference/PROCESS-GUARD-REFERENCE.md +258 -0
- package/docs-live/reference/REFERENCE-SAMPLE.md +1135 -0
- package/docs-live/reference/SESSION-WORKFLOW-GUIDE.md +384 -0
- package/docs-live/reference/VALIDATION-TOOLS-GUIDE.md +263 -0
- package/docs-live/taxonomy/categories.md +33 -0
- package/docs-live/taxonomy/format-types.md +67 -0
- package/docs-live/taxonomy/metadata-tags.md +693 -0
- package/docs-live/validation/error-catalog.md +78 -0
- package/docs-live/validation/fsm-transitions.md +50 -0
- package/docs-live/validation/protection-levels.md +51 -0
- package/package.json +233 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @architect
|
|
3
|
+
* @architect-validation
|
|
4
|
+
* @architect-pattern AntiPatternDetector
|
|
5
|
+
* @architect-status completed
|
|
6
|
+
* @architect-arch-role service
|
|
7
|
+
* @architect-arch-context validation
|
|
8
|
+
* @architect-arch-layer application
|
|
9
|
+
* @architect-uses DoDValidationTypes, GherkinTypes
|
|
10
|
+
* @architect-extract-shapes AntiPatternDetectionOptions, detectAntiPatterns, detectProcessInCode, detectMagicComments, detectScenarioBloat, detectMegaFeature, formatAntiPatternReport, toValidationIssues
|
|
11
|
+
*
|
|
12
|
+
* ## AntiPatternDetector - Documentation Anti-Pattern Detection
|
|
13
|
+
*
|
|
14
|
+
* Detects violations of the dual-source documentation architecture and
|
|
15
|
+
* process hygiene issues that lead to documentation drift.
|
|
16
|
+
*
|
|
17
|
+
* ### Anti-Patterns Detected
|
|
18
|
+
*
|
|
19
|
+
* | ID | Severity | Description |
|
|
20
|
+
* |----|----------|-------------|
|
|
21
|
+
* | tag-duplication | error | Dependencies in features (should be code-only) |
|
|
22
|
+
* | process-in-code | error | Process metadata in code (should be features-only) |
|
|
23
|
+
* | magic-comments | warning | Generator hints in features |
|
|
24
|
+
* | scenario-bloat | warning | Too many scenarios per feature |
|
|
25
|
+
* | mega-feature | warning | Feature file too large |
|
|
26
|
+
*
|
|
27
|
+
* ### When to Use
|
|
28
|
+
*
|
|
29
|
+
* - Pre-commit validation to catch architecture violations early
|
|
30
|
+
* - CI pipeline to enforce documentation standards
|
|
31
|
+
* - Code review checklists for documentation quality
|
|
32
|
+
*/
|
|
33
|
+
import type { ScannedGherkinFile } from '../validation-schemas/feature.js';
|
|
34
|
+
import type { TagRegistry } from '../validation-schemas/tag-registry.js';
|
|
35
|
+
import type { ScannedFile } from '../scanner/index.js';
|
|
36
|
+
import type { AntiPatternViolation, AntiPatternThresholds, WithTagRegistry } from './types.js';
|
|
37
|
+
export type { AntiPatternViolation, AntiPatternThresholds } from './types.js';
|
|
38
|
+
/**
|
|
39
|
+
* Configuration options for anti-pattern detection
|
|
40
|
+
*/
|
|
41
|
+
export interface AntiPatternDetectionOptions extends WithTagRegistry {
|
|
42
|
+
/** Thresholds for warning triggers */
|
|
43
|
+
readonly thresholds?: Partial<AntiPatternThresholds>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Detect process metadata in code anti-pattern
|
|
47
|
+
*
|
|
48
|
+
* Finds process tracking annotations (e.g., @architect-quarter, @architect-team, etc.)
|
|
49
|
+
* in TypeScript files. Process metadata belongs in feature files.
|
|
50
|
+
*
|
|
51
|
+
* @param scannedFiles - Array of scanned TypeScript files
|
|
52
|
+
* @param registry - Optional tag registry for prefix-aware detection (defaults to @architect-)
|
|
53
|
+
* @returns Array of anti-pattern violations
|
|
54
|
+
*/
|
|
55
|
+
export declare function detectProcessInCode(scannedFiles: readonly ScannedFile[], registry?: TagRegistry): AntiPatternViolation[];
|
|
56
|
+
/**
|
|
57
|
+
* Detect magic comments anti-pattern
|
|
58
|
+
*
|
|
59
|
+
* Finds generator hints like "# GENERATOR:", "# PARSER:" in feature files.
|
|
60
|
+
* These create tight coupling between features and generators.
|
|
61
|
+
*
|
|
62
|
+
* @param features - Array of scanned feature files
|
|
63
|
+
* @param threshold - Maximum magic comments before warning (default: 5)
|
|
64
|
+
* @returns Array of anti-pattern violations
|
|
65
|
+
*/
|
|
66
|
+
export declare function detectMagicComments(features: readonly ScannedGherkinFile[], threshold?: number): AntiPatternViolation[];
|
|
67
|
+
/**
|
|
68
|
+
* Detect scenario bloat anti-pattern
|
|
69
|
+
*
|
|
70
|
+
* Finds feature files with too many scenarios, which indicates poor
|
|
71
|
+
* organization and slows test suites.
|
|
72
|
+
*
|
|
73
|
+
* @param features - Array of scanned feature files
|
|
74
|
+
* @param threshold - Maximum scenarios before warning (default: 20)
|
|
75
|
+
* @returns Array of anti-pattern violations
|
|
76
|
+
*/
|
|
77
|
+
export declare function detectScenarioBloat(features: readonly ScannedGherkinFile[], threshold?: number): AntiPatternViolation[];
|
|
78
|
+
/**
|
|
79
|
+
* Detect mega-feature anti-pattern
|
|
80
|
+
*
|
|
81
|
+
* Finds feature files that are too large, which makes them hard to
|
|
82
|
+
* maintain and review.
|
|
83
|
+
*
|
|
84
|
+
* @param features - Array of scanned feature files
|
|
85
|
+
* @param threshold - Maximum lines before warning (default: 500)
|
|
86
|
+
* @returns Array of anti-pattern violations
|
|
87
|
+
*/
|
|
88
|
+
export declare function detectMegaFeature(features: readonly ScannedGherkinFile[], threshold?: number): AntiPatternViolation[];
|
|
89
|
+
/**
|
|
90
|
+
* Detect all anti-patterns
|
|
91
|
+
*
|
|
92
|
+
* Runs all anti-pattern detectors and returns combined violations.
|
|
93
|
+
*
|
|
94
|
+
* @param scannedFiles - Array of scanned TypeScript files
|
|
95
|
+
* @param features - Array of scanned feature files
|
|
96
|
+
* @param options - Optional configuration (registry for prefix, thresholds)
|
|
97
|
+
* @returns Array of all detected anti-pattern violations
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* // With default prefix (@architect-)
|
|
102
|
+
* const violations = detectAntiPatterns(tsFiles, featureFiles);
|
|
103
|
+
*
|
|
104
|
+
* // With custom prefix
|
|
105
|
+
* const registry = createDefaultTagRegistry();
|
|
106
|
+
* registry.tagPrefix = "@architect-";
|
|
107
|
+
* const customViolations = detectAntiPatterns(tsFiles, featureFiles, { registry });
|
|
108
|
+
*
|
|
109
|
+
* for (const v of violations) {
|
|
110
|
+
* console.log(`[${v.severity.toUpperCase()}] ${v.id}: ${v.message}`);
|
|
111
|
+
* }
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
export declare function detectAntiPatterns(scannedFiles: readonly ScannedFile[], features: readonly ScannedGherkinFile[], options?: AntiPatternDetectionOptions): AntiPatternViolation[];
|
|
115
|
+
/**
|
|
116
|
+
* Format anti-pattern violations for console output
|
|
117
|
+
*
|
|
118
|
+
* @param violations - Array of violations to format
|
|
119
|
+
* @returns Multi-line string for pretty printing
|
|
120
|
+
*/
|
|
121
|
+
export declare function formatAntiPatternReport(violations: AntiPatternViolation[]): string;
|
|
122
|
+
/**
|
|
123
|
+
* Convert anti-pattern violations to ValidationIssue format
|
|
124
|
+
*
|
|
125
|
+
* For integration with the existing validate-patterns CLI.
|
|
126
|
+
*/
|
|
127
|
+
export declare function toValidationIssues(violations: readonly AntiPatternViolation[]): Array<{
|
|
128
|
+
severity: 'error' | 'warning' | 'info';
|
|
129
|
+
message: string;
|
|
130
|
+
source: 'typescript' | 'gherkin' | 'cross-source';
|
|
131
|
+
pattern?: string;
|
|
132
|
+
file?: string;
|
|
133
|
+
}>;
|
|
134
|
+
//# sourceMappingURL=anti-patterns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anti-patterns.d.ts","sourceRoot":"","sources":["../../src/validation/anti-patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAK/F,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAoC9E;;GAEG;AACH,MAAM,WAAW,2BAA4B,SAAQ,eAAe;IAClE,sCAAsC;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACtD;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,SAAS,WAAW,EAAE,EACpC,QAAQ,CAAC,EAAE,WAAW,GACrB,oBAAoB,EAAE,CA6BxB;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,EACvC,SAAS,GAAE,MAAiD,GAC3D,oBAAoB,EAAE,CAoCxB;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,EACvC,SAAS,GAAE,MAAkD,GAC5D,oBAAoB,EAAE,CAiBxB;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,SAAS,kBAAkB,EAAE,EACvC,SAAS,GAAE,MAAoD,GAC9D,oBAAoB,EAAE,CAuBxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,SAAS,WAAW,EAAE,EACpC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,EACvC,OAAO,GAAE,2BAAgC,GACxC,oBAAoB,EAAE,CAexB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,MAAM,CA8ClF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,oBAAoB,EAAE,GAAG,KAAK,CAAC;IACrF,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,cAAc,CAAC;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC,CAOD"}
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @architect
|
|
3
|
+
* @architect-validation
|
|
4
|
+
* @architect-pattern AntiPatternDetector
|
|
5
|
+
* @architect-status completed
|
|
6
|
+
* @architect-arch-role service
|
|
7
|
+
* @architect-arch-context validation
|
|
8
|
+
* @architect-arch-layer application
|
|
9
|
+
* @architect-uses DoDValidationTypes, GherkinTypes
|
|
10
|
+
* @architect-extract-shapes AntiPatternDetectionOptions, detectAntiPatterns, detectProcessInCode, detectMagicComments, detectScenarioBloat, detectMegaFeature, formatAntiPatternReport, toValidationIssues
|
|
11
|
+
*
|
|
12
|
+
* ## AntiPatternDetector - Documentation Anti-Pattern Detection
|
|
13
|
+
*
|
|
14
|
+
* Detects violations of the dual-source documentation architecture and
|
|
15
|
+
* process hygiene issues that lead to documentation drift.
|
|
16
|
+
*
|
|
17
|
+
* ### Anti-Patterns Detected
|
|
18
|
+
*
|
|
19
|
+
* | ID | Severity | Description |
|
|
20
|
+
* |----|----------|-------------|
|
|
21
|
+
* | tag-duplication | error | Dependencies in features (should be code-only) |
|
|
22
|
+
* | process-in-code | error | Process metadata in code (should be features-only) |
|
|
23
|
+
* | magic-comments | warning | Generator hints in features |
|
|
24
|
+
* | scenario-bloat | warning | Too many scenarios per feature |
|
|
25
|
+
* | mega-feature | warning | Feature file too large |
|
|
26
|
+
*
|
|
27
|
+
* ### When to Use
|
|
28
|
+
*
|
|
29
|
+
* - Pre-commit validation to catch architecture violations early
|
|
30
|
+
* - CI pipeline to enforce documentation standards
|
|
31
|
+
* - Code review checklists for documentation quality
|
|
32
|
+
*/
|
|
33
|
+
import { readFileSync } from 'fs';
|
|
34
|
+
import { DEFAULT_THRESHOLDS } from './types.js';
|
|
35
|
+
import { DEFAULT_TAG_PREFIX } from '../config/defaults.js';
|
|
36
|
+
/**
|
|
37
|
+
* Tag suffixes that should only appear in feature files, not TypeScript code.
|
|
38
|
+
* These are process metadata tags that track delivery workflow state.
|
|
39
|
+
*/
|
|
40
|
+
const FEATURE_ONLY_TAG_SUFFIXES = [
|
|
41
|
+
'quarter',
|
|
42
|
+
'team',
|
|
43
|
+
'effort',
|
|
44
|
+
'workflow',
|
|
45
|
+
'completed',
|
|
46
|
+
'effort-actual',
|
|
47
|
+
];
|
|
48
|
+
/**
|
|
49
|
+
* Builds feature-only annotation list from the tag prefix.
|
|
50
|
+
* These tags should appear in feature files, not TypeScript code.
|
|
51
|
+
*
|
|
52
|
+
* @param tagPrefix - The tag prefix (e.g., "@architect-" or "@acme-")
|
|
53
|
+
* @returns Array of full annotation strings (e.g., ["@architect-quarter", "@architect-team", ...])
|
|
54
|
+
*/
|
|
55
|
+
function buildFeatureOnlyAnnotations(tagPrefix) {
|
|
56
|
+
return FEATURE_ONLY_TAG_SUFFIXES.map((suffix) => `${tagPrefix}${suffix}`);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Magic comment patterns that indicate generator coupling
|
|
60
|
+
*/
|
|
61
|
+
const MAGIC_COMMENT_PATTERNS = [
|
|
62
|
+
/^#\s*GENERATOR:/i,
|
|
63
|
+
/^#\s*PARSER:/i,
|
|
64
|
+
/^#\s*AUTO-GEN:/i,
|
|
65
|
+
/^#\s*DO NOT EDIT/i,
|
|
66
|
+
];
|
|
67
|
+
/**
|
|
68
|
+
* Detect process metadata in code anti-pattern
|
|
69
|
+
*
|
|
70
|
+
* Finds process tracking annotations (e.g., @architect-quarter, @architect-team, etc.)
|
|
71
|
+
* in TypeScript files. Process metadata belongs in feature files.
|
|
72
|
+
*
|
|
73
|
+
* @param scannedFiles - Array of scanned TypeScript files
|
|
74
|
+
* @param registry - Optional tag registry for prefix-aware detection (defaults to @architect-)
|
|
75
|
+
* @returns Array of anti-pattern violations
|
|
76
|
+
*/
|
|
77
|
+
export function detectProcessInCode(scannedFiles, registry) {
|
|
78
|
+
const violations = [];
|
|
79
|
+
const tagPrefix = registry?.tagPrefix ?? DEFAULT_TAG_PREFIX;
|
|
80
|
+
const featureOnlyAnnotations = buildFeatureOnlyAnnotations(tagPrefix);
|
|
81
|
+
for (const file of scannedFiles) {
|
|
82
|
+
for (const { directive } of file.directives) {
|
|
83
|
+
// Check tags array for process annotations that shouldn't be in code
|
|
84
|
+
for (const tag of directive.tags) {
|
|
85
|
+
const normalizedTag = tag.toLowerCase();
|
|
86
|
+
for (const annotation of featureOnlyAnnotations) {
|
|
87
|
+
if (normalizedTag === annotation.toLowerCase()) {
|
|
88
|
+
// Extract the suffix part after the prefix
|
|
89
|
+
const suffix = annotation.slice(tagPrefix.length);
|
|
90
|
+
violations.push({
|
|
91
|
+
id: 'process-in-code',
|
|
92
|
+
message: `Annotation "${tag}" found in TypeScript code. Process metadata belongs in feature files.`,
|
|
93
|
+
file: file.filePath,
|
|
94
|
+
line: directive.position.startLine,
|
|
95
|
+
severity: 'error',
|
|
96
|
+
fix: `Move to corresponding .feature file using @architect-${suffix} tag.`,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return violations;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Detect magic comments anti-pattern
|
|
107
|
+
*
|
|
108
|
+
* Finds generator hints like "# GENERATOR:", "# PARSER:" in feature files.
|
|
109
|
+
* These create tight coupling between features and generators.
|
|
110
|
+
*
|
|
111
|
+
* @param features - Array of scanned feature files
|
|
112
|
+
* @param threshold - Maximum magic comments before warning (default: 5)
|
|
113
|
+
* @returns Array of anti-pattern violations
|
|
114
|
+
*/
|
|
115
|
+
export function detectMagicComments(features, threshold = DEFAULT_THRESHOLDS.magicCommentThreshold) {
|
|
116
|
+
const violations = [];
|
|
117
|
+
for (const feature of features) {
|
|
118
|
+
try {
|
|
119
|
+
const content = readFileSync(feature.filePath, 'utf-8');
|
|
120
|
+
const lines = content.split('\n');
|
|
121
|
+
const magicComments = [];
|
|
122
|
+
for (let i = 0; i < lines.length; i++) {
|
|
123
|
+
const rawLine = lines[i];
|
|
124
|
+
if (!rawLine)
|
|
125
|
+
continue;
|
|
126
|
+
const line = rawLine.trim();
|
|
127
|
+
for (const pattern of MAGIC_COMMENT_PATTERNS) {
|
|
128
|
+
if (pattern.test(line)) {
|
|
129
|
+
magicComments.push({ line: i + 1, text: line });
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (magicComments.length > threshold) {
|
|
135
|
+
violations.push({
|
|
136
|
+
id: 'magic-comments',
|
|
137
|
+
message: `Feature file has ${magicComments.length} magic comments (threshold: ${threshold}). This creates tight coupling with generators.`,
|
|
138
|
+
file: feature.filePath,
|
|
139
|
+
severity: 'warning',
|
|
140
|
+
fix: `Reduce generator hints. Use standard Gherkin tags and structured data instead.`,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
// Ignore read errors - file may have been deleted
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return violations;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Detect scenario bloat anti-pattern
|
|
152
|
+
*
|
|
153
|
+
* Finds feature files with too many scenarios, which indicates poor
|
|
154
|
+
* organization and slows test suites.
|
|
155
|
+
*
|
|
156
|
+
* @param features - Array of scanned feature files
|
|
157
|
+
* @param threshold - Maximum scenarios before warning (default: 20)
|
|
158
|
+
* @returns Array of anti-pattern violations
|
|
159
|
+
*/
|
|
160
|
+
export function detectScenarioBloat(features, threshold = DEFAULT_THRESHOLDS.scenarioBloatThreshold) {
|
|
161
|
+
const violations = [];
|
|
162
|
+
for (const feature of features) {
|
|
163
|
+
const scenarioCount = feature.scenarios.length;
|
|
164
|
+
if (scenarioCount > threshold) {
|
|
165
|
+
violations.push({
|
|
166
|
+
id: 'scenario-bloat',
|
|
167
|
+
message: `Feature file has ${scenarioCount} scenarios (threshold: ${threshold}). Consider splitting by component or domain.`,
|
|
168
|
+
file: feature.filePath,
|
|
169
|
+
severity: 'warning',
|
|
170
|
+
fix: `Split into multiple .feature files organized by component, use case, or business capability.`,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return violations;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Detect mega-feature anti-pattern
|
|
178
|
+
*
|
|
179
|
+
* Finds feature files that are too large, which makes them hard to
|
|
180
|
+
* maintain and review.
|
|
181
|
+
*
|
|
182
|
+
* @param features - Array of scanned feature files
|
|
183
|
+
* @param threshold - Maximum lines before warning (default: 500)
|
|
184
|
+
* @returns Array of anti-pattern violations
|
|
185
|
+
*/
|
|
186
|
+
export function detectMegaFeature(features, threshold = DEFAULT_THRESHOLDS.megaFeatureLineThreshold) {
|
|
187
|
+
const violations = [];
|
|
188
|
+
for (const feature of features) {
|
|
189
|
+
try {
|
|
190
|
+
const content = readFileSync(feature.filePath, 'utf-8');
|
|
191
|
+
const lineCount = content.split('\n').length;
|
|
192
|
+
if (lineCount > threshold) {
|
|
193
|
+
violations.push({
|
|
194
|
+
id: 'mega-feature',
|
|
195
|
+
message: `Feature file has ${lineCount} lines (threshold: ${threshold}). Large files are hard to review and maintain.`,
|
|
196
|
+
file: feature.filePath,
|
|
197
|
+
severity: 'warning',
|
|
198
|
+
fix: `Split into multiple smaller .feature files organized by component or business domain.`,
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
// Ignore read errors - file may have been deleted
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return violations;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Detect all anti-patterns
|
|
210
|
+
*
|
|
211
|
+
* Runs all anti-pattern detectors and returns combined violations.
|
|
212
|
+
*
|
|
213
|
+
* @param scannedFiles - Array of scanned TypeScript files
|
|
214
|
+
* @param features - Array of scanned feature files
|
|
215
|
+
* @param options - Optional configuration (registry for prefix, thresholds)
|
|
216
|
+
* @returns Array of all detected anti-pattern violations
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* ```typescript
|
|
220
|
+
* // With default prefix (@architect-)
|
|
221
|
+
* const violations = detectAntiPatterns(tsFiles, featureFiles);
|
|
222
|
+
*
|
|
223
|
+
* // With custom prefix
|
|
224
|
+
* const registry = createDefaultTagRegistry();
|
|
225
|
+
* registry.tagPrefix = "@architect-";
|
|
226
|
+
* const customViolations = detectAntiPatterns(tsFiles, featureFiles, { registry });
|
|
227
|
+
*
|
|
228
|
+
* for (const v of violations) {
|
|
229
|
+
* console.log(`[${v.severity.toUpperCase()}] ${v.id}: ${v.message}`);
|
|
230
|
+
* }
|
|
231
|
+
* ```
|
|
232
|
+
*/
|
|
233
|
+
export function detectAntiPatterns(scannedFiles, features, options = {}) {
|
|
234
|
+
const { registry, thresholds = {} } = options;
|
|
235
|
+
const mergedThresholds = {
|
|
236
|
+
...DEFAULT_THRESHOLDS,
|
|
237
|
+
...thresholds,
|
|
238
|
+
};
|
|
239
|
+
return [
|
|
240
|
+
// Error-level (architectural violations)
|
|
241
|
+
...detectProcessInCode(scannedFiles, registry),
|
|
242
|
+
// Warning-level (hygiene issues)
|
|
243
|
+
...detectMagicComments(features, mergedThresholds.magicCommentThreshold),
|
|
244
|
+
...detectScenarioBloat(features, mergedThresholds.scenarioBloatThreshold),
|
|
245
|
+
...detectMegaFeature(features, mergedThresholds.megaFeatureLineThreshold),
|
|
246
|
+
];
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Format anti-pattern violations for console output
|
|
250
|
+
*
|
|
251
|
+
* @param violations - Array of violations to format
|
|
252
|
+
* @returns Multi-line string for pretty printing
|
|
253
|
+
*/
|
|
254
|
+
export function formatAntiPatternReport(violations) {
|
|
255
|
+
const lines = [];
|
|
256
|
+
lines.push('');
|
|
257
|
+
lines.push('Anti-Pattern Detection Report');
|
|
258
|
+
lines.push('=============================');
|
|
259
|
+
lines.push('');
|
|
260
|
+
if (violations.length === 0) {
|
|
261
|
+
lines.push('No anti-patterns detected.');
|
|
262
|
+
return lines.join('\n');
|
|
263
|
+
}
|
|
264
|
+
const errors = violations.filter((v) => v.severity === 'error');
|
|
265
|
+
const warnings = violations.filter((v) => v.severity === 'warning');
|
|
266
|
+
lines.push(`Total: ${violations.length} (${errors.length} errors, ${warnings.length} warnings)`);
|
|
267
|
+
lines.push('');
|
|
268
|
+
if (errors.length > 0) {
|
|
269
|
+
lines.push('Errors (architectural violations):');
|
|
270
|
+
for (const v of errors) {
|
|
271
|
+
lines.push(` [ERROR] ${v.id}`);
|
|
272
|
+
lines.push(` ${v.message}`);
|
|
273
|
+
lines.push(` at ${v.file}${v.line !== undefined ? `:${v.line}` : ''}`);
|
|
274
|
+
if (v.fix) {
|
|
275
|
+
lines.push(` Fix: ${v.fix}`);
|
|
276
|
+
}
|
|
277
|
+
lines.push('');
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
if (warnings.length > 0) {
|
|
281
|
+
lines.push('Warnings (hygiene issues):');
|
|
282
|
+
for (const v of warnings) {
|
|
283
|
+
lines.push(` [WARN] ${v.id}`);
|
|
284
|
+
lines.push(` ${v.message}`);
|
|
285
|
+
lines.push(` at ${v.file}${v.line !== undefined ? `:${v.line}` : ''}`);
|
|
286
|
+
if (v.fix) {
|
|
287
|
+
lines.push(` Fix: ${v.fix}`);
|
|
288
|
+
}
|
|
289
|
+
lines.push('');
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return lines.join('\n');
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Convert anti-pattern violations to ValidationIssue format
|
|
296
|
+
*
|
|
297
|
+
* For integration with the existing validate-patterns CLI.
|
|
298
|
+
*/
|
|
299
|
+
export function toValidationIssues(violations) {
|
|
300
|
+
return violations.map((v) => ({
|
|
301
|
+
severity: v.severity,
|
|
302
|
+
message: `[${v.id}] ${v.message}`,
|
|
303
|
+
source: v.id === 'process-in-code' ? 'typescript' : 'gherkin',
|
|
304
|
+
file: v.file,
|
|
305
|
+
}));
|
|
306
|
+
}
|
|
307
|
+
//# sourceMappingURL=anti-patterns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anti-patterns.js","sourceRoot":"","sources":["../../src/validation/anti-patterns.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @architect
|
|
3
|
+
* @architect-validation
|
|
4
|
+
* @architect-pattern DoDValidator
|
|
5
|
+
* @architect-status completed
|
|
6
|
+
* @architect-arch-role service
|
|
7
|
+
* @architect-arch-context validation
|
|
8
|
+
* @architect-arch-layer application
|
|
9
|
+
* @architect-uses DoDValidationTypes, GherkinTypes, DualSourceExtractor
|
|
10
|
+
* @architect-extract-shapes isDeliverableComplete, hasAcceptanceCriteria, extractAcceptanceCriteriaScenarios, validateDoDForPhase, validateDoD, formatDoDSummary
|
|
11
|
+
*
|
|
12
|
+
* ## DoDValidator - Definition of Done Validation
|
|
13
|
+
*
|
|
14
|
+
* Validates that completed phases meet Definition of Done criteria:
|
|
15
|
+
* 1. All deliverables must be in a terminal state (complete, n/a, or superseded)
|
|
16
|
+
* 2. At least one @acceptance-criteria scenario must exist
|
|
17
|
+
*
|
|
18
|
+
* ### When to Use
|
|
19
|
+
*
|
|
20
|
+
* - Pre-release validation to ensure phases are truly complete
|
|
21
|
+
* - CI pipeline checks to prevent premature "done" declarations
|
|
22
|
+
* - Manual DoD checks during code review
|
|
23
|
+
*/
|
|
24
|
+
import type { Deliverable, ScannedGherkinFile } from '../validation-schemas/index.js';
|
|
25
|
+
import type { DoDValidationResult, DoDValidationSummary } from './types.js';
|
|
26
|
+
/**
|
|
27
|
+
* Check if a deliverable has "complete" status.
|
|
28
|
+
*
|
|
29
|
+
* This checks for the literal 'complete' status value only.
|
|
30
|
+
* For DoD validation (which also accepts 'n/a' and 'superseded'),
|
|
31
|
+
* see isDeliverableStatusTerminal().
|
|
32
|
+
*
|
|
33
|
+
* @param deliverable - The deliverable to check
|
|
34
|
+
* @returns True if the deliverable status is 'complete'
|
|
35
|
+
*/
|
|
36
|
+
export declare function isDeliverableComplete(deliverable: Deliverable): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Check if a feature has @acceptance-criteria scenarios
|
|
39
|
+
*
|
|
40
|
+
* Scans scenarios for the @acceptance-criteria tag, which indicates
|
|
41
|
+
* BDD-driven acceptance tests.
|
|
42
|
+
*
|
|
43
|
+
* @param feature - The scanned feature file to check
|
|
44
|
+
* @returns True if at least one @acceptance-criteria scenario exists
|
|
45
|
+
*/
|
|
46
|
+
export declare function hasAcceptanceCriteria(feature: ScannedGherkinFile): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Extract acceptance criteria scenario names from a feature
|
|
49
|
+
*
|
|
50
|
+
* @param feature - The scanned feature file
|
|
51
|
+
* @returns Array of scenario names with @acceptance-criteria tag
|
|
52
|
+
*/
|
|
53
|
+
export declare function extractAcceptanceCriteriaScenarios(feature: ScannedGherkinFile): readonly string[];
|
|
54
|
+
/**
|
|
55
|
+
* Validate DoD for a single phase/pattern
|
|
56
|
+
*
|
|
57
|
+
* Checks:
|
|
58
|
+
* 1. All deliverables must be in a terminal state (complete, n/a, superseded)
|
|
59
|
+
* 2. At least one @acceptance-criteria scenario exists
|
|
60
|
+
*
|
|
61
|
+
* @param patternName - Name of the pattern being validated
|
|
62
|
+
* @param phase - Phase number being validated
|
|
63
|
+
* @param feature - The scanned feature file with deliverables and scenarios
|
|
64
|
+
* @returns DoD validation result
|
|
65
|
+
*/
|
|
66
|
+
export declare function validateDoDForPhase(patternName: string, phase: number, feature: ScannedGherkinFile): DoDValidationResult;
|
|
67
|
+
/**
|
|
68
|
+
* Validate DoD across multiple phases
|
|
69
|
+
*
|
|
70
|
+
* Filters to completed phases and validates each against DoD criteria.
|
|
71
|
+
* Optionally filter to specific phases using phaseFilter.
|
|
72
|
+
*
|
|
73
|
+
* @param features - Array of scanned feature files
|
|
74
|
+
* @param phaseFilter - Optional array of phase numbers to validate (validates all if empty)
|
|
75
|
+
* @returns Aggregate DoD validation summary
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```typescript
|
|
79
|
+
* // Validate all completed phases
|
|
80
|
+
* const summary = validateDoD(features);
|
|
81
|
+
*
|
|
82
|
+
* // Validate specific phase
|
|
83
|
+
* const summary = validateDoD(features, [14]);
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export declare function validateDoD(features: readonly ScannedGherkinFile[], phaseFilter?: readonly number[]): DoDValidationSummary;
|
|
87
|
+
/**
|
|
88
|
+
* Format DoD validation summary for console output
|
|
89
|
+
*
|
|
90
|
+
* @param summary - DoD validation summary to format
|
|
91
|
+
* @returns Multi-line string for pretty printing
|
|
92
|
+
*/
|
|
93
|
+
export declare function formatDoDSummary(summary: DoDValidationSummary): string;
|
|
94
|
+
//# sourceMappingURL=dod-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dod-validator.d.ts","sourceRoot":"","sources":["../../src/validation/dod-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEtF,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAO5E;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAEvE;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAI1E;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,MAAM,EAAE,CAIjG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,kBAAkB,GAC1B,mBAAmB,CAwCrB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,SAAS,kBAAkB,EAAE,EACvC,WAAW,GAAE,SAAS,MAAM,EAAO,GAClC,oBAAoB,CA8BtB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CA8CtE"}
|