Repository navigation
Conversation
Closes #631. The codex runtime's review-trigger loop read the catch-up feed of `<agentId>-review-trigger` while signing as `<agentId>`, which Flair refuses with 403, so it never handled its pr.opened events. It now reads the agent's own feed; its cursor stays under `<agentId>-review-trigger-task-loop.json`, separate from the task loop's, so the two loops reading one agent's feed keep separate positions.
cli#631 sweep — added/changed sentences vs the codeScope: every sentence flair-task-loop.ts — docstring / comments
pr-review-trigger.ts — new docstring
codex-runtime.ts — comment
test/review-trigger-loop.test.ts — header / titles / comments
.changelog/unreleased/fixed-631-review-trigger-own-feed.md
Guarantee-word grep
Not changed / findings
|
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Closes #631.
The codex runtime's review-trigger loop read the catch-up feed of
<agentId>-review-triggerwhile signing as<agentId>. Flair refuses a non-admin read of another participant's feed with 403, so the loop reported the feed unavailable (since #629) and, before that, handled nothing. It now reads the agent's own feed (agentId), where Flair serves an event addressed to that agent.What changes
pr-review-trigger.tsgainsstartReviewTriggerLoop, which starts thepr.openedloop on the agent's own feed;codex-runtime.tscalls it instead of starting the loop against the<agentId>-review-triggerfeed.flair-task-loop.tstakes an optionalloopIdnaming the cursor file, defaulting toagentId. The review-trigger loop's cursor stays at<agentId>-review-trigger-task-loop.json(the file it used before), so the two loops reading one agent's feed keep separate positions.The
pr.openedpublisher (the runtime's autoCommit path) emits the event with notargetIds, i.e. a broadcast, and the agent's own feed serves broadcast events, so the loop receives it. No publisher change was made; if the trigger must be delivered by targeting, that publisher is the one that would settargetIds.Evidence
Measured on 9b038ca (main 5f19a02).
review-trigger-loop.test.ts(2 cases): against the shared signed catch-up stub, the loop reads only the agent's own feed (every catch-up request namesagent-a; a foreign feed is refused with 403), apr.openedevent addressed to the agent is handled (the loop's cursor advances to the event's position), and a refused read is reported unavailable (Task loop catch-up read unavailable (HTTP 403)) rather than read as empty.startReviewTriggerLoopreading<agentId>-review-triggeragain, the "reads its own feed / handles a targeted trigger" case fails at the cursor assertion; restored, both cases pass.review-trigger-loop,flair-task-loop,pr-review-trigger,home-per-call,office-status,agent-logs,codex-presence-444,auto-commit,mail-trust-ceiling,discord-adapter— 135 pass / 0 fail.packages/cli): head 3333 pass / 7 skip / 0 fail (3340 tests, 213 files), main 3331 pass / 7 skip / 0 fail (3338 tests, 212 files); the +2 tests are the new file's cases.bun run build(tsc) clean;bun run lint:ciclean (469 warnings, 84 infos, unchanged);node scripts/changelog-fragments.mjs checkclean.