Skip to content

Remove faulty GitHub Actions Workflow for Python, fix: resolve explain-ambiguity - #2264

Open
FolatheDuckofDuckingburg wants to merge 27 commits into
Graphify-Labs:v8from
FolatheDuckofDuckingburg:jules-12051165530568688589-1fd6de31
Open

Remove faulty GitHub Actions Workflow for Python, fix: resolve explain-ambiguity#2264
FolatheDuckofDuckingburg wants to merge 27 commits into
Graphify-Labs:v8from
FolatheDuckofDuckingburg:jules-12051165530568688589-1fd6de31

Conversation

@FolatheDuckofDuckingburg

Copy link
Copy Markdown

No description provided.

FolatheDuckofDuckingburg and others added 26 commits June 6, 2026 10:09
This workflow installs Python dependencies, runs linting with flake8, and executes tests using pytest for the 'v8' branch.
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
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
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>
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>
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>
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>

@graphify-labs graphify-labs Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 appears to remove the PyPI publishing GitHub Actions workflow (.github/workflows/publish.yml) and truncate the CHANGELOG.md, deleting the historical release notes entries (from 0.9.26 through 0.9.29). The changed-symbols list spans a broad range of test files, skillgen tooling, and graphify extraction/analysis modules, suggesting accompanying edits across the codebase. Note: the provided diff only fully shows the workflow deletion and changelog truncation; the actual changes to the many listed symbols are not visible in the truncated diff, so the surface area is wider than what's shown here.

No blocking issues surfaced. 1 lower-confidence candidate did not survive cross-model review.

Analysis details — impact, health, verification

Impact & health

graphify review

Impact — 6716 function(s) in the blast radius of 5990 changed node(s).

Health — regressions introduced by this change:

  • worsened (Ca·Ce 158→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)
  • worsened (Ca·Ce 25→76): _score_nodes() (Ca=19 Ce=4) — 19 callers depend on it (afferent coupling)
  • worsened (Ca·Ce 60→70): extract_vue() (Ca=10 Ce=7) — fans out to 7 callees (efferent coupling); 10 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)
  • worsened (Ca·Ce 30→36): extract_astro() (Ca=6 Ce=6) — fans out to 6 callees (efferent coupling); 6 callers depend on it (afferent 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)
  • worsened (Ca·Ce 0→18): _pick_seeds() (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)
  • worsened (Ca·Ce 10→12): extract_svelte() (Ca=2 Ce=6) — fans out to 6 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 — 6716 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: 6698 function(s) in blast radius — re-run with --prove to formally verify them

· 57 more finding(s) on lines outside this diff (see the check run).

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>

@graphify-labs graphify-labs Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 PR appears to be a rollback/pruning change. It deletes the .github/workflows/publish.yml GitHub Actions workflow that handled trusted publishing to PyPI, and truncates the CHANGELOG.md by removing a large block of recent version entries (0.9.26 through 0.9.29 and beyond). The changed-symbols list also indicates edits across many test files, skill/skillgen fixtures, and rationale/graph-related modules. Reviewers should focus on whether removing the PyPI publish workflow and the associated changelog history is intentional, and check the surface area across the touched tests, skill generation fixtures, and graph extraction/rationale code paths.

No blocking issues surfaced. 1 lower-confidence candidate did not survive cross-model review.

Analysis details — impact, health, verification

Impact & health

graphify review

Impact — 6716 function(s) in the blast radius of 5990 changed node(s).

Health — regressions introduced by this change:

  • worsened (Ca·Ce 158→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)
  • worsened (Ca·Ce 25→76): _score_nodes() (Ca=19 Ce=4) — 19 callers depend on it (afferent coupling)
  • worsened (Ca·Ce 60→70): extract_vue() (Ca=10 Ce=7) — fans out to 7 callees (efferent coupling); 10 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)
  • worsened (Ca·Ce 30→36): extract_astro() (Ca=6 Ce=6) — fans out to 6 callees (efferent coupling); 6 callers depend on it (afferent 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)
  • worsened (Ca·Ce 0→18): _pick_seeds() (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)
  • worsened (Ca·Ce 10→12): extract_svelte() (Ca=2 Ce=6) — fans out to 6 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 — 6716 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: 6698 function(s) in blast radius — re-run with --prove to formally verify them

· 57 more finding(s) on lines outside this diff (see the check run).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant