@zxyycom/vibe-check 0.0.1 → 0.0.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/README.md +47 -74
- package/dist/esm/cache/cache-json-by-key.mjs +189 -0
- package/dist/esm/cache/cache-json-by-key.mjs.map +1 -0
- package/dist/esm/check/check.mjs.map +1 -1
- package/dist/esm/check/finding-presentation.mjs +40 -0
- package/dist/esm/check/finding-presentation.mjs.map +1 -0
- package/dist/esm/check/inherited-collection.mjs +1 -1
- package/dist/esm/check/inherited-collection.mjs.map +1 -1
- package/dist/esm/check-settlement/fact-validation.mjs +17 -23
- package/dist/esm/check-settlement/fact-validation.mjs.map +1 -1
- package/dist/esm/check-settlement/outcome-normalization.mjs +9 -19
- package/dist/esm/check-settlement/outcome-normalization.mjs.map +1 -1
- package/dist/esm/check-settlement/reason-shape.mjs +12 -0
- package/dist/esm/check-settlement/reason-shape.mjs.map +1 -0
- package/dist/esm/check-settlement/record-store.mjs +14 -17
- package/dist/esm/check-settlement/record-store.mjs.map +1 -1
- package/dist/esm/check-settlement/session.mjs +8 -2
- package/dist/esm/check-settlement/session.mjs.map +1 -1
- package/dist/esm/data-boundary/closed-values.mjs +16 -0
- package/dist/esm/data-boundary/closed-values.mjs.map +1 -1
- package/dist/esm/data-boundary/value-shapes.mjs +9 -0
- package/dist/esm/data-boundary/value-shapes.mjs.map +1 -1
- package/dist/esm/index.mjs +9 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/learned-critical-path/duration-model/bounded-history.mjs +56 -0
- package/dist/esm/learned-critical-path/duration-model/bounded-history.mjs.map +1 -0
- package/dist/esm/learned-critical-path/duration-model/prediction.mjs +122 -0
- package/dist/esm/learned-critical-path/duration-model/prediction.mjs.map +1 -0
- package/dist/esm/learned-critical-path/duration-model/preparation.mjs +41 -0
- package/dist/esm/learned-critical-path/duration-model/preparation.mjs.map +1 -0
- package/dist/esm/learned-critical-path/duration-model/recording.mjs +109 -0
- package/dist/esm/learned-critical-path/duration-model/recording.mjs.map +1 -0
- package/dist/esm/learned-critical-path/duration-model/storage.mjs +187 -0
- package/dist/esm/learned-critical-path/duration-model/storage.mjs.map +1 -0
- package/dist/esm/learned-critical-path/selection-layers.mjs +28 -0
- package/dist/esm/learned-critical-path/selection-layers.mjs.map +1 -0
- package/dist/esm/learned-critical-path/static-decision.mjs +55 -0
- package/dist/esm/learned-critical-path/static-decision.mjs.map +1 -0
- package/dist/esm/learned-critical-path/strategy.mjs +179 -0
- package/dist/esm/learned-critical-path/strategy.mjs.map +1 -0
- package/dist/esm/machine-output/v4/atomic-publication.mjs +1 -15
- package/dist/esm/machine-output/v4/atomic-publication.mjs.map +1 -1
- package/dist/esm/package-checks/code-quality-findings/finding-waiver-authoring.mjs +40 -0
- package/dist/esm/package-checks/code-quality-findings/finding-waiver-authoring.mjs.map +1 -0
- package/dist/esm/package-checks/code-quality-findings/finding-waiver-evidence.mjs +48 -0
- package/dist/esm/package-checks/code-quality-findings/finding-waiver-evidence.mjs.map +1 -0
- package/dist/esm/package-checks/code-quality-findings/policy.mjs +20 -0
- package/dist/esm/package-checks/code-quality-findings/policy.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/area-policy.mjs +15 -7
- package/dist/esm/package-checks/duplicate-detection/area-policy.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/cache/identity.mjs +1 -1
- package/dist/esm/package-checks/duplicate-detection/cache/identity.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/default-check.mjs +1 -1
- package/dist/esm/package-checks/duplicate-detection/default-check.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/execution.mjs +44 -18
- package/dist/esm/package-checks/duplicate-detection/execution.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/finding-messages.mjs +59 -0
- package/dist/esm/package-checks/duplicate-detection/finding-messages.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/finding-waiver-identity.mjs +55 -0
- package/dist/esm/package-checks/duplicate-detection/finding-waiver-identity.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs +1 -1
- package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/jscpd/command-resolution.mjs +1 -1
- package/dist/esm/package-checks/duplicate-detection/jscpd/command-resolution.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/jscpd/json-report.mjs +15 -5
- package/dist/esm/package-checks/duplicate-detection/jscpd/json-report.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/jscpd/scanner.mjs +5 -4
- package/dist/esm/package-checks/duplicate-detection/jscpd/scanner.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/options-resolution.mjs +22 -47
- package/dist/esm/package-checks/duplicate-detection/options-resolution.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/options-validation.mjs +20 -25
- package/dist/esm/package-checks/duplicate-detection/options-validation.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/options.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/records.mjs +27 -6
- package/dist/esm/package-checks/duplicate-detection/records.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/execution.mjs +10 -17
- package/dist/esm/package-checks/file-metrics/execution.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/finding-messages.mjs +22 -0
- package/dist/esm/package-checks/file-metrics/finding-messages.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/options-resolution.mjs +11 -43
- package/dist/esm/package-checks/file-metrics/options-resolution.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/options-validation.mjs +15 -25
- package/dist/esm/package-checks/file-metrics/options-validation.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/records.mjs +2 -9
- package/dist/esm/package-checks/file-metrics/records.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/scc/availability.mjs +1 -1
- package/dist/esm/package-checks/file-metrics/scc/availability.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/scc/parser.mjs +4 -4
- package/dist/esm/package-checks/file-metrics/scc/parser.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/scc/scanner.mjs +2 -2
- package/dist/esm/package-checks/file-metrics/scc/scanner.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analysis.mjs +56 -15
- package/dist/esm/package-checks/function-metrics/analysis.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/analysis-context.mjs +550 -0
- package/dist/esm/package-checks/function-metrics/analyzer/analysis-context.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/analysis-model.mjs +332 -0
- package/dist/esm/package-checks/function-metrics/analyzer/analysis-model.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/contracts.mjs +7 -0
- package/dist/esm/package-checks/function-metrics/analyzer/contracts.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.mjs +24 -0
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardnd.mjs +113 -0
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardnd.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/protocol.mjs +180 -0
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/protocol.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/registry.mjs +121 -0
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/registry.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/pipeline.mjs +217 -0
- package/dist/esm/package-checks/function-metrics/analyzer/pipeline.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/port-facade.mjs +96 -0
- package/dist/esm/package-checks/function-metrics/analyzer/port-facade.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/reader-registry.mjs +76 -0
- package/dist/esm/package-checks/function-metrics/analyzer/reader-registry.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/csharp.mjs +88 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/csharp.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/erlang.mjs +466 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/erlang.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/fortran.mjs +289 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/fortran.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/gdscript.mjs +38 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/gdscript.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/go.mjs +44 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/go.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/java-body-states.mjs +113 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/java-body-states.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/java.mjs +247 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/java.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/javascript.mjs +16 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/javascript.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/kotlin.mjs +103 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/kotlin.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/lua.mjs +55 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/lua.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/objc.mjs +100 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/objc.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/perl.mjs +367 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/perl.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/php-states.mjs +260 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/php-states.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/php.mjs +53 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/php.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/plsql.mjs +306 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/plsql.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/python.mjs +402 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/python.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/r.mjs +214 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/r.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/ruby.mjs +75 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/ruby.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/rust.mjs +32 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/rust.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/scala.mjs +47 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/scala.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/solidity.mjs +22 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/solidity.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/st.mjs +142 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/st.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/swift.mjs +94 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/swift.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/tsx.mjs +149 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/tsx.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/ttcn.mjs +79 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/ttcn.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/typescript.mjs +606 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/typescript.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/vue.mjs +31 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/vue.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/zig.mjs +23 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/zig.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/clike.mjs +492 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/clike.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/code-reader.mjs +542 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/code-reader.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/golike.mjs +141 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/golike.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/js-style-regex.mjs +62 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/js-style-regex.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/rubylike.mjs +154 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/rubylike.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/script-language.mjs +36 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/script-language.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer-adapter.mjs +56 -0
- package/dist/esm/package-checks/function-metrics/analyzer-adapter.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer-worker-contract.mjs +2 -0
- package/dist/esm/package-checks/function-metrics/analyzer-worker-contract.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer-worker-port.mjs +108 -0
- package/dist/esm/package-checks/function-metrics/analyzer-worker-port.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer-worker.mjs +24 -0
- package/dist/esm/package-checks/function-metrics/analyzer-worker.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/constructor.mjs +2 -2
- package/dist/esm/package-checks/function-metrics/constructor.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/execution.mjs +51 -33
- package/dist/esm/package-checks/function-metrics/execution.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/finding-messages.mjs +75 -0
- package/dist/esm/package-checks/function-metrics/finding-messages.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/finding-waiver-identity.mjs +28 -0
- package/dist/esm/package-checks/function-metrics/finding-waiver-identity.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/measurement-model.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/measurement.mjs +161 -26
- package/dist/esm/package-checks/function-metrics/measurement.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/options-resolution.mjs +30 -63
- package/dist/esm/package-checks/function-metrics/options-resolution.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/options-validation.mjs +27 -32
- package/dist/esm/package-checks/function-metrics/options-validation.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/options.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/records.mjs +31 -1
- package/dist/esm/package-checks/function-metrics/records.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/target-files.mjs +6 -67
- package/dist/esm/package-checks/function-metrics/target-files.mjs.map +1 -1
- package/dist/esm/package-checks/{file-metrics/scc → host-environment}/csv.mjs +1 -0
- package/dist/esm/package-checks/host-environment/csv.mjs.map +1 -0
- package/dist/esm/package-checks/host-environment/git.mjs +1 -1
- package/dist/esm/package-checks/host-environment/git.mjs.map +1 -1
- package/dist/esm/package-checks/host-environment/process.mjs +5 -0
- package/dist/esm/package-checks/host-environment/process.mjs.map +1 -0
- package/dist/esm/package-checks/json-schema-validation/final-data.mjs.map +1 -1
- package/dist/esm/package-checks/json-schema-validation/options-validation.mjs +15 -17
- package/dist/esm/package-checks/json-schema-validation/options-validation.mjs.map +1 -1
- package/dist/esm/package-checks/json-schema-validation/options.mjs.map +1 -1
- package/dist/esm/package-checks/json-validation/final-data.mjs.map +1 -1
- package/dist/esm/package-checks/json-validation/options-validation.mjs +4 -10
- package/dist/esm/package-checks/json-validation/options-validation.mjs.map +1 -1
- package/dist/esm/package-checks/maintenance-reminders/final-data.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/default-check.mjs +9 -3
- package/dist/esm/package-checks/markdown-link-validation/default-check.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/execution.mjs +27 -24
- package/dist/esm/package-checks/markdown-link-validation/execution.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/filesystem-probes.mjs +82 -53
- package/dist/esm/package-checks/markdown-link-validation/filesystem-probes.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/final-data.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/finding-messages.mjs +36 -0
- package/dist/esm/package-checks/markdown-link-validation/finding-messages.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/local-resolution.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/local-resolver.mjs +2 -2
- package/dist/esm/package-checks/markdown-link-validation/local-resolver.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs +26 -4
- package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs +24 -11
- package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/options.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache-payload.mjs +185 -0
- package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache-payload.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache.mjs +131 -0
- package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/resolver-engine.mjs +58 -57
- package/dist/esm/package-checks/markdown-link-validation/resolver-engine.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/source-reader.mjs +54 -0
- package/dist/esm/package-checks/markdown-link-validation/source-reader.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/unavailable-reasons.mjs +16 -0
- package/dist/esm/package-checks/markdown-link-validation/unavailable-reasons.mjs.map +1 -0
- package/dist/esm/package-checks/project-files/collection.mjs +1 -1
- package/dist/esm/package-checks/project-files/collection.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/configuration.mjs +2 -10
- package/dist/esm/package-checks/project-files/configuration.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/gitlink-revision.mjs +1 -1
- package/dist/esm/package-checks/project-files/gitlink-revision.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/gitlink-worktree.mjs +1 -1
- package/dist/esm/package-checks/project-files/gitlink-worktree.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/public-collection.mjs +56 -0
- package/dist/esm/package-checks/project-files/public-collection.mjs.map +1 -0
- package/dist/esm/package-checks/project-files/revision-worktree-files.mjs +1 -1
- package/dist/esm/package-checks/project-files/revision-worktree-files.mjs.map +1 -1
- package/dist/esm/package-checks/secret-detection/classification.mjs +15 -0
- package/dist/esm/package-checks/secret-detection/classification.mjs.map +1 -0
- package/dist/esm/package-checks/secret-detection/default-check.mjs +39 -0
- package/dist/esm/package-checks/secret-detection/default-check.mjs.map +1 -0
- package/dist/esm/package-checks/secret-detection/execution.mjs +172 -0
- package/dist/esm/package-checks/secret-detection/execution.mjs.map +1 -0
- package/dist/esm/package-checks/secret-detection/final-data.mjs +33 -0
- package/dist/esm/package-checks/secret-detection/final-data.mjs.map +1 -0
- package/dist/esm/package-checks/secret-detection/finding-waiver-identity.mjs +30 -0
- package/dist/esm/package-checks/secret-detection/finding-waiver-identity.mjs.map +1 -0
- package/dist/esm/package-checks/secret-detection/input-preparation.mjs +153 -0
- package/dist/esm/package-checks/secret-detection/input-preparation.mjs.map +1 -0
- package/dist/esm/package-checks/secret-detection/options-resolution.mjs +40 -0
- package/dist/esm/package-checks/secret-detection/options-resolution.mjs.map +1 -0
- package/dist/esm/package-checks/secret-detection/options-validation.mjs +22 -0
- package/dist/esm/package-checks/secret-detection/options-validation.mjs.map +1 -0
- package/dist/esm/package-checks/secret-detection/options.mjs +2 -0
- package/dist/esm/package-checks/secret-detection/options.mjs.map +1 -0
- package/dist/esm/package-checks/secret-detection/records.mjs +31 -0
- package/dist/esm/package-checks/secret-detection/records.mjs.map +1 -0
- package/dist/esm/package-checks/secret-detection/secretlint/adapter.mjs +85 -0
- package/dist/esm/package-checks/secret-detection/secretlint/adapter.mjs.map +1 -0
- package/dist/esm/project-definition/check-tree/authoring.mjs +12 -172
- package/dist/esm/project-definition/check-tree/authoring.mjs.map +1 -1
- package/dist/esm/project-definition/check-tree/check-fields-authoring.mjs +171 -0
- package/dist/esm/project-definition/check-tree/check-fields-authoring.mjs.map +1 -0
- package/dist/esm/project-definition/check-tree/collection-authoring.mjs +16 -0
- package/dist/esm/project-definition/check-tree/collection-authoring.mjs.map +1 -0
- package/dist/esm/project-definition/check-tree/materialization.mjs +9 -1
- package/dist/esm/project-definition/check-tree/materialization.mjs.map +1 -1
- package/dist/esm/project-definition/check-tree/resolution.mjs +45 -13
- package/dist/esm/project-definition/check-tree/resolution.mjs.map +1 -1
- package/dist/esm/project-definition/check-tree/scheduling-authoring.mjs +73 -0
- package/dist/esm/project-definition/check-tree/scheduling-authoring.mjs.map +1 -0
- package/dist/esm/project-definition/declarative-snapshot.mjs +73 -0
- package/dist/esm/project-definition/declarative-snapshot.mjs.map +1 -0
- package/dist/esm/project-definition/output-defaults.mjs +18 -1
- package/dist/esm/project-definition/output-defaults.mjs.map +1 -1
- package/dist/esm/project-definition/output-validation.mjs +15 -15
- package/dist/esm/project-definition/output-validation.mjs.map +1 -1
- package/dist/esm/project-definition/progress-rendering-output.mjs +52 -0
- package/dist/esm/project-definition/progress-rendering-output.mjs.map +1 -0
- package/dist/esm/project-definition/project-definition-validation.mjs +100 -16
- package/dist/esm/project-definition/project-definition-validation.mjs.map +1 -1
- package/dist/esm/project-definition/project-definition.mjs +52 -47
- package/dist/esm/project-definition/project-definition.mjs.map +1 -1
- package/dist/esm/project-definition/resource-unit-mapping.mjs +21 -0
- package/dist/esm/project-definition/resource-unit-mapping.mjs.map +1 -0
- package/dist/esm/project-definition/scheduler-policy.mjs +2 -0
- package/dist/esm/project-definition/scheduler-policy.mjs.map +1 -0
- package/dist/esm/project-run/admission-strategy-provider/custom-strategy-preparation.mjs +54 -0
- package/dist/esm/project-run/admission-strategy-provider/custom-strategy-preparation.mjs.map +1 -0
- package/dist/esm/project-run/admission-strategy-provider/prepared-admission-strategy.mjs +2 -0
- package/dist/esm/project-run/admission-strategy-provider/prepared-admission-strategy.mjs.map +1 -0
- package/dist/esm/project-run/admission-strategy-provider/provider.mjs +23 -0
- package/dist/esm/project-run/admission-strategy-provider/provider.mjs.map +1 -0
- package/dist/esm/project-run/aggregation.mjs +7 -5
- package/dist/esm/project-run/aggregation.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/callback.mjs +35 -8
- package/dist/esm/project-run/check-execution/callback.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/console-capture.mjs +220 -0
- package/dist/esm/project-run/check-execution/console-capture.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/dependencies.mjs +21 -3
- package/dist/esm/project-run/check-execution/dependencies.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/execution-finalization.mjs +54 -13
- package/dist/esm/project-run/check-execution/execution-finalization.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/execution-settlement.mjs +13 -9
- package/dist/esm/project-run/check-execution/execution-settlement.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/flag-controls.mjs +87 -0
- package/dist/esm/project-run/check-execution/flag-controls.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/lifecycle.mjs +2 -0
- package/dist/esm/project-run/check-execution/lifecycle.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/messages.mjs +5 -0
- package/dist/esm/project-run/check-execution/messages.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/plan.mjs +9 -5
- package/dist/esm/project-run/check-execution/plan.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/preflight.mjs +18 -32
- package/dist/esm/project-run/check-execution/preflight.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/resolved-checks.mjs +100 -58
- package/dist/esm/project-run/check-execution/resolved-checks.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/resolved-execution-result.mjs +2 -0
- package/dist/esm/project-run/check-execution/resolved-execution-result.mjs.map +1 -0
- package/dist/esm/project-run/{completion.mjs → completion/completion.mjs} +16 -38
- package/dist/esm/project-run/completion/completion.mjs.map +1 -0
- package/dist/esm/project-run/{machine-publication.mjs → completion/machine-publication.mjs} +1 -1
- package/dist/esm/project-run/completion/machine-publication.mjs.map +1 -0
- package/dist/esm/project-run/completion/result-resolver.mjs +36 -0
- package/dist/esm/project-run/completion/result-resolver.mjs.map +1 -0
- package/dist/esm/project-run/controls/contract.mjs.map +1 -1
- package/dist/esm/project-run/controls/outputs-override-validation.mjs +67 -47
- package/dist/esm/project-run/controls/outputs-override-validation.mjs.map +1 -1
- package/dist/esm/project-run/controls/validation-result.mjs.map +1 -1
- package/dist/esm/project-run/controls/validation.mjs +75 -11
- package/dist/esm/project-run/controls/validation.mjs.map +1 -1
- package/dist/esm/project-run/diagnostic-logging/logger.mjs +100 -161
- package/dist/esm/project-run/diagnostic-logging/logger.mjs.map +1 -1
- package/dist/esm/project-run/diagnostic-logging/observation-rendering.mjs +159 -0
- package/dist/esm/project-run/diagnostic-logging/observation-rendering.mjs.map +1 -0
- package/dist/esm/project-run/invocation/candidate.mjs +61 -0
- package/dist/esm/project-run/invocation/candidate.mjs.map +1 -0
- package/dist/esm/project-run/invocation/creation.mjs +79 -0
- package/dist/esm/project-run/invocation/creation.mjs.map +1 -0
- package/dist/esm/project-run/invocation/paths.mjs +77 -0
- package/dist/esm/project-run/invocation/paths.mjs.map +1 -0
- package/dist/esm/project-run/invocation/progress.mjs +30 -0
- package/dist/esm/project-run/invocation/progress.mjs.map +1 -0
- package/dist/esm/project-run/{invocation.mjs → invocation/run.mjs} +78 -92
- package/dist/esm/project-run/invocation/run.mjs.map +1 -0
- package/dist/esm/project-run/invocation/scheduler.mjs +57 -0
- package/dist/esm/project-run/invocation/scheduler.mjs.map +1 -0
- package/dist/esm/project-run/{output-configuration.mjs → outputs/configuration.mjs} +3 -2
- package/dist/esm/project-run/outputs/configuration.mjs.map +1 -0
- package/dist/esm/project-run/outputs/status.mjs +105 -0
- package/dist/esm/project-run/outputs/status.mjs.map +1 -0
- package/dist/esm/project-run/progress-rendering/presentation.mjs +112 -18
- package/dist/esm/project-run/progress-rendering/presentation.mjs.map +1 -1
- package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs +108 -19
- package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs.map +1 -1
- package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs +30 -4
- package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs.map +1 -1
- package/dist/esm/project-run/progress-rendering/renderer.mjs +5 -2
- package/dist/esm/project-run/progress-rendering/renderer.mjs.map +1 -1
- package/dist/esm/project-run/project-context.mjs +1 -1
- package/dist/esm/project-run/project-context.mjs.map +1 -1
- package/dist/esm/project-run/result.mjs +2 -0
- package/dist/esm/project-run/result.mjs.map +1 -1
- package/dist/esm/project-run/run.mjs +1 -1
- package/dist/esm/project-run/run.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph.mjs +166 -0
- package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-core/core.mjs +163 -0
- package/dist/esm/project-run/task-scheduler/admission-core/core.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-core/input.mjs +119 -0
- package/dist/esm/project-run/task-scheduler/admission-core/input.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-core/projection.mjs +124 -0
- package/dist/esm/project-run/task-scheduler/admission-core/projection.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-core/selection-index.mjs +99 -0
- package/dist/esm/project-run/task-scheduler/admission-core/selection-index.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-core/selection-query.mjs +198 -0
- package/dist/esm/project-run/task-scheduler/admission-core/selection-query.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-core/selection-seed.mjs +151 -0
- package/dist/esm/project-run/task-scheduler/admission-core/selection-seed.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-core/selection-transition.mjs +121 -0
- package/dist/esm/project-run/task-scheduler/admission-core/selection-transition.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-core/selection.mjs +65 -0
- package/dist/esm/project-run/task-scheduler/admission-core/selection.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-scope-layers.mjs +25 -0
- package/dist/esm/project-run/task-scheduler/admission-scope-layers.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-selection-policy.mjs +55 -0
- package/dist/esm/project-run/task-scheduler/admission-selection-policy.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/critical-path-ranking.mjs +46 -0
- package/dist/esm/project-run/task-scheduler/critical-path-ranking.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/custom-admission-policy.mjs +110 -0
- package/dist/esm/project-run/task-scheduler/custom-admission-policy.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/execution-state.mjs +34 -5
- package/dist/esm/project-run/task-scheduler/execution-state.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/forced-block-effect-replay.mjs +46 -0
- package/dist/esm/project-run/task-scheduler/forced-block-effect-replay.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/graph-validation.mjs +54 -26
- package/dist/esm/project-run/task-scheduler/graph-validation.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/graph.mjs +79 -3
- package/dist/esm/project-run/task-scheduler/graph.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/measurement/diagnostics.mjs +207 -0
- package/dist/esm/project-run/task-scheduler/measurement/diagnostics.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/measurement/integrals.mjs +116 -0
- package/dist/esm/project-run/task-scheduler/measurement/integrals.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/measurement/policy.mjs +67 -0
- package/dist/esm/project-run/task-scheduler/measurement/policy.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/measurement/summary.mjs +123 -0
- package/dist/esm/project-run/task-scheduler/measurement/summary.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/measurement/timing.mjs +158 -0
- package/dist/esm/project-run/task-scheduler/measurement/timing.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/scheduler-admission-decision.mjs +90 -62
- package/dist/esm/project-run/task-scheduler/scheduler-admission-decision.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/scheduler-blocker-summary.mjs +20 -6
- package/dist/esm/project-run/task-scheduler/scheduler-blocker-summary.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/scheduler-decision-inspection.mjs +5 -105
- package/dist/esm/project-run/task-scheduler/scheduler-decision-inspection.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/scheduler-decision-model.mjs +0 -9
- package/dist/esm/project-run/task-scheduler/scheduler-decision-model.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/scheduler-decision.mjs +48 -28
- package/dist/esm/project-run/task-scheduler/scheduler-decision.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/scheduler-observation.mjs +89 -0
- package/dist/esm/project-run/task-scheduler/scheduler-observation.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/scheduler-task-lifecycle.mjs +94 -0
- package/dist/esm/project-run/task-scheduler/scheduler-task-lifecycle.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/scheduler-terminal-measurement.mjs +66 -0
- package/dist/esm/project-run/task-scheduler/scheduler-terminal-measurement.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/scheduler.mjs +171 -114
- package/dist/esm/project-run/task-scheduler/scheduler.mjs.map +1 -1
- package/docs/api-mechanics.md +64 -137
- package/docs/changelog.md +157 -0
- package/docs/checks/duplicate-detection.md +111 -59
- package/docs/checks/file-metrics.md +46 -43
- package/docs/checks/function-metrics.md +100 -163
- package/docs/checks/json-schema-validation.md +43 -36
- package/docs/checks/json-validation.md +38 -25
- package/docs/checks/maintenance-reminders.md +41 -29
- package/docs/checks/markdown-link-validation.md +82 -54
- package/docs/checks/secret-detection.md +129 -0
- package/docs/examples/artifacts/mixed-outcomes/definition.ts +5 -5
- package/docs/guides/cache-results.md +63 -0
- package/docs/guides/callbacks.md +34 -0
- package/docs/guides/check-dependencies.md +121 -0
- package/docs/guides/collecting-project-files.md +59 -0
- package/docs/guides/extending-check-lifecycle.md +112 -0
- package/docs/guides/finding-waivers.md +45 -0
- package/docs/guides/learned-scheduling.md +83 -0
- package/docs/guides/presenting-findings.md +54 -0
- package/docs/guides/run-outputs.md +145 -0
- package/docs/guides/scheduling.md +208 -0
- package/docs/guides/simulating-admission.md +55 -0
- package/docs/output.md +11 -20
- package/licenses/Lizard-1.24.0-MIT.txt +30 -0
- package/{third-party-licenses/momoa-3.3.12-LICENSE → licenses/Lizard-1.24.0-lizard.py-Apache-2.0.txt} +1 -0
- package/licenses/Pygments-2.18.0-BSD-2-Clause.txt +25 -0
- package/licenses/analyzer-translations-NOTICE.md +24 -0
- package/licenses/lizard-1.24.0-provenance.json +957 -0
- package/package.json +18 -6
- package/src/cache/cache-json-by-key.ts +304 -0
- package/src/check/check.ts +67 -17
- package/src/check/finding-presentation.ts +67 -0
- package/src/check/inherited-collection.ts +1 -1
- package/src/check-settlement/fact-validation.ts +29 -39
- package/src/check-settlement/outcome-normalization.ts +17 -35
- package/src/check-settlement/reason-shape.ts +20 -0
- package/src/check-settlement/record-store.ts +18 -15
- package/src/check-settlement/session.ts +12 -3
- package/src/data-boundary/closed-values.ts +29 -0
- package/src/data-boundary/value-shapes.ts +12 -0
- package/src/index.ts +70 -2
- package/src/learned-critical-path/duration-model/bounded-history.ts +108 -0
- package/src/learned-critical-path/duration-model/prediction.ts +181 -0
- package/src/learned-critical-path/duration-model/preparation.ts +77 -0
- package/src/learned-critical-path/duration-model/recording.ts +208 -0
- package/src/learned-critical-path/duration-model/storage.ts +252 -0
- package/src/learned-critical-path/selection-layers.ts +72 -0
- package/src/learned-critical-path/static-decision.ts +105 -0
- package/src/learned-critical-path/strategy.ts +299 -0
- package/src/machine-output/v4/atomic-publication.ts +1 -16
- package/src/package-checks/code-quality-findings/finding-waiver-authoring.ts +46 -0
- package/src/package-checks/code-quality-findings/finding-waiver-evidence.ts +95 -0
- package/src/package-checks/code-quality-findings/policy.ts +23 -0
- package/src/package-checks/duplicate-detection/area-policy.ts +24 -13
- package/src/package-checks/duplicate-detection/cache/identity.ts +1 -1
- package/src/package-checks/duplicate-detection/default-check.ts +1 -1
- package/src/package-checks/duplicate-detection/execution.ts +82 -22
- package/src/package-checks/duplicate-detection/finding-messages.ts +75 -0
- package/src/package-checks/duplicate-detection/finding-waiver-identity.ts +68 -0
- package/src/package-checks/duplicate-detection/jscpd/availability.ts +1 -1
- package/src/package-checks/duplicate-detection/jscpd/command-resolution.ts +1 -1
- package/src/package-checks/duplicate-detection/jscpd/json-report.ts +24 -5
- package/src/package-checks/duplicate-detection/jscpd/scanner.ts +6 -7
- package/src/package-checks/duplicate-detection/options-resolution.ts +32 -57
- package/src/package-checks/duplicate-detection/options-validation.ts +23 -31
- package/src/package-checks/duplicate-detection/options.ts +21 -1
- package/src/package-checks/duplicate-detection/records.ts +65 -12
- package/src/package-checks/file-metrics/execution.ts +16 -17
- package/src/package-checks/file-metrics/finding-messages.ts +29 -0
- package/src/package-checks/file-metrics/options-resolution.ts +19 -52
- package/src/package-checks/file-metrics/options-validation.ts +23 -32
- package/src/package-checks/file-metrics/records.ts +11 -23
- package/src/package-checks/file-metrics/scc/availability.ts +1 -1
- package/src/package-checks/file-metrics/scc/parser.ts +4 -4
- package/src/package-checks/file-metrics/scc/scanner.ts +2 -2
- package/src/package-checks/function-metrics/analysis.ts +76 -21
- package/src/package-checks/function-metrics/analyzer/analysis-context.ts +749 -0
- package/src/package-checks/function-metrics/analyzer/analysis-model.ts +421 -0
- package/src/package-checks/function-metrics/analyzer/contracts.ts +54 -0
- package/src/package-checks/function-metrics/analyzer/extension-output.ts +261 -0
- package/src/package-checks/function-metrics/analyzer/extensions/extension-base.ts +33 -0
- package/src/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.ts +27 -0
- package/src/package-checks/function-metrics/analyzer/extensions/lizardnd.ts +144 -0
- package/src/package-checks/function-metrics/analyzer/extensions/protocol.ts +345 -0
- package/src/package-checks/function-metrics/analyzer/extensions/registry.ts +157 -0
- package/src/package-checks/function-metrics/analyzer/pipeline.ts +311 -0
- package/src/package-checks/function-metrics/analyzer/port-facade.ts +142 -0
- package/src/package-checks/function-metrics/analyzer/reader-registry.ts +84 -0
- package/src/package-checks/function-metrics/analyzer/readers/csharp.ts +110 -0
- package/src/package-checks/function-metrics/analyzer/readers/erlang.ts +501 -0
- package/src/package-checks/function-metrics/analyzer/readers/fortran.ts +294 -0
- package/src/package-checks/function-metrics/analyzer/readers/gdscript.ts +42 -0
- package/src/package-checks/function-metrics/analyzer/readers/go.ts +53 -0
- package/src/package-checks/function-metrics/analyzer/readers/java-body-states.ts +141 -0
- package/src/package-checks/function-metrics/analyzer/readers/java.ts +270 -0
- package/src/package-checks/function-metrics/analyzer/readers/javascript.ts +19 -0
- package/src/package-checks/function-metrics/analyzer/readers/kotlin.ts +120 -0
- package/src/package-checks/function-metrics/analyzer/readers/lua.ts +68 -0
- package/src/package-checks/function-metrics/analyzer/readers/objc.ts +107 -0
- package/src/package-checks/function-metrics/analyzer/readers/perl.ts +340 -0
- package/src/package-checks/function-metrics/analyzer/readers/php-states.ts +246 -0
- package/src/package-checks/function-metrics/analyzer/readers/php.ts +63 -0
- package/src/package-checks/function-metrics/analyzer/readers/plsql.ts +306 -0
- package/src/package-checks/function-metrics/analyzer/readers/python.ts +431 -0
- package/src/package-checks/function-metrics/analyzer/readers/r.ts +234 -0
- package/src/package-checks/function-metrics/analyzer/readers/ruby.ts +88 -0
- package/src/package-checks/function-metrics/analyzer/readers/rust.ts +47 -0
- package/src/package-checks/function-metrics/analyzer/readers/scala.ts +60 -0
- package/src/package-checks/function-metrics/analyzer/readers/solidity.ts +32 -0
- package/src/package-checks/function-metrics/analyzer/readers/st.ts +161 -0
- package/src/package-checks/function-metrics/analyzer/readers/swift.ts +116 -0
- package/src/package-checks/function-metrics/analyzer/readers/tsx.ts +165 -0
- package/src/package-checks/function-metrics/analyzer/readers/ttcn.ts +90 -0
- package/src/package-checks/function-metrics/analyzer/readers/typescript.ts +593 -0
- package/src/package-checks/function-metrics/analyzer/readers/vue.ts +43 -0
- package/src/package-checks/function-metrics/analyzer/readers/zig.ts +35 -0
- package/src/package-checks/function-metrics/analyzer/shared/clike.ts +541 -0
- package/src/package-checks/function-metrics/analyzer/shared/code-reader.ts +682 -0
- package/src/package-checks/function-metrics/analyzer/shared/golike.ts +143 -0
- package/src/package-checks/function-metrics/analyzer/shared/js-style-regex.ts +75 -0
- package/src/package-checks/function-metrics/analyzer/shared/rubylike.ts +161 -0
- package/src/package-checks/function-metrics/analyzer/shared/script-language.ts +50 -0
- package/src/package-checks/function-metrics/analyzer-adapter.ts +84 -0
- package/src/package-checks/function-metrics/analyzer-worker-contract.ts +10 -0
- package/src/package-checks/function-metrics/analyzer-worker-port.ts +150 -0
- package/src/package-checks/function-metrics/analyzer-worker.ts +31 -0
- package/src/package-checks/function-metrics/constructor.ts +2 -2
- package/src/package-checks/function-metrics/execution.ts +94 -39
- package/src/package-checks/function-metrics/finding-messages.ts +95 -0
- package/src/package-checks/function-metrics/finding-waiver-identity.ts +36 -0
- package/src/package-checks/function-metrics/measurement-model.ts +15 -1
- package/src/package-checks/function-metrics/measurement.ts +221 -36
- package/src/package-checks/function-metrics/options-resolution.ts +39 -75
- package/src/package-checks/function-metrics/options-validation.ts +30 -39
- package/src/package-checks/function-metrics/options.ts +27 -11
- package/src/package-checks/function-metrics/records.ts +73 -7
- package/src/package-checks/function-metrics/target-files.ts +10 -70
- package/src/package-checks/{file-metrics/scc → host-environment}/csv.ts +1 -2
- package/src/package-checks/host-environment/git.ts +2 -2
- package/src/package-checks/host-environment/process.ts +10 -0
- package/src/package-checks/json-schema-validation/final-data.ts +8 -0
- package/src/package-checks/json-schema-validation/options-validation.ts +16 -23
- package/src/package-checks/json-schema-validation/options.ts +23 -0
- package/src/package-checks/json-validation/final-data.ts +5 -0
- package/src/package-checks/json-validation/options-validation.ts +4 -18
- package/src/package-checks/maintenance-reminders/final-data.ts +18 -0
- package/src/package-checks/markdown-link-validation/default-check.ts +9 -3
- package/src/package-checks/markdown-link-validation/execution.ts +51 -57
- package/src/package-checks/markdown-link-validation/filesystem-probes.ts +108 -51
- package/src/package-checks/markdown-link-validation/final-data.ts +5 -0
- package/src/package-checks/markdown-link-validation/finding-messages.ts +48 -0
- package/src/package-checks/markdown-link-validation/local-resolution.ts +17 -9
- package/src/package-checks/markdown-link-validation/local-resolver.ts +5 -2
- package/src/package-checks/markdown-link-validation/options-resolution.ts +31 -3
- package/src/package-checks/markdown-link-validation/options-validation.ts +27 -19
- package/src/package-checks/markdown-link-validation/options.ts +15 -0
- package/src/package-checks/markdown-link-validation/parse-facts-cache-payload.ts +246 -0
- package/src/package-checks/markdown-link-validation/parse-facts-cache.ts +154 -0
- package/src/package-checks/markdown-link-validation/resolver-engine.ts +75 -65
- package/src/package-checks/markdown-link-validation/source-reader.ts +86 -0
- package/src/package-checks/markdown-link-validation/unavailable-reasons.ts +42 -0
- package/src/package-checks/project-files/collection.ts +1 -1
- package/src/package-checks/project-files/configuration.ts +3 -14
- package/src/package-checks/project-files/gitlink-revision.ts +1 -1
- package/src/package-checks/project-files/gitlink-worktree.ts +1 -1
- package/src/package-checks/project-files/public-collection.ts +92 -0
- package/src/package-checks/project-files/revision-worktree-files.ts +1 -1
- package/src/package-checks/secret-detection/classification.ts +30 -0
- package/src/package-checks/secret-detection/default-check.ts +50 -0
- package/src/package-checks/secret-detection/execution.ts +247 -0
- package/src/package-checks/secret-detection/final-data.ts +57 -0
- package/src/package-checks/secret-detection/finding-waiver-identity.ts +37 -0
- package/src/package-checks/secret-detection/input-preparation.ts +233 -0
- package/src/package-checks/secret-detection/options-resolution.ts +65 -0
- package/src/package-checks/secret-detection/options-validation.ts +27 -0
- package/src/package-checks/secret-detection/options.ts +36 -0
- package/src/package-checks/secret-detection/records.ts +77 -0
- package/src/package-checks/secret-detection/secretlint/adapter.ts +123 -0
- package/src/project-definition/check-tree/authoring.ts +29 -230
- package/src/project-definition/check-tree/check-fields-authoring.ts +227 -0
- package/src/project-definition/check-tree/collection-authoring.ts +13 -0
- package/src/project-definition/check-tree/materialization.ts +9 -1
- package/src/project-definition/check-tree/resolution.ts +80 -22
- package/src/project-definition/check-tree/scheduling-authoring.ts +114 -0
- package/src/project-definition/declarative-snapshot.ts +87 -0
- package/src/project-definition/output-defaults.ts +32 -1
- package/src/project-definition/output-validation.ts +15 -15
- package/src/project-definition/progress-rendering-output.ts +121 -0
- package/src/project-definition/project-definition-validation.ts +117 -18
- package/src/project-definition/project-definition.ts +198 -61
- package/src/project-definition/resource-unit-mapping.ts +25 -0
- package/src/project-definition/scheduler-policy.ts +553 -0
- package/src/project-run/admission-strategy-provider/custom-strategy-preparation.ts +80 -0
- package/src/project-run/admission-strategy-provider/prepared-admission-strategy.ts +27 -0
- package/src/project-run/admission-strategy-provider/provider.ts +45 -0
- package/src/project-run/aggregation.ts +10 -5
- package/src/project-run/check-execution/callback.ts +50 -8
- package/src/project-run/check-execution/console-capture.ts +262 -0
- package/src/project-run/check-execution/dependencies.ts +43 -6
- package/src/project-run/check-execution/execution-finalization.ts +99 -25
- package/src/project-run/check-execution/execution-settlement.ts +19 -11
- package/src/project-run/check-execution/flag-controls.ts +132 -0
- package/src/project-run/check-execution/lifecycle.ts +21 -0
- package/src/project-run/check-execution/messages.ts +8 -0
- package/src/project-run/check-execution/plan.ts +12 -8
- package/src/project-run/check-execution/preflight.ts +23 -43
- package/src/project-run/check-execution/resolved-checks.ts +165 -126
- package/src/project-run/check-execution/resolved-execution-result.ts +22 -0
- package/src/project-run/{completion.ts → completion/completion.ts} +17 -57
- package/src/project-run/{machine-publication.ts → completion/machine-publication.ts} +4 -4
- package/src/project-run/completion/result-resolver.ts +60 -0
- package/src/project-run/controls/contract.ts +25 -2
- package/src/project-run/controls/outputs-override-validation.ts +83 -60
- package/src/project-run/controls/validation-result.ts +17 -6
- package/src/project-run/controls/validation.ts +107 -12
- package/src/project-run/diagnostic-logging/logger.ts +132 -207
- package/src/project-run/diagnostic-logging/observation-rendering.ts +203 -0
- package/src/project-run/invocation/candidate.ts +86 -0
- package/src/project-run/invocation/creation.ts +116 -0
- package/src/project-run/invocation/paths.ts +154 -0
- package/src/project-run/invocation/progress.ts +38 -0
- package/src/project-run/{invocation.ts → invocation/run.ts} +125 -120
- package/src/project-run/invocation/scheduler.ts +75 -0
- package/src/project-run/{output-configuration.ts → outputs/configuration.ts} +6 -5
- package/src/project-run/outputs/status.ts +161 -0
- package/src/project-run/progress-rendering/presentation.ts +118 -26
- package/src/project-run/progress-rendering/renderer-formatting.ts +166 -19
- package/src/project-run/progress-rendering/renderer-lifecycle.ts +38 -3
- package/src/project-run/progress-rendering/renderer.ts +13 -2
- package/src/project-run/project-context.ts +3 -2
- package/src/project-run/result.ts +49 -3
- package/src/project-run/run.ts +7 -6
- package/src/project-run/task-scheduler/admission-core/compiled-graph.ts +316 -0
- package/src/project-run/task-scheduler/admission-core/core.ts +278 -0
- package/src/project-run/task-scheduler/admission-core/input.ts +138 -0
- package/src/project-run/task-scheduler/admission-core/projection.ts +164 -0
- package/src/project-run/task-scheduler/admission-core/selection-index.ts +165 -0
- package/src/project-run/task-scheduler/admission-core/selection-query.ts +295 -0
- package/src/project-run/task-scheduler/admission-core/selection-seed.ts +252 -0
- package/src/project-run/task-scheduler/admission-core/selection-transition.ts +236 -0
- package/src/project-run/task-scheduler/admission-core/selection.ts +140 -0
- package/src/project-run/task-scheduler/admission-core/trace.ts +177 -0
- package/src/project-run/task-scheduler/admission-scope-layers.ts +44 -0
- package/src/project-run/task-scheduler/admission-selection-policy.ts +116 -0
- package/src/project-run/task-scheduler/critical-path-ranking.ts +76 -0
- package/src/project-run/task-scheduler/custom-admission-policy.ts +128 -0
- package/src/project-run/task-scheduler/execution-state.ts +97 -6
- package/src/project-run/task-scheduler/forced-block-effect-replay.ts +68 -0
- package/src/project-run/task-scheduler/graph-validation.ts +77 -31
- package/src/project-run/task-scheduler/graph.ts +111 -3
- package/src/project-run/task-scheduler/measurement/diagnostics.ts +261 -0
- package/src/project-run/task-scheduler/measurement/integrals.ts +177 -0
- package/src/project-run/task-scheduler/measurement/policy.ts +105 -0
- package/src/project-run/task-scheduler/measurement/summary.ts +175 -0
- package/src/project-run/task-scheduler/measurement/timing.ts +190 -0
- package/src/project-run/task-scheduler/scheduler-admission-decision.ts +143 -134
- package/src/project-run/task-scheduler/scheduler-blocker-summary.ts +34 -9
- package/src/project-run/task-scheduler/scheduler-decision-inspection.ts +28 -170
- package/src/project-run/task-scheduler/scheduler-decision-model.ts +36 -40
- package/src/project-run/task-scheduler/scheduler-decision.ts +68 -36
- package/src/project-run/task-scheduler/scheduler-observation.ts +124 -0
- package/src/project-run/task-scheduler/scheduler-task-lifecycle.ts +150 -0
- package/src/project-run/task-scheduler/scheduler-terminal-measurement.ts +95 -0
- package/src/project-run/task-scheduler/scheduler.ts +216 -171
- package/types/cache/cache-json-by-key.d.ts +53 -0
- package/types/check/check.d.ts +62 -17
- package/types/check/finding-presentation.d.ts +25 -0
- package/types/check/inherited-collection.d.ts +1 -1
- package/types/check-settlement/reason-shape.d.ts +5 -0
- package/types/check-settlement/record-store.d.ts +2 -2
- package/types/check-settlement/session.d.ts +3 -1
- package/types/data-boundary/closed-values.d.ts +8 -0
- package/types/data-boundary/value-shapes.d.ts +3 -0
- package/types/index.d.ts +22 -7
- package/types/learned-critical-path/duration-model/bounded-history.d.ts +34 -0
- package/types/learned-critical-path/duration-model/prediction.d.ts +32 -0
- package/types/learned-critical-path/duration-model/preparation.d.ts +28 -0
- package/types/learned-critical-path/duration-model/recording.d.ts +28 -0
- package/types/learned-critical-path/duration-model/storage.d.ts +12 -0
- package/types/learned-critical-path/selection-layers.d.ts +14 -0
- package/types/learned-critical-path/static-decision.d.ts +3 -0
- package/types/learned-critical-path/strategy.d.ts +35 -0
- package/types/package-checks/code-quality-findings/finding-waiver-authoring.d.ts +7 -0
- package/types/package-checks/code-quality-findings/finding-waiver-evidence.d.ts +34 -0
- package/types/package-checks/code-quality-findings/policy.d.ts +4 -0
- package/types/package-checks/duplicate-detection/area-policy.d.ts +1 -1
- package/types/package-checks/duplicate-detection/finding-messages.d.ts +7 -0
- package/types/package-checks/duplicate-detection/finding-waiver-identity.d.ts +3 -0
- package/types/package-checks/duplicate-detection/jscpd/command-resolution.d.ts +1 -1
- package/types/package-checks/duplicate-detection/options.d.ts +18 -1
- package/types/package-checks/duplicate-detection/records.d.ts +20 -3
- package/types/package-checks/file-metrics/finding-messages.d.ts +4 -0
- package/types/package-checks/file-metrics/records.d.ts +5 -10
- package/types/package-checks/file-metrics/scc/parser.d.ts +4 -4
- package/types/package-checks/function-metrics/analysis.d.ts +1 -1
- package/types/package-checks/function-metrics/analyzer/analysis-context.d.ts +174 -0
- package/types/package-checks/function-metrics/analyzer/analysis-model.d.ts +135 -0
- package/types/package-checks/function-metrics/analyzer/contracts.d.ts +48 -0
- package/types/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.d.ts +13 -0
- package/types/package-checks/function-metrics/analyzer/extensions/lizardnd.d.ts +28 -0
- package/types/package-checks/function-metrics/analyzer/extensions/protocol.d.ts +99 -0
- package/types/package-checks/function-metrics/analyzer/extensions/registry.d.ts +34 -0
- package/types/package-checks/function-metrics/analyzer/pipeline.d.ts +67 -0
- package/types/package-checks/function-metrics/analyzer/port-facade.d.ts +38 -0
- package/types/package-checks/function-metrics/analyzer/reader-registry.d.ts +18 -0
- package/types/package-checks/function-metrics/analyzer/readers/csharp.d.ts +22 -0
- package/types/package-checks/function-metrics/analyzer/readers/erlang.d.ts +22 -0
- package/types/package-checks/function-metrics/analyzer/readers/fortran.d.ts +29 -0
- package/types/package-checks/function-metrics/analyzer/readers/gdscript.d.ts +18 -0
- package/types/package-checks/function-metrics/analyzer/readers/go.d.ts +18 -0
- package/types/package-checks/function-metrics/analyzer/readers/java-body-states.d.ts +18 -0
- package/types/package-checks/function-metrics/analyzer/readers/java.d.ts +44 -0
- package/types/package-checks/function-metrics/analyzer/readers/javascript.d.ts +14 -0
- package/types/package-checks/function-metrics/analyzer/readers/kotlin.d.ts +23 -0
- package/types/package-checks/function-metrics/analyzer/readers/lua.d.ts +16 -0
- package/types/package-checks/function-metrics/analyzer/readers/objc.d.ts +18 -0
- package/types/package-checks/function-metrics/analyzer/readers/perl.d.ts +28 -0
- package/types/package-checks/function-metrics/analyzer/readers/php-states.d.ts +41 -0
- package/types/package-checks/function-metrics/analyzer/readers/php.d.ts +22 -0
- package/types/package-checks/function-metrics/analyzer/readers/plsql.d.ts +24 -0
- package/types/package-checks/function-metrics/analyzer/readers/python.d.ts +50 -0
- package/types/package-checks/function-metrics/analyzer/readers/r.d.ts +22 -0
- package/types/package-checks/function-metrics/analyzer/readers/ruby.d.ts +16 -0
- package/types/package-checks/function-metrics/analyzer/readers/rust.d.ts +20 -0
- package/types/package-checks/function-metrics/analyzer/readers/scala.d.ts +20 -0
- package/types/package-checks/function-metrics/analyzer/readers/solidity.d.ts +19 -0
- package/types/package-checks/function-metrics/analyzer/readers/st.d.ts +37 -0
- package/types/package-checks/function-metrics/analyzer/readers/swift.d.ts +30 -0
- package/types/package-checks/function-metrics/analyzer/readers/tsx.d.ts +15 -0
- package/types/package-checks/function-metrics/analyzer/readers/ttcn.d.ts +22 -0
- package/types/package-checks/function-metrics/analyzer/readers/typescript.d.ts +35 -0
- package/types/package-checks/function-metrics/analyzer/readers/vue.d.ts +18 -0
- package/types/package-checks/function-metrics/analyzer/readers/zig.d.ts +19 -0
- package/types/package-checks/function-metrics/analyzer/shared/clike.d.ts +101 -0
- package/types/package-checks/function-metrics/analyzer/shared/code-reader.d.ts +176 -0
- package/types/package-checks/function-metrics/analyzer/shared/golike.d.ts +39 -0
- package/types/package-checks/function-metrics/analyzer/shared/js-style-regex.d.ts +16 -0
- package/types/package-checks/function-metrics/analyzer/shared/rubylike.d.ts +40 -0
- package/types/package-checks/function-metrics/analyzer/shared/script-language.d.ts +17 -0
- package/types/package-checks/function-metrics/analyzer-adapter.d.ts +26 -0
- package/types/package-checks/function-metrics/analyzer-worker-contract.d.ts +5 -0
- package/types/package-checks/function-metrics/analyzer-worker-port.d.ts +24 -0
- package/types/package-checks/function-metrics/analyzer-worker.d.ts +1 -0
- package/types/package-checks/function-metrics/constructor.d.ts +1 -1
- package/types/package-checks/function-metrics/execution.d.ts +5 -2
- package/types/package-checks/function-metrics/finding-messages.d.ts +9 -0
- package/types/package-checks/function-metrics/finding-waiver-identity.d.ts +2 -0
- package/types/package-checks/function-metrics/measurement-model.d.ts +13 -1
- package/types/package-checks/function-metrics/measurement.d.ts +22 -7
- package/types/package-checks/function-metrics/options.d.ts +23 -10
- package/types/package-checks/function-metrics/records.d.ts +24 -5
- package/types/package-checks/function-metrics/target-files.d.ts +4 -3
- package/types/package-checks/host-environment/csv.d.ts +2 -0
- package/types/package-checks/host-environment/git.d.ts +1 -1
- package/types/package-checks/host-environment/process.d.ts +5 -0
- package/types/package-checks/json-schema-validation/final-data.d.ts +8 -0
- package/types/package-checks/json-schema-validation/options.d.ts +31 -3
- package/types/package-checks/json-validation/final-data.d.ts +5 -0
- package/types/package-checks/maintenance-reminders/final-data.d.ts +18 -0
- package/types/package-checks/markdown-link-validation/default-check.d.ts +9 -3
- package/types/package-checks/markdown-link-validation/execution.d.ts +1 -3
- package/types/package-checks/markdown-link-validation/final-data.d.ts +5 -0
- package/types/package-checks/markdown-link-validation/finding-messages.d.ts +4 -0
- package/types/package-checks/markdown-link-validation/local-resolution.d.ts +12 -6
- package/types/package-checks/markdown-link-validation/local-resolver.d.ts +2 -1
- package/types/package-checks/markdown-link-validation/options.d.ts +15 -0
- package/types/package-checks/markdown-link-validation/parse-facts-cache-payload.d.ts +24 -0
- package/types/package-checks/markdown-link-validation/parse-facts-cache.d.ts +13 -0
- package/types/package-checks/markdown-link-validation/resolver-engine.d.ts +6 -4
- package/types/package-checks/markdown-link-validation/source-reader.d.ts +11 -0
- package/types/package-checks/markdown-link-validation/unavailable-reasons.d.ts +4 -0
- package/types/package-checks/project-files/public-collection.d.ts +16 -0
- package/types/package-checks/secret-detection/classification.d.ts +12 -0
- package/types/package-checks/secret-detection/default-check.d.ts +11 -0
- package/types/package-checks/secret-detection/execution.d.ts +14 -0
- package/types/package-checks/secret-detection/final-data.d.ts +15 -0
- package/types/package-checks/secret-detection/finding-waiver-identity.d.ts +5 -0
- package/types/package-checks/secret-detection/input-preparation.d.ts +24 -0
- package/types/package-checks/secret-detection/options-resolution.d.ts +6 -0
- package/types/package-checks/secret-detection/options-validation.d.ts +3 -0
- package/types/package-checks/secret-detection/options.d.ts +32 -0
- package/types/package-checks/secret-detection/records.d.ts +35 -0
- package/types/package-checks/secret-detection/secretlint/adapter.d.ts +28 -0
- package/types/project-definition/check-tree/authoring.d.ts +11 -14
- package/types/project-definition/check-tree/check-fields-authoring.d.ts +25 -0
- package/types/project-definition/check-tree/collection-authoring.d.ts +2 -0
- package/types/project-definition/check-tree/resolution.d.ts +8 -3
- package/types/project-definition/check-tree/scheduling-authoring.d.ts +19 -0
- package/types/project-definition/declarative-snapshot.d.ts +7 -0
- package/types/project-definition/output-defaults.d.ts +7 -0
- package/types/project-definition/output-validation.d.ts +2 -1
- package/types/project-definition/progress-rendering-output.d.ts +41 -0
- package/types/project-definition/project-definition.d.ts +61 -16
- package/types/project-definition/resource-unit-mapping.d.ts +4 -0
- package/types/project-definition/scheduler-policy.d.ts +497 -0
- package/types/project-run/admission-strategy-provider/custom-strategy-preparation.d.ts +9 -0
- package/types/project-run/admission-strategy-provider/prepared-admission-strategy.d.ts +23 -0
- package/types/project-run/admission-strategy-provider/provider.d.ts +13 -0
- package/types/project-run/aggregation.d.ts +1 -1
- package/types/project-run/check-execution/callback.d.ts +5 -1
- package/types/project-run/check-execution/console-capture.d.ts +18 -0
- package/types/project-run/check-execution/dependencies.d.ts +1 -1
- package/types/project-run/check-execution/execution-finalization.d.ts +17 -7
- package/types/project-run/check-execution/execution-settlement.d.ts +5 -2
- package/types/project-run/check-execution/flag-controls.d.ts +27 -0
- package/types/project-run/check-execution/lifecycle.d.ts +20 -0
- package/types/project-run/check-execution/messages.d.ts +2 -0
- package/types/project-run/check-execution/plan.d.ts +2 -3
- package/types/project-run/check-execution/preflight.d.ts +6 -5
- package/types/project-run/check-execution/resolved-checks.d.ts +32 -38
- package/types/project-run/check-execution/resolved-execution-result.d.ts +21 -0
- package/types/project-run/{completion.d.ts → completion/completion.d.ts} +4 -4
- package/types/project-run/{machine-publication.d.ts → completion/machine-publication.d.ts} +3 -3
- package/types/project-run/completion/result-resolver.d.ts +4 -0
- package/types/project-run/controls/contract.d.ts +25 -2
- package/types/project-run/controls/outputs-override-validation.d.ts +2 -1
- package/types/project-run/controls/validation-result.d.ts +12 -4
- package/types/project-run/diagnostic-logging/logger.d.ts +34 -4
- package/types/project-run/diagnostic-logging/observation-rendering.d.ts +7 -0
- package/types/project-run/invocation/candidate.d.ts +12 -0
- package/types/project-run/{invocation-creation.d.ts → invocation/creation.d.ts} +3 -3
- package/types/project-run/invocation/paths.d.ts +40 -0
- package/types/project-run/invocation/progress.d.ts +11 -0
- package/types/project-run/invocation/run.d.ts +43 -0
- package/types/project-run/invocation/scheduler.d.ts +16 -0
- package/types/project-run/outputs/configuration.d.ts +3 -0
- package/types/project-run/outputs/status.d.ts +48 -0
- package/types/project-run/progress-rendering/presentation.d.ts +9 -5
- package/types/project-run/progress-rendering/renderer-formatting.d.ts +8 -0
- package/types/project-run/progress-rendering/renderer-lifecycle.d.ts +6 -1
- package/types/project-run/progress-rendering/renderer.d.ts +7 -1
- package/types/project-run/project-context.d.ts +2 -1
- package/types/project-run/result.d.ts +37 -3
- package/types/project-run/run.d.ts +6 -5
- package/types/project-run/task-scheduler/admission-core/compiled-graph.d.ts +31 -0
- package/types/project-run/task-scheduler/admission-core/core.d.ts +57 -0
- package/types/project-run/task-scheduler/admission-core/input.d.ts +4 -0
- package/types/project-run/task-scheduler/admission-core/projection.d.ts +22 -0
- package/types/project-run/task-scheduler/admission-core/selection-index.d.ts +61 -0
- package/types/project-run/task-scheduler/admission-core/selection-query.d.ts +28 -0
- package/types/project-run/task-scheduler/admission-core/selection-seed.d.ts +9 -0
- package/types/project-run/task-scheduler/admission-core/selection-transition.d.ts +4 -0
- package/types/project-run/task-scheduler/admission-core/selection.d.ts +20 -0
- package/types/project-run/task-scheduler/admission-scope-layers.d.ts +8 -0
- package/types/project-run/task-scheduler/admission-selection-policy.d.ts +31 -0
- package/types/project-run/task-scheduler/critical-path-ranking.d.ts +19 -0
- package/types/project-run/task-scheduler/custom-admission-policy.d.ts +6 -0
- package/types/project-run/task-scheduler/execution-state.d.ts +43 -1
- package/types/project-run/task-scheduler/forced-block-effect-replay.d.ts +9 -0
- package/types/project-run/task-scheduler/graph-validation.d.ts +3 -2
- package/types/project-run/task-scheduler/graph.d.ts +15 -0
- package/types/project-run/task-scheduler/measurement/diagnostics.d.ts +47 -0
- package/types/project-run/task-scheduler/measurement/integrals.d.ts +27 -0
- package/types/project-run/task-scheduler/measurement/policy.d.ts +10 -0
- package/types/project-run/task-scheduler/measurement/summary.d.ts +3 -0
- package/types/project-run/task-scheduler/measurement/timing.d.ts +33 -0
- package/types/project-run/task-scheduler/scheduler-admission-decision.d.ts +13 -1
- package/types/project-run/task-scheduler/scheduler-decision-inspection.d.ts +20 -19
- package/types/project-run/task-scheduler/scheduler-decision-model.d.ts +38 -22
- package/types/project-run/task-scheduler/scheduler-decision.d.ts +4 -1
- package/types/project-run/task-scheduler/scheduler-observation.d.ts +14 -0
- package/types/project-run/task-scheduler/scheduler-task-lifecycle.d.ts +18 -0
- package/types/project-run/task-scheduler/scheduler-terminal-measurement.d.ts +9 -0
- package/dist/esm/package-checks/file-metrics/scc/csv.mjs.map +0 -1
- package/dist/esm/package-checks/function-metrics/lizard/availability.mjs +0 -64
- package/dist/esm/package-checks/function-metrics/lizard/availability.mjs.map +0 -1
- package/dist/esm/package-checks/function-metrics/lizard/csv.mjs +0 -17
- package/dist/esm/package-checks/function-metrics/lizard/csv.mjs.map +0 -1
- package/dist/esm/package-checks/function-metrics/lizard/parser.mjs +0 -138
- package/dist/esm/package-checks/function-metrics/lizard/parser.mjs.map +0 -1
- package/dist/esm/package-checks/function-metrics/lizard/scanner.mjs +0 -35
- package/dist/esm/package-checks/function-metrics/lizard/scanner.mjs.map +0 -1
- package/dist/esm/package-checks/host-environment/process/command.mjs +0 -13
- package/dist/esm/package-checks/host-environment/process/command.mjs.map +0 -1
- package/dist/esm/project-run/completion.mjs.map +0 -1
- package/dist/esm/project-run/invocation-creation.mjs +0 -111
- package/dist/esm/project-run/invocation-creation.mjs.map +0 -1
- package/dist/esm/project-run/invocation.mjs.map +0 -1
- package/dist/esm/project-run/machine-publication.mjs.map +0 -1
- package/dist/esm/project-run/output-configuration.mjs.map +0 -1
- package/dist/esm/project-run/output-status.mjs +0 -43
- package/dist/esm/project-run/output-status.mjs.map +0 -1
- package/src/package-checks/function-metrics/lizard/availability.ts +0 -90
- package/src/package-checks/function-metrics/lizard/csv.ts +0 -20
- package/src/package-checks/function-metrics/lizard/parser.ts +0 -179
- package/src/package-checks/function-metrics/lizard/scanner.ts +0 -62
- package/src/package-checks/host-environment/process/command.ts +0 -21
- package/src/project-run/invocation-creation.ts +0 -160
- package/src/project-run/output-status.ts +0 -69
- package/types/package-checks/file-metrics/scc/csv.d.ts +0 -1
- package/types/package-checks/function-metrics/lizard/availability.d.ts +0 -11
- package/types/package-checks/function-metrics/lizard/csv.d.ts +0 -1
- package/types/package-checks/function-metrics/lizard/parser.d.ts +0 -17
- package/types/package-checks/function-metrics/lizard/scanner.d.ts +0 -15
- package/types/package-checks/host-environment/process/command.d.ts +0 -7
- package/types/project-run/invocation.d.ts +0 -34
- package/types/project-run/output-configuration.d.ts +0 -3
- package/types/project-run/output-status.d.ts +0 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/preflight.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CheckMessage, CheckOutcome } from \"../../check/check.ts\";\nimport type { NormalizedCheck } from \"../../project-definition/project-definition.ts\";\nimport { snapshotJsonObject } from \"../../check/options-snapshot.ts\";\nimport {\n diagnosticTags,\n summarizeDiagnosticValue,\n type DiagnosticLogger\n} from \"../diagnostic-logging/logger.ts\";\nimport { parseCheckPreflightResult, type ParsedCheckPreflightResult } from \"./preflight-result.ts\";\n\nconst EMPTY_MESSAGES: readonly CheckMessage[] = Object.freeze([]);\nconst INERT_SIGNAL = new AbortController().signal;\n\nexport type PreparedCheck = Omit<NormalizedCheck, \"options\" | \"preflight\"> &\n Readonly<{ readonly options: object; readonly preflightMessages: readonly CheckMessage[] }>;\n\ntype BlockedCheck = Pick<NormalizedCheck, \"definition\" | \"visibility\"> &\n Readonly<{ readonly preflightMessages: readonly CheckMessage[] }>;\n\nexport type ReadyCheckPreflightResolution = Readonly<{\n readonly kind: \"ready\";\n readonly check: PreparedCheck;\n}>;\n\nexport type BlockedCheckPreflightResolution = Readonly<{\n readonly kind: \"blocked\";\n readonly check: BlockedCheck;\n readonly outcome: CheckOutcome;\n}>;\n\nexport type CheckPreflightResolution =\n | ReadyCheckPreflightResolution\n | BlockedCheckPreflightResolution;\n\ntype PreflightResolutionResult =\n | \"skipped\"\n | \"prepared\"\n | \"continued\"\n | \"blocked\"\n | \"cancelled-before-callback\"\n | \"cancelled-after-callback\"\n | \"cancelled-after-throw\"\n | \"threw\"\n | \"malformed\";\n\ntype PrepareCheckInput = Readonly<{\n readonly check: NormalizedCheck;\n readonly diagnosticLogger: DiagnosticLogger | undefined;\n readonly signal: AbortSignal | undefined;\n}>;\n\ntype PreflightInvocation =\n | Readonly<{ readonly kind: \"returned\"; readonly output: unknown }>\n | Readonly<{ readonly kind: \"threw\"; readonly error: unknown }>;\n\n/** Completes the sequential invocation-wide barrier before any Check enters the Task graph. */\nexport async function prepareChecks(\n input: Readonly<{\n readonly checks: readonly NormalizedCheck[];\n readonly diagnosticLogger?: DiagnosticLogger;\n readonly signal: AbortSignal | undefined;\n }>\n): Promise<readonly CheckPreflightResolution[]> {\n const resolutions: CheckPreflightResolution[] = [];\n for (const check of input.checks) {\n resolutions.push(\n await prepareCheck({\n check,\n diagnosticLogger: input.diagnosticLogger,\n signal: input.signal\n })\n );\n }\n return Object.freeze(resolutions);\n}\n\nasync function prepareCheck(input: PrepareCheckInput): Promise<CheckPreflightResolution> {\n if (input.signal?.aborted) {\n return observeBlockedPreflight({\n check: input.check,\n diagnosticLogger: input.diagnosticLogger,\n details: {},\n result: \"cancelled-before-callback\",\n reasonCode: \"execution-cancelled\"\n });\n }\n if (input.check.preflight === undefined) {\n return resolveAuthoredOptions(input);\n }\n return resolvePreflightInvocation(input, await invokePreflight(input.check, input.signal));\n}\n\nfunction resolveAuthoredOptions(input: PrepareCheckInput): CheckPreflightResolution {\n const resolution = readyResolution({\n authoredCheck: input.check,\n messages: EMPTY_MESSAGES,\n preparedOptions: input.check.options\n });\n observeReadyOrMalformedResolution(\n input.diagnosticLogger,\n input.check.definition.checkId,\n resolution,\n \"skipped\",\n { source: \"authored\" }\n );\n return resolution;\n}\n\nfunction resolvePreflightInvocation(\n input: PrepareCheckInput,\n invocation: PreflightInvocation\n): CheckPreflightResolution {\n if (invocation.kind === \"threw\") {\n return observeBlockedPreflight({\n check: input.check,\n diagnosticLogger: input.diagnosticLogger,\n details: { error: invocation.error },\n result: input.signal?.aborted ? \"cancelled-after-throw\" : \"threw\",\n reasonCode: input.signal?.aborted ? \"execution-cancelled\" : \"preflight-threw\"\n });\n }\n return resolveReturnedPreflight(input, invocation.output);\n}\n\nfunction resolveReturnedPreflight(\n input: PrepareCheckInput,\n preflightOutput: unknown\n): CheckPreflightResolution {\n if (input.signal?.aborted) {\n return observeBlockedPreflight({\n check: input.check,\n diagnosticLogger: input.diagnosticLogger,\n details: { raw: preflightOutput },\n result: \"cancelled-after-callback\",\n reasonCode: \"execution-cancelled\"\n });\n }\n const preflightResult = parseCheckPreflightResult(preflightOutput);\n if (preflightResult === undefined) {\n return observeBlockedPreflight({\n check: input.check,\n diagnosticLogger: input.diagnosticLogger,\n details: { raw: preflightOutput },\n result: \"malformed\",\n reasonCode: \"invalid-preflight-result\"\n });\n }\n if (preflightResult.status === \"failure\" && preflightResult.action === \"block\") {\n return resolveBlockedPreflightResult(input, preflightResult);\n }\n return resolveReadyPreflightResult(input, preflightOutput, preflightResult);\n}\n\nfunction resolveBlockedPreflightResult(\n input: PrepareCheckInput,\n preflightResult: Extract<ParsedCheckPreflightResult, { readonly action: \"block\" }>\n): CheckPreflightResolution {\n const resolution = blockedResolution({\n check: input.check,\n messages: preflightResult.messages,\n reasonCode: preflightResult.reason.code\n });\n observePreflightResolution(\n input.diagnosticLogger,\n input.check.definition.checkId,\n resolution,\n \"blocked\",\n {\n ...(preflightResult.messages.length === 0 ? {} : { messages: preflightResult.messages }),\n reason: preflightResult.reason\n }\n );\n return resolution;\n}\n\nfunction resolveReadyPreflightResult(\n input: PrepareCheckInput,\n preflightOutput: unknown,\n preflightResult: Exclude<ParsedCheckPreflightResult, { readonly action: \"block\" }>\n): CheckPreflightResolution {\n const checkId = input.check.definition.checkId;\n const result = preflightResult.status === \"success\" ? \"prepared\" : \"continued\";\n const resolution = readyResolution({\n authoredCheck: input.check,\n messages: preflightResult.messages,\n preparedOptions:\n preflightResult.status === \"success\"\n ? preflightResult.preparedOptions\n : preflightResult.fallback\n });\n observeReadyOrMalformedResolution(input.diagnosticLogger, checkId, resolution, result, {\n messages: preflightResult.messages,\n ...(preflightResult.status === \"success\" ? {} : { reason: preflightResult.reason }),\n raw: preflightOutput\n });\n return resolution;\n}\n\nasync function invokePreflight(\n check: NormalizedCheck,\n signal: AbortSignal | undefined\n): Promise<PreflightInvocation> {\n try {\n return Object.freeze({\n kind: \"returned\",\n output: await check.preflight!(check.options, signal ?? INERT_SIGNAL)\n });\n } catch (error) {\n return Object.freeze({ kind: \"threw\", error });\n }\n}\n\nfunction observeBlockedPreflight(\n input: Readonly<{\n readonly check: NormalizedCheck;\n readonly diagnosticLogger: DiagnosticLogger | undefined;\n readonly details: Readonly<Record<string, unknown>>;\n readonly result: PreflightResolutionResult;\n readonly reasonCode: string;\n }>\n): BlockedCheckPreflightResolution {\n const resolution = blockedResolution({\n check: input.check,\n messages: EMPTY_MESSAGES,\n reasonCode: input.reasonCode\n });\n observePreflightResolution(\n input.diagnosticLogger,\n input.check.definition.checkId,\n resolution,\n input.result,\n input.details\n );\n return resolution;\n}\n\nfunction observeReadyOrMalformedResolution(\n diagnosticLogger: DiagnosticLogger | undefined,\n checkId: string,\n resolution: CheckPreflightResolution,\n result: \"skipped\" | \"prepared\" | \"continued\",\n details: Readonly<Record<string, unknown>>\n): void {\n if (resolution.kind === \"blocked\") {\n observePreflightResolution(diagnosticLogger, checkId, resolution, \"malformed\", {\n raw: \"raw\" in details ? details.raw : summarizeDiagnosticValue(details)\n });\n return;\n }\n const messages = \"messages\" in details ? details.messages : EMPTY_MESSAGES;\n observePreflightResolution(diagnosticLogger, checkId, resolution, result, {\n ...(Array.isArray(messages) && messages.length > 0 ? { messages } : {}),\n options: summarizeDiagnosticValue(resolution.check.options),\n ...(\"reason\" in details ? { reason: details.reason } : {}),\n ...(\"source\" in details ? { source: details.source } : {})\n });\n}\n\nfunction observePreflightResolution(\n diagnosticLogger: DiagnosticLogger | undefined,\n checkId: string,\n resolution: CheckPreflightResolution,\n result: PreflightResolutionResult,\n details: Readonly<Record<string, unknown>>\n): void {\n diagnosticLogger?.observe({\n event: \"preflight.resolved\",\n tags: diagnosticTags(`CHECK:${checkId}`, \"PREFLIGHT\", result.toUpperCase()),\n details: {\n ...details,\n ...(resolution.kind === \"blocked\" ? { outcome: resolution.outcome } : {})\n }\n });\n}\n\nfunction readyResolution(\n input: Readonly<{\n readonly authoredCheck: NormalizedCheck;\n readonly messages: readonly CheckMessage[];\n readonly preparedOptions: unknown;\n }>\n): CheckPreflightResolution {\n const preparedOptions = snapshotJsonObject(input.preparedOptions);\n if (preparedOptions === undefined) {\n return blockedResolution({\n check: input.authoredCheck,\n messages: EMPTY_MESSAGES,\n reasonCode: \"invalid-preflight-result\"\n });\n }\n const { preflight: _preflight, ...check } = input.authoredCheck;\n return Object.freeze({\n kind: \"ready\",\n check: Object.freeze({\n ...check,\n options: preparedOptions,\n preflightMessages: input.messages\n })\n });\n}\n\nfunction blockedResolution(\n input: Readonly<{\n readonly check: NormalizedCheck;\n readonly messages: readonly CheckMessage[];\n readonly reasonCode: string;\n }>\n): BlockedCheckPreflightResolution {\n return Object.freeze({\n kind: \"blocked\",\n check: Object.freeze({\n definition: input.check.definition,\n preflightMessages: input.messages,\n visibility: input.check.visibility\n }),\n outcome: Object.freeze({\n status: \"unavailable\",\n reason: Object.freeze({ code: input.reasonCode })\n })\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"preflight.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/preflight.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EACL,cAAc,EACd,wBAAwB,EAEzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAmC,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,cAAc,GAA4B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAClE,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC;AA0ClD,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAwB;IACzD,IAAI,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QAC1B,OAAO,uBAAuB,CAAC;YAC7B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;YACxC,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,2BAA2B;YACnC,UAAU,EAAE,qBAAqB;SAClC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,0BAA0B,CAAC,KAAK,EAAE,MAAM,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAwB;IACtD,MAAM,UAAU,GAAG,eAAe,CAAC;QACjC,aAAa,EAAE,KAAK,CAAC,KAAK;QAC1B,QAAQ,EAAE,cAAc;QACxB,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO;KACrC,CAAC,CAAC;IACH,iCAAiC,CAC/B,KAAK,CAAC,gBAAgB,EACtB,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAC9B,UAAU,EACV,SAAS,EACT,EAAE,MAAM,EAAE,UAAU,EAAE,CACvB,CAAC;IACF,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,0BAA0B,CACjC,KAAwB,EACxB,UAA+B;IAE/B,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAChC,OAAO,uBAAuB,CAAC;YAC7B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;YACxC,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE;YACpC,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO;YACjE,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,iBAAiB;SAC9E,CAAC,CAAC;IACL,CAAC;IACD,OAAO,wBAAwB,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAAwB,EACxB,eAAwB,EACxB,eAAwC;IAExC,IAAI,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QAC1B,OAAO,uBAAuB,CAAC;YAC7B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;YACxC,OAAO,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE;YACjC,QAAQ,EAAE,eAAe;YACzB,MAAM,EAAE,0BAA0B;YAClC,UAAU,EAAE,qBAAqB;SAClC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,eAAe,GAAG,yBAAyB,CAAC,eAAe,CAAC,CAAC;IACnE,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,uBAAuB,CAAC;YAC7B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;YACxC,OAAO,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE;YACjC,QAAQ,EAAE,eAAe;YACzB,MAAM,EAAE,WAAW;YACnB,UAAU,EAAE,0BAA0B;SACvC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,eAAe,CAAC,MAAM,KAAK,SAAS,IAAI,eAAe,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC/E,OAAO,6BAA6B,CAAC,KAAK,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,2BAA2B,CAAC,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,6BAA6B,CACpC,KAAwB,EACxB,eAAkF,EAClF,eAAwC;IAExC,MAAM,UAAU,GAAG,iBAAiB,CAAC;QACnC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,oBAAoB,CAAC,eAAe,EAAE,eAAe,CAAC,QAAQ,CAAC;QACzE,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI;KACxC,CAAC,CAAC;IACH,0BAA0B,CACxB,KAAK,CAAC,gBAAgB,EACtB,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAC9B,UAAU,EACV,SAAS,EACT;QACE,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAe,CAAC,QAAQ,EAAE,CAAC;QACxF,MAAM,EAAE,eAAe,CAAC,MAAM;KAC/B,CACF,CAAC;IACF,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,2BAA2B,CAClC,KAAwB,EACxB,eAAwB,EACxB,eAAkF,EAClF,eAAwC;IAExC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;IAC/C,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;IAC/E,MAAM,UAAU,GAAG,eAAe,CAAC;QACjC,aAAa,EAAE,KAAK,CAAC,KAAK;QAC1B,QAAQ,EAAE,oBAAoB,CAAC,eAAe,EAAE,eAAe,CAAC,QAAQ,CAAC;QACzE,eAAe,EACb,eAAe,CAAC,MAAM,KAAK,SAAS;YAClC,CAAC,CAAC,eAAe,CAAC,eAAe;YACjC,CAAC,CAAC,eAAe,CAAC,QAAQ;KAC/B,CAAC,CAAC;IACH,iCAAiC,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE;QACrF,QAAQ,EAAE,eAAe,CAAC,QAAQ;QAClC,GAAG,CAAC,eAAe,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC;QACnF,GAAG,EAAE,eAAe;KACrB,CAAC,CAAC;IACH,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,KAAsB,EACtB,MAA+B;IAE/B,OAAO,yBAAyB,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,SAAU,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,YAAY,CAAC,CAAC,CAAC;AAClG,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAOE;IAEF,MAAM,UAAU,GAAG,iBAAiB,CAAC;QACnC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,cAAc;QAC1C,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC,CAAC;IACH,0BAA0B,CACxB,KAAK,CAAC,gBAAgB,EACtB,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAC9B,UAAU,EACV,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,OAAO,CACd,CAAC;IACF,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,iCAAiC,CACxC,gBAA8C,EAC9C,OAAe,EACf,UAAoC,EACpC,MAA4C,EAC5C,OAA0C;IAE1C,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAClC,0BAA0B,CAAC,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE;YAC7E,GAAG,EAAE,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB,CAAC,OAAO,CAAC;SACxE,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC;IAC3E,0BAA0B,CAAC,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE;QACxE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,OAAO,EAAE,wBAAwB,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;QAC3D,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3D,CAAC,CAAC;AACL,CAAC;AAED,SAAS,0BAA0B,CACjC,gBAA8C,EAC9C,OAAe,EACf,UAAoC,EACpC,MAAiC,EACjC,OAA0C;IAE1C,gBAAgB,EAAE,OAAO,CAAC;QACxB,KAAK,EAAE,oBAAoB;QAC3B,IAAI,EAAE,cAAc,CAAC,SAAS,OAAO,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;QAC3E,OAAO,EAAE;YACP,GAAG,OAAO;YACV,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1E;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CACtB,KAIE;IAEF,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAClE,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,iBAAiB,CAAC;YACvB,KAAK,EAAE,KAAK,CAAC,aAAa;YAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,UAAU,EAAE,0BAA0B;SACvC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC;IAChE,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;YACnB,GAAG,KAAK;YACR,OAAO,EAAE,eAAe;YACxB,iBAAiB,EAAE,KAAK,CAAC,QAAQ;SAClC,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CACxB,KAIE;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;YACnB,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU;YAClC,iBAAiB,EAAE,KAAK,CAAC,QAAQ;YACjC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU;SACnC,CAAC;QACF,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;YACrB,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;SAClD,CAAC;KACH,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { CheckMessage, CheckOutcome } from \"../../check/check.ts\";\nimport type { NormalizedCheck } from \"../../project-definition/project-definition.ts\";\nimport { snapshotJsonObject } from \"../../check/options-snapshot.ts\";\nimport {\n diagnosticTags,\n summarizeDiagnosticValue,\n type DiagnosticLogger\n} from \"../diagnostic-logging/logger.ts\";\nimport { parseCheckPreflightResult, type ParsedCheckPreflightResult } from \"./preflight-result.ts\";\nimport { invokeWithCapturedConsole } from \"./console-capture.ts\";\nimport { combineCheckMessages } from \"./messages.ts\";\n\nconst EMPTY_MESSAGES: readonly CheckMessage[] = Object.freeze([]);\nconst INERT_SIGNAL = new AbortController().signal;\n\nexport type PreparedCheck = Omit<NormalizedCheck, \"options\" | \"preflight\"> &\n Readonly<{ readonly options: object; readonly preflightMessages: readonly CheckMessage[] }>;\n\ntype BlockedCheck = Pick<NormalizedCheck, \"definition\" | \"visibility\"> &\n Readonly<{ readonly preflightMessages: readonly CheckMessage[] }>;\n\nexport type ReadyCheckPreflightResolution = Readonly<{\n readonly kind: \"ready\";\n readonly check: PreparedCheck;\n}>;\n\nexport type BlockedCheckPreflightResolution = Readonly<{\n readonly kind: \"blocked\";\n readonly check: BlockedCheck;\n readonly outcome: CheckOutcome;\n}>;\n\nexport type CheckPreflightResolution =\n | ReadyCheckPreflightResolution\n | BlockedCheckPreflightResolution;\n\ntype PreflightResolutionResult =\n | \"skipped\"\n | \"prepared\"\n | \"continued\"\n | \"blocked\"\n | \"cancelled-before-callback\"\n | \"cancelled-after-callback\"\n | \"cancelled-after-throw\"\n | \"threw\"\n | \"malformed\";\n\ntype PrepareCheckInput = Readonly<{\n readonly check: NormalizedCheck;\n readonly diagnosticLogger: DiagnosticLogger | undefined;\n readonly signal: AbortSignal | undefined;\n}>;\n\ntype PreflightInvocation = Awaited<ReturnType<typeof invokeWithCapturedConsole<unknown>>>;\n\n/** Resolves one Check's task-local preparation after Scheduler admission. */\nexport async function prepareCheck(input: PrepareCheckInput): Promise<CheckPreflightResolution> {\n if (input.signal?.aborted) {\n return observeBlockedPreflight({\n check: input.check,\n diagnosticLogger: input.diagnosticLogger,\n details: {},\n result: \"cancelled-before-callback\",\n reasonCode: \"execution-cancelled\"\n });\n }\n if (input.check.preflight === undefined) {\n return resolveAuthoredOptions(input);\n }\n return resolvePreflightInvocation(input, await invokePreflight(input.check, input.signal));\n}\n\nfunction resolveAuthoredOptions(input: PrepareCheckInput): CheckPreflightResolution {\n const resolution = readyResolution({\n authoredCheck: input.check,\n messages: EMPTY_MESSAGES,\n preparedOptions: input.check.options\n });\n observeReadyOrMalformedResolution(\n input.diagnosticLogger,\n input.check.definition.checkId,\n resolution,\n \"skipped\",\n { source: \"authored\" }\n );\n return resolution;\n}\n\nfunction resolvePreflightInvocation(\n input: PrepareCheckInput,\n invocation: PreflightInvocation\n): CheckPreflightResolution {\n if (invocation.kind === \"threw\") {\n return observeBlockedPreflight({\n check: input.check,\n diagnosticLogger: input.diagnosticLogger,\n details: { error: invocation.error },\n messages: invocation.messages,\n result: input.signal?.aborted ? \"cancelled-after-throw\" : \"threw\",\n reasonCode: input.signal?.aborted ? \"execution-cancelled\" : \"preflight-threw\"\n });\n }\n return resolveReturnedPreflight(input, invocation.output, invocation.messages);\n}\n\nfunction resolveReturnedPreflight(\n input: PrepareCheckInput,\n preflightOutput: unknown,\n consoleMessages: readonly CheckMessage[]\n): CheckPreflightResolution {\n if (input.signal?.aborted) {\n return observeBlockedPreflight({\n check: input.check,\n diagnosticLogger: input.diagnosticLogger,\n details: { raw: preflightOutput },\n messages: consoleMessages,\n result: \"cancelled-after-callback\",\n reasonCode: \"execution-cancelled\"\n });\n }\n const preflightResult = parseCheckPreflightResult(preflightOutput);\n if (preflightResult === undefined) {\n return observeBlockedPreflight({\n check: input.check,\n diagnosticLogger: input.diagnosticLogger,\n details: { raw: preflightOutput },\n messages: consoleMessages,\n result: \"malformed\",\n reasonCode: \"invalid-preflight-result\"\n });\n }\n if (preflightResult.status === \"failure\" && preflightResult.action === \"block\") {\n return resolveBlockedPreflightResult(input, preflightResult, consoleMessages);\n }\n return resolveReadyPreflightResult(input, preflightOutput, preflightResult, consoleMessages);\n}\n\nfunction resolveBlockedPreflightResult(\n input: PrepareCheckInput,\n preflightResult: Extract<ParsedCheckPreflightResult, { readonly action: \"block\" }>,\n consoleMessages: readonly CheckMessage[]\n): CheckPreflightResolution {\n const resolution = blockedResolution({\n check: input.check,\n messages: combineCheckMessages(consoleMessages, preflightResult.messages),\n reasonCode: preflightResult.reason.code\n });\n observePreflightResolution(\n input.diagnosticLogger,\n input.check.definition.checkId,\n resolution,\n \"blocked\",\n {\n ...(preflightResult.messages.length === 0 ? {} : { messages: preflightResult.messages }),\n reason: preflightResult.reason\n }\n );\n return resolution;\n}\n\nfunction resolveReadyPreflightResult(\n input: PrepareCheckInput,\n preflightOutput: unknown,\n preflightResult: Exclude<ParsedCheckPreflightResult, { readonly action: \"block\" }>,\n consoleMessages: readonly CheckMessage[]\n): CheckPreflightResolution {\n const checkId = input.check.definition.checkId;\n const result = preflightResult.status === \"success\" ? \"prepared\" : \"continued\";\n const resolution = readyResolution({\n authoredCheck: input.check,\n messages: combineCheckMessages(consoleMessages, preflightResult.messages),\n preparedOptions:\n preflightResult.status === \"success\"\n ? preflightResult.preparedOptions\n : preflightResult.fallback\n });\n observeReadyOrMalformedResolution(input.diagnosticLogger, checkId, resolution, result, {\n messages: preflightResult.messages,\n ...(preflightResult.status === \"success\" ? {} : { reason: preflightResult.reason }),\n raw: preflightOutput\n });\n return resolution;\n}\n\nasync function invokePreflight(\n check: NormalizedCheck,\n signal: AbortSignal | undefined\n): Promise<PreflightInvocation> {\n return invokeWithCapturedConsole(() => check.preflight!(check.options, signal ?? INERT_SIGNAL));\n}\n\nfunction observeBlockedPreflight(\n input: Readonly<{\n readonly check: NormalizedCheck;\n readonly diagnosticLogger: DiagnosticLogger | undefined;\n readonly details: Readonly<Record<string, unknown>>;\n readonly messages?: readonly CheckMessage[];\n readonly result: PreflightResolutionResult;\n readonly reasonCode: string;\n }>\n): BlockedCheckPreflightResolution {\n const resolution = blockedResolution({\n check: input.check,\n messages: input.messages ?? EMPTY_MESSAGES,\n reasonCode: input.reasonCode\n });\n observePreflightResolution(\n input.diagnosticLogger,\n input.check.definition.checkId,\n resolution,\n input.result,\n input.details\n );\n return resolution;\n}\n\nfunction observeReadyOrMalformedResolution(\n diagnosticLogger: DiagnosticLogger | undefined,\n checkId: string,\n resolution: CheckPreflightResolution,\n result: \"skipped\" | \"prepared\" | \"continued\",\n details: Readonly<Record<string, unknown>>\n): void {\n if (resolution.kind === \"blocked\") {\n observePreflightResolution(diagnosticLogger, checkId, resolution, \"malformed\", {\n raw: \"raw\" in details ? details.raw : summarizeDiagnosticValue(details)\n });\n return;\n }\n const messages = \"messages\" in details ? details.messages : EMPTY_MESSAGES;\n observePreflightResolution(diagnosticLogger, checkId, resolution, result, {\n ...(Array.isArray(messages) && messages.length > 0 ? { messages } : {}),\n options: summarizeDiagnosticValue(resolution.check.options),\n ...(\"reason\" in details ? { reason: details.reason } : {}),\n ...(\"source\" in details ? { source: details.source } : {})\n });\n}\n\nfunction observePreflightResolution(\n diagnosticLogger: DiagnosticLogger | undefined,\n checkId: string,\n resolution: CheckPreflightResolution,\n result: PreflightResolutionResult,\n details: Readonly<Record<string, unknown>>\n): void {\n diagnosticLogger?.observe({\n event: \"preflight.resolved\",\n tags: diagnosticTags(`CHECK:${checkId}`, \"PREFLIGHT\", result.toUpperCase()),\n details: {\n ...details,\n ...(resolution.kind === \"blocked\" ? { outcome: resolution.outcome } : {})\n }\n });\n}\n\nfunction readyResolution(\n input: Readonly<{\n readonly authoredCheck: NormalizedCheck;\n readonly messages: readonly CheckMessage[];\n readonly preparedOptions: unknown;\n }>\n): CheckPreflightResolution {\n const preparedOptions = snapshotJsonObject(input.preparedOptions);\n if (preparedOptions === undefined) {\n return blockedResolution({\n check: input.authoredCheck,\n messages: input.messages,\n reasonCode: \"invalid-preflight-result\"\n });\n }\n const { preflight: _preflight, ...check } = input.authoredCheck;\n return Object.freeze({\n kind: \"ready\",\n check: Object.freeze({\n ...check,\n options: preparedOptions,\n preflightMessages: input.messages\n })\n });\n}\n\nfunction blockedResolution(\n input: Readonly<{\n readonly check: NormalizedCheck;\n readonly messages: readonly CheckMessage[];\n readonly reasonCode: string;\n }>\n): BlockedCheckPreflightResolution {\n return Object.freeze({\n kind: \"blocked\",\n check: Object.freeze({\n definition: input.check.definition,\n preflightMessages: input.messages,\n visibility: input.check.visibility\n }),\n outcome: Object.freeze({\n status: \"unavailable\",\n reason: Object.freeze({ code: input.reasonCode })\n })\n });\n}\n"]}
|
|
@@ -3,48 +3,82 @@ import { diagnosticTags, summarizeDiagnosticValue } from "../diagnostic-logging/
|
|
|
3
3
|
import { prepareTaskGraph } from "../task-scheduler/graph.mjs";
|
|
4
4
|
import { runTaskGraph } from "../task-scheduler/scheduler.mjs";
|
|
5
5
|
import { executeCheckCallback } from "./callback.mjs";
|
|
6
|
+
import { artifactDirectoryForCheck } from "../invocation/paths.mjs";
|
|
7
|
+
import { runWithCheckConsoleRouter } from "./console-capture.mjs";
|
|
6
8
|
import { createCheckDependencies } from "./dependencies.mjs";
|
|
7
9
|
import { CheckExecutionInvariantFailure, recordSettledCheck, settleCallback } from "./execution-settlement.mjs";
|
|
8
|
-
import { checkIdentity,
|
|
10
|
+
import { checkIdentity, closeResolvedChecks, settleBlockedDependent, trustedFailure } from "./execution-finalization.mjs";
|
|
9
11
|
import { planStaticCheckGraph } from "./plan.mjs";
|
|
10
|
-
import {
|
|
12
|
+
import { selectEffectiveCheckIds, resolveFlagControlSettlements } from "./flag-controls.mjs";
|
|
13
|
+
import { prepareCheck } from "./preflight.mjs";
|
|
11
14
|
const INERT_SIGNAL = new AbortController().signal;
|
|
12
|
-
const
|
|
15
|
+
const NO_CHECK_MESSAGES = Object.freeze([]);
|
|
16
|
+
const DIRECT_EXECUTION_INVOCATION_ID = "invocation/v1:direct-check-execution";
|
|
17
|
+
const SYSTEM_MONOTONIC_CLOCK = Object.freeze({
|
|
18
|
+
now: () => performance.now()
|
|
19
|
+
});
|
|
13
20
|
/**
|
|
14
21
|
* Runs the already normalized executable Check collection through one generic
|
|
15
22
|
* Task per Check. Graph validation happens before Core scopes or callbacks.
|
|
16
23
|
*/
|
|
17
24
|
export async function executeResolvedChecks(input) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
prepareTaskGraph(planStaticCheckGraph(input.checks, input.resourceCapacities), input.maxParallel);
|
|
26
|
+
const effectiveCheckIds = selectEffectiveCheckIds(input.checks, input.project.flags);
|
|
27
|
+
return runWithCheckConsoleRouter(() => executePreparedResolvedChecks(input, effectiveCheckIds));
|
|
28
|
+
}
|
|
29
|
+
async function executePreparedResolvedChecks(input, effectiveCheckIds) {
|
|
30
|
+
const state = createExecutionState({
|
|
31
|
+
checks: input.checks,
|
|
32
|
+
diagnosticLogger: input.diagnosticLogger,
|
|
33
|
+
lifecycle: input.lifecycle
|
|
34
|
+
});
|
|
35
|
+
const flagControlSettlements = resolveFlagControlSettlements({
|
|
36
|
+
checks: input.checks,
|
|
37
|
+
diagnosticLogger: input.diagnosticLogger,
|
|
38
|
+
effectiveCheckIds,
|
|
39
|
+
signal: input.signal
|
|
31
40
|
});
|
|
41
|
+
for (const settlement of flagControlSettlements) {
|
|
42
|
+
settleFlagControlOutcome(state, settlement);
|
|
43
|
+
}
|
|
44
|
+
input.lifecycle?.flagControlCompleted();
|
|
45
|
+
const checksByCheckId = new Map(input.checks.map((check) => [check.definition.checkId, check]));
|
|
32
46
|
let graphRun;
|
|
33
47
|
try {
|
|
34
48
|
graphRun = await runTaskGraph({
|
|
35
|
-
graph,
|
|
49
|
+
graph: planStaticCheckGraph(input.checks, input.resourceCapacities),
|
|
50
|
+
admissionPolicy: input.admissionPolicy,
|
|
36
51
|
maxParallel: input.maxParallel,
|
|
37
|
-
diagnosticLogger: input.diagnosticLogger,
|
|
52
|
+
diagnosticLogger: input.schedulerDiagnosticLogger ?? input.diagnosticLogger,
|
|
53
|
+
performanceDiagnostics: input.schedulerPerformanceDiagnostics,
|
|
54
|
+
measurementHooks: input.schedulerMeasurementHooks,
|
|
55
|
+
onMeasurementHookFailure: input.onSchedulerMeasurementHookFailure,
|
|
56
|
+
onMeasurementHooksSettled: input.onSchedulerMeasurementHooksSettled,
|
|
57
|
+
preAdmissionTaskResults: Object.freeze(flagControlSettlements.map((settlement) => Object.freeze({
|
|
58
|
+
taskId: settlement.check.definition.checkId,
|
|
59
|
+
value: false
|
|
60
|
+
}))),
|
|
38
61
|
signal: input.signal,
|
|
62
|
+
isPrerequisiteSatisfied: (satisfied) => satisfied,
|
|
63
|
+
onTaskBlocked: (task, dependencyIds) => {
|
|
64
|
+
const check = checksByCheckId.get(task.id);
|
|
65
|
+
if (check === undefined) {
|
|
66
|
+
throw new CheckExecutionInvariantFailure("Blocked Task has no normalized Check");
|
|
67
|
+
}
|
|
68
|
+
settleBlockedDependent({ check, dependencyIds, state });
|
|
69
|
+
},
|
|
39
70
|
execute: (task, context) => {
|
|
40
|
-
const
|
|
41
|
-
if (
|
|
42
|
-
throw new CheckExecutionInvariantFailure("Task graph has no
|
|
71
|
+
const check = checksByCheckId.get(task.id);
|
|
72
|
+
if (check === undefined) {
|
|
73
|
+
throw new CheckExecutionInvariantFailure("Task graph has no normalized Check");
|
|
43
74
|
}
|
|
44
|
-
return
|
|
45
|
-
...
|
|
46
|
-
|
|
75
|
+
return executeAdmittedCheck({
|
|
76
|
+
...state,
|
|
77
|
+
check,
|
|
47
78
|
clock: input.clock ?? SYSTEM_MONOTONIC_CLOCK,
|
|
79
|
+
onAdmittedCheck: input.onAdmittedCheck,
|
|
80
|
+
invocationId: input.invocationId ?? DIRECT_EXECUTION_INVOCATION_ID,
|
|
81
|
+
paths: input.paths,
|
|
48
82
|
project: input.project,
|
|
49
83
|
signal: context.signal ?? INERT_SIGNAL
|
|
50
84
|
});
|
|
@@ -56,25 +90,10 @@ export async function executeResolvedChecks(input) {
|
|
|
56
90
|
}
|
|
57
91
|
return closeResolvedChecks({
|
|
58
92
|
allChecks: input.checks,
|
|
93
|
+
effectiveCheckIds,
|
|
59
94
|
graphRun,
|
|
60
|
-
|
|
61
|
-
state: prepared.state
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
async function prepareResolvedCheckExecution(input) {
|
|
65
|
-
prepareTaskGraph(planStaticCheckGraph(input.checks), input.maxParallel);
|
|
66
|
-
const preflights = await prepareChecks({
|
|
67
|
-
checks: input.checks,
|
|
68
|
-
diagnosticLogger: input.diagnosticLogger,
|
|
69
|
-
signal: input.signal
|
|
70
|
-
});
|
|
71
|
-
const state = createExecutionState({
|
|
72
|
-
checks: input.checks,
|
|
73
|
-
diagnosticLogger: input.diagnosticLogger,
|
|
74
|
-
lifecycle: input.lifecycle
|
|
95
|
+
state
|
|
75
96
|
});
|
|
76
|
-
const partition = settlePreflightResolutions(state, preflights);
|
|
77
|
-
return Object.freeze({ ...partition, state });
|
|
78
97
|
}
|
|
79
98
|
function createExecutionState(input) {
|
|
80
99
|
return {
|
|
@@ -84,21 +103,16 @@ function createExecutionState(input) {
|
|
|
84
103
|
session: createCoreCheckSession(input.checks.map(({ definition }) => Object.freeze({ definition })))
|
|
85
104
|
};
|
|
86
105
|
}
|
|
87
|
-
function
|
|
88
|
-
const
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
return Object.freeze({
|
|
99
|
-
blockedCheckIds,
|
|
100
|
-
readyChecks: Object.freeze(readyPreflights.map((preflight) => preflight.check)),
|
|
101
|
-
readyPreflights: Object.freeze(readyPreflights)
|
|
106
|
+
function settleFlagControlOutcome(state, settlement) {
|
|
107
|
+
const scope = state.session.openCheckScope(settlement.check.definition.checkId);
|
|
108
|
+
const outcome = scope.settleProduct(settlement.outcome);
|
|
109
|
+
recordSettledCheck({
|
|
110
|
+
check: checkIdentity(settlement.check),
|
|
111
|
+
durationMs: null,
|
|
112
|
+
messages: NO_CHECK_MESSAGES,
|
|
113
|
+
outcome,
|
|
114
|
+
phase: "control",
|
|
115
|
+
state
|
|
102
116
|
});
|
|
103
117
|
}
|
|
104
118
|
function settleBlockedPreflight(state, preflight) {
|
|
@@ -113,7 +127,29 @@ function settleBlockedPreflight(state, preflight) {
|
|
|
113
127
|
state
|
|
114
128
|
});
|
|
115
129
|
}
|
|
116
|
-
async function
|
|
130
|
+
async function executeAdmittedCheck(input) {
|
|
131
|
+
observeAdmittedCheck(input);
|
|
132
|
+
const preflight = await prepareCheck({
|
|
133
|
+
check: input.check,
|
|
134
|
+
diagnosticLogger: input.diagnosticLogger,
|
|
135
|
+
signal: input.signal
|
|
136
|
+
});
|
|
137
|
+
if (preflight.kind === "blocked") {
|
|
138
|
+
settleBlockedPreflight(input, preflight);
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
return executeReadyCheck({ ...input, preflight });
|
|
142
|
+
}
|
|
143
|
+
/** Diagnostic observation belongs to the invocation; it cannot revise admitted Task facts. */
|
|
144
|
+
function observeAdmittedCheck(input) {
|
|
145
|
+
try {
|
|
146
|
+
input.onAdmittedCheck?.(input.check);
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
// Learned diagnostic output is best-effort and has no execution consequence.
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
async function executeReadyCheck(input) {
|
|
117
153
|
const check = input.preflight.check;
|
|
118
154
|
const checkId = check.definition.checkId;
|
|
119
155
|
const scope = input.session.openCheckScope(checkId);
|
|
@@ -130,14 +166,16 @@ async function executeCheck(input) {
|
|
|
130
166
|
emitStarted(input.lifecycle, identity);
|
|
131
167
|
const startedAt = input.clock.now();
|
|
132
168
|
const callback = await executeCheckCallback({
|
|
169
|
+
artifactDirectory: input.paths === undefined ? null : artifactDirectoryForCheck(input.paths, checkId),
|
|
133
170
|
check,
|
|
134
171
|
dependencies: createCheckDependencies({
|
|
135
172
|
checkId,
|
|
136
173
|
diagnosticLogger: input.diagnosticLogger,
|
|
137
|
-
|
|
174
|
+
directRelationCheckIds: directRelationCheckIds(check),
|
|
138
175
|
session: input.session
|
|
139
176
|
}),
|
|
140
177
|
diagnosticLogger: input.diagnosticLogger,
|
|
178
|
+
invocationId: input.invocationId,
|
|
141
179
|
project: input.project,
|
|
142
180
|
scope,
|
|
143
181
|
signal: input.signal
|
|
@@ -157,6 +195,10 @@ async function executeCheck(input) {
|
|
|
157
195
|
phase: "execution",
|
|
158
196
|
state: input
|
|
159
197
|
});
|
|
198
|
+
return settled.outcome.status === "passed";
|
|
199
|
+
}
|
|
200
|
+
function directRelationCheckIds(check) {
|
|
201
|
+
return Object.freeze([...new Set([...check.dependsOn, ...check.observes])].sort());
|
|
160
202
|
}
|
|
161
203
|
function emitStarted(lifecycle, check) {
|
|
162
204
|
lifecycle?.started(Object.freeze({ checkId: check.checkId, displayName: check.displayName }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolved-checks.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/resolved-checks.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n CheckMessage,\n CheckOutcome,\n CheckProjectContext,\n CheckVisibility\n} from \"../../check/check.ts\";\nimport type { NormalizedCheck } from \"../../project-definition/project-definition.ts\";\nimport { createCoreCheckSession, type CoreCheckSession } from \"../../check-settlement/session.ts\";\nimport {\n diagnosticTags,\n summarizeDiagnosticValue,\n type DiagnosticLogger\n} from \"../diagnostic-logging/logger.ts\";\nimport { prepareTaskGraph } from \"../task-scheduler/graph.ts\";\nimport { runTaskGraph } from \"../task-scheduler/scheduler.ts\";\nimport { executeCheckCallback } from \"./callback.ts\";\nimport { createCheckDependencies } from \"./dependencies.ts\";\nimport {\n CheckExecutionInvariantFailure,\n recordSettledCheck,\n settleCallback,\n type CheckExecutionSettlementState,\n type CheckIdentity,\n type SettledCheckFacts\n} from \"./execution-settlement.ts\";\nimport {\n checkIdentity,\n closeCancelledExecution,\n closeResolvedChecks,\n trustedFailure\n} from \"./execution-finalization.ts\";\nimport { planStaticCheckGraph } from \"./plan.ts\";\nimport {\n prepareChecks,\n type CheckPreflightResolution,\n type PreparedCheck,\n type ReadyCheckPreflightResolution\n} from \"./preflight.ts\";\n\nconst INERT_SIGNAL = new AbortController().signal;\nconst SYSTEM_MONOTONIC_CLOCK: CheckExecutionClock = Object.freeze({ now: () => performance.now() });\n\n/** Private Run handoff for Check lifecycle presentation and accounting. */\nexport type CheckExecutionLifecycle = Readonly<{\n readonly started: (fact: CheckStartedFact) => void;\n readonly settled: (fact: CheckSettledFact) => void;\n}>;\n\n/** Package-private monotonic clock seam for execution accounting. */\nexport type CheckExecutionClock = Readonly<{ now(): number }>;\n\nexport type CheckStartedFact = Readonly<{ checkId: string; displayName: string }>;\n\nexport type CheckSettledFact = CheckStartedFact &\n Readonly<{\n durationMs: number | null;\n messages: readonly CheckMessage[];\n outcome: CheckOutcome;\n visibility: CheckVisibility;\n }>;\n\ntype ResolvedCheckExecutionFacts = Readonly<{\n readonly checkDurations: readonly import(\"../result.ts\").CheckDuration[];\n readonly checkMessages: readonly import(\"../result.ts\").CheckRunMessage[];\n readonly snapshot: import(\"../../check-settlement/facts.ts\").CoreSnapshot;\n}>;\n\nexport type ResolvedCheckExecution =\n | (Readonly<{ readonly kind: \"completed\" }> & ResolvedCheckExecutionFacts)\n | (Readonly<{ readonly kind: \"cancelled\" }> & ResolvedCheckExecutionFacts);\n\nexport interface CheckExecutionState extends CheckExecutionSettlementState {\n readonly session: CoreCheckSession;\n}\n\ninterface ExecuteCheckInput extends CheckExecutionState {\n readonly preflight: ReadyCheckPreflightResolution;\n readonly clock: CheckExecutionClock;\n readonly project: CheckProjectContext;\n readonly signal: AbortSignal;\n}\n\ntype PreparedResolvedCheckExecution = Readonly<{\n readonly blockedCheckIds: ReadonlySet<string>;\n readonly readyChecks: readonly PreparedCheck[];\n readonly readyPreflights: readonly ReadyCheckPreflightResolution[];\n readonly state: CheckExecutionState;\n}>;\n\n/**\n * Runs the already normalized executable Check collection through one generic\n * Task per Check. Graph validation happens before Core scopes or callbacks.\n */\nexport async function executeResolvedChecks(\n input: Readonly<{\n readonly checks: readonly NormalizedCheck[];\n readonly maxParallel: number;\n readonly project: CheckProjectContext;\n readonly signal: AbortSignal | undefined;\n readonly clock?: CheckExecutionClock;\n readonly diagnosticLogger?: DiagnosticLogger;\n readonly lifecycle?: CheckExecutionLifecycle;\n }>\n): Promise<ResolvedCheckExecution> {\n const prepared = await prepareResolvedCheckExecution(input);\n // The barrier is execution-phase work. A signal received while it runs must close this\n // phase as cancelled even when every preflight already blocked and the scheduler graph is empty.\n if (input.signal?.aborted) {\n return closeCancelledExecution({\n normalizedChecks: input.checks,\n preparedChecks: prepared.readyChecks,\n state: prepared.state\n });\n }\n const readyPreflightByCheckId = new Map(\n prepared.readyPreflights.map((preflight) => [preflight.check.definition.checkId, preflight])\n );\n const graph = planStaticCheckGraph(prepared.readyChecks, {\n alreadySettledCheckIds: prepared.blockedCheckIds\n });\n let graphRun: Awaited<ReturnType<typeof runTaskGraph<void>>>;\n try {\n graphRun = await runTaskGraph({\n graph,\n maxParallel: input.maxParallel,\n diagnosticLogger: input.diagnosticLogger,\n signal: input.signal,\n execute: (task, context) => {\n const preflight = readyPreflightByCheckId.get(task.id);\n if (preflight === undefined) {\n throw new CheckExecutionInvariantFailure(\"Task graph has no prepared Check\");\n }\n return executeCheck({\n ...prepared.state,\n preflight,\n clock: input.clock ?? SYSTEM_MONOTONIC_CLOCK,\n project: input.project,\n signal: context.signal ?? INERT_SIGNAL\n });\n }\n });\n } catch (error) {\n throw trustedFailure(error);\n }\n\n return closeResolvedChecks({\n allChecks: input.checks,\n graphRun,\n readyChecks: prepared.readyChecks,\n state: prepared.state\n });\n}\n\nasync function prepareResolvedCheckExecution(\n input: Readonly<{\n readonly checks: readonly NormalizedCheck[];\n readonly diagnosticLogger?: DiagnosticLogger;\n readonly lifecycle?: CheckExecutionLifecycle;\n readonly maxParallel: number;\n readonly signal: AbortSignal | undefined;\n }>\n): Promise<PreparedResolvedCheckExecution> {\n prepareTaskGraph(planStaticCheckGraph(input.checks), input.maxParallel);\n const preflights = await prepareChecks({\n checks: input.checks,\n diagnosticLogger: input.diagnosticLogger,\n signal: input.signal\n });\n const state = createExecutionState({\n checks: input.checks,\n diagnosticLogger: input.diagnosticLogger,\n lifecycle: input.lifecycle\n });\n const partition = settlePreflightResolutions(state, preflights);\n return Object.freeze({ ...partition, state });\n}\n\nfunction createExecutionState(\n input: Readonly<{\n readonly checks: readonly NormalizedCheck[];\n readonly diagnosticLogger: DiagnosticLogger | undefined;\n readonly lifecycle: CheckExecutionLifecycle | undefined;\n }>\n): CheckExecutionState {\n return {\n diagnosticLogger: input.diagnosticLogger,\n settledFactsByCheckId: new Map<string, SettledCheckFacts>(),\n lifecycle: input.lifecycle,\n session: createCoreCheckSession(\n input.checks.map(({ definition }) => Object.freeze({ definition }))\n )\n };\n}\n\nfunction settlePreflightResolutions(\n state: CheckExecutionState,\n resolutions: readonly CheckPreflightResolution[]\n): Omit<PreparedResolvedCheckExecution, \"state\"> {\n const readyPreflights: ReadyCheckPreflightResolution[] = [];\n const blockedCheckIds = new Set<string>();\n for (const resolution of resolutions) {\n if (resolution.kind === \"ready\") {\n readyPreflights.push(resolution);\n continue;\n }\n blockedCheckIds.add(resolution.check.definition.checkId);\n settleBlockedPreflight(state, resolution);\n }\n return Object.freeze({\n blockedCheckIds,\n readyChecks: Object.freeze(readyPreflights.map((preflight) => preflight.check)),\n readyPreflights: Object.freeze(readyPreflights)\n });\n}\n\nfunction settleBlockedPreflight(\n state: CheckExecutionState,\n preflight: Extract<CheckPreflightResolution, { readonly kind: \"blocked\" }>\n): void {\n const scope = state.session.openCheckScope(preflight.check.definition.checkId);\n const outcome = scope.settleProduct(preflight.outcome);\n recordSettledCheck({\n check: checkIdentity(preflight.check),\n durationMs: null,\n messages: preflight.check.preflightMessages,\n outcome,\n phase: \"preflight\",\n state\n });\n}\n\nasync function executeCheck(input: ExecuteCheckInput): Promise<void> {\n const check = input.preflight.check;\n const checkId = check.definition.checkId;\n const scope = input.session.openCheckScope(checkId);\n const identity = checkIdentity(check);\n input.diagnosticLogger?.observe({\n event: \"check.started\",\n tags: diagnosticTags(`CHECK:${checkId}`, \"EXECUTION\", \"STARTED\"),\n details: {\n dependencies: check.dependsOn,\n displayName: check.definition.displayName,\n options: summarizeDiagnosticValue(check.options)\n }\n });\n emitStarted(input.lifecycle, identity);\n const startedAt = input.clock.now();\n const callback = await executeCheckCallback({\n check,\n dependencies: createCheckDependencies({\n checkId,\n diagnosticLogger: input.diagnosticLogger,\n directDependencyIds: check.dependsOn,\n session: input.session\n }),\n diagnosticLogger: input.diagnosticLogger,\n project: input.project,\n scope,\n signal: input.signal\n });\n const settled = settleCallback({\n callback,\n checkId,\n diagnosticLogger: input.diagnosticLogger,\n preflightMessages: check.preflightMessages,\n scope\n });\n recordSettledCheck({\n check: identity,\n durationMs: durationSince(startedAt, input.clock),\n messages: settled.messages,\n outcome: settled.outcome,\n phase: \"execution\",\n state: input\n });\n}\n\nfunction emitStarted(lifecycle: CheckExecutionLifecycle | undefined, check: CheckIdentity): void {\n lifecycle?.started(Object.freeze({ checkId: check.checkId, displayName: check.displayName }));\n}\n\nfunction durationSince(startedAt: number, clock: CheckExecutionClock): number {\n const elapsed = clock.now() - startedAt;\n return Number.isFinite(elapsed) && elapsed >= 0 ? elapsed : 0;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"resolved-checks.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/resolved-checks.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CheckMessage, CheckProjectContext } from \"../../check/check.ts\";\nimport type {\n NormalizedCheck,\n SchedulerMeasurementHook\n} from \"../../project-definition/project-definition.ts\";\nimport type { ResourceUnitMapping } from \"../../project-definition/resource-unit-mapping.ts\";\nimport { createCoreCheckSession } from \"../../check-settlement/session.ts\";\nimport {\n diagnosticTags,\n summarizeDiagnosticValue,\n type DiagnosticLogger\n} from \"../diagnostic-logging/logger.ts\";\nimport { prepareTaskGraph } from \"../task-scheduler/graph.ts\";\nimport type { AdmissionSelectionPolicy } from \"../task-scheduler/admission-selection-policy.ts\";\nimport { runTaskGraph } from \"../task-scheduler/scheduler.ts\";\nimport type { SchedulerPerformanceDiagnosticsInput } from \"../task-scheduler/measurement/diagnostics.ts\";\nimport { executeCheckCallback } from \"./callback.ts\";\nimport { artifactDirectoryForCheck, type ResolvedInvocationPaths } from \"../invocation/paths.ts\";\nimport { runWithCheckConsoleRouter } from \"./console-capture.ts\";\nimport { createCheckDependencies } from \"./dependencies.ts\";\nimport {\n CheckExecutionInvariantFailure,\n recordSettledCheck,\n settleCallback,\n type CheckExecutionState,\n type CheckIdentity,\n type SettledCheckFacts\n} from \"./execution-settlement.ts\";\nimport {\n checkIdentity,\n closeResolvedChecks,\n settleBlockedDependent,\n trustedFailure\n} from \"./execution-finalization.ts\";\nimport type { CheckExecutionLifecycle } from \"./lifecycle.ts\";\nimport { planStaticCheckGraph } from \"./plan.ts\";\nimport {\n selectEffectiveCheckIds,\n resolveFlagControlSettlements,\n type FlagControlSettlement\n} from \"./flag-controls.ts\";\nimport {\n prepareCheck,\n type CheckPreflightResolution,\n type ReadyCheckPreflightResolution\n} from \"./preflight.ts\";\nimport type { ResolvedCheckExecution } from \"./resolved-execution-result.ts\";\n\nconst INERT_SIGNAL = new AbortController().signal;\nconst NO_CHECK_MESSAGES: readonly CheckMessage[] = Object.freeze([]);\nconst DIRECT_EXECUTION_INVOCATION_ID = \"invocation/v1:direct-check-execution\";\nconst SYSTEM_MONOTONIC_CLOCK: CheckExecutionClock = Object.freeze({\n now: () => performance.now()\n});\n\n/** Package-private monotonic clock seam for execution accounting. */\nexport type CheckExecutionClock = Readonly<{ now(): number }>;\n\ninterface ExecuteCheckInput extends CheckExecutionState {\n readonly check: NormalizedCheck;\n readonly clock: CheckExecutionClock;\n readonly onAdmittedCheck: ((check: NormalizedCheck) => void) | undefined;\n readonly invocationId: string;\n readonly paths: ResolvedInvocationPaths | undefined;\n readonly project: CheckProjectContext;\n readonly signal: AbortSignal;\n}\n\ntype ResolvedCheckExecutionInput = Readonly<{\n /** Complete prepared private policy handoff; public policy dispatch stays outside execution. */\n readonly admissionPolicy?: AdmissionSelectionPolicy;\n readonly checks: readonly NormalizedCheck[];\n readonly maxParallel: number;\n readonly resourceCapacities?: ResourceUnitMapping;\n /** Product invocation identity;private direct-execution tests 使用稳定 fallback。 */\n readonly invocationId?: string;\n /** 冻结的 invocation paths;仅 private direct-execution tests 可以省略。 */\n readonly paths?: ResolvedInvocationPaths;\n readonly project: CheckProjectContext;\n readonly signal: AbortSignal | undefined;\n readonly clock?: CheckExecutionClock;\n /** Core-owner Check lifecycle channel. */\n readonly diagnosticLogger?: DiagnosticLogger;\n /** Scheduler-owner decision and summary channel. */\n readonly schedulerDiagnosticLogger?: DiagnosticLogger;\n /** Explicit enabled-only diagnostics handoff from the invocation output owner. */\n readonly schedulerPerformanceDiagnostics?: SchedulerPerformanceDiagnosticsInput;\n readonly schedulerMeasurementHooks?: readonly SchedulerMeasurementHook[];\n readonly onSchedulerMeasurementHookFailure?: () => void;\n readonly onSchedulerMeasurementHooksSettled?: () => void;\n readonly lifecycle?: CheckExecutionLifecycle;\n /** Provider-owned bounded learned admission diagnostics, delivered by invocation. */\n readonly onAdmittedCheck?: (check: NormalizedCheck) => void;\n}>;\n\n/**\n * Runs the already normalized executable Check collection through one generic\n * Task per Check. Graph validation happens before Core scopes or callbacks.\n */\nexport async function executeResolvedChecks(\n input: ResolvedCheckExecutionInput\n): Promise<ResolvedCheckExecution> {\n prepareTaskGraph(planStaticCheckGraph(input.checks, input.resourceCapacities), input.maxParallel);\n const effectiveCheckIds = selectEffectiveCheckIds(input.checks, input.project.flags);\n return runWithCheckConsoleRouter(() => executePreparedResolvedChecks(input, effectiveCheckIds));\n}\n\nasync function executePreparedResolvedChecks(\n input: ResolvedCheckExecutionInput,\n effectiveCheckIds: readonly string[]\n): Promise<ResolvedCheckExecution> {\n const state = createExecutionState({\n checks: input.checks,\n diagnosticLogger: input.diagnosticLogger,\n lifecycle: input.lifecycle\n });\n const flagControlSettlements = resolveFlagControlSettlements({\n checks: input.checks,\n diagnosticLogger: input.diagnosticLogger,\n effectiveCheckIds,\n signal: input.signal\n });\n for (const settlement of flagControlSettlements) {\n settleFlagControlOutcome(state, settlement);\n }\n input.lifecycle?.flagControlCompleted();\n const checksByCheckId = new Map(\n input.checks.map((check) => [check.definition.checkId, check] as const)\n );\n let graphRun: Awaited<ReturnType<typeof runTaskGraph<boolean>>>;\n try {\n graphRun = await runTaskGraph<boolean>({\n graph: planStaticCheckGraph(input.checks, input.resourceCapacities),\n admissionPolicy: input.admissionPolicy,\n maxParallel: input.maxParallel,\n diagnosticLogger: input.schedulerDiagnosticLogger ?? input.diagnosticLogger,\n performanceDiagnostics: input.schedulerPerformanceDiagnostics,\n measurementHooks: input.schedulerMeasurementHooks,\n onMeasurementHookFailure: input.onSchedulerMeasurementHookFailure,\n onMeasurementHooksSettled: input.onSchedulerMeasurementHooksSettled,\n preAdmissionTaskResults: Object.freeze(\n flagControlSettlements.map((settlement) =>\n Object.freeze({\n taskId: settlement.check.definition.checkId,\n value: false\n })\n )\n ),\n signal: input.signal,\n isPrerequisiteSatisfied: (satisfied) => satisfied,\n onTaskBlocked: (task, dependencyIds) => {\n const check = checksByCheckId.get(task.id);\n if (check === undefined) {\n throw new CheckExecutionInvariantFailure(\"Blocked Task has no normalized Check\");\n }\n settleBlockedDependent({ check, dependencyIds, state });\n },\n execute: (task, context) => {\n const check = checksByCheckId.get(task.id);\n if (check === undefined) {\n throw new CheckExecutionInvariantFailure(\"Task graph has no normalized Check\");\n }\n return executeAdmittedCheck({\n ...state,\n check,\n clock: input.clock ?? SYSTEM_MONOTONIC_CLOCK,\n onAdmittedCheck: input.onAdmittedCheck,\n invocationId: input.invocationId ?? DIRECT_EXECUTION_INVOCATION_ID,\n paths: input.paths,\n project: input.project,\n signal: context.signal ?? INERT_SIGNAL\n });\n }\n });\n } catch (error) {\n throw trustedFailure(error);\n }\n\n return closeResolvedChecks({\n allChecks: input.checks,\n effectiveCheckIds,\n graphRun,\n state\n });\n}\n\nfunction createExecutionState(\n input: Readonly<{\n readonly checks: readonly NormalizedCheck[];\n readonly diagnosticLogger: DiagnosticLogger | undefined;\n readonly lifecycle: CheckExecutionLifecycle | undefined;\n }>\n): CheckExecutionState {\n return {\n diagnosticLogger: input.diagnosticLogger,\n settledFactsByCheckId: new Map<string, SettledCheckFacts>(),\n lifecycle: input.lifecycle,\n session: createCoreCheckSession(\n input.checks.map(({ definition }) => Object.freeze({ definition }))\n )\n };\n}\n\nfunction settleFlagControlOutcome(\n state: CheckExecutionState,\n settlement: FlagControlSettlement\n): void {\n const scope = state.session.openCheckScope(settlement.check.definition.checkId);\n const outcome = scope.settleProduct(settlement.outcome);\n recordSettledCheck({\n check: checkIdentity(settlement.check),\n durationMs: null,\n messages: NO_CHECK_MESSAGES,\n outcome,\n phase: \"control\",\n state\n });\n}\n\nfunction settleBlockedPreflight(\n state: CheckExecutionState,\n preflight: Extract<CheckPreflightResolution, { readonly kind: \"blocked\" }>\n): void {\n const scope = state.session.openCheckScope(preflight.check.definition.checkId);\n const outcome = scope.settleProduct(preflight.outcome);\n recordSettledCheck({\n check: checkIdentity(preflight.check),\n durationMs: null,\n messages: preflight.check.preflightMessages,\n outcome,\n phase: \"preflight\",\n state\n });\n}\n\nasync function executeAdmittedCheck(input: ExecuteCheckInput): Promise<boolean> {\n observeAdmittedCheck(input);\n const preflight = await prepareCheck({\n check: input.check,\n diagnosticLogger: input.diagnosticLogger,\n signal: input.signal\n });\n if (preflight.kind === \"blocked\") {\n settleBlockedPreflight(input, preflight);\n return false;\n }\n return executeReadyCheck({ ...input, preflight });\n}\n\n/** Diagnostic observation belongs to the invocation; it cannot revise admitted Task facts. */\nfunction observeAdmittedCheck(input: ExecuteCheckInput): void {\n try {\n input.onAdmittedCheck?.(input.check);\n } catch {\n // Learned diagnostic output is best-effort and has no execution consequence.\n }\n}\n\nasync function executeReadyCheck(\n input: ExecuteCheckInput & Readonly<{ readonly preflight: ReadyCheckPreflightResolution }>\n): Promise<boolean> {\n const check = input.preflight.check;\n const checkId = check.definition.checkId;\n const scope = input.session.openCheckScope(checkId);\n const identity = checkIdentity(check);\n input.diagnosticLogger?.observe({\n event: \"check.started\",\n tags: diagnosticTags(`CHECK:${checkId}`, \"EXECUTION\", \"STARTED\"),\n details: {\n dependencies: check.dependsOn,\n displayName: check.definition.displayName,\n options: summarizeDiagnosticValue(check.options)\n }\n });\n emitStarted(input.lifecycle, identity);\n const startedAt = input.clock.now();\n const callback = await executeCheckCallback({\n artifactDirectory:\n input.paths === undefined ? null : artifactDirectoryForCheck(input.paths, checkId),\n check,\n dependencies: createCheckDependencies({\n checkId,\n diagnosticLogger: input.diagnosticLogger,\n directRelationCheckIds: directRelationCheckIds(check),\n session: input.session\n }),\n diagnosticLogger: input.diagnosticLogger,\n invocationId: input.invocationId,\n project: input.project,\n scope,\n signal: input.signal\n });\n const settled = settleCallback({\n callback,\n checkId,\n diagnosticLogger: input.diagnosticLogger,\n preflightMessages: check.preflightMessages,\n scope\n });\n recordSettledCheck({\n check: identity,\n durationMs: durationSince(startedAt, input.clock),\n messages: settled.messages,\n outcome: settled.outcome,\n phase: \"execution\",\n state: input\n });\n return settled.outcome.status === \"passed\";\n}\n\nfunction directRelationCheckIds(\n check: Pick<NormalizedCheck, \"dependsOn\" | \"observes\">\n): readonly string[] {\n return Object.freeze([...new Set([...check.dependsOn, ...check.observes])].sort());\n}\n\nfunction emitStarted(lifecycle: CheckExecutionLifecycle | undefined, check: CheckIdentity): void {\n lifecycle?.started(Object.freeze({ checkId: check.checkId, displayName: check.displayName }));\n}\n\nfunction durationSince(startedAt: number, clock: CheckExecutionClock): number {\n const elapsed = clock.now() - startedAt;\n return Number.isFinite(elapsed) && elapsed >= 0 ? elapsed : 0;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolved-execution-result.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/resolved-execution-result.ts"],"names":[],"mappings":"","sourcesContent":["import type { CoreSnapshot } from \"../../check-settlement/facts.ts\";\nimport type { SchedulerMeasurementContext } from \"../../project-definition/project-definition.ts\";\nimport type { CheckDuration, CheckRunMessage } from \"../result.ts\";\n\ntype ResolvedCheckExecutionFacts = Readonly<{\n readonly checkDurations: readonly CheckDuration[];\n readonly checkMessages: readonly CheckRunMessage[];\n readonly snapshot: CoreSnapshot;\n /** Product-private terminal Scheduler facts; never projected into RunResult. */\n readonly terminalSchedulerMeasurement?: SchedulerMeasurementContext;\n}>;\n\n/** Private terminal result passed from Check execution to the invocation boundary. */\nexport type ResolvedCheckExecution =\n | (Readonly<{\n /** Private effective selection shared with invocation-level aggregation. */\n readonly effectiveCheckIds: readonly string[];\n readonly kind: \"completed\";\n }> &\n ResolvedCheckExecutionFacts)\n | (Readonly<{ readonly kind: \"cancelled\" }> & ResolvedCheckExecutionFacts)\n | (Readonly<{ readonly kind: \"admission-policy-failed\" }> & ResolvedCheckExecutionFacts);\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { failedOutput } from "../outputs/status.mjs";
|
|
2
|
+
import { resolveFinalRunResult } from "./result-resolver.mjs";
|
|
3
3
|
import { publishMachineOutput } from "./machine-publication.mjs";
|
|
4
|
-
import { outputFailure } from "
|
|
5
|
-
import { diagnosticTags } from "
|
|
6
|
-
import { createPublicationModelV4 } from "
|
|
4
|
+
import { outputFailure } from "../result.mjs";
|
|
5
|
+
import { DIAGNOSTIC_CHANNELS, diagnosticTags } from "../diagnostic-logging/logger.mjs";
|
|
6
|
+
import { createPublicationModelV4 } from "../../machine-output/v4/publication-model.mjs";
|
|
7
7
|
export function completeInvocation(invocation, core) {
|
|
8
8
|
const facts = runFacts(core);
|
|
9
9
|
if (invocation.outputConfiguration.machinePublication.enabled) {
|
|
@@ -14,7 +14,7 @@ export function completeInvocation(invocation, core) {
|
|
|
14
14
|
configuration: invocation.outputConfiguration.machinePublication,
|
|
15
15
|
statuses: invocation.outputs,
|
|
16
16
|
model,
|
|
17
|
-
directory:
|
|
17
|
+
directory: invocation.paths.machinePublicationDirectory
|
|
18
18
|
});
|
|
19
19
|
if (!published)
|
|
20
20
|
return failure(invocation, facts);
|
|
@@ -73,7 +73,7 @@ function isExecutionResult(value) {
|
|
|
73
73
|
/** Closes diagnostic logging and applies final output priority to a non-configuration candidate. */
|
|
74
74
|
export function finalizeInvocation(invocation, candidate) {
|
|
75
75
|
const preCloseOutputs = invocation.outputs.value();
|
|
76
|
-
invocation.
|
|
76
|
+
invocation.diagnosticLogging.core.observe({
|
|
77
77
|
event: "run.terminal-before-log-close",
|
|
78
78
|
tags: diagnosticTags("RUN", "TERMINAL", terminalStatusTag(candidate)),
|
|
79
79
|
details: {
|
|
@@ -82,30 +82,16 @@ export function finalizeInvocation(invocation, candidate) {
|
|
|
82
82
|
outputs: preCloseOutputDetails(preCloseOutputs)
|
|
83
83
|
}
|
|
84
84
|
});
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
case "completed": {
|
|
93
|
-
const output = failedOutput(outputs);
|
|
94
|
-
return output === undefined
|
|
95
|
-
? Object.freeze({ ...candidate, outputs })
|
|
96
|
-
: outputFailure(candidate.declarativeFingerprint, candidate.definitionWarnings, outputs, output, finalSnapshotFacts(candidate));
|
|
97
|
-
}
|
|
98
|
-
case "output": {
|
|
99
|
-
const output = failedOutput(outputs);
|
|
100
|
-
if (output === undefined)
|
|
101
|
-
throw new Error("Run output failed without a failed status");
|
|
102
|
-
return outputFailure(candidate.declarativeFingerprint, candidate.definitionWarnings, outputs, output, finalSnapshotFacts(candidate));
|
|
103
|
-
}
|
|
104
|
-
case "planning":
|
|
105
|
-
case "cancelled":
|
|
106
|
-
case "execution":
|
|
107
|
-
return Object.freeze({ ...candidate, outputs });
|
|
85
|
+
const diagnosticLoggingStatuses = invocation.diagnosticLogging.close();
|
|
86
|
+
for (const channel of DIAGNOSTIC_CHANNELS) {
|
|
87
|
+
const status = diagnosticLoggingStatuses[channel];
|
|
88
|
+
if (status === "failed")
|
|
89
|
+
invocation.outputs.failedDiagnosticChannel(channel);
|
|
90
|
+
if (status === "succeeded")
|
|
91
|
+
invocation.outputs.succeededDiagnosticChannel(channel);
|
|
108
92
|
}
|
|
93
|
+
invocation.progressRendering.close();
|
|
94
|
+
return resolveFinalRunResult(candidate, invocation.outputs.value());
|
|
109
95
|
}
|
|
110
96
|
function terminalStatusTag(candidate) {
|
|
111
97
|
if ("aggregate" in candidate && candidate.aggregate !== null)
|
|
@@ -162,12 +148,4 @@ function nonPassedFact(check) {
|
|
|
162
148
|
status: check.outcome.status
|
|
163
149
|
});
|
|
164
150
|
}
|
|
165
|
-
function finalSnapshotFacts(candidate) {
|
|
166
|
-
return Object.freeze({
|
|
167
|
-
aggregate: candidate.aggregate,
|
|
168
|
-
checkDurations: candidate.checkDurations,
|
|
169
|
-
checkMessages: candidate.checkMessages,
|
|
170
|
-
snapshot: candidate.snapshot
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
151
|
//# sourceMappingURL=completion.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.mjs","sourceRoot":"","sources":["../../../../src/project-run/completion/completion.ts"],"names":[],"mappings":"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","sourcesContent":["import { failedOutput } from \"../outputs/status.ts\";\nimport { resolveFinalRunResult } from \"./result-resolver.ts\";\nimport { publishMachineOutput } from \"./machine-publication.ts\";\nimport {\n outputFailure,\n type CheckDuration,\n type CheckRunMessage,\n type NonConfigurationRunResult,\n type RunResultFacts\n} from \"../result.ts\";\nimport type { CheckAggregate } from \"../controls/contract.ts\";\nimport { DIAGNOSTIC_CHANNELS, diagnosticTags } from \"../diagnostic-logging/logger.ts\";\nimport type { Invocation } from \"../invocation/run.ts\";\nimport {\n createPublicationModelV4,\n type TrustedPublicationModelV4\n} from \"../../machine-output/v4/publication-model.ts\";\nimport type { CoreCheck, CoreSnapshot } from \"../../check-settlement/facts.ts\";\n\ntype OutcomeCounts = {\n readonly failed: number;\n readonly notApplicable: number;\n readonly passed: number;\n readonly unavailable: number;\n};\n\n/** Settled Check facts consumed by completion and output publication. */\nexport type CoreExecution = Readonly<{\n readonly aggregate: CheckAggregate | null;\n readonly checkDurations: readonly CheckDuration[];\n readonly checkMessages: readonly CheckRunMessage[];\n readonly snapshot: CoreSnapshot;\n}>;\n\nexport function completeInvocation(\n invocation: Invocation,\n core: CoreExecution\n): NonConfigurationRunResult {\n const facts = runFacts(core);\n if (invocation.outputConfiguration.machinePublication.enabled) {\n const model = createModel(invocation, core.snapshot);\n if (isExecutionResult(model)) return model;\n const published = publishMachineOutput({\n configuration: invocation.outputConfiguration.machinePublication,\n statuses: invocation.outputs,\n model,\n directory: invocation.paths.machinePublicationDirectory\n });\n if (!published) return failure(invocation, facts);\n }\n const output = failedOutput(invocation.outputs.value());\n return output === undefined\n ? Object.freeze({\n kind: \"completed\",\n declarativeFingerprint: invocation.declarativeFingerprint,\n definitionWarnings: invocation.definitionWarnings,\n outputs: invocation.outputs.value(),\n ...facts\n })\n : failure(invocation, facts);\n}\nfunction failure(invocation: Invocation, facts: RunResultFacts): ReturnType<typeof outputFailure> {\n const output = failedOutput(invocation.outputs.value());\n if (output === undefined) throw new Error(\"Run output failed without a failed status\");\n return outputFailure(\n invocation.declarativeFingerprint,\n invocation.definitionWarnings,\n invocation.outputs.value(),\n output,\n facts\n );\n}\nfunction runFacts(core: CoreExecution): RunResultFacts {\n return Object.freeze({\n aggregate: core.aggregate,\n checkDurations: core.checkDurations,\n checkMessages: core.checkMessages,\n snapshot: core.snapshot\n });\n}\nfunction createModel(\n invocation: Invocation,\n snapshot: CoreExecution[\"snapshot\"]\n): TrustedPublicationModelV4 | Extract<NonConfigurationRunResult, { readonly kind: \"execution\" }> {\n try {\n if (invocation.startedAtUtc === null)\n throw new Error(\"Machine publication requires an invocation timestamp\");\n return createPublicationModelV4({\n invocation: {\n invocationId: invocation.invocationId,\n projectRoot: \".\",\n timestamp: invocation.startedAtUtc\n },\n snapshot\n });\n } catch {\n return Object.freeze({\n kind: \"execution\",\n declarativeFingerprint: invocation.declarativeFingerprint,\n definitionWarnings: invocation.definitionWarnings,\n diagnostic: Object.freeze({ code: \"publication-model-failed\" }),\n outputs: invocation.outputs.value()\n });\n }\n}\nfunction isExecutionResult(\n value:\n | TrustedPublicationModelV4\n | Extract<NonConfigurationRunResult, { readonly kind: \"execution\" }>\n): value is Extract<NonConfigurationRunResult, { readonly kind: \"execution\" }> {\n return \"kind\" in value;\n}\n\n/** Closes diagnostic logging and applies final output priority to a non-configuration candidate. */\nexport function finalizeInvocation(\n invocation: Invocation,\n candidate: NonConfigurationRunResult\n): NonConfigurationRunResult {\n const preCloseOutputs = invocation.outputs.value();\n invocation.diagnosticLogging.core.observe({\n event: \"run.terminal-before-log-close\",\n tags: diagnosticTags(\"RUN\", \"TERMINAL\", terminalStatusTag(candidate)),\n details: {\n ...closingFacts(candidate),\n diagnosticLogging: \"close-not-yet-confirmed\",\n outputs: preCloseOutputDetails(preCloseOutputs)\n }\n });\n const diagnosticLoggingStatuses = invocation.diagnosticLogging.close();\n for (const channel of DIAGNOSTIC_CHANNELS) {\n const status = diagnosticLoggingStatuses[channel];\n if (status === \"failed\") invocation.outputs.failedDiagnosticChannel(channel);\n if (status === \"succeeded\") invocation.outputs.succeededDiagnosticChannel(channel);\n }\n invocation.progressRendering.close();\n return resolveFinalRunResult(candidate, invocation.outputs.value());\n}\n\nfunction terminalStatusTag(candidate: NonConfigurationRunResult): string {\n if (\"aggregate\" in candidate && candidate.aggregate !== null)\n return candidate.aggregate.toUpperCase();\n if (candidate.kind === \"cancelled\") return \"CANCELLED\";\n return candidate.kind.toUpperCase();\n}\n\nfunction preCloseOutputDetails(outputs: ReturnType<Invocation[\"outputs\"][\"value\"]>): Readonly<{\n readonly machinePublication: (typeof outputs)[\"machinePublication\"];\n readonly progressRendering: (typeof outputs)[\"progressRendering\"];\n}> {\n return Object.freeze({\n machinePublication: outputs.machinePublication,\n progressRendering: outputs.progressRendering\n });\n}\n\nfunction closingFacts(candidate: NonConfigurationRunResult): Readonly<{\n readonly aggregate: CheckAggregate | null;\n readonly candidateKind: NonConfigurationRunResult[\"kind\"];\n readonly counts: Readonly<{\n readonly failed: number;\n readonly notApplicable: number;\n readonly passed: number;\n readonly unavailable: number;\n }> | null;\n readonly nonPassed: readonly Readonly<{\n readonly checkId: string;\n readonly reason: unknown;\n readonly status: string;\n }>[];\n}> {\n if (!(\"snapshot\" in candidate)) {\n return Object.freeze({\n aggregate: null,\n candidateKind: candidate.kind,\n counts: null,\n nonPassed: []\n });\n }\n const summary = summarizeSnapshot(candidate.snapshot);\n return Object.freeze({\n aggregate: \"aggregate\" in candidate ? candidate.aggregate : null,\n candidateKind: candidate.kind,\n ...summary\n });\n}\n\nfunction summarizeSnapshot(snapshot: CoreSnapshot): Readonly<{\n readonly counts: OutcomeCounts;\n readonly nonPassed: readonly Readonly<{\n readonly checkId: string;\n readonly reason: unknown;\n readonly status: string;\n }>[];\n}> {\n const counts = { failed: 0, notApplicable: 0, passed: 0, unavailable: 0 };\n const nonPassed: Array<Readonly<{ checkId: string; reason: unknown; status: string }>> = [];\n for (const check of snapshot.checks) {\n counts[statusCountKey(check)] += 1;\n const fact = nonPassedFact(check);\n if (fact !== undefined) nonPassed.push(fact);\n }\n return Object.freeze({\n counts: Object.freeze(counts),\n nonPassed: Object.freeze(nonPassed)\n });\n}\n\nfunction statusCountKey(check: CoreCheck): keyof OutcomeCounts {\n return check.outcome.status === \"not-applicable\" ? \"notApplicable\" : check.outcome.status;\n}\n\nfunction nonPassedFact(\n check: CoreCheck\n):\n | Readonly<{ readonly checkId: string; readonly reason: unknown; readonly status: string }>\n | undefined {\n if (check.outcome.status === \"passed\") return undefined;\n return Object.freeze({\n checkId: check.checkId,\n reason: check.outcome.status === \"failed\" ? null : (check.outcome.reason ?? null),\n status: check.outcome.status\n });\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { publishScanV4 } from "
|
|
1
|
+
import { publishScanV4 } from "../../machine-output/v4/publish.mjs";
|
|
2
2
|
/** Publishes an already-trusted v4 model as the Run-owned machine output. */
|
|
3
3
|
export function publishMachineOutput(input) {
|
|
4
4
|
if (!input.configuration.enabled)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machine-publication.mjs","sourceRoot":"","sources":["../../../../src/project-run/completion/machine-publication.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAEnE,6EAA6E;AAC7E,MAAM,UAAU,oBAAoB,CAClC,KAKE;IAEF,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,CAAC;QACH,aAAa,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACpE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC","sourcesContent":["import type { ProjectOutputs } from \"../../project-definition/project-definition.ts\";\nimport type { TrustedPublicationModelV4 } from \"../../machine-output/v4/publication-model.ts\";\nimport { publishScanV4 } from \"../../machine-output/v4/publish.ts\";\nimport type { OutputStatuses } from \"../outputs/status.ts\";\n/** Publishes an already-trusted v4 model as the Run-owned machine output. */\nexport function publishMachineOutput(\n input: Readonly<{\n readonly configuration: ProjectOutputs[\"machinePublication\"];\n readonly statuses: OutputStatuses;\n readonly model: TrustedPublicationModelV4;\n readonly directory: string;\n }>\n): boolean {\n if (!input.configuration.enabled) return true;\n try {\n publishScanV4({ artifactDir: input.directory, model: input.model });\n input.statuses.succeeded(\"machinePublication\");\n return true;\n } catch {\n input.statuses.failed(\"machinePublication\");\n return false;\n }\n}\n"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { failedOutput } from "../outputs/status.mjs";
|
|
2
|
+
import { outputFailure } from "../result.mjs";
|
|
3
|
+
/** Resolves a terminal candidate against the output statuses after all owners have closed. */
|
|
4
|
+
export function resolveFinalRunResult(candidate, outputs) {
|
|
5
|
+
switch (candidate.kind) {
|
|
6
|
+
case "completed":
|
|
7
|
+
return resolveCompletedCandidate(candidate, outputs);
|
|
8
|
+
case "output":
|
|
9
|
+
return resolveExistingOutputCandidate(candidate, outputs);
|
|
10
|
+
case "planning":
|
|
11
|
+
case "cancelled":
|
|
12
|
+
case "execution":
|
|
13
|
+
return Object.freeze({ ...candidate, outputs });
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function resolveCompletedCandidate(candidate, outputs) {
|
|
17
|
+
const output = failedOutput(outputs);
|
|
18
|
+
if (output === undefined)
|
|
19
|
+
return Object.freeze({ ...candidate, outputs });
|
|
20
|
+
return outputFailure(candidate.declarativeFingerprint, candidate.definitionWarnings, outputs, output, finalSnapshotFacts(candidate));
|
|
21
|
+
}
|
|
22
|
+
function resolveExistingOutputCandidate(candidate, outputs) {
|
|
23
|
+
const output = failedOutput(outputs);
|
|
24
|
+
if (output === undefined)
|
|
25
|
+
throw new Error("Run output failed without a failed status");
|
|
26
|
+
return outputFailure(candidate.declarativeFingerprint, candidate.definitionWarnings, outputs, output, finalSnapshotFacts(candidate));
|
|
27
|
+
}
|
|
28
|
+
function finalSnapshotFacts(candidate) {
|
|
29
|
+
return Object.freeze({
|
|
30
|
+
aggregate: candidate.aggregate,
|
|
31
|
+
checkDurations: candidate.checkDurations,
|
|
32
|
+
checkMessages: candidate.checkMessages,
|
|
33
|
+
snapshot: candidate.snapshot
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=result-resolver.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result-resolver.mjs","sourceRoot":"","sources":["../../../../src/project-run/completion/result-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA0B,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAuD,MAAM,cAAc,CAAC;AAElG,8FAA8F;AAC9F,MAAM,UAAU,qBAAqB,CACnC,SAAoC,EACpC,OAA0B;IAE1B,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,WAAW;YACd,OAAO,yBAAyB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACvD,KAAK,QAAQ;YACX,OAAO,8BAA8B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC5D,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAChC,SAA6E,EAC7E,OAA0B;IAE1B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1E,OAAO,aAAa,CAClB,SAAS,CAAC,sBAAsB,EAChC,SAAS,CAAC,kBAAkB,EAC5B,OAAO,EACP,MAAM,EACN,kBAAkB,CAAC,SAAS,CAAC,CAC9B,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B,CACrC,SAA0E,EAC1E,OAA0B;IAE1B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACvF,OAAO,aAAa,CAClB,SAAS,CAAC,sBAAsB,EAChC,SAAS,CAAC,kBAAkB,EAC5B,OAAO,EACP,MAAM,EACN,kBAAkB,CAAC,SAAS,CAAC,CAC9B,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,SAA6D;IAE7D,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,aAAa,EAAE,SAAS,CAAC,aAAa;QACtC,QAAQ,EAAE,SAAS,CAAC,QAAQ;KAC7B,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { failedOutput, type RunOutputStatuses } from \"../outputs/status.ts\";\nimport { outputFailure, type NonConfigurationRunResult, type RunResultFacts } from \"../result.ts\";\n\n/** Resolves a terminal candidate against the output statuses after all owners have closed. */\nexport function resolveFinalRunResult(\n candidate: NonConfigurationRunResult,\n outputs: RunOutputStatuses\n): NonConfigurationRunResult {\n switch (candidate.kind) {\n case \"completed\":\n return resolveCompletedCandidate(candidate, outputs);\n case \"output\":\n return resolveExistingOutputCandidate(candidate, outputs);\n case \"planning\":\n case \"cancelled\":\n case \"execution\":\n return Object.freeze({ ...candidate, outputs });\n }\n}\n\nfunction resolveCompletedCandidate(\n candidate: Extract<NonConfigurationRunResult, { readonly kind: \"completed\" }>,\n outputs: RunOutputStatuses\n): NonConfigurationRunResult {\n const output = failedOutput(outputs);\n if (output === undefined) return Object.freeze({ ...candidate, outputs });\n return outputFailure(\n candidate.declarativeFingerprint,\n candidate.definitionWarnings,\n outputs,\n output,\n finalSnapshotFacts(candidate)\n );\n}\n\nfunction resolveExistingOutputCandidate(\n candidate: Extract<NonConfigurationRunResult, { readonly kind: \"output\" }>,\n outputs: RunOutputStatuses\n): NonConfigurationRunResult {\n const output = failedOutput(outputs);\n if (output === undefined) throw new Error(\"Run output failed without a failed status\");\n return outputFailure(\n candidate.declarativeFingerprint,\n candidate.definitionWarnings,\n outputs,\n output,\n finalSnapshotFacts(candidate)\n );\n}\n\nfunction finalSnapshotFacts(\n candidate: Extract<NonConfigurationRunResult, RunResultFacts>\n): RunResultFacts {\n return Object.freeze({\n aggregate: candidate.aggregate,\n checkDurations: candidate.checkDurations,\n checkMessages: candidate.checkMessages,\n snapshot: candidate.snapshot\n });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.mjs","sourceRoot":"","sources":["../../../../src/project-run/controls/contract.ts"],"names":[],"mappings":"","sourcesContent":["import type { ProjectOutputs } from \"../../project-definition/project-definition.ts\";\n
|
|
1
|
+
{"version":3,"file":"contract.mjs","sourceRoot":"","sources":["../../../../src/project-run/controls/contract.ts"],"names":[],"mappings":"","sourcesContent":["import type { ProjectOutputs } from \"../../project-definition/project-definition.ts\";\n/**\n * `run(definition, controls?)` 的第二个参数,只指定这一次怎么运行。\n *\n * root、flags、signal、Check 产物与日志目标以及显式 aggregation 属于本次调用;`outputs` 只逐字段\n * 覆盖 Definition 的输出默认值,不修改原 Definition。Checks、Check options 与 scheduler 仍在\n * `defineConfig(...)` 中声明,不能从这里替换;这些 Controls 不进入 Definition fingerprint。\n */\nexport interface RunControls {\n /** 单次 diagnostic 文件命名;默认 `unique`,独占目录可选 `channel` 使用固定 Core/Scheduler 名,同名目标失败且不覆盖。 */\n readonly diagnosticLogFileNaming?: DiagnosticLogFileNaming;\n /** caller 为当前 Run 选择的 progress log exact target;省略时只写 terminal。 */\n readonly progressLogFile?: string;\n /** caller 选择的 Check-owned invocation artifact base;省略时不授予 artifact capability。 */\n readonly checkArtifactBaseDirectory?: string;\n /** 为本次 Run 选择并折叠 Check statuses;省略时结果的 `aggregate` 为 `null`。 */\n readonly checkAggregation?: CheckAggregation;\n /** 仅为本次调用覆盖 Run-owned outputs。 */\n readonly outputs?: Partial<{\n machinePublication: Partial<ProjectOutputs[\"machinePublication\"]>;\n progressRendering: Partial<ProjectOutputs[\"progressRendering\"]>;\n diagnosticLogging: Partial<ProjectOutputs[\"diagnosticLogging\"]>;\n }>;\n /** 本次 Run 的 flag tokens;Product 去重排序后用于 Check selection 与 callback project context。 */\n readonly flags?: readonly string[];\n /** 项目相对输入与 output target 的解析根;省略时使用调用进程的当前工作目录。 */\n readonly projectRoot?: string;\n /** 供 planning、preflight 与 execution 协作响应的 caller cancellation signal。 */\n readonly signal?: AbortSignal;\n}\n/** Diagnostic 文件名选择;不改变目录、日志内容或 invocation identity。 */\nexport type DiagnosticLogFileNaming = \"unique\" | \"channel\";\n/** 将选定 Check statuses 折叠为 invocation aggregate 的规则。 */\nexport interface CheckAggregation {\n /** `all` 选择全部 Check,ID 数组选择明确集合,`effective` 复用本 invocation 的 flag-and-dependency selection。 */\n readonly checks: \"all\" | \"effective\" | readonly string[];\n /** `all` 要求所有纳入状态通过;`any` 只要求至少一个纳入状态通过。 */\n readonly mode: \"all\" | \"any\";\n /** 将 `unavailable` 原样传播、按失败纳入,或从 `all`/`any` 计算中排除。 */\n readonly unavailable: \"propagate\" | \"fail\" | \"exclude\";\n /** 将 `not-applicable` 从计算中排除,或按通过/失败纳入。 */\n readonly notApplicable: \"exclude\" | \"pass\" | \"fail\";\n /** 选择为空或所有状态都被排除时返回的明确 aggregate。 */\n readonly empty: \"passed\" | \"failed\" | \"not-applicable\";\n}\n/** `CheckAggregation` 计算出的 invocation 级结果。 */\nexport type CheckAggregate = \"passed\" | \"failed\" | \"not-applicable\" | \"unavailable\";\n"]}
|