@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
|
@@ -1,31 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Deterministic synthesized-wiring scanner for a composed spec
|
|
2
|
+
* Deterministic synthesized-wiring scanner for a composed spec, wired as the
|
|
3
|
+
* `synthesized-wiring` critique probe.
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* the seam ships broken. See [[contract-registry-f3]] (#4, the verify-side + registry
|
|
11
|
-
* lever) — this is its GENERATION-side complement.
|
|
12
|
-
*
|
|
13
|
-
* A/B-measured on the live 27B (F3 critique trap): the CROSS-SLICE CONTRACTS registry
|
|
14
|
-
* is NECESSARY but the prompt+registry alone is a WEAK catcher (A/B arms 0/8, +registry
|
|
15
|
-
* only 1/8) — the model's attention goes to the obvious VERIFY weakness and it rarely
|
|
16
|
-
* does the path-composition reasoning even with the facts in front of it. The reliable
|
|
17
|
-
* lever is the SAME probe+rule pattern as [[skip-escape-scanner-f2]] / [[verify-
|
|
18
|
-
* substitution-ab]]: a deterministic finding that NAMES the exact synthesized mappings
|
|
19
|
-
* and juxtaposes the verbatim pinned facts, forcing focused reconciliation.
|
|
5
|
+
* The failure it catches: a spec states a "uniform" wiring table — one module to one
|
|
6
|
+
* mount prefix, `/api/<x>` → `<x>Routes` — while the design pins ENDPOINTS, not
|
|
7
|
+
* mounts. When a module's pinned endpoints do NOT all sit under a single prefix
|
|
8
|
+
* (`POST /api/listings/:id/photos` AND `GET /api/photos/:id`), mounting it at
|
|
9
|
+
* `/api/photos` double-prefixes the upload. Consumers follow the pinned paths,
|
|
10
|
+
* assembly follows the invented table, and the seam ships broken.
|
|
20
11
|
*
|
|
21
12
|
* This scanner does NOT decide which mapping is wrong — that needs routing-composition
|
|
22
|
-
* knowledge
|
|
23
|
-
* verbatim substring of the design
|
|
24
|
-
* a pinned cross-slice boundary
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
13
|
+
* knowledge, which would be a stack assumption. It surfaces every mapping that (a) is
|
|
14
|
+
* not a verbatim substring of the design or registry, so it is INFERRED rather than
|
|
15
|
+
* cited, AND (b) touches a pinned cross-slice boundary, meaning an operand appears in
|
|
16
|
+
* the registry. Conforming mappings are surfaced too, framed as "reconcile each; keep
|
|
17
|
+
* the conforming ones" — the model decides, informed. Pure text and substring analysis;
|
|
18
|
+
* no stack, framework, or routing assumptions. An empty registry (a single `/task`, or
|
|
19
|
+
* a design pinning no shared boundary) is a no-op.
|
|
29
20
|
*/
|
|
30
21
|
import * as fs from 'node:fs';
|
|
31
22
|
import * as path from 'node:path';
|
|
@@ -37,8 +28,9 @@ const ARROW = '(?:→|->|=>|⇒|↦)';
|
|
|
37
28
|
const MAPPING_LINE_RE = new RegExp(`^[ \\t]*[-*]?[ \\t]*(.+?)[ \\t]*${ARROW}[ \\t]*(.+?)[ \\t]*$`);
|
|
38
29
|
/** An operand shorter than this is too generic to anchor a boundary match. */
|
|
39
30
|
const MIN_OPERAND_LENGTH = 4;
|
|
40
|
-
/** Collapse whitespace + lowercase
|
|
41
|
-
*
|
|
31
|
+
/** Collapse whitespace + lowercase, and drop markdown backticks so a spec that
|
|
32
|
+
* quotes `/api/photos` still matches a design that writes it bare. That backtick
|
|
33
|
+
* strip is the one thing this does beyond contracts.ts's `normalise`. */
|
|
42
34
|
function normalise(s) {
|
|
43
35
|
return s.replace(/`/g, '').replace(/\s+/g, ' ').trim().toLowerCase();
|
|
44
36
|
}
|
|
@@ -68,9 +60,9 @@ export function findSynthesizedWiring(spec, grounding, registry) {
|
|
|
68
60
|
// Cited, not synthesized: the whole mapping appears verbatim in the source.
|
|
69
61
|
if (groundHay.includes(key))
|
|
70
62
|
continue;
|
|
71
|
-
// Only a mapping that touches a PINNED shared boundary is
|
|
72
|
-
//
|
|
73
|
-
//
|
|
63
|
+
// Only a mapping that touches a PINNED shared boundary is a suspect. That is
|
|
64
|
+
// the discriminator keeping internal-flow prose ("input → output") out: an
|
|
65
|
+
// operand, long enough to be specific, must appear in the registry.
|
|
74
66
|
const touchesBoundary = [from, to].some(op => {
|
|
75
67
|
const n = normalise(op);
|
|
76
68
|
return n.length >= MIN_OPERAND_LENGTH && regHay.includes(n);
|
|
@@ -111,22 +103,25 @@ export function wiringProbeText(findings, registry) {
|
|
|
111
103
|
].join('\n');
|
|
112
104
|
}
|
|
113
105
|
/**
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
106
|
+
* The same text under the name the critique-rewrite defect path uses. One rendering
|
|
107
|
+
* serves both readers, so the probe the model sees and the defect the rewrite is
|
|
108
|
+
* handed can never drift apart.
|
|
117
109
|
*/
|
|
118
110
|
export function wiringDefectText(findings, registry) {
|
|
119
111
|
return wiringProbeText(findings, registry);
|
|
120
112
|
}
|
|
121
113
|
// An @-file mention in a spec ("@DESIGN/foo.md"), minus trailing prose punctuation.
|
|
122
|
-
//
|
|
114
|
+
// Byte-identical to auto-orchestrator.ts's pair, so grounding resolves the same
|
|
115
|
+
// mentions the planner already resolved. `@` must follow start-of-string or
|
|
116
|
+
// whitespace, so "mail@DESIGN.md" is not a mention.
|
|
123
117
|
const MENTION_RE = /(?:^|\s)@([^\s]+)/g;
|
|
124
118
|
const MENTION_TRAILING_PUNCT = /[.,;:!?)\]}>"']+$/;
|
|
125
119
|
/**
|
|
126
120
|
* Concatenate the design/spec docs the given texts @-reference (best-effort, readable
|
|
127
121
|
* files only) as extra grounding for findSynthesizedWiring — so a mapping the design
|
|
128
|
-
* states verbatim is treated as CITED, not synthesized.
|
|
129
|
-
* skipped; returns '' when nothing
|
|
122
|
+
* states verbatim is treated as CITED, not synthesized. Each path is read once across
|
|
123
|
+
* all texts; unreadable or absent mentions are skipped; returns '' when nothing
|
|
124
|
+
* resolves.
|
|
130
125
|
*/
|
|
131
126
|
export function readReferencedDocs(cwd, ...texts) {
|
|
132
127
|
const seen = new Set();
|
|
@@ -9,37 +9,33 @@ export interface TreeChangeSummary {
|
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
11
|
* Parse `git status --porcelain` output into the change summary. A rename entry
|
|
12
|
-
* contributes its source to `deleted` and its target to `added
|
|
13
|
-
*
|
|
14
|
-
* shapes
|
|
15
|
-
*
|
|
12
|
+
* contributes its source to `deleted` and its target to `added`. An unstaged child
|
|
13
|
+
* edit shows the same reality as separate ` D old` + `A new` (or `?? new`) lines,
|
|
14
|
+
* and both shapes produce the identical summary — which is what lets the
|
|
15
|
+
* relocation allowance below read either one. Deterministic and pure, so it is
|
|
16
|
+
* unit-tested without a repo.
|
|
16
17
|
*/
|
|
17
18
|
export declare function parseTreeChanges(porcelain: string): TreeChangeSummary;
|
|
18
19
|
/**
|
|
19
20
|
* Parse `git diff --name-status` output (tab-separated: `M\tpath`, `A\tpath`,
|
|
20
|
-
* `D\tpath`, `R100\told\tnew`, `
|
|
21
|
-
* where the working tree is already clean and the last COMMIT's diff is the
|
|
22
|
-
* of the task's changes
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
21
|
+
* `D\tpath`, `R100\told\tnew`, `C100\told\tnew`) into the same change summary.
|
|
22
|
+
* Used where the working tree is already clean and the last COMMIT's diff is the
|
|
23
|
+
* record of the task's changes. A rename entry contributes its source to `deleted`
|
|
24
|
+
* and its target to `added`, matching parseTreeChanges so the relocation allowance
|
|
25
|
+
* below reads both shapes identically; a copy's source still exists, so only its
|
|
26
|
+
* target counts (as added).
|
|
26
27
|
*/
|
|
27
28
|
export declare function parseNameStatusChanges(nameStatus: string): TreeChangeSummary;
|
|
28
29
|
/**
|
|
29
|
-
* The deletions a fix pass may NOT make: every deleted tracked file whose
|
|
30
|
-
* not reappear among the added files
|
|
31
|
-
* name, somewhere in the tree
|
|
32
|
-
*
|
|
33
|
-
* destroyed a sibling task's verified deliverable.
|
|
30
|
+
* The deletions a fix pass may NOT make: every deleted tracked file whose BASENAME
|
|
31
|
+
* does not reappear among the added files. A relocation keeps the file, under the
|
|
32
|
+
* same name, somewhere in the tree; a RENAME does not, and is reported. Anything
|
|
33
|
+
* returned here makes final-gate-fix discard the whole attempt.
|
|
34
34
|
*
|
|
35
|
-
* REGENERABLE TEST-RUNNER OUTPUT IS EXEMPT
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* `src/client/api.test.tsx` repair with it, which attempt 3 then re-did and kept.
|
|
40
|
-
* 6m14s of an 8m16s gate. And the pipeline committed those same three deletions at
|
|
41
|
-
* the end anyway, in the stranded-fix commit (mx5 5d4147e), so the guard did not
|
|
42
|
-
* even preserve what it rejected two attempts to protect.
|
|
35
|
+
* REGENERABLE TEST-RUNNER OUTPUT IS EXEMPT. Without an exemption the guard is pure
|
|
36
|
+
* git, so a failure screenshot a task's own `git add -A` swept into a commit reads
|
|
37
|
+
* as a deliverable and its removal discards a whole attempt — including the real
|
|
38
|
+
* repair that attempt also made.
|
|
43
39
|
*
|
|
44
40
|
* The exempt list is a strict SUBSET of the verdict-level artifact list and lives
|
|
45
41
|
* in `regenerable-artifacts.ts`. `dist/`, `build/`, `.next/`, `.turbo/` and
|
|
@@ -52,23 +48,27 @@ export declare function findForbiddenDeletions(changes: TreeChangeSummary): stri
|
|
|
52
48
|
export type IgnoredClass = 'build-output' | 'dep-dir' | 'task-dir' | 'vcs-meta' | 'actionable';
|
|
53
49
|
/**
|
|
54
50
|
* Classify one repo-relative ignored path. `outdirs` are build output directories
|
|
55
|
-
* parsed from the project's own build commands
|
|
56
|
-
*
|
|
51
|
+
* parsed from the project's own build commands (gate-deps' `parseBuildOutdirs`),
|
|
52
|
+
* matched by whole leading path SEGMENTS — outdir `artifacts` matches
|
|
53
|
+
* `artifacts/a.js` and not `artifactsx/a.js`. Only `actionable` may produce a
|
|
54
|
+
* finding; everything else is reproducible from the repository by running the
|
|
57
55
|
* project's own tooling, which is exactly what makes it not a gate concern.
|
|
58
56
|
*/
|
|
59
57
|
export declare function classifyIgnoredPath(rel: string, outdirs: string[]): IgnoredClass;
|
|
60
58
|
/** The ignored paths a gate may rule on: everything not exempt by mechanism. */
|
|
61
59
|
export declare function findActionableIgnoredWrites(paths: string[], outdirs: string[]): string[];
|
|
62
60
|
/**
|
|
63
|
-
* A fingerprint per ignored path (
|
|
64
|
-
* taken before and after a write-capable child so a write is
|
|
65
|
-
* child rather than to the tree's pre-existing state. Ignored
|
|
66
|
-
* so git cannot tell "changed" from "was always there" — only
|
|
61
|
+
* A fingerprint per ignored path (`<mtimeMs>:<size>` for a file, `dir:<mtimeMs>`
|
|
62
|
+
* for a directory), taken before and after a write-capable child so a write is
|
|
63
|
+
* ATTRIBUTED to that child rather than to the tree's pre-existing state. Ignored
|
|
64
|
+
* files are untracked, so git cannot tell "changed" from "was always there" — only
|
|
65
|
+
* the snapshot can.
|
|
67
66
|
*/
|
|
68
67
|
export type IgnoredSnapshot = Record<string, string>;
|
|
69
68
|
/**
|
|
70
|
-
* Paths whose fingerprint appeared or changed across the child's window
|
|
71
|
-
*
|
|
69
|
+
* Paths whose fingerprint appeared or changed across the child's window, sorted.
|
|
70
|
+
* A path that VANISHED is not reported — the channel exists to catch writes.
|
|
71
|
+
* Pure, so the attribution rule is unit-testable without a repo.
|
|
72
72
|
*/
|
|
73
73
|
export declare function diffIgnoredSnapshots(before: IgnoredSnapshot, after: IgnoredSnapshot): string[];
|
|
74
74
|
/**
|
|
@@ -80,19 +80,19 @@ export declare function ignoredWriteTrailLine(paths: string[]): string;
|
|
|
80
80
|
/**
|
|
81
81
|
* The durable debt reason for the same event. Path names only, same rule.
|
|
82
82
|
*
|
|
83
|
-
* The wording tracks what was actually PROVEN. `dependent === true`
|
|
84
|
-
* answer that the gate does not pass without these files
|
|
85
|
-
*
|
|
86
|
-
* is still worth carrying because the file is on disk and can green a
|
|
87
|
-
* A debt that overstates its evidence is the same defect this whole
|
|
88
|
-
* to fix, one level up.
|
|
83
|
+
* The wording tracks what was actually PROVEN. Only `dependent === true` — the
|
|
84
|
+
* probe's answer that the gate does not pass without these files — earns the strong
|
|
85
|
+
* head. Anything else, `false` or an unanswered `undefined`, gets the weaker one:
|
|
86
|
+
* the write is still worth carrying because the file is on disk and can green a
|
|
87
|
+
* LATER attempt. A debt that overstates its evidence is the same defect this whole
|
|
88
|
+
* channel exists to fix, one level up.
|
|
89
89
|
*/
|
|
90
90
|
export declare function ignoredWriteDebtReason(paths: string[], dependent?: boolean): string;
|
|
91
91
|
/** The UNOBSERVED note that replaces such a PASS. Path names only, same rule. */
|
|
92
92
|
export declare function ignoredWriteUnobservedNote(paths: string[]): string;
|
|
93
93
|
/**
|
|
94
94
|
* One-line summary for the gate debug log — the diff capture every write-capable
|
|
95
|
-
* child gets so "what did this pass change" is answerable from artifacts
|
|
96
|
-
*
|
|
95
|
+
* child gets, so "what did this pass change" is answerable from the artifacts
|
|
96
|
+
* rather than only from the child's bash stream.
|
|
97
97
|
*/
|
|
98
98
|
export declare function formatTreeChanges(changes: TreeChangeSummary): string;
|
package/dist/task/write-guard.js
CHANGED
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* write-guard — deterministic tree-change accounting for WRITE-CAPABLE gate
|
|
3
|
-
* children (
|
|
3
|
+
* children (`FINAL_FIX_TOOLS` and `LINT_FIX_TOOLS` are both `read,edit,bash`).
|
|
4
4
|
*
|
|
5
|
-
* The failure class:
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* scans, free `rm`. Run 11 it deleted `src/client/pages/admin.tsx` (TASK_0008's
|
|
9
|
-
* verified deliverable) to satisfy a recorded debt claim, and the deletion was
|
|
10
|
-
* invisible: nothing even logged what the pass changed.
|
|
5
|
+
* The failure class it exists for: a fix child with `bash` can `rm` a tracked
|
|
6
|
+
* file to satisfy a recorded claim, and nothing else in the gate would log what
|
|
7
|
+
* that pass changed.
|
|
11
8
|
*
|
|
12
9
|
* This module is the pure half of the guard stack: parse `git status --porcelain`
|
|
13
|
-
* into a change summary
|
|
14
|
-
* gets at the gate-deps seam
|
|
15
|
-
* exists to repair the assembled repository, not to shrink
|
|
16
|
-
* is a committed task's deliverable, so deleting one is
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* execution, no stack assumptions.
|
|
10
|
+
* (or `git diff --name-status`) into a change summary — the diff-capture log line
|
|
11
|
+
* every write-capable child gets at the gate-deps seam — and classify tracked-file
|
|
12
|
+
* DELETIONS. A fix pass exists to repair the assembled repository, not to shrink
|
|
13
|
+
* it: every tracked file is a committed task's deliverable, so deleting one is
|
|
14
|
+
* rejected outright, with two allowances. A RELOCATION, where the same file NAME
|
|
15
|
+
* reappears among the added files (moving a test out of a runner's glob is a
|
|
16
|
+
* legitimate fix shape), and the regenerable test output `regenerable-artifacts.ts`
|
|
17
|
+
* exempts. Pure text and path analysis; no git execution, no stack assumptions.
|
|
21
18
|
*/
|
|
22
19
|
import { isDeletionExemptArtifact } from './regenerable-artifacts.js';
|
|
23
|
-
/** Porcelain v1 line: `XY <path
|
|
20
|
+
/** Porcelain v1 line: `XY <path>`, or `XY <orig> -> <new>` for a staged rename or
|
|
21
|
+
* copy. A path git had to quote arrives wrapped in `"` and is unwrapped here. */
|
|
24
22
|
function splitEntry(raw) {
|
|
25
23
|
if (raw.length < 4)
|
|
26
24
|
return null;
|
|
@@ -41,10 +39,11 @@ function splitEntry(raw) {
|
|
|
41
39
|
}
|
|
42
40
|
/**
|
|
43
41
|
* Parse `git status --porcelain` output into the change summary. A rename entry
|
|
44
|
-
* contributes its source to `deleted` and its target to `added
|
|
45
|
-
*
|
|
46
|
-
* shapes
|
|
47
|
-
*
|
|
42
|
+
* contributes its source to `deleted` and its target to `added`. An unstaged child
|
|
43
|
+
* edit shows the same reality as separate ` D old` + `A new` (or `?? new`) lines,
|
|
44
|
+
* and both shapes produce the identical summary — which is what lets the
|
|
45
|
+
* relocation allowance below read either one. Deterministic and pure, so it is
|
|
46
|
+
* unit-tested without a repo.
|
|
48
47
|
*/
|
|
49
48
|
export function parseTreeChanges(porcelain) {
|
|
50
49
|
const modified = new Set();
|
|
@@ -78,12 +77,12 @@ export function parseTreeChanges(porcelain) {
|
|
|
78
77
|
}
|
|
79
78
|
/**
|
|
80
79
|
* Parse `git diff --name-status` output (tab-separated: `M\tpath`, `A\tpath`,
|
|
81
|
-
* `D\tpath`, `R100\told\tnew`, `
|
|
82
|
-
* where the working tree is already clean and the last COMMIT's diff is the
|
|
83
|
-
* of the task's changes
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
80
|
+
* `D\tpath`, `R100\told\tnew`, `C100\told\tnew`) into the same change summary.
|
|
81
|
+
* Used where the working tree is already clean and the last COMMIT's diff is the
|
|
82
|
+
* record of the task's changes. A rename entry contributes its source to `deleted`
|
|
83
|
+
* and its target to `added`, matching parseTreeChanges so the relocation allowance
|
|
84
|
+
* below reads both shapes identically; a copy's source still exists, so only its
|
|
85
|
+
* target counts (as added).
|
|
87
86
|
*/
|
|
88
87
|
export function parseNameStatusChanges(nameStatus) {
|
|
89
88
|
const modified = new Set();
|
|
@@ -121,20 +120,15 @@ const basename = (p) => {
|
|
|
121
120
|
return i === -1 ? p : p.slice(i + 1);
|
|
122
121
|
};
|
|
123
122
|
/**
|
|
124
|
-
* The deletions a fix pass may NOT make: every deleted tracked file whose
|
|
125
|
-
* not reappear among the added files
|
|
126
|
-
* name, somewhere in the tree
|
|
127
|
-
*
|
|
128
|
-
* destroyed a sibling task's verified deliverable.
|
|
123
|
+
* The deletions a fix pass may NOT make: every deleted tracked file whose BASENAME
|
|
124
|
+
* does not reappear among the added files. A relocation keeps the file, under the
|
|
125
|
+
* same name, somewhere in the tree; a RENAME does not, and is reported. Anything
|
|
126
|
+
* returned here makes final-gate-fix discard the whole attempt.
|
|
129
127
|
*
|
|
130
|
-
* REGENERABLE TEST-RUNNER OUTPUT IS EXEMPT
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
* `src/client/api.test.tsx` repair with it, which attempt 3 then re-did and kept.
|
|
135
|
-
* 6m14s of an 8m16s gate. And the pipeline committed those same three deletions at
|
|
136
|
-
* the end anyway, in the stranded-fix commit (mx5 5d4147e), so the guard did not
|
|
137
|
-
* even preserve what it rejected two attempts to protect.
|
|
128
|
+
* REGENERABLE TEST-RUNNER OUTPUT IS EXEMPT. Without an exemption the guard is pure
|
|
129
|
+
* git, so a failure screenshot a task's own `git add -A` swept into a commit reads
|
|
130
|
+
* as a deliverable and its removal discards a whole attempt — including the real
|
|
131
|
+
* repair that attempt also made.
|
|
138
132
|
*
|
|
139
133
|
* The exempt list is a strict SUBSET of the verdict-level artifact list and lives
|
|
140
134
|
* in `regenerable-artifacts.ts`. `dist/`, `build/`, `.next/`, `.turbo/` and
|
|
@@ -176,8 +170,10 @@ const BUILD_DIR_NAMES = new Set([
|
|
|
176
170
|
]);
|
|
177
171
|
/**
|
|
178
172
|
* Classify one repo-relative ignored path. `outdirs` are build output directories
|
|
179
|
-
* parsed from the project's own build commands
|
|
180
|
-
*
|
|
173
|
+
* parsed from the project's own build commands (gate-deps' `parseBuildOutdirs`),
|
|
174
|
+
* matched by whole leading path SEGMENTS — outdir `artifacts` matches
|
|
175
|
+
* `artifacts/a.js` and not `artifactsx/a.js`. Only `actionable` may produce a
|
|
176
|
+
* finding; everything else is reproducible from the repository by running the
|
|
181
177
|
* project's own tooling, which is exactly what makes it not a gate concern.
|
|
182
178
|
*/
|
|
183
179
|
export function classifyIgnoredPath(rel, outdirs) {
|
|
@@ -210,8 +206,9 @@ export function findActionableIgnoredWrites(paths, outdirs) {
|
|
|
210
206
|
return paths.filter(p => classifyIgnoredPath(p, outdirs) === 'actionable');
|
|
211
207
|
}
|
|
212
208
|
/**
|
|
213
|
-
* Paths whose fingerprint appeared or changed across the child's window
|
|
214
|
-
*
|
|
209
|
+
* Paths whose fingerprint appeared or changed across the child's window, sorted.
|
|
210
|
+
* A path that VANISHED is not reported — the channel exists to catch writes.
|
|
211
|
+
* Pure, so the attribution rule is unit-testable without a repo.
|
|
215
212
|
*/
|
|
216
213
|
export function diffIgnoredSnapshots(before, after) {
|
|
217
214
|
const out = [];
|
|
@@ -233,12 +230,12 @@ export function ignoredWriteTrailLine(paths) {
|
|
|
233
230
|
/**
|
|
234
231
|
* The durable debt reason for the same event. Path names only, same rule.
|
|
235
232
|
*
|
|
236
|
-
* The wording tracks what was actually PROVEN. `dependent === true`
|
|
237
|
-
* answer that the gate does not pass without these files
|
|
238
|
-
*
|
|
239
|
-
* is still worth carrying because the file is on disk and can green a
|
|
240
|
-
* A debt that overstates its evidence is the same defect this whole
|
|
241
|
-
* to fix, one level up.
|
|
233
|
+
* The wording tracks what was actually PROVEN. Only `dependent === true` — the
|
|
234
|
+
* probe's answer that the gate does not pass without these files — earns the strong
|
|
235
|
+
* head. Anything else, `false` or an unanswered `undefined`, gets the weaker one:
|
|
236
|
+
* the write is still worth carrying because the file is on disk and can green a
|
|
237
|
+
* LATER attempt. A debt that overstates its evidence is the same defect this whole
|
|
238
|
+
* channel exists to fix, one level up.
|
|
242
239
|
*/
|
|
243
240
|
export function ignoredWriteDebtReason(paths, dependent) {
|
|
244
241
|
const head = dependent === true ?
|
|
@@ -258,8 +255,8 @@ export function ignoredWriteUnobservedNote(paths) {
|
|
|
258
255
|
}
|
|
259
256
|
/**
|
|
260
257
|
* One-line summary for the gate debug log — the diff capture every write-capable
|
|
261
|
-
* child gets so "what did this pass change" is answerable from artifacts
|
|
262
|
-
*
|
|
258
|
+
* child gets, so "what did this pass change" is answerable from the artifacts
|
|
259
|
+
* rather than only from the child's bash stream.
|
|
263
260
|
*/
|
|
264
261
|
export function formatTreeChanges(changes) {
|
|
265
262
|
if (changes.modified.length === 0
|
package/dist/task/yolo.d.ts
CHANGED
|
@@ -2,10 +2,11 @@ import type { AutoAnswer } from './parsers.js';
|
|
|
2
2
|
import type { ResolutionChoice } from './verify-resolution.js';
|
|
3
3
|
import type { FinalGateChoice } from './final-gate-fix.js';
|
|
4
4
|
/**
|
|
5
|
-
* Visible provenance marker on
|
|
6
|
-
* task
|
|
7
|
-
* artifacts must never mistake an auto-pick for a human decision
|
|
8
|
-
*
|
|
5
|
+
* Visible provenance marker on the artifacts an auto-pick writes: gate trail lines
|
|
6
|
+
* and the task file's Q&A record (qa-transcript.ts `QA_PROVENANCE`). A later audit
|
|
7
|
+
* reading only the artifacts must never mistake an auto-pick for a human decision.
|
|
8
|
+
* The debt ledger does not use this stamp — it carries the `'yolo-accepted'` ORIGIN
|
|
9
|
+
* instead, which is stronger: a typed field rather than text.
|
|
9
10
|
*/
|
|
10
11
|
export declare const YOLO_STAMP = "(YOLO)";
|
|
11
12
|
/** Is unattended auto-pick on for this run? The ONLY config read in this module. */
|
|
@@ -25,16 +26,17 @@ export type YoloPick = {
|
|
|
25
26
|
note: string;
|
|
26
27
|
} | null;
|
|
27
28
|
/**
|
|
28
|
-
* The clarify/grill policy: take the RECOMMENDED option —
|
|
29
|
-
*
|
|
30
|
-
*
|
|
29
|
+
* The clarify/grill policy: take the RECOMMENDED option — `suggested`, falling
|
|
30
|
+
* back to the B-side `alt` when a fork offers only that. Recommended is positional
|
|
31
|
+
* for a human too: bridge.ts marks card index 0, and question-box.ts tints the
|
|
32
|
+
* marked card green.
|
|
31
33
|
*
|
|
32
34
|
* `unsafe` is the step-aside channel: a caller that KNOWS the recommendation must
|
|
33
|
-
* not be auto-accepted passes why, and the question is skipped instead.
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* invention the demotion
|
|
37
|
-
*
|
|
35
|
+
* not be auto-accepted passes why, and the question is skipped instead. The only
|
|
36
|
+
* thing that supplies it is `yoloPickAutoAnswer` below, on the anti-synthesis
|
|
37
|
+
* demotion — an answer proven to name an unverified API identifier. Auto-accepting
|
|
38
|
+
* that would re-promote exactly the invention the demotion exists to stop, so a
|
|
39
|
+
* machine may never take it; a human still can.
|
|
38
40
|
*/
|
|
39
41
|
export declare function yoloPickAnswer(enabled: boolean, opts: {
|
|
40
42
|
suggested?: string;
|
|
@@ -42,33 +44,35 @@ export declare function yoloPickAnswer(enabled: boolean, opts: {
|
|
|
42
44
|
unsafe?: string;
|
|
43
45
|
}): YoloPick;
|
|
44
46
|
/**
|
|
45
|
-
* The same policy expressed over an {@link AutoAnswer}, for the grill site.
|
|
46
|
-
*
|
|
47
|
-
* unknown
|
|
48
|
-
* best-effort recommendation, which is precisely what a human would be
|
|
49
|
-
* the green card. The variants are told apart by
|
|
50
|
-
*
|
|
47
|
+
* The same policy expressed over an {@link AutoAnswer}, for the grill site. Of the
|
|
48
|
+
* four `reason` tags an unknown can carry — `api-synthesis`, `integration`,
|
|
49
|
+
* `threw`, `model-unknown` — only ANTI-SYNTHESIS is unsafe. The other three carry
|
|
50
|
+
* an ordinary best-effort recommendation, which is precisely what a human would be
|
|
51
|
+
* shown as the green card. The variants are told apart by that tag, never by
|
|
52
|
+
* pattern-matching the answer text.
|
|
51
53
|
*/
|
|
52
54
|
export declare function yoloPickAutoAnswer(enabled: boolean, auto: AutoAnswer): YoloPick;
|
|
53
55
|
/**
|
|
54
56
|
* The verify-FAIL picker policy: ACCEPT (and write a debt), never AUTOFIX.
|
|
55
57
|
*
|
|
56
|
-
* Not a preference — a bound.
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
58
|
+
* Not a preference — a bound. task-gates.ts consults this only after its own
|
|
59
|
+
* unattended paths are exhausted: `autoFixNow` has run AUTOFIX up to
|
|
60
|
+
* MAX_AUTO_AUTOFIX times while the research recommended it, and the YOLO rescue has
|
|
61
|
+
* spent its one attempt on an ACCEPT recommendation with an untouched budget.
|
|
62
|
+
* Answering AUTOFIX here would restart that budget from the very site that proves
|
|
63
|
+
* it ran out. So YOLO takes the terminal option and records the defect under the
|
|
64
|
+
* `'yolo-accepted'` debt origin, which a human decision never produces.
|
|
62
65
|
*/
|
|
63
66
|
export declare function yoloVerifyResolution(enabled: boolean): ResolutionChoice | null;
|
|
64
67
|
/**
|
|
65
|
-
* The final-integration-gate policy: keep autofixing WHILE the picker still
|
|
66
|
-
*
|
|
67
|
-
* then leave the
|
|
68
|
+
* The final-integration-gate policy: keep autofixing WHILE the picker still offers
|
|
69
|
+
* that card — run-final-gate.ts withdraws it from `options` after
|
|
70
|
+
* MAX_FINAL_GATE_AUTOFIX attempts, and passes that as `canAutofix` — then leave the
|
|
71
|
+
* run FAILED.
|
|
68
72
|
*
|
|
69
73
|
* 'leave', not 'accept': an unattended run that cannot fix the whole-repo gate has
|
|
70
|
-
* not produced a working project
|
|
71
|
-
* resume can re-enter
|
|
72
|
-
*
|
|
74
|
+
* not produced a working project. The honest terminal state is a failed run a
|
|
75
|
+
* resume can re-enter. Accepting instead would make the failure read as a success
|
|
76
|
+
* in every artifact that survives the run.
|
|
73
77
|
*/
|
|
74
78
|
export declare function yoloFinalGateChoice(enabled: boolean, canAutofix: boolean): FinalGateChoice | null;
|