v0.3.6
Fixed
- Cross-type node merges eliminated.
deduplicate_by_labelno longer conflates distinct components that normalise to the same label (e.g. anApexClassand a similarly-namedLWCComponent, or aCustomObjectand itsCustomTab/Settings/PermissionSet). It wrongly merged 83 node pairs on a real 9k-node org and rewrote their edges onto the wrong survivor. Merging is now gated onsf_type; the intended chunked-duplicate case still works. - Self-referencing lookup fields keep their object→field
containsedge. Previously thecontainsand the field→objectreferencesedge shared an undirected node-pair and one overwrote the other, orphaning the field. The build now keeps the higher-priority relation on collision (containsoutranksreferences). - Together, object→field attachment on the test org went from 99.4% to 100% (18 orphaned fields → 0).
- The post-scan log printed the raw
skippedlist object instead of a count.
Added
.gitignore/.forceignoreare honored by default to cut graph noise, using full gitignore semantics (negation, anchored,**) viapathspec. Ignore files are discovered by walking up from the scanned directory, sographify-sf force-appstill picks up the project-root files.--include-ignoredflag to scan everything regardless, plus an honest per-source skip summary after each scan.
Full multi-relation edge preservation (read+write on the same object, both edges on self-lookups) is the planned 0.4.0 MultiGraph work.