Skip to content

Commit 854d70d

Browse files
authored
Merge branch 'main' into fix/check-schema-enum-id-fp
2 parents d0aa077 + 2962779 commit 854d70d

File tree

20 files changed

+225
-368
lines changed

20 files changed

+225
-368
lines changed

field-tests/annotations/blur-my-shell.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,16 @@ findings:
1515
- id: "R-VER47-01::Clutter.Color"
1616
classification: borderline
1717
notes: "appfolders.js has ternary runtime guard (Clutter.Color ? ... : Cogl.Color), but file crashes before reaching this code due to Tweener import"
18-
# WARNs — False Positives
18+
# WARNs — Resolved False Positives (fixed 2026-03-12)
1919
- id: "resource-tracking/destroy-not-called::disable() not recognized"
20-
classification: fp
21-
notes: "63 hits — components use .disable() not .destroy() as cleanup. Resource graph only recognizes destroy()."
20+
classification: resolved
21+
notes: "63→0 hits — fixed by multi-parent ownership + Case 2 stored_as=None filter (PR #143). Finding no longer emitted."
2222
- id: "quality/constructor-resources::pipeline instances"
23-
classification: fp
24-
notes: "17 hits — mostly FP, pipeline instances managed via parent lifecycle"
23+
classification: resolved
24+
notes: "17→1 hits — fixed by src/preferences path exclusion. Remaining hit (settings.js:304) is TP, annotated separately."
2525
- id: "resource-tracking/no-destroy-method::utility classes"
26-
classification: fp
27-
notes: "10 hits — utility classes use disconnect_all(), remove() instead"
26+
classification: resolved
27+
notes: "10→0 hits — fixed by destroy_\\w+ recognition + multi-parent ownership (PR #143). Finding no longer emitted."
2828
- id: "R-SLOP-38::descriptive identifier"
2929
classification: resolved
3030
notes: "dash_not_already_destroyed is descriptive, not AI verbosity. Fixed: guard-pattern."

