Kaynağa Gözat

regenerate graph: 468 nodes, 1112 edges, 28 communities

Picks up the device-selection work, the read-back parameters and the
README/AGENTS.md split. Community labels remain hub-derived filenames because
`graphify label` needs GEMINI_API_KEY or GOOGLE_API_KEY, neither of which is
set here; traversal and queries work, navigation by community name does not.
Paul Klumpp 1 hafta önce
ebeveyn
işleme
664037b653

+ 1 - 1
graphify-out/.graphify_labels.json

@@ -14,6 +14,7 @@
   "12": "netdome.biz/paul/qmk-rgb",
   "13": "Agent Guidelines — QMK RGB Tool",
   "14": "QMK RGB Tool",
+  "15": "profile_list_test.go",
   "16": "/qmk-rgb",
   "18": "Wobkey RGB CLI — Implementation Plan",
   "19": "graphify reference: extra exports and benchmark",
@@ -21,7 +22,6 @@
   "21": "graphify reference: add a URL and watch a folder",
   "22": "graphify reference: commit hook and native CLAUDE.md integration",
   "23": "graphify reference: incremental update and cluster-only",
-  "24": "fakeTransport",
   "25": "graphify reference: GitHub clone and cross-repo merge",
   "26": "graphify reference: transcribe video and audio",
   "27": "CLAUDE.md",

+ 1 - 1
graphify-out/.graphify_labels.json.sig

@@ -1 +1 @@
-{"0": "c878defc3e224436", "1": "78b20a7c9e37df5a", "2": "fa99395a3c204419", "3": "1daaad7c8e39d7d3", "4": "590768dab907717e", "5": "abbaee29b2af8766", "6": "b21b6a9136af71fb", "7": "62ad613386e8444e", "8": "aa9d19daf8ddca00", "9": "8442965ea1d80930", "10": "d71acd1404975569", "11": "72bfef5ec64c0453", "12": "b02bb4f6a81f508d", "13": "cd7493335516328f", "14": "b2c5b9e711ad4492", "16": "dd6301fddcde8ab6", "18": "90bf6b690d2e10c9", "19": "c4abf0eb38ef740d", "20": "75efc6457f7fce22", "21": "be62daa7d5bc336a", "22": "47c3e1a9d4bb7e67", "23": "82ff39c105ae3090", "24": "4e14c482a212286a", "25": "54f53e5e0cc8c385", "26": "821696b1ff49347b", "27": "6e7b82d0387bf16d", "28": "2eef246ebb269184", "29": "f5edd0761d024ff0"}
+{"0": "5eb2aee84ae41281", "1": "55cd28c722b74dd2", "2": "36064429c53b3c7b", "3": "d3cb1ed145106986", "4": "590768dab907717e", "5": "ff52ca60688da8f3", "6": "11d9edfc3cac9a3a", "7": "62ad613386e8444e", "8": "6e5ececc80511dd7", "9": "8442965ea1d80930", "10": "d71acd1404975569", "11": "72bfef5ec64c0453", "12": "b02bb4f6a81f508d", "13": "0d6a073c9d58dc6a", "14": "b2c5b9e711ad4492", "15": "408fe73755518abb", "16": "dd6301fddcde8ab6", "18": "90bf6b690d2e10c9", "19": "c4abf0eb38ef740d", "20": "75efc6457f7fce22", "21": "be62daa7d5bc336a", "22": "47c3e1a9d4bb7e67", "23": "82ff39c105ae3090", "25": "54f53e5e0cc8c385", "26": "821696b1ff49347b", "27": "6e7b82d0387bf16d", "28": "2eef246ebb269184", "29": "f5edd0761d024ff0"}

+ 40 - 36
graphify-out/GRAPH_REPORT.md

@@ -1,17 +1,17 @@
 # Graph Report - qmk-rgb  (2026-09-27)
 
 ## Corpus Check
-- 61 files · ~32,479 words
+- 63 files · ~33,138 words
 - Verdict: corpus is large enough that graph structure adds value.
 - Unclassified: 3 file(s) not represented in the graph (top: (none) 3)
 
 ## Summary
