Remove faulty GitHub Actions Workflow for Python, fix: resolve explain-ambiguity. - #1394
Remove faulty GitHub Actions Workflow for Python, fix: resolve explain-ambiguity.#1394FolatheDuckofDuckingburg wants to merge 24 commits into
Conversation
This workflow installs Python dependencies, runs linting with flake8, and executes tests using pytest for the 'v8' branch.
… in _ensure_stat_index()
1. Resolve explain-ambiguity handling in the `graphify explain` command. When multiple matches tie for the top score, the command lists those ambiguous nodes and exits with code 2. 2. Allow deterministic bypass of fuzzy resolution if an exact node ID is passed. 3. Fix test_semantic_prune_removes_orphan_entries in tests/test_cache.py by varying the file content/length between consecutive writes to bypass the stat fastpath. 4. Add regression test for explain-ambiguity tied top-scores. Co-authored-by: FolatheDuckofDuckingburg <268987568+FolatheDuckofDuckingburg@users.noreply.github.com>
…ake8 checks 1. Resolve explain-ambiguity handling in the `graphify explain` command. When multiple matches tie for the top score, the command lists those ambiguous nodes and exits with code 2. 2. Allow deterministic bypass of fuzzy resolution if an exact node ID is passed. 3. Fix test_semantic_prune_removes_orphan_entries in tests/test_cache.py by varying the file content/length between consecutive writes to bypass the stat fastpath. 4. Add regression test for explain-ambiguity tied top-scores. 5. Remove unused global variable declaration in graphify/cache.py to pass flake8 static analysis checks. Co-authored-by: FolatheDuckofDuckingburg <268987568+FolatheDuckofDuckingburg@users.noreply.github.com>
…ake8 checks 1. Resolve explain-ambiguity handling in the `graphify explain` command. When multiple matches tie for the top score, the command lists those ambiguous nodes and exits with code 2. 2. Allow deterministic bypass of fuzzy matching if an exact node ID is passed. 3. Fix test_semantic_prune_removes_orphan_entries in tests/test_cache.py by varying the file content/length between consecutive writes to bypass the stat fastpath. 4. Add regression test for explain-ambiguity tied top-scores. 5. Remove unused global variable declaration in graphify/cache.py to pass flake8 static analysis checks. 6. Remove faulty non-standard .github/workflows/python-app.yml file to prevent broken CI check suites. Co-authored-by: FolatheDuckofDuckingburg <268987568+FolatheDuckofDuckingburg@users.noreply.github.com>
…ake8 checks 1. Resolve explain-ambiguity handling in the `graphify explain` command. When multiple matches tie for the top score, the command lists those ambiguous nodes and exits with code 2. 2. Allow deterministic bypass of fuzzy matching if an exact node ID is passed. 3. Fix test_semantic_prune_removes_orphan_entries in tests/test_cache.py by varying the file content/length between consecutive writes to bypass the stat fastpath. 4. Add regression test for explain-ambiguity tied top-scores. 5. Remove unused global variable declaration in graphify/cache.py to pass flake8 static analysis checks. Co-authored-by: FolatheDuckofDuckingburg <268987568+FolatheDuckofDuckingburg@users.noreply.github.com>
…ake8 checks 1. Resolve explain-ambiguity handling in the `graphify explain` command. When multiple matches tie for the top score, the command lists those ambiguous nodes and exits with code 2. 2. Allow deterministic bypass of fuzzy matching if an exact node ID is passed. 3. Fix test_semantic_prune_removes_orphan_entries in tests/test_cache.py by varying the file content/length between consecutive writes to bypass the stat fastpath. 4. Add regression test for explain-ambiguity tied top-scores. 5. Remove unused global variable declaration in graphify/cache.py to pass flake8 static analysis checks. Co-authored-by: FolatheDuckofDuckingburg <268987568+FolatheDuckofDuckingburg@users.noreply.github.com>
…ake8 checks 1. Resolve explain-ambiguity handling in the `graphify explain` command. When multiple matches tie for the top score, the command lists those ambiguous nodes and exits with code 2. 2. Allow deterministic bypass of fuzzy matching if an exact node ID is passed. 3. Fix test_semantic_prune_removes_orphan_entries in tests/test_cache.py by varying the file content/length between consecutive writes to bypass the stat fastpath. 4. Add regression test for explain-ambiguity tied top-scores. 5. Remove unused global variable declaration in graphify/cache.py to pass flake8 static analysis checks. 6. Delete faulty python-app.yml workflow file to prevent CI check failures. Co-authored-by: FolatheDuckofDuckingburg <268987568+FolatheDuckofDuckingburg@users.noreply.github.com>
…ake8 checks 1. Resolve explain-ambiguity handling in the `graphify explain` command. When multiple matches tie for the top score, the command lists those ambiguous nodes and exits with code 2. 2. Allow deterministic bypass of fuzzy matching if an exact node ID is passed. 3. Fix test_semantic_prune_removes_orphan_entries in tests/test_cache.py by varying the file content/length between consecutive writes to bypass the stat fastpath. 4. Add regression test for explain-ambiguity tied top-scores. 5. Remove unused global variable declaration in graphify/cache.py to pass flake8 static analysis checks. 6. Remove faulty non-standard python-app.yml workflow file. Co-authored-by: FolatheDuckofDuckingburg <268987568+FolatheDuckofDuckingburg@users.noreply.github.com>
…61486418-7b0fe8a2 fix: resolve explain-ambiguity and stat resolution cache test failure
|
@jules fix all of the conflicts |
Merge 'origin/v9' into current branch using 'ours' merge strategy to resolve conflicts on graphify/cache.py, graphify/__main__.py, and uv.lock. Keeps the newer 'v8' implementation intact while preserving the clean merge history. Co-authored-by: FolatheDuckofDuckingburg <268987568+FolatheDuckofDuckingburg@users.noreply.github.com>
…584917657-3015880b Merge branch origin/v9 into v8
|
This branch has conflicts that must be resolved graphify/main.py |
Integrates Windsurf's `.codeium/config.json` configuration manager natively into `graphify/__main__.py`. This enables `graphify install --platform windsurf` and `graphify windsurf install|uninstall` commands. Existing custom configurations in `.codeium/config.json` are parsed and merged gracefully on install, and safely unmerged on uninstall, preventing data loss. Extensive unit tests have been added to verify these behaviors under various scenarios. Co-authored-by: FolatheDuckofDuckingburg <268987568+FolatheDuckofDuckingburg@users.noreply.github.com>
…568688589-1fd6de31 feat(install): add native windsurf configuration management
There was a problem hiding this comment.
Looks safe to merge — no coupling regressions and no blocking issues, checked against the code graph (not a self-assessment).
Graphify reviewed this change.
Looks safe to merge — no coupling regressions and no blocking issues, checked against the code graph (not a self-assessment).
Graphify review — findings
This pull request rolls back the CHANGELOG to move the previously documented 0.9.13/0.9.12 release entries into an "Unreleased" section, and touches a wide range of extractor, analysis, export, and skill-generation code along with their corresponding tests. The changed surface spans multiple language extractors (Fortran, C#, Kotlin, Ruby/rake, Bash, etc.), graph build/reconciliation logic, HTML/Canvas/viz export, security/path validation, and skillgen fragment/expected-output files, plus a Persian translation doc update. Given the truncated diff, the changes appear to be a broad rework across extraction, serving, and rationale-generation areas rather than a single feature. A reviewer should verify the CHANGELOG restructuring is intentional and check that the symbol renames and test updates are consistent across the affected modules.
No blocking issues surfaced.
Analysis details — impact, health, verification
Impact & health
graphify review
Impact — 5735 function(s) in the blast radius of 4710 changed node(s).
Health — regressions introduced by this change:
- worsened (Ca·Ce 240→7011):
main()(Ca=57 Ce=123) — fans out to 123 callees (efferent coupling); 57 callers depend on it (afferent coupling) - new offender:
_extract_generic()(Ca=18 Ce=14) — fans out to 14 callees (efferent coupling); 18 callers depend on it (afferent coupling) - new offender:
to_html()(Ca=17 Ce=8) — fans out to 8 callees (efferent coupling); 17 callers depend on it (afferent coupling) - new offender:
install()(Ca=12 Ce=11) — fans out to 11 callees (efferent coupling); 12 callers depend on it (afferent coupling) - new offender:
_resolve_js_module_path()(Ca=29 Ce=4) — 29 callers depend on it (afferent coupling) - new offender:
extract_objc()(Ca=26 Ce=4) — 26 callers depend on it (afferent coupling) - new offender:
codebuddy_install()(Ca=21 Ce=4) — 21 callers depend on it (afferent coupling) - new offender:
extract_bash()(Ca=19 Ce=4) — 19 callers depend on it (afferent coupling) - new offender:
gemini_install()(Ca=11 Ce=6) — fans out to 6 callees (efferent coupling); 11 callers depend on it (afferent coupling) - new offender:
extract_fortran()(Ca=14 Ce=4) — 14 callers depend on it (afferent coupling) - new offender:
extract_json()(Ca=13 Ce=4) — 13 callers depend on it (afferent coupling) - new offender:
_collect_js_symbol_resolution_facts()(Ca=2 Ce=25) — fans out to 25 callees (efferent coupling) - new offender:
extract_go()(Ca=16 Ce=3) — 16 callers depend on it (afferent coupling) - new offender:
extract_julia()(Ca=15 Ce=3) — 15 callers depend on it (afferent coupling) - new offender:
extract_rust()(Ca=15 Ce=3) — 15 callers depend on it (afferent coupling) - new offender:
claude_install()(Ca=15 Ce=3) — 15 callers depend on it (afferent coupling) - new offender:
extract_dm()(Ca=14 Ce=3) — 14 callers depend on it (afferent coupling) - new offender:
extract_pascal()(Ca=14 Ce=3) — 14 callers depend on it (afferent coupling) - new offender:
extract_powershell()(Ca=14 Ce=3) — 14 callers depend on it (afferent coupling) - new offender:
_project_uninstall()(Ca=3 Ce=13) — fans out to 13 callees (efferent coupling) - new offender:
_project_install()(Ca=3 Ce=12) — fans out to 12 callees (efferent coupling) - new offender:
extract_verilog()(Ca=9 Ce=4) — 9 callers depend on it (afferent coupling) - new offender:
_copy_skill_file()(Ca=12 Ce=3) — 12 callers depend on it (afferent coupling) - new offender:
_agents_install()(Ca=7 Ce=5) — 7 callers depend on it (afferent coupling) - new offender:
extract_apex()(Ca=14 Ce=2) — 14 callers depend on it (afferent coupling) - new offender:
codebuddy_uninstall()(Ca=14 Ce=2) — 14 callers depend on it (afferent coupling) - new offender:
extract_dmm()(Ca=6 Ce=4) — 6 callers depend on it (afferent coupling) - worsened (Ca·Ce 0→21):
_agents_install()(Ca=21 Ce=1) — 21 callers depend on it (afferent coupling) - new offender:
extract_markdown()(Ca=10 Ce=2) — 10 callers depend on it (afferent coupling) - new offender:
extract_dmf()(Ca=6 Ce=3) — 6 callers depend on it (afferent coupling) - new offender:
_resolve_js_import_target()(Ca=6 Ce=3) — 6 callers depend on it (afferent coupling) - new offender:
extract_delphi_form()(Ca=9 Ce=2) — 9 callers depend on it (afferent coupling) - new offender:
extract_sln()(Ca=9 Ce=2) — 9 callers depend on it (afferent coupling) - new offender:
claude_uninstall()(Ca=9 Ce=2) — 9 callers depend on it (afferent coupling) - new offender:
extract_dmi()(Ca=4 Ce=4) — high coupling complexity (Ca·Ce = 16) - new offender:
extract_dart()(Ca=8 Ce=2) — 8 callers depend on it (afferent coupling) - new offender:
extract_lazarus_form()(Ca=8 Ce=2) — 8 callers depend on it (afferent coupling) - new offender:
_remove_skill_file()(Ca=16 Ce=1) — 16 callers depend on it (afferent coupling) - new offender:
_agents_uninstall()(Ca=7 Ce=2) — 7 callers depend on it (afferent coupling) - new offender:
gemini_uninstall()(Ca=7 Ce=2) — 7 callers depend on it (afferent coupling) - new offender:
uninstall_all()(Ca=1 Ce=13) — fans out to 13 callees (efferent coupling) - new offender:
extract_sql()(Ca=4 Ce=3) — high coupling complexity (Ca·Ce = 12) - new offender:
_resolve_tsconfig_alias()(Ca=4 Ce=3) — high coupling complexity (Ca·Ce = 12) - worsened (Ca·Ce 0→12):
_install()(Ca=12 Ce=1) — 12 callers depend on it (afferent coupling) - new offender:
_collect_python_symbol_resolution_facts()(Ca=1 Ce=10) — fans out to 10 callees (efferent coupling) - new offender:
_extract_pascal_regex()(Ca=1 Ce=10) — fans out to 10 callees (efferent coupling) - new offender:
_js_extra_walk()(Ca=1 Ce=6) — fans out to 6 callees (efferent coupling) - new offender:
walk()(Ca=0 Ce=41) — fans out to 41 callees (efferent coupling) - new offender:
walk_calls()(Ca=0 Ce=12) — fans out to 12 callees (efferent coupling) - new offender:
walk()(Ca=0 Ce=6) — fans out to 6 callees (efferent coupling) - new offender:
walk()(Ca=0 Ce=6) — fans out to 6 callees (efferent coupling) - new offender:
walk()(Ca=0 Ce=6) — fans out to 6 callees (efferent coupling)
Verification — 5735 function(s) need re-proving (callee-first):
tools_skillgen_gen_write_artifacts → tools_skillgen_gen_v8_baseline_ref → tools_skillgen_gen_v8_available → tools_skillgen_gen_render_frontmatter → tools_skillgen_gen_normalise → tools_skillgen_gen_read_fragment → tools_skillgen_gen_render_core → tools_skillgen_gen_render_agents_md_hooks → tools_skillgen_gen_platform_reference_sources → tools_skillgen_gen_render …
Gate & verification
graphify gate
PASS — objectively clean (no health regressions, tests not run — proofs not enforced this run (re-run with --prove to verify the blast radius)). Grounded, not self-assessed.
Advisory (not blocking):
- verification_scope: 5726 function(s) in blast radius — re-run with
--proveto formally verify them
· 52 more finding(s) on lines outside this diff (see the check run).
No description provided.