field-tests/annotations/gsconnect.yaml

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ findings:
4545
classification: resolved
4646
notes: "52 hits — same as above. Fixed: provenance post-filter. Finding no longer emitted."
4747
- id: "R-SLOP-24::new Gio.Settings in service/"
48-
classification: borderline
49-
notes: "20 hits — many in service/ daemon where Extension class is unavailable"
48+
classification: resolved
49+
notes: "20→8 hits — service/ excluded from R-SLOP-24 via exclude-dirs. Remaining hits in extension code are TP."
5050
- id: "quality/constructor-resources::service/ui widgets"
5151
classification: borderline
5252
notes: "28 hits — many in service/ui/ (daemon GTK widgets, not extension lifecycle)"
@@ -63,8 +63,8 @@ findings:
6363
classification: tp
6464
notes: "6 instances — needs justification comments"
6565
- id: "R-QUAL-32::unnecessary version specifier"
66-
classification: borderline
67-
notes: "7 hits — version specifiers correct for standalone daemon scripts"
66+
classification: resolved
67+
notes: "7→0 hits — service/ excluded from R-QUAL-32 via exclude-dirs. Finding no longer emitted."
6868
# Resolved in 03-08 — service/ directory exempted (PR #88)
6969
- id: "lifecycle/prototype-override::service/ exempted"
7070
classification: resolved
@@ -154,21 +154,23 @@ findings:
154154
- id: "R-SEC-03::Use HTTPS instead of HTTP for network requests"
155155
classification: borderline
156156
notes: "3 of 4 hits are HTTP URLs in comments (reference links); 1 is legitimate protocol scheme fallback in code"
157+
# Resolved by service/ exclusion (2026-03-18)
157158
- id: "R-SLOP-24::new Gio.Settings() is incorrect in GNOME 45+; use this.getSettings() from Extension base class"
158-
classification: borderline
159-
notes: "Many in service/ daemon where Extension base class is unavailable"
159+
classification: resolved
160+
notes: "Service/ findings excluded. Remaining 8 hits in extension code are TP (already counted in R-SLOP-24 annotation above)."
160161
- id: "R-SLOP-43::Underscore-prefixed export — private convention conflicts with public export"
161-
classification: borderline
162-
notes: "Exports in service/ code (_getDeviceType, _configureSocket) — internal API naming convention for daemon"
162+
classification: resolved
163+
notes: "2→0 service/ hits — excluded via exclude-dirs. Finding no longer emitted."
163164
- id: "R-QUAL-32::Unnecessary ?version= in gi:// import — this library does not require a version specifier"
164-
classification: borderline
165-
notes: "Version specifiers correct for standalone daemon scripts that need explicit versioning"
165+
classification: resolved
166+
notes: "7→0 service/ hits — excluded via exclude-dirs. Finding no longer emitted."
166167
- id: "quality/module-state::Module-level mutable state at service/nativeMessagingHost.js, service/backends/lan.js — ensure reset in both enable() and disable()"
167-
classification: borderline
168-
notes: "Both files in service/ daemon context — module state less relevant outside shell extension lifecycle"
168+
classification: resolved
169+
notes: "2→0 service/ hits — excluded from check_module_state(). Finding no longer emitted."
169170
- id: "quality/repeated-settings::20 getSettings()/Gio.Settings instances across extension files (extension.js, extension.js, shell/input.js, utils/setup.js, service/daemon.js) — store a single instance and pass via dependency injection"
170-
classification: borderline
171-
notes: "Includes service/ daemon files where Extension.getSettings() is unavailable — count inflated by daemon context"
171+
classification: resolved
172+
notes: "20→8 instances — service/ excluded from count. Superseded by updated 8-instance finding."
173+
# Remaining borderlines (service/ exclusion doesn't apply)
172174
- id: "resource-tracking/orphan-gsettings::service/manager.js — this._settings created but not cleaned up in destroy()"
173175
classification: borderline
174176
notes: "service/manager.js is daemon code — GSettings cleanup less critical in standalone process"
@@ -178,6 +180,13 @@ findings:
178180
- id: "resource-tracking/ownership::64 files scanned, depth 2, 8 orphans detected"
179181
classification: borderline
180182
notes: "Orphan count includes service/ daemon files — reduced from 13 to 8 after destroy_\\w+ recognition + multi-parent ownership + Case 2 stored_as filter"
183+
# New findings from service/ exclusion (2026-03-18) — updated detail strings
184+
- id: "quality/repeated-settings::8 getSettings()/Gio.Settings instances across extension files (extension.js, extension.js, shell/input.js, utils/setup.js) — store a single instance and pass via dependency injection"
185+
classification: tp
186+
notes: "8 instances in extension code (service/ excluded) — valid advisory for reducing redundant settings access"
187+
- id: "lifecycle/timeout-return-value::timeout_add/idle_add callback missing SOURCE_REMOVE/SOURCE_CONTINUE: shell/tooltip.js, shell/tooltip.js, service/ui/messaging.js"
188+
classification: tp
189+
notes: "Timer callbacks in shell/ should return SOURCE_REMOVE/SOURCE_CONTINUE — valid advisory"
181190

182191
# FAIL findings — True Positives
183192
- id: "license::No LICENSE or COPYING file — should use GPL-compatible license"

