-
Add plugin extensibility system (SPEC-008) with 6 extension points: lifecycle hooks, custom validators, external commands, custom providers, board formatters, and post-plan-complete hook
- Hooks run scripts from .hence/hooks/ and ~/.hence/hooks/ after claim/complete/block/unblock/assert events, with timeout and disable-via-config support
- Custom validators in .hence/validators/ output JSON diagnostics that integrate into hence validate (promoted to errors with --strict)
- External commands follow git-style hence-{name} discovery from PATH
- Custom providers defined in config.toml extend the spawn provider registry
- Board formatter plugins receive JSON on stdin via --format
- TOML config system with global/local merge (~/.hence/config.toml + .hence/config.toml)
- 52 new tests (32 unit + 20 integration) covering all 6 plugin contracts (CON-001 through CON-006)
Test plan
- cargo fmt --check — clean
- cargo clippy -- -D warnings — clean (including clippy 1.93 collapsible_if)
- cargo test — 303 tests pass (251 existing + 52 new), zero failures
- Add plugin extensibility system (SPEC-008) with 6 extension points: lifecycle hooks, custom validators, external commands, custom providers, board formatters, and post-plan-complete hook
- Hooks run scripts from .hence/hooks/ and ~/.hence/hooks/ after claim/complete/block/unblock/assert events, with timeout and disable-via-config support
- Custom validators in .hence/validators/ output JSON diagnostics that integrate into hence validate (promoted to errors with --strict)
- External commands follow git-style hence-{name} discovery from PATH
- Custom providers defined in config.toml extend the spawn provider registry
- Board formatter plugins receive JSON on stdin via --format <name>
- TOML config system with global/local merge (~/.hence/config.toml + .hence/config.toml)
- 52 new tests (32 unit + 20 integration) covering all 6 plugin contracts (CON-001 through CON-006)
Test plan
- cargo fmt --check — clean
- cargo clippy -- -D warnings — clean (including clippy 1.93 collapsible_if)
- cargo test — 303 tests pass (251 existing + 52 new), zero failures