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.

  1. 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%)
  2. 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%)
  3. Hotspot: docker/box/src/shared/contracts.ts

    4 of 10 earlier PRs that changed this needed a fix.

    6 clean, 4 fixed (40%)
  4. 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%)
  5. 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%)
  6. 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%)
  7. 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%)
  8. Hotspot: packages/react/src/server/index.tsx

    4 of 12 earlier PRs that changed this needed a fix.

    8 clean, 4 fixed (33%)
  9. 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%)
  10. Hotspot: apps/dashboard/src/api/agents.ts

    5 of 17 earlier PRs that changed this needed a fix.

    12 clean, 5 fixed (29%)
  11. 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%)
  12. Fragile area: apps/agent-inbox-mcp/

    5 of 18 earlier PRs that changed this needed a fix.

    13 clean, 5 fixed (28%)
  13. Fragile area: packages/chat-adapter-email/

    3 of 12 earlier PRs that changed this needed a fix.

    9 clean, 3 fixed (25%)
  14. 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.

PRTitleSizeRule it breachedWhat 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.