{"action":"created","comment":{"url":"https://api.github.com/repos/chanzuckerberg/idseq-web/pulls/comments/191589409","pull_request_review_id":124190394,"id":191589409,"diff_hunk":"@@ -160,31 +160,190 @@ def succeeded?\n     job_status == STATUS_CHECKED\n   end\n \n-  def update_job_status\n-    prs = active_stage\n-    all_stages_succeeded = prs.nil?\n-    if all_stages_succeeded\n-      self.finalized = 1\n-      self.job_status = STATUS_CHECKED\n+  def db_load_host_filtering\n+    # Load version info applicable to host filtering\n+    version_s3_path = \"#{host_filter_output_s3_path}/#{VERSION_JSON_NAME}\"\n+    self.version = `aws s3 cp #{version_s3_path} -`\n+\n+    # Check if input was truncated\n+    truncation_file = \"#{host_filter_output_s3_path}/#{INPUT_TRUNCATED_FILE}\"\n+    _stdout, _stderr, status = Open3.capture3(\"aws\", \"s3\", \"ls\", truncation_file)\n+    self.truncated = `aws s3 cp #{truncation_file} -`.split(\"\\n\")[0].to_i if status.exitstatus.zero?\n+    save\n+\n+    # Load ERCC counts\n+    load_ercc_counts\n+  end\n+\n+  def output_json_name\n+    multihit? ? MULTIHIT_OUTPUT_JSON_NAME : OUTPUT_JSON_NAME\n+  end\n+\n+  def invalid_family_call?(tcnt)\n+    # TODO:  Better family support.\n+    tcnt['family_taxid'].to_i < TaxonLineage::INVALID_CALL_BASE_ID\n+  rescue\n+    false\n+  end\n+\n+  def load_job_stats(stats_json_s3_path)\n+    downloaded_stats_path = PipelineRun.download_file(stats_json_s3_path, local_json_path)\n+    return unless downloaded_stats_path\n+    stats_array = JSON.parse(File.read(downloaded_stats_path))\n+    update(total_reads: (stats_array[0] || {})['total_reads'] || 0)\n+    stats_array = stats_array.select { |entry| entry.key?(\"task\") }\n+    job_stats.destroy_all\n+    update(job_stats_attributes: stats_array)\n+    _stdout, _stderr, _status = Open3.capture3(\"rm -f #{downloaded_stats_path}\")\n+  end\n+\n+  def load_taxon_counts\n+    output_json_s3_path = \"#{alignment_output_s3_path}/#{output_json_name}\"\n+    downloaded_json_path = PipelineRun.download_file(output_json_s3_path, local_json_path)\n+    return unless downloaded_json_path\n+\n+    json_dict = JSON.parse(File.read(downloaded_json_path))\n+    pipeline_output_dict = json_dict['pipeline_output']\n+    pipeline_output_dict.slice!('remaining_reads', 'total_reads', 'taxon_counts_attributes')\n+    self.total_reads = pipeline_output_dict['total_reads']\n+    self.remaining_reads = pipeline_output_dict['remaining_reads']\n+    self.unmapped_reads = count_unmapped_reads\n+    self.fraction_subsampled = subsample_fraction\n+    save\n+\n+    version_s3_path = \"#{alignment_output_s3_path}/#{VERSION_JSON_NAME}\"\n+    update(version: `aws s3 cp #{version_s3_path} -`)\n+\n+    # only keep counts at certain taxonomic levels\n+    taxon_counts_attributes_filtered = []\n+    acceptable_tax_levels = [TaxonCount::TAX_LEVEL_SPECIES]\n+    acceptable_tax_levels << TaxonCount::TAX_LEVEL_GENUS if multihit?\n+    acceptable_tax_levels << TaxonCount::TAX_LEVEL_FAMILY if multihit?\n+    pipeline_output_dict['taxon_counts_attributes'].each do |tcnt|\n+      # TODO:  Better family support.\n+      if acceptable_tax_levels.include?(tcnt['tax_level'].to_i) && !invalid_family_call?(tcnt)\n+        taxon_counts_attributes_filtered << tcnt\n+      end\n+    end\n+    update(taxon_counts_attributes: taxon_counts_attributes_filtered)\n+    update(updated_at: Time.now.utc) # for TaxonLineage date range comparison\n+\n+    # aggregate the data at genus level\n+    generate_aggregate_counts('genus') unless multihit?\n+    # merge more accurate name information from lineages table\n+    update_names\n+    # denormalize superkingdom_taxid into taxon_counts\n+    if multihit?\n+      update_superkingdoms\n+    else\n+      update_genera\n+    end\n+    # label taxa as phage or non-phage\n+    update_is_phage\n+\n+    # rm the json\n+    _stdout, _stderr, _status = Open3.capture3(\"rm -f #{downloaded_json_path}\")\n+  end\n+\n+  def db_load_alignment\n+    load_taxon_counts\n+  end\n+\n+  def db_load_postprocess\n+    byteranges_json_s3_path = \"#{postprocess_output_s3_path}/#{TAXID_BYTERANGE_JSON_NAME}\"\n+    downloaded_byteranges_path = PipelineRun.download_file(byteranges_json_s3_path, local_json_path)\n+    taxon_byteranges_csv_file = \"#{local_json_path}/taxon_byteranges\"\n+    hash_array_json2csv(downloaded_byteranges_path, taxon_byteranges_csv_file, %w[taxid hit_type first_byte last_byte])\n+    ` cd #{local_json_path};\n+      sed -e 's/$/,#{id}/' -i taxon_byteranges;\n+      mysqlimport --replace --local --user=$DB_USERNAME --host=#{rds_host} --password=$DB_PASSWORD --columns=taxid,hit_type,first_byte,last_byte,pipeline_run_id --fields-terminated-by=',' idseq_#{Rails.env} taxon_byteranges;\n+    `\n+    _stdout, _stderr, _status = Open3.capture3(\"rm -f #{downloaded_byteranges_path}\")\n+  end\n+\n+  def s3_output_for(db_load_command)\n+    case db_load_command\n+    when \"db_load_host_filtering\"\n+      \"#{host_filter_output_s3_path}/#{STATS_JSON_NAME}\"\n+    when \"db_load_alignment\"\n+      \"#{alignment_output_s3_path}/#{output_json_name}\"\n+    when \"db_load_postprocess\"\n+      \"#{postprocess_output_s3_path}/#{TAXID_BYTERANGE_JSON_NAME}\"\n+    end\n+  end\n+\n+  def output_ready?(db_load_command)\n+    file_generated_since_run(s3_output_for(db_load_command))\n+  end\n+\n+  def update_result_status(field, value)\n+    status_hash = result_status ? JSON.parse(result_status) : {}\n+    status_hash[field] = value\n+    update(result_status: status_hash.to_json)\n+  end\n+\n+  def result_status_for(field)\n+    status_hash = result_status ? JSON.parse(result_status) : {}\n+    status_hash[field]\n+  end\n+\n+  def check_and_enqueue(db_load_command_name)\n+    if output_ready?(db_load_command_name) && ![STATUS_LOADED, STATUS_LOADING].include?(result_status_for(db_load_command_name))\n+      update_result_status(db_load_command_name, STATUS_LOADING)\n+      Resque.enqueue(ResultMonitorLoad, id, db_load_command_name)\n+    end\n+  end\n+\n+  def monitor_results","path":"app/models/pipeline_run.rb","position":218,"original_position":218,"commit_id":"8850c26a8aeda76d97008b151591f460b96e04a2","original_commit_id":"8850c26a8aeda76d97008b151591f460b96e04a2","user":{"login":"codeclimate[bot]","id":36754821,"avatar_url":"https://avatars0.githubusercontent.com/in/9403?v=4","gravatar_id":"","url":"https://api.github.com/users/codeclimate%5Bbot%5D","html_url":"https://github.com/apps/codeclimate","followers_url":"https://api.github.com/users/codeclimate%5Bbot%5D/followers","following_url":"https://api.github.com/users/codeclimate%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/codeclimate%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/codeclimate%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codeclimate%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/codeclimate%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/codeclimate%5Bbot%5D/repos","events_url":"https://api.github.com/users/codeclimate%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/codeclimate%5Bbot%5D/received_events","type":"Bot","site_admin":false},"body":"Method `monitor_results` has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.","created_at":"2018-05-29T22:07:45Z","updated_at":"2018-05-29T22:07:45Z","html_url":"https://github.com/chanzuckerberg/idseq-web/pull/1318#discussion_r191589409","pull_request_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/pulls/1318","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/chanzuckerberg/idseq-web/pulls/comments/191589409"},"html":{"href":"https://github.com/chanzuckerberg/idseq-web/pull/1318#discussion_r191589409"},"pull_request":{"href":"https://api.github.com/repos/chanzuckerberg/idseq-web/pulls/1318"}}},"pull_request":{"url":"https://api.github.com/repos/chanzuckerberg/idseq-web/pulls/1318","id":190066073,"html_url":"https://github.com/chanzuckerberg/idseq-web/pull/1318","diff_url":"https://github.com/chanzuckerberg/idseq-web/pull/1318.diff","patch_url":"https://github.com/chanzuckerberg/idseq-web/pull/1318.patch","issue_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/issues/1318","number":1318,"state":"open","locked":false,"title":"WIP - separate result monitor from job monitor","user":{"login":"cdebourcy","id":16944816,"avatar_url":"https://avatars2.githubusercontent.com/u/16944816?v=4","gravatar_id":"","url":"https://api.github.com/users/cdebourcy","html_url":"https://github.com/cdebourcy","followers_url":"https://api.github.com/users/cdebourcy/followers","following_url":"https://api.github.com/users/cdebourcy/following{/other_user}","gists_url":"https://api.github.com/users/cdebourcy/gists{/gist_id}","starred_url":"https://api.github.com/users/cdebourcy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cdebourcy/subscriptions","organizations_url":"https://api.github.com/users/cdebourcy/orgs","repos_url":"https://api.github.com/users/cdebourcy/repos","events_url":"https://api.github.com/users/cdebourcy/events{/privacy}","received_events_url":"https://api.github.com/users/cdebourcy/received_events","type":"User","site_admin":false},"body":"Separates result monitoring from the current pipeline_monitor / update_job_status functionality.\r\nGoes with https://github.com/chanzuckerberg/idseq-pipeline/pull/216/files which makes sure the last_output_in_stage files get uploaded.\r\n\r\nTested on small water sample which got successfully uploaded and processed from scratch without need for manual intervention. Report, fasta download, alignment viz all available.\r\n\r\nTo do: fix status displays - identified 2 issues:\r\n- user-facing status never changed to COMPLETE:\r\n![image](https://user-images.githubusercontent.com/16944816/40581593-bc926364-6111-11e8-813e-d49497dfbbd2.png)\r\n- backend-facing job monitor moved stages along successfully but did not show the correct status display:\r\n![image](https://user-images.githubusercontent.com/16944816/40581598-ede7e2e0-6111-11e8-8218-c7d2c25aeead.png)\r\n","created_at":"2018-05-23T18:30:19Z","updated_at":"2018-05-29T22:07:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b3dd453e24bcb7627b64eb0da22cc5c5d81aa11d","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/pulls/1318/commits","review_comments_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/pulls/1318/comments","review_comment_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/pulls/comments{/number}","comments_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/issues/1318/comments","statuses_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/statuses/8850c26a8aeda76d97008b151591f460b96e04a2","head":{"label":"chanzuckerberg:charles/result-monitor","ref":"charles/result-monitor","sha":"8850c26a8aeda76d97008b151591f460b96e04a2","user":{"login":"chanzuckerberg","id":19917299,"avatar_url":"https://avatars2.githubusercontent.com/u/19917299?v=4","gravatar_id":"","url":"https://api.github.com/users/chanzuckerberg","html_url":"https://github.com/chanzuckerberg","followers_url":"https://api.github.com/users/chanzuckerberg/followers","following_url":"https://api.github.com/users/chanzuckerberg/following{/other_user}","gists_url":"https://api.github.com/users/chanzuckerberg/gists{/gist_id}","starred_url":"https://api.github.com/users/chanzuckerberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chanzuckerberg/subscriptions","organizations_url":"https://api.github.com/users/chanzuckerberg/orgs","repos_url":"https://api.github.com/users/chanzuckerberg/repos","events_url":"https://api.github.com/users/chanzuckerberg/events{/privacy}","received_events_url":"https://api.github.com/users/chanzuckerberg/received_events","type":"Organization","site_admin":false},"repo":{"id":99148438,"name":"idseq-web","full_name":"chanzuckerberg/idseq-web","owner":{"login":"chanzuckerberg","id":19917299,"avatar_url":"https://avatars2.githubusercontent.com/u/19917299?v=4","gravatar_id":"","url":"https://api.github.com/users/chanzuckerberg","html_url":"https://github.com/chanzuckerberg","followers_url":"https://api.github.com/users/chanzuckerberg/followers","following_url":"https://api.github.com/users/chanzuckerberg/following{/other_user}","gists_url":"https://api.github.com/users/chanzuckerberg/gists{/gist_id}","starred_url":"https://api.github.com/users/chanzuckerberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chanzuckerberg/subscriptions","organizations_url":"https://api.github.com/users/chanzuckerberg/orgs","repos_url":"https://api.github.com/users/chanzuckerberg/repos","events_url":"https://api.github.com/users/chanzuckerberg/events{/privacy}","received_events_url":"https://api.github.com/users/chanzuckerberg/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/chanzuckerberg/idseq-web","description":"Infectious Disease Sequencing Platform","fork":false,"url":"https://api.github.com/repos/chanzuckerberg/idseq-web","forks_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/forks","keys_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/keys{/key_id}","collaborators_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/teams","hooks_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/hooks","issue_events_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/issues/events{/number}","events_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/events","assignees_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/assignees{/user}","branches_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/branches{/branch}","tags_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/tags","blobs_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/git/refs{/sha}","trees_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/git/trees{/sha}","statuses_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/statuses/{sha}","languages_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/languages","stargazers_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/stargazers","contributors_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/contributors","subscribers_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/subscribers","subscription_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/subscription","commits_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/commits{/sha}","git_commits_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/git/commits{/sha}","comments_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/comments{/number}","issue_comment_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/issues/comments{/number}","contents_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/contents/{+path}","compare_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/compare/{base}...{head}","merges_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/merges","archive_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/downloads","issues_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/issues{/number}","pulls_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/pulls{/number}","milestones_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/milestones{/number}","notifications_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/labels{/name}","releases_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/releases{/id}","deployments_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/deployments","created_at":"2017-08-02T18:24:03Z","updated_at":"2018-05-29T20:10:59Z","pushed_at":"2018-05-29T22:06:59Z","git_url":"git://github.com/chanzuckerberg/idseq-web.git","ssh_url":"git@github.com:chanzuckerberg/idseq-web.git","clone_url":"https://github.com/chanzuckerberg/idseq-web.git","svn_url":"https://github.com/chanzuckerberg/idseq-web","homepage":"https://idseq.net/","size":46385,"stargazers_count":6,"watchers_count":6,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":124,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":1,"open_issues":124,"watchers":6,"default_branch":"master"}},"base":{"label":"chanzuckerberg:master","ref":"master","sha":"1440324ad1010719452b3fb80d8a921949fb101f","user":{"login":"chanzuckerberg","id":19917299,"avatar_url":"https://avatars2.githubusercontent.com/u/19917299?v=4","gravatar_id":"","url":"https://api.github.com/users/chanzuckerberg","html_url":"https://github.com/chanzuckerberg","followers_url":"https://api.github.com/users/chanzuckerberg/followers","following_url":"https://api.github.com/users/chanzuckerberg/following{/other_user}","gists_url":"https://api.github.com/users/chanzuckerberg/gists{/gist_id}","starred_url":"https://api.github.com/users/chanzuckerberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chanzuckerberg/subscriptions","organizations_url":"https://api.github.com/users/chanzuckerberg/orgs","repos_url":"https://api.github.com/users/chanzuckerberg/repos","events_url":"https://api.github.com/users/chanzuckerberg/events{/privacy}","received_events_url":"https://api.github.com/users/chanzuckerberg/received_events","type":"Organization","site_admin":false},"repo":{"id":99148438,"name":"idseq-web","full_name":"chanzuckerberg/idseq-web","owner":{"login":"chanzuckerberg","id":19917299,"avatar_url":"https://avatars2.githubusercontent.com/u/19917299?v=4","gravatar_id":"","url":"https://api.github.com/users/chanzuckerberg","html_url":"https://github.com/chanzuckerberg","followers_url":"https://api.github.com/users/chanzuckerberg/followers","following_url":"https://api.github.com/users/chanzuckerberg/following{/other_user}","gists_url":"https://api.github.com/users/chanzuckerberg/gists{/gist_id}","starred_url":"https://api.github.com/users/chanzuckerberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chanzuckerberg/subscriptions","organizations_url":"https://api.github.com/users/chanzuckerberg/orgs","repos_url":"https://api.github.com/users/chanzuckerberg/repos","events_url":"https://api.github.com/users/chanzuckerberg/events{/privacy}","received_events_url":"https://api.github.com/users/chanzuckerberg/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/chanzuckerberg/idseq-web","description":"Infectious Disease Sequencing Platform","fork":false,"url":"https://api.github.com/repos/chanzuckerberg/idseq-web","forks_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/forks","keys_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/keys{/key_id}","collaborators_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/teams","hooks_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/hooks","issue_events_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/issues/events{/number}","events_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/events","assignees_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/assignees{/user}","branches_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/branches{/branch}","tags_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/tags","blobs_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/git/refs{/sha}","trees_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/git/trees{/sha}","statuses_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/statuses/{sha}","languages_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/languages","stargazers_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/stargazers","contributors_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/contributors","subscribers_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/subscribers","subscription_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/subscription","commits_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/commits{/sha}","git_commits_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/git/commits{/sha}","comments_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/comments{/number}","issue_comment_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/issues/comments{/number}","contents_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/contents/{+path}","compare_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/compare/{base}...{head}","merges_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/merges","archive_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/downloads","issues_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/issues{/number}","pulls_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/pulls{/number}","milestones_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/milestones{/number}","notifications_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/labels{/name}","releases_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/releases{/id}","deployments_url":"https://api.github.com/repos/chanzuckerberg/idseq-web/deployments","created_at":"2017-08-02T18:24:03Z","updated_at":"2018-05-29T20:10:59Z","pushed_at":"2018-05-29T22:06:59Z","git_url":"git://github.com/chanzuckerberg/idseq-web.git","ssh_url":"git@github.com:chanzuckerberg/idseq-web.git","clone_url":"https://github.com/chanzuckerberg/idseq-web.git","svn_url":"https://github.com/chanzuckerberg/idseq-web","homepage":"https://idseq.net/","size":46385,"stargazers_count":6,"watchers_count":6,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":124,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":1,"open_issues":124,"watchers":6,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/chanzuckerberg/idseq-web/pulls/1318"},"html":{"href":"https://github.com/chanzuckerberg/idseq-web/pull/1318"},"issue":{"href":"https://api.github.com/repos/chanzuckerberg/idseq-web/issues/1318"},"comments":{"href":"https://api.github.com/repos/chanzuckerberg/idseq-web/issues/1318/comments"},"review_comments":{"href":"https://api.github.com/repos/chanzuckerberg/idseq-web/pulls/1318/comments"},"review_comment":{"href":"https://api.github.com/repos/chanzuckerberg/idseq-web/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/chanzuckerberg/idseq-web/pulls/1318/commits"},"statuses":{"href":"https://api.github.com/repos/chanzuckerberg/idseq-web/statuses/8850c26a8aeda76d97008b151591f460b96e04a2"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"codeclimate"}}