-- 462 nodes · 1094 edges · 28 communities (20 shown, 8 thin omitted)
-- Extraction: 87% EXTRACTED · 13% INFERRED · 0% AMBIGUOUS · INFERRED: 141 edges (avg confidence: 0.85)
+- 468 nodes · 1112 edges · 28 communities (21 shown, 7 thin omitted)
+- Extraction: 87% EXTRACTED · 13% INFERRED · 0% AMBIGUOUS · INFERRED: 142 edges (avg confidence: 0.85)
 - Token cost: 0 input · 0 output
 
 ## Graph Freshness
-- Built from commit: `2be46d6b`
+- Built from commit: `407d52b7`
 - Run `git rev-parse HEAD` and compare to check if the graph is stale.
 - Run `graphify update .` after code changes (no API cost).
 
@@ -31,6 +31,7 @@
 - netdome.biz/paul/qmk-rgb
 - Agent Guidelines — QMK RGB Tool
 - QMK RGB Tool
+- profile_list_test.go
 - /qmk-rgb
 - Wobkey RGB CLI — Implementation Plan
 - graphify reference: extra exports and benchmark
@@ -38,7 +39,6 @@
 - graphify reference: add a URL and watch a folder
 - graphify reference: commit hook and native CLAUDE.md integration
 - graphify reference: incremental update and cluster-only
-- fakeTransport
 - graphify reference: GitHub clone and cross-repo merge
 - graphify reference: transcribe video and audio
 - CLAUDE.md
@@ -52,63 +52,63 @@
 4. `AllZones()` - 17 edges
 5. `ResolveEffect()` - 15 edges
 6. `QMK RGB Tool` - 15 edges
-7. `Agent Guidelines — QMK RGB Tool` - 14 edges
-8. `init()` - 13 edges
-9. `NewBrightnessCmd()` - 12 edges
-10. `OpenDevice()` - 12 edges
+7. `init()` - 13 edges
+8. `NewBrightnessCmd()` - 12 edges
+9. `OpenDevice()` - 12 edges
+10. `selectDevice()` - 12 edges
 
 ## Surprising Connections (you probably didn't know these)
-- `deviceInfoOutput` --references--> `Device`  [EXTRACTED]
-  cmd/qmk-rgb-tool/keyboard_info_test.go → internal/device/device.go
 - `runBrightness()` --references--> `LEDType`  [EXTRACTED]
   cmd/qmk-rgb-tool/brightness_summary_test.go → internal/via/protocol.go
+- `appliedFor()` --references--> `LEDType`  [EXTRACTED]
+  cmd/qmk-rgb-tool/brightness_verify_test.go → internal/via/protocol.go
 - `TestSetBrightnessVerifiedReadsBackEveryZone()` --calls--> `AllZones()`  [EXTRACTED]
   cmd/qmk-rgb-tool/brightness_verify_test.go → internal/rgb/impact80.go
 - `NewColorCmd()` --calls--> `ParseHexColor()`  [EXTRACTED]
   cmd/qmk-rgb-tool/color.go → internal/rgb/effects.go
-- `resolveEffectTargets()` --references--> `Zone`  [EXTRACTED]
-  cmd/qmk-rgb-tool/effect.go → internal/rgb/impact80.go
+- `TestSelectedChannelStopsOnFirstError()` --calls--> `AllZones()`  [EXTRACTED]
+  cmd/qmk-rgb-tool/commands_test.go → internal/rgb/impact80.go
 
 ## Import Cycles
 - None detected.
 
-## Communities (28 total, 8 thin omitted)
+## Communities (28 total, 7 thin omitted)
 
 ### Community 0 - "device.go"
-Cohesion: 0.13
-Nodes (30): formatDeviceList(), selectDevice(), testDevices(), TestFormatDeviceList(), TestSelectDeviceByIndex(), TestSelectDeviceEmptySelectorRejectsMultiple(), TestSelectDeviceEmptySelectorRejectsNone(), TestSelectDeviceEmptySelectorRequiresSingle() (+22 more)
+Cohesion: 0.10
+Nodes (38): runRealKeyboardInfo(), stubDiscovery(), TestKeyboardInfoEmitsEmptyArrayNotNull(), TestKeyboardInfoEmitsIndentedJSON(), TestKeyboardInfoPropagatesDiscoveryError(), TestKeyboardInfoWritesOnlyJSON(), formatDeviceList(), selectDevice() (+30 more)
 
 ### Community 1 - "impact80.go"
