{"pviz_slice":true,"schema_version":"pviz-slice@v1","tool":"hub_summary","generated_at":"2026-11-03T17:29:46.091438+00:00","bundle":{"path":"/b/bundle.json","repo":"lobsters","node_count":508,"edge_count":849},"params":{"command":"hub-summary","top_n":15,"top_reason_n":5},"result":{"schema":"pviz.slice.hub_summary.v1","totals":{"nodes_seen":508,"nodes_with_edges":307,"nodes_with_language_facts":368,"edges_seen":849,"edges_counted":849,"edges_skipped_missing_endpoint":0,"directories_with_edges":35,"languages_with_edges":1,"rails_roles_with_edges":11,"language_role_groups_with_edges":12,"reasons":197},"node_hubs":{"by_outgoing_edges":[{"node":"app/models/story.rb","directory":"app/models","loc":1107,"incoming":54,"outgoing":37,"total":91,"reasons":{"rails_association_decl_exact":29,"constant_receiver_method_match":10,"ruby_constant_receiver_exact:Story.where":9,"ruby_constant_receiver_exact:Story.all":3,"ruby_constant_receiver_exact:Story.find_by":3},"reasons_total":36,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":14,"method_count":78,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/user.rb","directory":"app/models","loc":518,"incoming":63,"outgoing":36,"total":99,"reasons":{"rails_association_decl_exact":36,"ruby_constant_receiver_exact:User.where":10,"ruby_constant_receiver_exact:User.find_by":9,"constant_receiver_method_match":7,"ruby_constant_receiver_exact:User.find_by!":4},"reasons_total":28,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":10,"method_count":49,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/controllers/stories_controller.rb","directory":"app/controllers","loc":421,"incoming":0,"outgoing":19,"total":19,"reasons":{"constant_receiver_method_match":4,"ruby_constant_receiver_exact:Comment.where":1,"ruby_constant_receiver_exact:CommentVoteHydrator.new":1,"ruby_constant_receiver_exact:CreateStoryCardJob.perform_later":1,"ruby_constant_receiver_exact:Link.recently_linked_from_comments":1},"reasons_total":16,"reasons_truncated":true,"language":"ruby","rails_role":"controller","declared_type_count":1,"method_count":25,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/comment.rb","directory":"app/models","loc":468,"incoming":34,"outgoing":19,"total":53,"reasons":{"rails_association_decl_exact":12,"ruby_constant_receiver_exact:Comment.where":6,"ruby_constant_receiver_exact:Comment.all":4,"ruby_constant_receiver_exact:Comment.find_by":3,"ruby_constant_receiver_exact:Comment.update_all":3},"reasons_total":27,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":8,"method_count":39,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/controllers/comments_controller.rb","directory":"app/controllers","loc":373,"incoming":0,"outgoing":11,"total":11,"reasons":{"constant_receiver_method_match":4,"ruby_constant_receiver_exact:Comment.find_by":1,"ruby_constant_receiver_exact:CommentVoteHydrator.new":1,"ruby_constant_receiver_exact:NotifyCommentJob.perform_later":1,"ruby_constant_receiver_exact:Story.where":1},"reasons_total":8,"reasons_truncated":true,"language":"ruby","rails_role":"controller","declared_type_count":2,"method_count":20,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/moderation.rb","directory":"app/models","loc":110,"incoming":44,"outgoing":11,"total":55,"reasons":{"rails_association_decl_exact":14,"ruby_constant_receiver_exact:Moderation.last":8,"ruby_constant_receiver_exact:Moderation.new":8,"ruby_constant_receiver_exact:Moderation.create!":7,"ruby_constant_receiver_exact:Moderation.count":3},"reasons_total":16,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":2,"method_count":2,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/tag.rb","directory":"app/models","loc":98,"incoming":33,"outgoing":11,"total":44,"reasons":{"rails_association_decl_exact":13,"ruby_constant_receiver_exact:Tag.where":12,"ruby_constant_receiver_exact:Tag.active":3,"ruby_constant_receiver_exact:Tag.all":3,"ruby_constant_receiver_exact:Tag.create!":3},"reasons_total":15,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":4,"method_count":10,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/controllers/home_controller.rb","directory":"app/controllers","loc":308,"incoming":1,"outgoing":9,"total":10,"reasons":{"ruby_constant_receiver_exact:Category.where":1,"ruby_constant_receiver_exact:Domain.find_by!":1,"ruby_constant_receiver_exact:HomeController.caches_page":1,"ruby_constant_receiver_exact:Origin.find_by!":1,"ruby_constant_receiver_exact:StoriesPaginator.new":1},"reasons_total":10,"reasons_truncated":true,"language":"ruby","rails_role":"controller","declared_type_count":1,"method_count":18,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/mod_note.rb","directory":"app/models","loc":167,"incoming":18,"outgoing":9,"total":27,"reasons":{"constant_receiver_method_match":8,"ruby_constant_receiver_exact:ModNote.new":3,"rails_association_decl_exact":2,"ruby_constant_receiver_exact:ModNote.count":2,"ruby_constant_receiver_exact:ModNote.where":2},"reasons_total":15,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":1,"method_count":14,"language_fact_keys":["method_symbols","symbols"]},{"node":"lib/tasks/fake_data.rake","directory":"lib/tasks","loc":340,"incoming":1,"outgoing":9,"total":10,"reasons":{"constant_receiver_method_match":2,"ruby_constant_receiver_exact:Category.find_by":1,"ruby_constant_receiver_exact:Comment.count":1,"ruby_constant_receiver_exact:FakeDataGenerator.new":1,"ruby_constant_receiver_exact:Hat.create!":1},"reasons_total":9,"reasons_truncated":true,"language":"ruby","rails_role":"rake_task","declared_type_count":1,"method_count":4,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/controllers/application_controller.rb","directory":"app/controllers","loc":158,"incoming":30,"outgoing":8,"total":38,"reasons":{"ruby_superclass_exact":29,"constant_receiver_method_match":3,"ruby_include_exact":3,"ruby_constant_receiver_exact:ApplicationController.cache_page":1,"ruby_constant_receiver_exact:CachePageJob.set":1},"reasons_total":6,"reasons_truncated":true,"language":"ruby","rails_role":"controller","declared_type_count":6,"method_count":13,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/controllers/mod/stories_controller.rb","directory":"app/controllers/mod","loc":63,"incoming":0,"outgoing":8,"total":8,"reasons":{"constant_receiver_method_match":3,"ruby_constant_receiver_exact:Tag.where":1,"ruby_constant_receiver_exact:User.update_counters":1,"ruby_include_exact":1,"ruby_require_internal:provider_index":1},"reasons_total":6,"reasons_truncated":true,"language":"ruby","rails_role":"controller","declared_type_count":1,"method_count":6,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/controllers/settings_controller.rb","directory":"app/controllers","loc":244,"incoming":0,"outgoing":8,"total":8,"reasons":{"constant_receiver_method_match":4,"ruby_constant_receiver_exact:MastodonApp.find_by":1,"ruby_constant_receiver_exact:Moderation.create!":1,"ruby_require_internal:provider_index":1,"ruby_superclass_exact":1},"reasons_total":5,"reasons_truncated":false,"language":"ruby","rails_role":"controller","declared_type_count":2,"method_count":19,"language_fact_keys":["method_symbols","symbols"]},{"node":"spec/models/story_spec.rb","directory":"spec/models","loc":648,"incoming":0,"outgoing":8,"total":8,"reasons":{"constant_receiver_method_match":2,"ruby_constant_receiver_exact:Moderation.last":1,"ruby_constant_receiver_exact:SavedStory.create!":1,"ruby_constant_receiver_exact:Story.new":1,"ruby_constant_receiver_exact:Tag.where":1},"reasons_total":7,"reasons_truncated":true,"language":"ruby","method_count":2,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/domain.rb","directory":"app/models","loc":124,"incoming":20,"outgoing":7,"total":27,"reasons":{"rails_association_decl_exact":6,"ruby_constant_receiver_exact:Domain.where":6,"ruby_constant_receiver_exact:Domain.create!":2,"ruby_constant_receiver_exact:Domain.find_by":2,"ruby_constant_receiver_exact:Domain.find_by!":2},"reasons_total":12,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":1,"method_count":13,"language_fact_keys":["method_symbols","symbols"]}],"by_incoming_edges":[{"node":"spec/rails_helper.rb","directory":"spec","loc":55,"incoming":108,"outgoing":3,"total":111,"reasons":{"ruby_require_internal:provider_index":108,"ruby_constant_receiver_exact:Category.create!":1,"ruby_constant_receiver_exact:InactiveUser.instance_variable_set":1,"ruby_constant_receiver_exact:User.create!":1},"reasons_total":4,"reasons_truncated":false,"language":"ruby","method_count":1,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/user.rb","directory":"app/models","loc":518,"incoming":63,"outgoing":36,"total":99,"reasons":{"rails_association_decl_exact":36,"ruby_constant_receiver_exact:User.where":10,"ruby_constant_receiver_exact:User.find_by":9,"constant_receiver_method_match":7,"ruby_constant_receiver_exact:User.find_by!":4},"reasons_total":28,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":10,"method_count":49,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/story.rb","directory":"app/models","loc":1107,"incoming":54,"outgoing":37,"total":91,"reasons":{"rails_association_decl_exact":29,"constant_receiver_method_match":10,"ruby_constant_receiver_exact:Story.where":9,"ruby_constant_receiver_exact:Story.all":3,"ruby_constant_receiver_exact:Story.find_by":3},"reasons_total":36,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":14,"method_count":78,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/moderation.rb","directory":"app/models","loc":110,"incoming":44,"outgoing":11,"total":55,"reasons":{"rails_association_decl_exact":14,"ruby_constant_receiver_exact:Moderation.last":8,"ruby_constant_receiver_exact:Moderation.new":8,"ruby_constant_receiver_exact:Moderation.create!":7,"ruby_constant_receiver_exact:Moderation.count":3},"reasons_total":16,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":2,"method_count":2,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/application_record.rb","directory":"app/models","loc":4,"incoming":36,"outgoing":0,"total":36,"reasons":{"ruby_superclass_exact":34,"ruby_constant_receiver_exact:ApplicationRecord.descendants":2},"reasons_total":2,"reasons_truncated":false,"language":"ruby","rails_role":"model","declared_type_count":1,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/comment.rb","directory":"app/models","loc":468,"incoming":34,"outgoing":19,"total":53,"reasons":{"rails_association_decl_exact":12,"ruby_constant_receiver_exact:Comment.where":6,"ruby_constant_receiver_exact:Comment.all":4,"ruby_constant_receiver_exact:Comment.find_by":3,"ruby_constant_receiver_exact:Comment.update_all":3},"reasons_total":27,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":8,"method_count":39,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/tag.rb","directory":"app/models","loc":98,"incoming":33,"outgoing":11,"total":44,"reasons":{"rails_association_decl_exact":13,"ruby_constant_receiver_exact:Tag.where":12,"ruby_constant_receiver_exact:Tag.active":3,"ruby_constant_receiver_exact:Tag.all":3,"ruby_constant_receiver_exact:Tag.create!":3},"reasons_total":15,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":4,"method_count":10,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/controllers/application_controller.rb","directory":"app/controllers","loc":158,"incoming":30,"outgoing":8,"total":38,"reasons":{"ruby_superclass_exact":29,"constant_receiver_method_match":3,"ruby_include_exact":3,"ruby_constant_receiver_exact:ApplicationController.cache_page":1,"ruby_constant_receiver_exact:CachePageJob.set":1},"reasons_total":6,"reasons_truncated":true,"language":"ruby","rails_role":"controller","declared_type_count":6,"method_count":13,"language_fact_keys":["method_symbols","symbols"]},{"node":"extras/routes.rb","directory":"extras","loc":36,"incoming":30,"outgoing":0,"total":30,"reasons":{"constant_receiver_method_match":18,"ruby_constant_receiver_exact:Routes.story_short_id_url":5,"ruby_constant_receiver_exact:Routes.user_url":2,"ruby_constant_receiver_exact:Routes.comment_short_id_path":1,"ruby_constant_receiver_exact:Routes.comment_short_id_url":1},"reasons_total":8,"reasons_truncated":true,"language":"ruby","declared_type_count":1,"method_count":8,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/vote.rb","directory":"app/models","loc":138,"incoming":25,"outgoing":7,"total":32,"reasons":{"constant_receiver_method_match":12,"rails_association_decl_exact":6,"ruby_constant_receiver_exact:Vote.where":6,"ruby_constant_receiver_exact:Vote.find_by":2,"ruby_constant_receiver_exact:Comment.find":1},"reasons_total":10,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":5,"method_count":9,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/domain.rb","directory":"app/models","loc":124,"incoming":20,"outgoing":7,"total":27,"reasons":{"rails_association_decl_exact":6,"ruby_constant_receiver_exact:Domain.where":6,"ruby_constant_receiver_exact:Domain.create!":2,"ruby_constant_receiver_exact:Domain.find_by":2,"ruby_constant_receiver_exact:Domain.find_by!":2},"reasons_total":12,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":1,"method_count":13,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/category.rb","directory":"app/models","loc":32,"incoming":18,"outgoing":6,"total":24,"reasons":{"rails_association_decl_exact":6,"ruby_constant_receiver_exact:Category.create!":6,"ruby_constant_receiver_exact:Category.first":3,"ruby_constant_receiver_exact:Category.find_by":2,"ruby_constant_receiver_exact:Category.includes":1},"reasons_total":11,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":3,"method_count":2,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/concerns/token.rb","directory":"app/models/concerns","loc":16,"incoming":18,"outgoing":0,"total":18,"reasons":{"ruby_include_exact":18},"reasons_total":1,"reasons_truncated":false,"language":"ruby","rails_role":"concern","declared_type_count":1,"method_count":1,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/mod_note.rb","directory":"app/models","loc":167,"incoming":18,"outgoing":9,"total":27,"reasons":{"constant_receiver_method_match":8,"ruby_constant_receiver_exact:ModNote.new":3,"rails_association_decl_exact":2,"ruby_constant_receiver_exact:ModNote.count":2,"ruby_constant_receiver_exact:ModNote.where":2},"reasons_total":15,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":1,"method_count":14,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/controllers/mod/mod_controller.rb","directory":"app/controllers/mod","loc":12,"incoming":13,"outgoing":1,"total":14,"reasons":{"ruby_superclass_exact":14},"reasons_total":1,"reasons_truncated":false,"language":"ruby","rails_role":"controller","declared_type_count":1,"method_count":2,"language_fact_keys":["method_symbols","symbols"]}],"by_total_edges":[{"node":"spec/rails_helper.rb","directory":"spec","loc":55,"incoming":108,"outgoing":3,"total":111,"reasons":{"ruby_require_internal:provider_index":108,"ruby_constant_receiver_exact:Category.create!":1,"ruby_constant_receiver_exact:InactiveUser.instance_variable_set":1,"ruby_constant_receiver_exact:User.create!":1},"reasons_total":4,"reasons_truncated":false,"language":"ruby","method_count":1,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/user.rb","directory":"app/models","loc":518,"incoming":63,"outgoing":36,"total":99,"reasons":{"rails_association_decl_exact":36,"ruby_constant_receiver_exact:User.where":10,"ruby_constant_receiver_exact:User.find_by":9,"constant_receiver_method_match":7,"ruby_constant_receiver_exact:User.find_by!":4},"reasons_total":28,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":10,"method_count":49,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/story.rb","directory":"app/models","loc":1107,"incoming":54,"outgoing":37,"total":91,"reasons":{"rails_association_decl_exact":29,"constant_receiver_method_match":10,"ruby_constant_receiver_exact:Story.where":9,"ruby_constant_receiver_exact:Story.all":3,"ruby_constant_receiver_exact:Story.find_by":3},"reasons_total":36,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":14,"method_count":78,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/moderation.rb","directory":"app/models","loc":110,"incoming":44,"outgoing":11,"total":55,"reasons":{"rails_association_decl_exact":14,"ruby_constant_receiver_exact:Moderation.last":8,"ruby_constant_receiver_exact:Moderation.new":8,"ruby_constant_receiver_exact:Moderation.create!":7,"ruby_constant_receiver_exact:Moderation.count":3},"reasons_total":16,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":2,"method_count":2,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/comment.rb","directory":"app/models","loc":468,"incoming":34,"outgoing":19,"total":53,"reasons":{"rails_association_decl_exact":12,"ruby_constant_receiver_exact:Comment.where":6,"ruby_constant_receiver_exact:Comment.all":4,"ruby_constant_receiver_exact:Comment.find_by":3,"ruby_constant_receiver_exact:Comment.update_all":3},"reasons_total":27,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":8,"method_count":39,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/tag.rb","directory":"app/models","loc":98,"incoming":33,"outgoing":11,"total":44,"reasons":{"rails_association_decl_exact":13,"ruby_constant_receiver_exact:Tag.where":12,"ruby_constant_receiver_exact:Tag.active":3,"ruby_constant_receiver_exact:Tag.all":3,"ruby_constant_receiver_exact:Tag.create!":3},"reasons_total":15,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":4,"method_count":10,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/controllers/application_controller.rb","directory":"app/controllers","loc":158,"incoming":30,"outgoing":8,"total":38,"reasons":{"ruby_superclass_exact":29,"constant_receiver_method_match":3,"ruby_include_exact":3,"ruby_constant_receiver_exact:ApplicationController.cache_page":1,"ruby_constant_receiver_exact:CachePageJob.set":1},"reasons_total":6,"reasons_truncated":true,"language":"ruby","rails_role":"controller","declared_type_count":6,"method_count":13,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/application_record.rb","directory":"app/models","loc":4,"incoming":36,"outgoing":0,"total":36,"reasons":{"ruby_superclass_exact":34,"ruby_constant_receiver_exact:ApplicationRecord.descendants":2},"reasons_total":2,"reasons_truncated":false,"language":"ruby","rails_role":"model","declared_type_count":1,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/vote.rb","directory":"app/models","loc":138,"incoming":25,"outgoing":7,"total":32,"reasons":{"constant_receiver_method_match":12,"rails_association_decl_exact":6,"ruby_constant_receiver_exact:Vote.where":6,"ruby_constant_receiver_exact:Vote.find_by":2,"ruby_constant_receiver_exact:Comment.find":1},"reasons_total":10,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":5,"method_count":9,"language_fact_keys":["method_symbols","symbols"]},{"node":"extras/routes.rb","directory":"extras","loc":36,"incoming":30,"outgoing":0,"total":30,"reasons":{"constant_receiver_method_match":18,"ruby_constant_receiver_exact:Routes.story_short_id_url":5,"ruby_constant_receiver_exact:Routes.user_url":2,"ruby_constant_receiver_exact:Routes.comment_short_id_path":1,"ruby_constant_receiver_exact:Routes.comment_short_id_url":1},"reasons_total":8,"reasons_truncated":true,"language":"ruby","declared_type_count":1,"method_count":8,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/domain.rb","directory":"app/models","loc":124,"incoming":20,"outgoing":7,"total":27,"reasons":{"rails_association_decl_exact":6,"ruby_constant_receiver_exact:Domain.where":6,"ruby_constant_receiver_exact:Domain.create!":2,"ruby_constant_receiver_exact:Domain.find_by":2,"ruby_constant_receiver_exact:Domain.find_by!":2},"reasons_total":12,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":1,"method_count":13,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/mod_note.rb","directory":"app/models","loc":167,"incoming":18,"outgoing":9,"total":27,"reasons":{"constant_receiver_method_match":8,"ruby_constant_receiver_exact:ModNote.new":3,"rails_association_decl_exact":2,"ruby_constant_receiver_exact:ModNote.count":2,"ruby_constant_receiver_exact:ModNote.where":2},"reasons_total":15,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":1,"method_count":14,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/category.rb","directory":"app/models","loc":32,"incoming":18,"outgoing":6,"total":24,"reasons":{"rails_association_decl_exact":6,"ruby_constant_receiver_exact:Category.create!":6,"ruby_constant_receiver_exact:Category.first":3,"ruby_constant_receiver_exact:Category.find_by":2,"ruby_constant_receiver_exact:Category.includes":1},"reasons_total":11,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":3,"method_count":2,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/models/origin.rb","directory":"app/models","loc":74,"incoming":13,"outgoing":7,"total":20,"reasons":{"rails_association_decl_exact":6,"ruby_constant_receiver_exact:Origin.find_by":2,"ruby_constant_receiver_exact:Domain.find_by":1,"ruby_constant_receiver_exact:Moderation.new":1,"ruby_constant_receiver_exact:Origin.find_by!":1},"reasons_total":14,"reasons_truncated":true,"language":"ruby","rails_role":"model","declared_type_count":1,"method_count":9,"language_fact_keys":["method_symbols","symbols"]},{"node":"app/controllers/stories_controller.rb","directory":"app/controllers","loc":421,"incoming":0,"outgoing":19,"total":19,"reasons":{"constant_receiver_method_match":4,"ruby_constant_receiver_exact:Comment.where":1,"ruby_constant_receiver_exact:CommentVoteHydrator.new":1,"ruby_constant_receiver_exact:CreateStoryCardJob.perform_later":1,"ruby_constant_receiver_exact:Link.recently_linked_from_comments":1},"reasons_total":16,"reasons_truncated":true,"language":"ruby","rails_role":"controller","declared_type_count":1,"method_count":25,"language_fact_keys":["method_symbols","symbols"]}]},"node_hubs_bounds":{"by_outgoing_edges_total":307,"by_outgoing_edges_truncated":true,"by_incoming_edges_total":307,"by_incoming_edges_truncated":true,"by_total_edges_total":307,"by_total_edges_truncated":true},"directory_hubs":{"by_outgoing_edges":[{"directory":"app/models","incoming":522,"outgoing":264,"total":786,"internal_edges":206,"external_edges":374,"reasons":{"rails_association_decl_exact":200,"constant_receiver_method_match":88,"ruby_superclass_exact":68,"ruby_include_exact":24,"ruby_constant_receiver_exact:Moderation.new":14},"reasons_total":170,"reasons_truncated":true,"languages":{"ruby":46},"rails_roles":{"model":46}},{"directory":"app/controllers","incoming":31,"outgoing":128,"total":159,"internal_edges":28,"external_edges":103,"reasons":{"ruby_superclass_exact":57,"constant_receiver_method_match":22,"ruby_include_exact":7,"ruby_require_internal:provider_index":7,"ruby_constant_receiver_exact:CommentVoteHydrator.new":5},"reasons_total":57,"reasons_truncated":true,"languages":{"ruby":30},"rails_roles":{"controller":30}},{"directory":"spec/models","incoming":0,"outgoing":67,"total":67,"internal_edges":0,"external_edges":67,"reasons":{"ruby_require_internal:provider_index":26,"constant_receiver_method_match":10,"ruby_constant_receiver_exact:Moderation.count":3,"ruby_constant_receiver_exact:Moderation.last":2,"ruby_constant_receiver_exact:Tag.where":2},"reasons_total":28,"reasons_truncated":true,"languages":{"ruby":26}},{"directory":"db/old_migrations","incoming":0,"outgoing":58,"total":58,"internal_edges":0,"external_edges":58,"reasons":{"ruby_constant_receiver_exact:Comment.all":3,"ruby_constant_receiver_exact:Comment.update_all":3,"ruby_constant_receiver_exact:Story.update_all":3,"ruby_constant_receiver_exact:Story.where":3,"constant_receiver_method_match":2},"reasons_total":39,"reasons_truncated":true,"languages":{"ruby":150}},{"directory":"app/controllers/mod","incoming":13,"outgoing":49,"total":62,"internal_edges":13,"external_edges":36,"reasons":{"ruby_superclass_exact":27,"ruby_require_internal:provider_index":6,"constant_receiver_method_match":4,"ruby_constant_receiver_exact:Domain.new":2,"ruby_constant_receiver_exact:ModMailMessage.new":2},"reasons_total":25,"reasons_truncated":true,"languages":{"ruby":14},"rails_roles":{"controller":14}},{"directory":"spec/requests","incoming":0,"outgoing":42,"total":42,"internal_edges":0,"external_edges":42,"reasons":{"ruby_require_internal:provider_index":22,"constant_receiver_method_match":7,"ruby_constant_receiver_exact:ModNote.count":2,"ruby_constant_receiver_exact:Vote.where":2,"ruby_constant_receiver_exact:Category.first":1},"reasons_total":13,"reasons_truncated":true,"languages":{"ruby":22}},{"directory":"app/jobs","incoming":29,"outgoing":37,"total":66,"internal_edges":15,"external_edges":36,"reasons":{"ruby_superclass_exact":26,"constant_receiver_method_match":8,"ruby_constant_receiver_exact:CachePageJob.new":4,"ruby_constant_receiver_exact:Sponge.new":3,"ruby_constant_receiver_exact:NotifyModMailMessageJob.perform_later":2},"reasons_total":27,"reasons_truncated":true,"languages":{"ruby":14},"rails_roles":{"job":14}},{"directory":"spec/features","incoming":0,"outgoing":37,"total":37,"internal_edges":0,"external_edges":37,"reasons":{"ruby_require_internal:provider_index":17,"constant_receiver_method_match":3,"ruby_constant_receiver_exact:Moderation.last":3,"ruby_constant_receiver_exact:Hat.last":2,"ruby_constant_receiver_exact:Tag.where":2},"reasons_total":15,"reasons_truncated":true,"languages":{"ruby":17}},{"directory":"lib/tasks","incoming":2,"outgoing":23,"total":25,"internal_edges":0,"external_edges":25,"reasons":{"constant_receiver_method_match":3,"ruby_constant_receiver_exact:ApplicationRecord.descendants":2,"ruby_constant_receiver_exact:StoryText.create!":2,"ruby_constant_receiver_exact:Category.create!":1,"ruby_constant_receiver_exact:Category.find_by":1},"reasons_total":21,"reasons_truncated":true,"languages":{"ruby":9},"rails_roles":{"rake_task":9}},{"directory":"spec/extras","incoming":0,"outgoing":18,"total":18,"internal_edges":0,"external_edges":18,"reasons":{"ruby_require_internal:provider_index":9,"constant_receiver_method_match":3,"ruby_constant_receiver_exact:ActionController::Caching::Pages::PageCache.new":1,"ruby_constant_receiver_exact:Comment.new":1,"ruby_constant_receiver_exact:Routes.root_path":1},"reasons_total":8,"reasons_truncated":true,"languages":{"ruby":9}},{"directory":"spec/jobs","incoming":0,"outgoing":17,"total":17,"internal_edges":0,"external_edges":17,"reasons":{"ruby_require_internal:provider_index":7,"constant_receiver_method_match":3,"ruby_constant_receiver_exact:CachePageJob.perform_now":1,"ruby_constant_receiver_exact:CreateStoryCardJob.new":1,"ruby_constant_receiver_exact:NotifyCommentJob.perform_now":1},"reasons_total":9,"reasons_truncated":true,"languages":{"ruby":7}},{"directory":"extras","incoming":72,"outgoing":9,"total":81,"internal_edges":4,"external_edges":73,"reasons":{"constant_receiver_method_match":46,"ruby_constant_receiver_exact:Sponge.new":17,"ruby_constant_receiver_exact:Routes.story_short_id_url":5,"ruby_constant_receiver_exact:Routes.user_url":2,"ruby_constant_receiver_exact:Comment.all":1},"reasons_total":15,"reasons_truncated":true,"languages":{"ruby":9}},{"directory":"script","incoming":1,"outgoing":9,"total":10,"internal_edges":0,"external_edges":10,"reasons":{"constant_receiver_method_match":3,"ruby_constant_receiver_exact:Routes.story_short_id_url":2,"ruby_constant_receiver_exact:Comment.last":1,"ruby_constant_receiver_exact:Story.last":1,"ruby_constant_receiver_exact:Story.to_mastodon":1},"reasons_total":7,"reasons_truncated":true,"languages":{"ruby":3}},{"directory":"spec/controllers","incoming":0,"outgoing":9,"total":9,"internal_edges":0,"external_edges":9,"reasons":{"ruby_require_internal:provider_index":6,"constant_receiver_method_match":1,"ruby_constant_receiver_exact:Moderation.last":1,"ruby_constant_receiver_exact:SavedStory.create!":1},"reasons_total":4,"reasons_truncated":false,"languages":{"ruby":6}},{"directory":"spec/requests/mod","incoming":0,"outgoing":9,"total":9,"internal_edges":0,"external_edges":9,"reasons":{"ruby_require_internal:provider_index":5,"constant_receiver_method_match":1,"ruby_constant_receiver_exact:ModActivity.count":1,"ruby_constant_receiver_exact:ModMail.find_by":1,"ruby_constant_receiver_exact:Moderation.last":1},"reasons_total":5,"reasons_truncated":false,"languages":{"ruby":5}}],"by_incoming_edges":[{"directory":"app/models","incoming":522,"outgoing":264,"total":786,"internal_edges":206,"external_edges":374,"reasons":{"rails_association_decl_exact":200,"constant_receiver_method_match":88,"ruby_superclass_exact":68,"ruby_include_exact":24,"ruby_constant_receiver_exact:Moderation.new":14},"reasons_total":170,"reasons_truncated":true,"languages":{"ruby":46},"rails_roles":{"model":46}},{"directory":"spec","incoming":108,"outgoing":6,"total":114,"internal_edges":2,"external_edges":110,"reasons":{"ruby_require_internal:provider_index":110,"ruby_constant_receiver_exact:Category.create!":1,"ruby_constant_receiver_exact:InactiveUser.instance_variable_set":1,"ruby_constant_receiver_exact:Sponge.new":1,"ruby_constant_receiver_exact:User.create!":1},"reasons_total":5,"reasons_truncated":false,"languages":{"ruby":4}},{"directory":"extras","incoming":72,"outgoing":9,"total":81,"internal_edges":4,"external_edges":73,"reasons":{"constant_receiver_method_match":46,"ruby_constant_receiver_exact:Sponge.new":17,"ruby_constant_receiver_exact:Routes.story_short_id_url":5,"ruby_constant_receiver_exact:Routes.user_url":2,"ruby_constant_receiver_exact:Comment.all":1},"reasons_total":15,"reasons_truncated":true,"languages":{"ruby":9}},{"directory":"app/controllers","incoming":31,"outgoing":128,"total":159,"internal_edges":28,"external_edges":103,"reasons":{"ruby_superclass_exact":57,"constant_receiver_method_match":22,"ruby_include_exact":7,"ruby_require_internal:provider_index":7,"ruby_constant_receiver_exact:CommentVoteHydrator.new":5},"reasons_total":57,"reasons_truncated":true,"languages":{"ruby":30},"rails_roles":{"controller":30}},{"directory":"app/jobs","incoming":29,"outgoing":37,"total":66,"internal_edges":15,"external_edges":36,"reasons":{"ruby_superclass_exact":26,"constant_receiver_method_match":8,"ruby_constant_receiver_exact:CachePageJob.new":4,"ruby_constant_receiver_exact:Sponge.new":3,"ruby_constant_receiver_exact:NotifyModMailMessageJob.perform_later":2},"reasons_total":27,"reasons_truncated":true,"languages":{"ruby":14},"rails_roles":{"job":14}},{"directory":"app/models/concerns","incoming":24,"outgoing":0,"total":24,"internal_edges":0,"external_edges":24,"reasons":{"ruby_include_exact":23,"constant_receiver_method_match":1},"reasons_total":2,"reasons_truncated":false,"languages":{"ruby":3},"rails_roles":{"concern":3}},{"directory":"app/mailers","incoming":16,"outgoing":8,"total":24,"internal_edges":7,"external_edges":10,"reasons":{"ruby_superclass_exact":14,"constant_receiver_method_match":10},"reasons_total":2,"reasons_truncated":false,"languages":{"ruby":8},"rails_roles":{"mailer":8}},{"directory":"app/controllers/mod","incoming":13,"outgoing":49,"total":62,"internal_edges":13,"external_edges":36,"reasons":{"ruby_superclass_exact":27,"ruby_require_internal:provider_index":6,"constant_receiver_method_match":4,"ruby_constant_receiver_exact:Domain.new":2,"ruby_constant_receiver_exact:ModMailMessage.new":2},"reasons_total":25,"reasons_truncated":true,"languages":{"ruby":14},"rails_roles":{"controller":14}},{"directory":"config/initializers","incoming":9,"outgoing":3,"total":12,"internal_edges":1,"external_edges":10,"reasons":{"constant_receiver_method_match":8,"ruby_constant_receiver_exact:ActionController::Caching::Pages::PageCache.new":1,"ruby_constant_receiver_exact:Lobsters::Application.config":1,"ruby_constant_receiver_exact:User.find_by!":1,"ruby_require_internal:provider_index":1},"reasons_total":5,"reasons_truncated":false,"languages":{"ruby":27},"rails_roles":{"initializer":27}},{"directory":"app/helpers","incoming":6,"outgoing":6,"total":12,"internal_edges":0,"external_edges":12,"reasons":{"ruby_include_exact":6,"constant_receiver_method_match":3,"ruby_constant_receiver_exact:FlaggedCommenters.new":1,"ruby_constant_receiver_exact:Moderation.joins":1,"ruby_constant_receiver_exact:Tag.where":1},"reasons_total":5,"reasons_truncated":false,"languages":{"ruby":8},"rails_roles":{"helper":8}},{"directory":"app/controllers/concerns","incoming":5,"outgoing":4,"total":9,"internal_edges":0,"external_edges":9,"reasons":{"ruby_include_exact":5,"constant_receiver_method_match":1,"ruby_constant_receiver_exact:Story.find_by":1,"ruby_constant_receiver_exact:User.find_by":1,"ruby_constant_receiver_exact:Vote.find_by":1},"reasons_total":5,"reasons_truncated":false,"languages":{"ruby":2},"rails_roles":{"concern":2}},{"directory":"config","incoming":5,"outgoing":4,"total":9,"internal_edges":2,"external_edges":5,"reasons":{"ruby_require_internal:provider_index":5,"constant_receiver_method_match":1,"ruby_constant_receiver_exact:Lobsters::Application.config":1,"ruby_constant_receiver_exact:Lobsters::Application.load_tasks":1,"ruby_constant_receiver_exact:Story.all":1},"reasons_total":5,"reasons_truncated":false,"languages":{"ruby":8},"rails_roles":{"route_config":1}},{"directory":"lib","incoming":3,"outgoing":0,"total":3,"internal_edges":0,"external_edges":3,"reasons":{"ruby_constant_receiver_exact:TimeSeries.new":1,"ruby_extend_exact":1,"ruby_include_exact":1},"reasons_total":3,"reasons_truncated":false,"languages":{"ruby":2}},{"directory":"app/mailboxes","incoming":2,"outgoing":5,"total":7,"internal_edges":2,"external_edges":3,"reasons":{"ruby_superclass_exact":4,"ruby_constant_receiver_exact:Comment.where":1,"ruby_constant_receiver_exact:Story.where":1,"ruby_constant_receiver_exact:User.find_by":1},"reasons_total":4,"reasons_truncated":false,"languages":{"ruby":3}},{"directory":"lib/tasks","incoming":2,"outgoing":23,"total":25,"internal_edges":0,"external_edges":25,"reasons":{"constant_receiver_method_match":3,"ruby_constant_receiver_exact:ApplicationRecord.descendants":2,"ruby_constant_receiver_exact:StoryText.create!":2,"ruby_constant_receiver_exact:Category.create!":1,"ruby_constant_receiver_exact:Category.find_by":1},"reasons_total":21,"reasons_truncated":true,"languages":{"ruby":9},"rails_roles":{"rake_task":9}}],"by_total_edges":[{"directory":"app/models","incoming":522,"outgoing":264,"total":786,"internal_edges":206,"external_edges":374,"reasons":{"rails_association_decl_exact":200,"constant_receiver_method_match":88,"ruby_superclass_exact":68,"ruby_include_exact":24,"ruby_constant_receiver_exact:Moderation.new":14},"reasons_total":170,"reasons_truncated":true,"languages":{"ruby":46},"rails_roles":{"model":46}},{"directory":"app/controllers","incoming":31,"outgoing":128,"total":159,"internal_edges":28,"external_edges":103,"reasons":{"ruby_superclass_exact":57,"constant_receiver_method_match":22,"ruby_include_exact":7,"ruby_require_internal:provider_index":7,"ruby_constant_receiver_exact:CommentVoteHydrator.new":5},"reasons_total":57,"reasons_truncated":true,"languages":{"ruby":30},"rails_roles":{"controller":30}},{"directory":"spec","incoming":108,"outgoing":6,"total":114,"internal_edges":2,"external_edges":110,"reasons":{"ruby_require_internal:provider_index":110,"ruby_constant_receiver_exact:Category.create!":1,"ruby_constant_receiver_exact:InactiveUser.instance_variable_set":1,"ruby_constant_receiver_exact:Sponge.new":1,"ruby_constant_receiver_exact:User.create!":1},"reasons_total":5,"reasons_truncated":false,"languages":{"ruby":4}},{"directory":"extras","incoming":72,"outgoing":9,"total":81,"internal_edges":4,"external_edges":73,"reasons":{"constant_receiver_method_match":46,"ruby_constant_receiver_exact:Sponge.new":17,"ruby_constant_receiver_exact:Routes.story_short_id_url":5,"ruby_constant_receiver_exact:Routes.user_url":2,"ruby_constant_receiver_exact:Comment.all":1},"reasons_total":15,"reasons_truncated":true,"languages":{"ruby":9}},{"directory":"spec/models","incoming":0,"outgoing":67,"total":67,"internal_edges":0,"external_edges":67,"reasons":{"ruby_require_internal:provider_index":26,"constant_receiver_method_match":10,"ruby_constant_receiver_exact:Moderation.count":3,"ruby_constant_receiver_exact:Moderation.last":2,"ruby_constant_receiver_exact:Tag.where":2},"reasons_total":28,"reasons_truncated":true,"languages":{"ruby":26}},{"directory":"app/jobs","incoming":29,"outgoing":37,"total":66,"internal_edges":15,"external_edges":36,"reasons":{"ruby_superclass_exact":26,"constant_receiver_method_match":8,"ruby_constant_receiver_exact:CachePageJob.new":4,"ruby_constant_receiver_exact:Sponge.new":3,"ruby_constant_receiver_exact:NotifyModMailMessageJob.perform_later":2},"reasons_total":27,"reasons_truncated":true,"languages":{"ruby":14},"rails_roles":{"job":14}},{"directory":"app/controllers/mod","incoming":13,"outgoing":49,"total":62,"internal_edges":13,"external_edges":36,"reasons":{"ruby_superclass_exact":27,"ruby_require_internal:provider_index":6,"constant_receiver_method_match":4,"ruby_constant_receiver_exact:Domain.new":2,"ruby_constant_receiver_exact:ModMailMessage.new":2},"reasons_total":25,"reasons_truncated":true,"languages":{"ruby":14},"rails_roles":{"controller":14}},{"directory":"db/old_migrations","incoming":0,"outgoing":58,"total":58,"internal_edges":0,"external_edges":58,"reasons":{"ruby_constant_receiver_exact:Comment.all":3,"ruby_constant_receiver_exact:Comment.update_all":3,"ruby_constant_receiver_exact:Story.update_all":3,"ruby_constant_receiver_exact:Story.where":3,"constant_receiver_method_match":2},"reasons_total":39,"reasons_truncated":true,"languages":{"ruby":150}},{"directory":"spec/requests","incoming":0,"outgoing":42,"total":42,"internal_edges":0,"external_edges":42,"reasons":{"ruby_require_internal:provider_index":22,"constant_receiver_method_match":7,"ruby_constant_receiver_exact:ModNote.count":2,"ruby_constant_receiver_exact:Vote.where":2,"ruby_constant_receiver_exact:Category.first":1},"reasons_total":13,"reasons_truncated":true,"languages":{"ruby":22}},{"directory":"spec/features","incoming":0,"outgoing":37,"total":37,"internal_edges":0,"external_edges":37,"reasons":{"ruby_require_internal:provider_index":17,"constant_receiver_method_match":3,"ruby_constant_receiver_exact:Moderation.last":3,"ruby_constant_receiver_exact:Hat.last":2,"ruby_constant_receiver_exact:Tag.where":2},"reasons_total":15,"reasons_truncated":true,"languages":{"ruby":17}},{"directory":"lib/tasks","incoming":2,"outgoing":23,"total":25,"internal_edges":0,"external_edges":25,"reasons":{"constant_receiver_method_match":3,"ruby_constant_receiver_exact:ApplicationRecord.descendants":2,"ruby_constant_receiver_exact:StoryText.create!":2,"ruby_constant_receiver_exact:Category.create!":1,"ruby_constant_receiver_exact:Category.find_by":1},"reasons_total":21,"reasons_truncated":true,"languages":{"ruby":9},"rails_roles":{"rake_task":9}},{"directory":"app/mailers","incoming":16,"outgoing":8,"total":24,"internal_edges":7,"external_edges":10,"reasons":{"ruby_superclass_exact":14,"constant_receiver_method_match":10},"reasons_total":2,"reasons_truncated":false,"languages":{"ruby":8},"rails_roles":{"mailer":8}},{"directory":"app/models/concerns","incoming":24,"outgoing":0,"total":24,"internal_edges":0,"external_edges":24,"reasons":{"ruby_include_exact":23,"constant_receiver_method_match":1},"reasons_total":2,"reasons_truncated":false,"languages":{"ruby":3},"rails_roles":{"concern":3}},{"directory":"spec/extras","incoming":0,"outgoing":18,"total":18,"internal_edges":0,"external_edges":18,"reasons":{"ruby_require_internal:provider_index":9,"constant_receiver_method_match":3,"ruby_constant_receiver_exact:ActionController::Caching::Pages::PageCache.new":1,"ruby_constant_receiver_exact:Comment.new":1,"ruby_constant_receiver_exact:Routes.root_path":1},"reasons_total":8,"reasons_truncated":true,"languages":{"ruby":9}},{"directory":"spec/jobs","incoming":0,"outgoing":17,"total":17,"internal_edges":0,"external_edges":17,"reasons":{"ruby_require_internal:provider_index":7,"constant_receiver_method_match":3,"ruby_constant_receiver_exact:CachePageJob.perform_now":1,"ruby_constant_receiver_exact:CreateStoryCardJob.new":1,"ruby_constant_receiver_exact:NotifyCommentJob.perform_now":1},"reasons_total":9,"reasons_truncated":true,"languages":{"ruby":7}}]},"directory_hubs_bounds":{"by_outgoing_edges_total":35,"by_outgoing_edges_truncated":true,"by_incoming_edges_total":35,"by_incoming_edges_truncated":true,"by_total_edges_total":35,"by_total_edges_truncated":true},"language_hubs":{"by_language_nodes":[{"value":"ruby","count":500},{"value":"js","count":7},{"value":"python","count":1}],"by_language_outgoing_edges":[{"value":"ruby","count":849}],"by_language_incoming_edges":[{"value":"ruby","count":849}],"by_rails_role_nodes":[{"value":"model","count":46},{"value":"controller","count":44},{"value":"initializer","count":27},{"value":"migration","count":18},{"value":"job","count":14},{"value":"rake_task","count":9},{"value":"helper","count":8},{"value":"mailer","count":8},{"value":"concern","count":5},{"value":"gemfile","count":1},{"value":"rack_config","count":1},{"value":"rakefile","count":1},{"value":"route_config","count":1},{"value":"schema","count":1}],"by_rails_role_outgoing_edges":[{"value":"model","count":264},{"value":"controller","count":177},{"value":"job","count":37},{"value":"rake_task","count":23},{"value":"mailer","count":8},{"value":"migration","count":8},{"value":"helper","count":6},{"value":"concern","count":4},{"value":"gemfile","count":4},{"value":"initializer","count":3},{"value":"rakefile","count":1}],"by_rails_role_incoming_edges":[{"value":"model","count":522},{"value":"controller","count":44},{"value":"concern","count":29},{"value":"job","count":29},{"value":"mailer","count":16},{"value":"initializer","count":9},{"value":"helper","count":6},{"value":"rake_task","count":2}],"by_language_role_nodes":[{"value":"ruby:model","count":46},{"value":"ruby:controller","count":44},{"value":"ruby:initializer","count":27},{"value":"ruby:migration","count":18},{"value":"ruby:job","count":14},{"value":"ruby:rake_task","count":9},{"value":"ruby:helper","count":8},{"value":"ruby:mailer","count":8},{"value":"ruby:concern","count":5},{"value":"ruby:gemfile","count":1},{"value":"ruby:rack_config","count":1},{"value":"ruby:rakefile","count":1},{"value":"ruby:route_config","count":1},{"value":"ruby:schema","count":1}],"by_language_role_outgoing_edges":[{"value":"ruby","count":314},{"value":"ruby:model","count":264},{"value":"ruby:controller","count":177},{"value":"ruby:job","count":37},{"value":"ruby:rake_task","count":23},{"value":"ruby:mailer","count":8},{"value":"ruby:migration","count":8},{"value":"ruby:helper","count":6},{"value":"ruby:concern","count":4},{"value":"ruby:gemfile","count":4},{"value":"ruby:initializer","count":3},{"value":"ruby:rakefile","count":1}],"by_language_role_incoming_edges":[{"value":"ruby:model","count":522},{"value":"ruby","count":192},{"value":"ruby:controller","count":44},{"value":"ruby:concern","count":29},{"value":"ruby:job","count":29},{"value":"ruby:mailer","count":16},{"value":"ruby:initializer","count":9},{"value":"ruby:helper","count":6},{"value":"ruby:rake_task","count":2}],"language_reasons":{"ruby":{"ruby_require_internal:provider_index":254,"constant_receiver_method_match":230,"rails_association_decl_exact":202,"ruby_superclass_exact":196,"ruby_include_exact":68}},"rails_role_reasons":{"concern":{"ruby_include_exact":28,"constant_receiver_method_match":2,"ruby_constant_receiver_exact:Story.find_by":1,"ruby_constant_receiver_exact:User.find_by":1,"ruby_constant_receiver_exact:Vote.find_by":1},"controller":{"ruby_superclass_exact":84,"constant_receiver_method_match":26,"ruby_require_internal:provider_index":13,"ruby_include_exact":9,"ruby_constant_receiver_exact:CommentVoteHydrator.new":5},"gemfile":{"ruby_require_internal:provider_index":3,"ruby_require_internal":1},"helper":{"ruby_include_exact":6,"constant_receiver_method_match":3,"ruby_constant_receiver_exact:FlaggedCommenters.new":1,"ruby_constant_receiver_exact:Moderation.joins":1,"ruby_constant_receiver_exact:Tag.where":1},"initializer":{"constant_receiver_method_match":8,"ruby_constant_receiver_exact:ActionController::Caching::Pages::PageCache.new":1,"ruby_constant_receiver_exact:Lobsters::Application.config":1,"ruby_constant_receiver_exact:User.find_by!":1,"ruby_require_internal:provider_index":1},"job":{"ruby_superclass_exact":26,"constant_receiver_method_match":8,"ruby_constant_receiver_exact:CachePageJob.new":4,"ruby_constant_receiver_exact:Sponge.new":3,"ruby_constant_receiver_exact:NotifyModMailMessageJob.perform_later":2},"mailer":{"ruby_superclass_exact":14,"constant_receiver_method_match":10},"migration":{"ruby_constant_receiver_exact:User.where":2,"ruby_constant_receiver_exact:Comment.where":1,"ruby_constant_receiver_exact:Domain.where":1,"ruby_constant_receiver_exact:Message.where":1,"ruby_constant_receiver_exact:Moderation.create!":1},"model":{"rails_association_decl_exact":200,"constant_receiver_method_match":88,"ruby_superclass_exact":68,"ruby_include_exact":24,"ruby_constant_receiver_exact:Moderation.new":14},"rake_task":{"constant_receiver_method_match":3,"ruby_constant_receiver_exact:ApplicationRecord.descendants":2,"ruby_constant_receiver_exact:StoryText.create!":2,"ruby_constant_receiver_exact:Category.create!":1,"ruby_constant_receiver_exact:Category.find_by":1},"rakefile":{"ruby_constant_receiver_exact:Lobsters::Application.load_tasks":1}},"language_role_reasons":{"ruby":{"ruby_require_internal:provider_index":224,"constant_receiver_method_match":82,"ruby_constant_receiver_exact:Sponge.new":19,"ruby_constant_receiver_exact:Moderation.last":8,"ruby_constant_receiver_exact:Routes.story_short_id_url":7},"ruby:concern":{"ruby_include_exact":28,"constant_receiver_method_match":2,"ruby_constant_receiver_exact:Story.find_by":1,"ruby_constant_receiver_exact:User.find_by":1,"ruby_constant_receiver_exact:Vote.find_by":1},"ruby:controller":{"ruby_superclass_exact":84,"constant_receiver_method_match":26,"ruby_require_internal:provider_index":13,"ruby_include_exact":9,"ruby_constant_receiver_exact:CommentVoteHydrator.new":5},"ruby:gemfile":{"ruby_require_internal:provider_index":3,"ruby_require_internal":1},"ruby:helper":{"ruby_include_exact":6,"constant_receiver_method_match":3,"ruby_constant_receiver_exact:FlaggedCommenters.new":1,"ruby_constant_receiver_exact:Moderation.joins":1,"ruby_constant_receiver_exact:Tag.where":1},"ruby:initializer":{"constant_receiver_method_match":8,"ruby_constant_receiver_exact:ActionController::Caching::Pages::PageCache.new":1,"ruby_constant_receiver_exact:Lobsters::Application.config":1,"ruby_constant_receiver_exact:User.find_by!":1,"ruby_require_internal:provider_index":1},"ruby:job":{"ruby_superclass_exact":26,"constant_receiver_method_match":8,"ruby_constant_receiver_exact:CachePageJob.new":4,"ruby_constant_receiver_exact:Sponge.new":3,"ruby_constant_receiver_exact:NotifyModMailMessageJob.perform_later":2},"ruby:mailer":{"ruby_superclass_exact":14,"constant_receiver_method_match":10},"ruby:migration":{"ruby_constant_receiver_exact:User.where":2,"ruby_constant_receiver_exact:Comment.where":1,"ruby_constant_receiver_exact:Domain.where":1,"ruby_constant_receiver_exact:Message.where":1,"ruby_constant_receiver_exact:Moderation.create!":1},"ruby:model":{"rails_association_decl_exact":200,"constant_receiver_method_match":88,"ruby_superclass_exact":68,"ruby_include_exact":24,"ruby_constant_receiver_exact:Moderation.new":14},"ruby:rake_task":{"constant_receiver_method_match":3,"ruby_constant_receiver_exact:ApplicationRecord.descendants":2,"ruby_constant_receiver_exact:StoryText.create!":2,"ruby_constant_receiver_exact:Category.create!":1,"ruby_constant_receiver_exact:Category.find_by":1},"ruby:rakefile":{"ruby_constant_receiver_exact:Lobsters::Application.load_tasks":1}}},"language_hubs_bounds":{"by_language_nodes_total":3,"by_language_nodes_truncated":false,"by_language_outgoing_edges_total":1,"by_language_outgoing_edges_truncated":false,"by_language_incoming_edges_total":1,"by_language_incoming_edges_truncated":false,"by_rails_role_nodes_total":14,"by_rails_role_nodes_truncated":false,"by_rails_role_outgoing_edges_total":11,"by_rails_role_outgoing_edges_truncated":false,"by_rails_role_incoming_edges_total":8,"by_rails_role_incoming_edges_truncated":false,"by_language_role_nodes_total":14,"by_language_role_nodes_truncated":false,"by_language_role_outgoing_edges_total":12,"by_language_role_outgoing_edges_truncated":false,"by_language_role_incoming_edges_total":9,"by_language_role_incoming_edges_truncated":false,"language_reasons_total":{"ruby":197},"language_reasons_truncated":{"ruby":true},"rails_role_reasons_total":{"concern":5,"controller":68,"gemfile":2,"helper":5,"initializer":5,"job":27,"mailer":2,"migration":7,"model":170,"rake_task":21,"rakefile":1},"rails_role_reasons_truncated":{"concern":false,"controller":true,"gemfile":false,"helper":false,"initializer":false,"job":true,"mailer":false,"migration":true,"model":true,"rake_task":true,"rakefile":false},"language_role_reasons_total":{"ruby":108,"ruby:concern":5,"ruby:controller":68,"ruby:gemfile":2,"ruby:helper":5,"ruby:initializer":5,"ruby:job":27,"ruby:mailer":2,"ruby:migration":7,"ruby:model":170,"ruby:rake_task":21,"ruby:rakefile":1},"language_role_reasons_truncated":{"ruby":true,"ruby:concern":false,"ruby:controller":true,"ruby:gemfile":false,"ruby:helper":false,"ruby:initializer":false,"ruby:job":true,"ruby:mailer":false,"ruby:migration":true,"ruby:model":true,"ruby:rake_task":true,"ruby:rakefile":false}},"reason_hubs":{"by_reason":[{"value":"ruby_require_internal:provider_index","count":127},{"value":"constant_receiver_method_match","count":115},{"value":"rails_association_decl_exact","count":101},{"value":"ruby_superclass_exact","count":98},{"value":"ruby_include_exact","count":34},{"value":"ruby_constant_receiver_exact:Sponge.new","count":13},{"value":"ruby_constant_receiver_exact:Tag.where","count":12},{"value":"ruby_constant_receiver_exact:User.where","count":10},{"value":"ruby_constant_receiver_exact:Story.where","count":9},{"value":"ruby_constant_receiver_exact:User.find_by","count":9},{"value":"ruby_constant_receiver_exact:Moderation.last","count":8},{"value":"ruby_constant_receiver_exact:Moderation.new","count":8},{"value":"ruby_constant_receiver_exact:Moderation.create!","count":7},{"value":"ruby_constant_receiver_exact:Category.create!","count":6},{"value":"ruby_constant_receiver_exact:Comment.where","count":6}]},"reason_hubs_bounds":{"by_reason_total":197,"by_reason_truncated":true}}}