@zxyycom/vibe-check 0.0.1 → 0.0.3
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 +79 -75
- package/dist/esm/check/check.mjs +4 -0
- package/dist/esm/check/check.mjs.map +1 -1
- package/dist/esm/check/flag-enablement.mjs +32 -0
- package/dist/esm/check/flag-enablement.mjs.map +1 -0
- package/dist/esm/check/handoff-provider-identity.mjs +18 -0
- package/dist/esm/check/handoff-provider-identity.mjs.map +1 -0
- package/dist/esm/check/inherited-collection.mjs +2 -2
- package/dist/esm/check/inherited-collection.mjs.map +1 -1
- package/dist/esm/check/project-changes.mjs +2 -0
- package/dist/esm/check/project-changes.mjs.map +1 -0
- package/dist/esm/check/project-context.mjs +2 -0
- package/dist/esm/check/project-context.mjs.map +1 -0
- 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/facts.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/canonical-data.mjs +36 -7
- package/dist/esm/data-boundary/canonical-data.mjs.map +1 -1
- package/dist/esm/data-boundary/canonical-json.mjs.map +1 -1
- package/dist/esm/data-boundary/closed-values.mjs +43 -3
- package/dist/esm/data-boundary/closed-values.mjs.map +1 -1
- package/dist/esm/{package-checks/project-files → data-boundary}/config-glob.mjs +3 -3
- package/dist/esm/data-boundary/config-glob.mjs.map +1 -0
- package/dist/esm/data-boundary/project-path.mjs +19 -0
- package/dist/esm/data-boundary/project-path.mjs.map +1 -0
- 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 +16 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/machine-output/v4/atomic-publication.mjs +5 -16
- package/dist/esm/machine-output/v4/atomic-publication.mjs.map +1 -1
- package/dist/esm/package-checks/check-authoring.mjs +69 -0
- package/dist/esm/package-checks/check-authoring.mjs.map +1 -0
- 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/command-check/command-check.mjs +55 -0
- package/dist/esm/package-checks/command-check/command-check.mjs.map +1 -0
- package/dist/esm/package-checks/command-check/contract.mjs +2 -0
- package/dist/esm/package-checks/command-check/contract.mjs.map +1 -0
- package/dist/esm/package-checks/command-check/execution.mjs +134 -0
- package/dist/esm/package-checks/command-check/execution.mjs.map +1 -0
- package/dist/esm/package-checks/command-check/options.mjs +284 -0
- package/dist/esm/package-checks/command-check/options.mjs.map +1 -0
- package/dist/esm/package-checks/command-check/transcript.mjs +26 -0
- package/dist/esm/package-checks/command-check/transcript.mjs.map +1 -0
- 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 +10 -12
- package/dist/esm/package-checks/duplicate-detection/default-check.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/execution.mjs +44 -20
- 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 +2 -2
- 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/constructor.mjs +9 -11
- package/dist/esm/package-checks/file-metrics/constructor.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/execution.mjs +11 -20
- 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/options.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 +2 -2
- package/dist/esm/package-checks/file-metrics/scc/availability.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/scc/batch-planner.mjs +38 -0
- package/dist/esm/package-checks/file-metrics/scc/batch-planner.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/scc/logical-scan-resources.mjs +35 -0
- package/dist/esm/package-checks/file-metrics/scc/logical-scan-resources.mjs.map +1 -0
- 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 +104 -31
- package/dist/esm/package-checks/file-metrics/scc/scanner.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analysis.mjs +61 -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 +22 -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 +218 -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 +106 -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 +265 -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 +404 -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 +216 -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 +85 -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 +612 -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 +25 -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 +544 -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 +69 -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 +120 -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 +10 -12
- package/dist/esm/package-checks/function-metrics/constructor.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/execution.mjs +51 -35
- 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 +163 -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/{function-metrics/lizard → 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 +12 -1
- package/dist/esm/package-checks/host-environment/git.mjs.map +1 -1
- package/dist/esm/package-checks/host-environment/path.mjs +1 -17
- package/dist/esm/package-checks/host-environment/path.mjs.map +1 -1
- package/dist/esm/package-checks/host-environment/process/contract.mjs.map +1 -1
- package/dist/esm/package-checks/host-environment/process/result.mjs +43 -17
- package/dist/esm/package-checks/host-environment/process/result.mjs.map +1 -1
- package/dist/esm/package-checks/host-environment/process/runner.mjs +7 -5
- package/dist/esm/package-checks/host-environment/process/runner.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/default-check.mjs +9 -11
- package/dist/esm/package-checks/json-schema-validation/default-check.mjs.map +1 -1
- 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-schema-validation/reference-resolver.mjs +6 -2
- package/dist/esm/package-checks/json-schema-validation/reference-resolver.mjs.map +1 -1
- package/dist/esm/package-checks/json-schema-validation/schema-policy.mjs +11 -3
- package/dist/esm/package-checks/json-schema-validation/schema-policy.mjs.map +1 -1
- package/dist/esm/package-checks/json-validation/default-check.mjs +9 -11
- package/dist/esm/package-checks/json-validation/default-check.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/json-validation/options.mjs.map +1 -1
- package/dist/esm/package-checks/local-cache-options.mjs +28 -0
- package/dist/esm/package-checks/local-cache-options.mjs.map +1 -0
- package/dist/esm/package-checks/maintenance-reminders/final-data.mjs.map +1 -1
- package/dist/esm/package-checks/maintenance-reminders/maintenance-reminders.mjs +37 -45
- package/dist/esm/package-checks/maintenance-reminders/maintenance-reminders.mjs.map +1 -1
- package/dist/esm/package-checks/maintenance-reminders/maintenance-support.mjs +3 -1
- package/dist/esm/package-checks/maintenance-reminders/maintenance-support.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/default-check.mjs +19 -27
- 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/markdown-parser.mjs +1 -3
- package/dist/esm/package-checks/markdown-link-validation/markdown-parser.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs +10 -3
- 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 +12 -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 +184 -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/markdown-lint/adapter.mjs +125 -0
- package/dist/esm/package-checks/markdown-lint/adapter.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/default-check.mjs +37 -0
- package/dist/esm/package-checks/markdown-lint/default-check.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/execution.mjs +202 -0
- package/dist/esm/package-checks/markdown-lint/execution.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/final-data.mjs +16 -0
- package/dist/esm/package-checks/markdown-lint/final-data.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/finding-messages.mjs +72 -0
- package/dist/esm/package-checks/markdown-lint/finding-messages.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/finding-waiver-identity.mjs +41 -0
- package/dist/esm/package-checks/markdown-lint/finding-waiver-identity.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/findings-cache.mjs +110 -0
- package/dist/esm/package-checks/markdown-lint/findings-cache.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/options-resolution.mjs +74 -0
- package/dist/esm/package-checks/markdown-lint/options-resolution.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/options-validation.mjs +41 -0
- package/dist/esm/package-checks/markdown-lint/options-validation.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/options.mjs +13 -0
- package/dist/esm/package-checks/markdown-lint/options.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/records.mjs +65 -0
- package/dist/esm/package-checks/markdown-lint/records.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/unavailable-reasons.mjs +14 -0
- package/dist/esm/package-checks/markdown-lint/unavailable-reasons.mjs.map +1 -0
- package/dist/esm/package-checks/project-files/collection.mjs +24 -20
- package/dist/esm/package-checks/project-files/collection.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/configuration.mjs +3 -11
- package/dist/esm/package-checks/project-files/configuration.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/gitlink-revision.mjs +3 -6
- package/dist/esm/package-checks/project-files/gitlink-revision.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/gitlink-worktree.mjs +23 -7
- 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-paths.mjs +3 -3
- package/dist/esm/package-checks/project-files/revision-paths.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/revision-worktree-files.mjs +12 -16
- 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 +37 -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 +192 -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 +84 -0
- package/dist/esm/package-checks/secret-detection/secretlint/adapter.mjs.map +1 -0
- package/dist/esm/package-tools/admission-policy/define-admission-policy.mjs +10 -0
- package/dist/esm/package-tools/admission-policy/define-admission-policy.mjs.map +1 -0
- package/dist/esm/package-tools/cache/cache-json-by-key.mjs +188 -0
- package/dist/esm/package-tools/cache/cache-json-by-key.mjs.map +1 -0
- package/dist/esm/package-tools/finding-presentation/finding-presentation.mjs +40 -0
- package/dist/esm/package-tools/finding-presentation/finding-presentation.mjs.map +1 -0
- package/dist/esm/{finding-waivers → package-tools/finding-waivers}/reconciliation.mjs +14 -5
- package/dist/esm/package-tools/finding-waivers/reconciliation.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/critical-path-ranking.mjs +46 -0
- package/dist/esm/package-tools/learned-critical-path/critical-path-ranking.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/bounded-history.mjs +56 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/bounded-history.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/prediction.mjs +122 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/prediction.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/preparation.mjs +43 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/preparation.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/recording.mjs +109 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/recording.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/storage.mjs +187 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/storage.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/selection-layers.mjs +27 -0
- package/dist/esm/package-tools/learned-critical-path/selection-layers.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/static-decision.mjs +55 -0
- package/dist/esm/package-tools/learned-critical-path/static-decision.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/strategy.mjs +179 -0
- package/dist/esm/package-tools/learned-critical-path/strategy.mjs.map +1 -0
- package/dist/esm/project-definition/check-tree/authoring.mjs +19 -176
- package/dist/esm/project-definition/check-tree/authoring.mjs.map +1 -1
- package/dist/esm/project-definition/check-tree/check-fields-authoring.mjs +184 -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/flag-conditions.mjs +71 -0
- package/dist/esm/project-definition/check-tree/flag-conditions.mjs.map +1 -0
- package/dist/esm/project-definition/check-tree/materialization.mjs +22 -9
- package/dist/esm/project-definition/check-tree/materialization.mjs.map +1 -1
- package/dist/esm/project-definition/check-tree/resolution.mjs +52 -19
- 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 +74 -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-changes.mjs +70 -0
- package/dist/esm/project-definition/project-changes.mjs.map +1 -0
- package/dist/esm/project-definition/project-definition-validation.mjs +132 -16
- package/dist/esm/project-definition/project-definition-validation.mjs.map +1 -1
- package/dist/esm/project-definition/project-definition.mjs +62 -50
- 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 +57 -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 +42 -57
- package/dist/esm/project-run/aggregation.mjs.map +1 -1
- package/dist/esm/project-run/changes/git.mjs +161 -0
- package/dist/esm/project-run/changes/git.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/admitted-check-execution.mjs +41 -0
- package/dist/esm/project-run/check-execution/admitted-check-execution.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/callback.mjs +37 -9
- 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 +99 -6
- package/dist/esm/project-run/check-execution/dependencies.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/execution-finalization.mjs +57 -14
- package/dist/esm/project-run/check-execution/execution-finalization.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/execution-settlement.mjs +44 -19
- package/dist/esm/project-run/check-execution/execution-settlement.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/flag-controls.mjs +95 -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-result.mjs → preparation-result.mjs} +24 -24
- package/dist/esm/project-run/check-execution/preparation-result.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/preparation.mjs +172 -0
- package/dist/esm/project-run/check-execution/preparation.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/ready-check-execution.mjs +71 -0
- package/dist/esm/project-run/check-execution/ready-check-execution.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/resolved-checks.mjs +44 -139
- 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/check-execution/scheduled-check-run.mjs +79 -0
- package/dist/esm/project-run/check-execution/scheduled-check-run.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/terminal-result.mjs +70 -25
- package/dist/esm/project-run/check-execution/terminal-result.mjs.map +1 -1
- package/dist/esm/project-run/{completion.mjs → completion/completion.mjs} +34 -39
- 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 +79 -62
- package/dist/esm/project-run/controls/validation.mjs.map +1 -1
- package/dist/esm/project-run/diagnostic-logging/diagnostic-detail-rendering.mjs +3 -3
- package/dist/esm/project-run/diagnostic-logging/diagnostic-detail-rendering.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 +65 -0
- package/dist/esm/project-run/invocation/candidate.mjs.map +1 -0
- package/dist/esm/project-run/invocation/candidates.mjs +26 -0
- package/dist/esm/project-run/invocation/candidates.mjs.map +1 -0
- package/dist/esm/project-run/invocation/creation.mjs +83 -0
- package/dist/esm/project-run/invocation/creation.mjs.map +1 -0
- package/dist/esm/project-run/invocation/execution.mjs +98 -0
- package/dist/esm/project-run/invocation/execution.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/run.mjs +82 -0
- package/dist/esm/project-run/invocation/run.mjs.map +1 -0
- package/dist/esm/project-run/invocation/scheduler.mjs +64 -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 +140 -26
- package/dist/esm/project-run/progress-rendering/presentation.mjs.map +1 -1
- package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs +118 -22
- package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs.map +1 -1
- package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs +50 -10
- package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs.map +1 -1
- package/dist/esm/project-run/progress-rendering/renderer.mjs +11 -4
- package/dist/esm/project-run/progress-rendering/renderer.mjs.map +1 -1
- package/dist/esm/project-run/project-context.mjs +3 -2
- 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-lookup.mjs +45 -0
- package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph-lookup.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph.mjs +171 -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 +196 -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 +168 -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/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 +211 -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 +164 -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 +91 -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 +183 -114
- package/dist/esm/project-run/task-scheduler/scheduler.mjs.map +1 -1
- package/docs/api-mechanics.md +167 -121
- package/docs/changelog.md +300 -0
- package/docs/checks/duplicate-detection.md +131 -60
- package/docs/checks/file-metrics.md +68 -46
- package/docs/checks/function-metrics.md +119 -163
- package/docs/checks/json-schema-validation.md +65 -37
- package/docs/checks/json-validation.md +59 -27
- package/docs/checks/maintenance-reminders.md +68 -32
- package/docs/checks/markdown-link-validation.md +104 -56
- package/docs/checks/markdown-lint.md +167 -0
- package/docs/checks/secret-detection.md +153 -0
- package/docs/examples/artifacts/mixed-outcomes/definition.ts +14 -14
- package/docs/guides/building-project-gate.md +706 -0
- package/docs/guides/cache-results.md +63 -0
- package/docs/guides/callbacks.md +93 -0
- package/docs/guides/check-dependencies.md +152 -0
- package/docs/guides/collecting-project-files.md +59 -0
- package/docs/guides/command-check.md +155 -0
- package/docs/guides/data-boundaries.md +140 -0
- package/docs/guides/extending-check-lifecycle.md +164 -0
- package/docs/guides/finding-waivers.md +87 -0
- package/docs/guides/learned-scheduling.md +83 -0
- package/docs/guides/presenting-findings.md +54 -0
- package/docs/guides/run-outputs.md +171 -0
- package/docs/guides/scheduling.md +208 -0
- package/docs/guides/simulating-admission.md +55 -0
- package/docs/output.md +13 -21
- 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 +19 -6
- package/src/check/check.ts +382 -92
- package/src/check/flag-enablement.ts +76 -0
- package/src/check/handoff-provider-identity.ts +34 -0
- package/src/check/inherited-collection.ts +2 -2
- package/src/check/project-changes.ts +14 -0
- package/src/check/project-context.ts +11 -0
- package/src/check-settlement/fact-validation.ts +29 -39
- package/src/check-settlement/facts.ts +1 -1
- 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/canonical-data.ts +36 -9
- package/src/data-boundary/canonical-json.ts +18 -1
- package/src/data-boundary/closed-values.ts +54 -5
- package/src/data-boundary/config-glob.ts +17 -0
- package/src/data-boundary/project-path.ts +21 -0
- package/src/data-boundary/value-shapes.ts +12 -0
- package/src/index.ts +134 -5
- package/src/machine-output/v4/atomic-publication.ts +4 -17
- package/src/package-checks/check-authoring.ts +136 -0
- 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/command-check/command-check.ts +152 -0
- package/src/package-checks/command-check/contract.ts +168 -0
- package/src/package-checks/command-check/execution.ts +211 -0
- package/src/package-checks/command-check/options.ts +331 -0
- package/src/package-checks/command-check/transcript.ts +35 -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 +38 -7
- package/src/package-checks/duplicate-detection/execution.ts +82 -24
- 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 +2 -2
- 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 +26 -3
- package/src/package-checks/duplicate-detection/records.ts +65 -12
- package/src/package-checks/file-metrics/constructor.ts +29 -6
- package/src/package-checks/file-metrics/execution.ts +17 -20
- 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/options.ts +6 -3
- package/src/package-checks/file-metrics/records.ts +11 -23
- package/src/package-checks/file-metrics/scc/availability.ts +2 -2
- package/src/package-checks/file-metrics/scc/batch-planner.ts +56 -0
- package/src/package-checks/file-metrics/scc/logical-scan-resources.ts +59 -0
- package/src/package-checks/file-metrics/scc/parser.ts +4 -4
- package/src/package-checks/file-metrics/scc/scanner.ts +135 -33
- package/src/package-checks/function-metrics/analysis.ts +81 -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 +269 -0
- package/src/package-checks/function-metrics/analyzer/extensions/extension-base.ts +33 -0
- package/src/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.ts +25 -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 +313 -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 +113 -0
- package/src/package-checks/function-metrics/analyzer/readers/perl.ts +340 -0
- package/src/package-checks/function-metrics/analyzer/readers/php-states.ts +253 -0
- package/src/package-checks/function-metrics/analyzer/readers/php.ts +63 -0
- package/src/package-checks/function-metrics/analyzer/readers/plsql.ts +310 -0
- package/src/package-checks/function-metrics/analyzer/readers/python.ts +432 -0
- package/src/package-checks/function-metrics/analyzer/readers/r.ts +235 -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 +96 -0
- package/src/package-checks/function-metrics/analyzer/readers/typescript.ts +599 -0
- package/src/package-checks/function-metrics/analyzer/readers/vue.ts +43 -0
- package/src/package-checks/function-metrics/analyzer/readers/zig.ts +36 -0
- package/src/package-checks/function-metrics/analyzer/shared/clike.ts +541 -0
- package/src/package-checks/function-metrics/analyzer/shared/code-reader.ts +684 -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 +80 -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 +164 -0
- package/src/package-checks/function-metrics/analyzer-worker.ts +31 -0
- package/src/package-checks/function-metrics/constructor.ts +32 -9
- package/src/package-checks/function-metrics/execution.ts +94 -41
- 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 +223 -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 +32 -13
- 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 +13 -2
- package/src/package-checks/host-environment/path.ts +1 -20
- package/src/package-checks/host-environment/process/contract.ts +17 -9
- package/src/package-checks/host-environment/process/result.ts +48 -20
- package/src/package-checks/host-environment/process/runner.ts +8 -4
- package/src/package-checks/host-environment/process.ts +10 -0
- package/src/package-checks/json-schema-validation/default-check.ts +38 -5
- 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 +27 -1
- package/src/package-checks/json-schema-validation/reference-resolver.ts +6 -2
- package/src/package-checks/json-schema-validation/schema-policy.ts +10 -5
- package/src/package-checks/json-validation/default-check.ts +27 -6
- 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/json-validation/options.ts +4 -1
- package/src/package-checks/local-cache-options.ts +40 -0
- package/src/package-checks/maintenance-reminders/final-data.ts +18 -0
- package/src/package-checks/maintenance-reminders/maintenance-reminders.ts +89 -9
- package/src/package-checks/maintenance-reminders/maintenance-support.ts +3 -3
- package/src/package-checks/markdown-link-validation/default-check.ts +57 -8
- 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/markdown-parser.ts +1 -5
- package/src/package-checks/markdown-link-validation/options-resolution.ts +14 -3
- package/src/package-checks/markdown-link-validation/options-validation.ts +12 -19
- package/src/package-checks/markdown-link-validation/options.ts +15 -1
- package/src/package-checks/markdown-link-validation/parse-facts-cache-payload.ts +245 -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/markdown-lint/adapter.ts +167 -0
- package/src/package-checks/markdown-lint/default-check.ts +92 -0
- package/src/package-checks/markdown-lint/execution.ts +266 -0
- package/src/package-checks/markdown-lint/final-data.ts +33 -0
- package/src/package-checks/markdown-lint/finding-messages.ts +87 -0
- package/src/package-checks/markdown-lint/finding-waiver-identity.ts +54 -0
- package/src/package-checks/markdown-lint/findings-cache.ts +141 -0
- package/src/package-checks/markdown-lint/options-resolution.ts +102 -0
- package/src/package-checks/markdown-lint/options-validation.ts +50 -0
- package/src/package-checks/markdown-lint/options.ts +82 -0
- package/src/package-checks/markdown-lint/records.ts +132 -0
- package/src/package-checks/markdown-lint/unavailable-reasons.ts +33 -0
- package/src/package-checks/project-files/collection.ts +39 -23
- package/src/package-checks/project-files/config-glob.ts +1 -17
- package/src/package-checks/project-files/configuration.ts +4 -15
- package/src/package-checks/project-files/gitlink-revision.ts +5 -7
- package/src/package-checks/project-files/gitlink-worktree.ts +36 -8
- package/src/package-checks/project-files/public-collection.ts +92 -0
- package/src/package-checks/project-files/revision-paths.ts +3 -3
- package/src/package-checks/project-files/revision-worktree-files.ts +17 -17
- package/src/package-checks/secret-detection/classification.ts +30 -0
- package/src/package-checks/secret-detection/default-check.ts +73 -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 +290 -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 +39 -0
- package/src/package-checks/secret-detection/records.ts +77 -0
- package/src/package-checks/secret-detection/secretlint/adapter.ts +122 -0
- package/src/package-tools/admission-policy/define-admission-policy.ts +54 -0
- package/src/package-tools/cache/cache-json-by-key.ts +300 -0
- package/src/package-tools/finding-presentation/finding-presentation.ts +69 -0
- package/src/{finding-waivers → package-tools/finding-waivers}/reconciliation.ts +16 -8
- package/src/package-tools/learned-critical-path/critical-path-ranking.ts +76 -0
- package/src/package-tools/learned-critical-path/duration-model/bounded-history.ts +108 -0
- package/src/package-tools/learned-critical-path/duration-model/prediction.ts +184 -0
- package/src/package-tools/learned-critical-path/duration-model/preparation.ts +79 -0
- package/src/package-tools/learned-critical-path/duration-model/recording.ts +209 -0
- package/src/package-tools/learned-critical-path/duration-model/storage.ts +251 -0
- package/src/package-tools/learned-critical-path/selection-layers.ts +71 -0
- package/src/package-tools/learned-critical-path/static-decision.ts +105 -0
- package/src/package-tools/learned-critical-path/strategy.ts +302 -0
- package/src/project-definition/check-tree/authoring.ts +40 -234
- package/src/project-definition/check-tree/check-fields-authoring.ts +242 -0
- package/src/project-definition/check-tree/collection-authoring.ts +13 -0
- package/src/project-definition/check-tree/flag-conditions.ts +99 -0
- package/src/project-definition/check-tree/materialization.ts +21 -9
- package/src/project-definition/check-tree/resolution.ts +84 -28
- package/src/project-definition/check-tree/scheduling-authoring.ts +114 -0
- package/src/project-definition/declarative-snapshot.ts +94 -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-changes.ts +112 -0
- package/src/project-definition/project-definition-validation.ts +166 -19
- package/src/project-definition/project-definition.ts +177 -67
- package/src/project-definition/resource-unit-mapping.ts +25 -0
- package/src/project-definition/scheduler-policy.ts +556 -0
- package/src/project-run/admission-strategy-provider/custom-strategy-preparation.ts +83 -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 +52 -70
- package/src/project-run/changes/git.ts +206 -0
- package/src/project-run/check-execution/admitted-check-execution.ts +62 -0
- package/src/project-run/check-execution/callback.ts +52 -9
- package/src/project-run/check-execution/console-capture.ts +262 -0
- package/src/project-run/check-execution/dependencies.ts +161 -10
- package/src/project-run/check-execution/execution-finalization.ts +103 -27
- package/src/project-run/check-execution/execution-settlement.ts +99 -32
- package/src/project-run/check-execution/flag-controls.ts +146 -0
- package/src/project-run/check-execution/lifecycle.ts +29 -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-result.ts → preparation-result.ts} +34 -32
- package/src/project-run/check-execution/preparation.ts +309 -0
- package/src/project-run/check-execution/ready-check-execution.ts +97 -0
- package/src/project-run/check-execution/resolved-checks.ts +92 -232
- package/src/project-run/check-execution/resolved-execution-result.ts +22 -0
- package/src/project-run/check-execution/scheduled-check-run.ts +119 -0
- package/src/project-run/check-execution/terminal-result.ts +108 -29
- package/src/project-run/{completion.ts → completion/completion.ts} +33 -59
- 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 +22 -9
- 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 +110 -68
- package/src/project-run/diagnostic-logging/diagnostic-detail-rendering.ts +1 -2
- 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 +99 -0
- package/src/project-run/invocation/candidates.ts +56 -0
- package/src/project-run/invocation/creation.ts +120 -0
- package/src/project-run/invocation/execution.ts +136 -0
- package/src/project-run/invocation/paths.ts +154 -0
- package/src/project-run/invocation/progress.ts +38 -0
- package/src/project-run/invocation/run.ts +144 -0
- package/src/project-run/invocation/scheduler.ts +82 -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 +150 -36
- package/src/project-run/progress-rendering/renderer-formatting.ts +185 -25
- package/src/project-run/progress-rendering/renderer-lifecycle.ts +61 -9
- package/src/project-run/progress-rendering/renderer.ts +23 -6
- package/src/project-run/project-context.ts +10 -5
- package/src/project-run/result.ts +50 -4
- package/src/project-run/run.ts +7 -6
- package/src/project-run/task-scheduler/admission-core/compiled-graph-lookup.ts +71 -0
- package/src/project-run/task-scheduler/admission-core/compiled-graph.ts +321 -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 +297 -0
- package/src/project-run/task-scheduler/admission-core/selection-seed.ts +282 -0
- package/src/project-run/task-scheduler/admission-core/selection-transition.ts +245 -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/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 +267 -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 +198 -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 +126 -0
- package/src/project-run/task-scheduler/scheduler-task-lifecycle.ts +150 -0
- package/src/project-run/task-scheduler/scheduler-terminal-measurement.ts +97 -0
- package/src/project-run/task-scheduler/scheduler.ts +233 -171
- package/types/check/check.d.ts +225 -69
- package/types/check/flag-enablement.d.ts +42 -0
- package/types/check/handoff-provider-identity.d.ts +12 -0
- package/types/check/inherited-collection.d.ts +1 -1
- package/types/check/project-changes.d.ts +13 -0
- package/types/check/project-context.d.ts +10 -0
- package/types/check-settlement/facts.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/canonical-data.d.ts +28 -5
- package/types/data-boundary/canonical-json.d.ts +18 -1
- package/types/data-boundary/closed-values.d.ts +24 -0
- package/types/data-boundary/config-glob.d.ts +5 -0
- package/types/data-boundary/project-path.d.ts +4 -0
- package/types/data-boundary/value-shapes.d.ts +3 -0
- package/types/index.d.ts +40 -9
- package/types/package-checks/check-authoring.d.ts +45 -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/command-check/command-check.d.ts +48 -0
- package/types/package-checks/command-check/contract.d.ts +108 -0
- package/types/package-checks/command-check/execution.d.ts +7 -0
- package/types/package-checks/command-check/options.d.ts +11 -0
- package/types/package-checks/command-check/transcript.d.ts +8 -0
- package/types/package-checks/duplicate-detection/area-policy.d.ts +1 -1
- package/types/package-checks/duplicate-detection/default-check.d.ts +5 -2
- 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 +21 -3
- package/types/package-checks/duplicate-detection/records.d.ts +20 -3
- package/types/package-checks/file-metrics/constructor.d.ts +5 -2
- package/types/package-checks/file-metrics/finding-messages.d.ts +4 -0
- package/types/package-checks/file-metrics/options.d.ts +4 -3
- package/types/package-checks/file-metrics/records.d.ts +5 -10
- package/types/package-checks/file-metrics/scc/batch-planner.d.ts +18 -0
- package/types/package-checks/file-metrics/scc/logical-scan-resources.d.ts +14 -0
- 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 +6 -3
- 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 +26 -12
- 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 +3 -1
- package/types/package-checks/host-environment/path.d.ts +1 -3
- package/types/package-checks/host-environment/process/contract.d.ts +17 -9
- package/types/package-checks/host-environment/process.d.ts +5 -0
- package/types/package-checks/json-schema-validation/default-check.d.ts +4 -1
- package/types/package-checks/json-schema-validation/final-data.d.ts +8 -0
- package/types/package-checks/json-schema-validation/options.d.ts +33 -4
- package/types/package-checks/json-validation/default-check.d.ts +4 -1
- package/types/package-checks/json-validation/final-data.d.ts +5 -0
- package/types/package-checks/json-validation/options.d.ts +2 -1
- package/types/package-checks/local-cache-options.d.ts +9 -0
- package/types/package-checks/maintenance-reminders/final-data.d.ts +18 -0
- package/types/package-checks/maintenance-reminders/maintenance-reminders.d.ts +11 -2
- package/types/package-checks/markdown-link-validation/default-check.d.ts +13 -4
- 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 +13 -1
- 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/markdown-lint/adapter.d.ts +10 -0
- package/types/package-checks/markdown-lint/default-check.d.ts +37 -0
- package/types/package-checks/markdown-lint/execution.d.ts +24 -0
- package/types/package-checks/markdown-lint/final-data.d.ts +8 -0
- package/types/package-checks/markdown-lint/finding-messages.d.ts +6 -0
- package/types/package-checks/markdown-lint/finding-waiver-identity.d.ts +3 -0
- package/types/package-checks/markdown-lint/findings-cache.d.ts +17 -0
- package/types/package-checks/markdown-lint/options-resolution.d.ts +3 -0
- package/types/package-checks/markdown-lint/options-validation.d.ts +2 -0
- package/types/package-checks/markdown-lint/options.d.ts +65 -0
- package/types/package-checks/markdown-lint/records.d.ts +39 -0
- package/types/package-checks/markdown-lint/unavailable-reasons.d.ts +3 -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 +14 -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 +33 -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/package-tools/admission-policy/define-admission-policy.d.ts +26 -0
- package/types/package-tools/cache/cache-json-by-key.d.ts +53 -0
- package/types/package-tools/finding-presentation/finding-presentation.d.ts +27 -0
- package/types/{finding-waivers → package-tools/finding-waivers}/reconciliation.d.ts +3 -3
- package/types/package-tools/learned-critical-path/critical-path-ranking.d.ts +19 -0
- package/types/package-tools/learned-critical-path/duration-model/bounded-history.d.ts +34 -0
- package/types/package-tools/learned-critical-path/duration-model/prediction.d.ts +32 -0
- package/types/package-tools/learned-critical-path/duration-model/preparation.d.ts +28 -0
- package/types/package-tools/learned-critical-path/duration-model/recording.d.ts +28 -0
- package/types/package-tools/learned-critical-path/duration-model/storage.d.ts +12 -0
- package/types/package-tools/learned-critical-path/selection-layers.d.ts +14 -0
- package/types/package-tools/learned-critical-path/static-decision.d.ts +3 -0
- package/types/package-tools/learned-critical-path/strategy.d.ts +35 -0
- package/types/project-definition/check-tree/authoring.d.ts +13 -14
- package/types/project-definition/check-tree/check-fields-authoring.d.ts +30 -0
- package/types/project-definition/check-tree/collection-authoring.d.ts +2 -0
- package/types/project-definition/check-tree/flag-conditions.d.ts +5 -0
- package/types/project-definition/check-tree/resolution.d.ts +13 -6
- package/types/project-definition/check-tree/scheduling-authoring.d.ts +19 -0
- package/types/project-definition/declarative-snapshot.d.ts +10 -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-changes.d.ts +30 -0
- package/types/project-definition/project-definition.d.ts +49 -19
- 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 +8 -6
- package/types/project-run/changes/git.d.ts +14 -0
- package/types/project-run/check-execution/admitted-check-execution.d.ts +18 -0
- 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 +4 -1
- package/types/project-run/check-execution/execution-finalization.d.ts +18 -8
- package/types/project-run/check-execution/execution-settlement.d.ts +18 -7
- package/types/project-run/check-execution/flag-controls.d.ts +27 -0
- package/types/project-run/check-execution/lifecycle.d.ts +24 -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-result.d.ts → preparation-result.d.ts} +3 -3
- package/types/project-run/check-execution/preparation.d.ts +29 -0
- package/types/project-run/check-execution/ready-check-execution.d.ts +18 -0
- package/types/project-run/check-execution/resolved-checks.d.ts +37 -44
- package/types/project-run/check-execution/resolved-execution-result.d.ts +21 -0
- package/types/project-run/check-execution/scheduled-check-run.d.ts +10 -0
- package/types/project-run/check-execution/terminal-result.d.ts +13 -1
- package/types/project-run/{completion.d.ts → completion/completion.d.ts} +7 -5
- 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 +22 -9
- 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/candidates.d.ts +8 -0
- package/types/project-run/{invocation-creation.d.ts → invocation/creation.d.ts} +3 -3
- package/types/project-run/invocation/execution.d.ts +5 -0
- 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 +12 -7
- package/types/project-run/progress-rendering/renderer-formatting.d.ts +13 -2
- package/types/project-run/progress-rendering/renderer-lifecycle.d.ts +8 -1
- package/types/project-run/progress-rendering/renderer.d.ts +11 -3
- package/types/project-run/project-context.d.ts +5 -4
- package/types/project-run/result.d.ts +38 -4
- package/types/project-run/run.d.ts +6 -5
- package/types/project-run/task-scheduler/admission-core/compiled-graph-lookup.d.ts +10 -0
- 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/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/finding-waivers/reconciliation.mjs.map +0 -1
- package/dist/esm/package-checks/file-metrics/scc/csv.mjs +0 -17
- 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.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/package-checks/project-files/config-glob.mjs.map +0 -1
- package/dist/esm/project-run/check-execution/preflight-result.mjs.map +0 -1
- package/dist/esm/project-run/check-execution/preflight.mjs +0 -186
- package/dist/esm/project-run/check-execution/preflight.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 +0 -195
- 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/check-execution/preflight.ts +0 -321
- package/src/project-run/invocation-creation.ts +0 -160
- package/src/project-run/invocation.ts +0 -303
- 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/package-checks/project-files/config-glob.d.ts +0 -5
- package/types/project-run/check-execution/preflight.d.ts +0 -27
- 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
|
@@ -0,0 +1,706 @@
|
|
|
1
|
+
# 从项目质量目标构建 Gate
|
|
2
|
+
|
|
3
|
+
你可能已经有 lint、测试、配置校验等脚本。把它们组合成 Gate,关键不只是“一起运行”,而是回答三个问题:
|
|
4
|
+
|
|
5
|
+
1. 每项检查分别证明什么?
|
|
6
|
+
2. 哪些工作需要共享、等待或限制并发?
|
|
7
|
+
3. 最后什么结果允许继续,什么结果需要停止?
|
|
8
|
+
|
|
9
|
+
本文先跑通最小路径,再按实际问题展开九种场景。从最接近当前目标的一节开始,按需组合其中的做法。
|
|
10
|
+
|
|
11
|
+
## 先跑通:定义检查、运行、判断结果
|
|
12
|
+
|
|
13
|
+
安装与运行环境见 [README](../../README.md#安装)。以下是一个完整的 `quality.ts`,使用固定测量值,方便先观察通过和失败;实际项目中再替换成真实测量。
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
import { defineCheck, defineConfig, run } from "@zxyycom/vibe-check";
|
|
17
|
+
|
|
18
|
+
const bundleSize = defineCheck({
|
|
19
|
+
checkId: "bundle-size",
|
|
20
|
+
displayName: "Bundle size",
|
|
21
|
+
execute() {
|
|
22
|
+
const actualBytes = 82_000;
|
|
23
|
+
const maximumBytes = 100_000;
|
|
24
|
+
const data = { actualBytes, maximumBytes };
|
|
25
|
+
return actualBytes <= maximumBytes ? { status: "passed", data } : { status: "failed", data };
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
const definition = defineConfig({
|
|
30
|
+
checks: [bundleSize],
|
|
31
|
+
outputs: { machinePublication: { enabled: false } }
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
const result = await run(definition);
|
|
35
|
+
process.exitCode = result.kind === "completed" && result.aggregate === "passed" ? 0 : 1;
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
在你安装 package 的项目中执行 `node quality.ts`。把 `actualBytes` 改成 `120_000`,Check 会失败,脚本退出非零。
|
|
39
|
+
|
|
40
|
+
这里有三层责任:
|
|
41
|
+
|
|
42
|
+
- Check 返回它自己的质量结论。
|
|
43
|
+
- `run` 执行整张图,并对本次有效 Checks 形成 `aggregate`。
|
|
44
|
+
- 项目脚本决定退出码。本例只接受正常完成且 aggregate 通过,其余情况统一退出 `1`。
|
|
45
|
+
|
|
46
|
+
`completed` 表示 Run 完整结算,不表示质量通过。默认聚合只在有效列表非空、且每项都 `passed` 时通过;未被 flags 选中的项不进入有效列表,已选中却返回 `not-applicable` 的项会使默认聚合失败。
|
|
47
|
+
|
|
48
|
+
**提醒还是阻断,在检查自己的规则中决定。** 自定义 Check 通过返回的 status 表达结论,warning message 本身不让检查失败。支持 `findingPolicy` 的随包 Check 可用 `"non-blocking"` 保留普通 Finding 而通过,用 `"blocking"` 让未豁免 Finding 阻断;工具不可用仍是 `unavailable`,不会因此放行。日常使用保留默认聚合即可;确需其它总体判断时再读 [aggregation](../api-mechanics.md#runcontrols-与-check-aggregation)。
|
|
49
|
+
|
|
50
|
+
**先确定独立结果,再拆 Check。** “编译、打包、读取包大小”如果只服务于一个验收结论,可以留在同一 execution;若产物结构和包大小需要分别判断,再考虑共享准备并拆出两个消费者。
|
|
51
|
+
|
|
52
|
+
## 按你遇到的问题阅读
|
|
53
|
+
|
|
54
|
+
| 你现在遇到的情况 | 场景 |
|
|
55
|
+
| --- | --- |
|
|
56
|
+
| 已有脚本,想接进 Gate | [1.接入已有检查](#1接入已有检查) |
|
|
57
|
+
| 多项检查重复做同一份准备 | [2.准备一次分别验收](#2准备一次分别验收) |
|
|
58
|
+
| 上游失败后,有的任务要停,有的还要解释失败 | [3.成功依赖与终态观察](#3成功依赖与终态观察) |
|
|
59
|
+
| 本地与 CI 要运行不同集合 | [4.按任务选择检查](#4按任务选择检查) |
|
|
60
|
+
| 小改动总是启动所有材料检查 | [5.按真实输入增量选择](#5按真实输入增量选择) |
|
|
61
|
+
| 测试分组了,但仍然全选或漏选 | [6.找出测试真正读取的输入](#6找出测试真正读取的输入) |
|
|
62
|
+
| 需要完整检查,但重复计算昂贵 | [7.复用计算而非通过结论](#7复用计算而非通过结论) |
|
|
63
|
+
| 并发检查争抢资源 | [8.表达并发约束](#8表达并发约束) |
|
|
64
|
+
| 失败只有文本,或已有结构不适合直接发布 | [9.把工具输出转换为结构化诊断](#9把工具输出转换为结构化诊断) |
|
|
65
|
+
|
|
66
|
+
### 运行本页示例
|
|
67
|
+
|
|
68
|
+
每个 TypeScript 片段独立定义一份 `definition`。任选一个片段,按以下步骤运行:
|
|
69
|
+
|
|
70
|
+
1. 在已安装 package 的项目中,将片段保存为 `quality.ts`,并准备该节列出的文件或工具。
|
|
71
|
+
2. 片段若只定义 `definition`,按[最小入口](#先跑通定义检查运行判断结果)补齐 `run` 导入,并在 `definition` 之后添加调用与退出码判断。场景 4、5 已包含带 flags 的完整入口,直接使用各自的 `runGate`。
|
|
72
|
+
3. 执行 `node quality.ts`,核对该节的 Check 结果、`aggregate` 和进程退出码。
|
|
73
|
+
|
|
74
|
+
## 1.接入已有检查
|
|
75
|
+
|
|
76
|
+
**情况:** 项目已经有 `tools/check-config.mjs`,成功退出 `0`,发现错误退出非零。
|
|
77
|
+
|
|
78
|
+
先保留脚本拥有的检查逻辑,用 `commandCheck` 接管进程生命周期。以下片段的调用步骤见[运行本页示例](#运行本页示例):
|
|
79
|
+
|
|
80
|
+
```ts
|
|
81
|
+
import { commandCheck, defineConfig } from "@zxyycom/vibe-check";
|
|
82
|
+
|
|
83
|
+
const configCheck = commandCheck({
|
|
84
|
+
checkId: "config",
|
|
85
|
+
displayName: "Configuration",
|
|
86
|
+
executable: process.execPath, // 复用启动 quality.ts 的运行时;本文使用 Node。
|
|
87
|
+
arguments: ["tools/check-config.mjs"],
|
|
88
|
+
environment: { mode: "exact" },
|
|
89
|
+
timeoutMs: 30_000,
|
|
90
|
+
outputByteLimit: 1024 * 1024
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
const definition = defineConfig({
|
|
94
|
+
checks: [configCheck],
|
|
95
|
+
outputs: { machinePublication: { enabled: false } }
|
|
96
|
+
});
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
这里的脚本路径和两个限额是项目选择,运行前需要有对应脚本。普通非零退出形成 `failed`;无法启动、超时等无法获得可信结果的情况形成 `unavailable`。Product 负责取消、受限输出捕获和结算。
|
|
100
|
+
|
|
101
|
+
`executable` 是要启动的程序,`arguments` 才是传给它的参数。按上文执行 `node quality.ts` 时,`process.execPath` 是当前 Node 的绝对路径,所以子进程相当于执行 `node tools/check-config.mjs`,并不是直接执行 `.mjs` 文件。使用绝对路径也无需从 child 的 `PATH` 寻找 Node。
|
|
102
|
+
|
|
103
|
+
若入口改用 Bun,这里复用的也会是 Bun;需要固定使用 Node 的脚本,应由项目提供 Node 的绝对路径作为 `executable`。`commandCheck` 不安装或自动选择运行时。
|
|
104
|
+
|
|
105
|
+
选择哪种接法,取决于你已有的入口:
|
|
106
|
+
|
|
107
|
+
| 已有能力 | 接入方式 |
|
|
108
|
+
| --- | --- |
|
|
109
|
+
| 工具退出码已能表达结果 | 使用上面的 `commandCheck`。 |
|
|
110
|
+
| 有可 import、不会自动启动 CLI 的校验函数 | 在自定义 Check 的 `execute` 中调用,保留领域结果;可取消工作继续传递 `signal`。 |
|
|
111
|
+
| 完整命令输出还需要解析成领域事实 | 使用 `afterCommand`,由项目验证工具协议;见场景 9。 |
|
|
112
|
+
|
|
113
|
+
命令通过 executable 和独立 arguments 表示。默认不继承父进程环境;需要环境变量时显式提供必要值,确需继承时再选 `inherit`。使用独立脚本承接多步骤 workflow,通常比把 shell pipeline 塞进一个参数更清楚。
|
|
114
|
+
|
|
115
|
+
**试一下:** 让脚本分别退出 `0`、退出 `1`、超过 timeout,确认三种结果被区分。先保持原检查覆盖和结果含义,再决定是否拆分。
|
|
116
|
+
|
|
117
|
+
完整契约:[执行外部命令](./command-check.md)、[自定义 Check](./extending-check-lifecycle.md)。
|
|
118
|
+
|
|
119
|
+
## 2.准备一次,分别验收
|
|
120
|
+
|
|
121
|
+
**情况:** 产物清单需要一次构建才能取得,包大小和文件数量检查都要用它。你希望构建一次,但保留两项验收结果。
|
|
122
|
+
|
|
123
|
+
把昂贵准备放在 provider,把独立判断留在 consumer。下面用固定清单摘要代替真实构建,按[公共运行约定](#运行本页示例)观察数据与责任关系:
|
|
124
|
+
|
|
125
|
+
```ts
|
|
126
|
+
import { defineCheck, defineConfig } from "@zxyycom/vibe-check";
|
|
127
|
+
|
|
128
|
+
const manifest = defineCheck({
|
|
129
|
+
checkId: "artifact-manifest",
|
|
130
|
+
displayName: "Artifact manifest",
|
|
131
|
+
omitQuietPassedRow: true,
|
|
132
|
+
parseData(data) {
|
|
133
|
+
if (
|
|
134
|
+
data.version !== 1 ||
|
|
135
|
+
typeof data.totalBytes !== "number" ||
|
|
136
|
+
!Number.isSafeInteger(data.totalBytes) ||
|
|
137
|
+
data.totalBytes < 0 ||
|
|
138
|
+
typeof data.fileCount !== "number" ||
|
|
139
|
+
!Number.isSafeInteger(data.fileCount) ||
|
|
140
|
+
data.fileCount < 0
|
|
141
|
+
)
|
|
142
|
+
throw new TypeError("Invalid artifact manifest");
|
|
143
|
+
return { version: 1, totalBytes: data.totalBytes, fileCount: data.fileCount };
|
|
144
|
+
},
|
|
145
|
+
execute: () => ({
|
|
146
|
+
status: "passed",
|
|
147
|
+
data: { version: 1, totalBytes: 82_000, fileCount: 3 }
|
|
148
|
+
})
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
const size = defineCheck({
|
|
152
|
+
checkId: "artifact-size",
|
|
153
|
+
displayName: "Artifact size",
|
|
154
|
+
dependsOn: [manifest.checkId],
|
|
155
|
+
execute({ dependencies }) {
|
|
156
|
+
const read = dependencies.get(manifest.checkId);
|
|
157
|
+
if (!read.ok) return { status: "unavailable", reason: { code: read.error.code } };
|
|
158
|
+
const data = manifest.parseData(read.data);
|
|
159
|
+
return data.totalBytes <= 100_000 ? { status: "passed", data } : { status: "failed", data };
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
const contents = defineCheck({
|
|
164
|
+
checkId: "artifact-contents",
|
|
165
|
+
displayName: "Artifact contents",
|
|
166
|
+
dependsOn: [manifest.checkId],
|
|
167
|
+
execute({ dependencies }) {
|
|
168
|
+
const read = dependencies.get(manifest.checkId);
|
|
169
|
+
if (!read.ok) return { status: "unavailable", reason: { code: read.error.code } };
|
|
170
|
+
const data = manifest.parseData(read.data);
|
|
171
|
+
return data.fileCount > 0 ? { status: "passed", data } : { status: "failed", data };
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
const definition = defineConfig({
|
|
176
|
+
checks: [manifest, size, contents],
|
|
177
|
+
outputs: { machinePublication: { enabled: false } }
|
|
178
|
+
});
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
两条消费者关系都直接指向 provider。parser 恢复领域类型并验证数据;依赖声明提供读取授权,两者职责不同。
|
|
182
|
+
|
|
183
|
+
**预期结果:** provider 成功后,两项消费者各自运行。把 `totalBytes` 改成 `120_000`,大小检查失败,但文件数量检查仍可通过;它们不共享判决。provider 失败则阻断两项消费者。
|
|
184
|
+
|
|
185
|
+
本例的 provider 只准备材料,安静通过后无需占一行结果,因此设置 `omitQuietPassedRow: true`。只有 `passed` 且没有 Records/messages 时才省略完成行;有 data 不影响省略,失败或带诊断时仍显示。它仍参与依赖、聚合和完整结果,TTY 中的运行状态也仍可见。需要保留成功行时,省略此字段即可。见[省略安静通过行](./extending-check-lifecycle.md#省略安静通过行)。
|
|
186
|
+
|
|
187
|
+
真实 provider 若创建临时目录,应由资源 owner 在最后一个消费者结束后清理;例如用 Run 外层的 `try/finally` 管理生命周期。破坏性或失败注入测试使用独立材料,避免污染共享只读输入。
|
|
188
|
+
|
|
189
|
+
只有确需同 Run 的非 JSON 引用时才另选 handoff;普通清单、路径和摘要用 canonical data 即可。见[依赖与类型化数据](./check-dependencies.md)。
|
|
190
|
+
|
|
191
|
+
## 3.成功依赖与终态观察
|
|
192
|
+
|
|
193
|
+
**情况:** 配置校验失败后,业务检查应停止,但汇总检查仍要报告发生了什么。
|
|
194
|
+
|
|
195
|
+
按[公共运行约定](#运行本页示例)执行下面的组合,比较 `dependsOn` 与 `observes` 对上游失败的处理:
|
|
196
|
+
|
|
197
|
+
```ts
|
|
198
|
+
import { defineCheck, defineConfig } from "@zxyycom/vibe-check";
|
|
199
|
+
|
|
200
|
+
const config = defineCheck({
|
|
201
|
+
checkId: "config",
|
|
202
|
+
displayName: "Configuration",
|
|
203
|
+
execute: () => ({ status: "failed", data: { valid: false } })
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
const consumer = defineCheck({
|
|
207
|
+
checkId: "use-config",
|
|
208
|
+
displayName: "Use configuration",
|
|
209
|
+
dependsOn: [config.checkId],
|
|
210
|
+
execute: () => ({ status: "passed", data: { consumed: true } })
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
const audit = defineCheck({
|
|
214
|
+
checkId: "audit-config",
|
|
215
|
+
displayName: "Audit configuration",
|
|
216
|
+
observes: [config.checkId],
|
|
217
|
+
execute({ dependencies }) {
|
|
218
|
+
const outcomes = dependencies.list().map(({ checkId, outcome }) => ({
|
|
219
|
+
checkId,
|
|
220
|
+
status: outcome.status
|
|
221
|
+
}));
|
|
222
|
+
return { status: "passed", data: { outcomes } };
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
const definition = defineConfig({
|
|
227
|
+
checks: [config, consumer, audit],
|
|
228
|
+
outputs: { machinePublication: { enabled: false } }
|
|
229
|
+
});
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
| Check | 预期行为 |
|
|
233
|
+
| --- | --- |
|
|
234
|
+
| `config` | 固定失败,模拟无效配置。 |
|
|
235
|
+
| `use-config` | 不进入 execute,结算为 `unavailable / dependency-not-passed`。 |
|
|
236
|
+
| `audit-config` | 等 config 终态后执行,记录它失败;自身完成审计而通过。 |
|
|
237
|
+
|
|
238
|
+
审计通过不会把配置失败变成通过,默认 aggregate 仍失败。
|
|
239
|
+
|
|
240
|
+
两种关系都只授权直接读取。`observes` 可以观察无 data 的终态,因此这里只读取 status;需要 data 时再收窄状态。加入 flags 后,还要确保观察者与被观察者的选择符合你的任务,`observes` 本身不会传播选择。
|
|
241
|
+
|
|
242
|
+
## 4.按任务选择检查
|
|
243
|
+
|
|
244
|
+
**情况:** 本地快速检查只跑配置;CI 同时检查配置和文档;开发者还可以单独查文档。
|
|
245
|
+
|
|
246
|
+
preset 是项目入口的命名,Product 只接收普通 flags:
|
|
247
|
+
|
|
248
|
+
```ts
|
|
249
|
+
import { any, defineConfig, jsonValidation, markdownLint, run } from "@zxyycom/vibe-check";
|
|
250
|
+
|
|
251
|
+
const definition = defineConfig({
|
|
252
|
+
checks: [
|
|
253
|
+
jsonValidation({
|
|
254
|
+
checkId: "config",
|
|
255
|
+
files: { include: ["config/**/*.json"] },
|
|
256
|
+
enabledByFlags: { when: any("local", "ci", "config") }
|
|
257
|
+
}),
|
|
258
|
+
markdownLint({
|
|
259
|
+
checkId: "docs",
|
|
260
|
+
files: { include: ["handbook/**/*.md"] },
|
|
261
|
+
findingPolicy: "blocking",
|
|
262
|
+
enabledByFlags: { when: any("ci", "docs") }
|
|
263
|
+
})
|
|
264
|
+
],
|
|
265
|
+
outputs: { machinePublication: { enabled: false } }
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
async function runGate() {
|
|
269
|
+
const result = await run(definition, { flags: ["local"] });
|
|
270
|
+
process.exitCode = result.kind === "completed" && result.aggregate === "passed" ? 0 : 1;
|
|
271
|
+
return result;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
if (import.meta.main) await runGate();
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
这里的 `import.meta.main` 让脚本在直接执行 `node quality.ts` 时调用 `runGate`,被其它模块 import 时不自动启动。项目中需有对应的配置与文档文件。换成 `["ci"]` 会选择两项,`["docs"]` 只选择文档。未选项仍保留 `not-applicable` facts,但不参加本次有效列表的默认聚合。
|
|
278
|
+
|
|
279
|
+
若只选择一个下游 Check,却希望同时启动它的前置项,在下游的 `enabledByFlags` 加 `propagateDependsOn: true`。它补齐传递 `dependsOn`,不是把所有相邻节点都选中,也不保证前置项通过。
|
|
280
|
+
|
|
281
|
+
argv、help 和未知 preset 的拒绝由项目入口处理。用户输入先验证再映射,避免拼错任务名后静默得到空检查集合。精确规则见[按 flag 选择 Check](./extending-check-lifecycle.md#按-flag-选择-check)。
|
|
282
|
+
|
|
283
|
+
## 5.按真实输入增量选择
|
|
284
|
+
|
|
285
|
+
**情况:** 日常反馈中,配置 JSON 改动需要语法检查;schema 或实例改动需要 schema 检查;文档链接还可能被其它文件的删除影响。
|
|
286
|
+
|
|
287
|
+
增量选择分两步:Definition 声明哪些输入变化会生成 flag,Check 声明在什么任务下使用它。
|
|
288
|
+
|
|
289
|
+
```ts
|
|
290
|
+
import {
|
|
291
|
+
all,
|
|
292
|
+
any,
|
|
293
|
+
changeFlag,
|
|
294
|
+
defineConfig,
|
|
295
|
+
run,
|
|
296
|
+
jsonValidation,
|
|
297
|
+
jsonSchemaValidation,
|
|
298
|
+
markdownLinkValidation
|
|
299
|
+
} from "@zxyycom/vibe-check";
|
|
300
|
+
|
|
301
|
+
const shared = ["quality.ts", "package.json", "pnpm-lock.yaml"];
|
|
302
|
+
const definition = defineConfig({
|
|
303
|
+
changes: {
|
|
304
|
+
source: { compareWith: "HEAD" },
|
|
305
|
+
flags: {
|
|
306
|
+
config: { include: [...shared, "config/**/*.json"] },
|
|
307
|
+
schema: {
|
|
308
|
+
include: [...shared, "config/**/*.json", "schema/**/*.json"],
|
|
309
|
+
exclude: ["config/scratch/**"]
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
},
|
|
313
|
+
checks: [
|
|
314
|
+
jsonValidation({
|
|
315
|
+
files: { include: ["config/**/*.json"] },
|
|
316
|
+
enabledByFlags: { when: any(all("daily", changeFlag("config")), "force") }
|
|
317
|
+
}),
|
|
318
|
+
jsonSchemaValidation({
|
|
319
|
+
files: {
|
|
320
|
+
include: ["config/**/*.json", "schema/**/*.json"],
|
|
321
|
+
exclude: ["config/scratch/**"]
|
|
322
|
+
},
|
|
323
|
+
schemas: [{ id: "urn:example:config", path: "schema/config.json" }],
|
|
324
|
+
bindings: [
|
|
325
|
+
{
|
|
326
|
+
id: "app",
|
|
327
|
+
instancePath: "config/app.json",
|
|
328
|
+
schemaId: "urn:example:config"
|
|
329
|
+
}
|
|
330
|
+
],
|
|
331
|
+
enabledByFlags: { when: any(all("daily", changeFlag("schema")), "force") }
|
|
332
|
+
}),
|
|
333
|
+
markdownLinkValidation({
|
|
334
|
+
files: { include: ["handbook/**/*.md"] },
|
|
335
|
+
findingPolicy: "blocking",
|
|
336
|
+
enabledByFlags: { when: any("daily", "force") }
|
|
337
|
+
})
|
|
338
|
+
],
|
|
339
|
+
outputs: { machinePublication: { enabled: false } }
|
|
340
|
+
});
|
|
341
|
+
|
|
342
|
+
async function runGate() {
|
|
343
|
+
const result = await run(definition, { flags: ["daily"] });
|
|
344
|
+
process.exitCode = result.kind === "completed" && result.aggregate === "passed" ? 0 : 1;
|
|
345
|
+
return result;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
if (import.meta.main) await runGate();
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
上例的日常调用需要 `daily`,改用 `["force"]` 可强制选择三项。schema 文件中的根 `$id` 应为 `urn:example:config`,实例是 `config/app.json`;这是本例显式声明的材料结构。
|
|
352
|
+
|
|
353
|
+
`changes.flags.*` 的 region 要求提供 `include`,`exclude` 可省略,默认等同于 `[]`。上面的 config region 没有排除项,所以不写;schema region 则给出具体排除。随包 Check 的 `files.exclude` 同样可省略,实际文件选择仍需与 change region 的输入范围保持一致。
|
|
354
|
+
|
|
355
|
+
本例约定 `config/scratch/**` 是不被正式实例或 schema 引用的草稿,只检查 JSON 语法,不参与 schema 验收。因此 schema 的变化 region 与实际文件选择都排除它;如果草稿后来成为正式输入,两处都需调整。
|
|
356
|
+
|
|
357
|
+
| 改动 | daily 下选择 |
|
|
358
|
+
| --- | --- |
|
|
359
|
+
| `config/app.json` | JSON、Schema、链接。 |
|
|
360
|
+
| `schema/config.json` | Schema、链接。 |
|
|
361
|
+
| `config/scratch/local.json` | JSON、链接;不选择 Schema。 |
|
|
362
|
+
| 仅删除一张被文档引用的图片 | 链接;即使 Markdown 本身没改。 |
|
|
363
|
+
| `quality.ts` 或 lockfile | 三项全部。 |
|
|
364
|
+
|
|
365
|
+
这里 `HEAD` 适合查看尚未提交的工作区改动;刚提交的内容需要选择更早的比较基准。整条 PR 应使用项目明确取得的 PR 基准,而不是照抄本地策略。
|
|
366
|
+
|
|
367
|
+
实际输入还可能包括外部 schema references、生成器、共享读取函数或配置。随着这些来源加入,region 必须同步扩展。尚未建模反向依赖的链接检查保留完整运行,比只匹配 Markdown 更安全。
|
|
368
|
+
|
|
369
|
+
Git evidence 可信但零命中,与 Git 不可用不同。不可用时会提供所有已声明 change flags;上例使用正向条件,使 daily 保守选择两项材料检查。`changeFlag` 仅生成 token,selection 与 callback 共用 effective flags;证据详情读取 `project.changes`。
|
|
370
|
+
|
|
371
|
+
更多边界见 [文件变化选择](../api-mechanics.md#按文件变化选择-check)。
|
|
372
|
+
|
|
373
|
+
## 6.找出测试真正读取的输入
|
|
374
|
+
|
|
375
|
+
**情况:** 你把测试分成 parser、configuration、source-identity 三组,却发现按同名目录选择会漏掉测试。
|
|
376
|
+
|
|
377
|
+
此时先列真实读取,再写 region:
|
|
378
|
+
|
|
379
|
+
| 测试目的 | 真实输入示例 | 选择策略 |
|
|
380
|
+
| --- | --- | --- |
|
|
381
|
+
| parser 私有行为 | parser 源码、测试、fixtures、共享运行工具。 | 只在已证明无关时排除其它私有模块。 |
|
|
382
|
+
| configuration constructor 行为 | configuration 源码,加上实际调用的 JSON reader 与 validator。 | reader 改动也选择此组,尽管目录名不同。 |
|
|
383
|
+
| 全源 identity 审计 | 整个 source tree 和 provenance 映射。 | 保持全源输入;测试文件所在目录不能代表扫描范围。 |
|
|
384
|
+
|
|
385
|
+
例如,修改 JSON reader 后,应同时选择它自己的测试和实际调用它的 configuration 测试;只改无关私有模块时,前两组可能跳过,但全源审计仍有工作。
|
|
386
|
+
|
|
387
|
+
在收窄前,至少验证:
|
|
388
|
+
|
|
389
|
+
- 每组的 test file、fixture 及工具链输入的新增、修改、删除都能触发该组。
|
|
390
|
+
- 共享和未知输入有保守路径,人工完整测试入口仍可用。
|
|
391
|
+
- 用已确认无关的输入变更验证跳过,并保留各组独立的验收目的。
|
|
392
|
+
|
|
393
|
+
收窄的是执行条件:相关输入变化时,该组仍完整证明原有目标。将触发与跳过的对照随 region 一起维护。
|
|
394
|
+
|
|
395
|
+
## 7.复用计算,而非通过结论
|
|
396
|
+
|
|
397
|
+
**情况:** 你写了一个检查 `dist/app.js` gzip 大小的 Check。相同文件反复压缩有成本,但大小阈值仍应按本次规则判断。
|
|
398
|
+
|
|
399
|
+
用 `cacheJsonByKey` 保存自己计算的大小,而不是上次的通过结论。下面每次都读取当前文件,用同一份 bytes 生成 key 并计算;调用步骤见[运行本页示例](#运行本页示例):
|
|
400
|
+
|
|
401
|
+
```ts
|
|
402
|
+
import { createHash } from "node:crypto";
|
|
403
|
+
import { readFile } from "node:fs/promises";
|
|
404
|
+
import { resolve } from "node:path";
|
|
405
|
+
import { gzipSync } from "node:zlib";
|
|
406
|
+
import { cacheJsonByKey, defineCheck, defineConfig } from "@zxyycom/vibe-check";
|
|
407
|
+
|
|
408
|
+
function parseMeasurement(value: unknown): { compressedBytes: number } {
|
|
409
|
+
if (
|
|
410
|
+
value === null ||
|
|
411
|
+
typeof value !== "object" ||
|
|
412
|
+
!("compressedBytes" in value) ||
|
|
413
|
+
typeof value.compressedBytes !== "number" ||
|
|
414
|
+
!Number.isSafeInteger(value.compressedBytes) ||
|
|
415
|
+
value.compressedBytes < 0
|
|
416
|
+
)
|
|
417
|
+
throw new TypeError("Invalid gzip measurement");
|
|
418
|
+
return { compressedBytes: value.compressedBytes };
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
const gzipSize = defineCheck({
|
|
422
|
+
checkId: "gzip-size",
|
|
423
|
+
displayName: "Gzip size",
|
|
424
|
+
options: { maximumBytes: 100_000 },
|
|
425
|
+
async execute({ options, project }) {
|
|
426
|
+
const source = await readFile(resolve(project.root, "dist/app.js"));
|
|
427
|
+
const level = 9;
|
|
428
|
+
const key = JSON.stringify({
|
|
429
|
+
sourceHash: createHash("sha256").update(source).digest("hex"),
|
|
430
|
+
measurementRevision: "gzip-size-v1",
|
|
431
|
+
level,
|
|
432
|
+
nodeVersion: process.versions.node,
|
|
433
|
+
zlibVersion: process.versions.zlib ?? null,
|
|
434
|
+
bunVersion: process.versions.bun ?? null
|
|
435
|
+
});
|
|
436
|
+
const cached = await cacheJsonByKey({
|
|
437
|
+
directory: resolve(project.root, ".cache/quality/gzip-size"),
|
|
438
|
+
namespace: "my-project.gzip-size",
|
|
439
|
+
version: "1",
|
|
440
|
+
key,
|
|
441
|
+
parse: parseMeasurement,
|
|
442
|
+
compute: () => ({ compressedBytes: gzipSync(source, { level }).byteLength })
|
|
443
|
+
});
|
|
444
|
+
const maximumBytes = options.maximumBytes;
|
|
445
|
+
const data = {
|
|
446
|
+
compressedBytes: cached.value.compressedBytes,
|
|
447
|
+
maximumBytes,
|
|
448
|
+
cacheSource: cached.source
|
|
449
|
+
};
|
|
450
|
+
return data.compressedBytes <= maximumBytes
|
|
451
|
+
? { status: "passed", data }
|
|
452
|
+
: { status: "failed", data };
|
|
453
|
+
}
|
|
454
|
+
});
|
|
455
|
+
|
|
456
|
+
const definition = defineConfig({
|
|
457
|
+
checks: [gzipSize],
|
|
458
|
+
outputs: { machinePublication: { enabled: false } }
|
|
459
|
+
});
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
运行前需有 `dist/app.js`。这里读取已生成产物;构建本身如何增量复用是另一项任务,不由这个 key 覆盖。
|
|
463
|
+
|
|
464
|
+
写自己的缓存时,分清三件事:
|
|
465
|
+
|
|
466
|
+
| 部分 | 本例如何定义 |
|
|
467
|
+
| --- | --- |
|
|
468
|
+
| 哪些变化必须重算? | key 包含文件内容摘要、计算实现版本、压缩参数与运行时/压缩库版本;计算读取其它输入时也要加入。 |
|
|
469
|
+
| 复用的事实是什么? | payload 只有 `compressedBytes`;`version` 标识 payload 格式,`parse` 验证读取和新计算的值。 |
|
|
470
|
+
| 本次是否通过? | 每次用当前 `maximumBytes` 判断,包括缓存命中时。阈值不影响压缩结果,因此不进入 key。 |
|
|
471
|
+
|
|
472
|
+
缓存目录是项目拥有、允许写入并可删除的本地目录。helper 负责读写与失效回退,不判断 key 是否完整,也不提供防篡改或保密保证;本例显式从 `project.root` 解析目录。
|
|
473
|
+
|
|
474
|
+
**试一下:**
|
|
475
|
+
|
|
476
|
+
1. 连续运行两次,大小相同,`cacheSource` 从 `computed` 变成 `cache`。
|
|
477
|
+
2. 改文件内容或 `level`,应重新计算;计算实现变化时同步更新 `measurementRevision`。
|
|
478
|
+
3. 只把阈值降到实测大小以下,即使命中缓存,也应失败。
|
|
479
|
+
4. 删除或破坏缓存文件,应重新计算;存储失败不抹掉本次已计算的结果,计算或 payload 校验失败则不能当成通过。
|
|
480
|
+
|
|
481
|
+
selection 决定是否做检查;cache 只复用检查内部的计算。本例的机制正确性与性能收益分别验证,是否值得缓存仍需测量。完整 helper 契约见[缓存计算结果](./cache-results.md);现成 Check 已有缓存选项时,可直接使用其能力。
|
|
482
|
+
|
|
483
|
+
## 8.表达并发约束
|
|
484
|
+
|
|
485
|
+
**情况:** 三组测试各自会启动重工作,你希望同时最多两组运行,但轻量检查仍可使用第三个总任务槽位。
|
|
486
|
+
|
|
487
|
+
下面的组合按[公共运行约定](#运行本页示例)执行:
|
|
488
|
+
|
|
489
|
+
```ts
|
|
490
|
+
import { defineCheck, defineConfig } from "@zxyycom/vibe-check";
|
|
491
|
+
|
|
492
|
+
const runners = ["unit", "integration", "typecheck"].map((checkId) =>
|
|
493
|
+
defineCheck({
|
|
494
|
+
checkId,
|
|
495
|
+
displayName: checkId,
|
|
496
|
+
resourceClaims: { runner: 1 },
|
|
497
|
+
async execute() {
|
|
498
|
+
// 用短等待模拟已等待的异步工作;实际项目在这里调用真实检查。
|
|
499
|
+
await new Promise((resolve) => setTimeout(resolve, 20));
|
|
500
|
+
return { status: "passed", data: {} };
|
|
501
|
+
}
|
|
502
|
+
})
|
|
503
|
+
);
|
|
504
|
+
|
|
505
|
+
const metadata = defineCheck({
|
|
506
|
+
checkId: "metadata",
|
|
507
|
+
displayName: "Metadata",
|
|
508
|
+
execute: () => ({ status: "passed", data: {} })
|
|
509
|
+
});
|
|
510
|
+
|
|
511
|
+
const definition = defineConfig({
|
|
512
|
+
checks: [...runners, metadata],
|
|
513
|
+
scheduler: { maxParallel: 3, resourceCapacities: { runner: 2 } },
|
|
514
|
+
outputs: { machinePublication: { enabled: false } }
|
|
515
|
+
});
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
三种约束分别回答不同问题:
|
|
519
|
+
|
|
520
|
+
| 约束 | 表达的意思 |
|
|
521
|
+
| --- | --- |
|
|
522
|
+
| `scheduler.maxParallel: 3` | 同时最多运行三个 Check。 |
|
|
523
|
+
| `runner: 2`,每组 claim 1 | 同时最多运行两组声明了该资源的任务。 |
|
|
524
|
+
| 两项都声明 `mutex: ["shared-fixture"]` | 若它们会改同一份 fixture,同一时刻只能运行其中一项。 |
|
|
525
|
+
|
|
526
|
+
需要共享 fixture 互斥时,将上表的同名 mutex 分别加入对应 Check;不必让其它独立测试一起串行。所有 claims 在准入时原子取得,结束后释放。
|
|
527
|
+
|
|
528
|
+
这里的 unit 是逻辑配额,不是 CPU 核或物理内存。第三个槽位可供轻量任务使用,但是否立即被选中取决于调度条件;容量 `2` 也不是性能最优承诺。先表达真实硬约束,再通过配对测量判断是否需要调整策略。
|
|
529
|
+
|
|
530
|
+
完整机制见[调度 Check](./scheduling.md)。
|
|
531
|
+
|
|
532
|
+
## 9.把工具输出转换为结构化诊断
|
|
533
|
+
|
|
534
|
+
**情况:** 你想把失败位置和原因变成可展示、可消费的 Records,但工具输出可能只有文本,也可能已有另一种结构。
|
|
535
|
+
|
|
536
|
+
先确认工具能提供什么:有稳定 JSON 模式时优先使用;自己拥有的 validator 可直接返回领域数据;只有文本模式时,再为已知格式写 parser。没有稳定格式的任意日志不能可靠还原成诊断,此时保留失败结论,不编造文件、行号或错误码。
|
|
537
|
+
|
|
538
|
+
### 9.1.只有文本:解析明确的格式
|
|
539
|
+
|
|
540
|
+
假设现有工具约定每行输出 `config/app.json:<行号>: MISSING_NAME`,退出 `0` 表示通过,普通非零退出表示检查失败。下面固定输出一行模拟它,按[公共运行约定](#运行本页示例)执行;替换成真实命令时,parser 也要遵循真实协议。
|
|
541
|
+
|
|
542
|
+
```ts
|
|
543
|
+
import {
|
|
544
|
+
commandCheck,
|
|
545
|
+
defineConfig,
|
|
546
|
+
type CheckResult,
|
|
547
|
+
type AfterCommandContext
|
|
548
|
+
} from "@zxyycom/vibe-check";
|
|
549
|
+
|
|
550
|
+
type DiagnosticData = { exitCode: number; diagnosticsAvailable?: boolean };
|
|
551
|
+
|
|
552
|
+
function parseTextDiagnostics(text: string) {
|
|
553
|
+
return text
|
|
554
|
+
.trim()
|
|
555
|
+
.split(/\r?\n/)
|
|
556
|
+
.map((line) => {
|
|
557
|
+
const match = /^config\/app\.json:([1-9][0-9]*): MISSING_NAME$/.exec(line);
|
|
558
|
+
if (!match) throw new TypeError("Unsupported diagnostic line");
|
|
559
|
+
const lineNumber = Number(match[1]);
|
|
560
|
+
if (!Number.isSafeInteger(lineNumber)) throw new TypeError("Invalid line number");
|
|
561
|
+
return { path: "config/app.json", line: lineNumber, code: "missing-name" };
|
|
562
|
+
});
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
const afterCommand = {
|
|
566
|
+
execute({ command, records }: AfterCommandContext): CheckResult<DiagnosticData> {
|
|
567
|
+
if (command.exitCode === 0) return { status: "passed", data: { exitCode: 0 } };
|
|
568
|
+
let diagnostics;
|
|
569
|
+
try {
|
|
570
|
+
diagnostics = parseTextDiagnostics(command.stdout);
|
|
571
|
+
} catch {
|
|
572
|
+
return {
|
|
573
|
+
status: "failed",
|
|
574
|
+
data: { exitCode: command.exitCode, diagnosticsAvailable: false }
|
|
575
|
+
};
|
|
576
|
+
}
|
|
577
|
+
diagnostics.forEach((data, index) => records.report({ id: "config-" + index }, data));
|
|
578
|
+
return {
|
|
579
|
+
status: "failed",
|
|
580
|
+
data: { exitCode: command.exitCode, diagnosticsAvailable: true }
|
|
581
|
+
};
|
|
582
|
+
}
|
|
583
|
+
};
|
|
584
|
+
|
|
585
|
+
const check = commandCheck({
|
|
586
|
+
checkId: "config-text-diagnostics",
|
|
587
|
+
displayName: "Configuration diagnostics",
|
|
588
|
+
executable: process.execPath,
|
|
589
|
+
arguments: [
|
|
590
|
+
"--eval",
|
|
591
|
+
'process.stdout.write("config/app.json:3: MISSING_NAME\\n"); process.exit(1);'
|
|
592
|
+
],
|
|
593
|
+
timeoutMs: 5_000,
|
|
594
|
+
outputByteLimit: 64 * 1024,
|
|
595
|
+
afterCommand
|
|
596
|
+
});
|
|
597
|
+
|
|
598
|
+
const definition = defineConfig({
|
|
599
|
+
checks: [check],
|
|
600
|
+
outputs: { machinePublication: { enabled: false } }
|
|
601
|
+
});
|
|
602
|
+
```
|
|
603
|
+
|
|
604
|
+
输出被转换为 `{ path: "config/app.json", line: 3, code: "missing-name" }`。parser 只接受这里声明的格式;混入一行无法识别的日志,整组诊断就不发布,Check 仍保留 `failed`。如果工具把诊断写在 stderr,应读取对应通道,而不是将 stdout/stderr 任意拼接。
|
|
605
|
+
|
|
606
|
+
### 9.2.已有结构:验证并映射为项目字段
|
|
607
|
+
|
|
608
|
+
另一个工具输出 `{ errors: [...] }`,使用 `filename`、`location.row` 和工具错误码 `CFG001`;项目则需要 `path`、`line` 和 `missing-name`。先验证源结构,再做字段、错误码和公开范围的转换,而不是把 JSON 原样塞进 Record。此片段独立使用[公共运行约定](#运行本页示例)。
|
|
609
|
+
|
|
610
|
+
```ts
|
|
611
|
+
import {
|
|
612
|
+
commandCheck,
|
|
613
|
+
defineConfig,
|
|
614
|
+
type CheckResult,
|
|
615
|
+
type AfterCommandContext
|
|
616
|
+
} from "@zxyycom/vibe-check";
|
|
617
|
+
|
|
618
|
+
type DiagnosticData = { exitCode: number; diagnosticsAvailable?: boolean };
|
|
619
|
+
|
|
620
|
+
function projectJsonDiagnostics(text: string) {
|
|
621
|
+
const value: unknown = JSON.parse(text);
|
|
622
|
+
if (
|
|
623
|
+
value === null ||
|
|
624
|
+
typeof value !== "object" ||
|
|
625
|
+
!("errors" in value) ||
|
|
626
|
+
!Array.isArray(value.errors)
|
|
627
|
+
)
|
|
628
|
+
throw new TypeError("Expected an errors array");
|
|
629
|
+
return value.errors.map((item) => {
|
|
630
|
+
if (
|
|
631
|
+
item === null ||
|
|
632
|
+
typeof item !== "object" ||
|
|
633
|
+
item.filename !== "config/app.json" ||
|
|
634
|
+
item.rule !== "CFG001" ||
|
|
635
|
+
item.location === null ||
|
|
636
|
+
typeof item.location !== "object" ||
|
|
637
|
+
typeof item.location.row !== "number" ||
|
|
638
|
+
!Number.isSafeInteger(item.location.row) ||
|
|
639
|
+
item.location.row < 1
|
|
640
|
+
)
|
|
641
|
+
throw new TypeError("Unsupported diagnostic");
|
|
642
|
+
return { path: "config/app.json", line: item.location.row, code: "missing-name" };
|
|
643
|
+
});
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
const afterCommand = {
|
|
647
|
+
execute({ command, records }: AfterCommandContext): CheckResult<DiagnosticData> {
|
|
648
|
+
if (command.exitCode === 0) {
|
|
649
|
+
return { status: "passed", data: { exitCode: 0 } };
|
|
650
|
+
}
|
|
651
|
+
let diagnostics;
|
|
652
|
+
try {
|
|
653
|
+
diagnostics = projectJsonDiagnostics(command.stdout);
|
|
654
|
+
} catch {
|
|
655
|
+
return {
|
|
656
|
+
status: "failed",
|
|
657
|
+
data: { exitCode: command.exitCode, diagnosticsAvailable: false }
|
|
658
|
+
};
|
|
659
|
+
}
|
|
660
|
+
diagnostics.forEach((data, index) => records.report({ id: "config-" + index }, data));
|
|
661
|
+
return {
|
|
662
|
+
status: "failed",
|
|
663
|
+
data: { exitCode: command.exitCode, diagnosticsAvailable: true }
|
|
664
|
+
};
|
|
665
|
+
}
|
|
666
|
+
};
|
|
667
|
+
|
|
668
|
+
const check = commandCheck({
|
|
669
|
+
checkId: "config-json-diagnostics",
|
|
670
|
+
displayName: "Configuration diagnostics",
|
|
671
|
+
executable: process.execPath,
|
|
672
|
+
arguments: [
|
|
673
|
+
"--eval",
|
|
674
|
+
'process.stdout.write(JSON.stringify({errors:[{filename:"config/app.json",location:{row:3},rule:"CFG001",debug:"internal context"}]})); process.exit(1);'
|
|
675
|
+
],
|
|
676
|
+
timeoutMs: 5_000,
|
|
677
|
+
outputByteLimit: 64 * 1024,
|
|
678
|
+
afterCommand
|
|
679
|
+
});
|
|
680
|
+
|
|
681
|
+
const definition = defineConfig({
|
|
682
|
+
checks: [check],
|
|
683
|
+
outputs: { machinePublication: { enabled: false } }
|
|
684
|
+
});
|
|
685
|
+
```
|
|
686
|
+
|
|
687
|
+
这个例子故意只支持一个已知文件和一种工具错误码,以清楚展示映射;实际 adapter 按协议扩充允许的范围。`debug` 等额外字段被丢弃,不会复制进 Record。Record 的领域 data 由 Check 自己定义,并不存在 Product 强制所有工具遵循的 `path/line/code` 诊断 schema。
|
|
688
|
+
|
|
689
|
+
**两种转换都应验证:** 有效输入得到一条相同形状的 Record,Check 仍为 `failed`;第二条格式错误、使用未支持的错误码或指向 `../outside.json` 时,整组拒绝,不会先发布第一条。非零退出的失败结论保留为 `diagnosticsAvailable: false`,不是把无法解析误当成没有问题。
|
|
690
|
+
|
|
691
|
+
上述原子性来自“先 map 验证全部,再 report”,不是 reporter 自带事务。这两个例子的兜底依赖工具以非零退出表达失败的约定;如果工具区分“发现错误”和“自身崩溃”的退出码,adapter 也要分别映射。启动失败、超时等不会进入 `afterCommand`,仍由 Product 结算为 `unavailable`。
|
|
692
|
+
|
|
693
|
+
例子保持默认 `discard`,不保存原始输出;Records 仍进入 Run 的内存结果与默认进度预览,启用 machine publication 后也会发布。需要排障 transcript 时,显式配置 `output: { mode: "transcript" }` 和本次 `checkArtifactBaseDirectory`,并由 caller 管理访问和留存。preview 限额不承担脱敏责任。
|
|
694
|
+
|
|
695
|
+
更多约束见 [afterCommand](./command-check.md#调用方完成阶段)和[Run 输出](./run-outputs.md)。
|
|
696
|
+
|
|
697
|
+
## 把选中的场景带回项目
|
|
698
|
+
|
|
699
|
+
可以先选最接近当前问题的一节,按小步迭代:
|
|
700
|
+
|
|
701
|
+
1. 明确希望改变的结果,例如“安装一次,分别知道类型和运行时验收是否通过”。
|
|
702
|
+
2. 写出一组成功与失败对照,再选择 Check、关系和约束。
|
|
703
|
+
3. 只加入这次确实需要的能力。
|
|
704
|
+
4. 运行后核对单项 outcome、aggregate 和调用入口退出码;涉及性能时另做可比较测量。
|
|
705
|
+
|
|
706
|
+
将各场景的判断顺序用于自己的项目,选择适合当前目标的组合。精确契约由各专题拥有,按节内链接继续阅读。
|