aeffbe65eef5ca4a624c310a1cb7ce81af6838cd
The event-driven comment→CEO route (issue.comment.created) is best-effort: a failed/coalesced/cancelled CEO invoke, or a comment that lands while an agent is mid-run, can leave a chair comment unrouted with nothing to retry. This is exactly how a chair comment on CMP-190 (2026-06-30) was silently dropped — the host-native wake was cancelled (issue_execution_promoted / assignee_changed) and no plugin route fired. Adds a reconciliation sweep (route-pending-comments, every 2 min) that re-routes any active issue whose LAST comment is the chair's (no agent reply after it) and whose id ≠ the per-issue `last-routed-comment-id` marker. Both the fast path and the sweep stamp the marker → idempotent, no double-routing of healthy comments. "Last comment is user" precisely targets the failure (chair commented, no agent response) and skips historically answered comments, so first-run-after-deploy footprint is 0. - worker.ts: extract shared routeCommentToCeo() + markCommentRouted(); event handler stamps marker (incl. the native-handles-it branch); register route-pending-comments sweep with per-company/per-issue guards. - manifest.ts: declare route-pending-comments job (*/2 * * * *). Invariants: G12 (Paperclip touch only in the declared wrapper — plugin), G2 (extends the existing route, no parallel path). Refs legal-ai #164. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Description
Paperclip plugin for Legal AI integration — case management, semantic search, workflow tracking
Languages
TypeScript
99%
JavaScript
1%