fix(MESHAGEN-004-2): 28 review findings across 26 files - #94
fix(MESHAGEN-004-2): 28 review findings across 26 files#94flamingo[bot] wants to merge 26 commits into
Conversation
| limitations under the License. | ||
| */ | ||
|
|
||
| #include "mac_tcc_detection.h" |
There was a problem hiding this comment.
🦩 🔴 mac_tcc_detection.c missing Apache 2.0 license header
Added the standard Apache License 2.0 block comment (Intel Corporation copyright, apache.org URL) at the top of meshcore/MacOS/mac_tcc_detection.c, before the existing #include statements, matching the header style used in other meshcore files.
🤖 Prompt for AI agents
In meshcore/MacOS/mac_tcc_detection.c around line 1, review and complete this code-review fix: mac_tcc_detection.c missing Apache 2.0 license header.
What the draft fix changed: Added the standard Apache License 2.0 block comment (Intel Corporation copyright, apache.org URL) at the top of meshcore/MacOS/mac_tcc_detection.c, before the existing #include statements, matching the header style used in other meshcore files.
Verify the change is correct and complete; do not refactor unrelated code.
fix confidence: 🟢 92 high — react 👍/👎 to teach the reviewer
| if (rc != SQLITE_OK) { | ||
| // Can't open TCC.db (no FDA) | ||
| if (db != NULL) { sqlite3_close(db); } | ||
| return TCC_PERMISSION_DENIED; |
There was a problem hiding this comment.
🦩 🟠 sqlite3_open_v2 failure path in check_screen_recording_via_tcc_db leaks the sqlite3 handle
Fixed the sqlite3 handle leak in check_screen_recording_via_tcc_db(): added if (db != NULL) { sqlite3_close(db); } before returning TCC_PERMISSION_DENIED in the rc != SQLITE_OK branch after sqlite3_open_v2(). Additionally applied the same fix to the analogous failure path in check_fda_permission(), which has the identical leak pattern on sqlite3_open_v2 failure, since it was not explicitly called out but shares the exact same risk described in the finding.
🤖 Prompt for AI agents
In meshcore/MacOS/mac_tcc_detection.c around line 84, review and complete this code-review fix: sqlite3_open_v2 failure path in check_screen_recording_via_tcc_db leaks the sqlite3 handle.
What the draft fix changed: Fixed the sqlite3 handle leak in check_screen_recording_via_tcc_db(): added `if (db != NULL) { sqlite3_close(db); }` before returning TCC_PERMISSION_DENIED in the `rc != SQLITE_OK` branch after sqlite3_open_v2(). Additionally applied the same fix to the analogous failure path in check_fda_permission(), which has the identical leak pattern on sqlite3_open_v2 failure, since it was not explicitly called out but shares the exact same risk described in the finding.
Verify the change is correct and complete; do not refactor unrelated code.
fix confidence: 🟡 85 medium — react 👍/👎 to teach the reviewer
| /*jshint node: true */ | ||
| /*jshint strict: false */ | ||
| "use strict"; | ||
|
|
There was a problem hiding this comment.
🦩 🔴 modules/_agentStatus.js is missing the required Apache 2.0 license header
Added the standard Apache License 2.0 block comment with the Intel Corporation copyright line at the top of modules/_agentStatus.js, matching the header convention used in sibling files like modules/amt-lme.js.
🤖 Prompt for AI agents
In modules/_agentStatus.js around line 1, review and complete this code-review fix: modules/_agentStatus.js is missing the required Apache 2.0 license header.
What the draft fix changed: Added the standard Apache License 2.0 block comment with the Intel Corporation copyright line at the top of modules/_agentStatus.js, matching the header convention used in sibling files like modules/amt-lme.js.
Verify the change is correct and complete; do not refactor unrelated code.
fix confidence: 🟡 88 medium — react 👍/👎 to teach the reviewer
| /*jshint node: true */ | ||
| /*jshint strict: false */ | ||
| "use strict"; | ||
|
|
There was a problem hiding this comment.
🦩 🟠 modules/_agentStatus.js lacks jshint directives and 'use strict'
Added /*jshint node: true */, /*jshint strict: false */, and "use strict"; directives immediately after the license header and before the var promise = require('promise'); line, following the established file header convention for server-side modules in this codebase.
🤖 Prompt for AI agents
In modules/_agentStatus.js around line 1, review and complete this code-review fix: modules/_agentStatus.js lacks jshint directives and 'use strict'.
What the draft fix changed: Added `/*jshint node: true */`, `/*jshint strict: false */`, and `"use strict";` directives immediately after the license header and before the `var promise = require('promise');` line, following the established file header convention for server-side modules in this codebase.
Verify the change is correct and complete; do not refactor unrelated code.
fix confidence: 🟡 60 medium — react 👍/👎 to teach the reviewer
| limitations under the License. | ||
| */ | ||
|
|
||
| /* |
There was a problem hiding this comment.
🦩 🔴 mac_plist_utils.c missing required Apache 2.0 license header
Added the standard Apache License 2.0 block comment with "Copyright 20XX Intel Corporation" at the very top of meshcore/MacOS/mac_plist_utils.c, preceding the pre-existing top-of-file descriptive comment, exactly as suggested in the finding. No other code was modified.
🤖 Prompt for AI agents
In meshcore/MacOS/mac_plist_utils.c around line 1, review and complete this code-review fix: mac_plist_utils.c missing required Apache 2.0 license header.
What the draft fix changed: Added the standard Apache License 2.0 block comment with "Copyright 20XX Intel Corporation" at the very top of meshcore/MacOS/mac_plist_utils.c, preceding the pre-existing top-of-file descriptive comment, exactly as suggested in the finding. No other code was modified.
Verify the change is correct and complete; do not refactor unrelated code.
fix confidence: 🟢 95 high — react 👍/👎 to teach the reviewer
| * limitations under the License. | ||
| */ | ||
|
|
||
| #ifndef MACHINE_ID_READER_H |
There was a problem hiding this comment.
🦩 🔴 openframe/machine_id_reader.h is missing the required Apache 2.0/Intel license header
Added the standard Apache License 2.0 block comment with Intel Corporation copyright at the top of openframe/machine_id_reader.h, before the include guard, matching the header style used across meshcore/microstack/microscript. Exact copyright year and wording were not specified in the finding, so the year (2024) and boilerplate text are inferred to match common repo conventions; a reviewer should confirm this matches the exact template used elsewhere in the project.
🤖 Prompt for AI agents
In openframe/machine_id_reader.h around line 1, review and complete this code-review fix: openframe/machine_id_reader.h is missing the required Apache 2.0/Intel license header.
What the draft fix changed: Added the standard Apache License 2.0 block comment with Intel Corporation copyright at the top of openframe/machine_id_reader.h, before the include guard, matching the header style used across meshcore/microstack/microscript. Exact copyright year and wording were not specified in the finding, so the year (2024) and boilerplate text are inferred to match common repo conventions; a reviewer should confirm this matches the exact template used elsewhere in the project.
Verify the change is correct and complete; do not refactor unrelated code.
fix confidence: 🟡 80 medium — react 👍/👎 to teach the reviewer
| @@ -1,10 +1,17 @@ | |||
| /* | |||
There was a problem hiding this comment.
🦩 🔴 mac_kvm.h has a non-standard copyright header instead of the required Apache 2.0/Intel block
Replaced the non-standard Xcode-generated placeholder header (lines 1-8, "Copyright 2011 MyCompanyName...") at the top of meshcore/KVM/MacOS/mac_kvm.h with the canonical Intel Apache License 2.0 header block, matching the style used elsewhere in meshcore/microstack/microscript. No other lines were altered.
🤖 Prompt for AI agents
In meshcore/KVM/MacOS/mac_kvm.h around line 1, review and complete this code-review fix: mac_kvm.h has a non-standard copyright header instead of the required Apache 2.0/Intel block.
What the draft fix changed: Replaced the non-standard Xcode-generated placeholder header (lines 1-8, "Copyright 2011 __MyCompanyName__...") at the top of meshcore/KVM/MacOS/mac_kvm.h with the canonical Intel Apache License 2.0 header block, matching the style used elsewhere in meshcore/microstack/microscript. No other lines were altered.
Verify the change is correct and complete; do not refactor unrelated code.
fix confidence: 🟡 70 medium — react 👍/👎 to teach the reviewer
| @@ -1,5 +1,5 @@ | |||
| /* | |||
There was a problem hiding this comment.
🦩 🔴 meshcore/MacOS/bundle_detection.h uses non-standard copyright header without Intel Corporation line
Changed the copyright line in the Apache 2.0 header comment block at the top of meshcore/MacOS/bundle_detection.h from "Copyright 2025" to "Copyright 2025 Intel Corporation", matching the canonical header convention used elsewhere in meshcore/. No other content was modified.
🤖 Prompt for AI agents
In meshcore/MacOS/bundle_detection.h around line 1, review and complete this code-review fix: meshcore/MacOS/bundle_detection.h uses non-standard copyright header without Intel Corporation line.
What the draft fix changed: Changed the copyright line in the Apache 2.0 header comment block at the top of meshcore/MacOS/bundle_detection.h from "Copyright 2025" to "Copyright 2025 Intel Corporation", matching the canonical header convention used elsewhere in meshcore/. No other content was modified.
Verify the change is correct and complete; do not refactor unrelated code.
fix confidence: 🟢 95 high — react 👍/👎 to teach the reviewer
| @@ -1,5 +1,5 @@ | |||
| /* | |||
There was a problem hiding this comment.
🦩 🔴 bundle_detection.c license header uses generic year without Intel Corporation copyright line
Changed the license header at the top of meshcore/MacOS/bundle_detection.c (line 2) from "Copyright 2025" to "Copyright 2025 Intel Corporation", aligning it with the canonical Apache 2.0 header attribution used elsewhere in meshcore/ (e.g. microstack/ILibProcessPipe.c). No other content was modified.
🤖 Prompt for AI agents
In meshcore/MacOS/bundle_detection.c around line 1, review and complete this code-review fix: bundle_detection.c license header uses generic year without Intel Corporation copyright line.
What the draft fix changed: Changed the license header at the top of `meshcore/MacOS/bundle_detection.c` (line 2) from "Copyright 2025" to "Copyright 2025 Intel Corporation", aligning it with the canonical Apache 2.0 header attribution used elsewhere in meshcore/ (e.g. microstack/ILibProcessPipe.c). No other content was modified.
Verify the change is correct and complete; do not refactor unrelated code.
fix confidence: 🟢 90 high — react 👍/👎 to teach the reviewer
| @@ -1,4 +1,18 @@ | |||
| using System; | |||
There was a problem hiding this comment.
🦩 🔴 Missing Apache 2.0 / Intel copyright header on C# WebRTC sample source file
Added the Apache License 2.0 block comment with Intel Corporation copyright at the very top of samples/webrtc/C# Sample/DebugForm.cs, preserving the original UTF-8 BOM before the license comment and keeping all subsequent using statements and code unchanged. This directly addresses the missing header finding; confidence is not higher because the exact wording/format of the license block template used elsewhere in the repo was not available to match verbatim.
🤖 Prompt for AI agents
In samples/webrtc/C# Sample/DebugForm.cs around line 1, review and complete this code-review fix: Missing Apache 2.0 / Intel copyright header on C# WebRTC sample source file.
What the draft fix changed: Added the Apache License 2.0 block comment with Intel Corporation copyright at the very top of `samples/webrtc/C# Sample/DebugForm.cs`, preserving the original UTF-8 BOM before the license comment and keeping all subsequent `using` statements and code unchanged. This directly addresses the missing header finding; confidence is not higher because the exact wording/format of the license block template used elsewhere in the repo was not available to match verbatim.
Verify the change is correct and complete; do not refactor unrelated code.
fix confidence: 🟡 75 medium — react 👍/👎 to teach the reviewer
| limitations under the License. | ||
| */ | ||
|
|
||
| #include "mac_tcc_detection.h" |
There was a problem hiding this comment.
🦩 🔴 mac_tcc_detection.c missing Apache 2.0 license header
Added the standard Apache License 2.0 block comment (Intel Corporation copyright, apache.org URL) at the top of meshcore/MacOS/mac_tcc_detection.c, before the existing #include statements, matching the header style used in other meshcore files.
🤖 Prompt for AI agents
In meshcore/MacOS/mac_tcc_detection.c around line 1, review and complete this code-review fix: mac_tcc_detection.c missing Apache 2.0 license header.
What the draft fix changed: Added the standard Apache License 2.0 block comment (Intel Corporation copyright, apache.org URL) at the top of meshcore/MacOS/mac_tcc_detection.c, before the existing #include statements, matching the header style used in other meshcore files.
Verify the change is correct and complete; do not refactor unrelated code.
fix confidence: 🟢 92 high — react 👍/👎 to teach the reviewer
| if (rc != SQLITE_OK) { | ||
| // Can't open TCC.db (no FDA) | ||
| if (db != NULL) { sqlite3_close(db); } | ||
| return TCC_PERMISSION_DENIED; |
There was a problem hiding this comment.
🦩 🟠 sqlite3_open_v2 failure path in check_screen_recording_via_tcc_db leaks the sqlite3 handle
Fixed the sqlite3 handle leak in check_screen_recording_via_tcc_db(): added if (db != NULL) { sqlite3_close(db); } before returning TCC_PERMISSION_DENIED in the rc != SQLITE_OK branch after sqlite3_open_v2(). Additionally applied the same fix to the analogous failure path in check_fda_permission(), which has the identical leak pattern on sqlite3_open_v2 failure, since it was not explicitly called out but shares the exact same risk described in the finding.
🤖 Prompt for AI agents
In meshcore/MacOS/mac_tcc_detection.c around line 84, review and complete this code-review fix: sqlite3_open_v2 failure path in check_screen_recording_via_tcc_db leaks the sqlite3 handle.
What the draft fix changed: Fixed the sqlite3 handle leak in check_screen_recording_via_tcc_db(): added `if (db != NULL) { sqlite3_close(db); }` before returning TCC_PERMISSION_DENIED in the `rc != SQLITE_OK` branch after sqlite3_open_v2(). Additionally applied the same fix to the analogous failure path in check_fda_permission(), which has the identical leak pattern on sqlite3_open_v2 failure, since it was not explicitly called out but shares the exact same risk described in the finding.
Verify the change is correct and complete; do not refactor unrelated code.
fix confidence: 🟡 85 medium — react 👍/👎 to teach the reviewer
| /*jshint node: true */ | ||
| /*jshint strict: false */ | ||
| "use strict"; | ||
|
|
There was a problem hiding this comment.
🦩 🔴 modules/_agentStatus.js is missing the required Apache 2.0 license header
Added the standard Apache License 2.0 block comment with the Intel Corporation copyright line at the top of modules/_agentStatus.js, matching the header convention used in sibling files like modules/amt-lme.js.
🤖 Prompt for AI agents
In modules/_agentStatus.js around line 1, review and complete this code-review fix: modules/_agentStatus.js is missing the required Apache 2.0 license header.
What the draft fix changed: Added the standard Apache License 2.0 block comment with the Intel Corporation copyright line at the top of modules/_agentStatus.js, matching the header convention used in sibling files like modules/amt-lme.js.
Verify the change is correct and complete; do not refactor unrelated code.
fix confidence: 🟡 88 medium — react 👍/👎 to teach the reviewer
| /*jshint node: true */ | ||
| /*jshint strict: false */ | ||
| "use strict"; | ||
|
|
There was a problem hiding this comment.
🦩 🟠 modules/_agentStatus.js lacks jshint directives and 'use strict'
Added /*jshint node: true */, /*jshint strict: false */, and "use strict"; directives immediately after the license header and before the var promise = require('promise'); line, following the established file header convention for server-side modules in this codebase.
🤖 Prompt for AI agents
In modules/_agentStatus.js around line 1, review and complete this code-review fix: modules/_agentStatus.js lacks jshint directives and 'use strict'.
What the draft fix changed: Added `/*jshint node: true */`, `/*jshint strict: false */`, and `"use strict";` directives immediately after the license header and before the `var promise = require('promise');` line, following the established file header convention for server-side modules in this codebase.
Verify the change is correct and complete; do not refactor unrelated code.
fix confidence: 🟡 60 medium — react 👍/👎 to teach the reviewer
| limitations under the License. | ||
| */ | ||
|
|
||
| /* |
There was a problem hiding this comment.
🦩 🔴 mac_plist_utils.c missing required Apache 2.0 license header
Added the standard Apache License 2.0 block comment with "Copyright 20XX Intel Corporation" at the very top of meshcore/MacOS/mac_plist_utils.c, preceding the pre-existing top-of-file descriptive comment, exactly as suggested in the finding. No other code was modified.
🤖 Prompt for AI agents
In meshcore/MacOS/mac_plist_utils.c around line 1, review and complete this code-review fix: mac_plist_utils.c missing required Apache 2.0 license header.
What the draft fix changed: Added the standard Apache License 2.0 block comment with "Copyright 20XX Intel Corporation" at the very top of meshcore/MacOS/mac_plist_utils.c, preceding the pre-existing top-of-file descriptive comment, exactly as suggested in the finding. No other code was modified.
Verify the change is correct and complete; do not refactor unrelated code.
fix confidence: 🟢 95 high — react 👍/👎 to teach the reviewer
| * limitations under the License. | ||
| */ | ||
|
|
||
| #ifndef MACHINE_ID_READER_H |
There was a problem hiding this comment.
🦩 🔴 openframe/machine_id_reader.h is missing the required Apache 2.0/Intel license header
Added the standard Apache License 2.0 block comment with Intel Corporation copyright at the top of openframe/machine_id_reader.h, before the include guard, matching the header style used across meshcore/microstack/microscript. Exact copyright year and wording were not specified in the finding, so the year (2024) and boilerplate text are inferred to match common repo conventions; a reviewer should confirm this matches the exact template used elsewhere in the project.
🤖 Prompt for AI agents
In openframe/machine_id_reader.h around line 1, review and complete this code-review fix: openframe/machine_id_reader.h is missing the required Apache 2.0/Intel license header.
What the draft fix changed: Added the standard Apache License 2.0 block comment with Intel Corporation copyright at the top of openframe/machine_id_reader.h, before the include guard, matching the header style used across meshcore/microstack/microscript. Exact copyright year and wording were not specified in the finding, so the year (2024) and boilerplate text are inferred to match common repo conventions; a reviewer should confirm this matches the exact template used elsewhere in the project.
Verify the change is correct and complete; do not refactor unrelated code.
fix confidence: 🟡 80 medium — react 👍/👎 to teach the reviewer
| @@ -1,10 +1,17 @@ | |||
| /* | |||
There was a problem hiding this comment.
🦩 🔴 mac_kvm.h has a non-standard copyright header instead of the required Apache 2.0/Intel block
Replaced the non-standard Xcode-generated placeholder header (lines 1-8, "Copyright 2011 MyCompanyName...") at the top of meshcore/KVM/MacOS/mac_kvm.h with the canonical Intel Apache License 2.0 header block, matching the style used elsewhere in meshcore/microstack/microscript. No other lines were altered.
🤖 Prompt for AI agents
In meshcore/KVM/MacOS/mac_kvm.h around line 1, review and complete this code-review fix: mac_kvm.h has a non-standard copyright header instead of the required Apache 2.0/Intel block.
What the draft fix changed: Replaced the non-standard Xcode-generated placeholder header (lines 1-8, "Copyright 2011 __MyCompanyName__...") at the top of meshcore/KVM/MacOS/mac_kvm.h with the canonical Intel Apache License 2.0 header block, matching the style used elsewhere in meshcore/microstack/microscript. No other lines were altered.
Verify the change is correct and complete; do not refactor unrelated code.
fix confidence: 🟡 70 medium — react 👍/👎 to teach the reviewer
| @@ -1,5 +1,5 @@ | |||
| /* | |||
There was a problem hiding this comment.
🦩 🔴 meshcore/MacOS/bundle_detection.h uses non-standard copyright header without Intel Corporation line
Changed the copyright line in the Apache 2.0 header comment block at the top of meshcore/MacOS/bundle_detection.h from "Copyright 2025" to "Copyright 2025 Intel Corporation", matching the canonical header convention used elsewhere in meshcore/. No other content was modified.
🤖 Prompt for AI agents
In meshcore/MacOS/bundle_detection.h around line 1, review and complete this code-review fix: meshcore/MacOS/bundle_detection.h uses non-standard copyright header without Intel Corporation line.
What the draft fix changed: Changed the copyright line in the Apache 2.0 header comment block at the top of meshcore/MacOS/bundle_detection.h from "Copyright 2025" to "Copyright 2025 Intel Corporation", matching the canonical header convention used elsewhere in meshcore/. No other content was modified.
Verify the change is correct and complete; do not refactor unrelated code.
fix confidence: 🟢 95 high — react 👍/👎 to teach the reviewer
| @@ -1,5 +1,5 @@ | |||
| /* | |||
There was a problem hiding this comment.
🦩 🔴 bundle_detection.c license header uses generic year without Intel Corporation copyright line
Changed the license header at the top of meshcore/MacOS/bundle_detection.c (line 2) from "Copyright 2025" to "Copyright 2025 Intel Corporation", aligning it with the canonical Apache 2.0 header attribution used elsewhere in meshcore/ (e.g. microstack/ILibProcessPipe.c). No other content was modified.
🤖 Prompt for AI agents
In meshcore/MacOS/bundle_detection.c around line 1, review and complete this code-review fix: bundle_detection.c license header uses generic year without Intel Corporation copyright line.
What the draft fix changed: Changed the license header at the top of `meshcore/MacOS/bundle_detection.c` (line 2) from "Copyright 2025" to "Copyright 2025 Intel Corporation", aligning it with the canonical Apache 2.0 header attribution used elsewhere in meshcore/ (e.g. microstack/ILibProcessPipe.c). No other content was modified.
Verify the change is correct and complete; do not refactor unrelated code.
fix confidence: 🟢 90 high — react 👍/👎 to teach the reviewer
| @@ -1,4 +1,18 @@ | |||
| using System; | |||
There was a problem hiding this comment.
🦩 🔴 Missing Apache 2.0 / Intel copyright header on C# WebRTC sample source file
Added the Apache License 2.0 block comment with Intel Corporation copyright at the very top of samples/webrtc/C# Sample/DebugForm.cs, preserving the original UTF-8 BOM before the license comment and keeping all subsequent using statements and code unchanged. This directly addresses the missing header finding; confidence is not higher because the exact wording/format of the license block template used elsewhere in the repo was not available to match verbatim.
🤖 Prompt for AI agents
In samples/webrtc/C# Sample/DebugForm.cs around line 1, review and complete this code-review fix: Missing Apache 2.0 / Intel copyright header on C# WebRTC sample source file.
What the draft fix changed: Added the Apache License 2.0 block comment with Intel Corporation copyright at the very top of `samples/webrtc/C# Sample/DebugForm.cs`, preserving the original UTF-8 BOM before the license comment and keeping all subsequent `using` statements and code unchanged. This directly addresses the missing header finding; confidence is not higher because the exact wording/format of the license block template used elsewhere in the repo was not available to match verbatim.
Verify the change is correct and complete; do not refactor unrelated code.
fix confidence: 🟡 75 medium — react 👍/👎 to teach the reviewer
Closes 28 review findings across 26 files.
Draft — this is a starting point, not a finished change. The fix required judgment, so read it before trusting it.
meshcore/MacOS/mac_tcc_detection.c:1meshcore/MacOS/mac_tcc_detection.c:84modules/_agentStatus.js:1modules/_agentStatus.js:1meshcore/MacOS/mac_plist_utils.c:1modules/lme_heci.js:1meshcore/MacOS/mac_plist_utils.h:1meshcore/MacOS/TCC_UI/test_window.c:1meshcore/KVM/MacOS/mac_kvm_auth.h:1meshcore/KVM/MacOS/mac_tile.c:1meshcore/MacOS/Install_UI/mac_authorized_install.h:1meshcore/MacOS/Install_UI/mac_install_window.h:1meshcore/MacOS/mac_logging_utils.h:1meshcore/MacOS/mac_tcc_detection.h:1meshcore/MacOS/TCC_UI/mac_permissions_window.h:1modules/PostBuild.js:1meshcore/KVM/MacOS/mac_events.c:1meshcore/KVM/MacOS/mac_kvm_auth.c:1meshcore/KVM/MacOS/mac_tile.h:1meshcore/MacOS/mac_logging_utils.c:1meshreset/targetver.h:1openframe/token_extractor.h:1meshcore/KVM/MacOS/mac_events.h:1openframe/machine_id_reader.h:1meshcore/KVM/MacOS/mac_kvm.h:1meshcore/MacOS/bundle_detection.h:1meshcore/MacOS/bundle_detection.c:1samples/webrtc/C# Sample/DebugForm.cs:1What changed — and what was deliberately left — is explained per finding as inline review comments on the lines each finding touched.
Run: https://product-hub.flamingo.so/admin/code-review
Run id:
36292efa-450d-4316-bb92-99897b2455bdMerging this PR is recorded as acceptance of the rule that produced it;
closing it unmerged is recorded as rejection. Both feed rule health, so
closing a wrong suggestion is useful rather than merely tidy.