← opencrvs.dev

Fixes land faster than ever. Shipping them takes longer.

An analysis of every issue (6,485) and pull request (7,327) in opencrvs/opencrvs-core from May 2018 to 4 October 2026, including project board status history, reviews and release tags. Most charts cover 2022 onwards; board history starts in October 2023.

Most of the change lines up with the Events V2 rewrite. On the time charts, the shaded area is the period before V2 work began in November 2024, and dashed lines mark 1.9 (V2 ships) and 2.0 (pre-V2 services removed).

Issues in each board stage, weekly
Open issues by their latest project board status at the end of each week. Work in development and review stays between 15 and 60 items; finished work waiting to ship grew to 315 before the 2.1 release closed about 170 of them. Dashed lines mark the 1.9, 2.0 and 2.1 releases.

Findings

  1. Events V2 is where the change starts. Most improvements begin in late 2024, when V2 work began, not when 1.9 shipped. From January 2025 to April 2026, PRs to V2 code got a first review in a median of 2 hours against 20 for older code, and merged in about half the time at the same size. The cost shows in 1.9 and 2.0, which had the most bugs and regressions.
  2. Work gets built quickly. On the project board, the median time from In Development to Completed was 5–10 days through 2025–26, down from 18–26 days in the first three quarters of 2024. Development and code review alone take a median of 1–4 days in 2026.
  3. Reviews are fast. The median wait for the first human review fell from 14–25 hours in 2024 to 2–3 hours in 2026, and 85% of PRs got one within 3 days in Q2 and Q3 2026. PRs are bigger than in 2023 (median 80–170 changed lines in 2025–26, against 30–70 in 2023), and size is the clearest predictor of waiting: PRs under 50 lines merge in a median of 4 hours, PRs over 1,000 lines in 5 days.
  4. Finished work waits to ship. Issues marked Completed waited a median of 21–49 days before being closed in 2026, against 1–16 days in 2024. Issues are closed when a release ships, so this is release wait. The queue of Completed-but-open issues grew from about 50 at the start of 2025 to 315 in September 2026; 199 are still waiting after 2.1.
  5. The open backlog has tripled. 300 open issues in early 2022, 977 today. Since late 2024 more issues were opened than closed in most quarters. Median age of an open issue is 270 days; 68% are older than six months.
  6. Closure counts are unreliable. 44% of all closures (2,412 of 5,505) happened in batches of eight or more within minutes. Most are release or QA batches, but 749 were clean-up sweeps of year-old issues, and 748 of those were marked "completed". "Not planned" has been used 62 times in the repo's history.
  7. Quality is improving. Regressions per 100 merged PRs went from 43 (1.9) to 31 (2.0) to 17 (2.1, still early). The share of completed items sent back from QA fell from 18–22% in 2024 to 5–18% in 2025–26. Fewer PRs get "changes requested" (1–6% in 2025–26, 9–25% in 2022–23); that could mean better PRs or lighter review, so watch it next to regressions.
  8. 2.1, the first release on V2 alone, had far fewer bugs than recent releases. 38 bugs were raised per 100 merged PRs during the 2.1 cycle, against 88 for 1.9 and 98 for 2.0, even though 2.1 had the best issue type coverage (78%). 1.9 needed 88 bug fixes across its patch releases after shipping; 2.0 has needed 11 so far.
  9. Most of each release's scope arrives after the cycle starts. 86% of the issues in the 2.0 milestone and 70% of those in 2.1 were created during the release cycle. About half of the added issues are bugs, the rest new features and tasks. Issues moved between milestones aren't counted yet, so the real number of scope changes is higher.
  10. AI-assisted work is now a fifth of PRs. 17–21% of merged PRs from July to September 2026 have an AI co-author, up from 4–6% in March to June and almost none before. Q3 2026 also had 369 merged PRs from 16 authors, the highest per-author rate since 2022, and the share of closed PRs that were merged fell from about 88% to about 80%. PR counts are not comparable across these periods without that context.

Before and after Events V2

Events V2 is a rewrite of how OpenCRVS defines and processes life events. Work on it started in November 2024, when the events and toolkit packages were created. It shipped alongside the old system in 1.9 (November 2025), and the old backend services (gateway, workflow, search, metrics, user-mgnt, config) were removed during the 2.0 cycle in April and May 2026.

The rewrite had a cost: 1.9 and 2.0 had the highest bug and regression rates measured, 1.9 needed about 20 patch releases, and the backlog doubled during 2025. It also changed how fast work moves. Changes to V2 code are reviewed within hours instead of a day, and merge in about half the time at the same size. 2.1, the first release on V2 alone, had the lowest bug rate of the five releases measured.

What merged PRs changed, per quarter
A PR counts as V2 or pre-V2 when at least 80% of its changed code files are in that area. Events V2 code is packages/events, packages/toolkit, the client's v2-events folder, and the event, conditional and field configuration in commons. Docs, lockfiles, CI config and translations are ignored. After 2.0, most "both" PRs touch V2 and the parts of the client shared with the old UI.
Median hours to merge by PR size, January 2025 to April 2026
Both codebases were in active use in this period. Only 15 PRs over 1,000 lines touched pre-V2 code, so that pair of bars is the least reliable.
January 2025 to April 2026Events V2 codeCode that predates V2

