@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,69 +1,49 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* owned-freeze-reassign — the DETERMINISTIC resolution for the owned/freeze
|
|
3
|
-
* unsatisfiable pair
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* -ab.ts, 20 trials/arm): forcing the pair through the critique seam drives
|
|
10
|
-
* pair-present 8/20 → 0/20, but 11 of the 20 resolutions DELETE the
|
|
11
|
-
* AUTHORITATIVE clause instead of moving it, and the delivered VERIFY still
|
|
12
|
-
* greps `package.json` in both arms (6/20). Removal of the pair is not
|
|
13
|
-
* satisfaction of the requirement.
|
|
3
|
+
* unsatisfiable pair: an AUTHORITATIVE owned requirement whose only implementing
|
|
4
|
+
* file the same spec FREEZES. No model, no prose edit. The requirement text is
|
|
5
|
+
* never altered — only which task's ledger entry carries it, so "resolution by
|
|
6
|
+
* deletion" is structurally impossible. That is the whole point: a model asked to
|
|
7
|
+
* remove a contradiction can satisfy the request by deleting the requirement, and
|
|
8
|
+
* removal of the pair is not satisfaction of the requirement.
|
|
14
9
|
*
|
|
15
10
|
* ── THE MECHANISM: DETACH, then CLAIM ───────────────────────────────────────
|
|
16
11
|
*
|
|
17
12
|
* Two steps, each run where the information it needs actually exists:
|
|
18
13
|
*
|
|
19
|
-
* DETACH at the conflicting task's own critique (right after
|
|
20
|
-
*
|
|
21
|
-
* entry is marked `pending: [frozen paths]` in the
|
|
22
|
-
* stamped bullet is dropped from this spec. It is now
|
|
23
|
-
* nobody; `ownedForTitle` skips it; the quote is still there,
|
|
24
|
-
* byte.
|
|
25
|
-
* CLAIM at every LATER task's compose, before the belt block is built: if
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* ── WHY NOT "PICK THE TARGET AT DETACH TIME", WHICH IS WHAT nexttask2.md ASKS ─
|
|
31
|
-
*
|
|
32
|
-
* nexttask2.md's branch 1 is "if exactly one OTHER task in the plan names path
|
|
33
|
-
* `P` — its title or its spec's file list contains `P` — move the requirement
|
|
34
|
-
* there". Measured over all 60 recorded composed specs on disk
|
|
35
|
-
* (scripts/owned-freeze-reassign-baserate.ts), on the one conflict the corpus
|
|
36
|
-
* contains (mx5 run 19 TASK_0015, path `src/server/index.ts`):
|
|
14
|
+
* DETACH at the conflicting task's own critique (`critiquePhase`, right after
|
|
15
|
+
* `appendOwnedConstraints` stamps the bullet, which is the first moment
|
|
16
|
+
* the pair exists): the entry is marked `pending: [frozen paths]` in the
|
|
17
|
+
* ledger and its stamped bullet is dropped from this spec. It is now
|
|
18
|
+
* owned by nobody; `ownedForTitle` skips it; the quote is still there,
|
|
19
|
+
* byte for byte.
|
|
20
|
+
* CLAIM at every LATER task's compose, before the belt block is built: if that
|
|
21
|
+
* task's REFINED PROMPT shows a write intent on one of the pending
|
|
22
|
+
* paths, the entry becomes that task's own — belt into its compose,
|
|
23
|
+
* braces onto its spec. First claimant wins.
|
|
37
24
|
*
|
|
38
|
-
*
|
|
39
|
-
* FILES-only 7 candidates TASK_0016 … TASK_0025
|
|
40
|
-
* either 8 candidates → "exactly one" NEVER holds
|
|
25
|
+
* ── WHY NOT "PICK THE TARGET AT DETACH TIME" ─────────────────────────────────
|
|
41
26
|
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* route on server". A path-lexical target rule at detach time is therefore
|
|
48
|
-
* BLIND IN PRODUCTION (0 candidates), the same way the run-18 critique probe was.
|
|
27
|
+
* The obvious rule is "if exactly one OTHER task in the plan names path `P`, move
|
|
28
|
+
* the requirement there". It needs COMPOSED SPECS, and at the conflicting task's
|
|
29
|
+
* compose the later tasks are still bare plan titles. A plan title describes a
|
|
30
|
+
* slice of behaviour, not a file list, so a path-lexical target rule at detach
|
|
31
|
+
* time finds nothing to point at.
|
|
49
32
|
*
|
|
50
|
-
* The claimant knows what the planner did not. By its own compose
|
|
51
|
-
* a
|
|
52
|
-
* `
|
|
53
|
-
*
|
|
54
|
-
* TASK_0017. Nothing else in the plan claims it — six other specs mention the
|
|
55
|
-
* path, all of them to fence themselves off it.
|
|
33
|
+
* The claimant knows what the planner did not. By its own compose the later task
|
|
34
|
+
* has a REFINED prompt, which does say which files it will write — and
|
|
35
|
+
* `writeIntent` reads exactly that, while its negation fence keeps every sibling
|
|
36
|
+
* that merely mentions the path in order to fence itself off it.
|
|
56
37
|
*
|
|
57
|
-
* ── WHY NOT
|
|
38
|
+
* ── WHY NOT CARRY IT AS CROSS-CUTTING ────────────────────────────────────────
|
|
58
39
|
*
|
|
59
40
|
* The cross-cutting channel is for prohibitions and product-wide rules
|
|
60
|
-
* (`isCrossCuttingRequirement`; `accountCoverage` only routes those there).
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
* an obligation that quietly evaporated.
|
|
41
|
+
* (`isCrossCuttingRequirement`; `accountCoverage` only routes those there). A
|
|
42
|
+
* task-specific deliverable clause carried that way lands in every task that has
|
|
43
|
+
* not run yet, none of which owns the file — spec inflation dressed as a fix. An
|
|
44
|
+
* entry nobody claims stays `pending` and `unclaimedPendingRequirements` surfaces
|
|
45
|
+
* it at the end of the run (run-final-gate.ts), so it becomes a debt the run can
|
|
46
|
+
* see rather than an obligation that quietly evaporated.
|
|
67
47
|
*/
|
|
68
48
|
import { findOwnedFreezeConflicts } from './owned-freeze-conflict.js';
|
|
69
49
|
import { ownedForTitle } from './requirements.js';
|
|
@@ -72,11 +52,10 @@ import { PROHIBITION_RE } from './prohibition-probe.js';
|
|
|
72
52
|
* Does this text CLAIM a write on `p` — a create/modify verb reaching a mention
|
|
73
53
|
* of the path, not fenced by a negation?
|
|
74
54
|
*
|
|
75
|
-
* The negation half is not decoration.
|
|
76
|
-
*
|
|
77
|
-
* this slice (e.g
|
|
78
|
-
*
|
|
79
|
-
* run 19's 26 refined prompts yield exactly the two tasks that do write it.
|
|
55
|
+
* The negation half is not decoration. A refined prompt routinely names the files
|
|
56
|
+
* its task must NOT touch, in the same sentence as a write verb — "Do not create
|
|
57
|
+
* or modify any other files outside this slice (e.g. no changes to `X`)". Without
|
|
58
|
+
* the fence check, every such sibling claims `X`.
|
|
80
59
|
*/
|
|
81
60
|
export function writeIntent(text, p) {
|
|
82
61
|
const re = new RegExp(String.raw `\b(?:creat|add|implement|modif|updat|extend|wir|writ|mount|chang)\w*\b`
|
|
@@ -84,7 +63,7 @@ export function writeIntent(text, p) {
|
|
|
84
63
|
+ p.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gi');
|
|
85
64
|
for (const m of text.matchAll(re)) {
|
|
86
65
|
// The negation usually sits BEFORE the verb, so the window reaches back
|
|
87
|
-
// past it — matching only the verb→path span misses
|
|
66
|
+
// past it — matching only the verb→path span misses a fenced spec entirely.
|
|
88
67
|
const from = Math.max(0, (m.index ?? 0) - 90);
|
|
89
68
|
const window = text.slice(from, (m.index ?? 0) + m[0].length);
|
|
90
69
|
if (NEGATED_RE.test(window) || PROHIBITION_RE.test(window))
|
|
@@ -171,8 +150,9 @@ export function detachUnsatisfiableRequirements(args) {
|
|
|
171
150
|
* pending paths its refined prompt writes. Run at the START of compose, so the
|
|
172
151
|
* claimed obligation rides the same belt block every owned requirement does.
|
|
173
152
|
*
|
|
174
|
-
* First claimant wins
|
|
175
|
-
*
|
|
153
|
+
* First claimant wins: `delete entry.pending` runs before the entry is retitled,
|
|
154
|
+
* so a later task finds nothing pending to take. The test named
|
|
155
|
+
* `inv-single-owner` pins that.
|
|
176
156
|
*/
|
|
177
157
|
export function claimPendingRequirements(args) {
|
|
178
158
|
const out = { ledger: args.ledger.map(o => ({ ...o })), actions: [] };
|
package/dist/task/parsers.d.ts
CHANGED
|
@@ -12,8 +12,10 @@
|
|
|
12
12
|
* bare recommendation): a genuine open fork carrying a best-effort suggestion.
|
|
13
13
|
* - 'api-synthesis' — the answer was ANSWERED, then DEMOTED because it names an
|
|
14
14
|
* API identifier absent from the research and the question, in a namespace the
|
|
15
|
-
* research covers
|
|
16
|
-
*
|
|
15
|
+
* research covers. `Bun.mkdirSync` is the shape: bun-types declares no such
|
|
16
|
+
* member, but an answer naming it reads as authoritative and can reach both
|
|
17
|
+
* requirements and the VERIFY block. The suggestion rides along for a HUMAN
|
|
18
|
+
* to judge.
|
|
17
19
|
* - 'integration' — an integration/build-wiring unknown no fetched doc grounded;
|
|
18
20
|
* a wrong guess is a structural landmine, so the model's answer is offered as
|
|
19
21
|
* a recommendation instead of being taken silently.
|
package/dist/task/parsers.js
CHANGED
|
@@ -224,10 +224,10 @@ export function deriveTitle(refined) {
|
|
|
224
224
|
}
|
|
225
225
|
// ─── Display label ───────────────────────────────────────────────────────────
|
|
226
226
|
//
|
|
227
|
-
// `title` is stored in full
|
|
228
|
-
//
|
|
229
|
-
//
|
|
230
|
-
//
|
|
227
|
+
// `title` is stored in full: `deriveTitle` returns the GOAL line whole, however
|
|
228
|
+
// long it is, and nothing clamps it on the way to disk. These helpers shrink it
|
|
229
|
+
// for status surfaces (widget head, /task list) WITHOUT touching what is stored —
|
|
230
|
+
// the pipeline always reads the full title. A model-compressed `label`
|
|
231
231
|
// is preferred when present (see title-label.ts); otherwise we fall back to a
|
|
232
232
|
// deterministic, word-boundary truncation so a label-less task still reads
|
|
233
233
|
// cleanly.
|
package/dist/task/phases.d.ts
CHANGED
|
@@ -46,8 +46,8 @@ export interface PhaseConfig {
|
|
|
46
46
|
* that matters: it drops constraints research REFUTED from `refined`, critique
|
|
47
47
|
* re-reads `refined` as GROUND TRUTH under a prompt that says CONSTRAINTS "MUST
|
|
48
48
|
* be preserved", and `## refined prompt` on disk is deliberately left as refine
|
|
49
|
-
* wrote it. A resume at critique
|
|
50
|
-
* back — the
|
|
49
|
+
* wrote it. A resume at critique hands the refuted constraint straight
|
|
50
|
+
* back — the defect, restored by the very machinery that closed it.
|
|
51
51
|
*
|
|
52
52
|
* The trail is returned rather than written so the replay cannot duplicate a
|
|
53
53
|
* gate line the live run already recorded.
|
|
@@ -84,41 +84,41 @@ export declare function refineExistingFilesBlock(deps: PhaseDeps): Promise<strin
|
|
|
84
84
|
export declare function phaseContractsBlock(deps: PhaseDeps): Promise<string>;
|
|
85
85
|
/**
|
|
86
86
|
* The carried-context blocks a GENERATIVE phase (refine, compose) receives: the
|
|
87
|
-
* cross-slice contracts plus the carried cross-cutting requirements
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
* /task is byte-identical to before.
|
|
87
|
+
* cross-slice contracts plus the carried cross-cutting requirements
|
|
88
|
+
* (`.pi-tasks/requirements.md`, written at plan time). The verbatim requirement
|
|
89
|
+
* quotes travel INTO every task's spec generation, so a mandated methodology
|
|
90
|
+
* ("a test lands in the same change as each new route") reaches the task's
|
|
91
|
+
* GOAL/CONSTRAINTS and its VERIFY. Content travels; a pointer back to the spec
|
|
92
|
+
* doc does not. Both blocks are '' outside a /task-auto run, so a bare /task
|
|
93
|
+
* sees no change.
|
|
95
94
|
*/
|
|
96
95
|
export declare function phaseCarriedBlocks(deps: PhaseDeps): Promise<string>;
|
|
97
96
|
/**
|
|
98
|
-
* DETACH
|
|
97
|
+
* DETACH — an owned requirement this task cannot satisfy, because a
|
|
99
98
|
* category freeze in the very spec that carries it covers the only file that
|
|
100
99
|
* could, stops being this task's obligation and is released to whichever later
|
|
101
100
|
* task writes that file.
|
|
102
101
|
*
|
|
103
102
|
* Runs at the LAST spec-producing step, where the pair first exists: the stamped
|
|
104
103
|
* bullet is written one statement earlier by `appendOwnedConstraints`, and a
|
|
105
|
-
* critique-time probe
|
|
106
|
-
* never edits prose and never asks a model —
|
|
107
|
-
*
|
|
108
|
-
*
|
|
104
|
+
* critique-time probe would find nothing because the stamp does not exist yet.
|
|
105
|
+
* It never edits prose and never asks a model — a model asked to remove a
|
|
106
|
+
* contradiction can satisfy the request by DELETING the authoritative clause,
|
|
107
|
+
* which is not satisfaction of the requirement. The quote stays in the ledger
|
|
108
|
+
* throughout; only its owner changes.
|
|
109
109
|
*/
|
|
110
110
|
export declare function resolveOwnedFreezeForThisTask(deps: PhaseDeps, spec: string): Promise<string>;
|
|
111
111
|
/**
|
|
112
|
-
* CLAIM
|
|
112
|
+
* CLAIM — the other half. A requirement detached by an earlier task
|
|
113
113
|
* becomes THIS task's own when its refined prompt says it writes the frozen
|
|
114
114
|
* file. Run before compose builds its carried blocks, so the claimed obligation
|
|
115
115
|
* rides the same belt every owned requirement does and the braces stamp it onto
|
|
116
116
|
* this spec.
|
|
117
117
|
*
|
|
118
|
-
* The claimant is the only party that knows
|
|
119
|
-
* bare plan titles, and
|
|
120
|
-
*
|
|
121
|
-
*
|
|
118
|
+
* The claimant is the only party that knows. At detach time the later tasks are
|
|
119
|
+
* bare plan titles, and a plan title names a slice of behaviour rather than a
|
|
120
|
+
* file. By its own compose a task has a REFINED prompt, which does say which
|
|
121
|
+
* files it will write — and that is what `writeIntent` reads.
|
|
122
122
|
*/
|
|
123
123
|
export declare function claimOwnedFreezeForThisTask(deps: PhaseDeps, refined: string): Promise<void>;
|
|
124
124
|
export declare const phaseRefine: (deps: PhaseDeps, raw: string, planContext?: string) => Promise<string>;
|
|
@@ -127,10 +127,10 @@ export declare function phaseVerifyTooling(deps: PhaseDeps, research: string): P
|
|
|
127
127
|
* The worker channels the APIS research worker is given.
|
|
128
128
|
*
|
|
129
129
|
* `pi-worker-search` + `pi-worker-fetch` ride along only when the configured
|
|
130
|
-
* engine is usable
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
*
|
|
130
|
+
* engine is usable. `searchConfigured` decides: exa and ddg are keyless and
|
|
131
|
+
* always usable, brave is usable only with its key. A keyless tool that errors
|
|
132
|
+
* on every call is something a weak model burns calls on; a tool the child was
|
|
133
|
+
* never handed is a channel it cannot use at all, however the prompt is worded.
|
|
134
134
|
*
|
|
135
135
|
* Both halves of "given a channel" — the tools string and the `-e` path — come
|
|
136
136
|
* from the same rows, so they cannot disagree.
|
|
@@ -151,9 +151,9 @@ export declare const RESEARCH_SEARCH_HINT: string;
|
|
|
151
151
|
* In-process guards loaded into the TOOLING worker only: block a re-read of any
|
|
152
152
|
* file already read, and block any byte-identical grep/find/ls repeat, feeding
|
|
153
153
|
* the model "you already have this, answer now" instead of letting it re-run.
|
|
154
|
-
* TOOLING
|
|
155
|
-
*
|
|
156
|
-
* See single-read-guard.ts.
|
|
154
|
+
* TOOLING's job is to name verification commands, so it has no reason to read a
|
|
155
|
+
* file twice or repeat a search byte for byte — which is what makes both rules
|
|
156
|
+
* safe to arm HERE and nowhere else. See single-read-guard.ts.
|
|
157
157
|
*/
|
|
158
158
|
export declare const SINGLE_READ_EXTENSION_PATH: string;
|
|
159
159
|
/**
|
|
@@ -161,15 +161,13 @@ export declare const SINGLE_READ_EXTENSION_PATH: string;
|
|
|
161
161
|
* cares about — never the per-file edit list. Big refined prompts embed a long
|
|
162
162
|
* bulleted "fix these files" checklist *inside* the GOAL block; handing that to
|
|
163
163
|
* a weak local model drags it into reading/grepping source it doesn't need and
|
|
164
|
-
* it loops
|
|
164
|
+
* it loops.
|
|
165
165
|
* So scope TOOLING's view to the GOAL prose, truncated at the first bullet.
|
|
166
166
|
*
|
|
167
167
|
* Fallbacks, in order: no bare `GOAL` header (free-form refined) → the whole
|
|
168
168
|
* refined unchanged; a GOAL block with no bullets → the full GOAL block. The
|
|
169
169
|
* GOAL boundary is the next bare ALL-CAPS header (CONSTRAINTS, KNOWN-UNKNOWNS,
|
|
170
|
-
* …) or end of text.
|
|
171
|
-
* bullet-heavy failure case drops 3319→329 chars with zero source-file
|
|
172
|
-
* mentions; the rest are unchanged or only lightly trimmed.
|
|
170
|
+
* …) or end of text.
|
|
173
171
|
*/
|
|
174
172
|
export declare function scopedToolingGoal(refined: string): string;
|
|
175
173
|
export declare function phaseResearch(deps: PhaseDeps, refined: string): Promise<string>;
|
|
@@ -192,8 +190,6 @@ export declare function phaseGrill(deps: PhaseDeps, ctx: ExtensionCommandContext
|
|
|
192
190
|
* the same place. The task file's `## refined prompt` is deliberately left as
|
|
193
191
|
* refine wrote it; the drop is recorded on the `## gates` trail with both source
|
|
194
192
|
* lines quoted, so the decision stays auditable after the fact.
|
|
195
|
-
*
|
|
196
|
-
* STEP 0 `scripts/refuted-constraint-baserate.ts`; A/B-1 `…-ab.ts` (PASS).
|
|
197
193
|
*/
|
|
198
194
|
export declare function dropRefutedConstraints(deps: PhaseDeps, refined: string, research: string): Promise<string>;
|
|
199
195
|
/**
|
|
@@ -213,11 +209,9 @@ export declare function phaseCritique(deps: PhaseDeps, spec: string, refined: st
|
|
|
213
209
|
* An additional deterministic defect block, forced into the rewrite exactly
|
|
214
210
|
* like the probes below and overriding a CLEAN triage the same way.
|
|
215
211
|
*
|
|
216
|
-
*
|
|
217
|
-
*
|
|
218
|
-
*
|
|
219
|
-
* rather than through a hand-copied replica of it, or the two arms differ by
|
|
220
|
-
* more than the probe. Undefined in production.
|
|
212
|
+
* The seam exists so a candidate probe can be exercised through the SHIPPED
|
|
213
|
+
* critique path rather than through a hand-copied replica of it — otherwise a
|
|
214
|
+
* comparison differs by more than the probe. Undefined in production.
|
|
221
215
|
*/
|
|
222
216
|
extraDefects?: string | null): Promise<string>;
|
|
223
217
|
export declare function critiqueWithFallback(d: PhaseDeps, p: PhaseContext): Promise<string>;
|
|
@@ -225,8 +219,8 @@ export declare function critiqueWithFallback(d: PhaseDeps, p: PhaseContext): Pro
|
|
|
225
219
|
* REFINE — restate the raw prompt as a bounded 4-section spec, then subtractively
|
|
226
220
|
* strike any phantom runtime specifier (`bun:sql`) it carried up verbatim from the
|
|
227
221
|
* spec doc, BEFORE it flows to research/grill/compose. An appended correction alone
|
|
228
|
-
* loses: the affirmative survives into the composed GOAL and on to the
|
|
229
|
-
*
|
|
222
|
+
* loses: the affirmative survives into the composed GOAL and on to the
|
|
223
|
+
* implementer, because compose re-leaks it. Rewriting the source so compose has nothing to
|
|
230
224
|
* contradict is the fix. Silent + no-op when nothing is wrong or the runtime's types
|
|
231
225
|
* aren't installed.
|
|
232
226
|
*/
|
|
@@ -255,26 +249,25 @@ export declare function composePhase(d: PhaseDeps, p: PhaseContext): Promise<str
|
|
|
255
249
|
* CRITIQUE — the last spec-producing step, and the two host-side corrections that
|
|
256
250
|
* must run after it in THIS ORDER.
|
|
257
251
|
*
|
|
258
|
-
* BRACES
|
|
259
|
-
* CONSTRAINTS bullet. The belt block upstream is obeyed
|
|
252
|
+
* BRACES: append any owned design obligation the spec still omits as a
|
|
253
|
+
* CONSTRAINTS bullet. The belt block upstream is obeyed only sometimes; a host-side
|
|
260
254
|
* append is obeyed by construction. Idempotent — quotes the spec already carries
|
|
261
255
|
* (belt-obeying reps) are skipped.
|
|
262
256
|
*
|
|
263
257
|
* Then DETACH: an owned obligation whose only file this spec also FREEZES is
|
|
264
258
|
* unsatisfiable here, so it moves to the pending task that writes that file rather
|
|
265
259
|
* than shipping a requirement no one can meet. It MUST run after the append, because
|
|
266
|
-
* the append is what writes the stamp the detach reads
|
|
267
|
-
*
|
|
260
|
+
* the append is what writes the stamp the detach reads, so a critique-time probe
|
|
261
|
+
* would find nothing.
|
|
268
262
|
*/
|
|
269
263
|
export declare function critiquePhase(d: PhaseDeps, p: PhaseContext): Promise<string>;
|
|
270
264
|
/**
|
|
271
265
|
* The pipeline, as a table with no bodies.
|
|
272
266
|
*
|
|
273
267
|
* Every row's `run` is a named exported function, so the COMPOSITION inside a
|
|
274
|
-
* step
|
|
275
|
-
*
|
|
276
|
-
*
|
|
277
|
-
* they run in is now asserted by driving the row rather than retyped in a test.
|
|
268
|
+
* step is drivable directly instead of only through a whole TaskRunner run. That
|
|
269
|
+
* matters because a step's parts can each be correct while the order they run in
|
|
270
|
+
* is wrong — see `runPhaseRow`, which is the surface that pins the order.
|
|
278
271
|
*/
|
|
279
272
|
export declare const PHASES: PhaseConfig[];
|
|
280
273
|
/**
|