`gt plugin run` was recording ResultSuccess even though it only prints
instructions without executing them. This poisoned the cooldown gate,
blocking actual executions for 24h.
Changes:
- Record manual runs as ResultSkipped instead of ResultSuccess
- Add CountSuccessfulRunsSince() to only count successful runs for gate
- Gate check now uses CountSuccessfulRunsSince() so skipped/failed runs
don't block future executions
Fixes: hq-2dis4c
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The Recorder calls bd commands but wasn't setting the BEADS_DIR
environment variable. This could cause plugin run beads to be
created in the wrong database when redirects are in play.
Fixes: gt-z4ct5
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- gt plugin run: Manual plugin execution with gate check
- --force to bypass cooldown gate
- --dry-run to preview without executing
- Records successful runs as ephemeral beads
- gt plugin history: Show execution history from ephemeral beads
- --json for machine-readable output
- --limit to control number of results
- Fix recording.go to use valid bd list flags (--created-after instead of --since)
Closes: gt-n08ix.4
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>