novuhq/novu
14 rules learned from 1,000 merged PRs: the files and habits in novuhq/novu that kept needing a fix after merge.
- Merged PRs read
- 1,000
- Needed a fix
- 86 (9.3%)
- Reverted
- 0
- Merged between
- 2026-07-03 and 2026-11-09
Tested on new PRs: not enough data yet
13 of the 110 code PRs that breached a rule needed a fix (12%), against 12 of the 114 that breached none (11%).
Rules were learned from older PRs, then tested on later PRs they hadn't seen. How we tested
Fix-prone files and folders
PRs that touched these paths needed a follow-up fix more often than the 11% repo average. Counts are PRs that touched the path.
- Hotspot: apps/dashboard/src/components/workflow-editor/steps/tool/tool-preview.tsx
5 of 8 earlier PRs that changed this needed a fix.
3 clean, 5 fixed (63%) - Hotspot: apps/worker/src/app/workflow/usecases/run-job/run-job.usecase.ts
4 of 8 earlier PRs that changed this needed a fix.
4 clean, 4 fixed (50%) - Hotspot: docker/box/src/shared/contracts.ts
4 of 10 earlier PRs that changed this needed a fix.
6 clean, 4 fixed (40%) - Hotspot: libs/dal/src/repositories/conversation/conversation.repository.ts
4 of 11 earlier PRs that changed this needed a fix.
7 clean, 4 fixed (36%) - Hotspot: apps/api/src/app/agents/conversation-runtime/egress/outbound.gateway.ts
8 of 23 earlier PRs that changed this needed a fix.
15 clean, 8 fixed (35%) - Hotspot: apps/api/src/app/agents/conversation-runtime/ingress/chat-instance.registry.ts
8 of 23 earlier PRs that changed this needed a fix.
15 clean, 8 fixed (35%) - Hotspot: apps/api/src/app/agents/web-chat/web-chat.controller.ts
3 of 9 earlier PRs that changed this needed a fix.
6 clean, 3 fixed (33%) - Hotspot: packages/react/src/server/index.tsx
4 of 12 earlier PRs that changed this needed a fix.
8 clean, 4 fixed (33%) - Hotspot: apps/api/src/app/agents/shared/dtos/agent-reply-payload.dto.ts
4 of 13 earlier PRs that changed this needed a fix.
9 clean, 4 fixed (31%) - Hotspot: apps/dashboard/src/api/agents.ts
5 of 17 earlier PRs that changed this needed a fix.
12 clean, 5 fixed (29%) - Hotspot: apps/api/src/app/agents/conversation-runtime/ingress/inbound-turn.handler.ts
11 of 39 earlier PRs that changed this needed a fix.
28 clean, 11 fixed (28%) - Fragile area: apps/agent-inbox-mcp/
5 of 18 earlier PRs that changed this needed a fix.
13 clean, 5 fixed (28%) - Fragile area: packages/chat-adapter-email/
3 of 12 earlier PRs that changed this needed a fix.
9 clean, 3 fixed (25%) - Fragile area: packages/stateless/
2 of 8 earlier PRs that changed this needed a fix.
6 clean, 2 fixed (25%)
Conventions
Habits most PRs here follow, where PRs that broke them needed a fix more often. Counts on each bar are the PRs that broke it.
No habit here made the list.
Recent PRs that needed a fix
Rules flagged 162 recent PRs, and 25 of those needed a fix (15%), against 9% of all recent PRs. These are the 15 with the strongest rule that needed a fix, with the PR that fixed each.
| PR | Title | Size | Rule it breached | What happened |
|---|---|---|---|---|
| feat(root): Novu Box, a full Novu Cloud stack per PR on Cloudflare fixes NV-9079 | +10,846 -0 | touches docker/box/src/shared/contracts.ts6 clean, 4 fixed | fixed in #12946, same day | |
| feat(root): Novu Box boxes on box.novu-staging.co, one Worker for all fixes NV-9059 | +451 -449 | touches docker/box/src/shared/contracts.ts6 clean, 4 fixed | fixed in #12981, 1 day later | |
| fix(root): a Novu Box restore that hangs is started again once fixes NV-9109 | +104 -20 | touches docker/box/src/shared/contracts.ts6 clean, 4 fixed | fixed in #13004, same day | |
| feat(root): Add Photon (iMessage via Spectrum Cloud) channel and agent integration | +8,197 -805 | touches apps/api/src/app/agents/conversation-runtime/egress/outbound.gateway.ts15 clean, 8 fixed | fixed in #12649, 1 day later | |
| feat(api-service): give Human its own email inbox and send caps fixes NV-9021 | +4,882 -1,346 | touches apps/api/src/app/agents/conversation-runtime/ingress/chat-instance.registry.ts15 clean, 8 fixed | fixed in #13001, 9 days later | |
| feat(api-service): add outbound quote-reply payload fixes NV-8626 | +282 -120 | touches apps/api/src/app/agents/conversation-runtime/egress/outbound.gateway.ts15 clean, 8 fixed | fixed in #12632, 1 day later | |
| feat(human-dashboard,agent-inbox-mcp,@agentinbox/cli): the Connect step and drawer get a tab for each way in, and notice every agent that connects fixes NV-9217 | +2,402 -508 | touches apps/agent-inbox-mcp/13 clean, 5 fixed | fixed in #13147, 4 days later | |
| feat(api-service,human-dashboard,agent-inbox-mcp,@agentinbox/cli): the Agent Inbox API on agentinbox.md fixes NV-9042 | +817 -270 | touches apps/agent-inbox-mcp/13 clean, 5 fixed | fixed in #13139, 11 days later | |
| feat(@agentinbox/cli,human-dashboard,docs): conversation commands without the inbox group fixes NV-9208 | +253 -266 | touches apps/agent-inbox-mcp/13 clean, 5 fixed | fixed in #13118, 1 day later | |
| feat(agent-inbox-mcp): serve OpenAI's domain verification token fixes NV-9216 | +47 -2 | touches apps/agent-inbox-mcp/13 clean, 5 fixed | fixed in #13124, 1 day later | |
| feat(shared): push provider content overrides with Expo schema fixes NV-8454 | +7,465 -602 | touches packages/providers/22 clean, 7 fixed | fixed in #12895, 9 days later | |
| refactor(api, worker): update to use SQS as main system and bullmq as backup fixes NV-8706 | +1,924 -1,217 | touches apps/worker/67 clean, 21 fixed | fixed in #12820, 12 days later | |
| chore(root): update pnpm version and various dependencies | +993 -1,780 | touches apps/worker/67 clean, 21 fixed | fixed in #12990, 10 days later | |
| feat(api-service,human-dashboard,@agentinbox/cli): create an Agent Inbox at the chosen address fixes NV-9032 | +1,932 -415 | touches apps/worker/67 clean, 21 fixed | fixed in #12970, 2 days later | |
| feat(api-service,dashboard,worker): restore integration conditions via JSONLogic rules fixes NV-7302 | +1,595 -186 | touches apps/worker/67 clean, 21 fixed | fixed in #12612, 13 days later |
Get this for your own repo
Precall reads your repo's history the same way and comments on new PRs that touch the spots that kept breaking. Download the rules file for novuhq/novu.