@sun-asterisk/sungen 3.3.0-alpha.1 → 3.3.0-alpha.10
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/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/cli/case-triage-hint.d.ts +14 -0
- package/dist/cli/case-triage-hint.d.ts.map +1 -0
- package/dist/cli/case-triage-hint.js +23 -0
- package/dist/cli/case-triage-hint.js.map +1 -0
- package/dist/cli/commands/audit.js +1 -1
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/contract-derive-command.d.ts +4 -2
- package/dist/cli/commands/contract-derive-command.d.ts.map +1 -1
- package/dist/cli/commands/contract-derive-command.js +19 -5
- package/dist/cli/commands/contract-derive-command.js.map +1 -1
- package/dist/cli/commands/contract.d.ts +3 -0
- package/dist/cli/commands/contract.d.ts.map +1 -1
- package/dist/cli/commands/contract.js +40 -7
- package/dist/cli/commands/contract.js.map +1 -1
- package/dist/cli/commands/delivery.d.ts.map +1 -1
- package/dist/cli/commands/delivery.js +59 -18
- package/dist/cli/commands/delivery.js.map +1 -1
- package/dist/cli/commands/gate.d.ts.map +1 -1
- package/dist/cli/commands/gate.js +2 -1
- package/dist/cli/commands/gate.js.map +1 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +14 -2
- 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 +6 -4
- package/dist/cli/commands/journey.js.map +1 -1
- package/dist/cli/commands/next.d.ts +7 -2
- package/dist/cli/commands/next.d.ts.map +1 -1
- package/dist/cli/commands/next.js +41 -10
- package/dist/cli/commands/next.js.map +1 -1
- package/dist/cli/commands/triage.d.ts +2 -1
- package/dist/cli/commands/triage.d.ts.map +1 -1
- package/dist/cli/commands/triage.js +45 -3
- package/dist/cli/commands/triage.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +6 -2
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +5 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/json-error-on-exit.d.ts +34 -0
- package/dist/cli/json-error-on-exit.d.ts.map +1 -0
- package/dist/cli/json-error-on-exit.js +63 -0
- package/dist/cli/json-error-on-exit.js.map +1 -0
- package/dist/cli/project-sungen-invocation.d.ts +13 -0
- package/dist/cli/project-sungen-invocation.d.ts.map +1 -0
- package/dist/cli/project-sungen-invocation.js +95 -0
- package/dist/cli/project-sungen-invocation.js.map +1 -0
- package/dist/cli/run-command-hints.d.ts +9 -0
- package/dist/cli/run-command-hints.d.ts.map +1 -0
- package/dist/cli/run-command-hints.js +84 -0
- package/dist/cli/run-command-hints.js.map +1 -0
- package/dist/cli/waiting-for-you-block.d.ts +18 -0
- package/dist/cli/waiting-for-you-block.d.ts.map +1 -0
- package/dist/cli/waiting-for-you-block.js +22 -0
- package/dist/cli/waiting-for-you-block.js.map +1 -0
- package/dist/contract/accept-opaque-steps.d.ts +3 -0
- package/dist/contract/accept-opaque-steps.d.ts.map +1 -0
- package/dist/contract/accept-opaque-steps.js +114 -0
- package/dist/contract/accept-opaque-steps.js.map +1 -0
- package/dist/contract/approve-contract.d.ts +8 -1
- package/dist/contract/approve-contract.d.ts.map +1 -1
- package/dist/contract/approve-contract.js +6 -0
- package/dist/contract/approve-contract.js.map +1 -1
- package/dist/contract/build-contract-verdict.js +2 -2
- package/dist/contract/build-contract-verdict.js.map +1 -1
- package/dist/contract/build-trace-conformance.d.ts +5 -1
- package/dist/contract/build-trace-conformance.d.ts.map +1 -1
- package/dist/contract/build-trace-conformance.js +12 -14
- package/dist/contract/build-trace-conformance.js.map +1 -1
- package/dist/contract/classify-contract-change.d.ts +3 -2
- package/dist/contract/classify-contract-change.d.ts.map +1 -1
- package/dist/contract/classify-contract-change.js.map +1 -1
- package/dist/contract/classify-trace-conformance.d.ts +18 -3
- package/dist/contract/classify-trace-conformance.d.ts.map +1 -1
- package/dist/contract/classify-trace-conformance.js +64 -17
- package/dist/contract/classify-trace-conformance.js.map +1 -1
- package/dist/contract/contract-schema.d.ts +21 -0
- package/dist/contract/contract-schema.d.ts.map +1 -1
- package/dist/contract/contract-schema.js +25 -3
- package/dist/contract/contract-schema.js.map +1 -1
- package/dist/contract/contracts-lock-file.d.ts.map +1 -1
- package/dist/contract/contracts-lock-file.js +1 -0
- package/dist/contract/contracts-lock-file.js.map +1 -1
- package/dist/contract/derive-free-feature.d.ts +19 -0
- package/dist/contract/derive-free-feature.d.ts.map +1 -1
- package/dist/contract/derive-free-feature.js +40 -2
- package/dist/contract/derive-free-feature.js.map +1 -1
- package/dist/contract/project-contract-blockers.d.ts.map +1 -1
- package/dist/contract/project-contract-blockers.js +4 -2
- package/dist/contract/project-contract-blockers.js.map +1 -1
- package/dist/contract/record-contract-approval.d.ts +16 -1
- package/dist/contract/record-contract-approval.d.ts.map +1 -1
- package/dist/contract/record-contract-approval.js +29 -1
- package/dist/contract/record-contract-approval.js.map +1 -1
- package/dist/contract/render-free-gherkin.d.ts +2 -0
- package/dist/contract/render-free-gherkin.d.ts.map +1 -1
- package/dist/contract/render-free-gherkin.js +6 -0
- package/dist/contract/render-free-gherkin.js.map +1 -1
- package/dist/contract/resolve-unit-trace-identities.d.ts +12 -0
- package/dist/contract/resolve-unit-trace-identities.d.ts.map +1 -1
- package/dist/contract/resolve-unit-trace-identities.js +33 -49
- package/dist/contract/resolve-unit-trace-identities.js.map +1 -1
- package/dist/contract/trace/collect-trace-evidence.d.ts +16 -5
- package/dist/contract/trace/collect-trace-evidence.d.ts.map +1 -1
- package/dist/contract/trace/collect-trace-evidence.js +101 -43
- package/dist/contract/trace/collect-trace-evidence.js.map +1 -1
- package/dist/contract/trace/read-file-once.d.ts +20 -0
- package/dist/contract/trace/read-file-once.d.ts.map +1 -0
- package/dist/contract/trace/read-file-once.js +135 -0
- package/dist/contract/trace/read-file-once.js.map +1 -0
- package/dist/contract/trace/scenario-id-claims.d.ts +11 -0
- package/dist/contract/trace/scenario-id-claims.d.ts.map +1 -0
- package/dist/contract/trace/scenario-id-claims.js +89 -0
- package/dist/contract/trace/scenario-id-claims.js.map +1 -0
- package/dist/contract/trace/select-final-attempt.d.ts +4 -2
- package/dist/contract/trace/select-final-attempt.d.ts.map +1 -1
- package/dist/contract/trace/select-final-attempt.js +7 -4
- package/dist/contract/trace/select-final-attempt.js.map +1 -1
- package/dist/contract/trace/test-step-join.d.ts +3 -3
- package/dist/contract/trace/test-step-join.d.ts.map +1 -1
- package/dist/contract/trace/test-step-join.js +2 -2
- package/dist/contract/trace/test-step-join.js.map +1 -1
- package/dist/contract/trace/trace-binding.d.ts +3 -2
- package/dist/contract/trace/trace-binding.d.ts.map +1 -1
- package/dist/contract/trace/trace-binding.js +6 -3
- package/dist/contract/trace/trace-binding.js.map +1 -1
- package/dist/contract/trace/trace-file-reader.d.ts +14 -2
- package/dist/contract/trace/trace-file-reader.d.ts.map +1 -1
- package/dist/contract/trace/trace-file-reader.js +27 -45
- package/dist/contract/trace/trace-file-reader.js.map +1 -1
- package/dist/contract/trace/trace-freshness.d.ts +27 -0
- package/dist/contract/trace/trace-freshness.d.ts.map +1 -0
- package/dist/contract/trace/trace-freshness.js +146 -0
- package/dist/contract/trace/trace-freshness.js.map +1 -0
- package/dist/contract/trace/trace-identity-resolution.d.ts +2 -0
- package/dist/contract/trace/trace-identity-resolution.d.ts.map +1 -1
- package/dist/contract/trace/trace-identity-resolution.js +6 -3
- package/dist/contract/trace/trace-identity-resolution.js.map +1 -1
- package/dist/contract/trace/trace-run-record.d.ts +8 -3
- package/dist/contract/trace/trace-run-record.d.ts.map +1 -1
- package/dist/contract/trace/trace-run-record.js +42 -22
- package/dist/contract/trace/trace-run-record.js.map +1 -1
- package/dist/contract/trace/trace-steps.js +1 -1
- package/dist/contract/trace/trace-steps.js.map +1 -1
- package/dist/contract/trace/trace-zip-limits.d.ts +5 -1
- package/dist/contract/trace/trace-zip-limits.d.ts.map +1 -1
- package/dist/contract/trace/trace-zip-limits.js +6 -2
- package/dist/contract/trace/trace-zip-limits.js.map +1 -1
- package/dist/contract/verify-approval-decisions.d.ts.map +1 -1
- package/dist/contract/verify-approval-decisions.js +9 -4
- package/dist/contract/verify-approval-decisions.js.map +1 -1
- package/dist/decisions/confirmed-decision-commands.d.ts +11 -0
- package/dist/decisions/confirmed-decision-commands.d.ts.map +1 -1
- package/dist/decisions/confirmed-decision-commands.js +21 -3
- package/dist/decisions/confirmed-decision-commands.js.map +1 -1
- package/dist/decisions/decision-schema.d.ts +2 -1
- package/dist/decisions/decision-schema.d.ts.map +1 -1
- package/dist/decisions/decision-schema.js +2 -1
- package/dist/decisions/decision-schema.js.map +1 -1
- package/dist/decisions/git-head-trust.d.ts +12 -0
- package/dist/decisions/git-head-trust.d.ts.map +1 -1
- package/dist/decisions/git-head-trust.js +52 -0
- package/dist/decisions/git-head-trust.js.map +1 -1
- package/dist/decisions/human-confirmation.d.ts +2 -0
- package/dist/decisions/human-confirmation.d.ts.map +1 -1
- package/dist/decisions/human-confirmation.js +6 -0
- package/dist/decisions/human-confirmation.js.map +1 -1
- package/dist/decisions/legacy-waiver-migration.d.ts +8 -1
- package/dist/decisions/legacy-waiver-migration.d.ts.map +1 -1
- package/dist/decisions/legacy-waiver-migration.js +13 -4
- package/dist/decisions/legacy-waiver-migration.js.map +1 -1
- package/dist/exporters/csv-exporter.d.ts +11 -2
- package/dist/exporters/csv-exporter.d.ts.map +1 -1
- package/dist/exporters/csv-exporter.js +8 -4
- package/dist/exporters/csv-exporter.js.map +1 -1
- package/dist/exporters/matrix/export.d.ts +6 -1
- package/dist/exporters/matrix/export.d.ts.map +1 -1
- package/dist/exporters/matrix/export.js +11 -4
- package/dist/exporters/matrix/export.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/xlsx-exporter.d.ts +3 -2
- package/dist/exporters/xlsx-exporter.d.ts.map +1 -1
- package/dist/exporters/xlsx-exporter.js +4 -4
- package/dist/exporters/xlsx-exporter.js.map +1 -1
- package/dist/graph/board-human-actions.d.ts +5 -0
- package/dist/graph/board-human-actions.d.ts.map +1 -0
- package/dist/graph/board-human-actions.js +83 -0
- package/dist/graph/board-human-actions.js.map +1 -0
- package/dist/graph/evaluate-graph.d.ts +21 -1
- package/dist/graph/evaluate-graph.d.ts.map +1 -1
- package/dist/graph/evaluate-graph.js +37 -9
- package/dist/graph/evaluate-graph.js.map +1 -1
- package/dist/graph/human-action.d.ts +21 -0
- package/dist/graph/human-action.d.ts.map +1 -0
- package/dist/graph/human-action.js +3 -0
- package/dist/graph/human-action.js.map +1 -0
- package/dist/graph/manual-triage-decisions.d.ts +19 -0
- package/dist/graph/manual-triage-decisions.d.ts.map +1 -0
- package/dist/graph/manual-triage-decisions.js +53 -0
- package/dist/graph/manual-triage-decisions.js.map +1 -0
- package/dist/graph/node-decl.d.ts +16 -0
- package/dist/graph/node-decl.d.ts.map +1 -1
- package/dist/graph/node-decl.js +4 -1
- package/dist/graph/node-decl.js.map +1 -1
- package/dist/graph/nodes/test-case-contract-nodes.d.ts +3 -1
- package/dist/graph/nodes/test-case-contract-nodes.d.ts.map +1 -1
- package/dist/graph/nodes/test-case-contract-nodes.js +22 -6
- package/dist/graph/nodes/test-case-contract-nodes.js.map +1 -1
- package/dist/graph/nodes/test-case-nodes.d.ts +3 -0
- package/dist/graph/nodes/test-case-nodes.d.ts.map +1 -1
- package/dist/graph/nodes/test-case-nodes.js +33 -4
- package/dist/graph/nodes/test-case-nodes.js.map +1 -1
- package/dist/graph/nodes/unit-audit-nodes.d.ts.map +1 -1
- package/dist/graph/nodes/unit-audit-nodes.js +1 -0
- package/dist/graph/nodes/unit-audit-nodes.js.map +1 -1
- package/dist/graph/nodes/unit-contract-node.d.ts +2 -1
- package/dist/graph/nodes/unit-contract-node.d.ts.map +1 -1
- package/dist/graph/nodes/unit-contract-node.js +16 -1
- package/dist/graph/nodes/unit-contract-node.js.map +1 -1
- package/dist/graph/nodes/unit-design-nodes.d.ts.map +1 -1
- package/dist/graph/nodes/unit-design-nodes.js +2 -1
- package/dist/graph/nodes/unit-design-nodes.js.map +1 -1
- package/dist/graph/test-case-results.d.ts +1 -0
- package/dist/graph/test-case-results.d.ts.map +1 -1
- package/dist/graph/test-case-results.js +27 -3
- package/dist/graph/test-case-results.js.map +1 -1
- package/dist/graph/test-case-satisfied.d.ts +5 -4
- package/dist/graph/test-case-satisfied.d.ts.map +1 -1
- package/dist/graph/test-case-satisfied.js +4 -0
- package/dist/graph/test-case-satisfied.js.map +1 -1
- package/dist/graph/test-case-state-shape.d.ts +7 -1
- package/dist/graph/test-case-state-shape.d.ts.map +1 -1
- package/dist/graph/unit-artifact-probes.d.ts.map +1 -1
- package/dist/graph/unit-artifact-probes.js +3 -1
- package/dist/graph/unit-artifact-probes.js.map +1 -1
- package/dist/graph/unit-results-freshness.d.ts +29 -0
- package/dist/graph/unit-results-freshness.d.ts.map +1 -0
- package/dist/graph/unit-results-freshness.js +213 -0
- package/dist/graph/unit-results-freshness.js.map +1 -0
- package/dist/harness/audit.d.ts +3 -2
- package/dist/harness/audit.d.ts.map +1 -1
- package/dist/harness/audit.js +4 -17
- package/dist/harness/audit.js.map +1 -1
- package/dist/harness/catalog/gate-rules.yaml +3 -3
- package/dist/harness/defect-draft.d.ts.map +1 -1
- package/dist/harness/defect-draft.js +12 -2
- package/dist/harness/defect-draft.js.map +1 -1
- package/dist/harness/defects.d.ts +14 -0
- package/dist/harness/defects.d.ts.map +1 -1
- package/dist/harness/defects.js +14 -10
- package/dist/harness/defects.js.map +1 -1
- package/dist/harness/flow-check.d.ts +9 -0
- package/dist/harness/flow-check.d.ts.map +1 -1
- package/dist/harness/flow-check.js +11 -0
- package/dist/harness/flow-check.js.map +1 -1
- package/dist/harness/gates/audit-gate-verdict.d.ts.map +1 -1
- package/dist/harness/gates/audit-gate-verdict.js +2 -1
- package/dist/harness/gates/audit-gate-verdict.js.map +1 -1
- package/dist/harness/gates/audit-input-hash.d.ts +2 -0
- package/dist/harness/gates/audit-input-hash.d.ts.map +1 -1
- package/dist/harness/gates/audit-input-hash.js +30 -2
- package/dist/harness/gates/audit-input-hash.js.map +1 -1
- package/dist/harness/gates/audit-report-verification.d.ts +17 -6
- package/dist/harness/gates/audit-report-verification.d.ts.map +1 -1
- package/dist/harness/gates/audit-report-verification.js +55 -21
- package/dist/harness/gates/audit-report-verification.js.map +1 -1
- package/dist/harness/gates/delivery-checklist.d.ts +3 -0
- package/dist/harness/gates/delivery-checklist.d.ts.map +1 -1
- package/dist/harness/gates/delivery-checklist.js +39 -6
- package/dist/harness/gates/delivery-checklist.js.map +1 -1
- package/dist/harness/gates/delivery-decision-gate.d.ts +4 -0
- package/dist/harness/gates/delivery-decision-gate.d.ts.map +1 -1
- package/dist/harness/gates/delivery-decision-gate.js +26 -1
- package/dist/harness/gates/delivery-decision-gate.js.map +1 -1
- package/dist/harness/gates/delivery-decision-step.d.ts +4 -1
- package/dist/harness/gates/delivery-decision-step.d.ts.map +1 -1
- package/dist/harness/gates/delivery-decision-step.js +17 -2
- package/dist/harness/gates/delivery-decision-step.js.map +1 -1
- package/dist/harness/gates/in-run-decision-check.d.ts.map +1 -1
- package/dist/harness/gates/in-run-decision-check.js +40 -12
- package/dist/harness/gates/in-run-decision-check.js.map +1 -1
- package/dist/harness/gates/migrated-waiver-import-bounds.d.ts +13 -0
- package/dist/harness/gates/migrated-waiver-import-bounds.d.ts.map +1 -0
- package/dist/harness/gates/migrated-waiver-import-bounds.js +141 -0
- package/dist/harness/gates/migrated-waiver-import-bounds.js.map +1 -0
- package/dist/harness/gates/migrated-waiver-review.d.ts +14 -4
- package/dist/harness/gates/migrated-waiver-review.d.ts.map +1 -1
- package/dist/harness/gates/migrated-waiver-review.js +78 -80
- package/dist/harness/gates/migrated-waiver-review.js.map +1 -1
- package/dist/harness/journey.d.ts +40 -0
- package/dist/harness/journey.d.ts.map +1 -1
- package/dist/harness/journey.js +155 -22
- package/dist/harness/journey.js.map +1 -1
- package/dist/harness/next-step.d.ts +19 -0
- package/dist/harness/next-step.d.ts.map +1 -1
- package/dist/harness/next-step.js +21 -0
- package/dist/harness/next-step.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/triage-manual-classification.d.ts +32 -0
- package/dist/harness/triage-manual-classification.d.ts.map +1 -0
- package/dist/harness/triage-manual-classification.js +56 -0
- package/dist/harness/triage-manual-classification.js.map +1 -0
- package/dist/harness/unit-paths.d.ts +8 -0
- package/dist/harness/unit-paths.d.ts.map +1 -1
- package/dist/harness/unit-paths.js +23 -1
- package/dist/harness/unit-paths.js.map +1 -1
- package/dist/hooks/bash-read-only-segment.d.ts +9 -0
- package/dist/hooks/bash-read-only-segment.d.ts.map +1 -0
- package/dist/hooks/bash-read-only-segment.js +168 -0
- package/dist/hooks/bash-read-only-segment.js.map +1 -0
- package/dist/hooks/bash-write-targets.d.ts +12 -2
- package/dist/hooks/bash-write-targets.d.ts.map +1 -1
- package/dist/hooks/bash-write-targets.js +122 -29
- package/dist/hooks/bash-write-targets.js.map +1 -1
- package/dist/hooks/guard-protected-paths.d.ts +4 -0
- package/dist/hooks/guard-protected-paths.d.ts.map +1 -1
- package/dist/hooks/guard-protected-paths.js +13 -3
- package/dist/hooks/guard-protected-paths.js.map +1 -1
- package/dist/hooks/guard-rules.d.ts +0 -17
- package/dist/hooks/guard-rules.d.ts.map +1 -1
- package/dist/hooks/guard-rules.js +79 -10
- package/dist/hooks/guard-rules.js.map +1 -1
- package/dist/hooks/guard-tty-spoof-rule.d.ts +3 -1
- package/dist/hooks/guard-tty-spoof-rule.d.ts.map +1 -1
- package/dist/hooks/guard-tty-spoof-rule.js +3 -2
- package/dist/hooks/guard-tty-spoof-rule.js.map +1 -1
- package/dist/hooks/hand-back-core.d.ts +9 -4
- package/dist/hooks/hand-back-core.d.ts.map +1 -1
- package/dist/hooks/hand-back-core.js +24 -11
- package/dist/hooks/hand-back-core.js.map +1 -1
- package/dist/hooks/session-start-unit-state-hook.d.ts +2 -1
- package/dist/hooks/session-start-unit-state-hook.d.ts.map +1 -1
- package/dist/hooks/session-start-unit-state-hook.js +9 -4
- package/dist/hooks/session-start-unit-state-hook.js.map +1 -1
- package/dist/hooks/stop-next-step-hook.d.ts.map +1 -1
- package/dist/hooks/stop-next-step-hook.js +1 -0
- package/dist/hooks/stop-next-step-hook.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/project-initializer.d.ts.map +1 -1
- package/dist/orchestrator/project-initializer.js +1 -0
- package/dist/orchestrator/project-initializer.js.map +1 -1
- package/dist/orchestrator/templates/ai-src/commands/create-test.md +6 -3
- package/dist/orchestrator/templates/ai-src/commands/delivery.md +2 -0
- package/dist/orchestrator/templates/ai-src/commands/review.md +2 -0
- package/dist/orchestrator/templates/ai-src/commands/run-test.md +1 -1
- package/dist/orchestrator/templates/ai-src/partials/waiting-for-you.claude.md +11 -0
- package/dist/orchestrator/templates/ai-src/partials/waiting-for-you.codex.md +11 -0
- package/dist/orchestrator/templates/ai-src/partials/waiting-for-you.copilot.md +11 -0
- package/package.json +3 -3
- package/src/capabilities/discover.ts +15 -2
- package/src/cli/case-triage-hint.ts +31 -0
- package/src/cli/commands/audit.ts +1 -1
- package/src/cli/commands/contract-derive-command.ts +20 -8
- package/src/cli/commands/contract.ts +41 -7
- package/src/cli/commands/delivery.ts +56 -18
- package/src/cli/commands/gate.ts +2 -1
- package/src/cli/commands/generate.ts +13 -2
- package/src/cli/commands/journey.ts +8 -6
- package/src/cli/commands/next.ts +41 -12
- package/src/cli/commands/triage.ts +41 -3
- package/src/cli/commands/update.ts +6 -2
- package/src/cli/index.ts +5 -1
- package/src/cli/json-error-on-exit.ts +72 -0
- package/src/cli/project-sungen-invocation.ts +59 -0
- package/src/cli/run-command-hints.ts +47 -0
- package/src/cli/waiting-for-you-block.ts +27 -0
- package/src/contract/accept-opaque-steps.ts +114 -0
- package/src/contract/approve-contract.ts +10 -3
- package/src/contract/build-contract-verdict.ts +2 -2
- package/src/contract/build-trace-conformance.ts +11 -8
- package/src/contract/classify-contract-change.ts +3 -3
- package/src/contract/classify-trace-conformance.ts +76 -22
- package/src/contract/contract-schema.ts +31 -2
- package/src/contract/contracts-lock-file.ts +1 -0
- package/src/contract/derive-free-feature.ts +46 -3
- package/src/contract/project-contract-blockers.ts +4 -2
- package/src/contract/record-contract-approval.ts +41 -1
- package/src/contract/render-free-gherkin.ts +5 -0
- package/src/contract/resolve-unit-trace-identities.ts +35 -12
- package/src/contract/trace/collect-trace-evidence.ts +105 -36
- package/src/contract/trace/read-file-once.ts +95 -0
- package/src/contract/trace/scenario-id-claims.ts +60 -0
- package/src/contract/trace/select-final-attempt.ts +12 -5
- package/src/contract/trace/test-step-join.ts +6 -5
- package/src/contract/trace/trace-binding.ts +7 -4
- package/src/contract/trace/trace-file-reader.ts +34 -13
- package/src/contract/trace/trace-freshness.ts +110 -0
- package/src/contract/trace/trace-identity-resolution.ts +7 -4
- package/src/contract/trace/trace-run-record.ts +37 -15
- package/src/contract/trace/trace-steps.ts +1 -1
- package/src/contract/trace/trace-zip-limits.ts +6 -2
- package/src/contract/verify-approval-decisions.ts +9 -5
- package/src/decisions/confirmed-decision-commands.ts +25 -4
- package/src/decisions/decision-schema.ts +2 -1
- package/src/decisions/git-head-trust.ts +44 -0
- package/src/decisions/human-confirmation.ts +5 -0
- package/src/decisions/legacy-waiver-migration.ts +14 -3
- package/src/exporters/csv-exporter.ts +12 -4
- package/src/exporters/matrix/export.ts +11 -4
- package/src/exporters/matrix/xlsx-cells.ts +1 -1
- package/src/exporters/xlsx-exporter.ts +5 -4
- package/src/graph/board-human-actions.ts +80 -0
- package/src/graph/evaluate-graph.ts +45 -10
- package/src/graph/human-action.ts +33 -0
- package/src/graph/manual-triage-decisions.ts +55 -0
- package/src/graph/node-decl.ts +18 -0
- package/src/graph/nodes/test-case-contract-nodes.ts +28 -7
- package/src/graph/nodes/test-case-nodes.ts +37 -5
- package/src/graph/nodes/unit-audit-nodes.ts +2 -1
- package/src/graph/nodes/unit-contract-node.ts +20 -2
- package/src/graph/nodes/unit-design-nodes.ts +2 -1
- package/src/graph/test-case-results.ts +25 -4
- package/src/graph/test-case-satisfied.ts +7 -4
- package/src/graph/test-case-state-shape.ts +7 -2
- package/src/graph/unit-artifact-probes.ts +3 -1
- package/src/graph/unit-results-freshness.ts +165 -0
- package/src/harness/audit.ts +4 -13
- package/src/harness/catalog/gate-rules.yaml +3 -3
- package/src/harness/defect-draft.ts +13 -2
- package/src/harness/defects.ts +22 -9
- package/src/harness/flow-check.ts +11 -0
- package/src/harness/gates/audit-gate-verdict.ts +2 -1
- package/src/harness/gates/audit-input-hash.ts +27 -3
- package/src/harness/gates/audit-report-verification.ts +57 -24
- package/src/harness/gates/delivery-checklist.ts +39 -7
- package/src/harness/gates/delivery-decision-gate.ts +29 -1
- package/src/harness/gates/delivery-decision-step.ts +19 -3
- package/src/harness/gates/in-run-decision-check.ts +38 -13
- package/src/harness/gates/migrated-waiver-import-bounds.ts +103 -0
- package/src/harness/gates/migrated-waiver-review.ts +90 -37
- package/src/harness/journey.ts +174 -21
- package/src/harness/next-step.ts +34 -1
- package/src/harness/provenance.ts +99 -11
- package/src/harness/triage-manual-classification.ts +76 -0
- package/src/harness/unit-paths.ts +19 -0
- package/src/hooks/bash-read-only-segment.ts +130 -0
- package/src/hooks/bash-write-targets.ts +109 -23
- package/src/hooks/guard-protected-paths.ts +13 -3
- package/src/hooks/guard-rules.ts +37 -18
- package/src/hooks/guard-tty-spoof-rule.ts +6 -3
- package/src/hooks/hand-back-core.ts +24 -12
- package/src/hooks/session-start-unit-state-hook.ts +9 -4
- package/src/hooks/stop-next-step-hook.ts +1 -0
- package/src/orchestrator/assets-drift.ts +12 -5
- package/src/orchestrator/project-initializer.ts +1 -0
- package/src/orchestrator/templates/ai-src/commands/create-test.md +6 -3
- package/src/orchestrator/templates/ai-src/commands/delivery.md +2 -0
- package/src/orchestrator/templates/ai-src/commands/review.md +2 -0
- package/src/orchestrator/templates/ai-src/commands/run-test.md +1 -1
- package/src/orchestrator/templates/ai-src/partials/waiting-for-you.claude.md +11 -0
- package/src/orchestrator/templates/ai-src/partials/waiting-for-you.codex.md +11 -0
- package/src/orchestrator/templates/ai-src/partials/waiting-for-you.copilot.md +11 -0
|
@@ -11,6 +11,9 @@ exports.unattributedReds = exports.attributedReds = exports.TEST_CASE_NODES = ex
|
|
|
11
11
|
* tc.rerun-stale changed after the recorded run (run manifest) do run-test --change-only
|
|
12
12
|
* tc.triage red, not classified by a current triage do sungen triage
|
|
13
13
|
* tc.product-candidate triage found a product-defect candidate decide sungen defect draft
|
|
14
|
+
* tc.rerun-environment a red the environment caused (#928) decide run-test --ids, once a human confirms it is up
|
|
15
|
+
* tc.fix-test a red the test caused (#928) do run-test --ids (auto-fix)
|
|
16
|
+
* The class is `sungen triage`'s, or a manual classification in force (`sungen triage --case --as`).
|
|
14
17
|
* They sit after unit.run (which cuts a unit that never ran) and before delivery. tc.triage takes
|
|
15
18
|
* the reds the cases account for; unit.triage keeps the rest (unattributedReds), so a red no case
|
|
16
19
|
* explains — an @cases row, a renamed scenario, a nested describe title — still gets a triage step.
|
|
@@ -24,14 +27,28 @@ exports.listed = listed;
|
|
|
24
27
|
const idsArg = (cases) => (cases.length <= MAX_IDS && cases.every((c) => !c.unstableId) ? ` --ids ${cases.map((c) => c.id).join(',')}` : '');
|
|
25
28
|
exports.idsArg = idsArg;
|
|
26
29
|
const flag = (s) => (s.kind === 'api' ? '--api' : '--screen');
|
|
27
|
-
|
|
30
|
+
/** Up to three cases with the triage rule that judged each. */
|
|
31
|
+
const withRule = (cases) => `${cases.slice(0, 3).map((c) => `${c.id}: ${c.triage?.ruleId}`).join('; ')}${cases.length > 3 ? '; …' : ''}`;
|
|
32
|
+
function caseNode(id, need, rank, title, actor, step, produces, human) {
|
|
28
33
|
return {
|
|
29
34
|
id, title, actor, granularity: 'test-case', appliesTo: node_decl_1.ALL_KINDS, requires: ['unit.run'], blocking: false, rank,
|
|
30
35
|
gates: [], produces, step,
|
|
31
36
|
active: (_s, tc) => (0, test_case_satisfied_1.triggerOf)(tc) === need,
|
|
32
37
|
satisfied: (_s, tc) => (0, test_case_satisfied_1.exemptionOf)(tc) !== null,
|
|
38
|
+
...(human ? { human } : {}),
|
|
33
39
|
};
|
|
34
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* A red triage left unclassified is a human's to classify (#928): test-defect and environment take it
|
|
43
|
+
* off the product-defect path, so they need a person on a terminal. One action per such case (#954).
|
|
44
|
+
*/
|
|
45
|
+
function classifyByHand(s, _step, cases) {
|
|
46
|
+
return cases.filter((c) => c.triage?.class === 'unclassified').map((c) => ({
|
|
47
|
+
kind: 'triage-classify',
|
|
48
|
+
command: `sungen triage ${flag(s)} ${s.unit} --case ${c.id} --as "<test-defect|environment>" --reason "…"`,
|
|
49
|
+
reason: `${c.id} failed and \`sungen triage\` left it unclassified — read its evidence (trace, error), then classify it: test-defect or environment take it off the product-defect path, so a human types them on a terminal (\`--as product\` anyone may record)`,
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
35
52
|
exports.TEST_CASE_NODES = [
|
|
36
53
|
caseNode('tc.run', 'run', 131, 'Run the cases that never ran', 'ai', (s, cases) => ({
|
|
37
54
|
kind: 'do',
|
|
@@ -48,14 +65,26 @@ exports.TEST_CASE_NODES = [
|
|
|
48
65
|
return {
|
|
49
66
|
kind: 'do',
|
|
50
67
|
command: `sungen triage ${flag(s)} ${s.unit}`,
|
|
51
|
-
because: `${cases.length} test case(s) failed in the latest run and are not classified yet${left ? ` (${left} left unclassified by the last triage — read its evidence and classify by hand)` : ''} — classify each (known defect, test defect, environment, product candidate) before exporting or extending: an unexplained red in the deliverable is a finding nobody has judged`,
|
|
68
|
+
because: `${cases.length} test case(s) failed in the latest run and are not classified yet${left ? ` (${left} left unclassified by the last triage — read its evidence and classify by hand: \`sungen triage ${flag(s)} ${s.unit} --case <id> --as product|test-defect|environment --reason "…"\`; test-defect and environment are a human's call, on a terminal)` : ''} — classify each (known defect, test defect, environment, product candidate) before exporting or extending: an unexplained red in the deliverable is a finding nobody has judged`,
|
|
52
69
|
};
|
|
53
|
-
}, ['.sungen/triage/<unit>.json']),
|
|
70
|
+
}, ['.sungen/triage/<unit>.json'], classifyByHand),
|
|
54
71
|
caseNode('tc.product-candidate', 'product-candidate', 134, 'Decide on the product-defect candidates', 'human', (s, cases, single) => ({
|
|
55
72
|
kind: 'decide',
|
|
56
73
|
command: `sungen defect draft ${flag(s)} ${s.unit}${single ? ` --scenario ${cases[0].id}` : ''}`,
|
|
57
74
|
because: `${cases.length} red test case(s) look like a product defect (${(0, exports.listed)(cases)}) — the app answered and the answer differs from the oracle. A QA decides whether it is a defect to record; an agent presents it and does not draft it on its own`,
|
|
58
|
-
}), ['qa/defects/DEF-<n>-<slug>.md']),
|
|
75
|
+
}), ['qa/defects/DEF-<n>-<slug>.md'], (0, node_decl_1.humanStep)('defect-draft')),
|
|
76
|
+
// decide, not do: an agent re-running into an environment that is still down gets the same red and
|
|
77
|
+
// the same step again — a loop with no stop. A human confirms the environment first (#928 review W3).
|
|
78
|
+
caseNode('tc.rerun-environment', 'rerun-environment', 139, 'Re-run the cases the environment failed, once it is up', 'human', (s, cases) => ({
|
|
79
|
+
kind: 'decide',
|
|
80
|
+
command: `/sungen:run-test ${s.unit}${(0, exports.idsArg)(cases)}`,
|
|
81
|
+
because: `${cases.length} red test case(s) failed on the environment, not the app (${withRule(cases)}) — the run never reached a usable app, so their results say nothing about it yet. A human confirms the app, base URL, network, auth state or device is up, then they are re-run; an agent presents this and does not re-run on its own — into an environment that is still down, the same red comes back`,
|
|
82
|
+
}), ['specs/generated/<unit>/<unit>-test-result.json'], (0, node_decl_1.humanStep)('rerun-environment')),
|
|
83
|
+
caseNode('tc.fix-test', 'fix-test', 139.5, 'Fix the tests triaged as test defects', 'ai', (s, cases) => ({
|
|
84
|
+
kind: 'do',
|
|
85
|
+
command: `/sungen:run-test ${s.unit}${(0, exports.idsArg)(cases)}`,
|
|
86
|
+
because: `${cases.length} red test case(s) are test defects (${withRule(cases)}) — the test, not the app, failed: fix its selector, test data or step (run-test's auto-fix reads the triage evidence), then re-run them; never weaken an assertion to make one pass`,
|
|
87
|
+
}), ['selectors/<unit>.yaml', 'specs/generated/<unit>/<unit>-test-result.json']),
|
|
59
88
|
];
|
|
60
89
|
/** Red final attempts the test cases account for (a case read without the count stands for one). */
|
|
61
90
|
const attributedReds = (s) => (s.testCases ?? []).reduce((n, tc) => n + (tc.failedResults ?? (tc.result === 'failed' ? 1 : 0)), 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-case-nodes.js","sourceRoot":"","sources":["../../../src/graph/nodes/test-case-nodes.ts"],"names":[],"mappings":";;;AAAA
|
|
1
|
+
{"version":3,"file":"test-case-nodes.js","sourceRoot":"","sources":["../../../src/graph/nodes/test-case-nodes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unit-audit-nodes.d.ts","sourceRoot":"","sources":["../../../src/graph/nodes/unit-audit-nodes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"unit-audit-nodes.d.ts","sourceRoot":"","sources":["../../../src/graph/nodes/unit-audit-nodes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAwB,YAAY,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,sFAAsF;AACtF,eAAO,MAAM,UAAU,EAAE,SAAS,MAAM,EAQvC,CAAC;AAEF,0GAA0G;AAC1G,wBAAgB,eAAe,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,EAAE,CAItD;AAMD,eAAO,MAAM,gBAAgB,EAAE,SAAS,YAAY,EA4DnD,CAAC"}
|
|
@@ -65,6 +65,7 @@ exports.UNIT_AUDIT_NODES = [
|
|
|
65
65
|
command: `sungen audit --screen ${s.unit} --accept-viewpoint`,
|
|
66
66
|
because: 'test-viewpoint.md changed since the accepted baseline, so the ledger and traceability axes are not evidence until a QA confirms the new declaration. A decision, not a step: an agent presents it and does not run it — accepting the yardstick you just wrote makes both axes read 100% by construction',
|
|
67
67
|
}),
|
|
68
|
+
human: (0, node_decl_1.humanStep)('accept-viewpoint'),
|
|
68
69
|
},
|
|
69
70
|
{
|
|
70
71
|
id: 'unit.repair-findings', title: 'Repair the named findings', actor: 'ai', granularity: 'unit',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unit-audit-nodes.js","sourceRoot":"","sources":["../../../src/graph/nodes/unit-audit-nodes.ts"],"names":[],"mappings":";;;AAyBA,0CAIC;AA7BD;;;;;;;;;GASG;AACH,
|
|
1
|
+
{"version":3,"file":"unit-audit-nodes.js","sourceRoot":"","sources":["../../../src/graph/nodes/unit-audit-nodes.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* verdict `sungen contract check` and the delivery guard rebuild (buildContractVerdict), so the three
|
|
4
4
|
* never disagree. Always `decide`: an agent presents it and never approves its own edit.
|
|
5
5
|
*
|
|
6
|
-
* unit.contract-approve (rank 105, after the audit gate, before the first run
|
|
6
|
+
* unit.contract-approve (rank 105, after the audit gate, before the first run; a hard verdict —
|
|
7
|
+
* hard or uncommitted — is offered past a stale or failing audit too, #940)
|
|
7
8
|
* error the verdict could not be built → check it on a terminal
|
|
8
9
|
* uncommitted by kind: tampered → re-approve or restore · untracked → commit after review ·
|
|
9
10
|
* edited → review and commit, or `git checkout --` the lock · unverified → commit the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unit-contract-node.d.ts","sourceRoot":"","sources":["../../../src/graph/nodes/unit-contract-node.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"unit-contract-node.d.ts","sourceRoot":"","sources":["../../../src/graph/nodes/unit-contract-node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAkC,YAAY,EAAe,MAAM,cAAc,CAAC;AAgDzF,eAAO,MAAM,mBAAmB,EAAE,SAAS,YAAY,EAiCtD,CAAC"}
|
|
@@ -6,7 +6,8 @@ exports.UNIT_CONTRACT_NODES = void 0;
|
|
|
6
6
|
* verdict `sungen contract check` and the delivery guard rebuild (buildContractVerdict), so the three
|
|
7
7
|
* never disagree. Always `decide`: an agent presents it and never approves its own edit.
|
|
8
8
|
*
|
|
9
|
-
* unit.contract-approve (rank 105, after the audit gate, before the first run
|
|
9
|
+
* unit.contract-approve (rank 105, after the audit gate, before the first run; a hard verdict —
|
|
10
|
+
* hard or uncommitted — is offered past a stale or failing audit too, #940)
|
|
10
11
|
* error the verdict could not be built → check it on a terminal
|
|
11
12
|
* uncommitted by kind: tampered → re-approve or restore · untracked → commit after review ·
|
|
12
13
|
* edited → review and commit, or `git checkout --` the lock · unverified → commit the
|
|
@@ -48,6 +49,8 @@ function contractStep(s) {
|
|
|
48
49
|
}
|
|
49
50
|
return { kind: 'decide', command: approveCmd(s), because: `${c.review} approved scenario(s) changed since QA approved them (changed, not weaker) — review blocks \`sungen delivery\` until QA re-approves. ${HUMAN_ONLY}` };
|
|
50
51
|
}
|
|
52
|
+
/** What the human does for the step contractStep offered: approve, commit / restore through review, or read the verdict. */
|
|
53
|
+
const contractActionKind = (command) => command.startsWith('sungen contract approve') ? 'contract-approve' : command.startsWith('sungen contract check') ? 'contract-review' : 'contract-commit';
|
|
51
54
|
const CONTRACT_RULES = ['contract.hash-changed', 'contract.oracle-weakened', 'contract.target-changed', 'contract.assertion-lost', 'contract.lock-uncommitted'];
|
|
52
55
|
/** The verdict is a pass and it was built: nothing blocks, nothing to repair. */
|
|
53
56
|
const verdictClean = (s) => !s.contract.error && s.contract.verdict === 'pass';
|
|
@@ -64,6 +67,17 @@ exports.UNIT_CONTRACT_NODES = [
|
|
|
64
67
|
active: (s) => Boolean(s.contract),
|
|
65
68
|
satisfied: nothingToDecide,
|
|
66
69
|
step: contractStep,
|
|
70
|
+
human: (_s, step) => {
|
|
71
|
+
const kind = contractActionKind(step.command);
|
|
72
|
+
// A lock repair is a commit (or `git checkout --`) after review — prose, never a sungen command to copy.
|
|
73
|
+
return [{ command: step.command, reason: step.because, kind, ...(kind === 'contract-commit' ? { instruction: true } : {}) }];
|
|
74
|
+
},
|
|
75
|
+
// A hard verdict must not wait behind a re-audit (#940): the audit's PASS says nothing about it —
|
|
76
|
+
// a broken approved check, or a lock that is not what QA approved and committed (contract.lock-
|
|
77
|
+
// uncommitted, hard in `contract check`; the step names that repair first). What stays behind the
|
|
78
|
+
// cut: a changed-not-weaker contract (review — QA re-approves after the design is fixed) and a
|
|
79
|
+
// verdict that could not be built (not a verdict; `contract check` names the error).
|
|
80
|
+
surfacesPastCut: (s) => !s.contract.error && (s.contract.uncommitted > 0 || s.contract.hard > 0),
|
|
67
81
|
},
|
|
68
82
|
{
|
|
69
83
|
id: 'unit.contract-proposed', title: 'Approve the Test Contract', actor: 'human', granularity: 'unit',
|
|
@@ -76,6 +90,7 @@ exports.UNIT_CONTRACT_NODES = [
|
|
|
76
90
|
command: approveCmd(s),
|
|
77
91
|
because: `${s.contract.proposed} scenario(s) have no approved contract yet — approving locks the checks QA reviewed, so a later edit that weakens one (a healer's included) fails \`sungen contract check\`. ${HUMAN_ONLY}; proposed scenarios do not block`,
|
|
78
92
|
}),
|
|
93
|
+
human: (0, node_decl_1.humanStep)('contract-approve'),
|
|
79
94
|
},
|
|
80
95
|
];
|
|
81
96
|
//# sourceMappingURL=unit-contract-node.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unit-contract-node.js","sourceRoot":"","sources":["../../../src/graph/nodes/unit-contract-node.ts"],"names":[],"mappings":";;;AAAA
|
|
1
|
+
{"version":3,"file":"unit-contract-node.js","sourceRoot":"","sources":["../../../src/graph/nodes/unit-contract-node.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unit-design-nodes.d.ts","sourceRoot":"","sources":["../../../src/graph/nodes/unit-design-nodes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAa,YAAY,EAAe,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"unit-design-nodes.d.ts","sourceRoot":"","sources":["../../../src/graph/nodes/unit-design-nodes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAa,YAAY,EAAe,MAAM,cAAc,CAAC;AAKpE,eAAO,MAAM,iBAAiB,EAAE,SAAS,YAAY,EAwEpD,CAAC"}
|
|
@@ -13,6 +13,7 @@ exports.UNIT_DESIGN_NODES = void 0;
|
|
|
13
13
|
* 6 unit.flow-inventory a flow contract without `flows:` → add it, re-audit
|
|
14
14
|
*/
|
|
15
15
|
const node_decl_1 = require("../node-decl");
|
|
16
|
+
const project_sungen_invocation_1 = require("../../cli/project-sungen-invocation");
|
|
16
17
|
const design = (unit) => `/sungen:create-test ${unit}`;
|
|
17
18
|
exports.UNIT_DESIGN_NODES = [
|
|
18
19
|
{
|
|
@@ -35,7 +36,7 @@ exports.UNIT_DESIGN_NODES = [
|
|
|
35
36
|
satisfied: (s) => !s.assetsDrift,
|
|
36
37
|
step: (s) => ({
|
|
37
38
|
kind: 'do',
|
|
38
|
-
command:
|
|
39
|
+
command: `sungen update${(0, project_sungen_invocation_1.updateChannelFlag)(s.assetsDrift.runningVersion)}`, // keep the channel (#939)
|
|
39
40
|
because: `this project's AI commands/skills were written by sungen ${s.assetsDrift.recordedVersion} and you are running ${s.assetsDrift.runningVersion} — upgrading the package does NOT refresh them, so any rule added since ${s.assetsDrift.recordedVersion} is not in effect for the next run`,
|
|
40
41
|
}),
|
|
41
42
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unit-design-nodes.js","sourceRoot":"","sources":["../../../src/graph/nodes/unit-design-nodes.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;GAUG;AACH,4CAAoE;
|
|
1
|
+
{"version":3,"file":"unit-design-nodes.js","sourceRoot":"","sources":["../../../src/graph/nodes/unit-design-nodes.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ export interface CaseOutcome {
|
|
|
6
6
|
resultFiles: string[];
|
|
7
7
|
stale?: string;
|
|
8
8
|
triage?: TestCaseState['triage'];
|
|
9
|
+
evidence?: string;
|
|
9
10
|
}
|
|
10
11
|
export declare function caseOutcomes(projectRoot: string, unitDir: string, unit: string, unitId: string, cases: FeatureCase[]): CaseOutcome[];
|
|
11
12
|
//# sourceMappingURL=test-case-results.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-case-results.d.ts","sourceRoot":"","sources":["../../src/graph/test-case-results.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test-case-results.d.ts","sourceRoot":"","sources":["../../src/graph/test-case-results.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAO7E,MAAM,WAAW,WAAW;IAAG,MAAM,EAAE,cAAc,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE;AAgD1K,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CA8BpI"}
|
|
@@ -43,13 +43,19 @@ exports.caseOutcomes = caseOutcomes;
|
|
|
43
43
|
* stale the run manifest (`sungen changed`) selects the scenario: its steps/tags, a selector or a
|
|
44
44
|
* test-data key it uses, or a project input changed since the recorded run
|
|
45
45
|
* triage the rows of `.sungen/triage/<unit>.json` for the case, only when that triage is not
|
|
46
|
-
* older than the case's result files (a re-run voids it)
|
|
46
|
+
* older than the case's result files (a re-run voids it) — unless a manual classification
|
|
47
|
+
* in force judged this very red (manual-triage-decisions.ts, #928): that one wins
|
|
48
|
+
* evidence a red case's hash of its red final attempts (file, title, status, start, duration,
|
|
49
|
+
* messages): what a manual classification is bound to
|
|
47
50
|
*/
|
|
51
|
+
const crypto_1 = require("crypto");
|
|
48
52
|
const fs = __importStar(require("fs"));
|
|
49
53
|
const path = __importStar(require("path"));
|
|
54
|
+
const decision_identity_1 = require("../decisions/decision-identity");
|
|
50
55
|
const playwright_report_parser_1 = require("../exporters/playwright-report-parser");
|
|
51
56
|
const run_manifest_1 = require("../harness/run-manifest");
|
|
52
57
|
const triage_unit_1 = require("../harness/triage-unit");
|
|
58
|
+
const manual_triage_decisions_1 = require("./manual-triage-decisions");
|
|
53
59
|
const unit_artifact_probes_1 = require("./unit-artifact-probes");
|
|
54
60
|
const RED = new Set(['failed', 'timedOut', 'interrupted']);
|
|
55
61
|
/** The class a case shows when its rows disagree: what needs a human first. */
|
|
@@ -104,19 +110,32 @@ function triageRows(projectRoot, unitId) {
|
|
|
104
110
|
? report.rows.filter((r) => r && typeof r.scenario === 'string' && TRIAGE_PRECEDENCE.includes(r.class)) : [];
|
|
105
111
|
return { at: report && typeof report.generatedAt === 'string' ? Date.parse(report.generatedAt) : NaN, rows };
|
|
106
112
|
}
|
|
113
|
+
/** The red final attempts of one case, hashed: the same red reads the same; a re-run (new start, duration) does not. */
|
|
114
|
+
function redEvidence(projectRoot, reds) {
|
|
115
|
+
const rows = reds.map(({ file, key, r }) => ({
|
|
116
|
+
file: path.relative(projectRoot, file).split(path.sep).join('/'), key, status: r.status,
|
|
117
|
+
startTime: r.startTime ?? null, duration: r.duration ?? null, messages: r.errorMessages ?? (r.error ? [r.error] : []),
|
|
118
|
+
})).sort((a, b) => (`${a.file}\n${a.key}` < `${b.file}\n${b.key}` ? -1 : 1));
|
|
119
|
+
return (0, crypto_1.createHash)('sha256').update((0, decision_identity_1.canonicalJson)(rows)).digest('hex');
|
|
120
|
+
}
|
|
107
121
|
function caseOutcomes(projectRoot, unitDir, unit, unitId, cases) {
|
|
108
122
|
const byFeature = resultsByFeature(projectRoot, unit, unitId);
|
|
109
123
|
const stale = staleReasons(projectRoot, unitDir, unit);
|
|
110
124
|
const triage = triageRows(projectRoot, unitId);
|
|
125
|
+
const manual = (0, manual_triage_decisions_1.manualClassifications)(projectRoot, unitDir);
|
|
111
126
|
return cases.map((c) => {
|
|
112
127
|
const statuses = [];
|
|
113
128
|
const files = [];
|
|
129
|
+
const reds = [];
|
|
114
130
|
for (const { file, report } of byFeature.get(c.featureBase) ?? []) {
|
|
115
|
-
const mine = [...report.entries()].filter(([key]) => ownsTitle(key, c.title))
|
|
131
|
+
const mine = [...report.entries()].filter(([key]) => ownsTitle(key, c.title));
|
|
116
132
|
if (mine.length) {
|
|
117
|
-
statuses.push(...mine);
|
|
133
|
+
statuses.push(...mine.map(([, r]) => r.status));
|
|
118
134
|
files.push(file);
|
|
119
135
|
}
|
|
136
|
+
for (const [key, r] of mine)
|
|
137
|
+
if (RED.has(r.status))
|
|
138
|
+
reds.push({ file, key, r });
|
|
120
139
|
}
|
|
121
140
|
const result = statuses.some((s) => RED.has(s)) ? 'failed'
|
|
122
141
|
: statuses.includes('passed') ? 'passed' : statuses.includes('skipped') ? 'skipped' : 'never-run';
|
|
@@ -126,11 +145,16 @@ function caseOutcomes(projectRoot, unitDir, unit, unitId, cases) {
|
|
|
126
145
|
};
|
|
127
146
|
if (result !== 'never-run' && stale[c.title])
|
|
128
147
|
out.stale = stale[c.title];
|
|
148
|
+
if (result === 'failed')
|
|
149
|
+
out.evidence = redEvidence(projectRoot, reds);
|
|
129
150
|
const current = !Number.isNaN(triage.at) && files.every((f) => mtime(f) <= triage.at);
|
|
130
151
|
const rows = current ? triage.rows.filter((r) => rowOwns(r.scenario, c.title)) : [];
|
|
131
152
|
const worst = TRIAGE_PRECEDENCE.find((cls) => rows.some((r) => r.class === cls));
|
|
132
153
|
if (worst)
|
|
133
154
|
out.triage = { class: worst, ruleId: rows.find((r) => r.class === worst).ruleId };
|
|
155
|
+
const byHand = (0, manual_triage_decisions_1.manualClassificationFor)(manual, c.id, out.evidence);
|
|
156
|
+
if (byHand)
|
|
157
|
+
out.triage = { class: byHand.class, ruleId: 'manual', decision: byHand.decision };
|
|
134
158
|
return out;
|
|
135
159
|
});
|
|
136
160
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-case-results.js","sourceRoot":"","sources":["../../src/graph/test-case-results.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"test-case-results.js","sourceRoot":"","sources":["../../src/graph/test-case-results.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgFA,oCA8BC;AA9GD;;;;;;;;;;;;;GAaG;AACH,mCAAoC;AACpC,uCAAyB;AACzB,2CAA6B;AAC7B,sEAA+D;AAC/D,oFAA6E;AAE7E,0DAA2F;AAC3F,wDAA0D;AAE1D,uEAA2F;AAG3F,iEAAoE;AAEpE,MAAM,GAAG,GAAG,IAAI,GAAG,CAA6B,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;AACvF,+EAA+E;AAC/E,MAAM,iBAAiB,GAAkB,CAAC,mBAAmB,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;AAI5J,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,KAAa,EAAW,EAAE,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;OAClG,GAAG,CAAC,UAAU,CAAC,GAAG,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;AACrE,MAAM,OAAO,GAAG,CAAC,QAAgB,EAAE,KAAa,EAAW,EAAE,CAAC,QAAQ,KAAK,KAAK,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;AACvH,MAAM,KAAK,GAAG,CAAC,CAAS,EAAU,EAAE,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAAC,CAAC;AAAC,MAAM,CAAC;IAAC,OAAO,CAAC,CAAC;AAAC,CAAC,CAAC,CAAC,CAAC;AAEpG,sFAAsF;AACtF,SAAS,gBAAgB,CAAC,WAAmB,EAAE,IAAY,EAAE,MAAc;IACzE,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAA,oCAAa,EAAC,WAAW,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACvH,MAAM,GAAG,GAAG,IAAI,GAAG,EAA0E,CAAC;IAC9F,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,IAAI,CAAC;YAAC,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kCAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QAChG,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,IAAA,+CAAoB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YACxD,IAAI,CAAC,MAAM;gBAAE,SAAS,CAA+B,kCAAkC;YACvF,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,kCAAW,EAAE,EAAE,CAAC,CAAC;YAC3C,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,wGAAwG;AACxG,SAAS,YAAY,CAAC,WAAmB,EAAE,OAAe,EAAE,IAAY;IACtE,MAAM,MAAM,GAAG,IAAA,8BAAe,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IAC3G,IAAI,CAAC;QAAC,OAAO,IAAA,4BAAa,EAAC,MAAM,EAAE,IAAA,+BAAgB,EAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AAClH,CAAC;AAED,4EAA4E;AAC5E,SAAS,UAAU,CAAC,WAAmB,EAAE,MAAc;IACrD,MAAM,MAAM,GAAG,IAAA,8BAAgB,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QACtC,CAAC,CAAC,MAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChH,OAAO,EAAE,EAAE,EAAE,MAAM,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;AAC/G,CAAC;AAED,wHAAwH;AACxH,SAAS,WAAW,CAAC,WAAmB,EAAE,IAA+D;IACvG,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3C,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM;QACvF,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACtH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAA,iCAAa,EAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AAED,SAAgB,YAAY,CAAC,WAAmB,EAAE,OAAe,EAAE,IAAY,EAAE,MAAc,EAAE,KAAoB;IACnH,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,IAAA,+CAAqB,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACrB,MAAM,QAAQ,GAAiC,EAAE,CAAC;QAClD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,IAAI,GAA8D,EAAE,CAAC;QAC3E,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;YAClE,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9E,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YACvF,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,IAAI;gBAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;oBAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,MAAM,GAAmB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ;YACxE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;QACpG,MAAM,GAAG,GAAgB;YACvB,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;YAClE,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACvF,CAAC;QACF,IAAI,MAAM,KAAK,WAAW,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzE,IAAI,MAAM,KAAK,QAAQ;YAAE,GAAG,CAAC,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;QACtF,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC;QACjF,IAAI,KAAK;YAAE,GAAG,CAAC,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAE,CAAC,MAAM,EAAE,CAAC;QAC9F,MAAM,MAAM,GAAG,IAAA,iDAAuB,EAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnE,IAAI,MAAM;YAAE,GAAG,CAAC,MAAM,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC9F,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -8,13 +8,14 @@
|
|
|
8
8
|
* trigger — what the case needs otherwise, first match wins:
|
|
9
9
|
* never run → run · result older than the scenario (run manifest) → rerun-stale ·
|
|
10
10
|
* red with no current triage, or left `unclassified` by it → triage (a classification
|
|
11
|
-
* is still owed) · triaged product-candidate → a QA decision
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* is still owed) · triaged product-candidate → a QA decision · triaged environment →
|
|
12
|
+
* rerun-environment (once it is up) · triaged test-defect → fix-test (#928)
|
|
13
|
+
* A pass — Pass (Mocked) included — needs nothing. The class may be `sungen triage`'s or a manual
|
|
14
|
+
* classification in force (manual-triage-decisions.ts); test-case-results.ts decides which.
|
|
14
15
|
*/
|
|
15
16
|
import type { TestCaseState } from './test-case-state-shape';
|
|
16
17
|
export type TestCaseExemption = 'manual' | 'requires' | 'known-defect' | 'deferred' | 'blocked-capability';
|
|
17
|
-
export type TestCaseNeed = 'run' | 'rerun-stale' | 'triage' | 'product-candidate';
|
|
18
|
+
export type TestCaseNeed = 'run' | 'rerun-stale' | 'triage' | 'product-candidate' | 'rerun-environment' | 'fix-test';
|
|
18
19
|
/** Why the case is satisfied regardless of its result, or null when it is not exempt. */
|
|
19
20
|
export declare function exemptionOf(tc: TestCaseState): TestCaseExemption | null;
|
|
20
21
|
/** What the case would need if it were not exempt. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-case-satisfied.d.ts","sourceRoot":"","sources":["../../src/graph/test-case-satisfied.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"test-case-satisfied.d.ts","sourceRoot":"","sources":["../../src/graph/test-case-satisfied.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,UAAU,GAAG,oBAAoB,CAAC;AAC3G,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,aAAa,GAAG,QAAQ,GAAG,mBAAmB,GAAG,mBAAmB,GAAG,UAAU,CAAC;AAIrH,yFAAyF;AACzF,wBAAgB,WAAW,CAAC,EAAE,EAAE,aAAa,GAAG,iBAAiB,GAAG,IAAI,CAOvE;AAED,sDAAsD;AACtD,wBAAgB,SAAS,CAAC,EAAE,EAAE,aAAa,GAAG,YAAY,GAAG,IAAI,CAUhE;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,aAAa,GAAG,YAAY,GAAG,IAAI,CAEnE;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,aAAa,GAAG,MAAM,CAO7D"}
|
|
@@ -30,6 +30,10 @@ function triggerOf(tc) {
|
|
|
30
30
|
return 'triage';
|
|
31
31
|
if (tc.triage.class === 'product-candidate')
|
|
32
32
|
return 'product-candidate';
|
|
33
|
+
if (tc.triage.class === 'environment')
|
|
34
|
+
return 'rerun-environment';
|
|
35
|
+
if (tc.triage.class === 'test-defect')
|
|
36
|
+
return 'fix-test';
|
|
33
37
|
}
|
|
34
38
|
return null;
|
|
35
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-case-satisfied.js","sourceRoot":"","sources":["../../src/graph/test-case-satisfied.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"test-case-satisfied.js","sourceRoot":"","sources":["../../src/graph/test-case-satisfied.ts"],"names":[],"mappings":";;AAuBA,kCAOC;AAGD,8BAUC;AAED,oCAEC;AAGD,kDAOC;AArCD,MAAM,MAAM,GAAG,CAAC,EAAiB,EAAE,GAAW,EAAW,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AAEtH,yFAAyF;AACzF,SAAgB,WAAW,CAAC,EAAiB;IAC3C,IAAI,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC3C,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC;IACvE,IAAI,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC;QAAE,OAAO,cAAc,CAAC;IACvD,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC;IACxE,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,oBAAoB;QAAE,OAAO,oBAAoB,CAAC;IAC3E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,sDAAsD;AACtD,SAAgB,SAAS,CAAC,EAAiB;IACzC,IAAI,EAAE,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,EAAE,CAAC,KAAK;QAAE,OAAO,aAAa,CAAC;IACnC,IAAI,EAAE,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,cAAc;YAAE,OAAO,QAAQ,CAAC;QACtE,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,mBAAmB;YAAE,OAAO,mBAAmB,CAAC;QACxE,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,aAAa;YAAE,OAAO,mBAAmB,CAAC;QAClE,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,aAAa;YAAE,OAAO,UAAU,CAAC;IAC3D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,YAAY,CAAC,EAAiB;IAC5C,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,8EAA8E;AAC9E,SAAgB,mBAAmB,CAAC,EAAiB;IACnD,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,MAAM;QAAE,OAAO,cAAc,MAAM,GAAG,CAAC;IAC3C,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;IAC3B,IAAI,IAAI;QAAE,OAAO,SAAS,IAAI,EAAE,CAAC;IACjC,IAAI,EAAE,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,oBAAoB,CAAC;IAClG,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC;AAC3F,CAAC"}
|
|
@@ -50,11 +50,17 @@ export interface TestCaseState {
|
|
|
50
50
|
resultFiles: string[];
|
|
51
51
|
/** Set when the scenario changed after the run that produced its result (run manifest). */
|
|
52
52
|
stale?: string;
|
|
53
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* The class of a red case: a manual classification in force (`ruleId: 'manual'` and its decision id,
|
|
55
|
+
* #928), else the current `sungen triage` row — absent when neither has judged this result.
|
|
56
|
+
*/
|
|
54
57
|
triage?: {
|
|
55
58
|
class: TriageClass;
|
|
56
59
|
ruleId: string;
|
|
60
|
+
decision?: string;
|
|
57
61
|
};
|
|
62
|
+
/** Hash of the red final attempts the case accounts for (failed only) — a manual classification is bound to it; a re-run changes it. */
|
|
63
|
+
evidence?: string;
|
|
58
64
|
/** Spec anchors the case was generated from (manifest), and whether they moved since. */
|
|
59
65
|
anchors: Array<{
|
|
60
66
|
anchor: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-case-state-shape.d.ts","sourceRoot":"","sources":["../../src/graph/test-case-state-shape.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,2FAA2F;AAC3F,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,CAAC;AAErE,mGAAmG;AACnG,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,kGAAkG;IAClG,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE;QAAE,KAAK,EAAE,eAAe,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACvD;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;AAE3E,4GAA4G;AAC5G,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,aAAa,CAAC;IACrB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4GAA4G;IAC5G,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,wFAAwF;IACxF,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,6FAA6F;IAC7F,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxB,iCAAiC;IACjC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,uFAAuF;IACvF,MAAM,EAAE,cAAc,CAAC;IACvB,iGAAiG;IACjG,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mFAAmF;IACnF,MAAM,EAAE,OAAO,CAAC;IAChB,2DAA2D;IAC3D,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf
|
|
1
|
+
{"version":3,"file":"test-case-state-shape.d.ts","sourceRoot":"","sources":["../../src/graph/test-case-state-shape.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,2FAA2F;AAC3F,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,CAAC;AAErE,mGAAmG;AACnG,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,kGAAkG;IAClG,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE;QAAE,KAAK,EAAE,eAAe,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACvD;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;AAE3E,4GAA4G;AAC5G,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,aAAa,CAAC;IACrB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4GAA4G;IAC5G,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,wFAAwF;IACxF,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,6FAA6F;IAC7F,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxB,iCAAiC;IACjC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,uFAAuF;IACvF,MAAM,EAAE,cAAc,CAAC;IACvB,iGAAiG;IACjG,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mFAAmF;IACnF,MAAM,EAAE,OAAO,CAAC;IAChB,2DAA2D;IAC3D,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,wIAAwI;IACxI,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAA;KAAE,CAAC,CAAC;IACzF,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,kHAAkH;IAClH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unit-artifact-probes.d.ts","sourceRoot":"","sources":["../../src/graph/unit-artifact-probes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"unit-artifact-probes.d.ts","sourceRoot":"","sources":["../../src/graph/unit-artifact-probes.ts"],"names":[],"mappings":"AAaA,mHAAmH;AACnH,eAAO,MAAM,WAAW,QAAoC,CAAC;AAE7D,eAAO,MAAM,YAAY,GAAI,GAAG,MAAM,KAAG,MAAmD,CAAC;AAE7F,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMpE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAajE;AAED,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAKzE;AAED,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAIrE;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAI3E;AAED,uHAAuH;AACvH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAGhE;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAK5E"}
|
|
@@ -52,6 +52,7 @@ const yaml_1 = require("yaml");
|
|
|
52
52
|
const unit_paths_1 = require("../harness/unit-paths");
|
|
53
53
|
const read_text_1 = require("../harness/read-text");
|
|
54
54
|
const playwright_report_parser_1 = require("../exporters/playwright-report-parser");
|
|
55
|
+
const csv_exporter_1 = require("../exporters/csv-exporter");
|
|
55
56
|
/** `<f>-test-result[.<os>][.<env>].json` — a mobile run writes the OS into the name, an env run the env (#868). */
|
|
56
57
|
exports.RESULT_FILE = /-test-result(?:\.[^.]+)*\.json$/;
|
|
57
58
|
const readIfExists = (p) => (fs.existsSync(p) ? (0, read_text_1.readTextFile)(p) : '');
|
|
@@ -124,7 +125,8 @@ function countFailedResults(resultFiles) {
|
|
|
124
125
|
}
|
|
125
126
|
function hasDeliverableFor(projectRoot, slug) {
|
|
126
127
|
try {
|
|
127
|
-
|
|
128
|
+
// A `--preview` DRAFT is not a deliverable (#965).
|
|
129
|
+
return fs.readdirSync(path.join(projectRoot, 'qa', 'deliverables')).some((f) => f.startsWith(`${slug}-`) && !(0, csv_exporter_1.isDraftDeliverable)(f));
|
|
128
130
|
}
|
|
129
131
|
catch {
|
|
130
132
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unit-artifact-probes.js","sourceRoot":"","sources":["../../src/graph/unit-artifact-probes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"unit-artifact-probes.js","sourceRoot":"","sources":["../../src/graph/unit-artifact-probes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface ResultsFreshness {
|
|
2
|
+
files: Array<{
|
|
3
|
+
file: string;
|
|
4
|
+
runAt: string;
|
|
5
|
+
source: 'run' | 'file';
|
|
6
|
+
}>;
|
|
7
|
+
/** The oldest result file's run — what the counts are at least as old as. */
|
|
8
|
+
oldestRunAt: string;
|
|
9
|
+
newestRunAt: string;
|
|
10
|
+
/** How the oldest run is dated: Playwright's run start, or (none recorded) the file's change time. */
|
|
11
|
+
runAtSource: 'run' | 'file';
|
|
12
|
+
/** Inputs changed after the results they feed were recorded. */
|
|
13
|
+
newerInputs: Array<{
|
|
14
|
+
file: string;
|
|
15
|
+
changedAt: string;
|
|
16
|
+
source: 'commit' | 'file';
|
|
17
|
+
}>;
|
|
18
|
+
/** SUNGEN_ENV, when no result file is for it. */
|
|
19
|
+
missingEnv?: string;
|
|
20
|
+
/** One line: what makes these results untrustworthy — absent when nothing does. */
|
|
21
|
+
warning?: string;
|
|
22
|
+
}
|
|
23
|
+
/** The unit's results, dated, and what they are older than — undefined when the unit has none. */
|
|
24
|
+
export declare function resultsFreshness(projectRoot: string, unitDir: string, unit: string, env?: string | undefined): ResultsFreshness | undefined;
|
|
25
|
+
/** `2026-08-21 03:42Z` */
|
|
26
|
+
export declare const shortDate: (isoTime: string) => string;
|
|
27
|
+
/** `run 2026-08-21 03:42Z (65 days ago)` — the oldest run, and the newest when they are days apart. */
|
|
28
|
+
export declare function describeResultsRun(f: ResultsFreshness, now?: number): string;
|
|
29
|
+
//# sourceMappingURL=unit-results-freshness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unit-results-freshness.d.ts","sourceRoot":"","sources":["../../src/graph/unit-results-freshness.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;IACtE,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,sGAAsG;IACtG,WAAW,EAAE,KAAK,GAAG,MAAM,CAAC;IAC5B,gEAAgE;IAChE,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;IACnF,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAoED,kGAAkG;AAClG,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,GAAG,SAAkC,GAAG,gBAAgB,GAAG,SAAS,CA0CnK;AAED,0BAA0B;AAC1B,eAAO,MAAM,SAAS,GAAI,SAAS,MAAM,KAAG,MAAsD,CAAC;AAEnG,uGAAuG;AACvG,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,gBAAgB,EAAE,GAAG,SAAa,GAAG,MAAM,CAShF"}
|