Skip to content

fix(runner): reject tasks without parseable steps - #645

Open
cookerpapa wants to merge 1 commit into
HenryLach:mainfrom
cookerpapa:fix/reject-empty-task-steps
Open

cookerpapa wants to merge 1 commit into
HenryLach:mainfrom
cookerpapa:fix/reject-empty-task-steps

Conversation

@cookerpapa

Copy link
Copy Markdown

Fixes #614.

Runtime V2 treats an empty parsed step list as complete. A prompt with ## Step headings, or no step headings at all, can therefore succeed without launching a worker and receive a .DONE marker.

This change rejects zero-step prompts before worker launch and rechecks the prompt during execution and before finalization. The runner returns a failed outcome, records the required ### Step N: ... format in STATUS.md, and quarantines any existing completion marker. It preserves accumulated worker telemetry and allows valid, already-completed tasks to resume without spawning another worker.

Validation on Node 24 / Linux:

  • Ten behavioral regression tests pass. Nine reproduce false success on the unmodified base; the completed-task resume case passes before and after. Tests exercise the real lane runner and file operations, with worker spawning mocked.
  • The upstream CI test selection passes: 3,611 tests, no skips.
  • Full suite: 4,106 passed, 6 failed. The unmodified base has the same six failures: Windows-path checks and the project-config-loader base-agent lookup. These files are already excluded by the upstream CI workflow.
  • Typecheck, lint and format checks pass. Task/status references and their relative links are updated and checked.

Base: 293d9a833ba685d4c2291a1d68e9b68b0271e00a. No live pi session was used for this validation.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Runtime V2: task with zero parseable '### Step' headings is falsely marked succeeded (lane-runner writes .DONE, skips worker)

1 participant