@sun-asterisk/sungen 3.2.34 → 3.3.0-alpha.2
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/dist/basis/anchor-grammar.d.ts +32 -0
- package/dist/basis/anchor-grammar.d.ts.map +1 -0
- package/dist/basis/anchor-grammar.js +82 -0
- package/dist/basis/anchor-grammar.js.map +1 -0
- package/dist/basis/anchor-hash.d.ts +6 -0
- package/dist/basis/anchor-hash.d.ts.map +1 -0
- package/dist/basis/anchor-hash.js +28 -0
- package/dist/basis/anchor-hash.js.map +1 -0
- package/dist/basis/bm51-tables.d.ts +20 -0
- package/dist/basis/bm51-tables.d.ts.map +1 -0
- package/dist/basis/bm51-tables.js +71 -0
- package/dist/basis/bm51-tables.js.map +1 -0
- package/dist/basis/extract-spec-anchors.d.ts +39 -0
- package/dist/basis/extract-spec-anchors.d.ts.map +1 -0
- package/dist/basis/extract-spec-anchors.js +81 -0
- package/dist/basis/extract-spec-anchors.js.map +1 -0
- package/dist/basis/migration-sentinel.d.ts +47 -0
- package/dist/basis/migration-sentinel.d.ts.map +1 -0
- package/dist/basis/migration-sentinel.js +219 -0
- package/dist/basis/migration-sentinel.js.map +1 -0
- package/dist/basis/spec-frontmatter.d.ts +18 -0
- package/dist/basis/spec-frontmatter.d.ts.map +1 -0
- package/dist/basis/spec-frontmatter.js +55 -0
- package/dist/basis/spec-frontmatter.js.map +1 -0
- package/dist/basis/spec-sections.d.ts +18 -0
- package/dist/basis/spec-sections.d.ts.map +1 -0
- package/dist/basis/spec-sections.js +27 -0
- package/dist/basis/spec-sections.js.map +1 -0
- package/dist/basis/test-basis-schema.d.ts +28 -0
- package/dist/basis/test-basis-schema.d.ts.map +1 -0
- package/dist/basis/test-basis-schema.js +141 -0
- package/dist/basis/test-basis-schema.js.map +1 -0
- package/dist/capabilities/discover.d.ts +4 -0
- package/dist/capabilities/discover.d.ts.map +1 -1
- package/dist/capabilities/discover.js +16 -2
- package/dist/capabilities/discover.js.map +1 -1
- package/dist/capabilities/registry.d.ts +15 -0
- package/dist/capabilities/registry.d.ts.map +1 -1
- package/dist/capabilities/registry.js.map +1 -1
- package/dist/cli/commands/audit.d.ts.map +1 -1
- package/dist/cli/commands/audit.js +10 -5
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/capability.d.ts.map +1 -1
- package/dist/cli/commands/capability.js +6 -2
- package/dist/cli/commands/capability.js.map +1 -1
- package/dist/cli/commands/contract-derive-command.d.ts +11 -0
- package/dist/cli/commands/contract-derive-command.d.ts.map +1 -0
- package/dist/cli/commands/contract-derive-command.js +99 -0
- package/dist/cli/commands/contract-derive-command.js.map +1 -0
- package/dist/cli/commands/contract.d.ts +17 -0
- package/dist/cli/commands/contract.d.ts.map +1 -0
- package/dist/cli/commands/contract.js +162 -0
- package/dist/cli/commands/contract.js.map +1 -0
- package/dist/cli/commands/defect.d.ts +7 -0
- package/dist/cli/commands/defect.d.ts.map +1 -0
- package/dist/cli/commands/defect.js +68 -0
- package/dist/cli/commands/defect.js.map +1 -0
- package/dist/cli/commands/delivery.d.ts.map +1 -1
- package/dist/cli/commands/delivery.js +96 -12
- package/dist/cli/commands/delivery.js.map +1 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +3 -1
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/journey.d.ts.map +1 -1
- package/dist/cli/commands/journey.js +43 -15
- package/dist/cli/commands/journey.js.map +1 -1
- package/dist/cli/commands/next.d.ts +8 -0
- package/dist/cli/commands/next.d.ts.map +1 -1
- package/dist/cli/commands/next.js +68 -8
- package/dist/cli/commands/next.js.map +1 -1
- package/dist/cli/commands/triage.d.ts +7 -0
- package/dist/cli/commands/triage.d.ts.map +1 -0
- package/dist/cli/commands/triage.js +98 -0
- package/dist/cli/commands/triage.js.map +1 -0
- package/dist/cli/commands/update.d.ts +11 -0
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +31 -6
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +24 -33
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/project-sungen-invocation.d.ts +7 -0
- package/dist/cli/project-sungen-invocation.d.ts.map +1 -0
- package/dist/cli/project-sungen-invocation.js +76 -0
- package/dist/cli/project-sungen-invocation.js.map +1 -0
- package/dist/contract/approve-contract.d.ts +31 -0
- package/dist/contract/approve-contract.d.ts.map +1 -0
- package/dist/contract/approve-contract.js +87 -0
- package/dist/contract/approve-contract.js.map +1 -0
- package/dist/contract/assertion-matcher-vocabulary.d.ts +24 -0
- package/dist/contract/assertion-matcher-vocabulary.d.ts.map +1 -0
- package/dist/contract/assertion-matcher-vocabulary.js +100 -0
- package/dist/contract/assertion-matcher-vocabulary.js.map +1 -0
- package/dist/contract/build-contract-verdict.d.ts +32 -0
- package/dist/contract/build-contract-verdict.d.ts.map +1 -0
- package/dist/contract/build-contract-verdict.js +123 -0
- package/dist/contract/build-contract-verdict.js.map +1 -0
- package/dist/contract/build-trace-conformance.d.ts +18 -0
- package/dist/contract/build-trace-conformance.d.ts.map +1 -0
- package/dist/contract/build-trace-conformance.js +153 -0
- package/dist/contract/build-trace-conformance.js.map +1 -0
- package/dist/contract/classify-contract-change.d.ts +23 -0
- package/dist/contract/classify-contract-change.d.ts.map +1 -0
- package/dist/contract/classify-contract-change.js +98 -0
- package/dist/contract/classify-contract-change.js.map +1 -0
- package/dist/contract/classify-contract-unit.d.ts +18 -0
- package/dist/contract/classify-contract-unit.d.ts.map +1 -0
- package/dist/contract/classify-contract-unit.js +49 -0
- package/dist/contract/classify-contract-unit.js.map +1 -0
- package/dist/contract/classify-trace-conformance.d.ts +32 -0
- package/dist/contract/classify-trace-conformance.d.ts.map +1 -0
- package/dist/contract/classify-trace-conformance.js +117 -0
- package/dist/contract/classify-trace-conformance.js.map +1 -0
- package/dist/contract/contract-git.d.ts +24 -0
- package/dist/contract/contract-git.d.ts.map +1 -0
- package/dist/contract/contract-git.js +144 -0
- package/dist/contract/contract-git.js.map +1 -0
- package/dist/contract/contract-hash.d.ts +7 -0
- package/dist/contract/contract-hash.d.ts.map +1 -0
- package/dist/contract/contract-hash.js +38 -0
- package/dist/contract/contract-hash.js.map +1 -0
- package/dist/contract/contract-report-file.d.ts +4 -0
- package/dist/contract/contract-report-file.d.ts.map +1 -0
- package/dist/contract/contract-report-file.js +60 -0
- package/dist/contract/contract-report-file.js.map +1 -0
- package/dist/contract/contract-schema.d.ts +71 -0
- package/dist/contract/contract-schema.d.ts.map +1 -0
- package/dist/contract/contract-schema.js +102 -0
- package/dist/contract/contract-schema.js.map +1 -0
- package/dist/contract/contract-units.d.ts +12 -0
- package/dist/contract/contract-units.d.ts.map +1 -0
- package/dist/contract/contract-units.js +96 -0
- package/dist/contract/contract-units.js.map +1 -0
- package/dist/contract/contracts-lock-file.d.ts +24 -0
- package/dist/contract/contracts-lock-file.d.ts.map +1 -0
- package/dist/contract/contracts-lock-file.js +140 -0
- package/dist/contract/contracts-lock-file.js.map +1 -0
- package/dist/contract/data-normalize.d.ts +10 -0
- package/dist/contract/data-normalize.d.ts.map +1 -0
- package/dist/contract/data-normalize.js +110 -0
- package/dist/contract/data-normalize.js.map +1 -0
- package/dist/contract/derive-free-feature.d.ts +38 -0
- package/dist/contract/derive-free-feature.d.ts.map +1 -0
- package/dist/contract/derive-free-feature.js +154 -0
- package/dist/contract/derive-free-feature.js.map +1 -0
- package/dist/contract/field-semantic-redaction.d.ts +21 -0
- package/dist/contract/field-semantic-redaction.d.ts.map +1 -0
- package/dist/contract/field-semantic-redaction.js +118 -0
- package/dist/contract/field-semantic-redaction.js.map +1 -0
- package/dist/contract/free-feature-blocks.d.ts +10 -0
- package/dist/contract/free-feature-blocks.d.ts.map +1 -0
- package/dist/contract/free-feature-blocks.js +94 -0
- package/dist/contract/free-feature-blocks.js.map +1 -0
- package/dist/contract/lock-secret-guard.d.ts +22 -0
- package/dist/contract/lock-secret-guard.d.ts.map +1 -0
- package/dist/contract/lock-secret-guard.js +134 -0
- package/dist/contract/lock-secret-guard.js.map +1 -0
- package/dist/contract/lock-vs-git-head.d.ts +26 -0
- package/dist/contract/lock-vs-git-head.d.ts.map +1 -0
- package/dist/contract/lock-vs-git-head.js +28 -0
- package/dist/contract/lock-vs-git-head.js.map +1 -0
- package/dist/contract/normalize-contract-step.d.ts +21 -0
- package/dist/contract/normalize-contract-step.d.ts.map +1 -0
- package/dist/contract/normalize-contract-step.js +70 -0
- package/dist/contract/normalize-contract-step.js.map +1 -0
- package/dist/contract/normalize-feature-steps.d.ts +7 -0
- package/dist/contract/normalize-feature-steps.d.ts.map +1 -0
- package/dist/contract/normalize-feature-steps.js +127 -0
- package/dist/contract/normalize-feature-steps.js.map +1 -0
- package/dist/contract/oracle-strength.d.ts +12 -0
- package/dist/contract/oracle-strength.d.ts.map +1 -0
- package/dist/contract/oracle-strength.js +88 -0
- package/dist/contract/oracle-strength.js.map +1 -0
- package/dist/contract/project-contract-blockers.d.ts +10 -0
- package/dist/contract/project-contract-blockers.d.ts.map +1 -0
- package/dist/contract/project-contract-blockers.js +73 -0
- package/dist/contract/project-contract-blockers.js.map +1 -0
- package/dist/contract/record-contract-approval.d.ts +21 -0
- package/dist/contract/record-contract-approval.d.ts.map +1 -0
- package/dist/contract/record-contract-approval.js +98 -0
- package/dist/contract/record-contract-approval.js.map +1 -0
- package/dist/contract/render-free-gherkin.d.ts +40 -0
- package/dist/contract/render-free-gherkin.d.ts.map +1 -0
- package/dist/contract/render-free-gherkin.js +141 -0
- package/dist/contract/render-free-gherkin.js.map +1 -0
- package/dist/contract/render-trace-sentence.d.ts +20 -0
- package/dist/contract/render-trace-sentence.d.ts.map +1 -0
- package/dist/contract/render-trace-sentence.js +109 -0
- package/dist/contract/render-trace-sentence.js.map +1 -0
- package/dist/contract/render-trace-target.d.ts +14 -0
- package/dist/contract/render-trace-target.d.ts.map +1 -0
- package/dist/contract/render-trace-target.js +70 -0
- package/dist/contract/render-trace-target.js.map +1 -0
- package/dist/contract/resolve-unit-trace-identities.d.ts +8 -0
- package/dist/contract/resolve-unit-trace-identities.d.ts.map +1 -0
- package/dist/contract/resolve-unit-trace-identities.js +78 -0
- package/dist/contract/resolve-unit-trace-identities.js.map +1 -0
- package/dist/contract/trace/collect-trace-evidence.d.ts +33 -0
- package/dist/contract/trace/collect-trace-evidence.d.ts.map +1 -0
- package/dist/contract/trace/collect-trace-evidence.js +161 -0
- package/dist/contract/trace/collect-trace-evidence.js.map +1 -0
- package/dist/contract/trace/identity-cache.d.ts +19 -0
- package/dist/contract/trace/identity-cache.d.ts.map +1 -0
- package/dist/contract/trace/identity-cache.js +104 -0
- package/dist/contract/trace/identity-cache.js.map +1 -0
- package/dist/contract/trace/select-final-attempt.d.ts +27 -0
- package/dist/contract/trace/select-final-attempt.d.ts.map +1 -0
- package/dist/contract/trace/select-final-attempt.js +116 -0
- package/dist/contract/trace/select-final-attempt.js.map +1 -0
- package/dist/contract/trace/snapshot-html-renderer.d.ts +31 -0
- package/dist/contract/trace/snapshot-html-renderer.d.ts.map +1 -0
- package/dist/contract/trace/snapshot-html-renderer.js +172 -0
- package/dist/contract/trace/snapshot-html-renderer.js.map +1 -0
- package/dist/contract/trace/snapshot-resolver.d.ts +21 -0
- package/dist/contract/trace/snapshot-resolver.d.ts.map +1 -0
- package/dist/contract/trace/snapshot-resolver.js +65 -0
- package/dist/contract/trace/snapshot-resolver.js.map +1 -0
- package/dist/contract/trace/snapshot-store.d.ts +66 -0
- package/dist/contract/trace/snapshot-store.d.ts.map +1 -0
- package/dist/contract/trace/snapshot-store.js +173 -0
- package/dist/contract/trace/snapshot-store.js.map +1 -0
- package/dist/contract/trace/target-identity.d.ts +74 -0
- package/dist/contract/trace/target-identity.d.ts.map +1 -0
- package/dist/contract/trace/target-identity.js +68 -0
- package/dist/contract/trace/target-identity.js.map +1 -0
- package/dist/contract/trace/test-step-join.d.ts +65 -0
- package/dist/contract/trace/test-step-join.d.ts.map +1 -0
- package/dist/contract/trace/test-step-join.js +80 -0
- package/dist/contract/trace/test-step-join.js.map +1 -0
- package/dist/contract/trace/trace-binding.d.ts +21 -0
- package/dist/contract/trace/trace-binding.d.ts.map +1 -0
- package/dist/contract/trace/trace-binding.js +88 -0
- package/dist/contract/trace/trace-binding.js.map +1 -0
- package/dist/contract/trace/trace-file-reader.d.ts +41 -0
- package/dist/contract/trace/trace-file-reader.d.ts.map +1 -0
- package/dist/contract/trace/trace-file-reader.js +161 -0
- package/dist/contract/trace/trace-file-reader.js.map +1 -0
- package/dist/contract/trace/trace-fingerprint.d.ts +22 -0
- package/dist/contract/trace/trace-fingerprint.d.ts.map +1 -0
- package/dist/contract/trace/trace-fingerprint.js +96 -0
- package/dist/contract/trace/trace-fingerprint.js.map +1 -0
- package/dist/contract/trace/trace-identity-resolution.d.ts +26 -0
- package/dist/contract/trace/trace-identity-resolution.d.ts.map +1 -0
- package/dist/contract/trace/trace-identity-resolution.js +84 -0
- package/dist/contract/trace/trace-identity-resolution.js.map +1 -0
- package/dist/contract/trace/trace-run-record.d.ts +30 -0
- package/dist/contract/trace/trace-run-record.d.ts.map +1 -0
- package/dist/contract/trace/trace-run-record.js +121 -0
- package/dist/contract/trace/trace-run-record.js.map +1 -0
- package/dist/contract/trace/trace-steps.d.ts +19 -0
- package/dist/contract/trace/trace-steps.d.ts.map +1 -0
- package/dist/contract/trace/trace-steps.js +79 -0
- package/dist/contract/trace/trace-steps.js.map +1 -0
- package/dist/contract/trace/trace-zip-limits.d.ts +45 -0
- package/dist/contract/trace/trace-zip-limits.d.ts.map +1 -0
- package/dist/contract/trace/trace-zip-limits.js +52 -0
- package/dist/contract/trace/trace-zip-limits.js.map +1 -0
- package/dist/contract/trace/trace-zip-reader.d.ts +10 -0
- package/dist/contract/trace/trace-zip-reader.d.ts.map +1 -0
- package/dist/contract/trace/trace-zip-reader.js +186 -0
- package/dist/contract/trace/trace-zip-reader.js.map +1 -0
- package/dist/contract/verify-approval-decisions.d.ts +5 -0
- package/dist/contract/verify-approval-decisions.d.ts.map +1 -0
- package/dist/contract/verify-approval-decisions.js +104 -0
- package/dist/contract/verify-approval-decisions.js.map +1 -0
- package/dist/decisions/append-decision.d.ts +12 -0
- package/dist/decisions/append-decision.d.ts.map +1 -0
- package/dist/decisions/append-decision.js +73 -0
- package/dist/decisions/append-decision.js.map +1 -0
- package/dist/decisions/confirmed-decision-commands.d.ts +41 -0
- package/dist/decisions/confirmed-decision-commands.d.ts.map +1 -0
- package/dist/decisions/confirmed-decision-commands.js +190 -0
- package/dist/decisions/confirmed-decision-commands.js.map +1 -0
- package/dist/decisions/decision-file.d.ts +31 -0
- package/dist/decisions/decision-file.d.ts.map +1 -0
- package/dist/decisions/decision-file.js +139 -0
- package/dist/decisions/decision-file.js.map +1 -0
- package/dist/decisions/decision-identity.d.ts +12 -0
- package/dist/decisions/decision-identity.d.ts.map +1 -0
- package/dist/decisions/decision-identity.js +78 -0
- package/dist/decisions/decision-identity.js.map +1 -0
- package/dist/decisions/decision-integrity-check.d.ts +12 -0
- package/dist/decisions/decision-integrity-check.d.ts.map +1 -0
- package/dist/decisions/decision-integrity-check.js +102 -0
- package/dist/decisions/decision-integrity-check.js.map +1 -0
- package/dist/decisions/decision-schema.d.ts +42 -0
- package/dist/decisions/decision-schema.d.ts.map +1 -0
- package/dist/decisions/decision-schema.js +75 -0
- package/dist/decisions/decision-schema.js.map +1 -0
- package/dist/decisions/decision-source.d.ts +2 -0
- package/dist/decisions/decision-source.d.ts.map +1 -0
- package/dist/decisions/decision-source.js +18 -0
- package/dist/decisions/decision-source.js.map +1 -0
- package/dist/decisions/exclusive-file-create.d.ts +3 -0
- package/dist/decisions/exclusive-file-create.d.ts.map +1 -0
- package/dist/decisions/exclusive-file-create.js +84 -0
- package/dist/decisions/exclusive-file-create.js.map +1 -0
- package/dist/decisions/git-head-trust.d.ts +7 -0
- package/dist/decisions/git-head-trust.d.ts.map +1 -0
- package/dist/decisions/git-head-trust.js +76 -0
- package/dist/decisions/git-head-trust.js.map +1 -0
- package/dist/decisions/human-confirmation.d.ts +35 -0
- package/dist/decisions/human-confirmation.d.ts.map +1 -0
- package/dist/decisions/human-confirmation.js +161 -0
- package/dist/decisions/human-confirmation.js.map +1 -0
- package/dist/decisions/legacy-waiver-migration.d.ts +31 -0
- package/dist/decisions/legacy-waiver-migration.d.ts.map +1 -0
- package/dist/decisions/legacy-waiver-migration.js +170 -0
- package/dist/decisions/legacy-waiver-migration.js.map +1 -0
- package/dist/decisions/read-decisions.d.ts +19 -0
- package/dist/decisions/read-decisions.d.ts.map +1 -0
- package/dist/decisions/read-decisions.js +90 -0
- package/dist/decisions/read-decisions.js.map +1 -0
- package/dist/decisions/viewpoint-baseline-adapter.d.ts +7 -0
- package/dist/decisions/viewpoint-baseline-adapter.d.ts.map +1 -0
- package/dist/decisions/viewpoint-baseline-adapter.js +109 -0
- package/dist/decisions/viewpoint-baseline-adapter.js.map +1 -0
- package/dist/decisions/waiver-decisions.d.ts +24 -0
- package/dist/decisions/waiver-decisions.d.ts.map +1 -0
- package/dist/decisions/waiver-decisions.js +46 -0
- package/dist/decisions/waiver-decisions.js.map +1 -0
- package/dist/exporters/csv-exporter.d.ts +4 -0
- package/dist/exporters/csv-exporter.d.ts.map +1 -1
- package/dist/exporters/csv-exporter.js +1 -1
- package/dist/exporters/csv-exporter.js.map +1 -1
- package/dist/exporters/feature-parser.d.ts +8 -0
- package/dist/exporters/feature-parser.d.ts.map +1 -1
- package/dist/exporters/feature-parser.js +12 -0
- package/dist/exporters/feature-parser.js.map +1 -1
- package/dist/exporters/matrix/build.d.ts +3 -0
- package/dist/exporters/matrix/build.d.ts.map +1 -1
- package/dist/exporters/matrix/build.js +59 -19
- package/dist/exporters/matrix/build.js.map +1 -1
- package/dist/exporters/matrix/carry-manual-results.d.ts +19 -0
- package/dist/exporters/matrix/carry-manual-results.d.ts.map +1 -1
- package/dist/exporters/matrix/carry-manual-results.js +76 -6
- package/dist/exporters/matrix/carry-manual-results.js.map +1 -1
- package/dist/exporters/matrix/export.d.ts +8 -2
- package/dist/exporters/matrix/export.d.ts.map +1 -1
- package/dist/exporters/matrix/export.js +16 -3
- package/dist/exporters/matrix/export.js.map +1 -1
- package/dist/exporters/matrix/gates.d.ts +6 -1
- package/dist/exporters/matrix/gates.d.ts.map +1 -1
- package/dist/exporters/matrix/gates.js +57 -128
- package/dist/exporters/matrix/gates.js.map +1 -1
- package/dist/exporters/matrix/render-csv.d.ts.map +1 -1
- package/dist/exporters/matrix/render-csv.js +4 -1
- package/dist/exporters/matrix/render-csv.js.map +1 -1
- package/dist/exporters/matrix/render-gate-overrides-sheet.d.ts +13 -0
- package/dist/exporters/matrix/render-gate-overrides-sheet.d.ts.map +1 -0
- package/dist/exporters/matrix/render-gate-overrides-sheet.js +44 -0
- package/dist/exporters/matrix/render-gate-overrides-sheet.js.map +1 -0
- package/dist/exporters/matrix/render-xlsx.d.ts +1 -0
- package/dist/exporters/matrix/render-xlsx.d.ts.map +1 -1
- package/dist/exporters/matrix/render-xlsx.js +6 -0
- package/dist/exporters/matrix/render-xlsx.js.map +1 -1
- package/dist/exporters/matrix/types.d.ts +9 -1
- package/dist/exporters/matrix/types.d.ts.map +1 -1
- package/dist/exporters/matrix/types.js.map +1 -1
- package/dist/exporters/matrix/xlsx-cells.js +1 -1
- package/dist/exporters/matrix/xlsx-cells.js.map +1 -1
- package/dist/exporters/playwright-report-parser.d.ts.map +1 -1
- package/dist/exporters/playwright-report-parser.js +1 -0
- package/dist/exporters/playwright-report-parser.js.map +1 -1
- package/dist/exporters/scenario-merger.d.ts.map +1 -1
- package/dist/exporters/scenario-merger.js +2 -0
- package/dist/exporters/scenario-merger.js.map +1 -1
- package/dist/exporters/types.d.ts +5 -0
- package/dist/exporters/types.d.ts.map +1 -1
- package/dist/generators/test-generator/code-generator.d.ts.map +1 -1
- package/dist/generators/test-generator/code-generator.js +13 -0
- package/dist/generators/test-generator/code-generator.js.map +1 -1
- package/dist/graph/evaluate-graph.d.ts +23 -0
- package/dist/graph/evaluate-graph.d.ts.map +1 -0
- package/dist/graph/evaluate-graph.js +52 -0
- package/dist/graph/evaluate-graph.js.map +1 -0
- package/dist/graph/locate-finding.d.ts +20 -0
- package/dist/graph/locate-finding.d.ts.map +1 -0
- package/dist/graph/locate-finding.js +137 -0
- package/dist/graph/locate-finding.js.map +1 -0
- package/dist/graph/node-decl.d.ts +66 -0
- package/dist/graph/node-decl.d.ts.map +1 -0
- package/dist/graph/node-decl.js +8 -0
- package/dist/graph/node-decl.js.map +1 -0
- package/dist/graph/nodes/core-node-catalog.d.ts +7 -0
- package/dist/graph/nodes/core-node-catalog.d.ts.map +1 -0
- package/dist/graph/nodes/core-node-catalog.js +13 -0
- package/dist/graph/nodes/core-node-catalog.js.map +1 -0
- package/dist/graph/nodes/test-case-contract-nodes.d.ts +21 -0
- package/dist/graph/nodes/test-case-contract-nodes.d.ts.map +1 -0
- package/dist/graph/nodes/test-case-contract-nodes.js +59 -0
- package/dist/graph/nodes/test-case-contract-nodes.js.map +1 -0
- package/dist/graph/nodes/test-case-nodes.d.ts +26 -0
- package/dist/graph/nodes/test-case-nodes.d.ts.map +1 -0
- package/dist/graph/nodes/test-case-nodes.js +66 -0
- package/dist/graph/nodes/test-case-nodes.js.map +1 -0
- package/dist/graph/nodes/unit-audit-nodes.d.ts +18 -0
- package/dist/graph/nodes/unit-audit-nodes.d.ts.map +1 -0
- package/dist/graph/nodes/unit-audit-nodes.js +95 -0
- package/dist/graph/nodes/unit-audit-nodes.js.map +1 -0
- package/dist/graph/nodes/unit-contract-node.d.ts +21 -0
- package/dist/graph/nodes/unit-contract-node.d.ts.map +1 -0
- package/dist/graph/nodes/unit-contract-node.js +88 -0
- package/dist/graph/nodes/unit-contract-node.js.map +1 -0
- package/dist/graph/nodes/unit-design-nodes.d.ts +14 -0
- package/dist/graph/nodes/unit-design-nodes.d.ts.map +1 -0
- package/dist/graph/nodes/unit-design-nodes.js +91 -0
- package/dist/graph/nodes/unit-design-nodes.js.map +1 -0
- package/dist/graph/nodes/unit-execution-nodes.d.ts +16 -0
- package/dist/graph/nodes/unit-execution-nodes.d.ts.map +1 -0
- package/dist/graph/nodes/unit-execution-nodes.js +79 -0
- package/dist/graph/nodes/unit-execution-nodes.js.map +1 -0
- package/dist/graph/test-case-identity.d.ts +13 -0
- package/dist/graph/test-case-identity.d.ts.map +1 -0
- package/dist/graph/test-case-identity.js +106 -0
- package/dist/graph/test-case-identity.js.map +1 -0
- package/dist/graph/test-case-results.d.ts +11 -0
- package/dist/graph/test-case-results.d.ts.map +1 -0
- package/dist/graph/test-case-results.js +137 -0
- package/dist/graph/test-case-results.js.map +1 -0
- package/dist/graph/test-case-satisfied.d.ts +25 -0
- package/dist/graph/test-case-satisfied.d.ts.map +1 -0
- package/dist/graph/test-case-satisfied.js +51 -0
- package/dist/graph/test-case-satisfied.js.map +1 -0
- package/dist/graph/test-case-state-shape.d.ts +67 -0
- package/dist/graph/test-case-state-shape.d.ts.map +1 -0
- package/dist/graph/test-case-state-shape.js +3 -0
- package/dist/graph/test-case-state-shape.js.map +1 -0
- package/dist/graph/test-case-states.d.ts +9 -0
- package/dist/graph/test-case-states.d.ts.map +1 -0
- package/dist/graph/test-case-states.js +116 -0
- package/dist/graph/test-case-states.js.map +1 -0
- package/dist/graph/unit-artifact-probes.d.ts +19 -0
- package/dist/graph/unit-artifact-probes.d.ts.map +1 -0
- package/dist/graph/unit-artifact-probes.js +133 -0
- package/dist/graph/unit-artifact-probes.js.map +1 -0
- package/dist/graph/unit-state-facts.d.ts +43 -0
- package/dist/graph/unit-state-facts.d.ts.map +1 -0
- package/dist/graph/unit-state-facts.js +87 -0
- package/dist/graph/unit-state-facts.js.map +1 -0
- package/dist/harness/audit.d.ts +11 -0
- package/dist/harness/audit.d.ts.map +1 -1
- package/dist/harness/audit.js +34 -9
- package/dist/harness/audit.js.map +1 -1
- package/dist/harness/catalog/gate-rules.yaml +647 -0
- package/dist/harness/counted-assertions.d.ts +2 -0
- package/dist/harness/counted-assertions.d.ts.map +1 -0
- package/dist/harness/counted-assertions.js +38 -0
- package/dist/harness/counted-assertions.js.map +1 -0
- package/dist/harness/defect-draft.d.ts +14 -0
- package/dist/harness/defect-draft.d.ts.map +1 -0
- package/dist/harness/defect-draft.js +143 -0
- package/dist/harness/defect-draft.js.map +1 -0
- package/dist/harness/defects.d.ts +24 -0
- package/dist/harness/defects.d.ts.map +1 -0
- package/dist/harness/defects.js +118 -0
- package/dist/harness/defects.js.map +1 -0
- package/dist/harness/gates/audit-gate-terms.d.ts +41 -0
- package/dist/harness/gates/audit-gate-terms.d.ts.map +1 -0
- package/dist/harness/gates/audit-gate-terms.js +72 -0
- package/dist/harness/gates/audit-gate-terms.js.map +1 -0
- package/dist/harness/gates/audit-gate-verdict.d.ts +31 -0
- package/dist/harness/gates/audit-gate-verdict.d.ts.map +1 -0
- package/dist/harness/gates/audit-gate-verdict.js +101 -0
- package/dist/harness/gates/audit-gate-verdict.js.map +1 -0
- package/dist/harness/gates/audit-input-hash.d.ts +4 -0
- package/dist/harness/gates/audit-input-hash.d.ts.map +1 -0
- package/dist/harness/gates/audit-input-hash.js +96 -0
- package/dist/harness/gates/audit-input-hash.js.map +1 -0
- package/dist/harness/gates/audit-report-verification.d.ts +41 -0
- package/dist/harness/gates/audit-report-verification.d.ts.map +1 -0
- package/dist/harness/gates/audit-report-verification.js +236 -0
- package/dist/harness/gates/audit-report-verification.js.map +1 -0
- package/dist/harness/gates/decisions-hash.d.ts +13 -0
- package/dist/harness/gates/decisions-hash.d.ts.map +1 -0
- package/dist/harness/gates/decisions-hash.js +72 -0
- package/dist/harness/gates/decisions-hash.js.map +1 -0
- package/dist/harness/gates/delivery-checklist.d.ts +21 -0
- package/dist/harness/gates/delivery-checklist.d.ts.map +1 -0
- package/dist/harness/gates/delivery-checklist.js +128 -0
- package/dist/harness/gates/delivery-checklist.js.map +1 -0
- package/dist/harness/gates/delivery-decision-gate.d.ts +33 -0
- package/dist/harness/gates/delivery-decision-gate.d.ts.map +1 -0
- package/dist/harness/gates/delivery-decision-gate.js +116 -0
- package/dist/harness/gates/delivery-decision-gate.js.map +1 -0
- package/dist/harness/gates/delivery-decision-step.d.ts +19 -0
- package/dist/harness/gates/delivery-decision-step.d.ts.map +1 -0
- package/dist/harness/gates/delivery-decision-step.js +86 -0
- package/dist/harness/gates/delivery-decision-step.js.map +1 -0
- package/dist/harness/gates/gate-override-report.d.ts +59 -0
- package/dist/harness/gates/gate-override-report.d.ts.map +1 -0
- package/dist/harness/gates/gate-override-report.js +86 -0
- package/dist/harness/gates/gate-override-report.js.map +1 -0
- package/dist/harness/gates/gate-override-scope.d.ts +18 -0
- package/dist/harness/gates/gate-override-scope.d.ts.map +1 -0
- package/dist/harness/gates/gate-override-scope.js +98 -0
- package/dist/harness/gates/gate-override-scope.js.map +1 -0
- package/dist/harness/gates/gate-override-validation.d.ts +25 -0
- package/dist/harness/gates/gate-override-validation.d.ts.map +1 -0
- package/dist/harness/gates/gate-override-validation.js +81 -0
- package/dist/harness/gates/gate-override-validation.js.map +1 -0
- package/dist/harness/gates/gate-rule-catalog.d.ts +24 -0
- package/dist/harness/gates/gate-rule-catalog.d.ts.map +1 -0
- package/dist/harness/gates/gate-rule-catalog.js +112 -0
- package/dist/harness/gates/gate-rule-catalog.js.map +1 -0
- package/dist/harness/gates/gate-terms.d.ts +33 -0
- package/dist/harness/gates/gate-terms.d.ts.map +1 -0
- package/dist/harness/gates/gate-terms.js +41 -0
- package/dist/harness/gates/gate-terms.js.map +1 -0
- package/dist/harness/gates/in-run-decision-check.d.ts +21 -0
- package/dist/harness/gates/in-run-decision-check.d.ts.map +1 -0
- package/dist/harness/gates/in-run-decision-check.js +138 -0
- package/dist/harness/gates/in-run-decision-check.js.map +1 -0
- package/dist/harness/gates/journey-gate-inputs.d.ts +37 -0
- package/dist/harness/gates/journey-gate-inputs.d.ts.map +1 -0
- package/dist/harness/gates/journey-gate-inputs.js +81 -0
- package/dist/harness/gates/journey-gate-inputs.js.map +1 -0
- package/dist/harness/gates/migrated-waiver-review.d.ts +6 -0
- package/dist/harness/gates/migrated-waiver-review.d.ts.map +1 -0
- package/dist/harness/gates/migrated-waiver-review.js +116 -0
- package/dist/harness/gates/migrated-waiver-review.js.map +1 -0
- package/dist/harness/gates/resolve-rule.d.ts +59 -0
- package/dist/harness/gates/resolve-rule.d.ts.map +1 -0
- package/dist/harness/gates/resolve-rule.js +41 -0
- package/dist/harness/gates/resolve-rule.js.map +1 -0
- package/dist/harness/gates/unit-gate-overrides.d.ts +25 -0
- package/dist/harness/gates/unit-gate-overrides.d.ts.map +1 -0
- package/dist/harness/gates/unit-gate-overrides.js +122 -0
- package/dist/harness/gates/unit-gate-overrides.js.map +1 -0
- package/dist/harness/journey.d.ts +43 -1
- package/dist/harness/journey.d.ts.map +1 -1
- package/dist/harness/journey.js +207 -33
- package/dist/harness/journey.js.map +1 -1
- package/dist/harness/manifest.d.ts +12 -0
- package/dist/harness/manifest.d.ts.map +1 -1
- package/dist/harness/manifest.js +73 -45
- package/dist/harness/manifest.js.map +1 -1
- package/dist/harness/next-step.d.ts +37 -6
- package/dist/harness/next-step.d.ts.map +1 -1
- package/dist/harness/next-step.js +34 -174
- package/dist/harness/next-step.js.map +1 -1
- package/dist/harness/parse.d.ts +25 -0
- package/dist/harness/parse.d.ts.map +1 -1
- package/dist/harness/parse.js +38 -13
- package/dist/harness/parse.js.map +1 -1
- package/dist/harness/provenance.d.ts +29 -0
- package/dist/harness/provenance.d.ts.map +1 -1
- package/dist/harness/provenance.js +109 -9
- package/dist/harness/provenance.js.map +1 -1
- package/dist/harness/script-check.d.ts.map +1 -1
- package/dist/harness/script-check.js +29 -6
- package/dist/harness/script-check.js.map +1 -1
- package/dist/harness/sensors.d.ts +14 -3
- package/dist/harness/sensors.d.ts.map +1 -1
- package/dist/harness/sensors.js +64 -44
- package/dist/harness/sensors.js.map +1 -1
- package/dist/harness/triage-signals.d.ts +20 -0
- package/dist/harness/triage-signals.d.ts.map +1 -0
- package/dist/harness/triage-signals.js +30 -0
- package/dist/harness/triage-signals.js.map +1 -0
- package/dist/harness/triage-unit.d.ts +23 -0
- package/dist/harness/triage-unit.d.ts.map +1 -0
- package/dist/harness/triage-unit.js +142 -0
- package/dist/harness/triage-unit.js.map +1 -0
- package/dist/harness/triage.d.ts +28 -0
- package/dist/harness/triage.d.ts.map +1 -0
- package/dist/harness/triage.js +99 -0
- package/dist/harness/triage.js.map +1 -0
- package/dist/harness/viewpoint-ledger.d.ts.map +1 -1
- package/dist/harness/viewpoint-ledger.js +2 -1
- package/dist/harness/viewpoint-ledger.js.map +1 -1
- package/dist/hooks/bash-write-targets.d.ts +15 -0
- package/dist/hooks/bash-write-targets.d.ts.map +1 -0
- package/dist/hooks/bash-write-targets.js +173 -0
- package/dist/hooks/bash-write-targets.js.map +1 -0
- package/dist/hooks/claude-hook-entry.d.ts +11 -0
- package/dist/hooks/claude-hook-entry.d.ts.map +1 -0
- package/dist/hooks/claude-hook-entry.js +137 -0
- package/dist/hooks/claude-hook-entry.js.map +1 -0
- package/dist/hooks/claude-transcript-turn.d.ts +11 -0
- package/dist/hooks/claude-transcript-turn.d.ts.map +1 -0
- package/dist/hooks/claude-transcript-turn.js +143 -0
- package/dist/hooks/claude-transcript-turn.js.map +1 -0
- package/dist/hooks/guard-delivery-contract-rule.d.ts +10 -0
- package/dist/hooks/guard-delivery-contract-rule.d.ts.map +1 -0
- package/dist/hooks/guard-delivery-contract-rule.js +152 -0
- package/dist/hooks/guard-delivery-contract-rule.js.map +1 -0
- package/dist/hooks/guard-protected-paths.d.ts +9 -0
- package/dist/hooks/guard-protected-paths.d.ts.map +1 -0
- package/dist/hooks/guard-protected-paths.js +107 -0
- package/dist/hooks/guard-protected-paths.js.map +1 -0
- package/dist/hooks/guard-rules.d.ts +37 -0
- package/dist/hooks/guard-rules.d.ts.map +1 -0
- package/dist/hooks/guard-rules.js +61 -0
- package/dist/hooks/guard-rules.js.map +1 -0
- package/dist/hooks/guard-tty-spoof-rule.d.ts +15 -0
- package/dist/hooks/guard-tty-spoof-rule.d.ts.map +1 -0
- package/dist/hooks/guard-tty-spoof-rule.js +21 -0
- package/dist/hooks/guard-tty-spoof-rule.js.map +1 -0
- package/dist/hooks/hand-back-core.d.ts +39 -0
- package/dist/hooks/hand-back-core.d.ts.map +1 -0
- package/dist/hooks/hand-back-core.js +122 -0
- package/dist/hooks/hand-back-core.js.map +1 -0
- package/dist/hooks/hook-cli-command.d.ts +9 -0
- package/dist/hooks/hook-cli-command.d.ts.map +1 -0
- package/dist/hooks/hook-cli-command.js +46 -0
- package/dist/hooks/hook-cli-command.js.map +1 -0
- package/dist/hooks/hook-registry.d.ts +10 -0
- package/dist/hooks/hook-registry.d.ts.map +1 -0
- package/dist/hooks/hook-registry.js +24 -0
- package/dist/hooks/hook-registry.js.map +1 -0
- package/dist/hooks/hook-result-contract.d.ts +50 -0
- package/dist/hooks/hook-result-contract.d.ts.map +1 -0
- package/dist/hooks/hook-result-contract.js +80 -0
- package/dist/hooks/hook-result-contract.js.map +1 -0
- package/dist/hooks/hook-toggles.d.ts +10 -0
- package/dist/hooks/hook-toggles.d.ts.map +1 -0
- package/dist/hooks/hook-toggles.js +107 -0
- package/dist/hooks/hook-toggles.js.map +1 -0
- package/dist/hooks/pre-tool-guard-hook.d.ts +10 -0
- package/dist/hooks/pre-tool-guard-hook.d.ts.map +1 -0
- package/dist/hooks/pre-tool-guard-hook.js +105 -0
- package/dist/hooks/pre-tool-guard-hook.js.map +1 -0
- package/dist/hooks/session-start-unit-state-hook.d.ts +13 -0
- package/dist/hooks/session-start-unit-state-hook.d.ts.map +1 -0
- package/dist/hooks/session-start-unit-state-hook.js +57 -0
- package/dist/hooks/session-start-unit-state-hook.js.map +1 -0
- package/dist/hooks/stop-next-step-hook.d.ts +16 -0
- package/dist/hooks/stop-next-step-hook.d.ts.map +1 -0
- package/dist/hooks/stop-next-step-hook.js +42 -0
- package/dist/hooks/stop-next-step-hook.js.map +1 -0
- package/dist/hooks/sungen-project-root.d.ts +19 -0
- package/dist/hooks/sungen-project-root.d.ts.map +1 -0
- package/dist/hooks/sungen-project-root.js +130 -0
- package/dist/hooks/sungen-project-root.js.map +1 -0
- package/dist/orchestrator/ai-skills/command-partial-includes.d.ts +15 -0
- package/dist/orchestrator/ai-skills/command-partial-includes.d.ts.map +1 -0
- package/dist/orchestrator/ai-skills/command-partial-includes.js +106 -0
- package/dist/orchestrator/ai-skills/command-partial-includes.js.map +1 -0
- package/dist/orchestrator/ai-skills/commands.d.ts +5 -1
- package/dist/orchestrator/ai-skills/commands.d.ts.map +1 -1
- package/dist/orchestrator/ai-skills/commands.js +16 -6
- package/dist/orchestrator/ai-skills/commands.js.map +1 -1
- package/dist/orchestrator/ai-skills/golden-skills.test.js +29 -0
- package/dist/orchestrator/ai-skills/golden-skills.test.js.map +1 -1
- package/dist/orchestrator/assets-drift.d.ts +5 -0
- package/dist/orchestrator/assets-drift.d.ts.map +1 -1
- package/dist/orchestrator/assets-drift.js +12 -3
- package/dist/orchestrator/assets-drift.js.map +1 -1
- package/dist/orchestrator/claude-hooks-install.d.ts +27 -0
- package/dist/orchestrator/claude-hooks-install.d.ts.map +1 -0
- package/dist/orchestrator/claude-hooks-install.js +203 -0
- package/dist/orchestrator/claude-hooks-install.js.map +1 -0
- package/dist/orchestrator/lockstep-version.d.ts +15 -5
- package/dist/orchestrator/lockstep-version.d.ts.map +1 -1
- package/dist/orchestrator/lockstep-version.js +30 -17
- package/dist/orchestrator/lockstep-version.js.map +1 -1
- package/dist/orchestrator/project-initializer.d.ts +6 -0
- package/dist/orchestrator/project-initializer.d.ts.map +1 -1
- package/dist/orchestrator/project-initializer.js +24 -0
- package/dist/orchestrator/project-initializer.js.map +1 -1
- package/dist/orchestrator/screen-manager.d.ts.map +1 -1
- package/dist/orchestrator/screen-manager.js +4 -2
- package/dist/orchestrator/screen-manager.js.map +1 -1
- package/dist/orchestrator/templates/ai-src/commands/add-api.md +2 -0
- package/dist/orchestrator/templates/ai-src/commands/add-flow.md +2 -0
- package/dist/orchestrator/templates/ai-src/commands/add-screen.md +2 -0
- package/dist/orchestrator/templates/ai-src/commands/create-data-test.md +1 -0
- package/dist/orchestrator/templates/ai-src/commands/create-test.md +14 -16
- package/dist/orchestrator/templates/ai-src/commands/dashboard.md +2 -0
- package/dist/orchestrator/templates/ai-src/commands/delivery.md +2 -0
- package/dist/orchestrator/templates/ai-src/commands/design.md +2 -0
- package/dist/orchestrator/templates/ai-src/commands/feedback.md +2 -0
- package/dist/orchestrator/templates/ai-src/commands/locale.md +2 -0
- package/dist/orchestrator/templates/ai-src/commands/review.md +2 -0
- package/dist/orchestrator/templates/ai-src/commands/run-test.md +14 -10
- package/dist/orchestrator/templates/ai-src/config/claude.md +20 -7
- package/dist/orchestrator/templates/ai-src/config/copilot.md +20 -7
- package/dist/orchestrator/templates/ai-src/partials/hand-back-rule.claude.md +20 -0
- package/dist/orchestrator/templates/ai-src/partials/hand-back-rule.codex.md +20 -0
- package/dist/orchestrator/templates/ai-src/partials/hand-back-rule.copilot.md +20 -0
- package/dist/orchestrator/templates/ai-src/skills/sungen-api-coverage-model/SKILL.md +1 -1
- package/dist/orchestrator/templates/ai-src/skills/sungen-capture-mobile/SKILL.md +3 -3
- package/dist/orchestrator/templates/ai-src/skills/sungen-data-factory/SKILL.md +9 -0
- package/dist/orchestrator/templates/ai-src/skills/sungen-error-mapping/SKILL.md +2 -0
- package/dist/orchestrator/templates/ai-src/skills/sungen-gherkin-syntax/SKILL.md +1 -1
- package/dist/orchestrator/templates/ai-src/skills/sungen-harness-audit/SKILL.md +2 -0
- package/dist/orchestrator/templates/claude-hooks/sungen-hook.cjs +64 -0
- package/dist/utils/safe-yaml-parse.d.ts +8 -0
- package/dist/utils/safe-yaml-parse.d.ts.map +1 -0
- package/dist/utils/safe-yaml-parse.js +51 -0
- package/dist/utils/safe-yaml-parse.js.map +1 -0
- package/package.json +3 -3
- package/src/basis/anchor-grammar.ts +83 -0
- package/src/basis/anchor-hash.ts +27 -0
- package/src/basis/bm51-tables.ts +65 -0
- package/src/basis/extract-spec-anchors.ts +95 -0
- package/src/basis/migration-sentinel.ts +175 -0
- package/src/basis/spec-frontmatter.ts +68 -0
- package/src/basis/spec-sections.ts +35 -0
- package/src/basis/test-basis-schema.ts +81 -0
- package/src/capabilities/discover.ts +15 -2
- package/src/capabilities/registry.ts +16 -0
- package/src/cli/commands/audit.ts +10 -5
- package/src/cli/commands/capability.ts +4 -2
- package/src/cli/commands/contract-derive-command.ts +61 -0
- package/src/cli/commands/contract.ts +130 -0
- package/src/cli/commands/defect.ts +49 -0
- package/src/cli/commands/delivery.ts +92 -15
- package/src/cli/commands/generate.ts +3 -1
- package/src/cli/commands/journey.ts +41 -16
- package/src/cli/commands/next.ts +64 -10
- package/src/cli/commands/triage.ts +57 -0
- package/src/cli/commands/update.ts +35 -8
- package/src/cli/index.ts +24 -30
- package/src/cli/project-sungen-invocation.ts +39 -0
- package/src/contract/approve-contract.ts +94 -0
- package/src/contract/assertion-matcher-vocabulary.ts +93 -0
- package/src/contract/build-contract-verdict.ts +108 -0
- package/src/contract/build-trace-conformance.ts +100 -0
- package/src/contract/classify-contract-change.ts +92 -0
- package/src/contract/classify-contract-unit.ts +47 -0
- package/src/contract/classify-trace-conformance.ts +116 -0
- package/src/contract/contract-git.ts +106 -0
- package/src/contract/contract-hash.ts +34 -0
- package/src/contract/contract-report-file.ts +25 -0
- package/src/contract/contract-schema.ts +137 -0
- package/src/contract/contract-units.ts +52 -0
- package/src/contract/contracts-lock-file.ts +97 -0
- package/src/contract/data-normalize.ts +66 -0
- package/src/contract/derive-free-feature.ts +120 -0
- package/src/contract/field-semantic-redaction.ts +80 -0
- package/src/contract/free-feature-blocks.ts +56 -0
- package/src/contract/lock-secret-guard.ts +95 -0
- package/src/contract/lock-vs-git-head.ts +38 -0
- package/src/contract/normalize-contract-step.ts +74 -0
- package/src/contract/normalize-feature-steps.ts +93 -0
- package/src/contract/oracle-strength.ts +80 -0
- package/src/contract/project-contract-blockers.ts +36 -0
- package/src/contract/record-contract-approval.ts +70 -0
- package/src/contract/render-free-gherkin.ts +113 -0
- package/src/contract/render-trace-sentence.ts +98 -0
- package/src/contract/render-trace-target.ts +68 -0
- package/src/contract/resolve-unit-trace-identities.ts +35 -0
- package/src/contract/trace/collect-trace-evidence.ts +109 -0
- package/src/contract/trace/identity-cache.ts +61 -0
- package/src/contract/trace/select-final-attempt.ts +70 -0
- package/src/contract/trace/snapshot-html-renderer.ts +136 -0
- package/src/contract/trace/snapshot-resolver.ts +66 -0
- package/src/contract/trace/snapshot-store.ts +151 -0
- package/src/contract/trace/target-identity.ts +104 -0
- package/src/contract/trace/test-step-join.ts +104 -0
- package/src/contract/trace/trace-binding.ts +56 -0
- package/src/contract/trace/trace-file-reader.ts +133 -0
- package/src/contract/trace/trace-fingerprint.ts +68 -0
- package/src/contract/trace/trace-identity-resolution.ts +74 -0
- package/src/contract/trace/trace-run-record.ts +80 -0
- package/src/contract/trace/trace-steps.ts +88 -0
- package/src/contract/trace/trace-zip-limits.ts +77 -0
- package/src/contract/trace/trace-zip-reader.ts +127 -0
- package/src/contract/verify-approval-decisions.ts +60 -0
- package/src/decisions/append-decision.ts +35 -0
- package/src/decisions/confirmed-decision-commands.ts +149 -0
- package/src/decisions/decision-file.ts +93 -0
- package/src/decisions/decision-identity.ts +73 -0
- package/src/decisions/decision-integrity-check.ts +61 -0
- package/src/decisions/decision-schema.ts +76 -0
- package/src/decisions/decision-source.ts +14 -0
- package/src/decisions/exclusive-file-create.ts +42 -0
- package/src/decisions/git-head-trust.ts +32 -0
- package/src/decisions/human-confirmation.ts +119 -0
- package/src/decisions/legacy-waiver-migration.ts +135 -0
- package/src/decisions/read-decisions.ts +61 -0
- package/src/decisions/viewpoint-baseline-adapter.ts +74 -0
- package/src/decisions/waiver-decisions.ts +56 -0
- package/src/exporters/csv-exporter.ts +5 -1
- package/src/exporters/feature-parser.ts +12 -0
- package/src/exporters/matrix/build.ts +62 -18
- package/src/exporters/matrix/carry-manual-results.ts +70 -7
- package/src/exporters/matrix/export.ts +17 -2
- package/src/exporters/matrix/gates.ts +62 -129
- package/src/exporters/matrix/render-csv.ts +4 -1
- package/src/exporters/matrix/render-gate-overrides-sheet.ts +50 -0
- package/src/exporters/matrix/render-xlsx.ts +6 -0
- package/src/exporters/matrix/types.ts +9 -1
- package/src/exporters/matrix/xlsx-cells.ts +1 -1
- package/src/exporters/playwright-report-parser.ts +1 -0
- package/src/exporters/scenario-merger.ts +2 -1
- package/src/exporters/types.ts +5 -0
- package/src/generators/test-generator/code-generator.ts +13 -0
- package/src/graph/evaluate-graph.ts +66 -0
- package/src/graph/locate-finding.ts +93 -0
- package/src/graph/node-decl.ts +72 -0
- package/src/graph/nodes/core-node-catalog.ts +15 -0
- package/src/graph/nodes/test-case-contract-nodes.ts +74 -0
- package/src/graph/nodes/test-case-nodes.ts +68 -0
- package/src/graph/nodes/unit-audit-nodes.ts +95 -0
- package/src/graph/nodes/unit-contract-node.ts +89 -0
- package/src/graph/nodes/unit-design-nodes.ts +89 -0
- package/src/graph/nodes/unit-execution-nodes.ts +77 -0
- package/src/graph/test-case-identity.ts +75 -0
- package/src/graph/test-case-results.ts +90 -0
- package/src/graph/test-case-satisfied.ts +55 -0
- package/src/graph/test-case-state-shape.ts +62 -0
- package/src/graph/test-case-states.ts +84 -0
- package/src/graph/unit-artifact-probes.ts +77 -0
- package/src/graph/unit-state-facts.ts +112 -0
- package/src/harness/audit.ts +46 -11
- package/src/harness/catalog/gate-rules.yaml +647 -0
- package/src/harness/counted-assertions.ts +33 -0
- package/src/harness/defect-draft.ts +115 -0
- package/src/harness/defects.ts +94 -0
- package/src/harness/gates/audit-gate-terms.ts +80 -0
- package/src/harness/gates/audit-gate-verdict.ts +78 -0
- package/src/harness/gates/audit-input-hash.ts +55 -0
- package/src/harness/gates/audit-report-verification.ts +201 -0
- package/src/harness/gates/decisions-hash.ts +42 -0
- package/src/harness/gates/delivery-checklist.ts +120 -0
- package/src/harness/gates/delivery-decision-gate.ts +139 -0
- package/src/harness/gates/delivery-decision-step.ts +89 -0
- package/src/harness/gates/gate-override-report.ts +114 -0
- package/src/harness/gates/gate-override-scope.ts +66 -0
- package/src/harness/gates/gate-override-validation.ts +75 -0
- package/src/harness/gates/gate-rule-catalog.ts +82 -0
- package/src/harness/gates/gate-terms.ts +59 -0
- package/src/harness/gates/in-run-decision-check.ts +99 -0
- package/src/harness/gates/journey-gate-inputs.ts +89 -0
- package/src/harness/gates/migrated-waiver-review.ts +68 -0
- package/src/harness/gates/resolve-rule.ts +94 -0
- package/src/harness/gates/unit-gate-overrides.ts +99 -0
- package/src/harness/journey.ts +215 -38
- package/src/harness/manifest.ts +69 -45
- package/src/harness/next-step.ts +60 -170
- package/src/harness/parse.ts +40 -13
- package/src/harness/provenance.ts +99 -11
- package/src/harness/script-check.ts +27 -6
- package/src/harness/sensors.ts +73 -47
- package/src/harness/triage-signals.ts +46 -0
- package/src/harness/triage-unit.ts +113 -0
- package/src/harness/triage.ts +127 -0
- package/src/harness/viewpoint-ledger.ts +2 -2
- package/src/hooks/bash-write-targets.ts +109 -0
- package/src/hooks/claude-hook-entry.ts +85 -0
- package/src/hooks/claude-transcript-turn.ts +96 -0
- package/src/hooks/guard-delivery-contract-rule.ts +110 -0
- package/src/hooks/guard-protected-paths.ts +71 -0
- package/src/hooks/guard-rules.ts +98 -0
- package/src/hooks/guard-tty-spoof-rule.ts +31 -0
- package/src/hooks/hand-back-core.ts +112 -0
- package/src/hooks/hook-cli-command.ts +17 -0
- package/src/hooks/hook-registry.ts +24 -0
- package/src/hooks/hook-result-contract.ts +114 -0
- package/src/hooks/hook-toggles.ts +66 -0
- package/src/hooks/pre-tool-guard-hook.ts +67 -0
- package/src/hooks/session-start-unit-state-hook.ts +56 -0
- package/src/hooks/stop-next-step-hook.ts +37 -0
- package/src/hooks/sungen-project-root.ts +80 -0
- package/src/orchestrator/ai-skills/command-partial-includes.ts +72 -0
- package/src/orchestrator/ai-skills/commands.ts +22 -8
- package/src/orchestrator/ai-skills/golden-skills.test.ts +23 -0
- package/src/orchestrator/assets-drift.ts +12 -5
- package/src/orchestrator/claude-hooks-install.ts +168 -0
- package/src/orchestrator/lockstep-version.ts +28 -15
- package/src/orchestrator/project-initializer.ts +22 -0
- package/src/orchestrator/screen-manager.ts +3 -1
- package/src/orchestrator/templates/ai-src/commands/add-api.md +2 -0
- package/src/orchestrator/templates/ai-src/commands/add-flow.md +2 -0
- package/src/orchestrator/templates/ai-src/commands/add-screen.md +2 -0
- package/src/orchestrator/templates/ai-src/commands/create-data-test.md +1 -0
- package/src/orchestrator/templates/ai-src/commands/create-test.md +14 -16
- package/src/orchestrator/templates/ai-src/commands/dashboard.md +2 -0
- package/src/orchestrator/templates/ai-src/commands/delivery.md +2 -0
- package/src/orchestrator/templates/ai-src/commands/design.md +2 -0
- package/src/orchestrator/templates/ai-src/commands/feedback.md +2 -0
- package/src/orchestrator/templates/ai-src/commands/locale.md +2 -0
- package/src/orchestrator/templates/ai-src/commands/review.md +2 -0
- package/src/orchestrator/templates/ai-src/commands/run-test.md +14 -10
- package/src/orchestrator/templates/ai-src/config/claude.md +20 -7
- package/src/orchestrator/templates/ai-src/config/copilot.md +20 -7
- package/src/orchestrator/templates/ai-src/partials/hand-back-rule.claude.md +20 -0
- package/src/orchestrator/templates/ai-src/partials/hand-back-rule.codex.md +20 -0
- package/src/orchestrator/templates/ai-src/partials/hand-back-rule.copilot.md +20 -0
- package/src/orchestrator/templates/ai-src/skills/sungen-api-coverage-model/SKILL.md +1 -1
- package/src/orchestrator/templates/ai-src/skills/sungen-capture-mobile/SKILL.md +3 -3
- package/src/orchestrator/templates/ai-src/skills/sungen-data-factory/SKILL.md +9 -0
- package/src/orchestrator/templates/ai-src/skills/sungen-error-mapping/SKILL.md +2 -0
- package/src/orchestrator/templates/ai-src/skills/sungen-gherkin-syntax/SKILL.md +1 -1
- package/src/orchestrator/templates/ai-src/skills/sungen-harness-audit/SKILL.md +2 -0
- package/src/orchestrator/templates/claude-hooks/sungen-hook.cjs +64 -0
- package/src/utils/safe-yaml-parse.ts +44 -0
|
@@ -0,0 +1,647 @@
|
|
|
1
|
+
# Gate-rule catalog (P0 phases 02 + 04) — read by `resolveRule` (src/harness/gates/resolve-rule.ts).
|
|
2
|
+
# Spec: docs/spec/sungen_orchestration_engine_spec.md OES-11 · docs/spec/sungen_durable_orchestration_spec.md DOS-13/14.
|
|
3
|
+
#
|
|
4
|
+
# Code computes each gate's CONDITION; the severity below decides what a met condition costs. With no
|
|
5
|
+
# gate-override decision in force the result equals the behavior before the catalog existed:
|
|
6
|
+
# error blocks (audit gate / render / delivery) review blocks the official render; --preview allowed
|
|
7
|
+
# warning prints and renders info prints only (reachable through an override)
|
|
8
|
+
# Sensors map error→fail, warning→warn. A claim/depth `error` blocks only when its ratio is under the focus
|
|
9
|
+
# threshold (DEPTH_THRESHOLDS); `smoke` focus downgrades the verdict to warn.
|
|
10
|
+
# Two independent axes (OES-11): block-vs-advisory follows `severity`; overridable-vs-not follows `kind`.
|
|
11
|
+
# kind: hard never overridable (offAllowed is always false) kind: soft overridable with a reason
|
|
12
|
+
# offAllowed the closed set of soft rules a gate-override may switch off entirely — ratified in phase 04:
|
|
13
|
+
# matrix.gate-w.{dimensions-missing,dimensions-long,wording-smell}, matrix.gate-c.too-many-variants,
|
|
14
|
+
# claim.negative-absence — all advisory (warning) lints of reviewability/wording or a known-noisy
|
|
15
|
+
# heuristic; switching one off can hide noise, never a blocking defect.
|
|
16
|
+
# since: "<=3.2.34" = present in the release that was inventoried (exact origin not recorded); "p0" = new in P0.
|
|
17
|
+
#
|
|
18
|
+
# Every gate site in the gate files names its rule id literally (exporters/matrix/gates.ts, exporters/matrix/build.ts
|
|
19
|
+
# for gate R, harness/sensors.ts, harness/audit.ts, harness/script-check.ts, harness/journey.ts) and carries no severity of
|
|
20
|
+
# its own; tests/gates/gate-catalog-shape.run.ts proves both, and that each of the 65 sites the phase-02 stub
|
|
21
|
+
# inventoried still maps to the same rule (the stub's `points[]` now live in tests/gates/fixtures/
|
|
22
|
+
# legacy-gate-points.json). Narrative audit findings carry no severity decision and are not catalogued.
|
|
23
|
+
# There is no `oracle.source-weakening` rule: it does not exist in src (red-team #6).
|
|
24
|
+
|
|
25
|
+
rules:
|
|
26
|
+
# ───────────────────────── delivery coverage matrix (exporters/matrix/gates.ts) ─────────────────────────
|
|
27
|
+
- id: matrix.gate-a.background-when-then
|
|
28
|
+
stage: deliver
|
|
29
|
+
severity: error
|
|
30
|
+
kind: hard
|
|
31
|
+
rationale: "A Background holding When/Then steps hides the action and the oracle from every scenario that inherits it, so the delivered Expected column cannot be derived (Gate A)."
|
|
32
|
+
fix: "Move the action and oracle steps into the scenarios; keep only Given setup in Background."
|
|
33
|
+
since: "<=3.2.34"
|
|
34
|
+
offAllowed: false
|
|
35
|
+
- id: matrix.gate-a.no-vp-id
|
|
36
|
+
stage: deliver
|
|
37
|
+
severity: error
|
|
38
|
+
kind: hard
|
|
39
|
+
rationale: "Matrix variants are addressed by VP-id; a scenario without one cannot be grouped, dispositioned or traced to a viewpoint (Gate A)."
|
|
40
|
+
fix: "Prefix the scenario name with its viewpoint id, VP-<CATEGORY>-NNN."
|
|
41
|
+
since: "<=3.2.34"
|
|
42
|
+
offAllowed: false
|
|
43
|
+
- id: matrix.gate-a.no-oracle
|
|
44
|
+
stage: deliver
|
|
45
|
+
severity: error
|
|
46
|
+
kind: hard
|
|
47
|
+
rationale: "A variant with no Then step (or a manual one with no Observable/Oracle lines) has no observable oracle, so it cannot be delivered as a test case (Gate A)."
|
|
48
|
+
fix: "Add a Then step, or numbered 'N. Observable: …' lines under the manual '# Tester verifies:' block."
|
|
49
|
+
since: "<=3.2.34"
|
|
50
|
+
offAllowed: false
|
|
51
|
+
- id: matrix.gate-a.unlabeled-manual-oracle
|
|
52
|
+
stage: deliver
|
|
53
|
+
severity: warning
|
|
54
|
+
kind: soft
|
|
55
|
+
rationale: "A manual oracle found only in an unlabeled comment is exported verbatim into Expected and reads as generated text."
|
|
56
|
+
fix: "Write the '# Tester verifies:' block as numbered 'N. Observable: …' lines."
|
|
57
|
+
since: "<=3.2.34"
|
|
58
|
+
offAllowed: false
|
|
59
|
+
- id: matrix.gate-a.duplicate-vp-id
|
|
60
|
+
stage: deliver
|
|
61
|
+
severity: error
|
|
62
|
+
kind: hard
|
|
63
|
+
rationale: "Two scenarios under one VP-id ship as two rows with one testcase id and let a run result attach to the wrong scenario (#694); id reuse is never negotiable."
|
|
64
|
+
fix: "Give each scenario its own sequence number within its category, then regenerate."
|
|
65
|
+
since: "<=3.2.34"
|
|
66
|
+
offAllowed: false
|
|
67
|
+
- id: matrix.gate-b.ref-matches-nothing
|
|
68
|
+
stage: deliver
|
|
69
|
+
severity: error
|
|
70
|
+
kind: hard
|
|
71
|
+
rationale: "A map group that references a variant the .feature no longer has makes the delivered grouping describe tests that do not exist (Gate B)."
|
|
72
|
+
fix: "Update or remove the stale reference in the delivery map."
|
|
73
|
+
since: "<=3.2.34"
|
|
74
|
+
offAllowed: false
|
|
75
|
+
- id: matrix.gate-b.double-mapped
|
|
76
|
+
stage: deliver
|
|
77
|
+
severity: error
|
|
78
|
+
kind: hard
|
|
79
|
+
rationale: "A variant in two groups is counted twice in coverage; exactly one owner is required (Gate B)."
|
|
80
|
+
fix: "Keep the variant in one group only."
|
|
81
|
+
since: "<=3.2.34"
|
|
82
|
+
offAllowed: false
|
|
83
|
+
- id: matrix.gate-b.unmapped
|
|
84
|
+
stage: deliver
|
|
85
|
+
severity: error
|
|
86
|
+
kind: hard
|
|
87
|
+
rationale: "Delivery requires 100% source disposition: every variant is in a group or carries an explicit disposition, otherwise coverage silently drops it (Gate B)."
|
|
88
|
+
fix: "Add the variant to a group or give it a disposition in the delivery map."
|
|
89
|
+
since: "<=3.2.34"
|
|
90
|
+
offAllowed: false
|
|
91
|
+
- id: matrix.gate-b.grouped-and-disposed
|
|
92
|
+
stage: deliver
|
|
93
|
+
severity: error
|
|
94
|
+
kind: hard
|
|
95
|
+
rationale: "A variant that is both grouped and disposed has two contradictory fates in the deliverable (Gate B)."
|
|
96
|
+
fix: "Pick one: drop the disposition or the group membership."
|
|
97
|
+
since: "<=3.2.34"
|
|
98
|
+
offAllowed: false
|
|
99
|
+
- id: matrix.gate-b.stale-disposition
|
|
100
|
+
stage: deliver
|
|
101
|
+
severity: warning
|
|
102
|
+
kind: soft
|
|
103
|
+
rationale: "A disposition for a VP-id with no scenario is leftover noise that can hide real mapping drift."
|
|
104
|
+
fix: "Delete the stale disposition entry."
|
|
105
|
+
since: "<=3.2.34"
|
|
106
|
+
offAllowed: false
|
|
107
|
+
- id: matrix.gate-c.mixed-layers
|
|
108
|
+
stage: deliver
|
|
109
|
+
severity: error
|
|
110
|
+
kind: hard
|
|
111
|
+
rationale: "Grouping variants from different test layers makes one deliverable row claim two kinds of evidence (Gate C hard signature)."
|
|
112
|
+
fix: "Split the group by test layer."
|
|
113
|
+
since: "<=3.2.34"
|
|
114
|
+
offAllowed: false
|
|
115
|
+
- id: matrix.gate-c.precondition-profiles
|
|
116
|
+
stage: deliver
|
|
117
|
+
severity: review
|
|
118
|
+
kind: soft
|
|
119
|
+
rationale: "Equivalence of variants with different preconditions was inferred, not declared; QA must confirm it (Gate C heuristic)."
|
|
120
|
+
fix: "Confirm the grouping is safe (sungen delivery --approve) or split the group."
|
|
121
|
+
since: "<=3.2.34"
|
|
122
|
+
offAllowed: false
|
|
123
|
+
- id: matrix.gate-c.oracle-shapes
|
|
124
|
+
stage: deliver
|
|
125
|
+
severity: review
|
|
126
|
+
kind: soft
|
|
127
|
+
rationale: "Variants asserting different oracle shapes may not be one oracle family; the grouping was inferred (Gate C heuristic)."
|
|
128
|
+
fix: "Confirm they are one oracle family (approve) or split the group."
|
|
129
|
+
since: "<=3.2.34"
|
|
130
|
+
offAllowed: false
|
|
131
|
+
- id: matrix.gate-c.sequence-sensitive
|
|
132
|
+
stage: deliver
|
|
133
|
+
severity: review
|
|
134
|
+
kind: soft
|
|
135
|
+
rationale: "An ordered, sequence-sensitive scenario grouped with others can pass in a different order than the customer reads; it stays solo unless QA confirms."
|
|
136
|
+
fix: "Keep it as a solo item, or confirm the group (approve)."
|
|
137
|
+
since: "<=3.2.34"
|
|
138
|
+
offAllowed: false
|
|
139
|
+
- id: matrix.gate-c.too-many-variants
|
|
140
|
+
stage: deliver
|
|
141
|
+
severity: warning
|
|
142
|
+
kind: soft
|
|
143
|
+
rationale: "A group above MAX_VARIANTS_PER_ITEM is hard to review; the warning is a reviewability lint, not a correctness check."
|
|
144
|
+
fix: "Split the group into smaller items."
|
|
145
|
+
since: "<=3.2.34"
|
|
146
|
+
offAllowed: true
|
|
147
|
+
- id: matrix.gate-d.no-precondition
|
|
148
|
+
stage: deliver
|
|
149
|
+
severity: error
|
|
150
|
+
kind: hard
|
|
151
|
+
rationale: "A tester cannot establish the start state without a Background, auth tag or Given (api-first variants are exempt), so the case is not executable (Gate D)."
|
|
152
|
+
fix: "Add a Background, an auth tag or a Given step."
|
|
153
|
+
since: "<=3.2.34"
|
|
154
|
+
offAllowed: false
|
|
155
|
+
- id: matrix.gate-d.no-trigger
|
|
156
|
+
stage: deliver
|
|
157
|
+
severity: error
|
|
158
|
+
kind: hard
|
|
159
|
+
rationale: "A variant with no When step (or Setup/Action comment for manual) has no action a tester can perform (Gate D)."
|
|
160
|
+
fix: "Add the When step, or Setup/Action comment lines for a manual case."
|
|
161
|
+
since: "<=3.2.34"
|
|
162
|
+
offAllowed: false
|
|
163
|
+
- id: matrix.gate-d.unresolved-var
|
|
164
|
+
stage: deliver
|
|
165
|
+
severity: error
|
|
166
|
+
kind: hard
|
|
167
|
+
rationale: "A {{var}} that resolves nowhere makes the variant not reproducible for a tester (Gate D)."
|
|
168
|
+
fix: "Add the key to test-data, or bind it at run time with remember … as."
|
|
169
|
+
since: "<=3.2.34"
|
|
170
|
+
offAllowed: false
|
|
171
|
+
- id: matrix.gate-d.template-token-remains
|
|
172
|
+
stage: deliver
|
|
173
|
+
severity: error
|
|
174
|
+
kind: hard
|
|
175
|
+
rationale: "A template token surviving into a rendered cell makes the export non-deterministic for a tester (Gate D, review B-04)."
|
|
176
|
+
fix: "Resolve the token in test-data or reword the step so no {{…}} reaches the output."
|
|
177
|
+
since: "<=3.2.34"
|
|
178
|
+
offAllowed: false
|
|
179
|
+
- id: matrix.gate-e.map-unstamped
|
|
180
|
+
stage: deliver
|
|
181
|
+
severity: review
|
|
182
|
+
kind: soft
|
|
183
|
+
rationale: "Approved groups with no stamped map fingerprint cannot prove the reviewed wording is the delivered wording (Gate E)."
|
|
184
|
+
fix: "Run sungen delivery --approve to record the reviewed wording."
|
|
185
|
+
since: "<=3.2.34"
|
|
186
|
+
offAllowed: false
|
|
187
|
+
- id: matrix.gate-e.map-drift
|
|
188
|
+
stage: deliver
|
|
189
|
+
severity: review
|
|
190
|
+
kind: soft
|
|
191
|
+
rationale: "Map wording or grouping edited after approval must be re-reviewed, not silently published (Gate E, review GAP-09)."
|
|
192
|
+
fix: "Re-review the map, then sungen delivery --approve."
|
|
193
|
+
since: "<=3.2.34"
|
|
194
|
+
offAllowed: false
|
|
195
|
+
- id: matrix.gate-e.variant-unstamped
|
|
196
|
+
stage: deliver
|
|
197
|
+
severity: review
|
|
198
|
+
kind: soft
|
|
199
|
+
rationale: "An approved group whose variant has no stamped fingerprint cannot detect later drift (Gate E)."
|
|
200
|
+
fix: "Run sungen delivery --approve after review."
|
|
201
|
+
since: "<=3.2.34"
|
|
202
|
+
offAllowed: false
|
|
203
|
+
- id: matrix.gate-e.variant-drift
|
|
204
|
+
stage: deliver
|
|
205
|
+
severity: review
|
|
206
|
+
kind: soft
|
|
207
|
+
rationale: "A variant changed since its group was approved; the approval no longer covers what will be delivered (Gate E)."
|
|
208
|
+
fix: "Re-review the grouping, then approve again."
|
|
209
|
+
since: "<=3.2.34"
|
|
210
|
+
offAllowed: false
|
|
211
|
+
- id: matrix.gate-g.groups-proposed
|
|
212
|
+
stage: deliver
|
|
213
|
+
severity: review
|
|
214
|
+
kind: soft
|
|
215
|
+
rationale: "The official render needs every group approved by QA; --preview renders the rest with a DRAFT watermark (Gate G)."
|
|
216
|
+
fix: "Approve the proposed groups, or render with --preview."
|
|
217
|
+
since: "<=3.2.34"
|
|
218
|
+
offAllowed: false
|
|
219
|
+
- id: matrix.gate-k.category-mismatch
|
|
220
|
+
stage: deliver
|
|
221
|
+
severity: warning
|
|
222
|
+
kind: soft
|
|
223
|
+
rationale: "A VP-SEC or VP-NFR scenario filed under another category empties the Coverage sheet's security/nfr column and reports a gap the unit does not have (Gate K)."
|
|
224
|
+
fix: "Set the group's category to the one the source viewpoint class decides."
|
|
225
|
+
since: "<=3.2.34"
|
|
226
|
+
offAllowed: false
|
|
227
|
+
- id: matrix.gate-w.dimensions-missing
|
|
228
|
+
stage: deliver
|
|
229
|
+
severity: warning
|
|
230
|
+
kind: soft
|
|
231
|
+
rationale: "A parent row with more than three variants and no dimensions digest forces the reviewer to expand it to learn what it covers; a readability lint."
|
|
232
|
+
fix: "Add a short dimensions digest, for example 'required x3 · format x9'."
|
|
233
|
+
since: "<=3.2.34"
|
|
234
|
+
offAllowed: true
|
|
235
|
+
- id: matrix.gate-w.dimensions-long
|
|
236
|
+
stage: deliver
|
|
237
|
+
severity: warning
|
|
238
|
+
kind: soft
|
|
239
|
+
rationale: "A dimensions digest over 120 characters stops being a digest; a readability lint."
|
|
240
|
+
fix: "Shorten the dimensions digest to 120 characters or fewer."
|
|
241
|
+
since: "<=3.2.34"
|
|
242
|
+
offAllowed: true
|
|
243
|
+
- id: matrix.gate-w.wording-smell
|
|
244
|
+
stage: deliver
|
|
245
|
+
severity: warning
|
|
246
|
+
kind: soft
|
|
247
|
+
rationale: "Intent/oracle/dimensions text containing {{tokens}}, generator labels, DSL phrasing or [selector] refs reads machine-generated to the customer; a wording lint."
|
|
248
|
+
fix: "Rewrite the field in plain product language using the visible UI label."
|
|
249
|
+
since: "<=3.2.34"
|
|
250
|
+
offAllowed: true
|
|
251
|
+
- id: matrix.gate-r.requirement-gap
|
|
252
|
+
stage: deliver
|
|
253
|
+
severity: warning
|
|
254
|
+
kind: soft
|
|
255
|
+
rationale: "A requirement id from requirements/spec.md with no tracing variant and no recorded status is a coverage gap the deliverable would hide (Gate R, exporters/matrix/build.ts)."
|
|
256
|
+
fix: "Tag the scenario that proves it with @spec:<id>, or record a status in the delivery map's requirements: section."
|
|
257
|
+
since: "<=3.2.34"
|
|
258
|
+
offAllowed: false
|
|
259
|
+
- id: matrix.gate-r.covered-unbacked
|
|
260
|
+
stage: deliver
|
|
261
|
+
severity: warning
|
|
262
|
+
kind: soft
|
|
263
|
+
rationale: "A requirement declared covered with no variant tracing to it is prose, not traceability — nothing notices when the proving scenario changes (Gate R)."
|
|
264
|
+
fix: "Add @spec:<id> to the scenario that proves it, or use covered_elsewhere / partially_covered with a named reference."
|
|
265
|
+
since: "<=3.2.34"
|
|
266
|
+
offAllowed: false
|
|
267
|
+
|
|
268
|
+
# ───────────────────────── claim-proof sensor (harness/sensors.ts CLAIM_RULES) ─────────────────────────
|
|
269
|
+
# A scenario TITLE makes a claim; its STEPS must prove it. `error` rows block only when the unit's claim
|
|
270
|
+
# ratio is below the focus threshold; `warning` rows never block.
|
|
271
|
+
- id: claim.unchanged-preserved
|
|
272
|
+
stage: create
|
|
273
|
+
severity: warning
|
|
274
|
+
kind: soft
|
|
275
|
+
rationale: "'Unchanged/preserved' is an exactness claim; a `contains` substring match cannot tell unchanged from prefixed (#599)."
|
|
276
|
+
fix: "Swap `contains {{v}}` for `with {{v}}` on the continuity rows, or reword the title."
|
|
277
|
+
since: "<=3.2.34"
|
|
278
|
+
offAllowed: false
|
|
279
|
+
- id: claim.ordering-sort
|
|
280
|
+
stage: create
|
|
281
|
+
severity: error
|
|
282
|
+
kind: soft
|
|
283
|
+
rationale: "An order claim is invisible to a presence check; the steps must assert rows in sequence or the sort state (#810)."
|
|
284
|
+
fix: "Assert the expected row order with `table match data:`, `is sorted ascending|descending`, or positional row checks."
|
|
285
|
+
since: "<=3.2.34"
|
|
286
|
+
offAllowed: false
|
|
287
|
+
- id: claim.limit-cap
|
|
288
|
+
stage: create
|
|
289
|
+
severity: error
|
|
290
|
+
kind: soft
|
|
291
|
+
rationale: "A limit/cap claim is a count claim; presence of the list does not prove the boundary."
|
|
292
|
+
fix: "Assert the count at the cap, or the rejection when one more is attempted."
|
|
293
|
+
since: "<=3.2.34"
|
|
294
|
+
offAllowed: false
|
|
295
|
+
- id: claim.all-every-each
|
|
296
|
+
stage: create
|
|
297
|
+
severity: error
|
|
298
|
+
kind: soft
|
|
299
|
+
rationale: "An all/every/each claim needs an assertion across all matched elements, not one."
|
|
300
|
+
fix: "Use `User see all …` or the all-card DSL for per-card structure."
|
|
301
|
+
since: "<=3.2.34"
|
|
302
|
+
offAllowed: false
|
|
303
|
+
- id: claim.only-belong-to
|
|
304
|
+
stage: create
|
|
305
|
+
severity: warning
|
|
306
|
+
kind: soft
|
|
307
|
+
rationale: "An only/belongs-to claim needs an all-match; 'no item outside the facet' is often UI-limited."
|
|
308
|
+
fix: "Use `User see all … contains …`, verify through API/DB, or mark @manual with a reason."
|
|
309
|
+
since: "<=3.2.34"
|
|
310
|
+
offAllowed: false
|
|
311
|
+
- id: claim.single-exactly-one
|
|
312
|
+
stage: create
|
|
313
|
+
severity: error
|
|
314
|
+
kind: soft
|
|
315
|
+
rationale: "A 'single/exactly one' claim is a quantity claim; presence does not prove the count."
|
|
316
|
+
fix: "Assert the count (count is 1) instead of presence."
|
|
317
|
+
since: "<=3.2.34"
|
|
318
|
+
offAllowed: false
|
|
319
|
+
- id: claim.correct-matching-identity
|
|
320
|
+
stage: create
|
|
321
|
+
severity: error
|
|
322
|
+
kind: soft
|
|
323
|
+
rationale: "A correct/matching/same claim needs capture and compare; asserting only the target proves nothing about the source."
|
|
324
|
+
fix: "`User remember … as {{v}}` on the source, then assert {{v}} on the target."
|
|
325
|
+
since: "<=3.2.34"
|
|
326
|
+
offAllowed: false
|
|
327
|
+
- id: claim.changes-toggles
|
|
328
|
+
stage: create
|
|
329
|
+
severity: warning
|
|
330
|
+
kind: soft
|
|
331
|
+
rationale: "A changes/toggles claim needs a state delta, otherwise before and after cannot be told apart."
|
|
332
|
+
fix: "Capture the before-state and assert the after-state differs, or assert the visible-to-hidden transition."
|
|
333
|
+
since: "<=3.2.34"
|
|
334
|
+
offAllowed: false
|
|
335
|
+
- id: claim.no-side-effect
|
|
336
|
+
stage: create
|
|
337
|
+
severity: error
|
|
338
|
+
kind: soft
|
|
339
|
+
rationale: "The absence of a state-changing action (no duplicate, no re-submit) is not observable from a positive page assertion; it needs a count or contrast proof."
|
|
340
|
+
fix: "Prove the record/request count is unchanged, or mark @manual with a setup-action-assert-no-duplicate oracle."
|
|
341
|
+
since: "<=3.2.34"
|
|
342
|
+
offAllowed: false
|
|
343
|
+
- id: claim.hidden-rejected
|
|
344
|
+
stage: create
|
|
345
|
+
severity: error
|
|
346
|
+
kind: soft
|
|
347
|
+
rationale: "A hidden/closed/rejected claim needs the absence asserted, not an unrelated visible element."
|
|
348
|
+
fix: "Assert the `… is hidden` state the title claims."
|
|
349
|
+
since: "<=3.2.34"
|
|
350
|
+
offAllowed: false
|
|
351
|
+
- id: claim.cleared-emptied
|
|
352
|
+
stage: create
|
|
353
|
+
severity: error
|
|
354
|
+
kind: soft
|
|
355
|
+
rationale: "A cleared/emptied claim needs the value shown to be gone, not just that the action ran."
|
|
356
|
+
fix: "Return to the screen and assert the field is empty."
|
|
357
|
+
since: "<=3.2.34"
|
|
358
|
+
offAllowed: false
|
|
359
|
+
- id: claim.restored-preserved
|
|
360
|
+
stage: create
|
|
361
|
+
severity: warning
|
|
362
|
+
kind: soft
|
|
363
|
+
rationale: "A restored/persists claim needs the value re-asserted after the transition."
|
|
364
|
+
fix: "Assert the field still holds the typed value after the reload or return."
|
|
365
|
+
since: "<=3.2.34"
|
|
366
|
+
offAllowed: false
|
|
367
|
+
- id: claim.independent-separate
|
|
368
|
+
stage: create
|
|
369
|
+
severity: warning
|
|
370
|
+
kind: soft
|
|
371
|
+
rationale: "Independence across tabs or contexts is rarely expressible in the DSL and needs a multi-context proof."
|
|
372
|
+
fix: "Prove it with tab A versus tab B, or mark @manual with a clear setup, action and oracle."
|
|
373
|
+
since: "<=3.2.34"
|
|
374
|
+
offAllowed: false
|
|
375
|
+
- id: claim.sanitized-inert
|
|
376
|
+
stage: create
|
|
377
|
+
severity: warning
|
|
378
|
+
kind: soft
|
|
379
|
+
rationale: "A sanitized/inert claim needs the payload shown as literal text and no execution."
|
|
380
|
+
fix: "Assert the field value equals the payload and that nothing was triggered."
|
|
381
|
+
since: "<=3.2.34"
|
|
382
|
+
offAllowed: false
|
|
383
|
+
- id: claim.announces-aria
|
|
384
|
+
stage: create
|
|
385
|
+
severity: warning
|
|
386
|
+
kind: soft
|
|
387
|
+
rationale: "An announces/aria claim is usually not DSL-expressible; it needs an aria assertion or a screen-reader oracle."
|
|
388
|
+
fix: "Assert aria attributes if possible, else @manual with an NVDA/VoiceOver oracle."
|
|
389
|
+
since: "<=3.2.34"
|
|
390
|
+
offAllowed: false
|
|
391
|
+
- id: claim.negative-absence
|
|
392
|
+
stage: create
|
|
393
|
+
severity: warning
|
|
394
|
+
kind: soft
|
|
395
|
+
rationale: "A catch-all heuristic for negative titles; a positive proxy is sometimes a valid negative proof, so it stays advisory and may be switched off."
|
|
396
|
+
fix: "Assert the contrast (hidden, empty, error shown, count unchanged) or mark @manual."
|
|
397
|
+
since: "<=3.2.34"
|
|
398
|
+
offAllowed: true
|
|
399
|
+
- id: claim.partial-proof
|
|
400
|
+
stage: create
|
|
401
|
+
severity: warning
|
|
402
|
+
kind: soft
|
|
403
|
+
rationale: "The right proof shape exists but only on a singular element under an each/every claim; a partial proof."
|
|
404
|
+
fix: "Wrap the actions with the all-card DSL `User see all [Card] contain [Action]`."
|
|
405
|
+
since: "<=3.2.34"
|
|
406
|
+
offAllowed: false
|
|
407
|
+
|
|
408
|
+
# ───────────────────────── audit gate (harness/audit.ts gateStatus) ─────────────────────────
|
|
409
|
+
- id: audit.viewpoint-coverage
|
|
410
|
+
stage: create
|
|
411
|
+
severity: error
|
|
412
|
+
kind: soft
|
|
413
|
+
rationale: "A page-type viewpoint theme with no scenario (missing) or only visibility (shallow) fails the design gate."
|
|
414
|
+
fix: "Add the missing scenarios, or deepen the shallow ones with a data assertion."
|
|
415
|
+
since: "<=3.2.34"
|
|
416
|
+
offAllowed: false
|
|
417
|
+
- id: audit.assertion-depth
|
|
418
|
+
stage: create
|
|
419
|
+
severity: error
|
|
420
|
+
kind: soft
|
|
421
|
+
rationale: "Data-correctness scenarios must assert data, not visibility; under the focus threshold the gate fails (warn only for smoke)."
|
|
422
|
+
fix: "Add a real data assertion to the shallow business-critical scenarios."
|
|
423
|
+
since: "<=3.2.34"
|
|
424
|
+
offAllowed: false
|
|
425
|
+
- id: audit.claim-proof
|
|
426
|
+
stage: create
|
|
427
|
+
severity: error
|
|
428
|
+
kind: soft
|
|
429
|
+
rationale: "Under the focus threshold, with at least one fail-level unproven claim, titles that claim more than their steps prove fail the gate (CLAIM-UNPROVEN; otherwise CLAIM-WEAK warns)."
|
|
430
|
+
fix: "Make the steps prove what the title claims, or reword the title."
|
|
431
|
+
since: "<=3.2.34"
|
|
432
|
+
offAllowed: false
|
|
433
|
+
- id: audit.spec-coverage
|
|
434
|
+
stage: create
|
|
435
|
+
severity: error
|
|
436
|
+
kind: soft
|
|
437
|
+
rationale: "Spec clauses and must-have requirements with no scenario fail the gate (verdict computed in spec-coverage.ts)."
|
|
438
|
+
fix: "Add scenarios for the uncovered requirements, or confirm they are out of scope."
|
|
439
|
+
since: "<=3.2.34"
|
|
440
|
+
offAllowed: false
|
|
441
|
+
- id: audit.taxonomy-mismatch
|
|
442
|
+
stage: create
|
|
443
|
+
severity: error
|
|
444
|
+
kind: soft
|
|
445
|
+
rationale: "When scenarios use IDs the project's test-viewpoint.md does not declare, coverage and traceability measure the wrong thing."
|
|
446
|
+
fix: "Use the viewpoint file's IDs in scenario names, or update the viewpoint file."
|
|
447
|
+
since: "<=3.2.34"
|
|
448
|
+
offAllowed: false
|
|
449
|
+
- id: audit.gate-sensor-error
|
|
450
|
+
stage: create
|
|
451
|
+
severity: error
|
|
452
|
+
kind: hard
|
|
453
|
+
rationale: "A capability-registered gate sensor (api, db, …) reporting an error-level finding fails the shared gate. Hard since the phase-04 review: the finding is the driver's own verdict, which a project-level override cannot second-guess."
|
|
454
|
+
fix: "Fix the finding the sensor names; its message carries its own code and remedy."
|
|
455
|
+
since: "<=3.2.34"
|
|
456
|
+
offAllowed: false
|
|
457
|
+
- id: audit.scenario-id-reuse
|
|
458
|
+
stage: create
|
|
459
|
+
severity: error
|
|
460
|
+
kind: hard
|
|
461
|
+
rationale: "Two different scenarios under one VP id reach the customer as two rows with one testcase id and let a run result attach to the wrong scenario (#694); id reuse is never negotiable."
|
|
462
|
+
fix: "Give each scenario its own sequence number within its category, then regenerate."
|
|
463
|
+
since: "<=3.2.34"
|
|
464
|
+
offAllowed: false
|
|
465
|
+
|
|
466
|
+
# ───────────────────────── faithfulness (harness/script-check.ts status) ─────────────────────────
|
|
467
|
+
- id: script.no-spec
|
|
468
|
+
stage: generate
|
|
469
|
+
severity: error
|
|
470
|
+
kind: hard
|
|
471
|
+
rationale: "With no committed generated spec nothing shows the Gherkin was compiled, so no later gate can be trusted (#387)."
|
|
472
|
+
fix: "Run sungen generate (or /sungen:run-test) first."
|
|
473
|
+
since: "<=3.2.34"
|
|
474
|
+
offAllowed: false
|
|
475
|
+
- id: script.count-mismatch
|
|
476
|
+
stage: generate
|
|
477
|
+
severity: error
|
|
478
|
+
kind: hard
|
|
479
|
+
rationale: "The automated scenario count differs from the test() blocks, so the suite no longer maps 1:1 to the Gherkin (#387)."
|
|
480
|
+
fix: "Regenerate the spec; never hand-edit generated code."
|
|
481
|
+
since: "<=3.2.34"
|
|
482
|
+
offAllowed: false
|
|
483
|
+
- id: script.missing-in-spec
|
|
484
|
+
stage: generate
|
|
485
|
+
severity: error
|
|
486
|
+
kind: hard
|
|
487
|
+
rationale: "A scenario with no test() block is a stale spec: the testcase is reported but never runs (#387)."
|
|
488
|
+
fix: "Regenerate the spec from the .feature."
|
|
489
|
+
since: "<=3.2.34"
|
|
490
|
+
offAllowed: false
|
|
491
|
+
- id: script.extra-in-spec
|
|
492
|
+
stage: generate
|
|
493
|
+
severity: error
|
|
494
|
+
kind: hard
|
|
495
|
+
rationale: "A test() with no scenario is a hand-edited spec: code the QA never reviewed in Gherkin (#387)."
|
|
496
|
+
fix: "Delete the extra test or add its scenario to the .feature, then regenerate."
|
|
497
|
+
since: "<=3.2.34"
|
|
498
|
+
offAllowed: false
|
|
499
|
+
- id: script.drift
|
|
500
|
+
stage: generate
|
|
501
|
+
severity: error
|
|
502
|
+
kind: hard
|
|
503
|
+
rationale: "The committed spec differs from a fresh regenerate: it was hand-edited or the .feature changed without sungen generate, so the code no longer reflects the Gherkin (#387)."
|
|
504
|
+
fix: "Run sungen generate and commit the regenerated spec; do not edit it by hand."
|
|
505
|
+
since: "<=3.2.34"
|
|
506
|
+
offAllowed: false
|
|
507
|
+
- id: script.bypass
|
|
508
|
+
stage: generate
|
|
509
|
+
severity: error
|
|
510
|
+
kind: hard
|
|
511
|
+
rationale: "A non-manual test with zero assertions, or a step that emitted no code, is present but proves nothing; masking it would fake an automated testcase (#387)."
|
|
512
|
+
fix: "Make the Gherkin assert something and regenerate, or mark the scenario @manual with a reason."
|
|
513
|
+
since: "<=3.2.34"
|
|
514
|
+
offAllowed: false
|
|
515
|
+
|
|
516
|
+
# ───────────────────────── phase gates (harness/journey.ts PHASE_REQUIRED) ─────────────────────────
|
|
517
|
+
# A required obligation that is neither satisfied nor waived halts the phase. Waiver is today's override.
|
|
518
|
+
- id: journey.phase-create
|
|
519
|
+
stage: create
|
|
520
|
+
severity: error
|
|
521
|
+
kind: soft
|
|
522
|
+
rationale: "Post-create halt: spec, coverage, depth and trace obligations must be satisfied or waived with a reason."
|
|
523
|
+
fix: "Self-correct the open obligation, or waive it with a reason (sungen journey --waive)."
|
|
524
|
+
since: "<=3.2.34"
|
|
525
|
+
offAllowed: false
|
|
526
|
+
- id: journey.phase-run
|
|
527
|
+
stage: run
|
|
528
|
+
severity: error
|
|
529
|
+
kind: soft
|
|
530
|
+
rationale: "Post-run halt: the design obligations plus automation coverage must be satisfied or waived with a reason."
|
|
531
|
+
fix: "Self-correct (repair / run-test), or waive with a reason."
|
|
532
|
+
since: "<=3.2.34"
|
|
533
|
+
offAllowed: false
|
|
534
|
+
- id: journey.phase-deliver
|
|
535
|
+
stage: deliver
|
|
536
|
+
severity: error
|
|
537
|
+
kind: soft
|
|
538
|
+
rationale: "Pre-delivery halt: everything automated must be satisfied or waived with a reason, plus the single human sign-off, which is given (sungen journey --signoff), never waived."
|
|
539
|
+
fix: "Close or waive the open obligations, then a human signs off: sungen journey --screen <unit> --signoff --by <name>."
|
|
540
|
+
since: "<=3.2.34"
|
|
541
|
+
offAllowed: false
|
|
542
|
+
|
|
543
|
+
# ───────────────────────── new P0 rules (decision.* + gate.override-rejected wired in phase 04; contract.* in 06/08) ─────────────────────────
|
|
544
|
+
- id: contract.hash-changed
|
|
545
|
+
stage: run
|
|
546
|
+
severity: review
|
|
547
|
+
kind: hard
|
|
548
|
+
rationale: "The normalized scenario changed but not for the worse (DOS-14.4); QA must re-approve, and the rule is locked at review so it can be neither downgraded nor switched off."
|
|
549
|
+
fix: "Review the change and run sungen contract approve (TTY)."
|
|
550
|
+
since: "p0"
|
|
551
|
+
offAllowed: false
|
|
552
|
+
- id: contract.lock-uncommitted
|
|
553
|
+
stage: run
|
|
554
|
+
severity: error
|
|
555
|
+
kind: hard
|
|
556
|
+
rationale: "A lock entry that differs from git HEAD was not reviewed in a commit; an agent could have edited it to match a weakened test (DOS-14.4)."
|
|
557
|
+
fix: "Commit the lock change through review, or restore it from git."
|
|
558
|
+
since: "p0"
|
|
559
|
+
offAllowed: false
|
|
560
|
+
- id: contract.oracle-weakened
|
|
561
|
+
stage: run
|
|
562
|
+
severity: error
|
|
563
|
+
kind: hard
|
|
564
|
+
rationale: "A check was made weaker than the approved contract; the run can still be green, which is exactly the failure the contract exists to catch (#387, DOS-14.4)."
|
|
565
|
+
fix: "Restore the stronger assertion, or have QA approve the weaker contract (TTY)."
|
|
566
|
+
since: "p0"
|
|
567
|
+
offAllowed: false
|
|
568
|
+
- id: contract.target-changed
|
|
569
|
+
stage: run
|
|
570
|
+
severity: error
|
|
571
|
+
kind: hard
|
|
572
|
+
rationale: "The element being checked changed relative to the approved contract (DOS-14.4); the test may now prove something else."
|
|
573
|
+
fix: "Restore the original target, or have QA approve the change (TTY)."
|
|
574
|
+
since: "p0"
|
|
575
|
+
offAllowed: false
|
|
576
|
+
- id: contract.assertion-lost
|
|
577
|
+
stage: run
|
|
578
|
+
severity: error
|
|
579
|
+
kind: hard
|
|
580
|
+
rationale: "An approved assertion disappeared; the scenario passes with less proof than QA signed off (DOS-14.4)."
|
|
581
|
+
fix: "Restore the assertion, or have QA approve its removal (TTY)."
|
|
582
|
+
since: "p0"
|
|
583
|
+
offAllowed: false
|
|
584
|
+
- id: contract.opaque-step
|
|
585
|
+
stage: run
|
|
586
|
+
severity: review
|
|
587
|
+
kind: hard
|
|
588
|
+
rationale: "A check on a JS value, API or canvas result is not tied to an element and cannot be compared automatically (DOS-14.6); it always goes to review and is locked at review."
|
|
589
|
+
fix: "QA reviews the verbatim step and its file:line, then approves."
|
|
590
|
+
since: "p0"
|
|
591
|
+
offAllowed: false
|
|
592
|
+
- id: contract.nondeterministic
|
|
593
|
+
stage: run
|
|
594
|
+
severity: warning
|
|
595
|
+
kind: soft
|
|
596
|
+
rationale: "Two runs of the same test took different branches; the derived steps may not be stable (DOS-14.6)."
|
|
597
|
+
fix: "Remove the branch or make the data deterministic; compare the two traces."
|
|
598
|
+
since: "p0"
|
|
599
|
+
offAllowed: false
|
|
600
|
+
- id: contract.unproven
|
|
601
|
+
stage: run
|
|
602
|
+
severity: error
|
|
603
|
+
kind: hard
|
|
604
|
+
rationale: "A free or impl:code test has no usable trace, so its contract match is unknown; absence of evidence is never clean (DOS-14.6). Applies only to those two implementation paths."
|
|
605
|
+
fix: "Re-run with --trace on, then sungen contract check --trace."
|
|
606
|
+
since: "p0"
|
|
607
|
+
offAllowed: false
|
|
608
|
+
- id: contract.inconclusive
|
|
609
|
+
stage: run
|
|
610
|
+
severity: warning
|
|
611
|
+
kind: soft
|
|
612
|
+
rationale: "The last attempt did not pass or the trace was cut short, so conformance cannot be judged this run (DOS-14.6)."
|
|
613
|
+
fix: "Re-run until the test passes with a complete trace."
|
|
614
|
+
since: "p0"
|
|
615
|
+
offAllowed: false
|
|
616
|
+
- id: decision.id-reuse
|
|
617
|
+
stage: create
|
|
618
|
+
severity: error
|
|
619
|
+
kind: hard
|
|
620
|
+
rationale: "A decision id is the hash of its content; the same id with different content means the append-only record was rewritten (DOS-13)."
|
|
621
|
+
fix: "Restore the original entry; record the new decision as a new entry that supersedes it."
|
|
622
|
+
since: "p0"
|
|
623
|
+
offAllowed: false
|
|
624
|
+
- id: decision.mutated
|
|
625
|
+
stage: create
|
|
626
|
+
severity: error
|
|
627
|
+
kind: hard
|
|
628
|
+
rationale: "A decision already in git HEAD was edited or deleted; the decision layer is append-only so history stays auditable (DOS-13)."
|
|
629
|
+
fix: "Restore the entry from git and add a superseding entry instead."
|
|
630
|
+
since: "p0"
|
|
631
|
+
offAllowed: false
|
|
632
|
+
- id: decision.in-run
|
|
633
|
+
stage: deliver
|
|
634
|
+
severity: error
|
|
635
|
+
kind: hard
|
|
636
|
+
rationale: "A waiver, gate-override or contract-approval created inside the run being delivered, or not yet in git HEAD, lets the run approve itself (DOS-13, red-team #3)."
|
|
637
|
+
fix: "Commit the decision through review before delivering, or pass --accept-in-run on a TTY with confirmation."
|
|
638
|
+
since: "p0"
|
|
639
|
+
offAllowed: false
|
|
640
|
+
- id: gate.override-rejected
|
|
641
|
+
stage: create
|
|
642
|
+
severity: error
|
|
643
|
+
kind: hard
|
|
644
|
+
rationale: "An override that targets a hard rule, uses a wildcard scope, lacks a reason of at least 15 characters, or switches off a rule outside the offAllowed set is invalid and must not silently widen the gate (OES-11)."
|
|
645
|
+
fix: "Narrow the scope to one unit, give a real reason, and override only soft rules."
|
|
646
|
+
since: "p0"
|
|
647
|
+
offAllowed: false
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"counted-assertions.d.ts","sourceRoot":"","sources":["../../src/harness/counted-assertions.ts"],"names":[],"mappings":"AAqBA,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAW3D"}
|