Proof
We wrote down what we were going to measure, then measured it.
Anyone can publish a number. The question is whether the sample was chosen before or after somebody saw the score. Ours was chosen before, and you do not have to take our word for it: the commit that froze the sample is older than the commit that holds the results, and both are in a public repository you can clone and check with git log.
- PROTOCOL.md the protocol, written first
- sample.v4.frozen.json the frozen sample, committed before the run
- indexability.v4.json which answers were in the index at all, measured before the run
- results.v4.json the results, committed unedited afterwards
Every figure we measured is read from a committed results file at build time: this run for the headline, and the two earlier runs for the figures sections 3 and 8 keep published. None of our own results is typed into the page by hand, and a test fails the build if what you see here stops matching what those files say. Two numbers are exceptions and both say so where they appear: the comparison rates further down are quoted from published papers and linked to them.
What we measured
120 issues were selected from 8 public repositories across six languages, and 108 of them scored. Watari read each issue title and body, nothing else, and searched a single workspace holding all 8 repositories at once, 130,826 indexed chunks in total. Ground truth is the file the maintainer changed in the merged fix.
- File Match at rank 1
56.5%
61 of 108 · 95% CI 47.1% to 65.5%
The top ranked file is one the merged fix actually changed.
- File Match in the top 5
71.3%
77 of 108 · 95% CI 62.1% to 79.0%
A changed file appears somewhere in the five locations returned.
- Repository routing at rank 1
94.4%
102 of 108
Eight repositories share one workspace, so the search has to pick the right repository before it can pick a file.
- Line overlap at rank 1
46.4%
26 of 56
Its own smaller denominator: only cases whose ground-truth file is byte identical between the indexed commit and the fix, so the rest cannot be scored at line level.
- File Match at rank 1, every exclusion counted as a miss
50.8%
61 of 120 · 95% CI 42.0% to 59.6%
Twelve cases were excluded, six because the fix creates a file that cannot exist in the indexed tree and six because extraction split the issue into several bugs or none. This counts all twelve against us.
Why you can believe this one
Every case above is out-of-sample. All 8 repositories are new to this benchmark, and not one of them was examined while choosing any change we have shipped. That was not true of the previous run, and we said so at the time.
The run before last measured 57.1% (24 of 42) on the cases it had never examined, across six different repositories. This run measures 56.5% (61 of 108, 95% interval 47.1% to 65.5%) on 108 cases from eight repositories that share no case with it. Two measurements of the same claim on different data, agreeing to within a point. If they had disagreed, both would still be on this page.
The last run reported 64.3% (36 of 56) and we published it as a ceiling, because the indexing change it measured had been chosen by looking at those same cases. Out-of-sample it lands lower, which is what a ceiling means and why that figure was never the one to quote. It is not withdrawn.
The interval is the other thing that moved. Sample size is the only lever on it, and going from 56 scored cases to 108 narrows it from roughly 25 points to 18.4. It is still wide, and we would rather show you a wide interval than a point estimate without one.
What we knew before we ran it
A localizer cannot return a file it never indexed. Last time we only checked that after reading the misses, which is the wrong order: a check run afterwards can only be used to excuse them. So this time the check ran first, and its result is committed next to the frozen sample, before any case was scored. In 105 of the 108 scored cases the answer is somewhere in the index. In 3 it is not:
- filamentphp/filament#20371 package.json
- TryGhost/Ghost#27797 pnpm-workspace.yaml
- TryGhost/Ghost#29612 ghost/core/core/server/services/email-rendering/partials/email-wrapper.hbs, ghost/core/core/server/services/email-service/email-templates/partials/styles.hbs
They are scored as misses anyway, as they were in both earlier runs. Dropping them would give 58.1% (61 of 105), and that is a diagnostic we use to decide what to index next, not a result. A customer whose bug lives in a file we do not read gets a wrong answer from us, and our reason for it is not their problem.
What moved, including what moved the wrong way
This run shares no case with the previous one, so there is no like-for-like case comparison to show you. What there is instead is spread. Across 8 repositories the best scores 10 of 12 and the worst 5 of 15, on paperless-ngx/paperless-ngx. An aggregate that hides a collapsed repository is not a summary, so the per-repository split is printed under the table below and in the results file.
Repository routing is 102 of 108. Eight repositories share one workspace here, two more than last time, so picking the right repository before picking a file is a harder question than it was and the number went the right way anyway.
Twelve of the 120 selected cases are not scored. Six because the merged fix creates a file that cannot exist in the tree we indexed, and six because extraction read the issue as several bugs or none, which is a sampled model call and varies between runs. Counting all twelve as misses gives 50.8% (61 of 120), which is on this page for exactly that reason.
Every case, including the ones we got wrong
All 108 scored cases. Each row links to the public issue, shows the file Watari ranked first, and shows the file the maintainer actually changed. Per repository: element-web 7 of 13 · paperless-ngx 5 of 15 · gitea 7 of 14 · jellyfin 9 of 14 · dolphinscheduler 10 of 14 · filament 8 of 15 · Ghost 5 of 11 · langflow 10 of 12.
element-hq/element-web
| Issue | Watari returned | The fix changed | Result |
|---|---|---|---|
| #34663 | apps/web/src/components/structures/SpaceHierarchy.tsx | apps/web/src/components/structures/SpaceHierarchy.tsx | hit |
| #34720 | apps/desktop/src/tray.ts | .github/workflows/build-and-test.yaml, .github/workflows/build_desktop_windows.yaml, apps/desktop/package.json, apps/desktop/src/webcontents-handler.ts | missnot retrieved |
| #23726 | apps/web/src/components/views/dialogs/spotlight/SpotlightDialog.tsx | apps/web/src/components/views/dialogs/spotlight/Option.tsx, apps/web/src/components/views/dialogs/spotlight/SpotlightDialog.tsx, apps/web/src/i18n/strings/en_EN.json | hit |
| #33804 | apps/web/src/RoomInvite.tsx | apps/web/res/css/views/dialogs/_InviteDialog.pcss, apps/web/src/RoomInvite.tsx, apps/web/src/components/views/dialogs/InviteDialog.tsx, apps/web/src/i18n/strings/en_EN.json, apps/web/src/utils/MultiInviter.ts | hit |
| #24146 | apps/web/src/TextForEvent.tsx | apps/web/src/viewmodels/room/timeline/event-tile/TextualEventViewModel.ts | missnot retrieved |
| #34700 | apps/web/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx | apps/web/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx | hit |
| #30792 | apps/web/src/components/views/dialogs/SpacePreferencesDialog.tsx | apps/web/src/stores/room-list-v3/RoomListStoreV3.ts | missin top 5 |
| #30979 | apps/web/src/stores/room-list-v3/skip-list/filters/UnreadFilter.ts | apps/web/src/stores/room-list-v3/RoomListStoreV3.ts, apps/web/src/stores/room-list-v3/skip-list/filters/UnreadFilter.ts, apps/web/src/viewmodels/room-list/RoomListViewModel.ts | hit |
| #20372 | apps/web/src/stores/notifications/SpaceNotificationState.ts | apps/web/src/stores/notifications/RoomNotificationState.ts, apps/web/src/stores/notifications/RoomNotificationStateStore.ts, apps/web/src/stores/notifications/SpaceNotificationState.ts, apps/web/src/stores/spaces/SpaceStore.ts | hit |
| #34725 | apps/web/src/stores/CallStore.ts | apps/web/src/stores/widgets/ElementWidgetDriver.ts | missin top 5 |
| #25469 | apps/web/src/viewmodels/room-list/RoomListViewModel.ts | apps/web/src/viewmodels/room-list/RoomListViewModel.ts | hit |
| #32092 | apps/desktop/src/config.ts | apps/desktop/src/utils.ts | missnot retrieved |
| #20588 | apps/web/src/RoomNotifs.ts | apps/web/src/stores/notifications/SummarizedNotificationState.ts | missnot retrieved |
paperless-ngx/paperless-ngx
| Issue | Watari returned | The fix changed | Result |
|---|---|---|---|
| #13932 | src/paperless_mail/mail.py | src/paperless/settings/__init__.py, src/paperless_mail/mail.py | hit |
| #13931 | src/documents/signals/handlers.py | src/documents/signals/handlers.py | hit |
| #13900 | src-ui/src/app/services/document-list-view.service.ts | src-ui/src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html, src-ui/src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts | missnot retrieved |
| #13892 | src/documents/views.py | src/documents/models.py | missnot retrieved |
| #13879 | src-ui/src/app/components/document-list/document-list.component.ts | src-ui/src/app/components/common/input/drag-drop-select/drag-drop-select.component.html, src-ui/src/app/components/common/input/drag-drop-select/drag-drop-select.component.scss, src-ui/src/app/components/common/input/drag-drop-select/drag-drop-select.component.ts | missnot retrieved |
| #13864 | src-ui/src/app/components/app-frame/global-search/global-search.component.ts | src-ui/src/app/components/app-frame/global-search/global-search.component.html, src-ui/src/app/components/app-frame/global-search/global-search.component.ts | hit |
| #13844 | src/paperless_mail/models.py | src-ui/src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts, src/paperless_mail/serialisers.py | missin top 5 |
| #13836 | src-ui/src/app/components/app-frame/app-frame.component.scss | src-ui/src/app/components/app-frame/app-frame.component.scss, src-ui/src/app/components/app-frame/app-frame.component.ts | hit |
| #13824 | src/documents/serialisers.py | src-ui/src/app/components/common/input/document-link/document-link.component.html, src-ui/src/app/components/common/input/document-link/document-link.component.ts, src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.html, src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts | missnot retrieved |
| #13826 | src/documents/views.py | src-ui/src/app/components/common/input/document-link/document-link.component.html, src-ui/src/app/components/common/input/document-link/document-link.component.ts, src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.html, src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts | missin top 5 |
| #13813 | src/documents/views.py | src/documents/views.py | hit |
| #13767 | src/paperless/tests/settings/test_settings.py | src/documents/search/_backend.py | missnot retrieved |
| #13482 | src/documents/tests/search/test_translate.py | src/documents/search/_translate.py | missin top 5 |
| #13468 | dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag-save-modal.tsx | src-ui/src/app/components/common/edit-dialog/edit-dialog.component.ts | miss |
| #13456 | src/documents/bulk_edit.py | src/documents/serialisers.py | missin top 5 |
go-gitea/gitea
| Issue | Watari returned | The fix changed | Result |
|---|---|---|---|
| #39182 | modules/charset/charset.go | custom/conf/app.example.ini, modules/charset/charset.go, modules/setting/repository.go, modules/setting/setting.go, services/gitdiff/gitdiff.go | hit |
| #39065 | src/documents/tasks.py | models/actions/schedule.go, models/actions/schedule_spec.go, models/actions/schedule_spec_list.go, services/actions/notifier_helper.go, services/actions/schedule_tasks.go | missnot retrieved |
| #39137 | modules/actions/jobparser/model.go | modules/actions/jobparser/model.go | hit |
| #35968 | modules/git/languagestats/language_stats.go | modules/git/languagestats/language_stats_get.go | miss |
| #7836 | services/auth/reverseproxy.go | services/auth/auth.go, services/auth/reverseproxy.go, services/auth/sspi.go | hit |
| #39034 | services/actions/job_emitter.go | services/actions/job_emitter.go | hit |
| #38613 | services/pull/merge.go | modelmigration/migrations.go, models/actions/schedule.go | missnot retrieved |
| #38975 | web_src/js/components/WorkflowGraph.utils.ts | routers/web/devtest/mock_actions.go, web_src/js/components/WorkflowGraph.utils.ts, web_src/js/components/WorkflowGraph.vue | hit |
| #38911 | modules/setting/security.go | routers/install/install.go | missin top 5 |
| #38870 | models/organization/org.go | models/organization/org.go, routers/web/web.go | hit |
| #38950 | routers/web/misc/webtheme.go | routers/web/web.go | missin top 5 |
| #38955 | web_src/css/modules/label.css | routers/web/devtest/mock_actions.go, web_src/js/components/ActionStatusIcon.vue, web_src/js/modules/tippy.ts | missnot retrieved |
| #38925 | routers/web/user/home.go | routers/web/user/home.go | hit |
| #34342 | services/migrations/gitea_downloader.go | services/migrations/github.go | missnot retrieved |
jellyfin/jellyfin
| Issue | Watari returned | The fix changed | Result |
|---|---|---|---|
| #17683 | Jellyfin.Api/Controllers/SubtitleController.cs | Jellyfin.Api/Controllers/SubtitleController.cs | hit |
| #17751 | MediaBrowser.Controller/Entities/Folder.cs | Emby.Server.Implementations/Library/LibraryManager.cs, Jellyfin.Server.Implementations/Item/BaseItemRepository.TranslateQuery.cs, MediaBrowser.Controller/Entities/InternalItemsQuery.cs | miss |
| #17692 | Emby.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs | Jellyfin.Server.Implementations/Item/ItemCountService.cs, MediaBrowser.Controller/Entities/TV/Series.cs, src/Jellyfin.Database/Jellyfin.Database.Implementations/DescendantQueryHelper.cs | miss |
| #17672 | Jellyfin.Server.Implementations/Item/BaseItemRepository.Querying.cs | Emby.Server.Implementations/Library/UserViewManager.cs, Jellyfin.Server.Implementations/Item/BaseItemRepository.Querying.cs | hit |
| #17598 | Jellyfin.Server.Implementations/Item/LinkedChildrenService.cs | Jellyfin.Server.Implementations/Item/LinkedChildrenService.cs | hit |
| #17547 | Jellyfin.Server.Implementations/Item/BaseItemRepository.Querying.cs | Emby.Server.Implementations/Dto/DtoService.cs, Emby.Server.Implementations/Library/LibraryManager.cs, Jellyfin.Server.Implementations/Item/LinkedChildrenService.cs, MediaBrowser.Controller/Library/ILibraryManager.cs, MediaBrowser.Controller/Persistence/ILinkedChildrenService.cs | missin top 5 |
| #17259 | src/Jellyfin.LiveTv/Guide/GuideManager.cs | src/Jellyfin.LiveTv/Channels/ChannelManager.cs, src/Jellyfin.LiveTv/Guide/GuideManager.cs, src/Jellyfin.LiveTv/LiveTvChannelImageHelper.cs | hit |
| #17519 | MediaBrowser.Controller/Entities/TV/Series.cs | Emby.Server.Implementations/Library/LibraryManager.cs, MediaBrowser.Controller/Entities/BaseItem.cs, MediaBrowser.Controller/Entities/TV/Episode.cs, MediaBrowser.Controller/Entities/Video.cs | miss |
| #17485 | MediaBrowser.Controller/Entities/UserViewBuilder.cs | Jellyfin.Server.Implementations/Item/BaseItemRepository.QueryBuilding.cs, Jellyfin.Server.Implementations/Item/BaseItemRepository.Querying.cs, Jellyfin.Server.Implementations/Item/BaseItemRepository.TranslateQuery.cs, MediaBrowser.Controller/Entities/Folder.cs, MediaBrowser.Controller/Entities/UserViewBuilder.cs | hit |
| #17497 | Jellyfin.Server.Implementations/StorageHelpers/StorageHelper.cs | Jellyfin.Server.Implementations/StorageHelpers/StorageHelper.cs | hit |
| #16826 | MediaBrowser.Controller/Entities/UserViewBuilder.cs | Jellyfin.Server.Implementations/Extensions/ExpressionExtensions.cs, Jellyfin.Server.Implementations/Item/BaseItemRepository.QueryBuilding.cs, Jellyfin.Server.Implementations/Item/BaseItemRepository.TranslateQuery.cs, MediaBrowser.Controller/Entities/UserViewBuilder.cs, MediaBrowser.Controller/Persistence/IItemQueryHelpers.cs | hit |
| #17284 | MediaBrowser.Controller/Entities/UserViewBuilder.cs | Jellyfin.Server.Implementations/Extensions/ExpressionExtensions.cs, Jellyfin.Server.Implementations/Item/BaseItemRepository.QueryBuilding.cs, Jellyfin.Server.Implementations/Item/BaseItemRepository.TranslateQuery.cs, MediaBrowser.Controller/Entities/UserViewBuilder.cs, MediaBrowser.Controller/Persistence/IItemQueryHelpers.cs | hit |
| #17458 | src/Jellyfin.Database/Jellyfin.Database.Providers.Sqlite/Migrations/20260524120336_AddUniqueNormalizedUsernameIndex.cs | Jellyfin.Server/Migrations/JellyfinMigrationService.cs | missnot retrieved |
| #13980 | MediaBrowser.Providers/Plugins/AudioDb/AudioDbArtistProvider.cs | MediaBrowser.Providers/Manager/MetadataService.cs, MediaBrowser.Providers/Plugins/AudioDb/AudioDbArtistImageProvider.cs, MediaBrowser.Providers/Plugins/AudioDb/AudioDbArtistProvider.cs, MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzAlbumProvider.cs, MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzArtistProvider.cs | hit |
apache/dolphinscheduler
| Issue | Watari returned | The fix changed | Result |
|---|---|---|---|
| #18604 | dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/task/statemachine/TaskSuccessStateAction.java | dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/task/statemachine/TaskForceSuccessStateAction.java | missnot retrieved |
| #18601 | dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptSender.java | dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptSender.java, dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/AlertPluginInstanceController.java, dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/AlertPluginInstanceService.java, dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AlertPluginInstanceServiceImpl.java | hit |
| #18576 | dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/model/DependentItem.java | dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/model/DependentItem.java | hit |
| #18389 | dolphinscheduler-task-plugin/dolphinscheduler-task-datax/src/main/java/org/apache/dolphinscheduler/plugin/task/datax/DataxTask.java | dolphinscheduler-task-plugin/dolphinscheduler-task-datax/src/main/java/org/apache/dolphinscheduler/plugin/task/datax/DataxParameters.java, dolphinscheduler-task-plugin/dolphinscheduler-task-datax/src/main/java/org/apache/dolphinscheduler/plugin/task/datax/DataxTask.java, dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-datax.ts | hit |
| #18596 | dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ExecutorServiceImpl.java | dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskDefinitionServiceImpl.java, dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java, dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowInstanceServiceImpl.java | missin top 5 |
| #18582 | dolphinscheduler-authentication/dolphinscheduler-actuator-authentication/src/main/java/org/apache/dolphinscheduler/authentication/actuator/config/ActuatorAuthenticationAutoConfiguration.java | dolphinscheduler-authentication/dolphinscheduler-actuator-authentication/pom.xml, dolphinscheduler-authentication/dolphinscheduler-actuator-authentication/src/main/java/org/apache/dolphinscheduler/authentication/actuator/config/ActuatorAuthenticationAutoConfiguration.java | hit |
| #18565 | dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskDefinitionServiceImpl.java | dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskDefinitionServiceImpl.java, dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java, dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowInstanceServiceImpl.java | hit |
| #18562 | dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/FileUtils.java | dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/FileUtils.java | hit |
| #18538 | dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/task/lifecycle/event/TaskRetryLifecycleEvent.java | dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/task/lifecycle/event/TaskRetryLifecycleEvent.java | hit |
| #18540 | dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/task/execution/FailedRecoverTaskInstanceFactory.java | dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/task/execution/FailedRecoverTaskInstanceFactory.java | hit |
| #18406 | dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/WorkflowInstanceDaoImpl.java | dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/workflow/statemachine/AbstractWorkflowStateAction.java | miss |
| #18409 | dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/graph/DAG.java | dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/graph/DAG.java | hit |
| #18391 | dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/PluginDao.java | dolphinscheduler-alert/dolphinscheduler-alert-server/src/main/java/org/apache/dolphinscheduler/alert/plugin/AlertPluginManager.java, dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/PluginDao.java, dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/PluginDefineMapper.java, dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/PluginDefineMapper.xml | hit |
| #18378 | src/paperless/views.py | dolphinscheduler-storage-plugin/dolphinscheduler-storage-s3/src/main/java/org/apache/dolphinscheduler/plugin/storage/s3/S3StorageOperator.java | missin top 5 |
filamentphp/filament
| Issue | Watari returned | The fix changed | Result |
|---|---|---|---|
| #20426 | packages/support/src/View/SupportIconAlias.php | packages/support/src/View/SupportIconAlias.php | hit |
| #20371 | src-ui/src/app/components/app-frame/global-search/global-search.component.ts | package.json | missnot retrieved |
| #20374 | packages/forms/src/Components/TextInput/Actions/CopyAction.php | packages/forms/src/Components/TextInput/Actions/CopyAction.php | hit |
| #20364 | packages/schemas/src/Components/StateCasts/NumberStateCast.php | packages/forms/src/Components/TextInput.php, packages/schemas/src/Components/StateCasts/NumberStateCast.php | hit |
| #20382 | packages/query-builder/src/Constraints/NumberConstraint/Operators/Concerns/CanAggregateRelationships.php | packages/query-builder/src/Constraints/NumberConstraint/Operators/Concerns/CanAggregateRelationships.php | hit |
| #20313 | packages/forms/resources/js/components/markdown-editor.js | packages/forms/resources/js/components/markdown-editor.js | hit |
| #20262 | dolphinscheduler-ui/src/views/resource/components/resource/create/use-create.ts | packages/panels/resources/js/index.js, packages/panels/src/Resources/Pages/CreateRecord.php | miss |
| #20263 | packages/panels/src/Auth/MultiFactor/App/AppAuthentication.php | packages/panels/src/Auth/MultiFactor/App/Actions/DisableAppAuthenticationAction.php, packages/panels/src/Auth/MultiFactor/App/AppAuthentication.php | hit |
| #20286 | packages/schemas/src/Components/Concerns/CanBeRepeated.php | packages/schemas/src/Concerns/HasComponents.php | missnot retrieved |
| #20218 | web_src/css/easymde.css | packages/forms/resources/js/components/markdown-editor/EasyMDE.js | missin top 5 |
| #20219 | packages/forms/resources/js/components/markdown-editor/EasyMDE.js | packages/forms/resources/js/components/markdown-editor.js | missin top 5 |
| #20233 | packages/schemas/src/Components/Tabs.php | packages/schemas/src/Components/Tabs.php | hit |
| #20241 | packages/support/resources/js/components/modal.js | packages/actions/resources/js/components/modals.js, packages/actions/resources/views/action-modal.blade.php, packages/support/resources/js/components/modal.js, packages/support/resources/views/components/modal/index.blade.php | hit |
| #20244 | packages/panels/src/Panel/Concerns/HasComponents.php | packages/panels/src/Navigation/NavigationManager.php | missnot retrieved |
| #20231 | packages/spatie-laravel-media-library-plugin/src/Forms/Components/SpatieMediaLibraryFileUpload.php | packages/forms/src/Components/BaseFileUpload.php | missin top 5 |
TryGhost/Ghost
| Issue | Watari returned | The fix changed | Result |
|---|---|---|---|
| #30100 | ghost/core/core/server/data/schema/commands.js | ghost/core/core/server/data/schema/commands.js | hit |
| #30001 | ghost/core/core/server/services/remote-flags/remote-flags-service.ts | ghost/core/core/server/services/oembed/oembed-service.js, ghost/core/package.json, pnpm-workspace.yaml | missnot retrieved |
| #27797 | ghost/core/core/server/services/email-rendering/email-design.js | pnpm-workspace.yaml | missnot retrieved |
| #29708 | apps/comments-ui/src/components/frame.tsx | apps/comments-ui/src/components/content/forms/main-form.tsx | miss |
| #29612 | apps/admin-x-settings/src/components/settings/email/newsletters/newsletter-preview-content.tsx | ghost/core/core/server/services/email-rendering/partials/email-wrapper.hbs, ghost/core/core/server/services/email-service/email-templates/partials/styles.hbs | missnot retrieved |
| #29501 | ghost/core/core/server/services/comments/comments-service.js | ghost/core/core/server/services/comments/comments-service-emails.js, ghost/core/core/server/services/comments/comments-service.js | hit |
| #24741 | ghost/core/core/server/services/oembed/oembed-service.js | ghost/core/core/server/services/oembed/oembed-service.js | hit |
| #25772 | apps/comments-ui/src/components/content/loading.tsx | ghost/admin/app/styles/components/loading-indicator.css, ghost/admin/app/styles/components/power-select.css, ghost/admin/app/styles/layouts/editor.css | missin top 5 |
| #25735 | ghost/core/core/server/services/members/members-api/repositories/member-repository.js | ghost/core/core/server/services/members/members-api/services/member-bread-service.js | missin top 5 |
| #22115 | ghost/core/core/server/services/members/importer/members-csv-importer-stripe-utils.js | ghost/core/core/server/services/members/importer/members-csv-importer-stripe-utils.js | hit |
| #28761 | ghost/core/core/server/services/oembed/oembed-service.js | ghost/core/core/server/services/oembed/oembed-service.js | hit |
langflow-ai/langflow
| Issue | Watari returned | The fix changed | Result |
|---|---|---|---|
| #14088 | src/lfx/src/lfx/base/tools/component_tool.py | src/lfx/src/lfx/base/tools/component_tool.py | hit |
| #14731 | src/backend/tests/unit/test_memory_bases.py | src/backend/base/langflow/services/memory_base/embedding_helpers.py | missnot retrieved |
| #14602 | src/lfx/src/lfx/base/mcp/util.py | src/lfx/src/lfx/_assets/component_index.json, src/lfx/src/lfx/components/models_and_agents/mcp_component.py | missnot retrieved |
| #14356 | src/lfx/src/lfx/base/agents/events.py | src/lfx/src/lfx/base/agents/events.py | hit |
| #14152 | src/lfx/src/lfx/custom/custom_component/component.py | src/lfx/src/lfx/custom/custom_component/component.py, src/lfx/src/lfx/graph/vertex/base.py | hit |
| #14161 | src/lfx/src/lfx/base/mcp/util.py | src/lfx/src/lfx/base/mcp/util.py | hit |
| #14193 | src/lfx/src/lfx/base/mcp/util.py | src/lfx/src/lfx/base/mcp/util.py | hit |
| #14194 | src/lfx/src/lfx/components/models_and_agents/mcp_component.py | src/lfx/src/lfx/_assets/component_index.json, src/lfx/src/lfx/components/models_and_agents/mcp_component.py | hit |
| #13965 | src/backend/base/langflow/services/tracing/langfuse.py | src/backend/base/langflow/services/tracing/langfuse.py | hit |
| #13460 | src/frontend/src/components/core/playgroundComponent/chat-view/chat-messages/hooks/use-chat-history.ts | src/backend/base/langflow/api/v1/monitor.py, src/frontend/src/components/core/playgroundComponent/chat-view/chat-messages/hooks/use-chat-history.ts, src/frontend/src/components/core/playgroundComponent/chat-view/chat-messages/messages.tsx, src/frontend/src/components/core/playgroundComponent/sliding-container/components/flow-page-sliding-container.tsx | hit |
| #13827 | src/backend/base/langflow/memory.py | src/backend/base/langflow/memory.py | hit |
| #13883 | src/backend/base/langflow/api/utils/kb_helpers.py | src/backend/base/langflow/api/utils/kb_helpers.py | hit |
Feature requests, measured the same way
Watari also maps small, specific feature requests, the kind that name a change to code that already exists, and drafts a pull request for them. So we measured that too, under its own protocol written before the sample was chosen: 40 issues from 4 of the same repositories, each labelled a feature by its own maintainers, scored against the files their merged pull request changed.
On the 28 Watari judged specific enough to map, the top-ranked file was one the maintainers changed 67.9% of the time (19 of 28, 95% interval 49.3% to 82.1%), and one appeared in the top five 85.7% of the time (24 of 28). Counting every excluded or declined case as a miss gives 47.5% (19 of 40).
That is above the bug figure, and the intervals overlap, so the fair reading is that feature requests are located at least as well as bugs, not better. The sample is small and says so. One more thing it showed: 6 of the 40 were read by extraction as bugs, not feature requests. In the product those are handled as bugs, and if you disagree with that call, the Mismapped credit covers it.
results.v5.json every case, committed unedited, after sample.v5.frozen.json.
What this does not prove
This measures one step of six: finding the file. It says nothing about whether the draft pull request we write is any good, whether the tests we add are meaningful, or whether the customer-facing RCA reads well. Those can be shown and timestamped, and they are, on the walkthrough page. They cannot be scored against ground truth a third party already produced, so we do not put a number on them.
How to read 56.5% (61 of 108)
Localizing a bug from a report written by a user is much harder than from an issue written by a developer with a stack trace attached. On the two published academic benchmarks built from user-written reports, the best reported top-1 file accuracy is 41.6% on LinuxFLBench (250 real user-submitted bug reports) and 28.5% on MULocBench (1,100 issues across 46 projects). Both are quoted from those papers. They are the two figures on this page we did not measure.
One difference runs in our favour and should be said out loud: both of those hand the model the repository. We searched 8 repositories at once and had to pick the right one first, which is the routing figure above.
The earlier runs stay published
Version 1 of this protocol measured 47.1% (8 of 17) with a 95% interval of 26.2% to 69.0%. Version 2 measured 58.9% (33 of 56), 45.9% to 70.8%. Version 3 measured 64.3% (36 of 56) on the same cases as version 2 against a fuller index, and was published as a ceiling because the change it measured had been chosen by looking at those cases. None of the three is revised or withdrawn by the run above, and all their results files sit in the same public repository. A wider sample was the point of the second version, a fuller index the point of the third, and repositories nobody here had read the point of this one.