HydroRoll-Team / HydroRoll-Team/OneRoll

Harden Program-aware CLI and TUI error, progress, and command flows

Open
#28 0 comments 0 reactions 0 assignees View on GitHub
area:cli-tui area:python blocked priority:p1 type:bug workflow:afk
Dominant language
Python
Stars
3
Forks
1
Avg merge
3d 4h
Merged PRs (30d)
2

Description

## Parent

- #5

## What to build

Move CLI and TUI clients onto the typed Engine Program contract while keeping command routing, optional UI dependencies, responsiveness, and cancellation outside the pure language core.

## Frozen client boundary

- `help` and `la` remain client commands and are rejected by Engine parsing.
- Engine work runs in a worker. CLI/TUI poll worker completion and token state; the core has no Python progress callback.
- The clients use one RFC-0004 `CancellationToken`; TUI cancellation never blocks its event loop.
- The reference clients apply a five-second relative timeout while core Engine methods have no default timeout.
- Missing Rich/Textual extras produce the package-boundary messages from #14.

## Acceptance criteria

- [ ] Single expressions and Programs render every ordered typed result and trailing metadata.
- [ ] Parse, validation, evaluation, budget, batch, cancellation, and deadline errors render by structured fields without tracebacks.
- [ ] `help` and `la` are client commands and fail in pure Engine parsing.
- [ ] Long batch/function work is cancellable through worker-plus-token polling without a core callback.
- [ ] The TUI event loop remains responsive throughout Engine work.
- [ ] Smoke tests cover Program, roll, batch, error, command, optional-dependency, timeout, and cancellation paths.

## Blocked by

- #14
- #19
- #22
- #26
- #38

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the typed Engine Program contract and the CLI/TUI worker-plus-CancellationToken flows described in this issue, after reviewing blockers #14, #19, #22, #26, and #38. Run the smoke tests covering Program, roll, batch, error, command, optional-dependency, timeout, and cancellation paths. Done means all listed acceptance criteria pass without tracebacks, while the TUI remains responsive and the pure core stays free of client callbacks.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, rust
Domain
cli, testing
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.