What to keep in mind

Cycle time from the project board

In Development to Completed
Grouped by the quarter the issue reached Completed. Covers the 1,498 issues that went through In Development or In Code Review before Completed (48–202 per quarter). Development and review means In Development until the first post-review status such as Ready for release or Ready for QA.
Completed to closed (release wait)
Median days, grouped by the quarter the issue closed.

Issue flow and backlog

Issues opened and closed per quarter
A batch is eight or more closures with less than five minutes between each. Batches whose issues mostly had no milestone and a median age over 180 days count as clean-up sweeps. All other batches count as release or QA batches.
Open issues at end of quarter
Reconstructed from open and close dates. Today's count (977) is lower than end of Q3 because about 170 issues were closed with the 2.1 release on 2 October.
Age of the 977 open issues
333 open issues have no issue type set; 287 are bugs.

Pull requests

Time from PR opened to merged
Human-authored PRs only; Renovate, Dependabot, GitHub Actions and ocrvs-bot are excluded. Grouped by merge quarter.
Wait for first human review
From the PR being opened, or marked ready for review if it started as a draft, to the first review by someone other than the author. Review bots (Copilot, Greptile, Cursor, CodeRabbit) are excluded; they reviewed about 2% of 2026 PRs.
Merged PRs with an AI co-author
Share of merged human-authored PRs where at least one commit has a Co-authored-by trailer from an AI tool (Claude, Copilot, Greptile). 98% of merged PRs were found in git history. Tools that don't add a trailer, such as inline completions or chat, aren't counted, so this is a lower bound. 15 more PRs were opened by AI agent accounts since October 2025 and are excluded with other bots.

PR size and waiting, 2025–26

Changed linesMerged PRsMedian hours to mergeMedian hours to first review
Merged PRs per quarter and active authors
Active author means anyone with at least one merged PR that quarter: 9 to 20 people per quarter, 66 over the repo's life.

Releases and quality

Minor releaseDays since previous minorMerged PRs in cyclePatch releasesRegressionsPer 100 PRs

Regressions are issues labelled "1.9 regression", "2.0 regression" or "2.1 regression"; the label did not exist before 1.9. Tagged releases per quarter went from 2–4 in 2024 to 5–8 in 2025–26, mostly 1.9.x patches.

Share of completed board items that were moved back from a QA status to Ready to build, In Development or Backlog: . Reopened issues are rare, 1–2% of issues created in 2025–26.

Bugs per release

ReleaseCodebaseBugs raised during cyclePer 100 merged PRsBugs fixed in patch releasesIssues with a type

Bugs are issues with issue type Bug. The cycle runs from the previous minor release to this one, and includes bugs against any version. Bugs fixed in patch releases are bugs in milestones such as 1.9.1 or 2.0.3. Untyped issues aren't counted, so earlier releases are undercounted more; the last column shows how many issues created in the cycle had any type.

Release scope changes

ReleaseIssues in milestonePlanned before cycleBugs addedOther addedShare added

Counts issues in each release milestone (such as 2.0 or 1.9.0, not patch milestones). Planned before cycle means the issue was created before the previous minor release shipped. Added means it was created after that and before this release shipped. This undercounts scope changes: existing issues moved into the release, and issues moved out to a later release, need milestone change history, which wasn't fetched.

Proposed sprint metrics for KR 2.1

None of these need story points, and all of them can be computed from GitHub every sprint with the data used here. Report each as a rolling median over the last three sprints, because single-sprint numbers swing a lot. Use Q3 2026 onwards as the baseline, since earlier numbers come from a different codebase and process.

MetricWhat it tells you
Cycle time: In Development to Completed, median and 85th percentileHow long building a change takes once someone starts. The 85th percentile shows stuck work.
Work in progress: issues in In Development and In Code ReviewWhether the team is starting more than it finishes. Rising WIP usually comes before rising cycle time.
Time to first review, median and 85th percentileWhether PRs wait for attention.
Release wait: Completed to closed, and the number of Completed-but-open issuesHow long finished work waits before anyone can use it. Currently the largest part of lead time.
Net flow: issues opened minus issues closed, excluding sweepsWhether the backlog is growing.
Backlog age: share of open issues older than six monthsWhether the backlog is still a usable plan.
Quality: bugs raised and regressions per 100 merged PRs per release, bugs fixed in patches, and QA bounce-back rateWhether speed is coming at the cost of defects, and how many escape into production.
Scope change: issues added to the release milestone after the cycle starts, and issues moved outHow stable the release plan is. Bugs found in QA and new features are worth tracking separately.
Context only: merged PRs per author, median PR size, share of PRs with an AI co-authorHelps explain changes in the others. Not targets; all of them shift with working habits and tools.

Changes that would make the numbers trustworthy

Metrics to avoid

What this data can't show