whiteducksoftware / whiteducksoftware/flock
[1.0] Preserve terminal run outcomes across cleanup and failure paths
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 120
- Forks
- 14
- Avg merge
- 19h 32m
- Merged PRs (30d)
- 8
Description
Collector cleanup can overwrite an error with completed. Failures during context construction or persistence also need the same truthful outcome contract as engine failures.
Scope
- Use the existing task/run identity and records to define consistent running, successful, failed, cancellation-requested and confirmed-cancelled outcomes.
- Ensure cleanup cannot overwrite failure or confirmed cancellation with success.
- Bring context construction, engine execution, output persistence and consumption persistence into the same outcome handling; keep run_until_idle as an idle wait rather than an implicit success result.
Acceptance criteria
- Controlled success, exception and cooperative cancellation retain their correct states after all cleanup hooks.
- Failures before engine execution and during output/consumption persistence are associated with the run and do not report success.
- Python, collector events and API-visible records agree; interruption recovery is handled by the dedicated history ticket.
Boundaries
No automatic retry/DLQ or complete workflow lifecycle implementation.
References
- Implementation dependencies: #428.
- src/flock/core/agent.py
- src/flock/core/orchestrator.py
- src/flock/api/collector.py
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the referenced flow in src/flock/core/agent.py and src/flock/core/orchestrator.py, then trace how src/flock/api/collector.py records task/run outcomes. Exercise success, exceptions, cooperative cancellation, context-construction failures, and persistence failures. Done means cleanup preserves terminal outcomes and Python, collector events, and API-visible records agree without making run_until_idle imply success.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- api, backend, distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100