-Cohesion: 0.09
-Nodes (37): TestSelectedChannelStopsOnFirstError(), listAllEffects(), NewEffectCmd(), resolveEffectTargets(), runEffectSet(), executeEffectCommand(), TestEffectCommandRejectsBeforeOpeningProtocol(), TestEffectCommandSuppressesSuccessAfterLaterWriteFailure() (+29 more)
+Cohesion: 0.10
+Nodes (35): listAllEffects(), NewEffectCmd(), resolveEffectTargets(), runEffectSet(), executeEffectCommand(), TestEffectCommandRejectsBeforeOpeningProtocol(), TestEffectCommandSuppressesSuccessAfterLaterWriteFailure(), TestEffectCommandWarnsForSkippedZones() (+27 more)
 
 ### Community 2 - "LEDType"
 Cohesion: 0.10
-Nodes (12): appliedFor(), TestBrightnessCommandStaysQuietWhenApplied(), TestSetBrightnessVerifiedReadsBackEveryZone(), LEDType, Protocol, commandReport, fakeInfoProtocol, fakeZoneProtocol (+4 more)
+Nodes (11): TestSelectedChannelStopsOnFirstError(), LEDType, Protocol, New(), commandReport, fakeInfoProtocol, fakeZoneProtocol, infoKey (+3 more)
 
 ### Community 3 - "Zone"
-Cohesion: 0.18
-Nodes (23): TestSetBrightnessVerifiedPropagatesReadError(), TestSetBrightnessVerifiedReportsAppliedValue(), TestSelectedChannelOperations(), anyMismatch(), disableLightingOnZones(), enableLightingOnZones(), forEachSelectedZone(), setBrightnessOnZones() (+15 more)
+Cohesion: 0.21
+Nodes (20): TestSelectedChannelOperations(), anyMismatch(), disableLightingOnZones(), enableLightingOnZones(), forEachSelectedZone(), setBrightnessOnZones(), setBrightnessVerified(), setColorOnZones() (+12 more)
 
 ### Community 4 - "profile.go"
 Cohesion: 0.10
 Nodes (39): TestOneArgCommandsKeepTheirArity(), TestZeroArgCommandsAcceptNoArgs(), TestZeroArgCommandsRejectStrayTokens(), NewBrightnessCmd(), NewColorCmd(), NewDisableCmd(), NewEnableCmd(), NewInfoCmd() (+31 more)
 
 ### Community 5 - "hid.go"
-Cohesion: 0.17
-Nodes (13): go_pkg_github_com_sstallion_go_hid, go_pkg_sync, go_pkg_time, Device, DeviceInfo, DevicesInfo, DiscoverAll(), ensureInit() (+5 more)
+Cohesion: 0.18
+Nodes (12): go_pkg_github_com_sstallion_go_hid, go_pkg_sync, go_pkg_time, Device, DeviceInfo, DevicesInfo, DiscoverAll(), ensureInit() (+4 more)
 
 ### Community 6 - "effects.go"
-Cohesion: 0.13
-Nodes (18): sameZones(), TestFilterZonesDoesNotAddMissingZones(), TestFilterZonesDoesNotMutateInput(), TestFilterZonesKeepsOnlyTheSelection(), filterZones(), go_pkg_math, go_pkg_strconv, ParseEffect() (+10 more)
+Cohesion: 0.19
+Nodes (12): sameZones(), TestFilterZonesDoesNotAddMissingZones(), TestFilterZonesDoesNotMutateInput(), TestFilterZonesKeepsOnlyTheSelection(), filterZones(), go_pkg_math, ParseEffect(), ParseHexColor() (+4 more)
 
 ### Community 7 - "What You Must Do When Invoked"
 Cohesion: 0.08
 Nodes (24): For /graphify add and --watch, For /graphify query, For the commit hook and native CLAUDE.md integration, For --update and --cluster-only, /graphify, Honesty Rules, Interpreter guard for subcommands, Part A - Structural extraction for code files (+16 more)
 
 ### Community 8 - "testing.T"
