@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,198 @@
|
|
|
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 { extractProcessMetadata, extractDeliverables } from '../extractor/dual-source-extractor.js';
|
|
25
|
+
import { isDeliverableStatusComplete, isDeliverableStatusTerminal, isPatternComplete, } from '../taxonomy/index.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 function isDeliverableComplete(deliverable) {
|
|
37
|
+
return isDeliverableStatusComplete(deliverable.status);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Check if a feature has @acceptance-criteria scenarios
|
|
41
|
+
*
|
|
42
|
+
* Scans scenarios for the @acceptance-criteria tag, which indicates
|
|
43
|
+
* BDD-driven acceptance tests.
|
|
44
|
+
*
|
|
45
|
+
* @param feature - The scanned feature file to check
|
|
46
|
+
* @returns True if at least one @acceptance-criteria scenario exists
|
|
47
|
+
*/
|
|
48
|
+
export function hasAcceptanceCriteria(feature) {
|
|
49
|
+
return feature.scenarios.some((scenario) => scenario.tags.some((tag) => tag.toLowerCase() === 'acceptance-criteria'));
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Extract acceptance criteria scenario names from a feature
|
|
53
|
+
*
|
|
54
|
+
* @param feature - The scanned feature file
|
|
55
|
+
* @returns Array of scenario names with @acceptance-criteria tag
|
|
56
|
+
*/
|
|
57
|
+
export function extractAcceptanceCriteriaScenarios(feature) {
|
|
58
|
+
return feature.scenarios
|
|
59
|
+
.filter((scenario) => scenario.tags.some((tag) => tag.toLowerCase() === 'acceptance-criteria'))
|
|
60
|
+
.map((scenario) => scenario.name);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Validate DoD for a single phase/pattern
|
|
64
|
+
*
|
|
65
|
+
* Checks:
|
|
66
|
+
* 1. All deliverables must be in a terminal state (complete, n/a, superseded)
|
|
67
|
+
* 2. At least one @acceptance-criteria scenario exists
|
|
68
|
+
*
|
|
69
|
+
* @param patternName - Name of the pattern being validated
|
|
70
|
+
* @param phase - Phase number being validated
|
|
71
|
+
* @param feature - The scanned feature file with deliverables and scenarios
|
|
72
|
+
* @returns DoD validation result
|
|
73
|
+
*/
|
|
74
|
+
export function validateDoDForPhase(patternName, phase, feature) {
|
|
75
|
+
const deliverables = extractDeliverables(feature);
|
|
76
|
+
const messages = [];
|
|
77
|
+
// Check deliverables — terminal states (complete, n/a, superseded) pass DoD
|
|
78
|
+
const incompleteDeliverables = deliverables.filter((d) => !isDeliverableStatusTerminal(d.status));
|
|
79
|
+
const allDeliverablesComplete = incompleteDeliverables.length === 0;
|
|
80
|
+
if (deliverables.length === 0) {
|
|
81
|
+
messages.push(`No deliverables defined for phase ${phase}`);
|
|
82
|
+
}
|
|
83
|
+
else if (!allDeliverablesComplete) {
|
|
84
|
+
messages.push(`${incompleteDeliverables.length}/${deliverables.length} deliverables incomplete`);
|
|
85
|
+
for (const d of incompleteDeliverables) {
|
|
86
|
+
messages.push(` - "${d.name}" (status: ${d.status})`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Check acceptance criteria
|
|
90
|
+
const missingAcceptanceCriteria = !hasAcceptanceCriteria(feature);
|
|
91
|
+
if (missingAcceptanceCriteria) {
|
|
92
|
+
messages.push('No @acceptance-criteria scenarios found');
|
|
93
|
+
}
|
|
94
|
+
const isDoDMet = allDeliverablesComplete && !missingAcceptanceCriteria && deliverables.length > 0;
|
|
95
|
+
if (isDoDMet) {
|
|
96
|
+
messages.push(`DoD met: ${deliverables.length} deliverables complete, AC scenarios present`);
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
patternName,
|
|
100
|
+
phase,
|
|
101
|
+
isDoDMet,
|
|
102
|
+
deliverables,
|
|
103
|
+
incompleteDeliverables,
|
|
104
|
+
missingAcceptanceCriteria,
|
|
105
|
+
messages,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Validate DoD across multiple phases
|
|
110
|
+
*
|
|
111
|
+
* Filters to completed phases and validates each against DoD criteria.
|
|
112
|
+
* Optionally filter to specific phases using phaseFilter.
|
|
113
|
+
*
|
|
114
|
+
* @param features - Array of scanned feature files
|
|
115
|
+
* @param phaseFilter - Optional array of phase numbers to validate (validates all if empty)
|
|
116
|
+
* @returns Aggregate DoD validation summary
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* // Validate all completed phases
|
|
121
|
+
* const summary = validateDoD(features);
|
|
122
|
+
*
|
|
123
|
+
* // Validate specific phase
|
|
124
|
+
* const summary = validateDoD(features, [14]);
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
export function validateDoD(features, phaseFilter = []) {
|
|
128
|
+
const results = [];
|
|
129
|
+
const shouldFilterPhases = phaseFilter.length > 0;
|
|
130
|
+
for (const feature of features) {
|
|
131
|
+
const metadata = extractProcessMetadata(feature);
|
|
132
|
+
if (!metadata)
|
|
133
|
+
continue;
|
|
134
|
+
// Only validate completed phases (or phases matching filter)
|
|
135
|
+
const isCompleted = isPatternComplete(metadata.status);
|
|
136
|
+
// If phase filter specified, validate those specific phases
|
|
137
|
+
// Otherwise, only validate completed phases
|
|
138
|
+
const shouldValidate = shouldFilterPhases ? phaseFilter.includes(metadata.phase) : isCompleted;
|
|
139
|
+
if (!shouldValidate)
|
|
140
|
+
continue;
|
|
141
|
+
const result = validateDoDForPhase(metadata.pattern, metadata.phase, feature);
|
|
142
|
+
results.push(result);
|
|
143
|
+
}
|
|
144
|
+
const passedPhases = results.filter((r) => r.isDoDMet).length;
|
|
145
|
+
const failedPhases = results.filter((r) => !r.isDoDMet).length;
|
|
146
|
+
return {
|
|
147
|
+
results,
|
|
148
|
+
totalPhases: results.length,
|
|
149
|
+
passedPhases,
|
|
150
|
+
failedPhases,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Format DoD validation summary for console output
|
|
155
|
+
*
|
|
156
|
+
* @param summary - DoD validation summary to format
|
|
157
|
+
* @returns Multi-line string for pretty printing
|
|
158
|
+
*/
|
|
159
|
+
export function formatDoDSummary(summary) {
|
|
160
|
+
const lines = [];
|
|
161
|
+
lines.push('');
|
|
162
|
+
lines.push('DoD Validation Summary');
|
|
163
|
+
lines.push('======================');
|
|
164
|
+
lines.push('');
|
|
165
|
+
lines.push(`Total phases validated: ${summary.totalPhases}`);
|
|
166
|
+
lines.push(`Passed: ${summary.passedPhases}`);
|
|
167
|
+
lines.push(`Failed: ${summary.failedPhases}`);
|
|
168
|
+
lines.push('');
|
|
169
|
+
if (summary.results.length === 0) {
|
|
170
|
+
lines.push('No completed phases found to validate.');
|
|
171
|
+
return lines.join('\n');
|
|
172
|
+
}
|
|
173
|
+
// Group by pass/fail
|
|
174
|
+
const passed = summary.results.filter((r) => r.isDoDMet);
|
|
175
|
+
const failed = summary.results.filter((r) => !r.isDoDMet);
|
|
176
|
+
if (failed.length > 0) {
|
|
177
|
+
lines.push('Failed Phases:');
|
|
178
|
+
for (const result of failed) {
|
|
179
|
+
lines.push(` [FAIL] Phase ${result.phase}: ${result.patternName}`);
|
|
180
|
+
for (const msg of result.messages) {
|
|
181
|
+
if (!msg.startsWith('DoD met')) {
|
|
182
|
+
lines.push(` ${msg}`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
lines.push('');
|
|
187
|
+
}
|
|
188
|
+
if (passed.length > 0) {
|
|
189
|
+
lines.push('Passed Phases:');
|
|
190
|
+
for (const result of passed) {
|
|
191
|
+
const deliverableCount = result.deliverables.length;
|
|
192
|
+
lines.push(` [PASS] Phase ${result.phase}: ${result.patternName} (${deliverableCount} deliverables)`);
|
|
193
|
+
}
|
|
194
|
+
lines.push('');
|
|
195
|
+
}
|
|
196
|
+
return lines.join('\n');
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=dod-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dod-validator.js","sourceRoot":"","sources":["../../src/validation/dod-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @architect
|
|
3
|
+
* @architect-validation
|
|
4
|
+
* @architect-pattern FSMModule
|
|
5
|
+
* @architect-status active
|
|
6
|
+
* @architect-depends-on:PDR005MvpWorkflow
|
|
7
|
+
*
|
|
8
|
+
* ## FSM Module - Phase State Machine Implementation
|
|
9
|
+
*
|
|
10
|
+
* Central export for the 4-state FSM defined in PDR-005:
|
|
11
|
+
*
|
|
12
|
+
* ```
|
|
13
|
+
* roadmap ──→ active ──→ completed
|
|
14
|
+
* │ │
|
|
15
|
+
* │ ↓
|
|
16
|
+
* │ roadmap (blocked/regressed)
|
|
17
|
+
* │
|
|
18
|
+
* ↓
|
|
19
|
+
* deferred ──→ roadmap
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* ### When to Use
|
|
23
|
+
*
|
|
24
|
+
* - When validating status transitions in pre-commit hooks
|
|
25
|
+
* - When checking protection levels for completed patterns
|
|
26
|
+
* - When implementing workflow enforcement in CI/CD
|
|
27
|
+
*
|
|
28
|
+
* ### Module Contents
|
|
29
|
+
*
|
|
30
|
+
* - **states.ts** - Status states and protection levels
|
|
31
|
+
* - **transitions.ts** - Valid transition matrix
|
|
32
|
+
* - **validator.ts** - Pure validation functions (Decider pattern)
|
|
33
|
+
*
|
|
34
|
+
* ### Usage Example
|
|
35
|
+
*
|
|
36
|
+
* ```typescript
|
|
37
|
+
* import {
|
|
38
|
+
* validateStatus,
|
|
39
|
+
* validateTransition,
|
|
40
|
+
* getProtectionLevel,
|
|
41
|
+
* isValidTransition
|
|
42
|
+
* } from "@libar-dev/architect/validation/fsm";
|
|
43
|
+
*
|
|
44
|
+
* // Validate a status value
|
|
45
|
+
* const result = validateStatus("roadmap");
|
|
46
|
+
* if (result.valid) {
|
|
47
|
+
* console.log("Valid status");
|
|
48
|
+
* }
|
|
49
|
+
*
|
|
50
|
+
* // Check transition validity
|
|
51
|
+
* if (isValidTransition("roadmap", "active")) {
|
|
52
|
+
* console.log("Can start work");
|
|
53
|
+
* }
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export { PROTECTION_LEVELS, type ProtectionLevel, getProtectionLevel, isTerminalState, isFullyEditable, isScopeLocked, PROCESS_STATUS_VALUES, type ProcessStatusValue, } from './states.js';
|
|
57
|
+
export { VALID_TRANSITIONS, isValidTransition, getValidTransitionsFrom, getTransitionErrorMessage, type TransitionMessageOptions, } from './transitions.js';
|
|
58
|
+
export { type StatusValidationResult, type TransitionValidationResult, type CompletionMetadataValidationResult, type PatternMetadata, type FSMValidationOptions, validateStatus, validateTransition, validateCompletionMetadata, validatePatternStatus, getProtectionSummary, } from './validator.js';
|
|
59
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/validation/fsm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAGH,OAAO,EACL,iBAAiB,EACjB,KAAK,eAAe,EACpB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,aAAa,EAEb,qBAAqB,EACrB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,wBAAwB,GAC9B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,kCAAkC,EACvC,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,cAAc,EACd,kBAAkB,EAClB,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @architect
|
|
3
|
+
* @architect-validation
|
|
4
|
+
* @architect-pattern FSMModule
|
|
5
|
+
* @architect-status active
|
|
6
|
+
* @architect-depends-on:PDR005MvpWorkflow
|
|
7
|
+
*
|
|
8
|
+
* ## FSM Module - Phase State Machine Implementation
|
|
9
|
+
*
|
|
10
|
+
* Central export for the 4-state FSM defined in PDR-005:
|
|
11
|
+
*
|
|
12
|
+
* ```
|
|
13
|
+
* roadmap ──→ active ──→ completed
|
|
14
|
+
* │ │
|
|
15
|
+
* │ ↓
|
|
16
|
+
* │ roadmap (blocked/regressed)
|
|
17
|
+
* │
|
|
18
|
+
* ↓
|
|
19
|
+
* deferred ──→ roadmap
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* ### When to Use
|
|
23
|
+
*
|
|
24
|
+
* - When validating status transitions in pre-commit hooks
|
|
25
|
+
* - When checking protection levels for completed patterns
|
|
26
|
+
* - When implementing workflow enforcement in CI/CD
|
|
27
|
+
*
|
|
28
|
+
* ### Module Contents
|
|
29
|
+
*
|
|
30
|
+
* - **states.ts** - Status states and protection levels
|
|
31
|
+
* - **transitions.ts** - Valid transition matrix
|
|
32
|
+
* - **validator.ts** - Pure validation functions (Decider pattern)
|
|
33
|
+
*
|
|
34
|
+
* ### Usage Example
|
|
35
|
+
*
|
|
36
|
+
* ```typescript
|
|
37
|
+
* import {
|
|
38
|
+
* validateStatus,
|
|
39
|
+
* validateTransition,
|
|
40
|
+
* getProtectionLevel,
|
|
41
|
+
* isValidTransition
|
|
42
|
+
* } from "@libar-dev/architect/validation/fsm";
|
|
43
|
+
*
|
|
44
|
+
* // Validate a status value
|
|
45
|
+
* const result = validateStatus("roadmap");
|
|
46
|
+
* if (result.valid) {
|
|
47
|
+
* console.log("Valid status");
|
|
48
|
+
* }
|
|
49
|
+
*
|
|
50
|
+
* // Check transition validity
|
|
51
|
+
* if (isValidTransition("roadmap", "active")) {
|
|
52
|
+
* console.log("Can start work");
|
|
53
|
+
* }
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
// States - Protection levels and state queries
|
|
57
|
+
export { PROTECTION_LEVELS, getProtectionLevel, isTerminalState, isFullyEditable, isScopeLocked,
|
|
58
|
+
// Re-exported from taxonomy for convenience
|
|
59
|
+
PROCESS_STATUS_VALUES, } from './states.js';
|
|
60
|
+
// Transitions - Valid transition matrix and queries
|
|
61
|
+
export { VALID_TRANSITIONS, isValidTransition, getValidTransitionsFrom, getTransitionErrorMessage, } from './transitions.js';
|
|
62
|
+
// Validator - Pure validation functions
|
|
63
|
+
export { validateStatus, validateTransition, validateCompletionMetadata, validatePatternStatus, getProtectionSummary, } from './validator.js';
|
|
64
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/validation/fsm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAEH,+CAA+C;AAC/C,OAAO,EACL,iBAAiB,EAEjB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,aAAa;AACb,4CAA4C;AAC5C,qBAAqB,GAEtB,MAAM,aAAa,CAAC;AAErB,oDAAoD;AACpD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,GAE1B,MAAM,kBAAkB,CAAC;AAE1B,wCAAwC;AACxC,OAAO,EAML,cAAc,EACd,kBAAkB,EAClB,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @architect
|
|
3
|
+
* @architect-extract-shapes PROTECTION_LEVELS, ProtectionLevel, getProtectionLevel, isTerminalState, isFullyEditable, isScopeLocked
|
|
4
|
+
* @architect-validation
|
|
5
|
+
* @architect-pattern FSMStates
|
|
6
|
+
* @architect-status active
|
|
7
|
+
* @architect-implements PhaseStateMachineValidation
|
|
8
|
+
* @architect-depends-on:PDR005MvpWorkflow
|
|
9
|
+
* @architect-arch-role read-model
|
|
10
|
+
* @architect-arch-context validation
|
|
11
|
+
* @architect-arch-layer domain
|
|
12
|
+
*
|
|
13
|
+
* ## FSM States - Process Status States and Protection Levels
|
|
14
|
+
*
|
|
15
|
+
* Defines the 4-state FSM from PDR-005 MVP Workflow:
|
|
16
|
+
* - roadmap: Planned work (fully editable)
|
|
17
|
+
* - active: Work in progress (scope-locked)
|
|
18
|
+
* - completed: Done (hard-locked, requires unlock)
|
|
19
|
+
* - deferred: On hold (fully editable)
|
|
20
|
+
*
|
|
21
|
+
* ### When to Use
|
|
22
|
+
*
|
|
23
|
+
* - Use `getProtectionLevel()` to determine modification restrictions
|
|
24
|
+
* - Use `isTerminalState()` to check if state allows transitions
|
|
25
|
+
* - Use `PROTECTION_LEVELS` for direct lookups
|
|
26
|
+
*/
|
|
27
|
+
import { PROCESS_STATUS_VALUES, type ProcessStatusValue } from '../../taxonomy/index.js';
|
|
28
|
+
/**
|
|
29
|
+
* Protection level types for FSM states
|
|
30
|
+
*
|
|
31
|
+
* - `none`: Fully editable, no restrictions
|
|
32
|
+
* - `scope`: Scope-locked, prevents adding new deliverables
|
|
33
|
+
* - `hard`: Hard-locked, requires explicit unlock-reason annotation
|
|
34
|
+
*/
|
|
35
|
+
export type ProtectionLevel = 'none' | 'scope' | 'hard';
|
|
36
|
+
/**
|
|
37
|
+
* Protection level mapping per PDR-005
|
|
38
|
+
*
|
|
39
|
+
* | State | Protection | Meaning |
|
|
40
|
+
* |-----------|------------|----------------------------------|
|
|
41
|
+
* | roadmap | none | Planning phase, fully editable |
|
|
42
|
+
* | active | scope | In progress, no new deliverables |
|
|
43
|
+
* | completed | hard | Done, requires unlock to modify |
|
|
44
|
+
* | deferred | none | Parked, fully editable |
|
|
45
|
+
*/
|
|
46
|
+
export declare const PROTECTION_LEVELS: Readonly<Record<ProcessStatusValue, ProtectionLevel>>;
|
|
47
|
+
/**
|
|
48
|
+
* Get the protection level for a status
|
|
49
|
+
*
|
|
50
|
+
* @param status - Process status value
|
|
51
|
+
* @returns Protection level for the status
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* getProtectionLevel("active"); // → "scope"
|
|
56
|
+
* getProtectionLevel("completed"); // → "hard"
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export declare function getProtectionLevel(status: ProcessStatusValue): ProtectionLevel;
|
|
60
|
+
/**
|
|
61
|
+
* Check if a status is a terminal state (cannot transition out)
|
|
62
|
+
*
|
|
63
|
+
* Terminal states require explicit unlock to modify.
|
|
64
|
+
*
|
|
65
|
+
* @param status - Process status value
|
|
66
|
+
* @returns true if the status is terminal
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* isTerminalState("completed"); // → true
|
|
71
|
+
* isTerminalState("active"); // → false
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
export declare function isTerminalState(status: ProcessStatusValue): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Check if a status is fully editable (no protection)
|
|
77
|
+
*
|
|
78
|
+
* @param status - Process status value
|
|
79
|
+
* @returns true if the status has no protection
|
|
80
|
+
*/
|
|
81
|
+
export declare function isFullyEditable(status: ProcessStatusValue): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Check if a status is scope-locked
|
|
84
|
+
*
|
|
85
|
+
* @param status - Process status value
|
|
86
|
+
* @returns true if the status prevents scope changes
|
|
87
|
+
*/
|
|
88
|
+
export declare function isScopeLocked(status: ProcessStatusValue): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Re-export status values for convenience
|
|
91
|
+
*/
|
|
92
|
+
export { PROCESS_STATUS_VALUES, type ProcessStatusValue };
|
|
93
|
+
//# sourceMappingURL=states.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"states.d.ts","sourceRoot":"","sources":["../../../src/validation/fsm/states.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAExD;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAK1E,CAAC;AAEX;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,eAAe,CAE9E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAEnE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAEnE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAEjE;AAED;;GAEG;AACH,OAAO,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @architect
|
|
3
|
+
* @architect-extract-shapes PROTECTION_LEVELS, ProtectionLevel, getProtectionLevel, isTerminalState, isFullyEditable, isScopeLocked
|
|
4
|
+
* @architect-validation
|
|
5
|
+
* @architect-pattern FSMStates
|
|
6
|
+
* @architect-status active
|
|
7
|
+
* @architect-implements PhaseStateMachineValidation
|
|
8
|
+
* @architect-depends-on:PDR005MvpWorkflow
|
|
9
|
+
* @architect-arch-role read-model
|
|
10
|
+
* @architect-arch-context validation
|
|
11
|
+
* @architect-arch-layer domain
|
|
12
|
+
*
|
|
13
|
+
* ## FSM States - Process Status States and Protection Levels
|
|
14
|
+
*
|
|
15
|
+
* Defines the 4-state FSM from PDR-005 MVP Workflow:
|
|
16
|
+
* - roadmap: Planned work (fully editable)
|
|
17
|
+
* - active: Work in progress (scope-locked)
|
|
18
|
+
* - completed: Done (hard-locked, requires unlock)
|
|
19
|
+
* - deferred: On hold (fully editable)
|
|
20
|
+
*
|
|
21
|
+
* ### When to Use
|
|
22
|
+
*
|
|
23
|
+
* - Use `getProtectionLevel()` to determine modification restrictions
|
|
24
|
+
* - Use `isTerminalState()` to check if state allows transitions
|
|
25
|
+
* - Use `PROTECTION_LEVELS` for direct lookups
|
|
26
|
+
*/
|
|
27
|
+
import { PROCESS_STATUS_VALUES } from '../../taxonomy/index.js';
|
|
28
|
+
/**
|
|
29
|
+
* Protection level mapping per PDR-005
|
|
30
|
+
*
|
|
31
|
+
* | State | Protection | Meaning |
|
|
32
|
+
* |-----------|------------|----------------------------------|
|
|
33
|
+
* | roadmap | none | Planning phase, fully editable |
|
|
34
|
+
* | active | scope | In progress, no new deliverables |
|
|
35
|
+
* | completed | hard | Done, requires unlock to modify |
|
|
36
|
+
* | deferred | none | Parked, fully editable |
|
|
37
|
+
*/
|
|
38
|
+
export const PROTECTION_LEVELS = {
|
|
39
|
+
roadmap: 'none',
|
|
40
|
+
active: 'scope',
|
|
41
|
+
completed: 'hard',
|
|
42
|
+
deferred: 'none',
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Get the protection level for a status
|
|
46
|
+
*
|
|
47
|
+
* @param status - Process status value
|
|
48
|
+
* @returns Protection level for the status
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* getProtectionLevel("active"); // → "scope"
|
|
53
|
+
* getProtectionLevel("completed"); // → "hard"
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export function getProtectionLevel(status) {
|
|
57
|
+
return PROTECTION_LEVELS[status];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Check if a status is a terminal state (cannot transition out)
|
|
61
|
+
*
|
|
62
|
+
* Terminal states require explicit unlock to modify.
|
|
63
|
+
*
|
|
64
|
+
* @param status - Process status value
|
|
65
|
+
* @returns true if the status is terminal
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* isTerminalState("completed"); // → true
|
|
70
|
+
* isTerminalState("active"); // → false
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export function isTerminalState(status) {
|
|
74
|
+
return status === 'completed';
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Check if a status is fully editable (no protection)
|
|
78
|
+
*
|
|
79
|
+
* @param status - Process status value
|
|
80
|
+
* @returns true if the status has no protection
|
|
81
|
+
*/
|
|
82
|
+
export function isFullyEditable(status) {
|
|
83
|
+
return PROTECTION_LEVELS[status] === 'none';
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Check if a status is scope-locked
|
|
87
|
+
*
|
|
88
|
+
* @param status - Process status value
|
|
89
|
+
* @returns true if the status prevents scope changes
|
|
90
|
+
*/
|
|
91
|
+
export function isScopeLocked(status) {
|
|
92
|
+
return PROTECTION_LEVELS[status] === 'scope';
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Re-export status values for convenience
|
|
96
|
+
*/
|
|
97
|
+
export { PROCESS_STATUS_VALUES };
|
|
98
|
+
//# sourceMappingURL=states.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"states.js","sourceRoot":"","sources":["../../../src/validation/fsm/states.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,qBAAqB,EAA2B,MAAM,yBAAyB,CAAC;AAWzF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA0D;IACtF,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,OAAO;IACf,SAAS,EAAE,MAAM;IACjB,QAAQ,EAAE,MAAM;CACR,CAAC;AAEX;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA0B;IAC3D,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAC,MAA0B;IACxD,OAAO,MAAM,KAAK,WAAW,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAA0B;IACxD,OAAO,iBAAiB,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,MAA0B;IACtD,OAAO,iBAAiB,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,OAAO,EAAE,qBAAqB,EAA2B,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @architect
|
|
3
|
+
* @architect-validation
|
|
4
|
+
* @architect-pattern FSMTransitions
|
|
5
|
+
* @architect-status active
|
|
6
|
+
* @architect-implements PhaseStateMachineValidation
|
|
7
|
+
* @architect-depends-on:PDR005MvpWorkflow
|
|
8
|
+
* @architect-extract-shapes VALID_TRANSITIONS, isValidTransition, getValidTransitionsFrom, getTransitionErrorMessage
|
|
9
|
+
* @architect-arch-role read-model
|
|
10
|
+
* @architect-arch-context validation
|
|
11
|
+
* @architect-arch-layer domain
|
|
12
|
+
*
|
|
13
|
+
* ## FSM Transitions - Valid State Transition Matrix
|
|
14
|
+
*
|
|
15
|
+
* Defines valid transitions between FSM states per PDR-005:
|
|
16
|
+
*
|
|
17
|
+
* ```
|
|
18
|
+
* roadmap ──→ active ──→ completed
|
|
19
|
+
* │ │
|
|
20
|
+
* │ ↓
|
|
21
|
+
* │ roadmap (blocked/regressed)
|
|
22
|
+
* │
|
|
23
|
+
* ↓
|
|
24
|
+
* deferred ──→ roadmap
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* ### When to Use
|
|
28
|
+
*
|
|
29
|
+
* - Use `isValidTransition()` to validate proposed status changes
|
|
30
|
+
* - Use `getValidTransitionsFrom()` to show available options
|
|
31
|
+
*/
|
|
32
|
+
import type { ProcessStatusValue } from '../../taxonomy/index.js';
|
|
33
|
+
import type { TagRegistry } from '../../validation-schemas/tag-registry.js';
|
|
34
|
+
/**
|
|
35
|
+
* Options for transition functions that generate messages
|
|
36
|
+
*/
|
|
37
|
+
export interface TransitionMessageOptions {
|
|
38
|
+
/** Tag registry providing prefix for error message formatting */
|
|
39
|
+
readonly registry?: TagRegistry;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Valid FSM transitions matrix
|
|
43
|
+
*
|
|
44
|
+
* Maps each state to the list of states it can transition to.
|
|
45
|
+
*
|
|
46
|
+
* | From | Valid Targets | Notes |
|
|
47
|
+
* |-----------|----------------------------|------------------------------|
|
|
48
|
+
* | roadmap | active, deferred, roadmap | Can start, park, or stay |
|
|
49
|
+
* | active | completed, roadmap | Can finish or regress |
|
|
50
|
+
* | completed | (none) | Terminal state |
|
|
51
|
+
* | deferred | roadmap | Must go through roadmap |
|
|
52
|
+
*/
|
|
53
|
+
export declare const VALID_TRANSITIONS: Readonly<Record<ProcessStatusValue, readonly ProcessStatusValue[]>>;
|
|
54
|
+
/**
|
|
55
|
+
* Check if a transition between two states is valid
|
|
56
|
+
*
|
|
57
|
+
* @param from - Current status
|
|
58
|
+
* @param to - Target status
|
|
59
|
+
* @returns true if the transition is allowed
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* isValidTransition("roadmap", "active"); // → true
|
|
64
|
+
* isValidTransition("roadmap", "completed"); // → false (must go through active)
|
|
65
|
+
* isValidTransition("completed", "active"); // → false (terminal state)
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export declare function isValidTransition(from: ProcessStatusValue, to: ProcessStatusValue): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Get all valid transitions from a given state
|
|
71
|
+
*
|
|
72
|
+
* @param status - Current status
|
|
73
|
+
* @returns Array of valid target states (empty for terminal states)
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* getValidTransitionsFrom("roadmap"); // → ["active", "deferred", "roadmap"]
|
|
78
|
+
* getValidTransitionsFrom("completed"); // → []
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
export declare function getValidTransitionsFrom(status: ProcessStatusValue): readonly ProcessStatusValue[];
|
|
82
|
+
/**
|
|
83
|
+
* Get a human-readable description of why a transition is invalid
|
|
84
|
+
*
|
|
85
|
+
* @param from - Current status
|
|
86
|
+
* @param to - Attempted target status
|
|
87
|
+
* @param options - Optional message options with registry for prefix
|
|
88
|
+
* @returns Error message describing the violation
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* getTransitionErrorMessage("roadmap", "completed");
|
|
93
|
+
* // → "Cannot transition from 'roadmap' to 'completed'. Must go through 'active' first."
|
|
94
|
+
*
|
|
95
|
+
* getTransitionErrorMessage("completed", "active");
|
|
96
|
+
* // → "Cannot transition from 'completed' (terminal state). Use unlock-reason tag to modify."
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
export declare function getTransitionErrorMessage(from: ProcessStatusValue, to: ProcessStatusValue, options?: TransitionMessageOptions): string;
|
|
100
|
+
//# sourceMappingURL=transitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transitions.d.ts","sourceRoot":"","sources":["../../../src/validation/fsm/transitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAG5E;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC;CACjC;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CACtC,MAAM,CAAC,kBAAkB,EAAE,SAAS,kBAAkB,EAAE,CAAC,CAMjD,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAG3F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,kBAAkB,GAAG,SAAS,kBAAkB,EAAE,CAEjG;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,kBAAkB,EACxB,EAAE,EAAE,kBAAkB,EACtB,OAAO,CAAC,EAAE,wBAAwB,GACjC,MAAM,CAyBR"}
|