feat: add kata-backed pi tasks plugin#15
Conversation
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
86fe876 to
8015921
Compare
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: PassNo issues found. Review type: | Agent: codex | Job: 19210 |
Kata no longer exposes stable per-project issue numbers after the short_id cutover, so the pi task adapter must treat task ids as Kata refs instead of integers. Without this, created tasks could not record metadata and execution/update flows passed legacy numeric identifiers back to the CLI. Keep legacy number fallback only for old fixtures, but prefer short_id/qualified refs in displays, dependency resolution, locks, lifecycle logging, and user-facing tool descriptions. Validation: GOFLAGS=-buildvcs=false go test ./... && cd plugins/pi-tasks-kata && npm test -- --run && npm run typecheck && npm run build Generated with Pi Co-authored-by: Pi <pi@users.noreply.github.com>
Task execution accepts multiple Kata refs for the same issue, but claim locking previously used the caller-supplied ref directly. That left alias pairs such as a short id and qualified ref able to take separate in-process and durable locks before either mutation made the task visibly in progress. Resolve the issue first, then claim under a stable server-derived ref and re-read inside that canonical lock before assigning, labeling, or spawning. This keeps the existing rollback behavior while closing the duplicate-execution race. Validation: cd plugins/pi-tasks-kata && npm test && npm run typecheck && npm run build Generated with Codex Co-authored-by: Codex <codex@openai.com>
Kata close now requires done closes to carry substantive closure metadata, and relationship updates are edited through the issue mutation command rather than the retired block subcommand. The adapter needs to follow that CLI contract or TaskUpdate and TaskExecute lifecycle paths fail at runtime despite passing earlier unit-level assumptions. Use the current close flags with task-specific messages and typed evidence, and route dependency additions through kata edit relationship flags so the plugin exercises the shipped command surface. Validation: cd plugins/pi-tasks-kata && npm test && npm run typecheck && npm run build Generated with Codex Co-authored-by: Codex <codex@openai.com>
main removed docs/superpowers/ and adopted a fold-then-remove policy for planning specs (#77): once work ships, durable rationale moves into maintained docs so stale drafts do not compete with them. After rebasing onto main, this branch was the only thing re-creating that directory, and its spec had already drifted from the implementation (it still described numeric issue ids). Keep the durable design decisions — short_id task identity, the open/in_progress/closed status mapping, metadata-as-comments, and the fake-runner test seam — in the plugin README, and drop the spec and plan. Validation: cd plugins/pi-tasks-kata && npm test && npx tsc --noEmit Generated with Claude Code (claude-fable-5) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ae109f0 to
c4a67bc
Compare
roborev: Combined Review (
|
Three review findings shared a root cause: the plugin trusted that its preflight checks and the daemon's raw JSON were enough. Dependency refs were only syntax-checked, so an unresolvable ref failed at the kata edit step after title/status mutations had already applied, defeating the all-refs-before-mutation guard. Each ref is now resolved with a non-mutating show before anything mutates. A claim could double-execute: between the preflight show and the in_progress label add, another executor could win the race, and the daemon reports that as a changed:false no-op rather than an error. The claim now aborts on a no-op label add, rolling back ownership but leaving the other claimant's label alone. kata --json deliberately returns raw daemon bytes (sanitization is the terminal renderer's job, per internal/textsafe), so the plugin now strips ANSI CSI/OSC escapes and control/format runes from server-sourced titles, bodies, owners, labels, and comments at its human-facing text boundary, and keeps single-row fields from injecting forged lines. Validation: cd plugins/pi-tasks-kata && npm test && npx tsc --noEmit && npm run build Generated with Claude Code (claude-fable-5) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
roborev: Combined Review (
|
Summary
Validation
Note: this worktree needs Go's suggested -buildvcs=false flag for the full suite because plain go test ./... fails while building helper binaries with VCS stamping.