field-tests/annotations/hara-hachi-bu.yaml

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,11 @@ findings:
5050
classification: tp
5151
notes: "Correct advisory, deduplicated to 1 per file"
5252
- id: "metadata/shell-version-current::GNOME 49 not in shell-version"
53+
classification: resolved
54+
notes: "Extension updated to include GNOME 49/50 — finding no longer emitted"
55+
- id: "metadata/future-shell-version::shell-version '50' is newer than current stable (49)"
5356
classification: expected
54-
notes: "Intentional — GNOME 49 not yet tested"
57+
notes: "Extension declares GNOME 50 support ahead of release"
5558
- id: "quality/private-api::private API with justification"
5659
classification: tp
5760
notes: "Disclosed in metadata — correct advisory"
@@ -72,54 +75,55 @@ findings:
7275
- id: "R-DEPR-04-legacy::Not applicable for declared shell-version(s)"
7376
classification: expected
7477
notes: "Version-gated skip — not applicable for declared shell-version"
78+
# R-VER49-* and R-VER50-* — resolved (extension now declares GNOME 49/50, checks apply and PASS)
7579
- id: "R-VER49-01::Not applicable for declared shell-version(s)"
76-
classification: expected
77-
notes: "Version-gated skip — extension does not target GNOME 49"
80+
classification: resolved
81+
notes: "Extension updated to target GNOME 49 — check now applies and passes"
7882
- id: "R-VER49-02::Not applicable for declared shell-version(s)"
79-
classification: expected
80-
notes: "Version-gated skip — extension does not target GNOME 49"
83+
classification: resolved
84+
notes: "Extension updated to target GNOME 49 — check now applies and passes"
8185
- id: "R-VER49-03::Not applicable for declared shell-version(s)"
82-
classification: expected
83-
notes: "Version-gated skip — extension does not target GNOME 49"
86+
classification: resolved
87+
notes: "Extension updated to target GNOME 49 — check now applies and passes"
8488
- id: "R-VER49-04::Not applicable for declared shell-version(s)"
85-
classification: expected
86-
notes: "Version-gated skip — extension does not target GNOME 49"
89+
classification: resolved
90+
notes: "Extension updated to target GNOME 49 — check now applies and passes"
8791
- id: "R-VER49-05::Not applicable for declared shell-version(s)"
88-
classification: expected
89-
notes: "Version-gated skip — extension does not target GNOME 49"
92+
classification: resolved
93+
notes: "Extension updated to target GNOME 49 — check now applies and passes"
9094
- id: "R-VER49-06::Not applicable for declared shell-version(s)"
91-
classification: expected
92-
notes: "Version-gated skip — extension does not target GNOME 49"
95+
classification: resolved
96+
notes: "Extension updated to target GNOME 49 — check now applies and passes"
9397
- id: "R-VER49-07::Not applicable for declared shell-version(s)"
94-
classification: expected
95-
notes: "Version-gated skip — extension does not target GNOME 49"
98+
classification: resolved
99+
notes: "Extension updated to target GNOME 49 — check now applies and passes"
96100
- id: "R-VER49-08::Not applicable for declared shell-version(s)"
97-
classification: expected
98-
notes: "Version-gated skip — extension does not target GNOME 49"
101+
classification: resolved
102+
notes: "Extension updated to target GNOME 49 — check now applies and passes"
99103
- id: "R-VER49-09::Not applicable for declared shell-version(s)"
100-
classification: expected
101-
notes: "Version-gated skip — extension does not target GNOME 49"
104+
classification: resolved
105+
notes: "Extension updated to target GNOME 49 — check now applies and passes"
102106
- id: "R-VER49-10::Not applicable for declared shell-version(s)"
103-
classification: expected
104-
notes: "Version-gated skip — extension does not target GNOME 49"
107+
classification: resolved
108+
notes: "Extension updated to target GNOME 49 — check now applies and passes"
105109
- id: "R-VER49-11::Not applicable for declared shell-version(s)"
106-
classification: expected
107-
notes: "Version-gated skip — extension does not target GNOME 49"
110+
classification: resolved
111+
notes: "Extension updated to target GNOME 49 — check now applies and passes"
108112
- id: "R-VER50-01::Not applicable for declared shell-version(s)"
109-
classification: expected
110-
notes: "Version-gated skip — extension does not target GNOME 50"
113+
classification: resolved
114+
notes: "Extension updated to target GNOME 50 — check now applies and passes"
111115
- id: "R-VER50-02::Not applicable for declared shell-version(s)"
112-
classification: expected
113-
notes: "Version-gated skip — extension does not target GNOME 50"
116+
classification: resolved
117+
notes: "Extension updated to target GNOME 50 — check now applies and passes"
114118
- id: "R-VER50-03::Not applicable for declared shell-version(s)"
115-
classification: expected
116-
notes: "Version-gated skip — extension does not target GNOME 50"
119+
classification: resolved
120+
notes: "Extension updated to target GNOME 50 — check now applies and passes"
117121
- id: "R-VER50-04::Not applicable for declared shell-version(s)"
118-
classification: expected
119-
notes: "Version-gated skip — extension does not target GNOME 50"
122+
classification: resolved
123+
notes: "Extension updated to target GNOME 50 — check now applies and passes"
120124
- id: "R-VER50-05::Not applicable for declared shell-version(s)"
121-
classification: expected
122-
notes: "Version-gated skip — extension does not target GNOME 50"
125+
classification: resolved
126+
notes: "Extension updated to target GNOME 50 — check now applies and passes"
123127
# SKIP findings — static analysis limitations
124128
- id: "schema-usage/unused-key::Dynamic key access detected — cannot verify statically"
125129
classification: expected
@@ -150,8 +154,8 @@ findings:
150154
classification: expected
151155
notes: "Optional tooling — ESLint config error is an environment issue"
152156
- id: "metadata/shell-version-current::shell-version does not include GNOME 49"
153-
classification: expected
154-
notes: "Intentional — GNOME 49 not yet tested"
157+
classification: resolved
158+
notes: "Extension updated to include GNOME 49 — finding no longer emitted"
155159
- id: "quality/private-api::lib/quickSettingsPanel.js, lib/quickSettingsPanel.js, lib/quickSettingsPanel.js, lib/quickSettingsPanel.js, lib/quickSettingsPanel.js (+6 more): quickSettings private API access — requires reviewer justification and version pinning"
156160
classification: tp
157161
notes: "Private API access is real — disclosed in metadata"

