@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,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @architect
|
|
3
|
+
* @architect-lint
|
|
4
|
+
* @architect-pattern LintModule
|
|
5
|
+
* @architect-status completed
|
|
6
|
+
* @architect-uses LintRules, LintEngine
|
|
7
|
+
*
|
|
8
|
+
* ## LintModule - Annotation Quality Checking
|
|
9
|
+
*
|
|
10
|
+
* Provides lint rules and engine for pattern annotation quality checking.
|
|
11
|
+
* Exports the complete lint API including rules, engine, and formatters.
|
|
12
|
+
*
|
|
13
|
+
* ### When to Use
|
|
14
|
+
*
|
|
15
|
+
* - Use when importing lint functionality into CLI or other consumers
|
|
16
|
+
* - Use for accessing both rules and engine from a single import
|
|
17
|
+
*/
|
|
18
|
+
export type { LintSeverity, LintViolation } from '../validation-schemas/lint.js';
|
|
19
|
+
export type { LintRule, LintContext } from './rules.js';
|
|
20
|
+
export { defaultRules, filterRulesBySeverity, missingPatternName, invalidStatus, missingStatus, missingWhenToUse, tautologicalDescription, missingRelationships, patternConflictInImplements, missingRelationshipTarget, } from './rules.js';
|
|
21
|
+
export type { LintResult, LintSummary, DirectiveWithLocation } from './engine.js';
|
|
22
|
+
export { lintDirective, lintFiles, hasFailures, sortViolationsBySeverity, formatPretty, formatJson, } from './engine.js';
|
|
23
|
+
export * from './process-guard/index.js';
|
|
24
|
+
export { runStepLint, STEP_LINT_RULES } from './steps/index.js';
|
|
25
|
+
export type { StepLintRule, FeatureStepPair, StepLintOptions } from './steps/index.js';
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lint/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACjF,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EACL,aAAa,EACb,SAAS,EACT,WAAW,EACX,wBAAwB,EACxB,YAAY,EACZ,UAAU,GACX,MAAM,aAAa,CAAC;AAGrB,cAAc,0BAA0B,CAAC;AAGzC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @architect
|
|
3
|
+
* @architect-lint
|
|
4
|
+
* @architect-pattern LintModule
|
|
5
|
+
* @architect-status completed
|
|
6
|
+
* @architect-uses LintRules, LintEngine
|
|
7
|
+
*
|
|
8
|
+
* ## LintModule - Annotation Quality Checking
|
|
9
|
+
*
|
|
10
|
+
* Provides lint rules and engine for pattern annotation quality checking.
|
|
11
|
+
* Exports the complete lint API including rules, engine, and formatters.
|
|
12
|
+
*
|
|
13
|
+
* ### When to Use
|
|
14
|
+
*
|
|
15
|
+
* - Use when importing lint functionality into CLI or other consumers
|
|
16
|
+
* - Use for accessing both rules and engine from a single import
|
|
17
|
+
*/
|
|
18
|
+
export { defaultRules, filterRulesBySeverity, missingPatternName, invalidStatus, missingStatus, missingWhenToUse, tautologicalDescription, missingRelationships, patternConflictInImplements, missingRelationshipTarget, } from './rules.js';
|
|
19
|
+
export { lintDirective, lintFiles, hasFailures, sortViolationsBySeverity, formatPretty, formatJson, } from './engine.js';
|
|
20
|
+
// Process Guard (FSM validation, change detection, protection enforcement)
|
|
21
|
+
export * from './process-guard/index.js';
|
|
22
|
+
// Step Lint (vitest-cucumber feature/step compatibility checking)
|
|
23
|
+
export { runStepLint, STEP_LINT_RULES } from './steps/index.js';
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lint/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AAIpB,OAAO,EACL,aAAa,EACb,SAAS,EACT,WAAW,EACX,wBAAwB,EACxB,YAAY,EACZ,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,2EAA2E;AAC3E,cAAc,0BAA0B,CAAC;AAEzC,kEAAkE;AAClE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @architect
|
|
3
|
+
* @architect-lint
|
|
4
|
+
* @architect-pattern ProcessGuardDecider
|
|
5
|
+
* @architect-status active
|
|
6
|
+
* @architect-arch-role decider
|
|
7
|
+
* @architect-arch-context lint
|
|
8
|
+
* @architect-arch-layer application
|
|
9
|
+
* @architect-implements ProcessGuardLinter
|
|
10
|
+
* @architect-uses FSMValidator, DeriveProcessState, DetectChanges
|
|
11
|
+
* @architect-depends-on:FSMValidator,DeriveProcessState,DetectChanges
|
|
12
|
+
* @architect-convention process-guard-errors
|
|
13
|
+
* @architect-extract-shapes validateChanges
|
|
14
|
+
*
|
|
15
|
+
* ## ProcessGuardDecider - Pure Validation Logic
|
|
16
|
+
*
|
|
17
|
+
* Pure function that validates changes against process rules.
|
|
18
|
+
* Follows the Decider pattern from platform-core: no I/O, no side effects.
|
|
19
|
+
*
|
|
20
|
+
* ### When to Use
|
|
21
|
+
*
|
|
22
|
+
* - When validating proposed changes against workflow rules
|
|
23
|
+
* - When implementing custom validation rules for the process guard
|
|
24
|
+
* - When building pre-commit hooks that enforce FSM transitions
|
|
25
|
+
*
|
|
26
|
+
* ### Design Principles
|
|
27
|
+
*
|
|
28
|
+
* - **Pure Function**: (state, changes, options) => result
|
|
29
|
+
* - **No I/O**: All data passed in, no file reads
|
|
30
|
+
* - **Composable Rules**: Rules are separate functions combined in decider
|
|
31
|
+
* - **Testable**: Easy to unit test with mock data
|
|
32
|
+
*
|
|
33
|
+
* ### Rules Implemented
|
|
34
|
+
*
|
|
35
|
+
* 1. **Protection Level** - Completed files require unlock-reason
|
|
36
|
+
* 2. **Status Transition** - Transitions must follow PDR-005 FSM
|
|
37
|
+
* 3. **Scope Creep** - Active specs cannot add new deliverables
|
|
38
|
+
* 4. **Session Scope** - Modifications outside session scope warn
|
|
39
|
+
*
|
|
40
|
+
* ### Error Guide Content (convention: process-guard-errors)
|
|
41
|
+
*
|
|
42
|
+
* ## completed-protection
|
|
43
|
+
*
|
|
44
|
+
* **Invariant:** Completed specs are immutable without an explicit unlock
|
|
45
|
+
* reason. The unlock reason must be at least 10 characters and cannot be
|
|
46
|
+
* a placeholder.
|
|
47
|
+
*
|
|
48
|
+
* **Rationale:** The `completed` status represents verified, accepted work.
|
|
49
|
+
* Allowing silent modification undermines the terminal-state guarantee.
|
|
50
|
+
* Requiring an unlock reason creates an audit trail and forces the developer
|
|
51
|
+
* to justify why completed work needs revisiting.
|
|
52
|
+
*
|
|
53
|
+
* | Situation | Solution | Example |
|
|
54
|
+
* |-----------|----------|---------|
|
|
55
|
+
* | Fix typo in completed spec | Add unlock reason tag | `@architect-unlock-reason:Fix-typo-in-FSM-diagram` |
|
|
56
|
+
* | Spec needs rework | Create new spec instead | New feature file with `roadmap` status |
|
|
57
|
+
* | Legacy import | Multiple transitions in one commit | Set `roadmap` then `completed` |
|
|
58
|
+
*
|
|
59
|
+
* ## invalid-status-transition
|
|
60
|
+
*
|
|
61
|
+
* **Invariant:** Status transitions must follow the PDR-005 FSM path.
|
|
62
|
+
* The only valid paths are: roadmap to active, roadmap to deferred,
|
|
63
|
+
* active to completed, active to roadmap, deferred to roadmap.
|
|
64
|
+
*
|
|
65
|
+
* **Rationale:** The FSM enforces a deliberate progression through
|
|
66
|
+
* planning, implementation, and completion. Skipping states (e.g.,
|
|
67
|
+
* roadmap to completed) means work was never tracked as active, breaking
|
|
68
|
+
* session scoping and deliverable validation.
|
|
69
|
+
*
|
|
70
|
+
* | Attempted | Why Invalid | Valid Path |
|
|
71
|
+
* |-----------|-------------|------------|
|
|
72
|
+
* | roadmap to completed | Must go through active | roadmap to active to completed |
|
|
73
|
+
* | deferred to active | Must return to roadmap first | deferred to roadmap to active |
|
|
74
|
+
* | deferred to completed | Cannot skip two states | deferred to roadmap to active to completed |
|
|
75
|
+
*
|
|
76
|
+
* ## scope-creep
|
|
77
|
+
*
|
|
78
|
+
* **Invariant:** Active specs cannot add new deliverables. Scope is locked
|
|
79
|
+
* when status transitions to `active`.
|
|
80
|
+
*
|
|
81
|
+
* **Rationale:** Prevents scope creep during implementation. Plan fully
|
|
82
|
+
* before starting; implement what was planned. Adding deliverables mid-
|
|
83
|
+
* implementation signals inadequate planning and risks incomplete work.
|
|
84
|
+
*
|
|
85
|
+
* | Situation | Solution | Example |
|
|
86
|
+
* |-----------|----------|---------|
|
|
87
|
+
* | Need new deliverable | Revert to roadmap first | Change status to roadmap, add deliverable, then back to active |
|
|
88
|
+
* | Discovered work during implementation | Create new spec | New feature file for the discovered work |
|
|
89
|
+
*
|
|
90
|
+
* ## session-scope
|
|
91
|
+
*
|
|
92
|
+
* **Invariant:** Files outside the active session scope trigger warnings
|
|
93
|
+
* to prevent accidental cross-session modifications.
|
|
94
|
+
*
|
|
95
|
+
* **Rationale:** Session scoping ensures focused work. Modifying files
|
|
96
|
+
* outside the session scope often indicates scope creep or working on
|
|
97
|
+
* the wrong task. The warning is informational (not blocking) to allow
|
|
98
|
+
* intentional cross-scope changes with `--ignore-session`.
|
|
99
|
+
*
|
|
100
|
+
* ## session-excluded
|
|
101
|
+
*
|
|
102
|
+
* **Invariant:** Files explicitly excluded from a session cannot be
|
|
103
|
+
* modified in that session. This is a hard error, not a warning.
|
|
104
|
+
*
|
|
105
|
+
* **Rationale:** Explicit exclusion is a deliberate decision to protect
|
|
106
|
+
* certain files from modification during a session. Unlike session-scope
|
|
107
|
+
* (warning), exclusion represents a conscious boundary that should not
|
|
108
|
+
* be violated without changing the session configuration.
|
|
109
|
+
*
|
|
110
|
+
* ## deliverable-removed
|
|
111
|
+
*
|
|
112
|
+
* **Invariant:** Removing a deliverable from an active spec triggers a
|
|
113
|
+
* warning to ensure the removal is intentional and documented.
|
|
114
|
+
*
|
|
115
|
+
* **Rationale:** Deliverable removal during active implementation may
|
|
116
|
+
* indicate descoping or completion elsewhere. The warning ensures
|
|
117
|
+
* visibility -- the commit message should document why the deliverable
|
|
118
|
+
* was removed.
|
|
119
|
+
*/
|
|
120
|
+
import type { ValidationResult, ProcessViolation, DeciderInput, DeciderOutput, ProcessGuardRule } from './types.js';
|
|
121
|
+
/**
|
|
122
|
+
* Validate changes against process rules.
|
|
123
|
+
*
|
|
124
|
+
* Pure function following the Decider pattern:
|
|
125
|
+
* - Takes all inputs explicitly (no hidden state)
|
|
126
|
+
* - Returns result without side effects
|
|
127
|
+
* - Emits events for observability
|
|
128
|
+
*
|
|
129
|
+
* @param input - Complete input including state, changes, and options
|
|
130
|
+
* @returns DeciderOutput with validation result and events
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```typescript
|
|
134
|
+
* const output = validateChanges({
|
|
135
|
+
* state: processState,
|
|
136
|
+
* changes: changeDetection,
|
|
137
|
+
* options: { strict: false, ignoreSession: false },
|
|
138
|
+
* });
|
|
139
|
+
*
|
|
140
|
+
* if (!output.result.valid) {
|
|
141
|
+
* console.log('Violations:', output.result.violations);
|
|
142
|
+
* }
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
export declare function validateChanges(input: DeciderInput): DeciderOutput;
|
|
146
|
+
/**
|
|
147
|
+
* Check if validation result has any errors.
|
|
148
|
+
*/
|
|
149
|
+
export declare function hasErrors(result: ValidationResult): boolean;
|
|
150
|
+
/**
|
|
151
|
+
* Check if validation result has any warnings.
|
|
152
|
+
*/
|
|
153
|
+
export declare function hasWarnings(result: ValidationResult): boolean;
|
|
154
|
+
/**
|
|
155
|
+
* Get all violations and warnings combined.
|
|
156
|
+
*/
|
|
157
|
+
export declare function getAllIssues(result: ValidationResult): readonly ProcessViolation[];
|
|
158
|
+
/**
|
|
159
|
+
* Filter violations by rule.
|
|
160
|
+
*/
|
|
161
|
+
export declare function getViolationsByRule(result: ValidationResult, rule: ProcessGuardRule): readonly ProcessViolation[];
|
|
162
|
+
/**
|
|
163
|
+
* Create a summary string for the validation result.
|
|
164
|
+
*/
|
|
165
|
+
export declare function summarizeResult(result: ValidationResult): string;
|
|
166
|
+
//# sourceMappingURL=decider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decider.d.ts","sourceRoot":"","sources":["../../../src/lint/process-guard/decider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsHG;AAQH,OAAO,KAAK,EAGV,gBAAgB,EAChB,gBAAgB,EAEhB,YAAY,EACZ,aAAa,EAEb,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAQpB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CAoElE;AAuPD;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAE3D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAE7D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,gBAAgB,EAAE,CAElF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,gBAAgB,GACrB,SAAS,gBAAgB,EAAE,CAE7B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAiBhE"}
|
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @architect
|
|
3
|
+
* @architect-lint
|
|
4
|
+
* @architect-pattern ProcessGuardDecider
|
|
5
|
+
* @architect-status active
|
|
6
|
+
* @architect-arch-role decider
|
|
7
|
+
* @architect-arch-context lint
|
|
8
|
+
* @architect-arch-layer application
|
|
9
|
+
* @architect-implements ProcessGuardLinter
|
|
10
|
+
* @architect-uses FSMValidator, DeriveProcessState, DetectChanges
|
|
11
|
+
* @architect-depends-on:FSMValidator,DeriveProcessState,DetectChanges
|
|
12
|
+
* @architect-convention process-guard-errors
|
|
13
|
+
* @architect-extract-shapes validateChanges
|
|
14
|
+
*
|
|
15
|
+
* ## ProcessGuardDecider - Pure Validation Logic
|
|
16
|
+
*
|
|
17
|
+
* Pure function that validates changes against process rules.
|
|
18
|
+
* Follows the Decider pattern from platform-core: no I/O, no side effects.
|
|
19
|
+
*
|
|
20
|
+
* ### When to Use
|
|
21
|
+
*
|
|
22
|
+
* - When validating proposed changes against workflow rules
|
|
23
|
+
* - When implementing custom validation rules for the process guard
|
|
24
|
+
* - When building pre-commit hooks that enforce FSM transitions
|
|
25
|
+
*
|
|
26
|
+
* ### Design Principles
|
|
27
|
+
*
|
|
28
|
+
* - **Pure Function**: (state, changes, options) => result
|
|
29
|
+
* - **No I/O**: All data passed in, no file reads
|
|
30
|
+
* - **Composable Rules**: Rules are separate functions combined in decider
|
|
31
|
+
* - **Testable**: Easy to unit test with mock data
|
|
32
|
+
*
|
|
33
|
+
* ### Rules Implemented
|
|
34
|
+
*
|
|
35
|
+
* 1. **Protection Level** - Completed files require unlock-reason
|
|
36
|
+
* 2. **Status Transition** - Transitions must follow PDR-005 FSM
|
|
37
|
+
* 3. **Scope Creep** - Active specs cannot add new deliverables
|
|
38
|
+
* 4. **Session Scope** - Modifications outside session scope warn
|
|
39
|
+
*
|
|
40
|
+
* ### Error Guide Content (convention: process-guard-errors)
|
|
41
|
+
*
|
|
42
|
+
* ## completed-protection
|
|
43
|
+
*
|
|
44
|
+
* **Invariant:** Completed specs are immutable without an explicit unlock
|
|
45
|
+
* reason. The unlock reason must be at least 10 characters and cannot be
|
|
46
|
+
* a placeholder.
|
|
47
|
+
*
|
|
48
|
+
* **Rationale:** The `completed` status represents verified, accepted work.
|
|
49
|
+
* Allowing silent modification undermines the terminal-state guarantee.
|
|
50
|
+
* Requiring an unlock reason creates an audit trail and forces the developer
|
|
51
|
+
* to justify why completed work needs revisiting.
|
|
52
|
+
*
|
|
53
|
+
* | Situation | Solution | Example |
|
|
54
|
+
* |-----------|----------|---------|
|
|
55
|
+
* | Fix typo in completed spec | Add unlock reason tag | `@architect-unlock-reason:Fix-typo-in-FSM-diagram` |
|
|
56
|
+
* | Spec needs rework | Create new spec instead | New feature file with `roadmap` status |
|
|
57
|
+
* | Legacy import | Multiple transitions in one commit | Set `roadmap` then `completed` |
|
|
58
|
+
*
|
|
59
|
+
* ## invalid-status-transition
|
|
60
|
+
*
|
|
61
|
+
* **Invariant:** Status transitions must follow the PDR-005 FSM path.
|
|
62
|
+
* The only valid paths are: roadmap to active, roadmap to deferred,
|
|
63
|
+
* active to completed, active to roadmap, deferred to roadmap.
|
|
64
|
+
*
|
|
65
|
+
* **Rationale:** The FSM enforces a deliberate progression through
|
|
66
|
+
* planning, implementation, and completion. Skipping states (e.g.,
|
|
67
|
+
* roadmap to completed) means work was never tracked as active, breaking
|
|
68
|
+
* session scoping and deliverable validation.
|
|
69
|
+
*
|
|
70
|
+
* | Attempted | Why Invalid | Valid Path |
|
|
71
|
+
* |-----------|-------------|------------|
|
|
72
|
+
* | roadmap to completed | Must go through active | roadmap to active to completed |
|
|
73
|
+
* | deferred to active | Must return to roadmap first | deferred to roadmap to active |
|
|
74
|
+
* | deferred to completed | Cannot skip two states | deferred to roadmap to active to completed |
|
|
75
|
+
*
|
|
76
|
+
* ## scope-creep
|
|
77
|
+
*
|
|
78
|
+
* **Invariant:** Active specs cannot add new deliverables. Scope is locked
|
|
79
|
+
* when status transitions to `active`.
|
|
80
|
+
*
|
|
81
|
+
* **Rationale:** Prevents scope creep during implementation. Plan fully
|
|
82
|
+
* before starting; implement what was planned. Adding deliverables mid-
|
|
83
|
+
* implementation signals inadequate planning and risks incomplete work.
|
|
84
|
+
*
|
|
85
|
+
* | Situation | Solution | Example |
|
|
86
|
+
* |-----------|----------|---------|
|
|
87
|
+
* | Need new deliverable | Revert to roadmap first | Change status to roadmap, add deliverable, then back to active |
|
|
88
|
+
* | Discovered work during implementation | Create new spec | New feature file for the discovered work |
|
|
89
|
+
*
|
|
90
|
+
* ## session-scope
|
|
91
|
+
*
|
|
92
|
+
* **Invariant:** Files outside the active session scope trigger warnings
|
|
93
|
+
* to prevent accidental cross-session modifications.
|
|
94
|
+
*
|
|
95
|
+
* **Rationale:** Session scoping ensures focused work. Modifying files
|
|
96
|
+
* outside the session scope often indicates scope creep or working on
|
|
97
|
+
* the wrong task. The warning is informational (not blocking) to allow
|
|
98
|
+
* intentional cross-scope changes with `--ignore-session`.
|
|
99
|
+
*
|
|
100
|
+
* ## session-excluded
|
|
101
|
+
*
|
|
102
|
+
* **Invariant:** Files explicitly excluded from a session cannot be
|
|
103
|
+
* modified in that session. This is a hard error, not a warning.
|
|
104
|
+
*
|
|
105
|
+
* **Rationale:** Explicit exclusion is a deliberate decision to protect
|
|
106
|
+
* certain files from modification during a session. Unlike session-scope
|
|
107
|
+
* (warning), exclusion represents a conscious boundary that should not
|
|
108
|
+
* be violated without changing the session configuration.
|
|
109
|
+
*
|
|
110
|
+
* ## deliverable-removed
|
|
111
|
+
*
|
|
112
|
+
* **Invariant:** Removing a deliverable from an active spec triggers a
|
|
113
|
+
* warning to ensure the removal is intentional and documented.
|
|
114
|
+
*
|
|
115
|
+
* **Rationale:** Deliverable removal during active implementation may
|
|
116
|
+
* indicate descoping or completion elsewhere. The warning ensures
|
|
117
|
+
* visibility -- the commit message should document why the deliverable
|
|
118
|
+
* was removed.
|
|
119
|
+
*/
|
|
120
|
+
import { validateTransition, getValidTransitionsFrom, isTerminalState, } from '../../validation/fsm/index.js';
|
|
121
|
+
import { isInSessionScope, isSessionExcluded } from './derive-state.js';
|
|
122
|
+
import { DEFAULT_TAG_PREFIX } from '../../config/defaults.js';
|
|
123
|
+
// =============================================================================
|
|
124
|
+
// Decider - Main Entry Point
|
|
125
|
+
// =============================================================================
|
|
126
|
+
/**
|
|
127
|
+
* Validate changes against process rules.
|
|
128
|
+
*
|
|
129
|
+
* Pure function following the Decider pattern:
|
|
130
|
+
* - Takes all inputs explicitly (no hidden state)
|
|
131
|
+
* - Returns result without side effects
|
|
132
|
+
* - Emits events for observability
|
|
133
|
+
*
|
|
134
|
+
* @param input - Complete input including state, changes, and options
|
|
135
|
+
* @returns DeciderOutput with validation result and events
|
|
136
|
+
*
|
|
137
|
+
* @example
|
|
138
|
+
* ```typescript
|
|
139
|
+
* const output = validateChanges({
|
|
140
|
+
* state: processState,
|
|
141
|
+
* changes: changeDetection,
|
|
142
|
+
* options: { strict: false, ignoreSession: false },
|
|
143
|
+
* });
|
|
144
|
+
*
|
|
145
|
+
* if (!output.result.valid) {
|
|
146
|
+
* console.log('Violations:', output.result.violations);
|
|
147
|
+
* }
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
export function validateChanges(input) {
|
|
151
|
+
const { state, changes, options } = input;
|
|
152
|
+
const events = [];
|
|
153
|
+
const violations = [];
|
|
154
|
+
const warnings = [];
|
|
155
|
+
// Emit start event
|
|
156
|
+
const allFiles = [...changes.modifiedFiles, ...changes.addedFiles];
|
|
157
|
+
events.push({ type: 'validation_started', fileCount: allFiles.length });
|
|
158
|
+
// Run each rule
|
|
159
|
+
const rules = [
|
|
160
|
+
{
|
|
161
|
+
rule: 'completed-protection',
|
|
162
|
+
fn: () => checkProtectionLevel(state, changes, options.registry),
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
rule: 'invalid-status-transition',
|
|
166
|
+
fn: () => checkStatusTransitions(state, changes),
|
|
167
|
+
},
|
|
168
|
+
{ rule: 'scope-creep', fn: () => checkScopeCreep(state, changes) },
|
|
169
|
+
{
|
|
170
|
+
rule: 'session-scope',
|
|
171
|
+
fn: () => (options.ignoreSession ? [] : checkSessionScope(state, changes)),
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
rule: 'session-excluded',
|
|
175
|
+
fn: () => (options.ignoreSession ? [] : checkSessionExcluded(state, changes)),
|
|
176
|
+
},
|
|
177
|
+
];
|
|
178
|
+
for (const { rule, fn } of rules) {
|
|
179
|
+
const ruleViolations = fn();
|
|
180
|
+
const passed = ruleViolations.length === 0;
|
|
181
|
+
events.push({ type: 'rule_checked', rule, passed });
|
|
182
|
+
for (const v of ruleViolations) {
|
|
183
|
+
if (v.severity === 'error') {
|
|
184
|
+
violations.push(v);
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
warnings.push(v);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// In strict mode, promote warnings to violations
|
|
192
|
+
const finalViolations = options.strict
|
|
193
|
+
? [...violations, ...warnings.map((w) => ({ ...w, severity: 'error' }))]
|
|
194
|
+
: violations;
|
|
195
|
+
const finalWarnings = options.strict ? [] : warnings;
|
|
196
|
+
const valid = finalViolations.length === 0;
|
|
197
|
+
events.push({
|
|
198
|
+
type: 'validation_completed',
|
|
199
|
+
valid,
|
|
200
|
+
violationCount: finalViolations.length,
|
|
201
|
+
});
|
|
202
|
+
return {
|
|
203
|
+
result: {
|
|
204
|
+
valid,
|
|
205
|
+
violations: finalViolations,
|
|
206
|
+
warnings: finalWarnings,
|
|
207
|
+
processState: state,
|
|
208
|
+
changes,
|
|
209
|
+
},
|
|
210
|
+
events,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
// =============================================================================
|
|
214
|
+
// Rule: Protection Level
|
|
215
|
+
// =============================================================================
|
|
216
|
+
/**
|
|
217
|
+
* Check protection level violations.
|
|
218
|
+
*
|
|
219
|
+
* - Completed (hard) files require unlock-reason tag
|
|
220
|
+
* - Returns error if modified without unlock
|
|
221
|
+
*
|
|
222
|
+
* @param state - Current process state
|
|
223
|
+
* @param changes - Detected changes
|
|
224
|
+
* @param registry - Optional tag registry for prefix-aware messages
|
|
225
|
+
*/
|
|
226
|
+
function checkProtectionLevel(state, changes, registry) {
|
|
227
|
+
const tagPrefix = registry?.tagPrefix ?? DEFAULT_TAG_PREFIX;
|
|
228
|
+
const violations = [];
|
|
229
|
+
for (const file of [...changes.modifiedFiles, ...changes.addedFiles]) {
|
|
230
|
+
const fileState = state.files.get(file);
|
|
231
|
+
if (!fileState)
|
|
232
|
+
continue;
|
|
233
|
+
// Check hard protection (completed)
|
|
234
|
+
if (fileState.protection === 'hard' && !fileState.hasUnlockReason) {
|
|
235
|
+
// Exempt files transitioning TO a terminal state — this is a completion, not a post-completion edit
|
|
236
|
+
const transition = changes.statusTransitions.get(file);
|
|
237
|
+
if (transition !== undefined && isTerminalState(transition.to)) {
|
|
238
|
+
continue;
|
|
239
|
+
}
|
|
240
|
+
violations.push(createViolation('completed-protection', 'error', `Cannot modify completed spec '${file}' without unlock reason`, file, `Add ${tagPrefix}unlock-reason:'your reason' to proceed`));
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return violations;
|
|
244
|
+
}
|
|
245
|
+
// =============================================================================
|
|
246
|
+
// Rule: Status Transitions
|
|
247
|
+
// =============================================================================
|
|
248
|
+
/**
|
|
249
|
+
* Check status transition validity.
|
|
250
|
+
*
|
|
251
|
+
* Uses FSM validation from phase-state-machine module.
|
|
252
|
+
* Enhanced error messages include line numbers and docstring context.
|
|
253
|
+
*/
|
|
254
|
+
function checkStatusTransitions(state, changes) {
|
|
255
|
+
const violations = [];
|
|
256
|
+
for (const [file, transition] of changes.statusTransitions) {
|
|
257
|
+
// Only validated unlock reasons bypass FSM, and only for retroactive completion paths
|
|
258
|
+
const fileState = state.files.get(file);
|
|
259
|
+
if (transition.to === 'completed' &&
|
|
260
|
+
transition.hasUnlockReason === true &&
|
|
261
|
+
fileState?.hasUnlockReason === true) {
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
const validationResult = validateTransition(transition.from, transition.to);
|
|
265
|
+
if (!validationResult.valid) {
|
|
266
|
+
const validTransitions = getValidTransitionsFrom(transition.from);
|
|
267
|
+
// Build detailed message with context
|
|
268
|
+
const fileContext = transition.isNewFile === true ? ' (new file)' : '';
|
|
269
|
+
const lineInfo = transition.toLocation ? ` at line ${transition.toLocation.lineNumber}` : '';
|
|
270
|
+
const message = `Invalid status transition in '${file}'${fileContext}${lineInfo}: ${transition.from} → ${transition.to}`;
|
|
271
|
+
// Build suggestion with debugging hints
|
|
272
|
+
let suggestion = `Valid transitions from '${transition.from}': ${validTransitions.join(', ')}`;
|
|
273
|
+
// Add docstring debugging info if multiple tags were found
|
|
274
|
+
if (transition.allDetectedTags && transition.allDetectedTags.length > 1) {
|
|
275
|
+
const docstringTags = transition.allDetectedTags.filter((t) => t.insideDocstring);
|
|
276
|
+
if (docstringTags.length > 0) {
|
|
277
|
+
suggestion += `\n Note: ${docstringTags.length} status tag(s) inside docstrings were ignored`;
|
|
278
|
+
suggestion += '\n Detected tags:';
|
|
279
|
+
for (const tag of transition.allDetectedTags) {
|
|
280
|
+
const context = tag.insideDocstring ? ' [inside docstring - ignored]' : ' [file-level]';
|
|
281
|
+
suggestion += `\n Line ${tag.lineNumber}${context}`;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
violations.push(createViolation('invalid-status-transition', 'error', message, file, suggestion));
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return violations;
|
|
289
|
+
}
|
|
290
|
+
// =============================================================================
|
|
291
|
+
// Rule: Scope Creep
|
|
292
|
+
// =============================================================================
|
|
293
|
+
/**
|
|
294
|
+
* Check for scope creep (new deliverables in active specs).
|
|
295
|
+
*
|
|
296
|
+
* Active specs cannot add new deliverables.
|
|
297
|
+
*/
|
|
298
|
+
function checkScopeCreep(state, changes) {
|
|
299
|
+
const violations = [];
|
|
300
|
+
for (const [file, deliverableChange] of changes.deliverableChanges) {
|
|
301
|
+
const fileState = state.files.get(file);
|
|
302
|
+
if (!fileState)
|
|
303
|
+
continue;
|
|
304
|
+
// Only check active specs (scope-locked)
|
|
305
|
+
if (fileState.protection === 'scope' && deliverableChange.added.length > 0) {
|
|
306
|
+
violations.push(createViolation('scope-creep', 'error', `Cannot add deliverables to active spec '${file}': ${deliverableChange.added.join(', ')}`, file, 'Create new spec or revert to roadmap status first'));
|
|
307
|
+
}
|
|
308
|
+
// Warn about removed deliverables
|
|
309
|
+
if (deliverableChange.removed.length > 0) {
|
|
310
|
+
violations.push(createViolation('deliverable-removed', 'warning', `Deliverable removed from '${file}': ${deliverableChange.removed.join(', ')}`, file, 'Was this completed or descoped? Consider documenting the reason.'));
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
return violations;
|
|
314
|
+
}
|
|
315
|
+
// =============================================================================
|
|
316
|
+
// Rule: Session Scope
|
|
317
|
+
// =============================================================================
|
|
318
|
+
/**
|
|
319
|
+
* Check session scope violations.
|
|
320
|
+
*
|
|
321
|
+
* Files outside active session scope trigger warnings.
|
|
322
|
+
*/
|
|
323
|
+
function checkSessionScope(state, changes) {
|
|
324
|
+
const violations = [];
|
|
325
|
+
if (!state.activeSession) {
|
|
326
|
+
return violations; // No session, no scope rules
|
|
327
|
+
}
|
|
328
|
+
for (const file of [...changes.modifiedFiles, ...changes.addedFiles]) {
|
|
329
|
+
if (!isInSessionScope(state, file)) {
|
|
330
|
+
violations.push(createViolation('session-scope', 'warning', `File '${file}' is not in session scope`, file, `Add to session '${state.activeSession.id}' scope or use --ignore-session flag`));
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
return violations;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Check for explicitly excluded files.
|
|
337
|
+
*
|
|
338
|
+
* Explicitly excluded files trigger errors (not warnings).
|
|
339
|
+
*/
|
|
340
|
+
function checkSessionExcluded(state, changes) {
|
|
341
|
+
const violations = [];
|
|
342
|
+
if (!state.activeSession) {
|
|
343
|
+
return violations;
|
|
344
|
+
}
|
|
345
|
+
for (const file of [...changes.modifiedFiles, ...changes.addedFiles]) {
|
|
346
|
+
if (isSessionExcluded(state, file)) {
|
|
347
|
+
violations.push(createViolation('session-excluded', 'error', `File '${file}' is explicitly excluded from session '${state.activeSession.id}'`, file, 'This file was explicitly excluded and cannot be modified in this session'));
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return violations;
|
|
351
|
+
}
|
|
352
|
+
// =============================================================================
|
|
353
|
+
// Helpers
|
|
354
|
+
// =============================================================================
|
|
355
|
+
/**
|
|
356
|
+
* Create a process violation.
|
|
357
|
+
*/
|
|
358
|
+
function createViolation(rule, severity, message, file, suggestion) {
|
|
359
|
+
// Build violation (handle exactOptionalPropertyTypes)
|
|
360
|
+
const violation = { rule, severity, message, file };
|
|
361
|
+
// Only add suggestion if provided
|
|
362
|
+
if (suggestion !== undefined) {
|
|
363
|
+
violation.suggestion = suggestion;
|
|
364
|
+
}
|
|
365
|
+
return violation;
|
|
366
|
+
}
|
|
367
|
+
// =============================================================================
|
|
368
|
+
// Convenience Functions
|
|
369
|
+
// =============================================================================
|
|
370
|
+
/**
|
|
371
|
+
* Check if validation result has any errors.
|
|
372
|
+
*/
|
|
373
|
+
export function hasErrors(result) {
|
|
374
|
+
return result.violations.length > 0;
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Check if validation result has any warnings.
|
|
378
|
+
*/
|
|
379
|
+
export function hasWarnings(result) {
|
|
380
|
+
return result.warnings.length > 0;
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Get all violations and warnings combined.
|
|
384
|
+
*/
|
|
385
|
+
export function getAllIssues(result) {
|
|
386
|
+
return [...result.violations, ...result.warnings];
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Filter violations by rule.
|
|
390
|
+
*/
|
|
391
|
+
export function getViolationsByRule(result, rule) {
|
|
392
|
+
return result.violations.filter((v) => v.rule === rule);
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Create a summary string for the validation result.
|
|
396
|
+
*/
|
|
397
|
+
export function summarizeResult(result) {
|
|
398
|
+
const errorCount = result.violations.length;
|
|
399
|
+
const warningCount = result.warnings.length;
|
|
400
|
+
if (result.valid && warningCount === 0) {
|
|
401
|
+
return 'Process guard check passed';
|
|
402
|
+
}
|
|
403
|
+
const parts = [];
|
|
404
|
+
if (errorCount > 0) {
|
|
405
|
+
parts.push(`${errorCount} error${errorCount !== 1 ? 's' : ''}`);
|
|
406
|
+
}
|
|
407
|
+
if (warningCount > 0) {
|
|
408
|
+
parts.push(`${warningCount} warning${warningCount !== 1 ? 's' : ''}`);
|
|
409
|
+
}
|
|
410
|
+
return `Process guard check: ${parts.join(', ')}`;
|
|
411
|
+
}
|
|
412
|
+
//# sourceMappingURL=decider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decider.js","sourceRoot":"","sources":["../../../src/lint/process-guard/decider.ts"],"names":[],"mappings":"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"}
|