@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
|
@@ -4,25 +4,38 @@ const EMPTY_MESSAGES = Object.freeze([]);
|
|
|
4
4
|
export function closeResolvedChecks(input) {
|
|
5
5
|
try {
|
|
6
6
|
assertNoTaskEngineFailures(input.graphRun.settlements);
|
|
7
|
+
if (input.graphRun.admissionPolicyFault !== undefined) {
|
|
8
|
+
return closeAdmissionPolicyFailed({
|
|
9
|
+
normalizedChecks: input.allChecks,
|
|
10
|
+
state: input.state,
|
|
11
|
+
terminalSchedulerMeasurement: input.graphRun.terminalMeasurement
|
|
12
|
+
});
|
|
13
|
+
}
|
|
7
14
|
if (input.graphRun.cancelled) {
|
|
8
15
|
return closeCancelledExecution({
|
|
9
16
|
normalizedChecks: input.allChecks,
|
|
10
|
-
|
|
11
|
-
|
|
17
|
+
state: input.state,
|
|
18
|
+
terminalSchedulerMeasurement: input.graphRun.terminalMeasurement
|
|
12
19
|
});
|
|
13
20
|
}
|
|
14
|
-
assertEveryCheckClosed(input.
|
|
15
|
-
return
|
|
21
|
+
assertEveryCheckClosed(input.allChecks, input.graphRun.settlements);
|
|
22
|
+
return completedResolvedExecution(input.effectiveCheckIds, input.state.session.freeze(), input.state, input.graphRun.terminalMeasurement);
|
|
16
23
|
}
|
|
17
24
|
catch (error) {
|
|
18
25
|
throw trustedFailure(error);
|
|
19
26
|
}
|
|
20
27
|
}
|
|
28
|
+
export function closeAdmissionPolicyFailed(input) {
|
|
29
|
+
input.state.session.closeUnresolvedAsCancelled();
|
|
30
|
+
const snapshot = input.state.session.freeze();
|
|
31
|
+
settleUnstartedCancelledChecks({ ...input, snapshot });
|
|
32
|
+
return resolvedExecution("admission-policy-failed", snapshot, input.state, input.terminalSchedulerMeasurement);
|
|
33
|
+
}
|
|
21
34
|
export function closeCancelledExecution(input) {
|
|
22
35
|
input.state.session.closeUnresolvedAsCancelled();
|
|
23
36
|
const snapshot = input.state.session.freeze();
|
|
24
37
|
settleUnstartedCancelledChecks({ ...input, snapshot });
|
|
25
|
-
return resolvedExecution("cancelled", snapshot, input.state);
|
|
38
|
+
return resolvedExecution("cancelled", snapshot, input.state, input.terminalSchedulerMeasurement);
|
|
26
39
|
}
|
|
27
40
|
export function checkIdentity(check) {
|
|
28
41
|
return Object.freeze({
|
|
@@ -36,16 +49,25 @@ export function trustedFailure(error) {
|
|
|
36
49
|
? error
|
|
37
50
|
: new CheckExecutionInvariantFailure("Check execution adapter escaped its contained failure boundary");
|
|
38
51
|
}
|
|
39
|
-
function resolvedExecution(kind, snapshot, state) {
|
|
52
|
+
function resolvedExecution(kind, snapshot, state, terminalSchedulerMeasurement) {
|
|
40
53
|
return Object.freeze({
|
|
41
54
|
kind,
|
|
42
55
|
...checkRunSummaries(snapshot, state.settledFactsByCheckId),
|
|
43
|
-
snapshot
|
|
56
|
+
snapshot,
|
|
57
|
+
...(terminalSchedulerMeasurement === undefined ? {} : { terminalSchedulerMeasurement })
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function completedResolvedExecution(effectiveCheckIds, snapshot, state, terminalSchedulerMeasurement) {
|
|
61
|
+
return Object.freeze({
|
|
62
|
+
kind: "completed",
|
|
63
|
+
...checkRunSummaries(snapshot, state.settledFactsByCheckId),
|
|
64
|
+
effectiveCheckIds,
|
|
65
|
+
snapshot,
|
|
66
|
+
...(terminalSchedulerMeasurement === undefined ? {} : { terminalSchedulerMeasurement })
|
|
44
67
|
});
|
|
45
68
|
}
|
|
46
69
|
function settleUnstartedCancelledChecks(input) {
|
|
47
70
|
const normalizedByCheckId = new Map(input.normalizedChecks.map((check) => [check.definition.checkId, check]));
|
|
48
|
-
const preparedByCheckId = new Map(input.preparedChecks.map((check) => [check.definition.checkId, check]));
|
|
49
71
|
for (const check of input.snapshot.checks) {
|
|
50
72
|
if (input.state.settledFactsByCheckId.has(check.checkId))
|
|
51
73
|
continue;
|
|
@@ -56,7 +78,7 @@ function settleUnstartedCancelledChecks(input) {
|
|
|
56
78
|
recordSettledCheck({
|
|
57
79
|
check: checkIdentity(normalized),
|
|
58
80
|
durationMs: null,
|
|
59
|
-
messages:
|
|
81
|
+
messages: EMPTY_MESSAGES,
|
|
60
82
|
outcome: check.outcome,
|
|
61
83
|
phase: "execution",
|
|
62
84
|
state: input.state
|
|
@@ -74,7 +96,10 @@ function checkRunSummaries(snapshot, settledFactsByCheckId) {
|
|
|
74
96
|
if (settledFacts === undefined) {
|
|
75
97
|
throw new CheckExecutionInvariantFailure("Check settled facts are missing a Check");
|
|
76
98
|
}
|
|
77
|
-
checkDurations.push(Object.freeze({
|
|
99
|
+
checkDurations.push(Object.freeze({
|
|
100
|
+
checkId: check.checkId,
|
|
101
|
+
durationMs: settledFacts.durationMs
|
|
102
|
+
}));
|
|
78
103
|
messages.push(...settledFacts.messages.map((message) => Object.freeze({ checkId: check.checkId, ...message })));
|
|
79
104
|
}
|
|
80
105
|
return Object.freeze({
|
|
@@ -82,14 +107,30 @@ function checkRunSummaries(snapshot, settledFactsByCheckId) {
|
|
|
82
107
|
checkMessages: messages.length === 0 ? Object.freeze([]) : Object.freeze(messages)
|
|
83
108
|
});
|
|
84
109
|
}
|
|
110
|
+
/** Closes one Scheduler-blocked Check before a terminal observer may start. */
|
|
111
|
+
export function settleBlockedDependent(input) {
|
|
112
|
+
const scope = input.state.session.openCheckScope(input.check.definition.checkId);
|
|
113
|
+
const outcome = scope.settleProduct(Object.freeze({
|
|
114
|
+
status: "unavailable",
|
|
115
|
+
reason: Object.freeze({
|
|
116
|
+
code: "dependency-not-passed",
|
|
117
|
+
checkIds: Object.freeze([...input.dependencyIds])
|
|
118
|
+
})
|
|
119
|
+
}));
|
|
120
|
+
recordSettledCheck({
|
|
121
|
+
check: checkIdentity(input.check),
|
|
122
|
+
durationMs: null,
|
|
123
|
+
messages: EMPTY_MESSAGES,
|
|
124
|
+
outcome,
|
|
125
|
+
phase: "dependency",
|
|
126
|
+
state: input.state
|
|
127
|
+
});
|
|
128
|
+
}
|
|
85
129
|
function assertNoTaskEngineFailures(settlements) {
|
|
86
130
|
for (const settled of settlements) {
|
|
87
131
|
if (settled.settlement.kind === "failed") {
|
|
88
132
|
throw new CheckExecutionInvariantFailure("Task engine received an unexpected execution failure");
|
|
89
133
|
}
|
|
90
|
-
if (settled.settlement.kind === "blocked") {
|
|
91
|
-
throw new CheckExecutionInvariantFailure("Task engine blocked a Product Check");
|
|
92
|
-
}
|
|
93
134
|
}
|
|
94
135
|
}
|
|
95
136
|
function assertEveryCheckClosed(checks, settlements) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-finalization.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/execution-finalization.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,8BAA8B,EAC9B,kBAAkB,EAGnB,MAAM,2BAA2B,CAAC;AAInC,MAAM,cAAc,GAA4B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAElE,iGAAiG;AACjG,MAAM,UAAU,mBAAmB,CACjC,KAOE;IAEF,IAAI,CAAC;QACH,0BAA0B,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC7B,OAAO,uBAAuB,CAAC;gBAC7B,gBAAgB,EAAE,KAAK,CAAC,SAAS;gBACjC,cAAc,EAAE,KAAK,CAAC,WAAW;gBACjC,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB,CAAC,CAAC;QACL,CAAC;QACD,sBAAsB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACtE,OAAO,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACnF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAIE;IAEF,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IAC9C,8BAA8B,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACvD,OAAO,iBAAiB,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,KAAyD;IAEzD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO;QACjC,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW;QACzC,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,KAAK,YAAY,8BAA8B;QACpD,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI,8BAA8B,CAChC,gEAAgE,CACjE,CAAC;AACR,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAoC,EACpC,QAAsB,EACtB,KAA0B;IAE1B,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI;QACJ,GAAG,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,qBAAqB,CAAC;QAC3D,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,SAAS,8BAA8B,CACrC,KAKE;IAEF,MAAM,mBAAmB,GAAG,IAAI,GAAG,CACjC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CACzE,CAAC;IACF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CACvE,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC1C,IAAI,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;YAAE,SAAS;QACnE,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,8BAA8B,CACtC,sDAAsD,CACvD,CAAC;QACJ,CAAC;QACD,kBAAkB,CAAC;YACjB,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC;YAChC,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,iBAAiB,IAAI,cAAc;YACnF,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CACxB,QAAsB,EACtB,qBAA6D;IAK7D,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,qBAAqB,CAAC,IAAI,EAAE,CAAC;QAC1D,MAAM,IAAI,8BAA8B,CAAC,8CAA8C,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,cAAc,GAAoB,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,YAAY,GAAG,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,8BAA8B,CAAC,yCAAyC,CAAC,CAAC;QACtF,CAAC;QACD,cAAc,CAAC,IAAI,CACjB,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC,CAC/E,CAAC;QACF,QAAQ,CAAC,IAAI,CACX,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACvC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,CACtD,CACF,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;QAC7C,aAAa,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;KACnF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,0BAA0B,CAAC,WAAyC;IAC3E,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,IAAI,8BAA8B,CACtC,sDAAsD,CACvD,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,IAAI,8BAA8B,CAAC,qCAAqC,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAAkC,EAClC,WAAyC;IAEzC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,wBAAwB,CAAC,EAAE,CAAC;QACxF,MAAM,IAAI,8BAA8B,CAAC,iDAAiD,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;QACzC,MAAM,IAAI,8BAA8B,CACtC,wDAAwD,CACzD,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import type { CheckMessage } from \"../../check/check.ts\";\nimport type { CoreSnapshot } from \"../../check-settlement/facts.ts\";\nimport type { NormalizedCheck } from \"../../project-definition/project-definition.ts\";\nimport type { SettledTask } from \"../task-scheduler/scheduler.ts\";\nimport type { CheckDuration, CheckRunMessage } from \"../result.ts\";\nimport {\n CheckExecutionInvariantFailure,\n recordSettledCheck,\n type CheckIdentity,\n type SettledCheckFacts\n} from \"./execution-settlement.ts\";\nimport type { PreparedCheck } from \"./preflight.ts\";\nimport type { CheckExecutionState, ResolvedCheckExecution } from \"./resolved-checks.ts\";\n\nconst EMPTY_MESSAGES: readonly CheckMessage[] = Object.freeze([]);\n\n/** Closes the task graph, lifecycle facts, and canonical Check summaries as one Run boundary. */\nexport function closeResolvedChecks(\n input: Readonly<{\n readonly allChecks: readonly NormalizedCheck[];\n readonly graphRun: Awaited<\n ReturnType<typeof import(\"../task-scheduler/scheduler.ts\").runTaskGraph<void>>\n >;\n readonly readyChecks: readonly PreparedCheck[];\n readonly state: CheckExecutionState;\n }>\n): ResolvedCheckExecution {\n try {\n assertNoTaskEngineFailures(input.graphRun.settlements);\n if (input.graphRun.cancelled) {\n return closeCancelledExecution({\n normalizedChecks: input.allChecks,\n preparedChecks: input.readyChecks,\n state: input.state\n });\n }\n assertEveryCheckClosed(input.readyChecks, input.graphRun.settlements);\n return resolvedExecution(\"completed\", input.state.session.freeze(), input.state);\n } catch (error) {\n throw trustedFailure(error);\n }\n}\n\nexport function closeCancelledExecution(\n input: Readonly<{\n readonly normalizedChecks: readonly NormalizedCheck[];\n readonly preparedChecks: readonly PreparedCheck[];\n readonly state: CheckExecutionState;\n }>\n): ResolvedCheckExecution {\n input.state.session.closeUnresolvedAsCancelled();\n const snapshot = input.state.session.freeze();\n settleUnstartedCancelledChecks({ ...input, snapshot });\n return resolvedExecution(\"cancelled\", snapshot, input.state);\n}\n\nexport function checkIdentity(\n check: Pick<NormalizedCheck, \"definition\" | \"visibility\">\n): CheckIdentity {\n return Object.freeze({\n checkId: check.definition.checkId,\n displayName: check.definition.displayName,\n visibility: check.visibility\n });\n}\n\nexport function trustedFailure(error: unknown): CheckExecutionInvariantFailure {\n return error instanceof CheckExecutionInvariantFailure\n ? error\n : new CheckExecutionInvariantFailure(\n \"Check execution adapter escaped its contained failure boundary\"\n );\n}\n\nfunction resolvedExecution(\n kind: ResolvedCheckExecution[\"kind\"],\n snapshot: CoreSnapshot,\n state: CheckExecutionState\n): ResolvedCheckExecution {\n return Object.freeze({\n kind,\n ...checkRunSummaries(snapshot, state.settledFactsByCheckId),\n snapshot\n });\n}\n\nfunction settleUnstartedCancelledChecks(\n input: Readonly<{\n readonly normalizedChecks: readonly NormalizedCheck[];\n readonly preparedChecks: readonly PreparedCheck[];\n readonly snapshot: CoreSnapshot;\n readonly state: CheckExecutionState;\n }>\n): void {\n const normalizedByCheckId = new Map(\n input.normalizedChecks.map((check) => [check.definition.checkId, check])\n );\n const preparedByCheckId = new Map(\n input.preparedChecks.map((check) => [check.definition.checkId, check])\n );\n for (const check of input.snapshot.checks) {\n if (input.state.settledFactsByCheckId.has(check.checkId)) continue;\n const normalized = normalizedByCheckId.get(check.checkId);\n if (normalized === undefined) {\n throw new CheckExecutionInvariantFailure(\n \"Cancelled Check does not identify a normalized Check\"\n );\n }\n recordSettledCheck({\n check: checkIdentity(normalized),\n durationMs: null,\n messages: preparedByCheckId.get(check.checkId)?.preflightMessages ?? EMPTY_MESSAGES,\n outcome: check.outcome,\n phase: \"execution\",\n state: input.state\n });\n }\n}\n\nfunction checkRunSummaries(\n snapshot: CoreSnapshot,\n settledFactsByCheckId: ReadonlyMap<string, SettledCheckFacts>\n): Readonly<{\n readonly checkDurations: readonly CheckDuration[];\n readonly checkMessages: readonly CheckRunMessage[];\n}> {\n if (snapshot.checks.length !== settledFactsByCheckId.size) {\n throw new CheckExecutionInvariantFailure(\"Check settled facts do not close every Check\");\n }\n const checkDurations: CheckDuration[] = [];\n const messages: CheckRunMessage[] = [];\n for (const check of snapshot.checks) {\n const settledFacts = settledFactsByCheckId.get(check.checkId);\n if (settledFacts === undefined) {\n throw new CheckExecutionInvariantFailure(\"Check settled facts are missing a Check\");\n }\n checkDurations.push(\n Object.freeze({ checkId: check.checkId, durationMs: settledFacts.durationMs })\n );\n messages.push(\n ...settledFacts.messages.map((message) =>\n Object.freeze({ checkId: check.checkId, ...message })\n )\n );\n }\n return Object.freeze({\n checkDurations: Object.freeze(checkDurations),\n checkMessages: messages.length === 0 ? Object.freeze([]) : Object.freeze(messages)\n });\n}\n\nfunction assertNoTaskEngineFailures(settlements: readonly SettledTask<void>[]): void {\n for (const settled of settlements) {\n if (settled.settlement.kind === \"failed\") {\n throw new CheckExecutionInvariantFailure(\n \"Task engine received an unexpected execution failure\"\n );\n }\n if (settled.settlement.kind === \"blocked\") {\n throw new CheckExecutionInvariantFailure(\"Task engine blocked a Product Check\");\n }\n }\n}\n\nfunction assertEveryCheckClosed(\n checks: readonly NormalizedCheck[],\n settlements: readonly SettledTask<void>[]\n): void {\n if (settlements.some((settled) => settled.settlement.kind === \"cancelled-before-start\")) {\n throw new CheckExecutionInvariantFailure(\"Non-cancelled Task graph left a Check unstarted\");\n }\n if (checks.length !== settlements.length) {\n throw new CheckExecutionInvariantFailure(\n \"Task graph does not have one Task per executable Check\"\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"execution-finalization.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/execution-finalization.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CheckMessage } from \"../../check/check.ts\";\nimport type { CoreSnapshot } from \"../../check-settlement/facts.ts\";\nimport type {\n NormalizedCheck,\n SchedulerMeasurementContext\n} from \"../../project-definition/project-definition.ts\";\nimport type { SettledTask } from \"../task-scheduler/scheduler.ts\";\nimport type { CheckDuration, CheckRunMessage } from \"../result.ts\";\nimport {\n CheckExecutionInvariantFailure,\n recordSettledCheck,\n type CheckIdentity,\n type CheckExecutionState,\n type SettledCheckFacts\n} from \"./execution-settlement.ts\";\nimport type { ResolvedCheckExecution } from \"./resolved-execution-result.ts\";\n\nconst EMPTY_MESSAGES: readonly CheckMessage[] = Object.freeze([]);\n\n/** Closes the task graph, lifecycle facts, and canonical Check summaries as one Run boundary. */\nexport function closeResolvedChecks(\n input: Readonly<{\n readonly allChecks: readonly NormalizedCheck[];\n readonly effectiveCheckIds: readonly string[];\n readonly graphRun: Awaited<\n ReturnType<typeof import(\"../task-scheduler/scheduler.ts\").runTaskGraph<boolean>>\n >;\n readonly state: CheckExecutionState;\n }>\n): ResolvedCheckExecution {\n try {\n assertNoTaskEngineFailures(input.graphRun.settlements);\n if (input.graphRun.admissionPolicyFault !== undefined) {\n return closeAdmissionPolicyFailed({\n normalizedChecks: input.allChecks,\n state: input.state,\n terminalSchedulerMeasurement: input.graphRun.terminalMeasurement\n });\n }\n if (input.graphRun.cancelled) {\n return closeCancelledExecution({\n normalizedChecks: input.allChecks,\n state: input.state,\n terminalSchedulerMeasurement: input.graphRun.terminalMeasurement\n });\n }\n assertEveryCheckClosed(input.allChecks, input.graphRun.settlements);\n return completedResolvedExecution(\n input.effectiveCheckIds,\n input.state.session.freeze(),\n input.state,\n input.graphRun.terminalMeasurement\n );\n } catch (error) {\n throw trustedFailure(error);\n }\n}\n\nexport function closeAdmissionPolicyFailed(\n input: Readonly<{\n readonly normalizedChecks: readonly NormalizedCheck[];\n readonly state: CheckExecutionState;\n readonly terminalSchedulerMeasurement?: SchedulerMeasurementContext;\n }>\n): ResolvedCheckExecution {\n input.state.session.closeUnresolvedAsCancelled();\n const snapshot = input.state.session.freeze();\n settleUnstartedCancelledChecks({ ...input, snapshot });\n return resolvedExecution(\n \"admission-policy-failed\",\n snapshot,\n input.state,\n input.terminalSchedulerMeasurement\n );\n}\n\nexport function closeCancelledExecution(\n input: Readonly<{\n readonly normalizedChecks: readonly NormalizedCheck[];\n readonly state: CheckExecutionState;\n readonly terminalSchedulerMeasurement?: SchedulerMeasurementContext;\n }>\n): ResolvedCheckExecution {\n input.state.session.closeUnresolvedAsCancelled();\n const snapshot = input.state.session.freeze();\n settleUnstartedCancelledChecks({ ...input, snapshot });\n return resolvedExecution(\"cancelled\", snapshot, input.state, input.terminalSchedulerMeasurement);\n}\n\nexport function checkIdentity(\n check: Pick<NormalizedCheck, \"definition\" | \"visibility\">\n): CheckIdentity {\n return Object.freeze({\n checkId: check.definition.checkId,\n displayName: check.definition.displayName,\n visibility: check.visibility\n });\n}\n\nexport function trustedFailure(error: unknown): CheckExecutionInvariantFailure {\n return error instanceof CheckExecutionInvariantFailure\n ? error\n : new CheckExecutionInvariantFailure(\n \"Check execution adapter escaped its contained failure boundary\"\n );\n}\n\nfunction resolvedExecution(\n kind: Exclude<ResolvedCheckExecution[\"kind\"], \"completed\">,\n snapshot: CoreSnapshot,\n state: CheckExecutionState,\n terminalSchedulerMeasurement: SchedulerMeasurementContext | undefined\n): ResolvedCheckExecution {\n return Object.freeze({\n kind,\n ...checkRunSummaries(snapshot, state.settledFactsByCheckId),\n snapshot,\n ...(terminalSchedulerMeasurement === undefined ? {} : { terminalSchedulerMeasurement })\n });\n}\n\nfunction completedResolvedExecution(\n effectiveCheckIds: readonly string[],\n snapshot: CoreSnapshot,\n state: CheckExecutionState,\n terminalSchedulerMeasurement: SchedulerMeasurementContext | undefined\n): Extract<ResolvedCheckExecution, { readonly kind: \"completed\" }> {\n return Object.freeze({\n kind: \"completed\",\n ...checkRunSummaries(snapshot, state.settledFactsByCheckId),\n effectiveCheckIds,\n snapshot,\n ...(terminalSchedulerMeasurement === undefined ? {} : { terminalSchedulerMeasurement })\n });\n}\n\nfunction settleUnstartedCancelledChecks(\n input: Readonly<{\n readonly normalizedChecks: readonly NormalizedCheck[];\n readonly snapshot: CoreSnapshot;\n readonly state: CheckExecutionState;\n }>\n): void {\n const normalizedByCheckId = new Map(\n input.normalizedChecks.map((check) => [check.definition.checkId, check])\n );\n for (const check of input.snapshot.checks) {\n if (input.state.settledFactsByCheckId.has(check.checkId)) continue;\n const normalized = normalizedByCheckId.get(check.checkId);\n if (normalized === undefined) {\n throw new CheckExecutionInvariantFailure(\n \"Cancelled Check does not identify a normalized Check\"\n );\n }\n recordSettledCheck({\n check: checkIdentity(normalized),\n durationMs: null,\n messages: EMPTY_MESSAGES,\n outcome: check.outcome,\n phase: \"execution\",\n state: input.state\n });\n }\n}\n\nfunction checkRunSummaries(\n snapshot: CoreSnapshot,\n settledFactsByCheckId: ReadonlyMap<string, SettledCheckFacts>\n): Readonly<{\n readonly checkDurations: readonly CheckDuration[];\n readonly checkMessages: readonly CheckRunMessage[];\n}> {\n if (snapshot.checks.length !== settledFactsByCheckId.size) {\n throw new CheckExecutionInvariantFailure(\"Check settled facts do not close every Check\");\n }\n const checkDurations: CheckDuration[] = [];\n const messages: CheckRunMessage[] = [];\n for (const check of snapshot.checks) {\n const settledFacts = settledFactsByCheckId.get(check.checkId);\n if (settledFacts === undefined) {\n throw new CheckExecutionInvariantFailure(\"Check settled facts are missing a Check\");\n }\n checkDurations.push(\n Object.freeze({\n checkId: check.checkId,\n durationMs: settledFacts.durationMs\n })\n );\n messages.push(\n ...settledFacts.messages.map((message) =>\n Object.freeze({ checkId: check.checkId, ...message })\n )\n );\n }\n return Object.freeze({\n checkDurations: Object.freeze(checkDurations),\n checkMessages: messages.length === 0 ? Object.freeze([]) : Object.freeze(messages)\n });\n}\n\n/** Closes one Scheduler-blocked Check before a terminal observer may start. */\nexport function settleBlockedDependent(\n input: Readonly<{\n readonly check: NormalizedCheck;\n readonly dependencyIds: readonly string[];\n readonly state: CheckExecutionState;\n }>\n): void {\n const scope = input.state.session.openCheckScope(input.check.definition.checkId);\n const outcome = scope.settleProduct(\n Object.freeze({\n status: \"unavailable\" as const,\n reason: Object.freeze({\n code: \"dependency-not-passed\",\n checkIds: Object.freeze([...input.dependencyIds])\n })\n })\n );\n recordSettledCheck({\n check: checkIdentity(input.check),\n durationMs: null,\n messages: EMPTY_MESSAGES,\n outcome,\n phase: \"dependency\",\n state: input.state\n });\n}\n\nfunction assertNoTaskEngineFailures(settlements: readonly SettledTask<boolean>[]): void {\n for (const settled of settlements) {\n if (settled.settlement.kind === \"failed\") {\n throw new CheckExecutionInvariantFailure(\n \"Task engine received an unexpected execution failure\"\n );\n }\n }\n}\n\nfunction assertEveryCheckClosed(\n checks: readonly NormalizedCheck[],\n settlements: readonly SettledTask<boolean>[]\n): void {\n if (settlements.some((settled) => settled.settlement.kind === \"cancelled-before-start\")) {\n throw new CheckExecutionInvariantFailure(\"Non-cancelled Task graph left a Check unstarted\");\n }\n if (checks.length !== settlements.length) {\n throw new CheckExecutionInvariantFailure(\n \"Task graph does not have one Task per executable Check\"\n );\n }\n}\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { diagnosticTags, summarizeDiagnosticValue } from "../diagnostic-logging/logger.mjs";
|
|
2
2
|
import { parseCheckTerminalResult } from "./terminal-result.mjs";
|
|
3
|
+
import { combineCheckMessages } from "./messages.mjs";
|
|
3
4
|
export class CheckExecutionInvariantFailure extends Error {
|
|
4
5
|
constructor(message) {
|
|
5
6
|
super(message);
|
|
@@ -11,7 +12,10 @@ export function settleCallback(input) {
|
|
|
11
12
|
const { callback } = input;
|
|
12
13
|
if (callback.source === "product") {
|
|
13
14
|
const outcome = input.scope.settleProduct(callback.result);
|
|
14
|
-
return Object.freeze({
|
|
15
|
+
return Object.freeze({
|
|
16
|
+
messages: combineCheckMessages(input.preflightMessages, callback.consoleMessages),
|
|
17
|
+
outcome
|
|
18
|
+
});
|
|
15
19
|
}
|
|
16
20
|
const terminal = parseCheckTerminalResult(callback.result);
|
|
17
21
|
if (terminal === undefined) {
|
|
@@ -31,8 +35,8 @@ export function settleCallback(input) {
|
|
|
31
35
|
}
|
|
32
36
|
return Object.freeze({
|
|
33
37
|
messages: terminal !== undefined && settlement.authorResultAccepted
|
|
34
|
-
?
|
|
35
|
-
: input.preflightMessages,
|
|
38
|
+
? combineCheckMessages(input.preflightMessages, callback.consoleMessages, terminal.messages)
|
|
39
|
+
: combineCheckMessages(input.preflightMessages, callback.consoleMessages),
|
|
36
40
|
outcome: settlement.outcome
|
|
37
41
|
});
|
|
38
42
|
}
|
|
@@ -47,7 +51,8 @@ export function recordSettledCheck(input) {
|
|
|
47
51
|
tags: diagnosticTags(`CHECK:${input.check.checkId}`, input.phase.toUpperCase(), "FINISHED", input.outcome.status.toUpperCase()),
|
|
48
52
|
details: {
|
|
49
53
|
durationMs: input.durationMs,
|
|
50
|
-
|
|
54
|
+
messageCount: input.messages.length,
|
|
55
|
+
phase: input.phase,
|
|
51
56
|
...diagnosticSettledOutcome(input.outcome)
|
|
52
57
|
}
|
|
53
58
|
});
|
|
@@ -57,6 +62,7 @@ export function recordSettledCheck(input) {
|
|
|
57
62
|
outcome: input.outcome,
|
|
58
63
|
durationMs: input.durationMs,
|
|
59
64
|
messages: input.messages,
|
|
65
|
+
records: input.state.session.readSettledCheckRecords(input.check.checkId),
|
|
60
66
|
visibility: input.check.visibility
|
|
61
67
|
}));
|
|
62
68
|
}
|
|
@@ -64,13 +70,11 @@ function diagnosticSettledOutcome(outcome) {
|
|
|
64
70
|
switch (outcome.status) {
|
|
65
71
|
case "passed":
|
|
66
72
|
case "failed":
|
|
67
|
-
return Object.freeze({
|
|
73
|
+
return Object.freeze({ status: outcome.status });
|
|
68
74
|
case "not-applicable":
|
|
69
|
-
return outcome.reason
|
|
70
|
-
? Object.freeze({})
|
|
71
|
-
: Object.freeze({ reason: outcome.reason });
|
|
75
|
+
return Object.freeze({ reasonCode: outcome.reason?.code ?? null, status: outcome.status });
|
|
72
76
|
case "unavailable":
|
|
73
|
-
return Object.freeze({
|
|
77
|
+
return Object.freeze({ reasonCode: outcome.reason.code, status: outcome.status });
|
|
74
78
|
}
|
|
75
79
|
}
|
|
76
80
|
function diagnosticOutcome(outcome) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-settlement.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/execution-settlement.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EACd,wBAAwB,EAEzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"execution-settlement.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/execution-settlement.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CheckMessage, CheckOutcome, CheckVisibility } from \"../../check/check.ts\";\nimport type { CoreCheckSession } from \"../../check-settlement/session.ts\";\nimport {\n diagnosticTags,\n summarizeDiagnosticValue,\n type DiagnosticLogger\n} from \"../diagnostic-logging/logger.ts\";\nimport { parseCheckTerminalResult } from \"./terminal-result.ts\";\nimport { combineCheckMessages } from \"./messages.ts\";\nimport type { CheckExecutionLifecycle } from \"./lifecycle.ts\";\nimport type { executeCheckCallback } from \"./callback.ts\";\n\nexport type CheckIdentity = Readonly<{\n readonly checkId: string;\n readonly displayName: string;\n readonly visibility: CheckVisibility;\n}>;\n\nexport interface SettledCheckFacts {\n readonly durationMs: number | null;\n readonly messages: readonly CheckMessage[];\n}\n\nexport type CheckExecutionSettlementState = Readonly<{\n readonly session: CoreCheckSession;\n readonly diagnosticLogger: DiagnosticLogger | undefined;\n readonly lifecycle: CheckExecutionLifecycle | undefined;\n readonly settledFactsByCheckId: Map<string, SettledCheckFacts>;\n}>;\n\n/** Mutable execution session state shared by execution and terminal finalization. */\nexport type CheckExecutionState = CheckExecutionSettlementState;\n\nexport class CheckExecutionInvariantFailure extends Error {\n public constructor(message: string) {\n super(message);\n this.name = \"CheckExecutionInvariantFailure\";\n }\n}\n\nexport function settleCallback(\n input: Readonly<{\n readonly callback: Awaited<ReturnType<typeof executeCheckCallback>>;\n readonly checkId: string;\n readonly diagnosticLogger: DiagnosticLogger | undefined;\n readonly preflightMessages: readonly CheckMessage[];\n readonly scope: ReturnType<CoreCheckSession[\"openCheckScope\"]>;\n }>\n): Readonly<{ readonly messages: readonly CheckMessage[]; readonly outcome: CheckOutcome }> {\n const executionTags = diagnosticTags(`CHECK:${input.checkId}`, \"EXECUTION\");\n const { callback } = input;\n if (callback.source === \"product\") {\n const outcome = input.scope.settleProduct(callback.result);\n return Object.freeze({\n messages: combineCheckMessages(input.preflightMessages, callback.consoleMessages),\n outcome\n });\n }\n const terminal = parseCheckTerminalResult(callback.result);\n if (terminal === undefined) {\n input.diagnosticLogger?.observe({\n event: \"callback.malformed\",\n tags: diagnosticTags(...executionTags, \"MALFORMED\"),\n details: { result: callback.result }\n });\n }\n const settlement = input.scope.settle(terminal?.result ?? callback.result);\n if (terminal !== undefined && !settlement.authorResultAccepted) {\n input.diagnosticLogger?.observe({\n event: \"check.contained\",\n tags: diagnosticTags(...executionTags, \"CONTAINED\"),\n details: { outcome: diagnosticOutcome(settlement.outcome), raw: callback.result }\n });\n }\n return Object.freeze({\n messages:\n terminal !== undefined && settlement.authorResultAccepted\n ? combineCheckMessages(input.preflightMessages, callback.consoleMessages, terminal.messages)\n : combineCheckMessages(input.preflightMessages, callback.consoleMessages),\n outcome: settlement.outcome\n });\n}\n\n/** Records one terminal Check lifecycle fact after its owning Core scope has closed. */\nexport function recordSettledCheck(\n input: Readonly<{\n readonly check: CheckIdentity;\n readonly durationMs: number | null;\n readonly messages: readonly CheckMessage[];\n readonly outcome: CheckOutcome;\n readonly phase: \"control\" | \"dependency\" | \"execution\" | \"preflight\";\n readonly state: CheckExecutionSettlementState;\n }>\n): void {\n if (input.state.settledFactsByCheckId.has(input.check.checkId)) {\n throw new CheckExecutionInvariantFailure(\"Check lifecycle settled more than once\");\n }\n input.state.settledFactsByCheckId.set(\n input.check.checkId,\n Object.freeze({ durationMs: input.durationMs, messages: input.messages })\n );\n input.state.diagnosticLogger?.observe({\n event: \"check.finished\",\n tags: diagnosticTags(\n `CHECK:${input.check.checkId}`,\n input.phase.toUpperCase(),\n \"FINISHED\",\n input.outcome.status.toUpperCase()\n ),\n details: {\n durationMs: input.durationMs,\n messageCount: input.messages.length,\n phase: input.phase,\n ...diagnosticSettledOutcome(input.outcome)\n }\n });\n input.state.lifecycle?.settled(\n Object.freeze({\n checkId: input.check.checkId,\n displayName: input.check.displayName,\n outcome: input.outcome,\n durationMs: input.durationMs,\n messages: input.messages,\n records: input.state.session.readSettledCheckRecords(input.check.checkId),\n visibility: input.check.visibility\n })\n );\n}\n\nfunction diagnosticSettledOutcome(outcome: CheckOutcome): Readonly<Record<string, unknown>> {\n switch (outcome.status) {\n case \"passed\":\n case \"failed\":\n return Object.freeze({ status: outcome.status });\n case \"not-applicable\":\n return Object.freeze({ reasonCode: outcome.reason?.code ?? null, status: outcome.status });\n case \"unavailable\":\n return Object.freeze({ reasonCode: outcome.reason.code, status: outcome.status });\n }\n}\n\nfunction diagnosticOutcome(outcome: CheckOutcome): Readonly<Record<string, unknown>> {\n switch (outcome.status) {\n case \"passed\":\n case \"failed\":\n return Object.freeze({\n data: summarizeDiagnosticValue(outcome.data),\n status: outcome.status\n });\n case \"not-applicable\":\n return Object.freeze({ reason: outcome.reason ?? null, status: outcome.status });\n case \"unavailable\":\n return Object.freeze({ reason: outcome.reason, status: outcome.status });\n }\n}\n"]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { diagnosticTags } from "../diagnostic-logging/logger.mjs";
|
|
2
|
+
export const FLAG_CONDITION_NOT_MATCHED_CODE = "flag-condition-not-matched";
|
|
3
|
+
/**
|
|
4
|
+
* Selects canonical Check IDs for direct flag matches and their opt-in
|
|
5
|
+
* `dependsOn` closures after complete static graph validation.
|
|
6
|
+
*/
|
|
7
|
+
export function selectEffectiveCheckIds(checks, flags) {
|
|
8
|
+
const expandedCheckIds = new Set();
|
|
9
|
+
const selectedCheckIds = new Set();
|
|
10
|
+
const checksByCheckId = new Map(checks.map((check) => [check.definition.checkId, check]));
|
|
11
|
+
for (const check of checks) {
|
|
12
|
+
const enablement = check.enabledByFlags;
|
|
13
|
+
if (enablement !== undefined && !matchesFlagEnablement(enablement, flags))
|
|
14
|
+
continue;
|
|
15
|
+
if (enablement?.propagateDependsOn === true) {
|
|
16
|
+
selectCheckAndDependsOnClosure(check, checksByCheckId, expandedCheckIds, selectedCheckIds);
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
selectedCheckIds.add(check.definition.checkId);
|
|
20
|
+
}
|
|
21
|
+
return Object.freeze([...selectedCheckIds].sort());
|
|
22
|
+
}
|
|
23
|
+
/** Resolves all flag-controlled outcomes before Scheduler admission or Check-owned work. */
|
|
24
|
+
export function resolveFlagControlSettlements(input) {
|
|
25
|
+
if (input.signal?.aborted === true)
|
|
26
|
+
return Object.freeze([]);
|
|
27
|
+
const settlements = [];
|
|
28
|
+
const selectedCheckIds = new Set(input.effectiveCheckIds);
|
|
29
|
+
for (const check of input.checks) {
|
|
30
|
+
const settlement = resolveFlagControl(check, selectedCheckIds);
|
|
31
|
+
if (settlement === undefined)
|
|
32
|
+
continue;
|
|
33
|
+
settlements.push(settlement);
|
|
34
|
+
input.diagnosticLogger?.observe({
|
|
35
|
+
event: "control.resolved",
|
|
36
|
+
tags: diagnosticTags(`CHECK:${check.definition.checkId}`, "CONTROL", FLAG_CONDITION_NOT_MATCHED_CODE.toUpperCase()),
|
|
37
|
+
details: {
|
|
38
|
+
enabledByFlags: check.enabledByFlags,
|
|
39
|
+
outcome: settlement.outcome
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
return Object.freeze(settlements);
|
|
44
|
+
}
|
|
45
|
+
function resolveFlagControl(check, selectedCheckIds) {
|
|
46
|
+
if (check.enabledByFlags === undefined || selectedCheckIds.has(check.definition.checkId)) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
return Object.freeze({
|
|
50
|
+
check: Object.freeze({
|
|
51
|
+
definition: check.definition,
|
|
52
|
+
visibility: check.visibility
|
|
53
|
+
}),
|
|
54
|
+
outcome: Object.freeze({
|
|
55
|
+
status: "not-applicable",
|
|
56
|
+
reason: Object.freeze({ code: FLAG_CONDITION_NOT_MATCHED_CODE })
|
|
57
|
+
})
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function selectCheckAndDependsOnClosure(check, checksByCheckId, expandedCheckIds, selectedCheckIds) {
|
|
61
|
+
const checkId = check.definition.checkId;
|
|
62
|
+
if (expandedCheckIds.has(checkId))
|
|
63
|
+
return;
|
|
64
|
+
expandedCheckIds.add(checkId);
|
|
65
|
+
selectedCheckIds.add(checkId);
|
|
66
|
+
for (const dependencyId of check.dependsOn) {
|
|
67
|
+
const dependency = checksByCheckId.get(dependencyId);
|
|
68
|
+
if (dependency === undefined) {
|
|
69
|
+
throw new Error("Validated Check graph has an unavailable dependency");
|
|
70
|
+
}
|
|
71
|
+
selectCheckAndDependsOnClosure(dependency, checksByCheckId, expandedCheckIds, selectedCheckIds);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function matchesFlagEnablement(enablement, runFlags) {
|
|
75
|
+
const isPresentInRun = (flag) => runFlags.includes(flag);
|
|
76
|
+
switch (enablement.mode) {
|
|
77
|
+
case "all":
|
|
78
|
+
return enablement.flags.every(isPresentInRun);
|
|
79
|
+
case "any":
|
|
80
|
+
return enablement.flags.some(isPresentInRun);
|
|
81
|
+
case "none":
|
|
82
|
+
return !enablement.flags.some(isPresentInRun);
|
|
83
|
+
case "not-all":
|
|
84
|
+
return !enablement.flags.every(isPresentInRun);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=flag-controls.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flag-controls.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/flag-controls.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NormalizedCheck } from \"../../project-definition/project-definition.ts\";\nimport { diagnosticTags, type DiagnosticLogger } from \"../diagnostic-logging/logger.ts\";\n\nexport const FLAG_CONDITION_NOT_MATCHED_CODE = \"flag-condition-not-matched\";\n\ntype FlagControlledCheck = Pick<NormalizedCheck, \"definition\" | \"visibility\">;\ntype FlagControlOutcome = Readonly<{\n readonly status: \"not-applicable\";\n readonly reason: Readonly<{ readonly code: typeof FLAG_CONDITION_NOT_MATCHED_CODE }>;\n}>;\n\nexport type FlagControlSettlement = Readonly<{\n readonly check: FlagControlledCheck;\n readonly outcome: FlagControlOutcome;\n}>;\n\n/**\n * Selects canonical Check IDs for direct flag matches and their opt-in\n * `dependsOn` closures after complete static graph validation.\n */\nexport function selectEffectiveCheckIds(\n checks: readonly NormalizedCheck[],\n flags: readonly string[]\n): readonly string[] {\n const expandedCheckIds = new Set<string>();\n const selectedCheckIds = new Set<string>();\n const checksByCheckId = new Map(\n checks.map((check) => [check.definition.checkId, check] as const)\n );\n\n for (const check of checks) {\n const enablement = check.enabledByFlags;\n if (enablement !== undefined && !matchesFlagEnablement(enablement, flags)) continue;\n\n if (enablement?.propagateDependsOn === true) {\n selectCheckAndDependsOnClosure(check, checksByCheckId, expandedCheckIds, selectedCheckIds);\n continue;\n }\n selectedCheckIds.add(check.definition.checkId);\n }\n\n return Object.freeze([...selectedCheckIds].sort());\n}\n\n/** Resolves all flag-controlled outcomes before Scheduler admission or Check-owned work. */\nexport function resolveFlagControlSettlements(\n input: Readonly<{\n readonly checks: readonly NormalizedCheck[];\n readonly diagnosticLogger?: DiagnosticLogger;\n readonly effectiveCheckIds: readonly string[];\n readonly signal: AbortSignal | undefined;\n }>\n): readonly FlagControlSettlement[] {\n if (input.signal?.aborted === true) return Object.freeze([]);\n\n const settlements: FlagControlSettlement[] = [];\n const selectedCheckIds = new Set(input.effectiveCheckIds);\n for (const check of input.checks) {\n const settlement = resolveFlagControl(check, selectedCheckIds);\n if (settlement === undefined) continue;\n settlements.push(settlement);\n input.diagnosticLogger?.observe({\n event: \"control.resolved\",\n tags: diagnosticTags(\n `CHECK:${check.definition.checkId}`,\n \"CONTROL\",\n FLAG_CONDITION_NOT_MATCHED_CODE.toUpperCase()\n ),\n details: {\n enabledByFlags: check.enabledByFlags,\n outcome: settlement.outcome\n }\n });\n }\n return Object.freeze(settlements);\n}\n\nfunction resolveFlagControl(\n check: NormalizedCheck,\n selectedCheckIds: ReadonlySet<string>\n): FlagControlSettlement | undefined {\n if (check.enabledByFlags === undefined || selectedCheckIds.has(check.definition.checkId)) {\n return undefined;\n }\n return Object.freeze({\n check: Object.freeze({\n definition: check.definition,\n visibility: check.visibility\n }),\n outcome: Object.freeze({\n status: \"not-applicable\",\n reason: Object.freeze({ code: FLAG_CONDITION_NOT_MATCHED_CODE })\n })\n });\n}\n\nfunction selectCheckAndDependsOnClosure(\n check: NormalizedCheck,\n checksByCheckId: ReadonlyMap<string, NormalizedCheck>,\n expandedCheckIds: Set<string>,\n selectedCheckIds: Set<string>\n): void {\n const checkId = check.definition.checkId;\n if (expandedCheckIds.has(checkId)) return;\n expandedCheckIds.add(checkId);\n selectedCheckIds.add(checkId);\n\n for (const dependencyId of check.dependsOn) {\n const dependency = checksByCheckId.get(dependencyId);\n if (dependency === undefined) {\n throw new Error(\"Validated Check graph has an unavailable dependency\");\n }\n selectCheckAndDependsOnClosure(dependency, checksByCheckId, expandedCheckIds, selectedCheckIds);\n }\n}\n\nfunction matchesFlagEnablement(\n enablement: NonNullable<NormalizedCheck[\"enabledByFlags\"]>,\n runFlags: readonly string[]\n): boolean {\n const isPresentInRun = (flag: string): boolean => runFlags.includes(flag);\n switch (enablement.mode) {\n case \"all\":\n return enablement.flags.every(isPresentInRun);\n case \"any\":\n return enablement.flags.some(isPresentInRun);\n case \"none\":\n return !enablement.flags.some(isPresentInRun);\n case \"not-all\":\n return !enablement.flags.every(isPresentInRun);\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/lifecycle.ts"],"names":[],"mappings":"","sourcesContent":["import type { CheckMessage, CheckOutcome, CheckVisibility } from \"../../check/check.ts\";\nimport type { CoreRecord } from \"../../check-settlement/facts.ts\";\n\n/** Private Run handoff for Check lifecycle presentation and accounting. */\nexport type CheckExecutionLifecycle = Readonly<{\n /** Fires after the invocation-wide flag-control phase and before Scheduler execution starts. */\n readonly flagControlCompleted: () => void;\n readonly started: (fact: CheckStartedFact) => void;\n readonly settled: (fact: CheckSettledFact) => void;\n}>;\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 records: readonly CoreRecord[];\n outcome: CheckOutcome;\n visibility: CheckVisibility;\n }>;\n"]}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { hasRequiredAndOptionalRecordKeys, snapshotClosedArray, snapshotClosedRecord } from "../../data-boundary/closed-values.mjs";
|
|
2
2
|
const EMPTY_MESSAGES = Object.freeze([]);
|
|
3
|
+
/** Preserves phase-local order while avoiding mutable or per-call empty message collections. */
|
|
4
|
+
export function combineCheckMessages(...collections) {
|
|
5
|
+
const messages = collections.flat();
|
|
6
|
+
return messages.length === 0 ? EMPTY_MESSAGES : Object.freeze(messages);
|
|
7
|
+
}
|
|
3
8
|
/** Parses the shared closed Check-message attachment without retaining author input. */
|
|
4
9
|
export function parseCheckMessages(value) {
|
|
5
10
|
if (value === undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/messages.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gCAAgC,EAChC,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,sCAAsC,CAAC;AAE9C,MAAM,cAAc,GAA4B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAElE,wFAAwF;AACxF,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,cAAc,CAAC;IAC/C,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,gBAAgB,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAErD,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;QACjD,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC5C,IACE,OAAO,KAAK,SAAS;QACrB,CAAC,gCAAgC,CAAC,OAAO,EAAE;YACzC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;YACtC,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC;QACnC,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;QAChC,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QACzB,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QACnC,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAC5B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,OAAO,CAAC;AACtE,CAAC","sourcesContent":["import type { CheckMessage } from \"../../check/check.ts\";\nimport {\n hasRequiredAndOptionalRecordKeys,\n snapshotClosedArray,\n snapshotClosedRecord\n} from \"../../data-boundary/closed-values.ts\";\n\nconst EMPTY_MESSAGES: readonly CheckMessage[] = Object.freeze([]);\n\n/** Parses the shared closed Check-message attachment without retaining author input. */\nexport function parseCheckMessages(value: unknown): readonly CheckMessage[] | undefined {\n if (value === undefined) return EMPTY_MESSAGES;\n const authoredMessages = snapshotClosedArray(value);\n if (authoredMessages === undefined) return undefined;\n\n const messages: CheckMessage[] = [];\n for (const authoredMessage of authoredMessages) {\n const message = detachedMessage(authoredMessage);\n if (message === undefined) return undefined;\n messages.push(message);\n }\n return messages.length === 0 ? EMPTY_MESSAGES : Object.freeze(messages);\n}\n\nfunction detachedMessage(value: unknown): CheckMessage | undefined {\n const message = snapshotClosedRecord(value);\n if (\n message === undefined ||\n !hasRequiredAndOptionalRecordKeys(message, {\n required: [\"level\", \"code\", \"message\"],\n optional: []\n }) ||\n !isCheckMessageLevel(message.level) ||\n typeof message.code !== \"string\" ||\n message.code.length === 0 ||\n typeof message.message !== \"string\" ||\n message.message.length === 0\n ) {\n return undefined;\n }\n return Object.freeze({ code: message.code, level: message.level, message: message.message });\n}\n\nfunction isCheckMessageLevel(value: unknown): value is CheckMessage[\"level\"] {\n return value === \"info\" || value === \"warning\" || value === \"error\";\n}\n"]}
|
|
1
|
+
{"version":3,"file":"messages.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/messages.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gCAAgC,EAChC,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,sCAAsC,CAAC;AAE9C,MAAM,cAAc,GAA4B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAElE,gGAAgG;AAChG,MAAM,UAAU,oBAAoB,CAClC,GAAG,WAAiD;IAEpD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IACpC,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1E,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,cAAc,CAAC;IAC/C,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,gBAAgB,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAErD,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;QACjD,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC5C,IACE,OAAO,KAAK,SAAS;QACrB,CAAC,gCAAgC,CAAC,OAAO,EAAE;YACzC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;YACtC,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC;QACnC,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;QAChC,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QACzB,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QACnC,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAC5B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,OAAO,CAAC;AACtE,CAAC","sourcesContent":["import type { CheckMessage } from \"../../check/check.ts\";\nimport {\n hasRequiredAndOptionalRecordKeys,\n snapshotClosedArray,\n snapshotClosedRecord\n} from \"../../data-boundary/closed-values.ts\";\n\nconst EMPTY_MESSAGES: readonly CheckMessage[] = Object.freeze([]);\n\n/** Preserves phase-local order while avoiding mutable or per-call empty message collections. */\nexport function combineCheckMessages(\n ...collections: readonly (readonly CheckMessage[])[]\n): readonly CheckMessage[] {\n const messages = collections.flat();\n return messages.length === 0 ? EMPTY_MESSAGES : Object.freeze(messages);\n}\n\n/** Parses the shared closed Check-message attachment without retaining author input. */\nexport function parseCheckMessages(value: unknown): readonly CheckMessage[] | undefined {\n if (value === undefined) return EMPTY_MESSAGES;\n const authoredMessages = snapshotClosedArray(value);\n if (authoredMessages === undefined) return undefined;\n\n const messages: CheckMessage[] = [];\n for (const authoredMessage of authoredMessages) {\n const message = detachedMessage(authoredMessage);\n if (message === undefined) return undefined;\n messages.push(message);\n }\n return messages.length === 0 ? EMPTY_MESSAGES : Object.freeze(messages);\n}\n\nfunction detachedMessage(value: unknown): CheckMessage | undefined {\n const message = snapshotClosedRecord(value);\n if (\n message === undefined ||\n !hasRequiredAndOptionalRecordKeys(message, {\n required: [\"level\", \"code\", \"message\"],\n optional: []\n }) ||\n !isCheckMessageLevel(message.level) ||\n typeof message.code !== \"string\" ||\n message.code.length === 0 ||\n typeof message.message !== \"string\" ||\n message.message.length === 0\n ) {\n return undefined;\n }\n return Object.freeze({ code: message.code, level: message.level, message: message.message });\n}\n\nfunction isCheckMessageLevel(value: unknown): value is CheckMessage[\"level\"] {\n return value === \"info\" || value === \"warning\" || value === \"error\";\n}\n"]}
|
|
@@ -1,22 +1,26 @@
|
|
|
1
|
+
import { EMPTY_RESOURCE_UNIT_MAPPING } from "../../project-definition/resource-unit-mapping.mjs";
|
|
1
2
|
/**
|
|
2
3
|
* Pure executable-Check projection. Check ids are the only scheduler Task
|
|
3
4
|
* identities: containment has already been resolved by Definition and has no
|
|
4
5
|
* runtime alias or completion semantics here.
|
|
5
6
|
*/
|
|
6
|
-
export function planStaticCheckGraph(checks,
|
|
7
|
-
const
|
|
8
|
-
const tasks = checks.map((check) => taskForCheck(check, alreadySettledCheckIds));
|
|
7
|
+
export function planStaticCheckGraph(checks, resourceCapacities = EMPTY_RESOURCE_UNIT_MAPPING) {
|
|
8
|
+
const tasks = checks.map(taskForCheck);
|
|
9
9
|
const scopes = checks.map(scopeForCheck);
|
|
10
10
|
return Object.freeze({
|
|
11
|
+
resourceCapacities,
|
|
11
12
|
tasks: Object.freeze(tasks),
|
|
12
13
|
scopes: Object.freeze(scopes)
|
|
13
14
|
});
|
|
14
15
|
}
|
|
15
|
-
function taskForCheck(check
|
|
16
|
+
function taskForCheck(check) {
|
|
16
17
|
return Object.freeze({
|
|
17
|
-
|
|
18
|
+
admissionPriority: check.admissionPriority,
|
|
19
|
+
dependsOn: check.dependsOn,
|
|
18
20
|
id: check.definition.checkId,
|
|
19
21
|
mutex: check.mutex,
|
|
22
|
+
observes: check.observes,
|
|
23
|
+
resourceClaims: check.resourceClaims,
|
|
20
24
|
scopeId: scopeIdFor(check)
|
|
21
25
|
});
|
|
22
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/plan.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plan.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/plan.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,2BAA2B,EAE5B,MAAM,mDAAmD,CAAC;AAE3D;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAkC,EAClC,kBAAkB,GAAwB,2BAA2B;IAErE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,kBAAkB;QAClB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;KAC9B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,KAAsB;IAC1C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO;QAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC;KAC3B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,KAAsB;IAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;IACxC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;QAC1C,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC;QACrB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,cAAc,EAAE,MAAM;KACvB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,KAAsB;IACxC,OAAO,SAAS,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC7C,CAAC","sourcesContent":["import type { TaskGraph, TaskNode, TaskScope } from \"../task-scheduler/graph.ts\";\nimport type { NormalizedCheck } from \"../../project-definition/project-definition.ts\";\nimport {\n EMPTY_RESOURCE_UNIT_MAPPING,\n type ResourceUnitMapping\n} from \"../../project-definition/resource-unit-mapping.ts\";\n\n/**\n * Pure executable-Check projection. Check ids are the only scheduler Task\n * identities: containment has already been resolved by Definition and has no\n * runtime alias or completion semantics here.\n */\nexport function planStaticCheckGraph(\n checks: readonly NormalizedCheck[],\n resourceCapacities: ResourceUnitMapping = EMPTY_RESOURCE_UNIT_MAPPING\n): TaskGraph {\n const tasks = checks.map(taskForCheck);\n const scopes = checks.map(scopeForCheck);\n return Object.freeze({\n resourceCapacities,\n tasks: Object.freeze(tasks),\n scopes: Object.freeze(scopes)\n });\n}\n\nfunction taskForCheck(check: NormalizedCheck): TaskNode {\n return Object.freeze({\n admissionPriority: check.admissionPriority,\n dependsOn: check.dependsOn,\n id: check.definition.checkId,\n mutex: check.mutex,\n observes: check.observes,\n resourceClaims: check.resourceClaims,\n scopeId: scopeIdFor(check)\n });\n}\n\nfunction scopeForCheck(check: NormalizedCheck): TaskScope {\n const taskId = check.definition.checkId;\n return Object.freeze({\n activationTaskIds: Object.freeze([taskId]),\n id: scopeIdFor(check),\n maxParallel: check.maxParallel,\n terminalTaskId: taskId\n });\n}\n\nfunction scopeIdFor(check: NormalizedCheck): string {\n return `check/${check.definition.checkId}`;\n}\n"]}
|
|
@@ -1,21 +1,12 @@
|
|
|
1
1
|
import { snapshotJsonObject } from "../../check/options-snapshot.mjs";
|
|
2
2
|
import { diagnosticTags, summarizeDiagnosticValue } from "../diagnostic-logging/logger.mjs";
|
|
3
3
|
import { parseCheckPreflightResult } from "./preflight-result.mjs";
|
|
4
|
+
import { invokeWithCapturedConsole } from "./console-capture.mjs";
|
|
5
|
+
import { combineCheckMessages } from "./messages.mjs";
|
|
4
6
|
const EMPTY_MESSAGES = Object.freeze([]);
|
|
5
7
|
const INERT_SIGNAL = new AbortController().signal;
|
|
6
|
-
/**
|
|
7
|
-
export async function
|
|
8
|
-
const resolutions = [];
|
|
9
|
-
for (const check of input.checks) {
|
|
10
|
-
resolutions.push(await prepareCheck({
|
|
11
|
-
check,
|
|
12
|
-
diagnosticLogger: input.diagnosticLogger,
|
|
13
|
-
signal: input.signal
|
|
14
|
-
}));
|
|
15
|
-
}
|
|
16
|
-
return Object.freeze(resolutions);
|
|
17
|
-
}
|
|
18
|
-
async function prepareCheck(input) {
|
|
8
|
+
/** Resolves one Check's task-local preparation after Scheduler admission. */
|
|
9
|
+
export async function prepareCheck(input) {
|
|
19
10
|
if (input.signal?.aborted) {
|
|
20
11
|
return observeBlockedPreflight({
|
|
21
12
|
check: input.check,
|
|
@@ -45,18 +36,20 @@ function resolvePreflightInvocation(input, invocation) {
|
|
|
45
36
|
check: input.check,
|
|
46
37
|
diagnosticLogger: input.diagnosticLogger,
|
|
47
38
|
details: { error: invocation.error },
|
|
39
|
+
messages: invocation.messages,
|
|
48
40
|
result: input.signal?.aborted ? "cancelled-after-throw" : "threw",
|
|
49
41
|
reasonCode: input.signal?.aborted ? "execution-cancelled" : "preflight-threw"
|
|
50
42
|
});
|
|
51
43
|
}
|
|
52
|
-
return resolveReturnedPreflight(input, invocation.output);
|
|
44
|
+
return resolveReturnedPreflight(input, invocation.output, invocation.messages);
|
|
53
45
|
}
|
|
54
|
-
function resolveReturnedPreflight(input, preflightOutput) {
|
|
46
|
+
function resolveReturnedPreflight(input, preflightOutput, consoleMessages) {
|
|
55
47
|
if (input.signal?.aborted) {
|
|
56
48
|
return observeBlockedPreflight({
|
|
57
49
|
check: input.check,
|
|
58
50
|
diagnosticLogger: input.diagnosticLogger,
|
|
59
51
|
details: { raw: preflightOutput },
|
|
52
|
+
messages: consoleMessages,
|
|
60
53
|
result: "cancelled-after-callback",
|
|
61
54
|
reasonCode: "execution-cancelled"
|
|
62
55
|
});
|
|
@@ -67,19 +60,20 @@ function resolveReturnedPreflight(input, preflightOutput) {
|
|
|
67
60
|
check: input.check,
|
|
68
61
|
diagnosticLogger: input.diagnosticLogger,
|
|
69
62
|
details: { raw: preflightOutput },
|
|
63
|
+
messages: consoleMessages,
|
|
70
64
|
result: "malformed",
|
|
71
65
|
reasonCode: "invalid-preflight-result"
|
|
72
66
|
});
|
|
73
67
|
}
|
|
74
68
|
if (preflightResult.status === "failure" && preflightResult.action === "block") {
|
|
75
|
-
return resolveBlockedPreflightResult(input, preflightResult);
|
|
69
|
+
return resolveBlockedPreflightResult(input, preflightResult, consoleMessages);
|
|
76
70
|
}
|
|
77
|
-
return resolveReadyPreflightResult(input, preflightOutput, preflightResult);
|
|
71
|
+
return resolveReadyPreflightResult(input, preflightOutput, preflightResult, consoleMessages);
|
|
78
72
|
}
|
|
79
|
-
function resolveBlockedPreflightResult(input, preflightResult) {
|
|
73
|
+
function resolveBlockedPreflightResult(input, preflightResult, consoleMessages) {
|
|
80
74
|
const resolution = blockedResolution({
|
|
81
75
|
check: input.check,
|
|
82
|
-
messages: preflightResult.messages,
|
|
76
|
+
messages: combineCheckMessages(consoleMessages, preflightResult.messages),
|
|
83
77
|
reasonCode: preflightResult.reason.code
|
|
84
78
|
});
|
|
85
79
|
observePreflightResolution(input.diagnosticLogger, input.check.definition.checkId, resolution, "blocked", {
|
|
@@ -88,12 +82,12 @@ function resolveBlockedPreflightResult(input, preflightResult) {
|
|
|
88
82
|
});
|
|
89
83
|
return resolution;
|
|
90
84
|
}
|
|
91
|
-
function resolveReadyPreflightResult(input, preflightOutput, preflightResult) {
|
|
85
|
+
function resolveReadyPreflightResult(input, preflightOutput, preflightResult, consoleMessages) {
|
|
92
86
|
const checkId = input.check.definition.checkId;
|
|
93
87
|
const result = preflightResult.status === "success" ? "prepared" : "continued";
|
|
94
88
|
const resolution = readyResolution({
|
|
95
89
|
authoredCheck: input.check,
|
|
96
|
-
messages: preflightResult.messages,
|
|
90
|
+
messages: combineCheckMessages(consoleMessages, preflightResult.messages),
|
|
97
91
|
preparedOptions: preflightResult.status === "success"
|
|
98
92
|
? preflightResult.preparedOptions
|
|
99
93
|
: preflightResult.fallback
|
|
@@ -106,20 +100,12 @@ function resolveReadyPreflightResult(input, preflightOutput, preflightResult) {
|
|
|
106
100
|
return resolution;
|
|
107
101
|
}
|
|
108
102
|
async function invokePreflight(check, signal) {
|
|
109
|
-
|
|
110
|
-
return Object.freeze({
|
|
111
|
-
kind: "returned",
|
|
112
|
-
output: await check.preflight(check.options, signal ?? INERT_SIGNAL)
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
catch (error) {
|
|
116
|
-
return Object.freeze({ kind: "threw", error });
|
|
117
|
-
}
|
|
103
|
+
return invokeWithCapturedConsole(() => check.preflight(check.options, signal ?? INERT_SIGNAL));
|
|
118
104
|
}
|
|
119
105
|
function observeBlockedPreflight(input) {
|
|
120
106
|
const resolution = blockedResolution({
|
|
121
107
|
check: input.check,
|
|
122
|
-
messages: EMPTY_MESSAGES,
|
|
108
|
+
messages: input.messages ?? EMPTY_MESSAGES,
|
|
123
109
|
reasonCode: input.reasonCode
|
|
124
110
|
});
|
|
125
111
|
observePreflightResolution(input.diagnosticLogger, input.check.definition.checkId, resolution, input.result, input.details);
|
|
@@ -155,7 +141,7 @@ function readyResolution(input) {
|
|
|
155
141
|
if (preparedOptions === undefined) {
|
|
156
142
|
return blockedResolution({
|
|
157
143
|
check: input.authoredCheck,
|
|
158
|
-
messages:
|
|
144
|
+
messages: input.messages,
|
|
159
145
|
reasonCode: "invalid-preflight-result"
|
|
160
146
|
});
|
|
161
147
|
}
|