-Cohesion: 0.07
-Nodes (55): runBrightness(), TestBrightnessReportsPlainMessageWhenAllZonesMatch(), TestBrightnessSummarisesAppliedValuesOnMismatch(), TestBrightnessSummarisesASingleMismatchingZone(), TestBrightnessSummaryNamesOnlySelectedZones(), TestDeviceFlagUsageDescribesANumberNotAPath(), TestFlagUsageHasNoValuePlaceholder(), TestZoneFlagUsageListsEveryZone() (+47 more)
+Cohesion: 0.06
+Nodes (60): TestAgentsDocDoesNotDuplicateTheCommandTable(), TestAgentsDocDoesNotDuplicateTheEffectCatalog(), TestAgentsDocTellsAgentsToReadTheReadme(), runBrightness(), TestBrightnessReportsPlainMessageWhenAllZonesMatch(), TestBrightnessSummarisesAppliedValuesOnMismatch(), TestBrightnessSummarisesASingleMismatchingZone(), TestBrightnessSummaryNamesOnlySelectedZones() (+52 more)
 
 ### Community 9 - "info.go"
 Cohesion: 0.36
@@ -119,13 +119,17 @@ Cohesion: 0.40
 Nodes (3): IMPORTANT: keep the reminder string free of backticks and $(...) constructs., ref_fs, ref_path
 
 ### Community 13 - "Agent Guidelines — QMK RGB Tool"
-Cohesion: 0.09
-Nodes (22): Agent Guidelines — QMK RGB Tool, Architecture, CLI Interface, Code vs Documentation, Concurrency, Consistency, Constraints, Device Selection (+14 more)
+Cohesion: 0.10
+Nodes (19): Agent Guidelines — QMK RGB Tool, Architecture, Code vs Documentation, Concurrency, Consistency, Constraints, Device Selection, Error Handling (+11 more)
 
 ### Community 14 - "QMK RGB Tool"
 Cohesion: 0.10
 Nodes (20): Architecture, Brightness and Speed Are Not Applied Verbatim, CLI Reference, Compatibility Aliases, Effect Behavior, Features, Impact 80 Zones and Effects, Installation (+12 more)
 
+### Community 15 - "profile_list_test.go"
+Cohesion: 0.46
+Nodes (7): runProfileList(), TestProfileListEmitsJSONWithoutProfiles(), TestProfileListEmitsJSONWithProfiles(), TestProfileListUsesTheSharedJSONShape(), withProfilesDir(), go_pkg_path_filepath, profileListOutput
+
 ### Community 16 - "/qmk-rgb"
 Cohesion: 0.15
 Nodes (12): 1. First, get the tool's own help, 2. If the tool is not built or no keyboard is connected, 3. When a user wants to change something, 4. Profiles, Compatibility aliases, How to answer, Known limitations, /qmk-rgb (+4 more)
@@ -155,9 +159,9 @@ Cohesion: 0.50
 Nodes (3): For --cluster-only, For --update (incremental re-extraction), graphify reference: incremental update and cluster-only
 
 ## Knowledge Gaps
-- **101 isolated node(s):** `$schema`, `plugin`, `profileListOutput`, `netdome.biz/paul/qmk-rgb`, `LEDParam` (+96 more)
-  These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 145 node(s) total have ≤1 connection when file, concept and rationale nodes are included.)
-- **8 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
+- **99 isolated node(s):** `$schema`, `plugin`, `profileListOutput`, `netdome.biz/paul/qmk-rgb`, `LEDParam` (+94 more)
+  These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 144 node(s) total have ≤1 connection when file, concept and rationale nodes are included.)
+- **7 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
 
 ## Suggested Questions
 _Questions this graph is uniquely positioned to answer:_
@@ -165,14 +169,14 @@ _Questions this graph is uniquely positioned to answer:_
 - **Why does `LEDType` connect `LEDType` to `impact80.go`, `Zone`, `profile.go`, `testing.T`, `info.go`?**
   _High betweenness centrality (0.049) - this node is a cross-community bridge._
 - **Why does `Zone` connect `Zone` to `impact80.go`, `profile.go`, `info.go`, `effects.go`?**
-  _High betweenness centrality (0.023) - this node is a cross-community bridge._
+  _High betweenness centrality (0.022) - this node is a cross-community bridge._
 - **Are the 3 inferred relationships involving `Zone` (e.g. with `TestImpact80DefaultEffects()` and `TestImpact80LogoAndSideCatalog()`) actually correct?**
   _`Zone` has 3 INFERRED edges - model-reasoned connections that need verification._
 - **Are the 18 inferred relationships involving `selectedZones()` (e.g. with `NewBrightnessCmd()` and `NewColorCmd()`) actually correct?**
   _`selectedZones()` has 18 INFERRED edges - model-reasoned connections that need verification._
 - **What connects `$schema`, `plugin`, `profileListOutput` to the rest of the system?**
-  _101 weakly-connected nodes found - possible documentation gaps or missing edges._
+  _99 weakly-connected nodes found - possible documentation gaps or missing edges._
 - **Should `device.go` be split into smaller, more focused modules?**
-  _Cohesion score 0.1265597147950089 - nodes in this community are weakly interconnected._
+  _Cohesion score 0.10077519379844961 - nodes in this community are weakly interconnected._
 - **Should `impact80.go` be split into smaller, more focused modules?**
-  _Cohesion score 0.09292929292929293 - nodes in this community are weakly interconnected._
+  _Cohesion score 0.09872241579558652 - nodes in this community are weakly interconnected._

Dosya farkı çok büyük olduğundan ihmal edildi
+ 1 - 1
graphify-out/graph.html


Dosya farkı çok büyük olduğundan ihmal edildi
+ 380 - 416
graphify-out/graph.json


+ 24 - 12
graphify-out/manifest.json

@@ -132,9 +132,9 @@
     "semantic_hash": "9378bd03d56baaf78bd738ab3848f142"
   },
   "AGENTS.md": {
-    "mtime": 1790471452.5969622,
-    "seen": 1790471472.089728,
-    "ast_hash": "64a93e6fa8c06aa6e7666a37a7a1bb72",
+    "mtime": 1790471967.3238008,
+    "seen": 1790471972.4078772,
+    "ast_hash": "392557a8500cd51c3141a11e69ba7cc3",
     "semantic_hash": ""
   },
   "CLAUDE.md": {
@@ -150,9 +150,9 @@
     "semantic_hash": ""
   },
   "README.md": {
-    "mtime": 1790471447.482427,
-    "seen": 1790471472.0897298,
-    "ast_hash": "5409519aebd815b513f98f447c7e0784",
+    "mtime": 1790471954.528755,
+    "seen": 1790471972.4078789,
+    "ast_hash": "c1acc99622a49cc32bb4c46578688d4e",
     "semantic_hash": ""
   },
   "internal/via/protocol_test.go": {
@@ -186,9 +186,9 @@
     "semantic_hash": ""
   },
   "cmd/qmk-rgb-tool/effect.go": {
-    "mtime": 1790470877.806277,
-    "seen": 1790471472.0897,
-    "ast_hash": "1f1f4ea718ebf79b5ce244fb4dfc907e",
+    "mtime": 1790471607.3074896,
+    "seen": 1790471972.4078486,
+    "ast_hash": "40841a66c234790dd5071989fbeaca1e",
     "semantic_hash": ""
   },
   "cmd/qmk-rgb-tool/effect_test.go": {
@@ -342,9 +342,9 @@
     "semantic_hash": ""
   },
   "cmd/qmk-rgb-tool/flags_test.go": {
-    "mtime": 1790469384.0567758,
-    "seen": 1790471472.0897017,
-    "ast_hash": "1e7ce54bc72d27a6cb49d67b51cf8fa4",
+    "mtime": 1790471691.8258042,
+    "seen": 1790471972.4078512,
+    "ast_hash": "6a2a24d4fbf22e587ccdeba8b493a604",
     "semantic_hash": ""
   },
   "cmd/qmk-rgb-tool/profile_list_test.go": {
@@ -364,5 +364,17 @@
     "seen": 1790471472.0897114,
     "ast_hash": "eaf9a65667f2e4adf8afdaea5bfefa3c",
     "semantic_hash": ""
+  },
+  "cmd/qmk-rgb-tool/agents_doc_test.go": {
+    "mtime": 1790471934.219789,
+    "seen": 1790471972.4078426,
+    "ast_hash": "a3e89c310b0ee519677e63e7f2a662dc",
+    "semantic_hash": ""
+  },
+  "cmd/qmk-rgb-tool/effect_list_test.go": {
+    "mtime": 1790471600.505554,
+    "seen": 1790471972.4078493,
+    "ast_hash": "773d38526f1b332a2a95d9a0f0663e9e",
+    "semantic_hash": ""
   }
 }

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor