@mjasnikovs/pi-task 0.38.29 → 0.38.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/config.d.ts +70 -70
- package/dist/config/config.js +26 -35
- package/dist/config/extension-list.d.ts +6 -5
- package/dist/config/extension-list.js +3 -2
- package/dist/config/reasoning-args.d.ts +9 -7
- package/dist/config/reasoning-args.js +12 -10
- package/dist/config/reasoning.d.ts +44 -105
- package/dist/config/reasoning.js +27 -704
- package/dist/config/register.d.ts +34 -48
- package/dist/config/register.js +41 -51
- package/dist/config/tool-list.d.ts +16 -16
- package/dist/config/tool-list.js +1 -1
- package/dist/index.js +2 -0
- package/dist/remote/bridge.d.ts +19 -10
- package/dist/remote/bridge.js +3 -2
- package/dist/remote/broadcast.js +3 -1
- package/dist/remote/events.js +12 -11
- package/dist/remote/history.d.ts +1 -1
- package/dist/remote/protocol.d.ts +6 -3
- package/dist/remote/protocol.js +2 -1
- package/dist/remote/push.d.ts +16 -16
- package/dist/remote/push.js +27 -27
- package/dist/remote/register.d.ts +3 -3
- package/dist/remote/register.js +17 -19
- package/dist/remote/server.d.ts +9 -8
- package/dist/remote/server.js +15 -14
- package/dist/remote/session-state.d.ts +5 -4
- package/dist/remote/session-state.js +8 -5
- package/dist/remote/sw.d.ts +7 -6
- package/dist/remote/sw.js +7 -6
- package/dist/remote/tailscale.d.ts +4 -2
- package/dist/remote/tailscale.js +4 -2
- package/dist/remote/ui-highlight.js +6 -5
- package/dist/remote/ui-render.js +4 -4
- package/dist/remote/ui-script.js +24 -24
- package/dist/remote/ui-styles.d.ts +1 -1
- package/dist/remote/ui-styles.js +10 -13
- package/dist/remote/ui-tools.js +9 -6
- package/dist/shared/child-extensions.d.ts +29 -17
- package/dist/shared/child-extensions.js +29 -17
- package/dist/shared/child-output.d.ts +30 -24
- package/dist/shared/child-output.js +25 -17
- package/dist/shared/child-process.d.ts +47 -40
- package/dist/shared/child-process.js +50 -59
- package/dist/shared/command-watchdog.d.ts +85 -16
- package/dist/shared/command-watchdog.js +115 -21
- package/dist/shared/fs-text.d.ts +16 -10
- package/dist/shared/fs-text.js +16 -10
- package/dist/shared/git-runner.d.ts +25 -25
- package/dist/shared/git-runner.js +25 -25
- package/dist/shared/leaked-tool-call.d.ts +17 -11
- package/dist/shared/leaked-tool-call.js +23 -15
- package/dist/shared/model-endpoint.d.ts +29 -16
- package/dist/shared/model-endpoint.js +33 -21
- package/dist/shared/pi-invocation.d.ts +7 -4
- package/dist/shared/pi-invocation.js +12 -7
- package/dist/shared/pkg-version.d.ts +13 -5
- package/dist/shared/pkg-version.js +13 -5
- package/dist/shared/reasoning-capability.d.ts +35 -24
- package/dist/shared/reasoning-capability.js +35 -24
- package/dist/shared/stream-watchdog.d.ts +60 -44
- package/dist/shared/stream-watchdog.js +62 -45
- package/dist/task/accept-debt.d.ts +41 -43
- package/dist/task/accept-debt.js +73 -65
- package/dist/task/api-synthesis.d.ts +24 -21
- package/dist/task/api-synthesis.js +32 -26
- package/dist/task/apis-contract.d.ts +32 -64
- package/dist/task/apis-contract.js +32 -64
- package/dist/task/artifact-closure.d.ts +27 -13
- package/dist/task/artifact-closure.js +95 -67
- package/dist/task/auto-commit.d.ts +46 -35
- package/dist/task/auto-commit.js +51 -38
- package/dist/task/auto-io.d.ts +45 -25
- package/dist/task/auto-io.js +57 -29
- package/dist/task/auto-orchestrator.d.ts +26 -24
- package/dist/task/auto-orchestrator.js +192 -165
- package/dist/task/auto-prompts.d.ts +36 -24
- package/dist/task/auto-prompts.js +40 -26
- package/dist/task/autofix-ledger.d.ts +27 -25
- package/dist/task/autofix-ledger.js +29 -26
- package/dist/task/batch-test-task.d.ts +20 -12
- package/dist/task/batch-test-task.js +67 -60
- package/dist/task/boot-probe.d.ts +60 -44
- package/dist/task/boot-probe.js +91 -72
- package/dist/task/cancel-input.d.ts +30 -16
- package/dist/task/cancel-input.js +20 -11
- package/dist/task/cancel-points.d.ts +27 -20
- package/dist/task/cancel-points.js +30 -22
- package/dist/task/child-runner.d.ts +124 -55
- package/dist/task/child-runner.js +298 -90
- package/dist/task/child-status.d.ts +23 -16
- package/dist/task/child-status.js +23 -16
- package/dist/task/clamp-output.js +12 -5
- package/dist/task/command-run.d.ts +31 -28
- package/dist/task/command-run.js +44 -35
- package/dist/task/command-shrink.d.ts +25 -18
- package/dist/task/command-shrink.js +37 -31
- package/dist/task/command-watchdog.d.ts +9 -6
- package/dist/task/command-watchdog.js +21 -15
- package/dist/task/context-attribution.d.ts +34 -26
- package/dist/task/context-attribution.js +34 -26
- package/dist/task/context-silence.d.ts +39 -29
- package/dist/task/context-silence.js +35 -25
- package/dist/task/context-usage.d.ts +16 -9
- package/dist/task/context-usage.js +16 -9
- package/dist/task/contracts.d.ts +8 -4
- package/dist/task/contracts.js +25 -17
- package/dist/task/coverage-loop.d.ts +22 -18
- package/dist/task/coverage-loop.js +35 -30
- package/dist/task/critique-probes.d.ts +13 -14
- package/dist/task/critique-probes.js +50 -39
- package/dist/task/debug-log.d.ts +13 -5
- package/dist/task/debug-log.js +32 -20
- package/dist/task/decompose-fidelity.d.ts +11 -9
- package/dist/task/decompose-fidelity.js +38 -33
- package/dist/task/decompose-granularity.d.ts +41 -38
- package/dist/task/decompose-granularity.js +41 -38
- package/dist/task/deep-render-check.d.ts +22 -14
- package/dist/task/deep-render-check.js +40 -31
- package/dist/task/dropped-input.d.ts +12 -7
- package/dist/task/dropped-input.js +5 -2
- package/dist/task/enforce-attribution.d.ts +38 -47
- package/dist/task/enforce-attribution.js +46 -52
- package/dist/task/enforce-guidelines.d.ts +31 -20
- package/dist/task/enforce-guidelines.js +32 -21
- package/dist/task/enrichment.d.ts +7 -2
- package/dist/task/enrichment.js +26 -14
- package/dist/task/env-notes.d.ts +16 -7
- package/dist/task/env-notes.js +48 -31
- package/dist/task/env-template-closure.d.ts +4 -4
- package/dist/task/env-template-closure.js +42 -34
- package/dist/task/external-context.d.ts +28 -21
- package/dist/task/external-context.js +17 -12
- package/dist/task/failure-classifier.d.ts +4 -5
- package/dist/task/failure-classifier.js +30 -8
- package/dist/task/file-inventory.d.ts +15 -11
- package/dist/task/file-inventory.js +25 -22
- package/dist/task/final-gate-fix.d.ts +74 -86
- package/dist/task/final-gate-fix.js +97 -116
- package/dist/task/final-gate-progress.d.ts +29 -46
- package/dist/task/final-gate-progress.js +40 -51
- package/dist/task/final-gate.d.ts +64 -97
- package/dist/task/final-gate.js +192 -199
- package/dist/task/fix-child.d.ts +21 -27
- package/dist/task/fix-child.js +21 -27
- package/dist/task/foreign-path.d.ts +6 -5
- package/dist/task/foreign-path.js +0 -0
- package/dist/task/frozen-conflict.d.ts +9 -10
- package/dist/task/frozen-conflict.js +61 -64
- package/dist/task/frozen-path-guard.d.ts +35 -14
- package/dist/task/frozen-path-guard.js +56 -39
- package/dist/task/gate-child.d.ts +27 -28
- package/dist/task/gate-child.js +36 -35
- package/dist/task/gate-deps.d.ts +34 -27
- package/dist/task/gate-deps.js +169 -159
- package/dist/task/gate-tally.d.ts +77 -80
- package/dist/task/gate-tally.js +65 -68
- package/dist/task/git-state-guard.d.ts +15 -11
- package/dist/task/git-state-guard.js +76 -66
- package/dist/task/impl-widget.d.ts +25 -16
- package/dist/task/impl-widget.js +27 -17
- package/dist/task/implementation-guards.d.ts +26 -0
- package/dist/task/implementation-guards.js +177 -0
- package/dist/task/implementation-thinking.d.ts +33 -31
- package/dist/task/implementation-thinking.js +5 -6
- package/dist/task/implementation-turn.d.ts +39 -31
- package/dist/task/implementation-turn.js +41 -28
- package/dist/task/inline-markdown.d.ts +20 -7
- package/dist/task/inline-markdown.js +15 -6
- package/dist/task/launch-config-gap.js +25 -39
- package/dist/task/launch-contract.d.ts +18 -21
- package/dist/task/launch-contract.js +28 -30
- package/dist/task/launch-manifest.d.ts +6 -2
- package/dist/task/launch-manifest.js +35 -34
- package/dist/task/ledger.js +16 -14
- package/dist/task/lint-fix.d.ts +6 -8
- package/dist/task/lint-fix.js +67 -69
- package/dist/task/loop-detector.d.ts +27 -8
- package/dist/task/loop-detector.js +38 -14
- package/dist/task/mid-run-input.d.ts +17 -15
- package/dist/task/mid-run-input.js +17 -15
- package/dist/task/orchestrator.d.ts +24 -28
- package/dist/task/orchestrator.js +89 -66
- package/dist/task/orientation.d.ts +18 -23
- package/dist/task/orientation.js +24 -31
- package/dist/task/owned-freeze-conflict.d.ts +21 -20
- package/dist/task/owned-freeze-conflict.js +52 -85
- package/dist/task/owned-freeze-reassign.d.ts +40 -60
- package/dist/task/owned-freeze-reassign.js +41 -61
- package/dist/task/parsers.d.ts +4 -2
- package/dist/task/parsers.js +4 -4
- package/dist/task/phases.d.ts +41 -48
- package/dist/task/phases.js +196 -252
- package/dist/task/plan-io.d.ts +6 -7
- package/dist/task/plan-io.js +6 -7
- package/dist/task/plan-orchestrator.d.ts +10 -8
- package/dist/task/plan-orchestrator.js +14 -10
- package/dist/task/plan-prompts.d.ts +6 -5
- package/dist/task/plan-prompts.js +6 -5
- package/dist/task/plan-readonly.d.ts +4 -5
- package/dist/task/plan-readonly.js +4 -5
- package/dist/task/plan-rounds.d.ts +17 -29
- package/dist/task/plan-rounds.js +21 -34
- package/dist/task/plan-session.d.ts +58 -72
- package/dist/task/plan-session.js +61 -83
- package/dist/task/probe-gaming.d.ts +28 -27
- package/dist/task/probe-gaming.js +0 -0
- package/dist/task/prohibition-probe.d.ts +14 -16
- package/dist/task/prompts.d.ts +3 -4
- package/dist/task/prompts.js +17 -26
- package/dist/task/qa-transcript.d.ts +15 -22
- package/dist/task/qa-transcript.js +15 -21
- package/dist/task/question-box.d.ts +17 -13
- package/dist/task/question-box.js +19 -15
- package/dist/task/question-dedup.d.ts +6 -7
- package/dist/task/question-dedup.js +13 -14
- package/dist/task/question-dialog.d.ts +22 -32
- package/dist/task/question-dialog.js +22 -32
- package/dist/task/question-source.d.ts +18 -44
- package/dist/task/question-source.js +22 -51
- package/dist/task/refuted-constraint.d.ts +11 -31
- package/dist/task/refuted-constraint.js +27 -51
- package/dist/task/regenerable-artifacts.d.ts +12 -31
- package/dist/task/regenerable-artifacts.js +12 -31
- package/dist/task/render-check.d.ts +11 -22
- package/dist/task/render-check.js +33 -46
- package/dist/task/repo-health-check.d.ts +10 -14
- package/dist/task/repo-health-check.js +17 -23
- package/dist/task/requirements.d.ts +38 -71
- package/dist/task/requirements.js +78 -126
- package/dist/task/research-fanout-budget.d.ts +51 -88
- package/dist/task/research-fanout-budget.js +51 -88
- package/dist/task/research-worker.d.ts +29 -39
- package/dist/task/research-worker.js +37 -61
- package/dist/task/resume-gap.d.ts +14 -15
- package/dist/task/root-cause-repair.d.ts +9 -9
- package/dist/task/root-cause-repair.js +28 -40
- package/dist/task/run-bracket.d.ts +10 -13
- package/dist/task/run-end.d.ts +12 -22
- package/dist/task/run-end.js +8 -16
- package/dist/task/run-final-gate.d.ts +19 -21
- package/dist/task/run-final-gate.js +62 -80
- package/dist/task/runner-globs.d.ts +12 -13
- package/dist/task/runner-globs.js +12 -13
- package/dist/task/runner-resolve.d.ts +9 -9
- package/dist/task/runner-resolve.js +22 -23
- package/dist/task/script-escape.d.ts +10 -12
- package/dist/task/script-escape.js +13 -14
- package/dist/task/serve-entry.d.ts +1 -1
- package/dist/task/serve-entry.js +22 -25
- package/dist/task/service-blocks.js +4 -2
- package/dist/task/shipped-source.d.ts +11 -29
- package/dist/task/shipped-source.js +11 -29
- package/dist/task/skip-escape.js +10 -14
- package/dist/task/spec-urls.d.ts +26 -65
- package/dist/task/spec-urls.js +26 -65
- package/dist/task/spec-validation.d.ts +17 -20
- package/dist/task/spec-validation.js +17 -20
- package/dist/task/stall-detector.d.ts +23 -30
- package/dist/task/stall-detector.js +23 -30
- package/dist/task/stream-watchdog.d.ts +14 -12
- package/dist/task/stream-watchdog.js +14 -12
- package/dist/task/substitution-probe.d.ts +17 -20
- package/dist/task/substitution-probe.js +17 -20
- package/dist/task/task-gates.d.ts +36 -41
- package/dist/task/task-gates.js +95 -106
- package/dist/task/task-io.d.ts +4 -4
- package/dist/task/task-io.js +4 -4
- package/dist/task/task-parsers.js +4 -3
- package/dist/task/task-provenance.d.ts +2 -2
- package/dist/task/task-provenance.js +11 -13
- package/dist/task/task-types.d.ts +4 -3
- package/dist/task/terminal-outcome.d.ts +14 -16
- package/dist/task/terminal-outcome.js +12 -14
- package/dist/task/test-assembly.d.ts +13 -20
- package/dist/task/test-assembly.js +13 -20
- package/dist/task/timings.d.ts +5 -3
- package/dist/task/timings.js +5 -3
- package/dist/task/title-label.d.ts +9 -4
- package/dist/task/title-label.js +9 -4
- package/dist/task/type-only-answer.d.ts +44 -52
- package/dist/task/type-only-answer.js +44 -52
- package/dist/task/unfailable-command.d.ts +18 -24
- package/dist/task/unfailable-command.js +21 -27
- package/dist/task/unknown-routing.d.ts +10 -4
- package/dist/task/unknown-routing.js +10 -4
- package/dist/task/user-directives.d.ts +5 -8
- package/dist/task/user-directives.js +5 -8
- package/dist/task/verify-quality.d.ts +18 -22
- package/dist/task/verify-quality.js +45 -46
- package/dist/task/verify-reconcile.d.ts +15 -10
- package/dist/task/verify-reconcile.js +45 -43
- package/dist/task/verify-resolution.d.ts +24 -20
- package/dist/task/verify-resolution.js +51 -50
- package/dist/task/verify-work.d.ts +59 -66
- package/dist/task/verify-work.js +101 -138
- package/dist/task/widget.d.ts +15 -14
- package/dist/task/widget.js +22 -17
- package/dist/task/wiring-claims.d.ts +25 -32
- package/dist/task/wiring-claims.js +30 -35
- package/dist/task/write-guard.d.ts +39 -39
- package/dist/task/write-guard.js +48 -51
- package/dist/task/yolo.d.ts +34 -30
- package/dist/task/yolo.js +42 -37
- package/dist/workers/abstention.d.ts +21 -41
- package/dist/workers/abstention.js +27 -48
- package/dist/workers/brave-search.d.ts +4 -3
- package/dist/workers/brave-search.js +5 -2
- package/dist/workers/brave-warning.d.ts +7 -4
- package/dist/workers/brave-warning.js +19 -7
- package/dist/workers/ddg-search.d.ts +6 -6
- package/dist/workers/ddg-search.js +18 -12
- package/dist/workers/docs-cache.js +5 -2
- package/dist/workers/docs-chunk.d.ts +30 -37
- package/dist/workers/docs-chunk.js +37 -41
- package/dist/workers/docs-core.d.ts +28 -44
- package/dist/workers/docs-core.js +25 -44
- package/dist/workers/docs-index.js +4 -3
- package/dist/workers/docs-lookup.d.ts +15 -22
- package/dist/workers/docs-lookup.js +12 -21
- package/dist/workers/docs-project.d.ts +15 -9
- package/dist/workers/docs-project.js +17 -10
- package/dist/workers/docs-resolve.d.ts +19 -20
- package/dist/workers/docs-resolve.js +35 -32
- package/dist/workers/docs-retrieve.d.ts +5 -6
- package/dist/workers/docs-retrieve.js +18 -15
- package/dist/workers/exa-search.d.ts +9 -6
- package/dist/workers/exa-search.js +23 -12
- package/dist/workers/fetch-core.d.ts +13 -16
- package/dist/workers/fetch-core.js +23 -23
- package/dist/workers/focused-extractor.d.ts +13 -12
- package/dist/workers/focused-extractor.js +27 -19
- package/dist/workers/html-clean.js +24 -14
- package/dist/workers/http-request.d.ts +28 -20
- package/dist/workers/http-request.js +22 -17
- package/dist/workers/npm-version.d.ts +28 -11
- package/dist/workers/npm-version.js +24 -15
- package/dist/workers/phantom-imports.d.ts +15 -12
- package/dist/workers/phantom-imports.js +30 -24
- package/dist/workers/pi-worker-core.d.ts +65 -96
- package/dist/workers/pi-worker-core.js +93 -181
- package/dist/workers/pi-worker-docs.d.ts +24 -19
- package/dist/workers/pi-worker-docs.js +67 -76
- package/dist/workers/pi-worker-fetch.d.ts +7 -3
- package/dist/workers/pi-worker-fetch.js +27 -19
- package/dist/workers/pi-worker-search.js +12 -8
- package/dist/workers/pi-worker.d.ts +9 -4
- package/dist/workers/pi-worker.js +21 -14
- package/dist/workers/reasoning-warning.d.ts +18 -17
- package/dist/workers/reasoning-warning.js +22 -20
- package/dist/workers/research-cache.js +50 -78
- package/dist/workers/search-core.js +7 -5
- package/dist/workers/search-types.d.ts +10 -9
- package/dist/workers/search-types.js +9 -8
- package/dist/workers/session-hint.d.ts +13 -14
- package/dist/workers/session-hint.js +8 -9
- package/dist/workers/shared.d.ts +21 -25
- package/dist/workers/shared.js +0 -0
- package/dist/workers/single-read-extension.d.ts +14 -7
- package/dist/workers/single-read-extension.js +14 -7
- package/dist/workers/single-read-guard.d.ts +27 -30
- package/dist/workers/single-read-guard.js +36 -36
- package/dist/workers/typeonly-log.d.ts +12 -9
- package/dist/workers/typeonly-log.js +29 -33
- package/dist/workers/worker-channels.d.ts +15 -23
- package/dist/workers/worker-channels.js +15 -23
- package/dist/workers/worker-failure.d.ts +38 -46
- package/dist/workers/worker-failure.js +31 -39
- package/dist/workers/worker-kill.d.ts +25 -26
- package/dist/workers/worker-kill.js +16 -19
- package/dist/workers/worker-profiles.d.ts +54 -56
- package/dist/workers/worker-profiles.js +63 -39
- package/package.json +10 -8
|
@@ -11,40 +11,34 @@ export interface FinalGateOutcome {
|
|
|
11
11
|
/**
|
|
12
12
|
* On a fail: the exact command(s), exit code(s), and output tail(s) — the
|
|
13
13
|
* MECHANICAL failures only. The accept-debt note is deliberately NOT folded in
|
|
14
|
-
* here
|
|
15
|
-
* and a debt
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
14
|
+
* here, because this string is what `buildFinalFixPrompt` puts in front of the
|
|
15
|
+
* autofix child, and a recorded debt claim reaching a write-enabled child reads
|
|
16
|
+
* as an instruction to act on it. The child cannot act on text it never
|
|
17
|
+
* receives; debts travel in `debtNote`. With multiple failures this is the
|
|
18
|
+
* numbered, ranked list (see `failures`).
|
|
19
19
|
*/
|
|
20
20
|
reason: string;
|
|
21
21
|
/**
|
|
22
22
|
* On a fail: EVERY section failure individually, ranked most load-bearing
|
|
23
23
|
* first — boot/render ("the app does not serve/render") outranks any single
|
|
24
|
-
* test failure. The gate
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
24
|
+
* test failure. The gate aggregates rather than early-returning: the boot and
|
|
25
|
+
* render probes run LAST, so a first-failure return would let any earlier test
|
|
26
|
+
* failure shadow the one signal that answers "does the app serve anything at
|
|
27
|
+
* all". Callers trail each entry and show the full list wherever an ACCEPT
|
|
28
|
+
* decision is made.
|
|
29
29
|
*/
|
|
30
30
|
failures?: string[];
|
|
31
31
|
/**
|
|
32
32
|
* The SUBSET of `failures` that a PROBE returned after actually observing —
|
|
33
33
|
* entries whose evidence is "we looked, and what we saw was bad", as opposed to
|
|
34
|
-
* "we could not look"
|
|
34
|
+
* "we could not look".
|
|
35
35
|
*
|
|
36
|
-
* The probes
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* equality, which a deterministic un-fixed defect satisfies by definition.
|
|
43
|
-
*
|
|
44
|
-
* mx5 run 21: the render probe FAILED on a blank page, the same failure came
|
|
45
|
-
* back from two tree-changing fix attempts (because the defect was real and
|
|
46
|
-
* unfixed), the classifier read that as evidence against the INSTRUMENT, and
|
|
47
|
-
* the run shipped a product whose every page was blank as `completed`.
|
|
36
|
+
* The probes distinguish "we looked and it was bad" from "we could not look"
|
|
37
|
+
* in their own outcomes; this field carries that class alongside the failure
|
|
38
|
+
* TEXT. Without it the non-progress classifier downstream has only string
|
|
39
|
+
* equality to go on, and a deterministic un-fixed defect satisfies string
|
|
40
|
+
* equality by definition — so a real, still-broken check reads as an
|
|
41
|
+
* unfalsifiable one and gets demoted to debt.
|
|
48
42
|
*
|
|
49
43
|
* Membership is by exact text identity with an entry of `failures` — never a
|
|
50
44
|
* pattern, never a re-derivation. Absent/empty on a pass.
|
|
@@ -57,10 +51,10 @@ export interface FinalGateOutcome {
|
|
|
57
51
|
*/
|
|
58
52
|
debtNote?: string;
|
|
59
53
|
/**
|
|
60
|
-
* ACCEPT-despite-verify-FAIL debts still open at run end
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
54
|
+
* ACCEPT-despite-verify-FAIL debts still open at run end: tasks the user
|
|
55
|
+
* blessed as-is despite a verify-FAIL that a deterministic re-check could not
|
|
56
|
+
* prove resolved. The caller surfaces them so a run never completes silently
|
|
57
|
+
* carrying an accepted defect. Empty/absent = none.
|
|
64
58
|
*/
|
|
65
59
|
openDebts?: AcceptDebt[];
|
|
66
60
|
/**
|
|
@@ -68,8 +62,8 @@ export interface FinalGateOutcome {
|
|
|
68
62
|
* supposed to. Two independent triggers, either or both:
|
|
69
63
|
* - nothing dynamic ran at all — no command was discoverable, or every discovered
|
|
70
64
|
* one skipped as an environment gap (unobservedVerdict);
|
|
71
|
-
* - a served app's boot command was discovered and SKIPPED, whatever else ran
|
|
72
|
-
*
|
|
65
|
+
* - a served app's boot command was discovered and SKIPPED, whatever else ran.
|
|
66
|
+
*
|
|
73
67
|
* `ok` is still true (the statics did pass and there is nothing to fix), but this is
|
|
74
68
|
* NOT a PASS: the caller must record it as UNOBSERVED, never as "checked and fine".
|
|
75
69
|
* Absent ⇒ everything the gate meant to observe, it observed.
|
|
@@ -82,24 +76,19 @@ export interface FinalGateOutcome {
|
|
|
82
76
|
* manifest that exists wins, mirroring discoverHealthCommands. Empty means
|
|
83
77
|
* "nothing to run" — the static half may still gate.
|
|
84
78
|
*
|
|
85
|
-
* THE MANIFEST ALLOWLIST BELOW IS NARROW, AND THAT IS A KNOWN
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
* rather than as a PASS (see
|
|
89
|
-
*
|
|
79
|
+
* THE MANIFEST ALLOWLIST BELOW IS NARROW, AND THAT IS A KNOWN GAP: a project with
|
|
80
|
+
* no package.json, Makefile, Cargo.toml, go.mod or pyproject.toml discovers
|
|
81
|
+
* NOTHING here, and so does a package.json whose only script is named something
|
|
82
|
+
* else. That outcome is reported as UNOBSERVED rather than as a PASS (see
|
|
83
|
+
* unobservedVerdict), which makes the blindness loud — it does not remove it.
|
|
90
84
|
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
* minutes of hang. Full numbers, the reproduction rig, and why no pre-execution
|
|
99
|
-
* filter can separate a fabricated command from a real one:
|
|
100
|
-
* scripts/harvest-verified-tooling-step0.ts. DO NOT re-propose the harvest without
|
|
101
|
-
* first fixing the PROVENANCE of `## verified tooling` (record cwd + exit code at
|
|
102
|
-
* authoring time); widening this allowlist tool-by-tool is not the fix either.
|
|
85
|
+
* DO NOT close the gap by harvesting each task's own `## verified tooling`
|
|
86
|
+
* section. That section is the parsed output of a model child (phases.ts writes
|
|
87
|
+
* it from the verify-tooling worker), and despite its name nothing records the
|
|
88
|
+
* cwd the command was tried in or the code it exited with — so a fabricated
|
|
89
|
+
* command is indistinguishable from a real one before it runs, and running it is
|
|
90
|
+
* how the gate would find out. Fix that provenance first. Widening this allowlist
|
|
91
|
+
* tool-by-tool is not the fix either.
|
|
103
92
|
*/
|
|
104
93
|
export declare function discoverIntegrationCommands(cwd: string): {
|
|
105
94
|
ecosystem: string | null;
|
|
@@ -119,11 +108,11 @@ export declare function discoverGateCommandLabels(cwd: string): string[];
|
|
|
119
108
|
* The RESOLVED BODY of every discoverable gate command, keyed by the same label
|
|
120
109
|
* `discoverGateCommandLabels` produces.
|
|
121
110
|
*
|
|
122
|
-
* The label is what the gate CALLS; the body is what actually runs.
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
111
|
+
* The label is what the gate CALLS; the body is what actually runs. A fix pass
|
|
112
|
+
* can rewrite `scripts.test` to run one subdirectory and leave the label
|
|
113
|
+
* `bun run test` identical, so the label guard sees nothing while the suite stops
|
|
114
|
+
* covering the repository. The shrink guard compares these bodies (see
|
|
115
|
+
* command-shrink.ts).
|
|
127
116
|
*
|
|
128
117
|
* A command with no indirection (`cargo test --quiet`, `pytest -q`) resolves to
|
|
129
118
|
* itself: it cannot be narrowed without changing the label, which the label
|
|
@@ -145,10 +134,9 @@ export { deriveOpenDebts, rerunDebtVerifyCommand };
|
|
|
145
134
|
* with no runnable command at all still FAILS the scan instead of returning
|
|
146
135
|
* UNOBSERVED. A static check needs no runner; that is the whole point of
|
|
147
136
|
* deciding it in exactly the environment where every dynamic probe went blind.
|
|
148
|
-
* - `post-boot` runs after the dynamic sections
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
* between stages MOVES it in the user-visible failure list.
|
|
137
|
+
* - `post-boot` runs after the dynamic sections. Execution order is the
|
|
138
|
+
* aggregate's tiebreak within a rank, so moving a row between stages MOVES it
|
|
139
|
+
* in the user-visible failure list.
|
|
152
140
|
*/
|
|
153
141
|
type ClosureScanStage = 'pre-discovery' | 'post-boot';
|
|
154
142
|
/** Everything a closure scan may look at. Static and synchronous by construction:
|
|
@@ -181,13 +169,12 @@ interface ClosureScan {
|
|
|
181
169
|
* finding.
|
|
182
170
|
*
|
|
183
171
|
* A GENERATOR rather than a function returning an array, for two reasons.
|
|
184
|
-
* First, the driver's try/catch wraps the ITERATION, so a scan that
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
* lowest-common-denominator result type on all of them.
|
|
172
|
+
* First, the driver's try/catch wraps the ITERATION, so a scan that yields two
|
|
173
|
+
* findings and then throws still emits those two. Second, the three scans do
|
|
174
|
+
* not share a result shape — one nullable finding, a list, and a list plus the
|
|
175
|
+
* template set its formatter also needs — and folding scan and format together
|
|
176
|
+
* lets each row keep its own arity instead of forcing a
|
|
177
|
+
* lowest-common-denominator result type on all three.
|
|
191
178
|
*/
|
|
192
179
|
run: (input: ClosureScanInput) => Iterable<string>;
|
|
193
180
|
}
|
|
@@ -195,12 +182,12 @@ interface ClosureScan {
|
|
|
195
182
|
* The run-level closure scans, in emission order within their stage.
|
|
196
183
|
*
|
|
197
184
|
* ONLY checks of this shape belong here. Four other checks in this gate are
|
|
198
|
-
* deliberately NOT rows: repo-health returns {ok, reason} and formats inline;
|
|
199
|
-
*
|
|
200
|
-
*
|
|
201
|
-
* UN-COUNTS a dynamic observation; and the boot check is
|
|
202
|
-
* port-binding
|
|
203
|
-
* more escape hatches than content.
|
|
185
|
+
* deliberately NOT rows: repo-health returns {ok, reason} and formats inline; the
|
|
186
|
+
* launch-contract diff branches on manifest kind and can emit a NOTE instead of a
|
|
187
|
+
* failure; the launch config-gap produces neither a failure nor a note but
|
|
188
|
+
* UN-COUNTS a dynamic observation (`tally.unobserve()`); and the boot check is
|
|
189
|
+
* async, stateful and port-binding. Squeezing any of those in would mean a row
|
|
190
|
+
* type with more escape hatches than content.
|
|
204
191
|
*/
|
|
205
192
|
declare const CLOSURE_SCANS: ClosureScan[];
|
|
206
193
|
/**
|
|
@@ -217,36 +204,16 @@ declare const CLOSURE_SCANS: ClosureScan[];
|
|
|
217
204
|
declare function runClosureScans(stage: ClosureScanStage, input: ClosureScanInput, fail: (text: string, rank: number) => void, scans?: readonly ClosureScan[]): void;
|
|
218
205
|
export { CLOSURE_SCANS, runClosureScans };
|
|
219
206
|
export type { ClosureScan, ClosureScanInput, ClosureScanStage };
|
|
220
|
-
/**
|
|
221
|
-
* Run the final gate: static analysis first, then the lockfile consistency
|
|
222
|
-
* checks, then the discovered integration commands, then one boot exercise of
|
|
223
|
-
* the start command — whole-repo, verbatim, unaided. Deterministic (no model).
|
|
224
|
-
*
|
|
225
|
-
* EVERY section runs and failures AGGREGATE (mx5 run 13): the gate used to
|
|
226
|
-
* early-return on the first failing section, and the boot + render probe — built
|
|
227
|
-
* after run 11 exactly for "app serves blank/nothing" — was ordered last, so any
|
|
228
|
-
* earlier failure shadowed the most load-bearing signal. Run 13's user accepted
|
|
229
|
-
* the FAIL having seen only 1 failing CT test while the app 404'd on every
|
|
230
|
-
* non-API GET; boot/render never executed in any attempt. Now the outcome
|
|
231
|
-
* carries the full ranked failure list (boot/render first — "the app does not
|
|
232
|
-
* serve/render" outranks any single test), the ACCEPT decision is made on all of
|
|
233
|
-
* it, and autofix converges only when the whole list is empty. Per-section
|
|
234
|
-
* env-gap/INFRA_GAP skip semantics and orphan-port recovery are unchanged.
|
|
235
|
-
*/
|
|
236
207
|
/**
|
|
237
208
|
* Everything the run-end gate needs beyond the tree it is judging.
|
|
238
209
|
*
|
|
239
|
-
* An options object rather than a positional tail
|
|
240
|
-
* `
|
|
241
|
-
* `bootGraceMs`/`timeoutMs` are adjacent numbers that swap without a type error.
|
|
210
|
+
* An options object rather than a positional tail, because `bootGraceMs` and
|
|
211
|
+
* `timeoutMs` are adjacent numbers that would swap without a type error.
|
|
242
212
|
*
|
|
243
|
-
* `run`, `envClosure` and `trackedFiles` are SEAMS
|
|
244
|
-
*
|
|
245
|
-
*
|
|
246
|
-
*
|
|
247
|
-
* the config-gap branch below is unreachable in test — not by oversight, but
|
|
248
|
-
* because reaching it needs a git-tracked env template, so every launch-contract
|
|
249
|
-
* test (bare `makeDir`, no `git init`) misses it by construction.
|
|
213
|
+
* `run`, `envClosure` and `trackedFiles` are test SEAMS. Without `run`, the
|
|
214
|
+
* config-gap branch below is unreachable from a test: reaching it needs a
|
|
215
|
+
* git-tracked env template, and the launch-contract tests build a bare directory
|
|
216
|
+
* with no `git init`, so they miss it by construction.
|
|
250
217
|
*/
|
|
251
218
|
export interface FinalGateOptions {
|
|
252
219
|
timeoutMs?: number;
|
|
@@ -262,9 +229,9 @@ export interface FinalGateOptions {
|
|
|
262
229
|
trackedFiles?: (cwd: string) => string[] | null;
|
|
263
230
|
/**
|
|
264
231
|
* The run's cancel. Reaches every command the gate spawns — repo-health, the
|
|
265
|
-
* lockfile
|
|
266
|
-
*
|
|
267
|
-
*
|
|
232
|
+
* lockfile, integration and launch sections, and the ACCEPT-debt re-runs. It
|
|
233
|
+
* only works because `CommandRunner` is async: a synchronous spawn never gives
|
|
234
|
+
* the event loop a turn in which to notice an abort.
|
|
268
235
|
*/
|
|
269
236
|
signal?: AbortSignal;
|
|
270
237
|
}
|