# Tasker Milestones This document defines the implementation milestones for the `getphred/tasker` runner. ## 1. Project Infrastructure - [x] Initialize `composer.json` with PSR-4 autoloading and dev tools (PHPUnit, PHPStan, PHPCS). - [x] Set up GitHub Actions (PHP 8.2/8.3) with fail-on-warning policy. - [x] Establish coding standards and baseline configuration files. ## 2. Core Runner MVP - [x] Bootstrap runner accepting a PSR-11 container (`ContainerInterface`). - [x] Implement explicit command registration API. - [x] Implement Composer-based discovery via `extra.phred-tasker.commands`. - [x] Implement basic argv parser for global flags: `-v/-vv/-vvv/-q`, `-n/--no-interaction`, `--no-ansi`, `-h/--help`. - [x] Implement built-in `list` and `help` commands. ## 3. Middleware Engine - [x] Define middleware registration via container and ordered execution. - [x] Implement middleware execution chain (`ConsoleMiddlewareInterface`). - [x] Add top-level exception guard and standardized exit code mapping (sysexits.h). ## 4. IO & State Wiring - [x] Initialize default PhredBridge adapters for `InputInterface`/`OutputInterface`. - [x] Wire verbosity, decoration (ANSI), and non-interactive flags into output and helper behavior. - [x] Ensure fixed markup set renders (via PhredBridge) or strips when colors are disabled. ## 5. Integration Tests - [x] End-to-end test: run sample command discovered via Composer. - [x] Arg/option parsing tests including edge cases (unknown flags, combined short flags rejection, defaults). - [x] Middleware behavior tests (ordering, early return, error handling). - [x] Help/list output tests (including non-interactive and `--no-ansi`). ## 6. Developer Experience - [x] Quick Start guide with container boot example and Composer discovery snippet. - [x] Example project with 1–2 sample commands using attributes (`#[Cmd]`, `#[Arg]`, `#[Opt]`). - [x] Troubleshooting section (common exit codes, discovery pitfalls).