@jasonbelmonti/markdown-engine 1.0.0 → 3.0.0
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 +48 -0
- package/README.md +113 -56
- package/SECURITY.md +5 -3
- package/dist/api/annotation-source-range.d.ts +7 -0
- package/dist/api/annotation-source-range.d.ts.map +1 -0
- package/dist/api/annotation-source-range.js +103 -0
- package/dist/api/annotation-source-range.js.map +1 -0
- package/dist/api/annotation-target-candidate.d.ts +10 -0
- package/dist/api/annotation-target-candidate.d.ts.map +1 -0
- package/dist/api/annotation-target-candidate.js +14 -0
- package/dist/api/annotation-target-candidate.js.map +1 -0
- package/dist/api/annotation-target-cloning.d.ts +5 -0
- package/dist/api/annotation-target-cloning.d.ts.map +1 -0
- package/dist/api/annotation-target-cloning.js +122 -0
- package/dist/api/annotation-target-cloning.js.map +1 -0
- package/dist/api/annotation-target-diagnostics.d.ts +8 -0
- package/dist/api/annotation-target-diagnostics.d.ts.map +1 -0
- package/dist/api/annotation-target-diagnostics.js +57 -0
- package/dist/api/annotation-target-diagnostics.js.map +1 -0
- package/dist/api/annotation-target-validation.d.ts +2 -2
- package/dist/api/annotation-target-validation.d.ts.map +1 -1
- package/dist/api/annotation-target-validation.js +5 -272
- package/dist/api/annotation-target-validation.js.map +1 -1
- package/dist/api/contracts.d.ts +2 -1
- package/dist/api/contracts.d.ts.map +1 -1
- package/dist/api/contracts.js +1 -0
- package/dist/api/contracts.js.map +1 -1
- package/dist/api/declarative-validation.d.ts +13 -0
- package/dist/api/declarative-validation.d.ts.map +1 -0
- package/dist/api/declarative-validation.js +85 -0
- package/dist/api/declarative-validation.js.map +1 -0
- package/dist/api/document-queries.d.ts.map +1 -1
- package/dist/api/document-queries.js +74 -3
- package/dist/api/document-queries.js.map +1 -1
- package/dist/api/document.d.ts +44 -0
- package/dist/api/document.d.ts.map +1 -1
- package/dist/api/engine-node-attributes.d.ts +15 -0
- package/dist/api/engine-node-attributes.d.ts.map +1 -0
- package/dist/api/engine-node-attributes.js +99 -0
- package/dist/api/engine-node-attributes.js.map +1 -0
- package/dist/api/normalize.d.ts.map +1 -1
- package/dist/api/normalize.js +22 -1
- package/dist/api/normalize.js.map +1 -1
- package/dist/api/serialize.js +2 -14
- package/dist/api/serialize.js.map +1 -1
- package/dist/cli/args.d.ts +6 -2
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +33 -25
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/declarative-validation.d.ts +18 -0
- package/dist/cli/declarative-validation.d.ts.map +1 -0
- package/dist/cli/declarative-validation.js +126 -0
- package/dist/cli/declarative-validation.js.map +1 -0
- package/dist/cli/files.d.ts +1 -0
- package/dist/cli/files.d.ts.map +1 -1
- package/dist/cli/files.js +3 -0
- package/dist/cli/files.js.map +1 -1
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +18 -3
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/validate-args.d.ts +18 -0
- package/dist/cli/validate-args.d.ts.map +1 -0
- package/dist/cli/validate-args.js +131 -0
- package/dist/cli/validate-args.js.map +1 -0
- package/dist/declarative-validation/applicability/classifier.d.ts +18 -0
- package/dist/declarative-validation/applicability/classifier.d.ts.map +1 -0
- package/dist/declarative-validation/applicability/classifier.js +37 -0
- package/dist/declarative-validation/applicability/classifier.js.map +1 -0
- package/dist/declarative-validation/applicability/index.d.ts +2 -0
- package/dist/declarative-validation/applicability/index.d.ts.map +1 -0
- package/dist/declarative-validation/applicability/index.js +2 -0
- package/dist/declarative-validation/applicability/index.js.map +1 -0
- package/dist/declarative-validation/assertions/context.d.ts +8 -0
- package/dist/declarative-validation/assertions/context.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/context.js +2 -0
- package/dist/declarative-validation/assertions/context.js.map +1 -0
- package/dist/declarative-validation/assertions/diagnostics.d.ts +25 -0
- package/dist/declarative-validation/assertions/diagnostics.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/diagnostics.js +96 -0
- package/dist/declarative-validation/assertions/diagnostics.js.map +1 -0
- package/dist/declarative-validation/assertions/document-text-offsets.d.ts +3 -0
- package/dist/declarative-validation/assertions/document-text-offsets.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/document-text-offsets.js +32 -0
- package/dist/declarative-validation/assertions/document-text-offsets.js.map +1 -0
- package/dist/declarative-validation/assertions/evaluator.d.ts +5 -0
- package/dist/declarative-validation/assertions/evaluator.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/evaluator.js +49 -0
- package/dist/declarative-validation/assertions/evaluator.js.map +1 -0
- package/dist/declarative-validation/assertions/exists.d.ts +4 -0
- package/dist/declarative-validation/assertions/exists.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/exists.js +8 -0
- package/dist/declarative-validation/assertions/exists.js.map +1 -0
- package/dist/declarative-validation/assertions/frontmatter-required.d.ts +9 -0
- package/dist/declarative-validation/assertions/frontmatter-required.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/frontmatter-required.js +15 -0
- package/dist/declarative-validation/assertions/frontmatter-required.js.map +1 -0
- package/dist/declarative-validation/assertions/group-evaluator.d.ts +6 -0
- package/dist/declarative-validation/assertions/group-evaluator.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/group-evaluator.js +57 -0
- package/dist/declarative-validation/assertions/group-evaluator.js.map +1 -0
- package/dist/declarative-validation/assertions/id-targets.d.ts +44 -0
- package/dist/declarative-validation/assertions/id-targets.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/id-targets.js +391 -0
- package/dist/declarative-validation/assertions/id-targets.js.map +1 -0
- package/dist/declarative-validation/assertions/id-tokens.d.ts +15 -0
- package/dist/declarative-validation/assertions/id-tokens.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/id-tokens.js +27 -0
- package/dist/declarative-validation/assertions/id-tokens.js.map +1 -0
- package/dist/declarative-validation/assertions/ids.d.ts +9 -0
- package/dist/declarative-validation/assertions/ids.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/ids.js +128 -0
- package/dist/declarative-validation/assertions/ids.js.map +1 -0
- package/dist/declarative-validation/assertions/index.d.ts +4 -0
- package/dist/declarative-validation/assertions/index.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/index.js +4 -0
- package/dist/declarative-validation/assertions/index.js.map +1 -0
- package/dist/declarative-validation/assertions/literal-text.d.ts +2 -0
- package/dist/declarative-validation/assertions/literal-text.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/literal-text.js +14 -0
- package/dist/declarative-validation/assertions/literal-text.js.map +1 -0
- package/dist/declarative-validation/assertions/normalized-source-ranges.d.ts +3 -0
- package/dist/declarative-validation/assertions/normalized-source-ranges.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/normalized-source-ranges.js +105 -0
- package/dist/declarative-validation/assertions/normalized-source-ranges.js.map +1 -0
- package/dist/declarative-validation/assertions/ordering.d.ts +6 -0
- package/dist/declarative-validation/assertions/ordering.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/ordering.js +71 -0
- package/dist/declarative-validation/assertions/ordering.js.map +1 -0
- package/dist/declarative-validation/assertions/references.d.ts +9 -0
- package/dist/declarative-validation/assertions/references.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/references.js +354 -0
- package/dist/declarative-validation/assertions/references.js.map +1 -0
- package/dist/declarative-validation/assertions/sections-required.d.ts +9 -0
- package/dist/declarative-validation/assertions/sections-required.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/sections-required.js +49 -0
- package/dist/declarative-validation/assertions/sections-required.js.map +1 -0
- package/dist/declarative-validation/assertions/table-column-coverage.d.ts +9 -0
- package/dist/declarative-validation/assertions/table-column-coverage.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/table-column-coverage.js +108 -0
- package/dist/declarative-validation/assertions/table-column-coverage.js.map +1 -0
- package/dist/declarative-validation/assertions/table-columns-required.d.ts +9 -0
- package/dist/declarative-validation/assertions/table-columns-required.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/table-columns-required.js +31 -0
- package/dist/declarative-validation/assertions/table-columns-required.js.map +1 -0
- package/dist/declarative-validation/assertions/text-length.d.ts +9 -0
- package/dist/declarative-validation/assertions/text-length.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/text-length.js +40 -0
- package/dist/declarative-validation/assertions/text-length.js.map +1 -0
- package/dist/declarative-validation/assertions/text-occurrence-count.d.ts +9 -0
- package/dist/declarative-validation/assertions/text-occurrence-count.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/text-occurrence-count.js +22 -0
- package/dist/declarative-validation/assertions/text-occurrence-count.js.map +1 -0
- package/dist/declarative-validation/assertions/text.d.ts +9 -0
- package/dist/declarative-validation/assertions/text.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/text.js +32 -0
- package/dist/declarative-validation/assertions/text.js.map +1 -0
- package/dist/declarative-validation/compiler/applicability-plan.d.ts +5 -0
- package/dist/declarative-validation/compiler/applicability-plan.d.ts.map +1 -0
- package/dist/declarative-validation/compiler/applicability-plan.js +22 -0
- package/dist/declarative-validation/compiler/applicability-plan.js.map +1 -0
- package/dist/declarative-validation/compiler/assertion-builders.d.ts +7 -0
- package/dist/declarative-validation/compiler/assertion-builders.d.ts.map +1 -0
- package/dist/declarative-validation/compiler/assertion-builders.js +237 -0
- package/dist/declarative-validation/compiler/assertion-builders.js.map +1 -0
- package/dist/declarative-validation/compiler/assertion-shapes.d.ts +20 -0
- package/dist/declarative-validation/compiler/assertion-shapes.d.ts.map +1 -0
- package/dist/declarative-validation/compiler/assertion-shapes.js +219 -0
- package/dist/declarative-validation/compiler/assertion-shapes.js.map +1 -0
- package/dist/declarative-validation/compiler/assertions.d.ts +6 -0
- package/dist/declarative-validation/compiler/assertions.d.ts.map +1 -0
- package/dist/declarative-validation/compiler/assertions.js +35 -0
- package/dist/declarative-validation/compiler/assertions.js.map +1 -0
- package/dist/declarative-validation/compiler/compatibility.d.ts +4 -0
- package/dist/declarative-validation/compiler/compatibility.d.ts.map +1 -0
- package/dist/declarative-validation/compiler/compatibility.js +29 -0
- package/dist/declarative-validation/compiler/compatibility.js.map +1 -0
- package/dist/declarative-validation/compiler/diagnostics.d.ts +3 -0
- package/dist/declarative-validation/compiler/diagnostics.d.ts.map +1 -0
- package/dist/declarative-validation/compiler/diagnostics.js +9 -0
- package/dist/declarative-validation/compiler/diagnostics.js.map +1 -0
- package/dist/declarative-validation/compiler/group-plans.d.ts +6 -0
- package/dist/declarative-validation/compiler/group-plans.d.ts.map +1 -0
- package/dist/declarative-validation/compiler/group-plans.js +67 -0
- package/dist/declarative-validation/compiler/group-plans.js.map +1 -0
- package/dist/declarative-validation/compiler/index.d.ts +5 -0
- package/dist/declarative-validation/compiler/index.d.ts.map +1 -0
- package/dist/declarative-validation/compiler/index.js +199 -0
- package/dist/declarative-validation/compiler/index.js.map +1 -0
- package/dist/declarative-validation/compiler/plan.d.ts +126 -0
- package/dist/declarative-validation/compiler/plan.d.ts.map +1 -0
- package/dist/declarative-validation/compiler/plan.js +2 -0
- package/dist/declarative-validation/compiler/plan.js.map +1 -0
- package/dist/declarative-validation/compiler/rule-fields.d.ts +6 -0
- package/dist/declarative-validation/compiler/rule-fields.d.ts.map +1 -0
- package/dist/declarative-validation/compiler/rule-fields.js +40 -0
- package/dist/declarative-validation/compiler/rule-fields.js.map +1 -0
- package/dist/declarative-validation/diagnostics/index.d.ts +7 -0
- package/dist/declarative-validation/diagnostics/index.d.ts.map +1 -0
- package/dist/declarative-validation/diagnostics/index.js +2 -0
- package/dist/declarative-validation/diagnostics/index.js.map +1 -0
- package/dist/declarative-validation/diagnostics/profile-config-diagnostics.d.ts +10 -0
- package/dist/declarative-validation/diagnostics/profile-config-diagnostics.d.ts.map +1 -0
- package/dist/declarative-validation/diagnostics/profile-config-diagnostics.js +51 -0
- package/dist/declarative-validation/diagnostics/profile-config-diagnostics.js.map +1 -0
- package/dist/declarative-validation/evidence/index.d.ts +14 -0
- package/dist/declarative-validation/evidence/index.d.ts.map +1 -0
- package/dist/declarative-validation/evidence/index.js +38 -0
- package/dist/declarative-validation/evidence/index.js.map +1 -0
- package/dist/declarative-validation/profile/applicability-schema.d.ts +4 -0
- package/dist/declarative-validation/profile/applicability-schema.d.ts.map +1 -0
- package/dist/declarative-validation/profile/applicability-schema.js +24 -0
- package/dist/declarative-validation/profile/applicability-schema.js.map +1 -0
- package/dist/declarative-validation/profile/assertion-schema.d.ts +5 -0
- package/dist/declarative-validation/profile/assertion-schema.d.ts.map +1 -0
- package/dist/declarative-validation/profile/assertion-schema.js +420 -0
- package/dist/declarative-validation/profile/assertion-schema.js.map +1 -0
- package/dist/declarative-validation/profile/data-closure.d.ts +6 -0
- package/dist/declarative-validation/profile/data-closure.d.ts.map +1 -0
- package/dist/declarative-validation/profile/data-closure.js +167 -0
- package/dist/declarative-validation/profile/data-closure.js.map +1 -0
- package/dist/declarative-validation/profile/direct-profile-diagnostics.d.ts +7 -0
- package/dist/declarative-validation/profile/direct-profile-diagnostics.d.ts.map +1 -0
- package/dist/declarative-validation/profile/direct-profile-diagnostics.js +81 -0
- package/dist/declarative-validation/profile/direct-profile-diagnostics.js.map +1 -0
- package/dist/declarative-validation/profile/group-schema.d.ts +5 -0
- package/dist/declarative-validation/profile/group-schema.d.ts.map +1 -0
- package/dist/declarative-validation/profile/group-schema.js +55 -0
- package/dist/declarative-validation/profile/group-schema.js.map +1 -0
- package/dist/declarative-validation/profile/ids-assertion-contract.d.ts +12 -0
- package/dist/declarative-validation/profile/ids-assertion-contract.d.ts.map +1 -0
- package/dist/declarative-validation/profile/ids-assertion-contract.js +32 -0
- package/dist/declarative-validation/profile/ids-assertion-contract.js.map +1 -0
- package/dist/declarative-validation/profile/index.d.ts +153 -0
- package/dist/declarative-validation/profile/index.d.ts.map +1 -0
- package/dist/declarative-validation/profile/index.js +2 -0
- package/dist/declarative-validation/profile/index.js.map +1 -0
- package/dist/declarative-validation/profile/materialization.d.ts +9 -0
- package/dist/declarative-validation/profile/materialization.d.ts.map +1 -0
- package/dist/declarative-validation/profile/materialization.js +112 -0
- package/dist/declarative-validation/profile/materialization.js.map +1 -0
- package/dist/declarative-validation/profile/parse.d.ts +3 -0
- package/dist/declarative-validation/profile/parse.d.ts.map +1 -0
- package/dist/declarative-validation/profile/parse.js +89 -0
- package/dist/declarative-validation/profile/parse.js.map +1 -0
- package/dist/declarative-validation/profile/schema-values.d.ts +14 -0
- package/dist/declarative-validation/profile/schema-values.d.ts.map +1 -0
- package/dist/declarative-validation/profile/schema-values.js +81 -0
- package/dist/declarative-validation/profile/schema-values.js.map +1 -0
- package/dist/declarative-validation/profile/schema.d.ts +9 -0
- package/dist/declarative-validation/profile/schema.d.ts.map +1 -0
- package/dist/declarative-validation/profile/schema.js +159 -0
- package/dist/declarative-validation/profile/schema.js.map +1 -0
- package/dist/declarative-validation/profile/selector-schema.d.ts +4 -0
- package/dist/declarative-validation/profile/selector-schema.d.ts.map +1 -0
- package/dist/declarative-validation/profile/selector-schema.js +145 -0
- package/dist/declarative-validation/profile/selector-schema.js.map +1 -0
- package/dist/declarative-validation/profile/syntax-version.d.ts +7 -0
- package/dist/declarative-validation/profile/syntax-version.d.ts.map +1 -0
- package/dist/declarative-validation/profile/syntax-version.js +11 -0
- package/dist/declarative-validation/profile/syntax-version.js.map +1 -0
- package/dist/declarative-validation/results/clone-rule-result.d.ts +6 -0
- package/dist/declarative-validation/results/clone-rule-result.d.ts.map +1 -0
- package/dist/declarative-validation/results/clone-rule-result.js +125 -0
- package/dist/declarative-validation/results/clone-rule-result.js.map +1 -0
- package/dist/declarative-validation/results/create-result.d.ts +15 -0
- package/dist/declarative-validation/results/create-result.d.ts.map +1 -0
- package/dist/declarative-validation/results/create-result.js +58 -0
- package/dist/declarative-validation/results/create-result.js.map +1 -0
- package/dist/declarative-validation/results/index.d.ts +4 -0
- package/dist/declarative-validation/results/index.d.ts.map +1 -0
- package/dist/declarative-validation/results/index.js +3 -0
- package/dist/declarative-validation/results/index.js.map +1 -0
- package/dist/declarative-validation/results/skipped-rule-result.d.ts +10 -0
- package/dist/declarative-validation/results/skipped-rule-result.d.ts.map +1 -0
- package/dist/declarative-validation/results/skipped-rule-result.js +18 -0
- package/dist/declarative-validation/results/skipped-rule-result.js.map +1 -0
- package/dist/declarative-validation/results/types.d.ts +77 -0
- package/dist/declarative-validation/results/types.d.ts.map +1 -0
- package/dist/declarative-validation/results/types.js +2 -0
- package/dist/declarative-validation/results/types.js.map +1 -0
- package/dist/declarative-validation/selectors/index.d.ts +57 -0
- package/dist/declarative-validation/selectors/index.d.ts.map +1 -0
- package/dist/declarative-validation/selectors/index.js +149 -0
- package/dist/declarative-validation/selectors/index.js.map +1 -0
- package/dist/declarative-validation/selectors/source.d.ts +8 -0
- package/dist/declarative-validation/selectors/source.d.ts.map +1 -0
- package/dist/declarative-validation/selectors/source.js +57 -0
- package/dist/declarative-validation/selectors/source.js.map +1 -0
- package/dist/declarative-validation/selectors/table-targets.d.ts +36 -0
- package/dist/declarative-validation/selectors/table-targets.d.ts.map +1 -0
- package/dist/declarative-validation/selectors/table-targets.js +149 -0
- package/dist/declarative-validation/selectors/table-targets.js.map +1 -0
- package/dist/declarative-validation/selectors/table-text.d.ts +4 -0
- package/dist/declarative-validation/selectors/table-text.d.ts.map +1 -0
- package/dist/declarative-validation/selectors/table-text.js +16 -0
- package/dist/declarative-validation/selectors/table-text.js.map +1 -0
- package/dist/{ir → internal}/document-node-walk.d.ts +5 -0
- package/dist/internal/document-node-walk.d.ts.map +1 -0
- package/dist/internal/document-node-walk.js +36 -0
- package/dist/internal/document-node-walk.js.map +1 -0
- package/dist/internal/stable-json.d.ts +3 -0
- package/dist/internal/stable-json.d.ts.map +1 -0
- package/dist/internal/stable-json.js +17 -0
- package/dist/internal/stable-json.js.map +1 -0
- package/dist/ir/document-derived-views.d.ts.map +1 -1
- package/dist/ir/document-derived-views.js +2 -0
- package/dist/ir/document-derived-views.js.map +1 -1
- package/dist/ir/document-link-reference-views.d.ts +3 -0
- package/dist/ir/document-link-reference-views.d.ts.map +1 -0
- package/dist/ir/document-link-reference-views.js +150 -0
- package/dist/ir/document-link-reference-views.js.map +1 -0
- package/dist/ir/document-link-views.d.ts.map +1 -1
- package/dist/ir/document-link-views.js +7 -8
- package/dist/ir/document-link-views.js.map +1 -1
- package/dist/ir/document-list-views.d.ts.map +1 -1
- package/dist/ir/document-list-views.js +14 -13
- package/dist/ir/document-list-views.js.map +1 -1
- package/dist/ir/document-sections.d.ts.map +1 -1
- package/dist/ir/document-sections.js +2 -4
- package/dist/ir/document-sections.js.map +1 -1
- package/dist/ir/document-table-views.js +1 -1
- package/dist/ir/document-table-views.js.map +1 -1
- package/dist/ir/document-text-spans.js +1 -1
- package/dist/ir/document-text-spans.js.map +1 -1
- package/dist/ir/document.d.ts +2 -3
- package/dist/ir/document.d.ts.map +1 -1
- package/dist/ir/document.js +1 -1
- package/dist/ir/document.js.map +1 -1
- package/dist/ir/index.d.ts +1 -0
- package/dist/ir/index.d.ts.map +1 -1
- package/dist/ir/normalization-input.d.ts +12 -0
- package/dist/ir/normalization-input.d.ts.map +1 -0
- package/dist/ir/normalization-input.js +2 -0
- package/dist/ir/normalization-input.js.map +1 -0
- package/dist/rules/code-fence-languages.d.ts.map +1 -1
- package/dist/rules/code-fence-languages.js +4 -6
- package/dist/rules/code-fence-languages.js.map +1 -1
- package/dist/rules/document-query.d.ts +0 -2
- package/dist/rules/document-query.d.ts.map +1 -1
- package/dist/rules/document-query.js +1 -17
- package/dist/rules/document-query.js.map +1 -1
- package/dist/rules/index.d.ts +2 -6
- package/dist/rules/index.d.ts.map +1 -1
- package/dist/rules/index.js +3 -37
- package/dist/rules/index.js.map +1 -1
- package/dist/rules/links-allowed-schemes.d.ts.map +1 -1
- package/dist/rules/links-allowed-schemes.js +3 -2
- package/dist/rules/links-allowed-schemes.js.map +1 -1
- package/dist/rules/registry.d.ts +12 -0
- package/dist/rules/registry.d.ts.map +1 -0
- package/dist/rules/registry.js +61 -0
- package/dist/rules/registry.js.map +1 -0
- package/dist-bundled/markdown-engine-cli.mjs +26826 -0
- package/docs/contracts/api.md +665 -0
- package/docs/contracts/declarative-validation.md +842 -0
- package/docs/contracts/frontmatter.md +122 -0
- package/fixtures/declarative-validation/examples/operational-spec/fail.md +32 -0
- package/fixtures/declarative-validation/examples/operational-spec/pass.md +34 -0
- package/fixtures/declarative-validation/examples/operational-spec/profile.yaml +131 -0
- package/fixtures/declarative-validation/examples/release-checklist/fail.md +22 -0
- package/fixtures/declarative-validation/examples/release-checklist/pass.md +22 -0
- package/fixtures/declarative-validation/examples/release-checklist/profile.yaml +96 -0
- package/fixtures/declarative-validation/examples/requirements-traceability/fail.md +27 -0
- package/fixtures/declarative-validation/examples/requirements-traceability/pass.md +27 -0
- package/fixtures/declarative-validation/examples/requirements-traceability/profile.yaml +119 -0
- package/package.json +26 -6
- package/skills/profile-backed-markdown/SKILL.md +54 -0
- package/skills/profile-backed-markdown/assets/profiles/operational-spec.yaml +98 -0
- package/skills/profile-backed-markdown/references/repair-brief.md +14 -0
- package/skills/profile-backed-markdown/scripts/validate-profile-backed-markdown.mjs +590 -0
- package/dist/ir/document-node-walk.d.ts.map +0 -1
- package/dist/ir/document-node-walk.js +0 -16
- package/dist/ir/document-node-walk.js.map +0 -1
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Frontmatter Contract
|
|
2
|
+
|
|
3
|
+
Status: Initial contract for `BEL-907 / WP-2A`
|
|
4
|
+
Last updated: 2026-04-30
|
|
5
|
+
|
|
6
|
+
This document defines the public behavior of YAML frontmatter parsing in
|
|
7
|
+
`markdown-engine`. The raw `yaml` parser document and AST are internal adapter
|
|
8
|
+
details and are not exposed through the public parse result.
|
|
9
|
+
|
|
10
|
+
## Extraction
|
|
11
|
+
|
|
12
|
+
Frontmatter is recognized only when the Markdown document begins with an
|
|
13
|
+
optional UTF-8 BOM followed by an opening `---` line and a later closing `---`
|
|
14
|
+
line. If the opening delimiter is not closed, the input is treated as Markdown
|
|
15
|
+
body content.
|
|
16
|
+
|
|
17
|
+
Absent frontmatter produces no diagnostics and leaves `parsed.frontmatter` and
|
|
18
|
+
`parsed.document.frontmatter` unset. Empty frontmatter, such as:
|
|
19
|
+
|
|
20
|
+
```yaml
|
|
21
|
+
---
|
|
22
|
+
---
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
produces `{}` with no diagnostics.
|
|
26
|
+
|
|
27
|
+
## YAML Parser Options
|
|
28
|
+
|
|
29
|
+
The adapter uses `yaml` package APIs verified against `yaml@2.8.3`. Parser
|
|
30
|
+
behavior is pinned with these engine-owned options:
|
|
31
|
+
|
|
32
|
+
```ts
|
|
33
|
+
{
|
|
34
|
+
compat: null,
|
|
35
|
+
customTags: null,
|
|
36
|
+
intAsBigInt: false,
|
|
37
|
+
keepSourceTokens: false,
|
|
38
|
+
logLevel: "error",
|
|
39
|
+
merge: false,
|
|
40
|
+
prettyErrors: false,
|
|
41
|
+
resolveKnownTags: false,
|
|
42
|
+
schema: "core",
|
|
43
|
+
strict: true,
|
|
44
|
+
stringKeys: false,
|
|
45
|
+
uniqueKeys: true,
|
|
46
|
+
version: "1.2",
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Materialization uses:
|
|
51
|
+
|
|
52
|
+
```ts
|
|
53
|
+
{
|
|
54
|
+
mapAsMap: true,
|
|
55
|
+
maxAliasCount: 50,
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
`mapAsMap: true` prevents JavaScript object key coercion during materialization.
|
|
60
|
+
The engine then validates keys and converts supported maps into JSON-safe plain
|
|
61
|
+
objects.
|
|
62
|
+
|
|
63
|
+
## Values
|
|
64
|
+
|
|
65
|
+
The schema is YAML 1.2 core. Representative scalar behavior:
|
|
66
|
+
|
|
67
|
+
| YAML source | Parsed value |
|
|
68
|
+
| --- | --- |
|
|
69
|
+
| `yes`, `no`, `on`, `off` | strings |
|
|
70
|
+
| `true`, `false` | booleans |
|
|
71
|
+
| `null`, `~` | `null` |
|
|
72
|
+
| integer and finite float values | numbers |
|
|
73
|
+
|
|
74
|
+
The public frontmatter value must be JSON-safe: `null`, booleans, finite
|
|
75
|
+
numbers, strings, arrays, and objects with string keys. Non-finite numbers such
|
|
76
|
+
as `.nan` or `.inf` are rejected because JSON serialization would otherwise
|
|
77
|
+
coerce them silently.
|
|
78
|
+
|
|
79
|
+
## Keys
|
|
80
|
+
|
|
81
|
+
Duplicate mapping keys are invalid. They produce a
|
|
82
|
+
`frontmatter.yaml.invalid` diagnostic and no parsed frontmatter value.
|
|
83
|
+
|
|
84
|
+
All mapping keys must be YAML string scalars. Numeric, boolean, null, sequence,
|
|
85
|
+
or mapping keys are rejected with a `frontmatter.yaml.invalid` diagnostic before
|
|
86
|
+
JavaScript key coercion can change the input shape.
|
|
87
|
+
|
|
88
|
+
## Warnings
|
|
89
|
+
|
|
90
|
+
YAML warnings are preserved as `frontmatter.yaml.warning` diagnostics with
|
|
91
|
+
severity `warning`. Warnings do not block `parsed.frontmatter` when the YAML can
|
|
92
|
+
still materialize into JSON-safe data.
|
|
93
|
+
|
|
94
|
+
Explicit tags outside the YAML 1.2 core contract are not resolved through
|
|
95
|
+
YAML 1.1 known-tag behavior. For example, `!!timestamp 2026-04-30` is preserved
|
|
96
|
+
as the string `2026-04-30` and accompanied by an unresolved-tag warning.
|
|
97
|
+
|
|
98
|
+
## Aliases And Merge Keys
|
|
99
|
+
|
|
100
|
+
Aliases are supported with `maxAliasCount: 50` as the materialization limit. In
|
|
101
|
+
`yaml@2.8.3`, inputs that reach that threshold are rejected as excessive alias
|
|
102
|
+
expansion. Missing aliases are invalid and produce `frontmatter.yaml.invalid`.
|
|
103
|
+
|
|
104
|
+
Cyclic aliases are invalid. They produce `frontmatter.yaml.invalid` and no
|
|
105
|
+
parsed frontmatter value.
|
|
106
|
+
|
|
107
|
+
YAML merge keys are disabled. A `<<` key is treated as an ordinary string key,
|
|
108
|
+
not as an instruction to merge mappings.
|
|
109
|
+
|
|
110
|
+
## Diagnostics
|
|
111
|
+
|
|
112
|
+
Invalid YAML, multiple YAML documents, duplicate keys, unsupported keys, alias
|
|
113
|
+
failures, cyclic aliases, non-finite numbers, and non-JSON-safe materialized
|
|
114
|
+
values produce
|
|
115
|
+
`frontmatter.yaml.invalid` diagnostics with severity `error`. Diagnostic source
|
|
116
|
+
ranges are mapped back to Markdown source positions when the YAML package
|
|
117
|
+
provides offsets; otherwise the full frontmatter block range is used.
|
|
118
|
+
|
|
119
|
+
Warnings produce `frontmatter.yaml.warning` diagnostics with severity
|
|
120
|
+
`warning`.
|
|
121
|
+
|
|
122
|
+
Markdown body parsing continues even when frontmatter parsing fails.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Operational Spec Example
|
|
3
|
+
status: ready
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Objective
|
|
7
|
+
|
|
8
|
+
Mission control.
|
|
9
|
+
|
|
10
|
+
# Context / Constraints
|
|
11
|
+
|
|
12
|
+
The example stays generic. It validates Markdown headings, tables, IDs, list
|
|
13
|
+
content, literal text, and links without attaching domain meaning to the core
|
|
14
|
+
engine.
|
|
15
|
+
|
|
16
|
+
# Execution Plan
|
|
17
|
+
|
|
18
|
+
- MUST Validate profile fixtures locally.
|
|
19
|
+
- Record evidence before requesting review.
|
|
20
|
+
- Keep the checks deterministic and local-only.
|
|
21
|
+
|
|
22
|
+
# Risk Register
|
|
23
|
+
|
|
24
|
+
| ID | Mitigation | Status |
|
|
25
|
+
| --- | --- | --- |
|
|
26
|
+
| OPS-RISK-1 | Keep examples structural. | tracked |
|
|
27
|
+
| OPS-RISK-2 | Keep commands local. | closed |
|
|
28
|
+
|
|
29
|
+
# Handoff Links
|
|
30
|
+
|
|
31
|
+
The [handoff packet](./handoff-packet.md) records follow-up review notes for the
|
|
32
|
+
next operator.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Operational Spec Example
|
|
3
|
+
owner: platform-team
|
|
4
|
+
status: ready
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Objective
|
|
8
|
+
|
|
9
|
+
Mission control uses this structural profile to confirm a small operating spec
|
|
10
|
+
has the required sections, handoff links, and risk tracking details.
|
|
11
|
+
|
|
12
|
+
# Context / Constraints
|
|
13
|
+
|
|
14
|
+
The example stays generic. It validates Markdown headings, tables, IDs, list
|
|
15
|
+
content, literal text, and links without attaching domain meaning to the core
|
|
16
|
+
engine.
|
|
17
|
+
|
|
18
|
+
# Execution Plan
|
|
19
|
+
|
|
20
|
+
- MUST Validate profile fixtures locally.
|
|
21
|
+
- MUST Record evidence before requesting review.
|
|
22
|
+
- Keep the checks deterministic and local-only.
|
|
23
|
+
|
|
24
|
+
# Risk Register
|
|
25
|
+
|
|
26
|
+
| ID | Mitigation | Status |
|
|
27
|
+
| --- | --- | --- |
|
|
28
|
+
| OPS-RISK-1 | Keep examples structural. | tracked |
|
|
29
|
+
| OPS-RISK-2 | Keep commands local. | closed |
|
|
30
|
+
|
|
31
|
+
# Handoff Links
|
|
32
|
+
|
|
33
|
+
The [handoff packet](./handoff-packet.md) records follow-up review notes for the
|
|
34
|
+
next operator.
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
syntaxVersion: markdown-engine.validation@v1
|
|
2
|
+
documentVersion: 1.0.0
|
|
3
|
+
rules:
|
|
4
|
+
- id: frontmatter.required
|
|
5
|
+
select:
|
|
6
|
+
target: document
|
|
7
|
+
assert:
|
|
8
|
+
frontmatterRequired:
|
|
9
|
+
fields:
|
|
10
|
+
- title
|
|
11
|
+
- owner
|
|
12
|
+
- status
|
|
13
|
+
|
|
14
|
+
- id: sections.required
|
|
15
|
+
select:
|
|
16
|
+
target: document
|
|
17
|
+
assert:
|
|
18
|
+
sectionsRequired:
|
|
19
|
+
order: strict
|
|
20
|
+
headings:
|
|
21
|
+
- Objective
|
|
22
|
+
- Context / Constraints
|
|
23
|
+
- Execution Plan
|
|
24
|
+
- Risk Register
|
|
25
|
+
- Handoff Links
|
|
26
|
+
|
|
27
|
+
- id: objective.text
|
|
28
|
+
select:
|
|
29
|
+
target: section
|
|
30
|
+
title: Objective
|
|
31
|
+
assert:
|
|
32
|
+
text:
|
|
33
|
+
contains: "Mission control"
|
|
34
|
+
|
|
35
|
+
- id: objective.length
|
|
36
|
+
select:
|
|
37
|
+
target: section
|
|
38
|
+
title: Objective
|
|
39
|
+
assert:
|
|
40
|
+
textLength:
|
|
41
|
+
min: 80
|
|
42
|
+
max: 180
|
|
43
|
+
|
|
44
|
+
- id: risk.heading.text
|
|
45
|
+
select:
|
|
46
|
+
target: heading
|
|
47
|
+
text: Risk Register
|
|
48
|
+
assert:
|
|
49
|
+
text:
|
|
50
|
+
contains: "Risk Register"
|
|
51
|
+
|
|
52
|
+
- id: risk.table.columns
|
|
53
|
+
select:
|
|
54
|
+
target: table
|
|
55
|
+
section: Risk Register
|
|
56
|
+
header:
|
|
57
|
+
- ID
|
|
58
|
+
- Mitigation
|
|
59
|
+
- Status
|
|
60
|
+
assert:
|
|
61
|
+
tableColumnsRequired:
|
|
62
|
+
columns:
|
|
63
|
+
- ID
|
|
64
|
+
- Mitigation
|
|
65
|
+
- Status
|
|
66
|
+
|
|
67
|
+
- id: risk.ids.unique
|
|
68
|
+
select:
|
|
69
|
+
target: tableCell
|
|
70
|
+
section: Risk Register
|
|
71
|
+
tableHeader:
|
|
72
|
+
- ID
|
|
73
|
+
- Mitigation
|
|
74
|
+
- Status
|
|
75
|
+
column: ID
|
|
76
|
+
assert:
|
|
77
|
+
ids:
|
|
78
|
+
prefix: OPS-RISK
|
|
79
|
+
unique: true
|
|
80
|
+
|
|
81
|
+
- id: tracked.risk.row
|
|
82
|
+
select:
|
|
83
|
+
target: tableRow
|
|
84
|
+
section: Risk Register
|
|
85
|
+
tableHeader:
|
|
86
|
+
- ID
|
|
87
|
+
- Mitigation
|
|
88
|
+
- Status
|
|
89
|
+
where:
|
|
90
|
+
column: Status
|
|
91
|
+
equals: tracked
|
|
92
|
+
assert:
|
|
93
|
+
text:
|
|
94
|
+
contains: OPS-RISK-1
|
|
95
|
+
|
|
96
|
+
- id: execution.must.count
|
|
97
|
+
select:
|
|
98
|
+
target: section
|
|
99
|
+
title: Execution Plan
|
|
100
|
+
assert:
|
|
101
|
+
textOccurrenceCount:
|
|
102
|
+
text: MUST
|
|
103
|
+
count: 2
|
|
104
|
+
|
|
105
|
+
- id: execution.list
|
|
106
|
+
select:
|
|
107
|
+
target: list
|
|
108
|
+
section: Execution Plan
|
|
109
|
+
ordered: false
|
|
110
|
+
assert:
|
|
111
|
+
text:
|
|
112
|
+
contains: "Validate profile"
|
|
113
|
+
|
|
114
|
+
- id: handoff.paragraph
|
|
115
|
+
select:
|
|
116
|
+
target: textSpan
|
|
117
|
+
section: Handoff Links
|
|
118
|
+
nodeType: paragraph
|
|
119
|
+
textIncludes: "handoff packet"
|
|
120
|
+
assert:
|
|
121
|
+
text:
|
|
122
|
+
contains: "follow-up"
|
|
123
|
+
|
|
124
|
+
- id: handoff.link
|
|
125
|
+
select:
|
|
126
|
+
target: link
|
|
127
|
+
section: Handoff Links
|
|
128
|
+
text: "handoff packet"
|
|
129
|
+
url: "./handoff-packet.md"
|
|
130
|
+
assert:
|
|
131
|
+
exists: true
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Release Checklist Example
|
|
3
|
+
release: 1.0.0
|
|
4
|
+
owner: release-team
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Release Checklist
|
|
8
|
+
|
|
9
|
+
- Verify package metadata.
|
|
10
|
+
- Use manual bypass for the dry run.
|
|
11
|
+
- Record release evidence.
|
|
12
|
+
|
|
13
|
+
# Gate Table
|
|
14
|
+
|
|
15
|
+
| ID | Gate | Status |
|
|
16
|
+
| --- | --- | --- |
|
|
17
|
+
| REL-GATE-1 | Contract docs | blocked |
|
|
18
|
+
| REL-GATE-1 | Boundary audit | ready |
|
|
19
|
+
|
|
20
|
+
# Links
|
|
21
|
+
|
|
22
|
+
Publish review uses the [release notes](./release-notes.md) after all gates pass.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Release Checklist Example
|
|
3
|
+
release: 1.0.0
|
|
4
|
+
owner: release-team
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Release Checklist
|
|
8
|
+
|
|
9
|
+
- Verify package metadata.
|
|
10
|
+
- Verify package dry run.
|
|
11
|
+
- Record release evidence.
|
|
12
|
+
|
|
13
|
+
# Gate Table
|
|
14
|
+
|
|
15
|
+
| ID | Gate | Status |
|
|
16
|
+
| --- | --- | --- |
|
|
17
|
+
| REL-GATE-1 | Contract docs | ready |
|
|
18
|
+
| REL-GATE-2 | Boundary audit | ready |
|
|
19
|
+
|
|
20
|
+
# Links
|
|
21
|
+
|
|
22
|
+
Publish review uses the [release notes](./release-notes.md) after all gates pass.
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
syntaxVersion: markdown-engine.validation@v1
|
|
2
|
+
documentVersion: 1.0.0
|
|
3
|
+
rules:
|
|
4
|
+
- id: frontmatter.required
|
|
5
|
+
select:
|
|
6
|
+
target: document
|
|
7
|
+
assert:
|
|
8
|
+
frontmatterRequired:
|
|
9
|
+
fields:
|
|
10
|
+
- title
|
|
11
|
+
- release
|
|
12
|
+
- owner
|
|
13
|
+
|
|
14
|
+
- id: sections.required
|
|
15
|
+
select:
|
|
16
|
+
target: document
|
|
17
|
+
assert:
|
|
18
|
+
sectionsRequired:
|
|
19
|
+
order: strict
|
|
20
|
+
headings:
|
|
21
|
+
- Release Checklist
|
|
22
|
+
- Gate Table
|
|
23
|
+
- Links
|
|
24
|
+
|
|
25
|
+
- id: checklist.list
|
|
26
|
+
select:
|
|
27
|
+
target: list
|
|
28
|
+
section: Release Checklist
|
|
29
|
+
ordered: false
|
|
30
|
+
assert:
|
|
31
|
+
text:
|
|
32
|
+
contains: "Verify package"
|
|
33
|
+
excludes:
|
|
34
|
+
- "manual bypass"
|
|
35
|
+
|
|
36
|
+
- id: gate.table.columns
|
|
37
|
+
select:
|
|
38
|
+
target: table
|
|
39
|
+
section: Gate Table
|
|
40
|
+
header:
|
|
41
|
+
- ID
|
|
42
|
+
- Gate
|
|
43
|
+
- Status
|
|
44
|
+
assert:
|
|
45
|
+
tableColumnsRequired:
|
|
46
|
+
columns:
|
|
47
|
+
- ID
|
|
48
|
+
- Gate
|
|
49
|
+
- Status
|
|
50
|
+
|
|
51
|
+
- id: gate.ids.unique
|
|
52
|
+
select:
|
|
53
|
+
target: tableCell
|
|
54
|
+
section: Gate Table
|
|
55
|
+
column: ID
|
|
56
|
+
assert:
|
|
57
|
+
ids:
|
|
58
|
+
prefix: REL-GATE
|
|
59
|
+
unique: true
|
|
60
|
+
|
|
61
|
+
- id: ready.gate.row
|
|
62
|
+
select:
|
|
63
|
+
target: tableRow
|
|
64
|
+
section: Gate Table
|
|
65
|
+
tableHeader:
|
|
66
|
+
- ID
|
|
67
|
+
- Gate
|
|
68
|
+
- Status
|
|
69
|
+
where:
|
|
70
|
+
column: Gate
|
|
71
|
+
equals: "Contract docs"
|
|
72
|
+
assert:
|
|
73
|
+
text:
|
|
74
|
+
contains: ready
|
|
75
|
+
|
|
76
|
+
- id: status.ready.count
|
|
77
|
+
select:
|
|
78
|
+
target: tableCell
|
|
79
|
+
section: Gate Table
|
|
80
|
+
column: Status
|
|
81
|
+
rowWhere:
|
|
82
|
+
column: ID
|
|
83
|
+
equals: REL-GATE-1
|
|
84
|
+
assert:
|
|
85
|
+
textOccurrenceCount:
|
|
86
|
+
text: ready
|
|
87
|
+
count: 1
|
|
88
|
+
|
|
89
|
+
- id: release.link
|
|
90
|
+
select:
|
|
91
|
+
target: link
|
|
92
|
+
section: Links
|
|
93
|
+
text: "release notes"
|
|
94
|
+
url: "./release-notes.md"
|
|
95
|
+
assert:
|
|
96
|
+
exists: true
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Requirements Traceability Example
|
|
3
|
+
owner: quality-team
|
|
4
|
+
status: ready
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Requirements
|
|
8
|
+
|
|
9
|
+
| ID | Requirement statement | Source |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| REQ-1 | The package shall parse one Markdown file. | CLI |
|
|
12
|
+
| REQ-2 | The package shall validate a configured profile. | API |
|
|
13
|
+
| REQ-3 | The package shall emit deterministic diagnostics. | Evidence |
|
|
14
|
+
|
|
15
|
+
# Evidence Matrix
|
|
16
|
+
|
|
17
|
+
| ID | Requirement | Note |
|
|
18
|
+
| --- | --- | --- |
|
|
19
|
+
| EVD-1 | REQ-1 | CLI parse fixture |
|
|
20
|
+
| EVD-2 | REQ-2 | Profile validation fixture |
|
|
21
|
+
| EVD-3 | REQ-3 | Diagnostic assertion fixture |
|
|
22
|
+
|
|
23
|
+
# Traceability
|
|
24
|
+
|
|
25
|
+
REQ-1 is covered by EVD-1.
|
|
26
|
+
REQ-2 is covered by EVD-2.
|
|
27
|
+
EVD-3 has evidence, but the final requirement reference is missing.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Requirements Traceability Example
|
|
3
|
+
owner: quality-team
|
|
4
|
+
status: ready
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Requirements
|
|
8
|
+
|
|
9
|
+
| ID | Requirement statement | Source |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| REQ-1 | The package shall parse one Markdown file. | CLI |
|
|
12
|
+
| REQ-2 | The package shall validate a configured profile. | API |
|
|
13
|
+
| REQ-3 | The package shall emit deterministic diagnostics. | Evidence |
|
|
14
|
+
|
|
15
|
+
# Evidence Matrix
|
|
16
|
+
|
|
17
|
+
| ID | Requirement | Evidence |
|
|
18
|
+
| --- | --- | --- |
|
|
19
|
+
| EVD-1 | REQ-1 | CLI parse fixture |
|
|
20
|
+
| EVD-2 | REQ-2 | Profile validation fixture |
|
|
21
|
+
| EVD-3 | REQ-3 | Diagnostic assertion fixture |
|
|
22
|
+
|
|
23
|
+
# Traceability
|
|
24
|
+
|
|
25
|
+
REQ-1 is covered by EVD-1.
|
|
26
|
+
REQ-2 is covered by EVD-2.
|
|
27
|
+
REQ-3 is covered by EVD-3.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
syntaxVersion: markdown-engine.validation@v1
|
|
2
|
+
documentVersion: 1.0.0
|
|
3
|
+
rules:
|
|
4
|
+
- id: frontmatter.required
|
|
5
|
+
select:
|
|
6
|
+
target: document
|
|
7
|
+
assert:
|
|
8
|
+
frontmatterRequired:
|
|
9
|
+
fields:
|
|
10
|
+
- title
|
|
11
|
+
- owner
|
|
12
|
+
- status
|
|
13
|
+
|
|
14
|
+
- id: sections.required
|
|
15
|
+
select:
|
|
16
|
+
target: document
|
|
17
|
+
assert:
|
|
18
|
+
sectionsRequired:
|
|
19
|
+
order: strict
|
|
20
|
+
headings:
|
|
21
|
+
- Requirements
|
|
22
|
+
- Evidence Matrix
|
|
23
|
+
- Traceability
|
|
24
|
+
|
|
25
|
+
- id: requirements.table.columns
|
|
26
|
+
select:
|
|
27
|
+
target: table
|
|
28
|
+
section: Requirements
|
|
29
|
+
header:
|
|
30
|
+
- ID
|
|
31
|
+
- Requirement statement
|
|
32
|
+
- Source
|
|
33
|
+
assert:
|
|
34
|
+
tableColumnsRequired:
|
|
35
|
+
columns:
|
|
36
|
+
- ID
|
|
37
|
+
- Requirement statement
|
|
38
|
+
- Source
|
|
39
|
+
|
|
40
|
+
- id: evidence.table.columns
|
|
41
|
+
select:
|
|
42
|
+
target: table
|
|
43
|
+
section: Evidence Matrix
|
|
44
|
+
header:
|
|
45
|
+
- ID
|
|
46
|
+
- Requirement
|
|
47
|
+
assert:
|
|
48
|
+
tableColumnsRequired:
|
|
49
|
+
columns:
|
|
50
|
+
- ID
|
|
51
|
+
- Requirement
|
|
52
|
+
- Evidence
|
|
53
|
+
|
|
54
|
+
- id: requirement.ids.unique
|
|
55
|
+
select:
|
|
56
|
+
target: tableCell
|
|
57
|
+
section: Requirements
|
|
58
|
+
column: ID
|
|
59
|
+
assert:
|
|
60
|
+
ids:
|
|
61
|
+
prefix: REQ
|
|
62
|
+
unique: true
|
|
63
|
+
|
|
64
|
+
- id: evidence.ids.unique
|
|
65
|
+
select:
|
|
66
|
+
target: tableCell
|
|
67
|
+
section: Evidence Matrix
|
|
68
|
+
column: ID
|
|
69
|
+
assert:
|
|
70
|
+
ids:
|
|
71
|
+
prefix: EVD
|
|
72
|
+
unique: true
|
|
73
|
+
|
|
74
|
+
- id: requirement.text
|
|
75
|
+
select:
|
|
76
|
+
target: tableCell
|
|
77
|
+
section: Requirements
|
|
78
|
+
column: Requirement statement
|
|
79
|
+
rowWhere:
|
|
80
|
+
column: ID
|
|
81
|
+
equals: REQ-2
|
|
82
|
+
assert:
|
|
83
|
+
text:
|
|
84
|
+
contains: shall
|
|
85
|
+
excludes:
|
|
86
|
+
- TBD
|
|
87
|
+
|
|
88
|
+
- id: requirements.shall.count
|
|
89
|
+
select:
|
|
90
|
+
target: section
|
|
91
|
+
title: Requirements
|
|
92
|
+
assert:
|
|
93
|
+
textOccurrenceCount:
|
|
94
|
+
text: shall
|
|
95
|
+
count: 3
|
|
96
|
+
|
|
97
|
+
- id: traceability.requirements
|
|
98
|
+
select:
|
|
99
|
+
target: document
|
|
100
|
+
assert:
|
|
101
|
+
references:
|
|
102
|
+
idsFrom:
|
|
103
|
+
section: Requirements
|
|
104
|
+
column: ID
|
|
105
|
+
prefix: REQ
|
|
106
|
+
mustAppearIn:
|
|
107
|
+
- Traceability
|
|
108
|
+
|
|
109
|
+
- id: traceability.evidence
|
|
110
|
+
select:
|
|
111
|
+
target: document
|
|
112
|
+
assert:
|
|
113
|
+
references:
|
|
114
|
+
idsFrom:
|
|
115
|
+
section: Evidence Matrix
|
|
116
|
+
column: ID
|
|
117
|
+
prefix: EVD
|
|
118
|
+
mustAppearIn:
|
|
119
|
+
- Traceability
|