field-tests/baselines/appindicator.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"name": "appindicator",
33
"uuid": "appindicatorsupport@rgcjonas.gmail.com",
4-
"timestamp": "2026-03-12T10:58:10.872002+00:00",
5-
"ego_lint_version": "1a58b06",
4+
"timestamp": "2026-03-18T20:53:15.167124+00:00",
5+
"ego_lint_version": "e74c508",
66
"ego_approved": true,
77
"exit_code": 1,
88
"counts": {

field-tests/baselines/blur-my-shell.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"name": "blur-my-shell",
33
"uuid": "blur-my-shell@aunetx",
4-
"timestamp": "2026-03-12T19:22:51.358363+00:00",
5-
"ego_lint_version": "a7e0a2c",
4+
"timestamp": "2026-03-18T20:53:17.277909+00:00",
5+
"ego_lint_version": "e74c508",
66
"ego_approved": true,
77
"exit_code": 1,
88
"counts": {

field-tests/baselines/clipboard-indicator.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"name": "clipboard-indicator",
33
"uuid": "clipboard-indicator@tudmotu.com",
4-
"timestamp": "2026-03-12T10:58:11.682237+00:00",
5-
"ego_lint_version": "1a58b06",
4+
"timestamp": "2026-03-18T20:53:15.993144+00:00",
5+
"ego_lint_version": "e74c508",
66
"ego_approved": true,
77
"exit_code": 1,
88
"counts": {

field-tests/baselines/dash-to-panel.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"name": "dash-to-panel",
33
"uuid": "dash-to-panel@jderose9.github.com",
4-
"timestamp": "2026-03-12T10:58:14.418773+00:00",
5-
"ego_lint_version": "1a58b06",
4+
"timestamp": "2026-03-18T20:53:18.848154+00:00",
5+
"ego_lint_version": "e74c508",
66
"ego_approved": true,
77
"exit_code": 1,
88
"counts": {

0 commit comments

Comments
 (0)