docs(exporters): add the porting playbook and status table - #2295
Conversation
graphify/exporters/ is being split out of export.py the same way graphify/extractors/ is split out of extract.py — base.py holds the shared palette, html.py and graphdb.py are moved verbatim behind export.py facade re-exports — but unlike extractors/ it had no MIGRATION.md, so the pattern and remaining work were undocumented. Add the playbook (verbatim moves, one exporter per PR, mandatory facade re-export, no exporter-imports-exporter) and a status table: html/graphdb/base done; to_json, to_cypher, to_obsidian, to_canvas, to_graphml, to_svg still in export.py. callflow_html.py is noted as out of scope. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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 PR adds a new documentation file, graphify/exporters/MIGRATION.md, that describes the process for splitting exporters out of the monolithic export.py into a per-format exporters/ package. It includes a status table tracking which exporters have been migrated, a set of stated invariants (e.g., verbatim moves, one exporter per PR, mandatory facade re-exports), and step-by-step migration instructions. The change is documentation-only and does not modify any code.
No blocking issues surfaced.
Analysis details — impact, health, verification
Impact & health
Graphify review
Impact — 5 functions depend on the 5 node(s) this change touches.
Health — grade A; no new coupling hotspots.
Verification — 5 functions in the blast radius were not formally verified this run (proofs are advisory here).
Gate & verification
graphify gate
PASS — objectively clean (no health regressions, tests not run — proofs not run this pass (advisory)). Grounded, not self-assessed.
Advisory (not blocking):
- verification_scope: 5 function(s) in the blast radius were not formally verified this run
Summary
graphify/exporters/is being split out ofexport.pyusing the same facade pattern asgraphify/extractors/(base.pyfor shared symbols, per-format modules moved verbatim,export.pyre-exporting each moved name behind# noqa: E402,F401). Three pieces already live there —to_html→exporters/html.py, the FalkorDB/Neo4j push →exporters/graphdb.py,COMMUNITY_COLORS→exporters/base.py— but unlikeextractors/, the package had noMIGRATION.md, so the pattern in use and the remaining work were undocumented.This adds
graphify/exporters/MIGRATION.md: the porting invariants (verbatim moves, one exporter per PR, mandatory facade re-export, no exporter-imports-exporter) and a status table.Still in
export.py(verified they are real definitions, not already-migrated re-exports):to_json,to_cypher,to_obsidian,to_canvas,to_graphml,to_svg.callflow_html.pyis noted as a separate concern (Mermaid HTML built fromgraphify-out/files, not a graph object) and out of scope.Docs-only; no code touched. Mirrors
graphify/extractors/MIGRATION.mdin structure so contributors porting either package follow the same steps.🤖 Generated with Claude Code