Remove faulty GitHub Actions Workflow for Python, fix: resolve explain-ambiguity - #2264
Graphify — looks good
Looks safe to merge — no coupling regressions and no blocking issues, checked against the code graph (not a self-assessment).
Details
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
--proveto formally verify them