test: pin polydock app discovery set (spike)#203
Open
dan2k3k4 wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a characterization test pinning the discovered Polydock app set and refreshes a stale docblock. Tests/docs only.
Greptile Summary
This PR is tests/docs only: it adds a characterization test that pins the exact set of six concrete
PolydockAppInterfaceclasses returned byPolydockAppClassDiscovery, refreshes a stale class-level docblock to describe the actual filesystem-scan mechanism, and adds spike notes documenting the investigation.test_characterization_pins_exact_discovered_app_set): imports the three previously unimported app classes, builds the expected FQCN list, sorts it withsort()to match the service'sksort()output, and asserts exact equality — giving a loud failure gate if the discovered set ever changes unintentionally.plans/notes/013-app-discovery-approach.md): documents why no mechanism refactor is needed and flags two future-cleanup candidates (NAMESPACE_FILTERSand the misleadinggetClassMap()method name).Confidence Score: 5/5
Safe to merge — all three files are test/doc changes with zero production logic touched.
The service file has only a docblock change; the new test correctly mirrors the service's ksort ordering by using sort() on the same string type; the notes file is inert documentation. No runtime code path was modified.
No files require special attention.
Important Files Changed
Flowchart
%%{init: {'theme': 'neutral'}}%% flowchart TD A[getAvailableAppClasses] --> B{cache !== null?} B -- Yes --> C[return cached result] B -- No --> D[getClassMap] D --> E[File::allFiles\napp/Polydock/Apps] E --> F[Map relative path\n→ App\\Polydock\\Apps\\... FQCN] F --> G[matchesNamespaceFilter\ncontains 'Polydock'?] G -- No --> H[skip] G -- Yes --> I[class_exists + ReflectionClass] I --> J{isAbstract\nor isInterface?} J -- Yes --> H J -- No --> K{implementsInterface\nPolydockAppInterface?} K -- No --> H K -- Yes --> L[buildLabel\nattribute or fallback] L --> M[classes map] M --> N[ksort] N --> O[cache & return] style O fill:#4caf50,color:#fff style C fill:#4caf50,color:#fff%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%% flowchart TD A[getAvailableAppClasses] --> B{cache !== null?} B -- Yes --> C[return cached result] B -- No --> D[getClassMap] D --> E[File::allFiles\napp/Polydock/Apps] E --> F[Map relative path\n→ App\\Polydock\\Apps\\... FQCN] F --> G[matchesNamespaceFilter\ncontains 'Polydock'?] G -- No --> H[skip] G -- Yes --> I[class_exists + ReflectionClass] I --> J{isAbstract\nor isInterface?} J -- Yes --> H J -- No --> K{implementsInterface\nPolydockAppInterface?} K -- No --> H K -- Yes --> L[buildLabel\nattribute or fallback] L --> M[classes map] M --> N[ksort] N --> O[cache & return] style O fill:#4caf50,color:#fff style C fill:#4caf50,color:#fffReviews (1): Last reviewed commit: "test: pin polydock app discovery set (sp..." | Re-trigger Greptile