From 80d12c0a1f14740d067d2d6baffb9c5359a3720e Mon Sep 17 00:00:00 2001 From: Matthew Gaughan Date: Wed, 18 Dec 2024 16:55:11 -0600 Subject: [PATCH] phabricator script --- src/expand_dumps.ipynb | 0 src/get_dumps.py | 3 + src/helper_scripts/repo_collection.py | 2 +- src/lib/get_dumps.py | 3 + src/lib/phab_get.ipynb | 303 ++++++++++++++++++++++++++ src/lib/phab_get.py | 62 ++++++ 6 files changed, 372 insertions(+), 1 deletion(-) create mode 100644 src/expand_dumps.ipynb create mode 100644 src/get_dumps.py create mode 100644 src/lib/phab_get.ipynb diff --git a/src/expand_dumps.ipynb b/src/expand_dumps.ipynb new file mode 100644 index 0000000..e69de29 diff --git a/src/get_dumps.py b/src/get_dumps.py new file mode 100644 index 0000000..20775e7 --- /dev/null +++ b/src/get_dumps.py @@ -0,0 +1,3 @@ +import wget +import os +import sys diff --git a/src/helper_scripts/repo_collection.py b/src/helper_scripts/repo_collection.py index 9de098b..2467c88 100644 --- a/src/helper_scripts/repo_collection.py +++ b/src/helper_scripts/repo_collection.py @@ -32,5 +32,5 @@ for repo in repos.keys(): print(repos[repo]["from_date"]) print(repos[repo]["to_date"]) repo_info = repos[repo] - repo_lifecycle(repo_info['url'], repo_location + repo + "/tmp", repo_info["from_date"], repo_info["to_date"], to_save=True) + repo_lifecycle(repo_info['url'], repo_location + repo + "/tmp", repo_info["from_date"], repo_info["to_date"], to_save=True, csv_loc_prefix=file_location) diff --git a/src/lib/get_dumps.py b/src/lib/get_dumps.py index e69de29..908faef 100644 --- a/src/lib/get_dumps.py +++ b/src/lib/get_dumps.py @@ -0,0 +1,3 @@ +import os +import sys +import wget \ No newline at end of file diff --git a/src/lib/phab_get.ipynb b/src/lib/phab_get.ipynb new file mode 100644 index 0000000..f863482 --- /dev/null +++ b/src/lib/phab_get.ipynb @@ -0,0 +1,303 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "#from phabricator import Phabricator\n", + "import os, sys\n", + "import json\n", + "import numpy as np\n", + "import pandas as pd\n", + "import requests\n", + "import re\n", + "import datetime\n", + "import time" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# phab=Phabricator(\"https://phabricator.wikimedia.org/\")\n", + "tags = [\n", + " \"VisualEditor\",\n", + " \"Parsoid\"\n", + "]\n", + "\n", + "#set phabricator api token\n", + "token = \"api-wurg254ciq5uvfxlr4rszn5ynpy4\"\n", + "api_base = 'https://phabricator.wikimedia.org/api/'" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# the query task taken from MGerlach's notebook\n", + "def query_task_tag(\n", + " tag_term, \n", + " limit = 100, \n", + " ts1 = None, ts2 = None,\n", + " api_url_base = 'https://phabricator.wikimedia.org/api/maniphest.search',\n", + " api_token = \"api-wurg254ciq5uvfxlr4rszn5ynpy4\",\n", + " sleep = 1\n", + "):\n", + " '''\n", + " query all tasks tagged with specific tag\n", + " OPTIONAL:\n", + " - limit (int, default=100), number of results per query, cannot be larger than 100\n", + " - ts1, ts2 (int, default = None); timewindow for creation of tasks (timestamp)\n", + " - sleep (int, default = 0), sleep between each query\n", + " - api_url_base (str,) is the url for the api\n", + " - api_token (str, default=martins token), \n", + "\n", + " RETURNS:\n", + " - list of dictionary.\n", + " '''\n", + " time.sleep(sleep)\n", + " to_query = 1\n", + " after = None\n", + "\n", + " data = []\n", + "\n", + " while to_query == 1:\n", + "\n", + " params = {\n", + " 'api.token' : api_token,\n", + " 'constraints[query]':[tag_term], ## term that task is searched for with\n", + " #'constraints[projects]':[\"VisualEditor\"], ## term that task is tagged with\n", + " 'constraints[createdStart]':ts1, ## timestamp task creation (min)\n", + " 'constraints[createdEnd]':ts2, ## timestamp task creation (max)\n", + " 'limit':limit,\n", + " 'after':after,\n", + " \"attachments[subscribers]\":\"true\",\n", + " }\n", + "\n", + " response = requests.get( api_url_base, params=params)\n", + " print(response)\n", + " result = json.loads(response.text)['result']\n", + " print(result)\n", + " ## the data\n", + " data_tmp = result['data']\n", + " data += data_tmp\n", + " ## check if there are more results to query\n", + " cursor = result['cursor']\n", + " ## if after == None, no more queries\n", + " if cursor['after'] == None:\n", + " to_query = 0\n", + " ## if after != None, query next page by passing after-argument\n", + " else:\n", + " after = cursor['after']\n", + " return data" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "{'data': [{'id': 44655, 'type': 'TASK', 'phid': 'PHID-TASK-jye77ivrdahrtvdtxmyb', 'fields': {'name': 'VisualEditor: Backspace creating a slug then deletes again', 'description': {'raw': 'Pressing backspace creating a slug then deletes again:\\n\\n* Create a new page (or go to an existing one), and enter \"AB\\\\nCD\\\\nEF\"\\n* Place the cursor down-page of \"F\" and press backspace; \"F\" is deleted correctly.\\n* Then press backspace again; \"E\" is deleted, as is the remaining slug, and the cursor moves us.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: critical'}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-s7sn3zjthnxvep34c5ho', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 100, 'name': 'Unbreak Now!', 'color': 'pink'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354754116, 'spacePHID': None, 'dateCreated': 1354563540, 'dateModified': 1454004173, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42655', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-s7sn3zjthnxvep34c5ho', 'PHID-USER-sai77mtxmpqnm6pycyvz'], 'subscriberCount': 3, 'viewerIsSubscribed': False}}}, {'id': 44654, 'type': 'TASK', 'phid': 'PHID-TASK-v466mnsvk3gmqhazwrti', 'fields': {'name': 'VisualEditor: Implement \"Show changes\" (wikitext diff) in Save dialog', 'description': {'raw': '\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: major'}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-sai77mtxmpqnm6pycyvz', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 100, 'name': 'Unbreak Now!', 'color': 'pink'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1355176624, 'spacePHID': None, 'dateCreated': 1354562580, 'dateModified': 1454004173, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42654', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44555, 'type': 'TASK', 'phid': 'PHID-TASK-wh5lwbsbwcapw3b5fkjp', 'fields': {'name': 'VisualEditor: Paragraph changed to be a heading using the drop-down has its content deleted', 'description': {'raw': 'A paragraph when changed to be a heading using the toolbar drop-down has its content deleted (but the presence still stays).\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: critical'}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 100, 'name': 'Unbreak Now!', 'color': 'pink'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354225226, 'spacePHID': None, 'dateCreated': 1354218900, 'dateModified': 1454004177, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42555', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-24djtv3gj5gua2y6u2g5', 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44401, 'type': 'TASK', 'phid': 'PHID-TASK-6tkrmk42gm6l4ttp56da', 'fields': {'name': 'VisualEditor: Backwards selection fails over inline alien nodes', 'description': {'raw': 'Start with an article with an inline alien - e.g. \"ABC:-)DEF\". Place cursor \"up page\" (in LTR, left) of inline alien; selection with keyboard down-page works as expected. Now place the cursor \"down page\" (in LTR, right) of the inline alien; selection with keyboard up-page fails when reaching the alien, clearing the selection and placing the cursor immediately up-page of the alien.\\n\\nNote that in RTL this appears to work fine(!).\\n\\nConfirmed in both Chrome and Firefox.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-s7sn3zjthnxvep34c5ho', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 100, 'name': 'Unbreak Now!', 'color': 'pink'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354066309, 'spacePHID': None, 'dateCreated': 1353718440, 'dateModified': 1454004181, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42401', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-s7sn3zjthnxvep34c5ho', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44400, 'type': 'TASK', 'phid': 'PHID-TASK-7hihps7ry67el6iq5omz', 'fields': {'name': 'VisualEditor: Pass reference to data element to DM node constructor', 'description': {'raw': 'Post-December cleanup:\\n\\nRather than passing the type, length, attributes and (soon) annotations into the dm.Node constructors separately, we should just pass a reference to the data element. This will make a lot of things cleaner, and make the constructors more consistent between node types.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 100, 'name': 'Unbreak Now!', 'color': 'pink'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354056487, 'spacePHID': None, 'dateCreated': 1353704640, 'dateModified': 1454004182, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42400', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 3, 'viewerIsSubscribed': False}}}, {'id': 44282, 'type': 'TASK', 'phid': 'PHID-TASK-vfbpfzavk4xiw4bzbauh', 'fields': {'name': 'VisualEditor: Link inspector should edit existing annotation rather than creating new one', 'description': {'raw': 'When editing an existing link, the link inspector should grab the existing annotation and edit it, rather than starting over with a brand new annotation.\\n\\nDestroying the existing annotation loses metadata we need for preserving syntactical variation (hrefPrefix and origTitle), which means that currently, simply inspecting a link without actually changing its target can cause that link to be changed in the wikitext.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'status': {'value': 'declined', 'name': 'Declined', 'color': None}, 'priority': {'value': 100, 'name': 'Unbreak Now!', 'color': 'pink'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353971898, 'spacePHID': None, 'dateCreated': 1353380340, 'dateModified': 1454004182, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42282', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44277, 'type': 'TASK', 'phid': 'PHID-TASK-euqyxfrrhmfrgg76hheq', 'fields': {'name': 'VisualEditor: First character in empty document behaves strangely in Firefox', 'description': {'raw': 'Steps to reproduce:\\n1. Go to a nonexistent page\\n2. Click the Create tab\\n3. Type \"foobar\"\\n\\nResult: \"f\" appears on a line by itself, \"oobar\" appears on the next line. The document model only contains \"oobar\". The \"f\" jumps around when rerendering (e.g. when you press enter).\\n\\nCan NOT be reproduced if:\\n* you use Chrome\\n* you click out of the editor and back into it before typing\\n* you press Ctrl+A, Backspace before typing text\\n\\nThe editor document looks like this:\\n\\n

\\n\\nI think the cause of this bug is that Firefox initially puts the cursor before the

, rather than inside the

or inside the .\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-s7sn3zjthnxvep34c5ho', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 100, 'name': 'Unbreak Now!', 'color': 'pink'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354052317, 'spacePHID': None, 'dateCreated': 1353377280, 'dateModified': 1454004182, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42277', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-s7sn3zjthnxvep34c5ho', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44221, 'type': 'TASK', 'phid': 'PHID-TASK-ffv55y77ier7bslrsyco', 'fields': {'name': 'VisualEditor: Add tab layout that adds a ve-tab instead of replacing the default', 'description': {'raw': \"Taken from bug 42117 which I'm de-prioritising\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: critical\"}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-sai77mtxmpqnm6pycyvz', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 100, 'name': 'Unbreak Now!', 'color': 'pink'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354131976, 'spacePHID': None, 'dateCreated': 1353122700, 'dateModified': 1454004182, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42221', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-sai77mtxmpqnm6pycyvz'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44172, 'type': 'TASK', 'phid': 'PHID-TASK-bjs5pwsw6c4ji7r65fru', 'fields': {'name': \"VisualEditor: Edits should add a VisualEditor tag (using MW's revision tagging system) so they can be identified\", 'description': {'raw': '\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: enhancement'}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 100, 'name': 'Unbreak Now!', 'color': 'pink'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354052322, 'spacePHID': None, 'dateCreated': 1353021960, 'dateModified': 1454004188, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42172', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-hyfm4swq76s4j642w46x', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44124, 'type': 'TASK', 'phid': 'PHID-TASK-6whfmphns7qcm6tbt5j3', 'fields': {'name': 'VisualEditor: Meta-fy comments', 'description': {'raw': \"Comments should be stored in the meta-linmod, right now they're just ignored, which leads to all comments being removed when we save a page.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal\"}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 100, 'name': 'Unbreak Now!', 'color': 'pink'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353384355, 'spacePHID': None, 'dateCreated': 1352940240, 'dateModified': 1454004188, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42124', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-dw53c5cb2qfhyemej57o', 'PHID-USER-fovtl67ew4l4cc3oeypc'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44118, 'type': 'TASK', 'phid': 'PHID-TASK-d53w6sbodbcpx4rkzth3', 'fields': {'name': 'VisualEditor: Add handling for mw:Entity', 'description': {'raw': 'Currently these are being alienated, which is bad.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 100, 'name': 'Unbreak Now!', 'color': 'pink'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353528384, 'spacePHID': None, 'dateCreated': 1352938560, 'dateModified': 1454004188, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42118', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 3, 'viewerIsSubscribed': False}}}, {'id': 43722, 'type': 'TASK', 'phid': 'PHID-TASK-yvetu3dh7pwz6hn5x7ii', 'fields': {'name': 'VisualEditor: Remove feedback link for deployment', 'description': {'raw': \"Remove the MW feedback link for December deployment; it's not helpful given the different paradigm for users in this content.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: enhancement\"}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 100, 'name': 'Unbreak Now!', 'color': 'pink'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1352941206, 'spacePHID': None, 'dateCreated': 1351911840, 'dateModified': 1454004188, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz41722', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44848, 'type': 'TASK', 'phid': 'PHID-TASK-2qype6jzcuqvgj55crv3', 'fields': {'name': 'VisualEditor: Notifications should not use db-variant of page titles', 'description': {'raw': 'Via viewPage.pageName (mw.config wgRelevantPageName)\\n\\nCreating or editing pages, the mw.notify send uses the db-variant straight from wgRelevantPageName.\\n\\nShould mw.Title.textify it for proper localisation and normalisation.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-sai77mtxmpqnm6pycyvz', 'ownerPHID': 'PHID-USER-sai77mtxmpqnm6pycyvz', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 90, 'name': 'Needs Triage', 'color': 'violet'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354942098, 'spacePHID': None, 'dateCreated': 1354930620, 'dateModified': 1417571201, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42848', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-sai77mtxmpqnm6pycyvz'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44847, 'type': 'TASK', 'phid': 'PHID-TASK-mu7m2pj54l427crmnupd', 'fields': {'name': 'VisualEditor: Support Internet Explorer', 'description': {'raw': 'Right now we have Internet Explorer support removed because it fails to support a number of features, mostly around ContentEditable. However, as a major browser we need to find a way around these shortcomings.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: major'}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': None, 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 90, 'name': 'Needs Triage', 'color': 'violet'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1359516361, 'spacePHID': None, 'dateCreated': 1354926720, 'dateModified': 1359516372, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42847', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-wi7txqp5ld5ze33dx7am'], 'subscriberCount': 3, 'viewerIsSubscribed': False}}}, {'id': 44842, 'type': 'TASK', 'phid': 'PHID-TASK-jvbmuzupmyildaswp3ax', 'fields': {'name': 'VisualEditor: Create a link at the beginning of the document throws rangy error', 'description': {'raw': \"Create a link at the beginning of the document, select it and open inspector.\\n\\nUncaught TypeError: Cannot read property 'left' of undefined rangy-position.js:215\\n(anonymous function) rangy-position.js:215\\n(anonymous function) rangy-position.js:295\\n(anonymous function) rangy-position.js:348\\nve.ce.Surface.getSelectionRect ve.ce.Surface.js:1190\\n.......\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal\"}, 'authorPHID': 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'ownerPHID': 'PHID-USER-s7sn3zjthnxvep34c5ho', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 90, 'name': 'Needs Triage', 'color': 'violet'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1355164890, 'spacePHID': None, 'dateCreated': 1354920600, 'dateModified': 1417571159, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42842', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'PHID-USER-s7sn3zjthnxvep34c5ho', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44764, 'type': 'TASK', 'phid': 'PHID-TASK-75c273bypsftlyrbr3cc', 'fields': {'name': 'VisualEditor: Pre-parsed messages (minoredit, watchthis) should be in user language instead site language', 'description': {'raw': '\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-sai77mtxmpqnm6pycyvz', 'ownerPHID': 'PHID-USER-sai77mtxmpqnm6pycyvz', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 90, 'name': 'Needs Triage', 'color': 'violet'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354832652, 'spacePHID': None, 'dateCreated': 1354771560, 'dateModified': 1454004556, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42764', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-6p4p4vbpzsydxbxewmdj', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44670, 'type': 'TASK', 'phid': 'PHID-TASK-vr2jeooanda24ls5knww', 'fields': {'name': 'VisualEditor: ext.visualEditor.specialMessages module cache invalidation broken', 'description': {'raw': 'The VisualEditorMessagesModule class does not implement a ::getModifiedTime() method, and the default falls back to timestamp 1 (Thu Jan 01 1970 00:00:01), which, together with the max() with global MediaWiki Epoch is stuck on Wikimedia servers on 20120908T000000Z[1].\\n\\n\\n> > mw.loader.getVersion(\\'ext.visualEditor.specialMessages\\')\\n> < \"20120908T000000Z\"\\n\\n\\nhttps://gerrit.wikimedia.org/r/gitweb?p=operations/mediawiki-config.git;a=blob;f=wmf-config/CommonSettings.php;h=8481e9b30130288b187cac5ebd7a6993320c91c4;hb=HEAD#l1347\\n\\nAssigning to self, being worked on. Filing as reminder and as future reference.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: major'}, 'authorPHID': 'PHID-USER-sai77mtxmpqnm6pycyvz', 'ownerPHID': 'PHID-USER-sai77mtxmpqnm6pycyvz', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 90, 'name': 'Needs Triage', 'color': 'violet'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354654432, 'spacePHID': None, 'dateCreated': 1354596300, 'dateModified': 1454004573, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42670', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-6p4p4vbpzsydxbxewmdj', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44456, 'type': 'TASK', 'phid': 'PHID-TASK-yjkqv35zcxvtirgx56ds', 'fields': {'name': 'LabeledSectionTransclusion: Fatal error: Call to undefined method Title::getRedirectTarget()', 'description': {'raw': 'Fatal error: Call to undefined method Title::getRedirectTarget() in /usr/local/apache/common-local/php-1.21wmf5/extensions/LabeledSectionTransclusion/lst.php on line 305\\n\\nNo stack trace currently as it seems the fatal log is empty...\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: major'}, 'authorPHID': 'PHID-USER-6vzzsmi22zem6yttr6vp', 'ownerPHID': 'PHID-USER-6vzzsmi22zem6yttr6vp', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 90, 'name': 'Needs Triage', 'color': 'violet'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353972863, 'spacePHID': None, 'dateCreated': 1353963360, 'dateModified': 1355073003, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42456', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-lluzkul4z7us4sxkayss', 'PHID-USER-muirnivxp5hzppn2a3z7', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-6vzzsmi22zem6yttr6vp', 'PHID-USER-5paybpgtxjrhikdos3p5'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44335, 'type': 'TASK', 'phid': 'PHID-TASK-drb6zxeswawnaqold54q', 'fields': {'name': 'VisualEditor: Temporarily add IE to blacklist for December release as CE support is currently insufficient', 'description': {'raw': '\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: blocker'}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 90, 'name': 'Needs Triage', 'color': 'violet'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353530010, 'spacePHID': None, 'dateCreated': 1353529620, 'dateModified': 1454004643, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42335', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-6p4p4vbpzsydxbxewmdj', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'PHID-USER-s7sn3zjthnxvep34c5ho', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 7, 'viewerIsSubscribed': False}}}, {'id': 44123, 'type': 'TASK', 'phid': 'PHID-TASK-qyxlhx72vvvsjxiz5mxk', 'fields': {'name': 'VisualEditor: i18n for alien tooltip', 'description': {'raw': 'The tooltip on aliens (\"Sorry, you can\\'t edit this with the Visual Editor\" or whatever) should be i18ned.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': None, 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 90, 'name': 'Needs Triage', 'color': 'violet'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353114667, 'spacePHID': None, 'dateCreated': 1352940180, 'dateModified': 1454004654, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42123', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-6p4p4vbpzsydxbxewmdj', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-s7sn3zjthnxvep34c5ho', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44120, 'type': 'TASK', 'phid': 'PHID-TASK-gcvicv5c5il3dfwvq4z6', 'fields': {'name': \"VisualEditor: Change markers don't propagate when generated paragraphs are unwrapped\", 'description': {'raw': \"When editing the text of a list item, a change marker is set on the paragraph, but that paragraph has .internal.generated=='wrapper', so it's unwrapped by the data->DOM converter. This unwrapping step destroys the change marker; instead, it should be merged into the list item.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal\"}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 90, 'name': 'Needs Triage', 'color': 'violet'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353108588, 'spacePHID': None, 'dateCreated': 1352938800, 'dateModified': 1454004654, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42120', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-6p4p4vbpzsydxbxewmdj', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44111, 'type': 'TASK', 'phid': 'PHID-TASK-btqaquo52pvsfg5ytjrc', 'fields': {'name': '[Regression] Parsoid now wrongly santising wikitext of tables', 'description': {'raw': \"See https://www.mediawiki.org/w/index.php?title=VisualEditor:Templates&diff=605499&oldid=605498 - previously this was edited without incident, but now we've switched from the 19 August build to the 12 November one, it's now changing the wikitext of this table.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal\"}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-hbtlbu4zftxnz4i6f7yf', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 90, 'name': 'Needs Triage', 'color': 'violet'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1352932611, 'spacePHID': None, 'dateCreated': 1352931660, 'dateModified': 1454004655, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42111', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-6p4p4vbpzsydxbxewmdj', 'PHID-USER-nvavrb7ko66hv3xap6sb', 'PHID-USER-slccyo5rqasgpljxny7g', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 43965, 'type': 'TASK', 'phid': 'PHID-TASK-54zoeovhyceutq4h2rxj', 'fields': {'name': 'VisualEditor: Prepending to lists difficult', 'description': {'raw': 'At the moment, prepending to lists is not obvious. I think most people would try to do it by pressing enter on the preceding line to create a new paragraph, then pressing the make (bulleted) list button.\\n\\nFor some reason, this creates a list at the caret, but retains the blank paragraph afterwards (so you have list-para-list). Okay, so now you try to delete the para, but you can only deletes too much, for example merging the last list item on the first list with the first list item on the second list. In fact, pressing enter now works, but in any case the process is rather confusing.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: minor'}, 'authorPHID': 'PHID-USER-n6a5asuonlcdc2xmndl2', 'ownerPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'status': {'value': 'declined', 'name': 'Declined', 'color': None}, 'priority': {'value': 90, 'name': 'Needs Triage', 'color': 'violet'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1352935201, 'spacePHID': None, 'dateCreated': 1352551740, 'dateModified': 1454004669, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz41965', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-6p4p4vbpzsydxbxewmdj', 'PHID-USER-n6a5asuonlcdc2xmndl2', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 43947, 'type': 'TASK', 'phid': 'PHID-TASK-bxfy5lj3p2kmooagyw4k', 'fields': {'name': 'VisualEditor: Restore lost Change Markers', 'description': {'raw': 'In the change-markers2 branch, we have some trouble.\\n\\nIn a list item, there will be a

tag with change markers if I edit the content of the

  • . Roan decided to destroy those, and so did I. The change markers should instead be propagated to the
  • .\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-nvavrb7ko66hv3xap6sb', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 90, 'name': 'Needs Triage', 'color': 'violet'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353107930, 'spacePHID': None, 'dateCreated': 1352509140, 'dateModified': 1454004671, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz41947', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-6p4p4vbpzsydxbxewmdj', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-nvavrb7ko66hv3xap6sb'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 43936, 'type': 'TASK', 'phid': 'PHID-TASK-bzfy62f6eeawy7qsikz2', 'fields': {'name': 'VisualEditor: Post-uirewrite, list button does not behave as expected', 'description': {'raw': '\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: major'}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 90, 'name': 'Needs Triage', 'color': 'violet'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1352499455, 'spacePHID': None, 'dateCreated': 1352499300, 'dateModified': 1454004671, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz41936', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-6p4p4vbpzsydxbxewmdj', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-fovtl67ew4l4cc3oeypc'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 43918, 'type': 'TASK', 'phid': 'PHID-TASK-r3cecfzae44mq2jgxqtv', 'fields': {'name': 'VisualEditor: Overflow and background messed up in save dialog workflow', 'description': {'raw': 'Screenshot\\n\\nSee screenshot. Legal text is floating loose, and the heading in the toolbar is overlapping the buttons.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal\\n\\n**Attached**: {F9759}'}, 'authorPHID': 'PHID-USER-sai77mtxmpqnm6pycyvz', 'ownerPHID': 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 90, 'name': 'Needs Triage', 'color': 'violet'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1352466731, 'spacePHID': None, 'dateCreated': 1352465220, 'dateModified': 1454004674, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz41918', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-6p4p4vbpzsydxbxewmdj', 'PHID-USER-whsxbx7dkcnc5h62ffdu', 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 43905, 'type': 'TASK', 'phid': 'PHID-TASK-j4syqnzwdunhoucwx6o6', 'fields': {'name': 'VisualEditor: Parsoid is sent text outside of any node for the first line of a new article', 'description': {'raw': 'Steps to repro:\\n\\n1. Open new page in VE.\\n\\n2. Click on first line, enter text, enter newline, enter more text.\\n\\n3. Click save.\\n\\nExpected behavior: Two paragraphs.\\n\\nActual behavior: One paragraph with a single line break where there should be two.\\n\\nTested locally and found that Parsoid\\'s web service gets the DOM as something like \"First line

    Second line

    \", which it can\\'t handle correctly (the fix breaks many other parser tests).\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-nvavrb7ko66hv3xap6sb', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 90, 'name': 'Needs Triage', 'color': 'violet'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353133977, 'spacePHID': None, 'dateCreated': 1352420400, 'dateModified': 1454004674, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz41905', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-6p4p4vbpzsydxbxewmdj', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-nvavrb7ko66hv3xap6sb', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 43753, 'type': 'TASK', 'phid': 'PHID-TASK-vsa4dipmuhxhvfjv3ueq', 'fields': {'name': 'Parsoid: Please remove mw:Placeholder wrapper for first newline in
    ', 'description': {'raw': 'Parsoid currently wraps the first newline in a 
     in  , see also bug 41725 where I reported a bug in this behavior. Because of the way this interacts with VisualEditor, I would like Parsoid to drop this wrapping altogether. The reason for mw:Placeholder wrapping is supposed to be to protect things from VE, but we don\\'t need it here and it\\'s actually causing problems.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-hbtlbu4zftxnz4i6f7yf', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 90, 'name': 'Needs Triage', 'color': 'violet'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1352225021, 'spacePHID': None, 'dateCreated': 1351978800, 'dateModified': 1454004689, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz41753', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-6p4p4vbpzsydxbxewmdj', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-slccyo5rqasgpljxny7g', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 43727, 'type': 'TASK', 'phid': 'PHID-TASK-rq2tsnu6ypd4j65ev7c2', 'fields': {'name': 'VisualEditor: Deal with mw:Placeholder span wrapping the first newline in a 
    ', 'description': {'raw': 'To distinguish between 
    Foo
    and
    \\\\nFoo
    , Parsoid gives us HTML like
    \\\\nFoo
    for the latter. We don\\'t currently have any special handling for this placeholder in VE, so it shows up as an inline alien.\\n\\nI\\'m asking the Parsoid team to remove it.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 90, 'name': 'Needs Triage', 'color': 'violet'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1352492571, 'spacePHID': None, 'dateCreated': 1351915500, 'dateModified': 1454004693, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz41727', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-6p4p4vbpzsydxbxewmdj', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 43726, 'type': 'TASK', 'phid': 'PHID-TASK-ot6puhxaw7ez7zuaeuyr', 'fields': {'name': 'VisualEditor: z-index problems in Monobook', 'description': {'raw': 'Screenshot of messed-up Monobook integration in Chrome\\n\\nThe VE integration in Monobook is messed up, see screenshot. The toolbar is positioned too high, obscuring the content actions tab bar, except for the edit tab which protrudes through the toolbar. The toolbar is also off to the left a bit. The font size in the edit area is way too small, and the font size in the save dialog is way too big.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal\\n\\n**Attached**: {F10131}'}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 90, 'name': 'Needs Triage', 'color': 'violet'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1372893825, 'spacePHID': None, 'dateCreated': 1351914420, 'dateModified': 1454004693, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz41726', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-6p4p4vbpzsydxbxewmdj', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-pun3sjvg3cemjzbgyo2t'], 'subscriberCount': 6, 'viewerIsSubscribed': False}}}, {'id': 43724, 'type': 'TASK', 'phid': 'PHID-TASK-e52bbyzcqb4xr73axz3g', 'fields': {'name': 'VisualEditor: Newlines in
     render wrongly', 'description': {'raw': 'Given the following wikitext:\\n\\n\\n
    \\nFoo\\nBar\\nBaz\\nQuux\\n
    \\n\\nthe CE rendering I get is a pre with Foo↵Bar↵Baz↵Quux , rather than a pre with actual line breaks.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-s7sn3zjthnxvep34c5ho', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 90, 'name': 'Needs Triage', 'color': 'violet'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354155736, 'spacePHID': None, 'dateCreated': 1351912620, 'dateModified': 1454004693, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz41724', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-6p4p4vbpzsydxbxewmdj', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-s7sn3zjthnxvep34c5ho', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44806, 'type': 'TASK', 'phid': 'PHID-TASK-upsvylaxm2favfgmiub4', 'fields': {'name': 'VisualEditor: Type mismatch when inserting unbalanced content', 'description': {'raw': '**Author:** `orbit`\\n\\n**Description:**\\nSteps to reproduce:\\n1. Copy part of a headline and part of a following paragraph\\n2. Paste into a paragrah\\n\\nThe linmod being inserted will look something like this:\\n[\"s\", \"u\", \"m\", \"?\", Object, Object, \"C\", \"o\", \"n\", \"t\"]\\n\\nThe objects are closing heading and opening paragraph.\\n\\nThe error is in ve.dm.Document.js on 1145.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-ynivjflmc2dcl6w5ut5v', 'ownerPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354916275, 'spacePHID': None, 'dateCreated': 1354837920, 'dateModified': 1417573355, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42806', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44707, 'type': 'TASK', 'phid': 'PHID-TASK-3mbtnybtpij42l625lvd', 'fields': {'name': 'VisualEditor: Deleting across inline alien errors', 'description': {'raw': '**Author:** `orbit`\\n\\n**Description:**\\nTry creating \"some text blah more text\" and select across the inline alien and delete. \\n\\nUncaught TypeError: Cannot call method \\'getDataFromNode\\' of undefined\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-ynivjflmc2dcl6w5ut5v', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354739553, 'spacePHID': None, 'dateCreated': 1354669260, 'dateModified': 1417573358, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42707', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44657, 'type': 'TASK', 'phid': 'PHID-TASK-bsg3qk2puigbios7b56m', 'fields': {'name': 'VisualEditor: Backspace over a slug at the end of the document throws an error', 'description': {'raw': 'Pressing backspace in a slug at the end of the document throws an error:\\n\\n* Create a new page (or go to an existing one), and enter \"ABCD\\\\n\" at the end\\n* With the cursor in the new slug, press backspace; this throws an error:\\n\\nUncaught Error: ve.dm.Document.getNodeFromOffset(): offset 9 is out of bounds\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: major'}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-s7sn3zjthnxvep34c5ho', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354755508, 'spacePHID': None, 'dateCreated': 1354563780, 'dateModified': 1417573358, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42657', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-s7sn3zjthnxvep34c5ho', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44552, 'type': 'TASK', 'phid': 'PHID-TASK-mutotkwptjvzfn2nuk4y', 'fields': {'name': \"VisualEditor: Link inspector doesn't close when moving cursor to a different link\", 'description': {'raw': 'Inspect a link, then click on a different link, the inspector moves to the new cursor location and remains open.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'ownerPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354227540, 'spacePHID': None, 'dateCreated': 1354217520, 'dateModified': 1417573392, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42552', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44525, 'type': 'TASK', 'phid': 'PHID-TASK-bp5lorruinm7xnzv76mb', 'fields': {'name': 'VisualEditor: Save dialog triggers error (selection bug?)', 'description': {'raw': \"On launching the save dialog, a console error is thrown:\\n\\nUncaught TypeError: Cannot read property 'nodeType' of null /w/extensions/VisualEditor/modules/ve/ce/ve.ce.js:117\\nve.ce.getOffset /w/extensions/VisualEditor/modules/ve/ce/ve.ce.js:117\\nve.ce.SurfaceObserver.poll /w/extensions/VisualEditor/modules/ve/ce/ve.ce.SurfaceObserver.js:136\\nve.ce.SurfaceObserver.stop /w/extensions/VisualEditor/modules/ve/ce/ve.ce.SurfaceObserver.js:82\\nve.ce.Surface.documentOnBlur /w/extensions/VisualEditor/modules/ve/ce/ve.ce.Surface.js:324\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal\"}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354155569, 'spacePHID': None, 'dateCreated': 1354155360, 'dateModified': 1417573392, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42525', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44522, 'type': 'TASK', 'phid': 'PHID-TASK-2iww52jmzvuwmwgsjy5e', 'fields': {'name': 'VisualEditor: Integrate edit conflict confirmation into the save dialog', 'description': {'raw': 'As of I002c5aa23704c1c46ef46fa1970a4254614b9eb1 when saving and an edit conflict occurs the user is shown a browser-provided confirmation box which allows them to either cancel or resolve the conflict manually.\\n\\nIt would be much better if this was integrated into the save dialog.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: enhancement'}, 'authorPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'ownerPHID': 'PHID-USER-it53o2f2kyryqyj33uzt', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1368574606, 'spacePHID': None, 'dateCreated': 1354147200, 'dateModified': 1417573284, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42522', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44513, 'type': 'TASK', 'phid': 'PHID-TASK-vrsv454ata26ui2zocei', 'fields': {'name': \"mediawiki.Uri crashes in pages with '@' in their url\", 'description': {'raw': \"It isn't just that this would throw an exception:\\n\\n new mw.Uri('http://krinkle.dev/mediawiki/alpha/index.php?title=VisualEditor:S@box&action=edit');\\n\\nAlthough that is also bad (when done on non-@ pages), it is especially bad that on pages containing an @ in the url, the module won't even finish loading because of this line:\\n\\n defaultUri = new Uri( documentLocation );\\n\\nSo instead, mw.Uri stays undefined.\\n\\n--------------------------\\n**Version**: 1.19\\n**Severity**: critical\"}, 'authorPHID': 'PHID-USER-sai77mtxmpqnm6pycyvz', 'ownerPHID': 'PHID-USER-sai77mtxmpqnm6pycyvz', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1358621587, 'spacePHID': None, 'dateCreated': 1354127040, 'dateModified': 1358706140, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42513', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-wkpnidxoctuhawexig5p', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-ea6gwat27oulytc5tvsy'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44487, 'type': 'TASK', 'phid': 'PHID-TASK-vagtkpb7zm3ecw5cnsap', 'fields': {'name': 'VisualEditor: Converter crashes if a page has a element with a

    elements', 'description': {'raw': \"Wikitext to reproduce:\\n\\n\\n[bunch of newlines]\\n\\n\\nParsoid generates

    for this, but it doesn't mark the span.\\n\\nTodo:\\n* Make the failure a bit more graceful\\n* Investigate whether p inside span is legal\\n* Investigate other cases where this breakage occurs\\n* File bug with Parsoid for proper protection of user-generated tags\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal\"}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354826179, 'spacePHID': None, 'dateCreated': 1354071720, 'dateModified': 1417573357, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42487', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44404, 'type': 'TASK', 'phid': 'PHID-TASK-j3shvug7fft7t4wshe6d', 'fields': {'name': 'VisualEditor: Still get a pawn when select-all->replace in Firefox', 'description': {'raw': 'Go to demos/ve/?page=aliens in Firefox; select all:\\n\\n TypeError: end is undefined ve.ce.Surface.js (line 980)\\n\\nPress \"a\" (or backspace and then \"a\"):\\n\\n TypeError: start is undefined ve.ce.Surface.js (line 995)\\n \\n (And a pawn appears in its own

    above the a.)\\n\\nOn any click thereafter,\\n\\n TypeError: node is null ve.ce.Surface.js (line 1073)\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: major\\n**See Also**:\\nhttps://bugzilla.wikimedia.org/show_bug.cgi?id=57355'}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353971144, 'spacePHID': None, 'dateCreated': 1353725160, 'dateModified': 1417573198, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42404', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-s7sn3zjthnxvep34c5ho', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44403, 'type': 'TASK', 'phid': 'PHID-TASK-hgicqduvx6exq6mle75r', 'fields': {'name': 'VisualEditor: Selective serialisation has landed in Parsoid, now VE needs to handle that', 'description': {'raw': \"Due to gerrit 31118 being merged, Parsoid now has selective serialisation live. This means that VisualEditor needs to include Mark's patch to handle this.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: critical\"}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354056676, 'spacePHID': None, 'dateCreated': 1353721680, 'dateModified': 1417573394, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42403', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-fovtl67ew4l4cc3oeypc'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44402, 'type': 'TASK', 'phid': 'PHID-TASK-76qxn5mqf3hcvdkgf2kt', 'fields': {'name': 'VisualEditor: Failure in saving integration code', 'description': {'raw': 'this.emit( \\'saveError\\', null, \\'Unsuccessful request: \\' + data.result, null );\\n\\n(ve.init.mw.Target.js line 131)\\n\\ncauses \"TypeError: data is undefined\"\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353724364, 'spacePHID': None, 'dateCreated': 1353719400, 'dateModified': 1417573398, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42402', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44398, 'type': 'TASK', 'phid': 'PHID-TASK-o3u5ojlmiw3bdf7dgyiu', 'fields': {'name': 'VisualEditor: Clean up meta nodes', 'description': {'raw': \"For after December:\\n* consolidate 'type': 'metaInline' / 'metaBlock' into 'type': 'meta'\\n* get rid of ve.{ce,dm}.Meta{Inline,Block}Node\\n* create ve.dm.MetaNode with converter stuff but don't inherit ve.dm.LeafNode\\n** eventually integrate that into the new node API\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal\"}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1357679596, 'spacePHID': None, 'dateCreated': 1353702180, 'dateModified': 1417573333, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42398', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-fovtl67ew4l4cc3oeypc'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44350, 'type': 'TASK', 'phid': 'PHID-TASK-75uqqg6zbs3w4jxdyn43', 'fields': {'name': 'VisualEditor: Delete and backspace broken around inline aliens in Firefox', 'description': {'raw': 'When I place the cursor before the template output, and press \"Delete\", it deletes the template and one more character after the template. When I place the cursor after the template output and press \"Backspace\", it does not delete the template (simply does nothing).\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-zjzhrhmn36icnzbckqy4', 'ownerPHID': 'PHID-USER-s7sn3zjthnxvep34c5ho', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354149956, 'spacePHID': None, 'dateCreated': 1353576600, 'dateModified': 1417573393, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42350', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-s7sn3zjthnxvep34c5ho', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-zjzhrhmn36icnzbckqy4'], 'subscriberCount': 6, 'viewerIsSubscribed': False}}}, {'id': 44341, 'type': 'TASK', 'phid': 'PHID-TASK-smsvykwx7lxu2tyag7ye', 'fields': {'name': 'VisualEditor: Link inspector suggestions box should instantly show, then populate with more as API returns', 'description': {'raw': \"Right now the link inspector's suggestions box displays only after the ; instead, it should show instantly, then populate with more data as API returns with a spinner. Trevor has some ideas if you want to bug him. :-)\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal\"}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354302320, 'spacePHID': None, 'dateCreated': 1353543420, 'dateModified': 1417573392, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42341', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-mpfqwllylfkzpcgkdkvc'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44340, 'type': 'TASK', 'phid': 'PHID-TASK-jml4yae3q65u4srebbyl', 'fields': {'name': 'VisualEditor: Annotation of inline nodes fails', 'description': {'raw': 'Annotation of inline nodes fails - the data model is not updated to have any annotations added.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: major'}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354056502, 'spacePHID': None, 'dateCreated': 1353542940, 'dateModified': 1417573394, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42340', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-fovtl67ew4l4cc3oeypc'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44298, 'type': 'TASK', 'phid': 'PHID-TASK-jazf6d7oefzddss6mv36', 'fields': {'name': 'VisualEditor: Handle percent-encoding in MWInternalLinkAnnotation', 'description': {'raw': \"Per conversation with Gabriel, MWInternalLinkAnnotation needs to deal with percent-encoded hrefs. At least question marks (?) and percent signs (%) will be encoded. We need to decode these before presenting them to the user, encode the user input on the way out, and use href shadowing to make sure we don't change the href if the user didn't change the target (even if that would otherwise happen due to complete vs partial percent-encoding).\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal\"}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354921807, 'spacePHID': None, 'dateCreated': 1353441780, 'dateModified': 1417573354, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42298', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-hbtlbu4zftxnz4i6f7yf', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44275, 'type': 'TASK', 'phid': 'PHID-TASK-idkrdic2vphpfwclosyo', 'fields': {'name': 'VisualEditor: Clicking link toolbar button with zero-length selection makes UI go crazy', 'description': {'raw': '...presumably because the link becomes a pre-annotation.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353971422, 'spacePHID': None, 'dateCreated': 1353376740, 'dateModified': 1417573396, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42275', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44220, 'type': 'TASK', 'phid': 'PHID-TASK-uxbnfma4ejiksnkp2e7x', 'fields': {'name': \"VisualEditor: Provide a way of users seeing the edit-notices and page protection level warnings as they're editing\", 'description': {'raw': \"From Max's bug 42142\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal\\n**See Also**:\\nhttps://bugzilla.wikimedia.org/show_bug.cgi?id=42142\"}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354317270, 'spacePHID': None, 'dateCreated': 1353122280, 'dateModified': 1417573390, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42220', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-hyfm4swq76s4j642w46x', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-fovtl67ew4l4cc3oeypc'], 'subscriberCount': 6, 'viewerIsSubscribed': False}}}, {'id': 44219, 'type': 'TASK', 'phid': 'PHID-TASK-vsfkgcc5kyalos6vc4gl', 'fields': {'name': 'VisualEditor: Trivial way to get a lot of errors', 'description': {'raw': '1. Go to https://www.mediawiki.org/wiki/VisualEditor:Testy and click edit\\n2. Select all using Ctrl-A (or Cmd-A) and press backspace\\n3. Press any content key (e.g. \"a\")\\n\\nWhat should happen:\\n\\n: You get a document with an \"a\" in its own paragraph.\\n\\nWhat does happen:\\n\\n: You get a document with an \"a\" in its own paragraph, and two console errors:\\n\\nTypeError: this.data[offset] is undefined\\n\\n...ation)===false){return null;}while(start>0){start--;if(this.offsetContainsAnnota...\\n\\nload.p...4105Z&* (line 89)\\n\\n\\nTypeError: this.data[offset] is undefined\\n\\n...ation)===false){return null;}while(start>0){start--;if(this.offsetContainsAnnota...\\n\\nload.p...4105Z&* (line 89)\\n\\n\\nThereafter, pressing return in the new context gives:\\n\\nTypeError: node is null\\n\\n...ve.Node.call(this,type);this.model=model;this.$=$element||$(\\'

    \\');this.parent...\\n\\nEtc.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: critical'}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353541840, 'spacePHID': None, 'dateCreated': 1353120840, 'dateModified': 1417573397, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42219', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-s7sn3zjthnxvep34c5ho', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-v7vgzvvcw7v2umf737ri', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 6, 'viewerIsSubscribed': False}}}, {'id': 44218, 'type': 'TASK', 'phid': 'PHID-TASK-p6hldnmgl7xtnj7zwjyv', 'fields': {'name': 'VisualEditor: Trivial way to get a pawn (♙) appearing', 'description': {'raw': '1. Go to https://www.mediawiki.org/wiki/VisualEditor:Testy and click edit\\n2. Select all using Ctrl-A (or Cmd-A) and press backspace\\n3. Press any content key (e.g. \"a\")\\n\\nWhat should happen:\\n\\n: You get a document with an \"a\" in its own paragraph.\\n\\nWhat does happen:\\n\\n: You get a document with an \"a\" in its own paragraph, and a pawn.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: critical'}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353138404, 'spacePHID': None, 'dateCreated': 1353120720, 'dateModified': 1417573400, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42218', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-v7vgzvvcw7v2umf737ri', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-s7sn3zjthnxvep34c5ho', 'PHID-USER-hyfm4swq76s4j642w46x'], 'subscriberCount': 6, 'viewerIsSubscribed': False}}}, {'id': 44212, 'type': 'TASK', 'phid': 'PHID-TASK-murhom53ypttvsazncwz', 'fields': {'name': 'VisualEditor: Inserting text content around inline alien nodes throws an exception', 'description': {'raw': \"Specifically it fails when trying to insert text content between two inline aliens or after last inline alien inside its parent.\\n\\nException:\\nUncaught TypeError: Cannot read property 'start' of undefined ve.dm.TransactionProcessor.js:259\\nve.dm.TransactionProcessor.processors.replace\\n\\n// Set change markers on the parents of the affected nodes\\nfor ( i = 0; i < selection.length; i++ ) {\\n\\tthis.setChangeMarker(\\n\\t\\tselection[i].parentOuterRange.start + this.adjustment,\\n\\t\\t'content'\\n\\t);\\n}\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal\"}, 'authorPHID': 'PHID-USER-s7sn3zjthnxvep34c5ho', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353366778, 'spacePHID': None, 'dateCreated': 1353106740, 'dateModified': 1417573398, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42212', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-s7sn3zjthnxvep34c5ho', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-fovtl67ew4l4cc3oeypc'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44137, 'type': 'TASK', 'phid': 'PHID-TASK-cougiswjchh3cn6khldz', 'fields': {'name': 'VisualEditor: Sync availability of \"minor edit\" with MW backend', 'description': {'raw': 'Currently when using VisualEditor to create a new page, the \"Save page\" dialog box offers two checkboxes below the edit summary field: \"This is a minor edit\" and \"Watch this page\".\\n\\nWhen creating a page, \"This is a minor edit\" does not typically show up. It\\'s a bug that the checkbox appears when creating a page with the VisualEditor interface.\\n\\nThis bug is closely related to bug 40774.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: trivial'}, 'authorPHID': 'PHID-USER-hyfm4swq76s4j642w46x', 'ownerPHID': 'PHID-USER-sai77mtxmpqnm6pycyvz', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354565365, 'spacePHID': None, 'dateCreated': 1352957280, 'dateModified': 1417573389, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42137', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-hyfm4swq76s4j642w46x', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 6, 'viewerIsSubscribed': False}}}, {'id': 44134, 'type': 'TASK', 'phid': 'PHID-TASK-oxmalsbaodappytqtaoo', 'fields': {'name': \"VisualEditor: Floated nodes don't get shields in Chrome\", 'description': {'raw': 'If you have a floated table inside an alien, it gets a shield (and a phantom) in Firefox but not in Chrome. This is because the table is floated with external CSS triggered by class=\"infobox\", rather than an inline style attribute. At the time when we check for $this.css(\\'float\\'), $this hasn\\'t been attached to the main DOM yet. Firefox computes styles on unattached nodes correctly, but Chrome doesn\\'t.\\n\\nThe solution is to wait until after the entire CE rendering has been built and attached to the DOM before generating shields and phantoms. Possible implementations:\\n\\n1. Add an onAttach function to ce.Node. After attaching, traverse the entire CE tree and invoke onAttach() on every node (bottom up). This is expensive, though, because you have to traverse the entire tree just to invoke onAttach on the few nodes that use it.\\n\\n2. Make the ce.Surface throw an \\'attached\\' event after attaching to the DOM, and make the ce.AlienBlockNode constructor listen for this event. This is not as clean, but more efficient, because only nodes that need processing are processed.\\n\\nI have a slight preference for #2, but I can be convinced either way.\\n\\nIn both cases, the call to onUpdate() in the ce.AlienBlockNode constructor would be removed, otherwise the HTML would be set twice.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-s7sn3zjthnxvep34c5ho', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353018780, 'spacePHID': None, 'dateCreated': 1352948940, 'dateModified': 1417573399, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42134', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-s7sn3zjthnxvep34c5ho', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-sai77mtxmpqnm6pycyvz'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44125, 'type': 'TASK', 'phid': 'PHID-TASK-kk4vhnmofck2qdxtjn2o', 'fields': {'name': 'VisualEditor: Spinner keeps spinning after save fail', 'description': {'raw': 'If you try to save a page and it fails (e.g. because of an edit conflict, blocked user, Parsoid down, or whatever), then click Cancel, the spinner keeps spinning and the Save page button remains greyed out.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-sai77mtxmpqnm6pycyvz', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354054812, 'spacePHID': None, 'dateCreated': 1352940660, 'dateModified': 1417573395, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42125', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44121, 'type': 'TASK', 'phid': 'PHID-TASK-lag2eyarvgkricqxqmeh', 'fields': {'name': 'VisualEditor: Paragraph generated for an empty document should not be unwrapped on the way out', 'description': {'raw': \"Currently, the DOM->data converter generates an empty paragraph if the input is an empty string. This paragraph is marked with .internal.generated=='wrapper', so it's unwrapped on the way out. This is bad because we lose change markers that way, and have no way to propagate them.\\n\\nInstead, it should use another generated marker which causes the paragraph to be unwrapped only if it is empty, and be preserved if it's not empty.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal\"}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353123761, 'spacePHID': None, 'dateCreated': 1352938920, 'dateModified': 1417573396, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42121', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-nvavrb7ko66hv3xap6sb'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44119, 'type': 'TASK', 'phid': 'PHID-TASK-hfb6u2us7tcoc2xke4cf', 'fields': {'name': 'VisualEditor: Converter should inline-alienate inline tags in wrapping mode even in the mw:unrecognized case', 'description': {'raw': 'Normally, unrecognized tags in wrapped blocks are alienated as inline or block depending on the tag name. This is broken for tags with unrecognized mw: types (and for about groups), which are always alienated as block when in wrapping mode.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353386649, 'spacePHID': None, 'dateCreated': 1352938680, 'dateModified': 1417573398, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42119', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44117, 'type': 'TASK', 'phid': 'PHID-TASK-5jn5rxhygbvz6pzdt2uo', 'fields': {'name': 'VisualEditor: Replaced Edit tab should use original label instead of fetching message \"edit\" msg', 'description': {'raw': 'When loading a page with VE enabled, the \"edit\" tab is changed from the \"vector-view-edit\" message to the \"edit\" message. This is apparent on enwiki, where these messages have different values. It\\'s also apparent when using ?uselang=qqx\\n\\nThis shouldn\\'t happen, the message for the edit tab should be consistent.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: minor'}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-sai77mtxmpqnm6pycyvz', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1365036328, 'spacePHID': None, 'dateCreated': 1352937420, 'dateModified': 1417573337, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42117', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44092, 'type': 'TASK', 'phid': 'PHID-TASK-jh7jzzemygqrgcfg25dq', 'fields': {'name': 'VisualEditor: Change marking branch appears to be live on MWwiki', 'description': {'raw': 'Possibly the wrong version of Parsoid updated? See https://www.mediawiki.org/w/index.php?title=VisualEditor:Test&diff=next&oldid=604180 as an example of \\'

    \\' elements being created.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1352939134, 'spacePHID': None, 'dateCreated': 1352858220, 'dateModified': 1417573400, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42092', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44091, 'type': 'TASK', 'phid': 'PHID-TASK-az3twbgyfogcznpnnndd', 'fields': {'name': 'VisualEditor: A wild pawn character appeared!', 'description': {'raw': \"Roan told me that, if I ever saw one of your comical placeholder Unicode characters, that it was a pretty well-defined bug. So here:\\n\\n1. Create an unordered list\\n2. Enter some items\\n3. Hit enter twice\\n4. Type something\\n\\nExpected: Whatever I typed should appear on the screen.\\n\\nActual: Pawn character! It also prints my text, but only after '♙\\\\n'.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal\"}, 'authorPHID': 'PHID-USER-nvavrb7ko66hv3xap6sb', 'ownerPHID': None, 'status': {'value': 'declined', 'name': 'Declined', 'color': None}, 'priority': {'value': 80, 'name': 'High', 'color': 'red'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354656971, 'spacePHID': None, 'dateCreated': 1352856780, 'dateModified': 1417573359, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42091', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-nvavrb7ko66hv3xap6sb', 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44897, 'type': 'TASK', 'phid': 'PHID-TASK-log2ro3sq5p5acp2puga', 'fields': {'name': 'VisualEditor: HTML entities following double-bracket links are not displayed correctly', 'description': {'raw': 'Try to VE-edit this page: http://www.mediawiki.org/wiki/VisualEditor:Extension:ConfirmAccount\\n\\nCompare: http://parsoid.wmflabs.org/mw/VisualEditor:Extension:ConfirmAccount\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-zjzhrhmn36icnzbckqy4', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'declined', 'name': 'Declined', 'color': None}, 'priority': {'value': 50, 'name': 'Medium', 'color': 'orange'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1361383659, 'spacePHID': None, 'dateCreated': 1355068140, 'dateModified': 1417573346, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42897', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-zjzhrhmn36icnzbckqy4'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44801, 'type': 'TASK', 'phid': 'PHID-TASK-7cmqtr6tlqrqawji66zc', 'fields': {'name': 'VisualEditor: Selecting multiple empty paragraphs results in selection decreasing by one line per poll interval', 'description': {'raw': 'Steps to reproduce:\\nEdit a page with VisualEditor.\\nPress return key a few times.\\nSelect those empty lines with mouse or shift+arrows.\\nWatch in awe as the selected lines decrease one per polling interval.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'ownerPHID': 'PHID-USER-s7sn3zjthnxvep34c5ho', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 50, 'name': 'Medium', 'color': 'orange'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354844641, 'spacePHID': None, 'dateCreated': 1354835520, 'dateModified': 1417573355, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42801', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'PHID-USER-s7sn3zjthnxvep34c5ho', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44665, 'type': 'TASK', 'phid': 'PHID-TASK-sqz4vnvgzmxmvjkrplhx', 'fields': {'name': 'VisualEditor: Link inspector suggestions highlight multiple items if they have the same label', 'description': {'raw': 'Reproduce:\\n\\n1. Make a link to http://www.google.com\\n2. Click out of the link\\n3. Inspect the link\\n4. Both new page and external link are selected\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'ownerPHID': 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 50, 'name': 'Medium', 'color': 'orange'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354652046, 'spacePHID': None, 'dateCreated': 1354583100, 'dateModified': 1417573359, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42665', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44661, 'type': 'TASK', 'phid': 'PHID-TASK-jprjjnlynxuoul2du4w2', 'fields': {'name': 'VisualEditor: Context menu shows up in the wrong place on load if document starts with link', 'description': {'raw': \"When a document starts with a link, the animation on the page cause the context's location to be incorrect.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal\"}, 'authorPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'ownerPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 50, 'name': 'Medium', 'color': 'orange'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354589382, 'spacePHID': None, 'dateCreated': 1354572300, 'dateModified': 1417573360, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42661', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44469, 'type': 'TASK', 'phid': 'PHID-TASK-nhhyjbko2xftjs44uuqt', 'fields': {'name': 'VisualEditor: Leading newlines in

    s get eaten', 'description': {'raw': 'https://www.mediawiki.org/w/index.php?title=VisualEditor%3APre&diff=609875&oldid=609874\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 50, 'name': 'Medium', 'color': 'orange'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354757611, 'spacePHID': None, 'dateCreated': 1353980580, 'dateModified': 1417573357, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42469', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-fovtl67ew4l4cc3oeypc'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44278, 'type': 'TASK', 'phid': 'PHID-TASK-ca4ckkjl6hs65faqueyf', 'fields': {'name': 'VisualEditor: After clicking out of link inspector, pressing enter removes wrong text', 'description': {'raw': '1. Type the text \"Foo bar baz\"\\n2. Select \"bar\"\\n3. Click the link toolbar button\\n4. Click between the a and the z (\"ba|z\") to cause the inspector to close\\n5. Press enter\\n\\nExpected result: paragraph is split with \"z\" in a new paragraph\\nActual result: \"bar\" is removed, paragraph is split with \"baz\" in a new paragraph\\n\\nOccurs in both Firefox and Chrome. Isn\\'t reproducible 100% of the time.\\n\\nTheory:\\n1. User changes selection to ba|z\\n2. SurfaceObserver notices and adjusts its selection\\n3. Link inspector notices and triggers annotation on a fragment with a different range (the link)\\n4. Some bug in SurfaceObserver or SurfaceFragment causes SO to believe the current selection is now the link\\n5. User presses enter, SO removes what it believes is the selection\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 50, 'name': 'Medium', 'color': 'orange'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353971697, 'spacePHID': None, 'dateCreated': 1353378540, 'dateModified': 1417573395, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42278', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'PHID-USER-s7sn3zjthnxvep34c5ho', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 6, 'viewerIsSubscribed': False}}}, {'id': 44276, 'type': 'TASK', 'phid': 'PHID-TASK-uv4cfp2ue45fk333wtws', 'fields': {'name': 'VisualEditor: Zero-length selection in link should show inspector icon', 'description': {'raw': 'This currently works for selections within links, but not for zero-length selections. Except if you hit bug 42275, then the inspector icon will appear on every zero-length selection, anywhere, and will chase you forever and ever.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 50, 'name': 'Medium', 'color': 'orange'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353971278, 'spacePHID': None, 'dateCreated': 1353376860, 'dateModified': 1417573396, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42276', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'PHID-USER-sai77mtxmpqnm6pycyvz'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44142, 'type': 'TASK', 'phid': 'PHID-TASK-3ij7dtc5vwzmge2qmliq', 'fields': {'name': \"VisualEditor: Don't offer Edit button when user cannot edit page\", 'description': {'raw': 'The VisualEditor interface does not currently recognize page protection. If a user visits a protected page (a page to which he or she does not have access to edit), VisualEditor will still display a working edit form and the first click of the \"Save page\" button will work. It will produce a dialog box that will present a second \"Save page\" button that does not work. Ideally, VisualEditor would not let a user get this far without indicating that the page is uneditable.\\n\\nRelated to this, there\\'s no warning for administrators that a page is protected when they\\'re editing the page. This may be a separate bug, however.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-hyfm4swq76s4j642w46x', 'ownerPHID': 'PHID-USER-sai77mtxmpqnm6pycyvz', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 50, 'name': 'Medium', 'color': 'orange'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354131981, 'spacePHID': None, 'dateCreated': 1352958960, 'dateModified': 1417573393, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42142', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-hyfm4swq76s4j642w46x', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-fovtl67ew4l4cc3oeypc'], 'subscriberCount': 6, 'viewerIsSubscribed': False}}}, {'id': 44140, 'type': 'TASK', 'phid': 'PHID-TASK-wydq63k4j2l2fgeenwfb', 'fields': {'name': 'VisualEditor: Internal page links touched by VisualEditor contain underscores', 'description': {'raw': 'Currently when a user uses the link dialog box tool thing in VisualEditor to specify where certain text should link to, if the user specifies an internal page as the target, the wikitext for the link will use underscores.\\n\\nFor example, I highlight some text in VisualEditor with my mouse and then click the link icon. A \"Hyperlink\" dialog box appears and I enter \"MediaWiki on IRC\" into the text input area. I hit the \"return\" key on my keyboard to make the dialog box disappear and now I have a blue link in my VisualEditor interface. If I then save this page and look at its wikitext source, I see:\\n\\n[[MediaWiki_on_IRC|fffffffff]]\\n\\nInternal links are using underscores. This is wrong.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal\\n**See Also**:\\nhttps://bugzilla.wikimedia.org/show_bug.cgi?id=49310'}, 'authorPHID': 'PHID-USER-hyfm4swq76s4j642w46x', 'ownerPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 50, 'name': 'Medium', 'color': 'orange'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353380505, 'spacePHID': None, 'dateCreated': 1352957940, 'dateModified': 1417573199, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42140', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-hyfm4swq76s4j642w46x', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 6, 'viewerIsSubscribed': False}}}, {'id': 44139, 'type': 'TASK', 'phid': 'PHID-TASK-f4bx3pmct7c24xmmqmka', 'fields': {'name': 'VisualEditor: There is not preview of edit summaries (which are wikitext) - show it in the wikitext diff?', 'description': {'raw': 'The current VisualEditor interface has a \"Save page\" dialog box with an edit summary input field. However, this edit summary input field accepts wikitext, but has no preview feature for what the rendered wikitext will look like. This is a regression from the standard (non-VisualEditor) interface.\\n\\nRoan said that there be a mini-editor or mini-parser or something stuck in the edit summary area at some point.\\n\\n**See Also**: {T62535}'}, 'authorPHID': 'PHID-USER-hyfm4swq76s4j642w46x', 'ownerPHID': 'PHID-USER-x7ti5ksby4ubsabntlxa', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 50, 'name': 'Medium', 'color': 'orange'}, 'points': '8', 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1392853679, 'spacePHID': None, 'dateCreated': 1352957640, 'dateModified': 1465905460, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42139', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': 'default', 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-je4a7kqdfgacwkyhtg4c', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-oxd6f6xemkuyttw7z7wl', 'PHID-USER-p6hvqn5njgnxuagekh4b', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-wil4b5lylrvf3krixlkl', 'PHID-USER-wswkm7jrcwes3tc7o34k', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-ysftv67jxeaxdwcakvwo', 'PHID-USER-hyfm4swq76s4j642w46x'], 'subscriberCount': 12, 'viewerIsSubscribed': False}}}, {'id': 43935, 'type': 'TASK', 'phid': 'PHID-TASK-hh227cldfkbylq2gwxw3', 'fields': {'name': 'VisualEditor: Pressing a list button when covering a selection of a list should unlist only that portion', 'description': {'raw': 'Pressing a list button on: \\n\\n1. Foo\\n2. Bar\\n   * Baz\\n   * Bang\\n     1. Boom\\n3. Bing!\\n\\nwith a selection of Bang and Boom should produce:\\n\\n1. Foo\\n2. Bar\\n   * Baz\\n     Bang\\n     Boom\\n3. Bing!\\n\\n(i.e. the selected LIs should be down-converted into a 

    of the most local parent list).\\n\\nAlso, out-dent should stop a list nest level 1, not 0.'}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': None, 'status': {'value': 'open', 'name': 'Open', 'color': None}, 'priority': {'value': 50, 'name': 'Medium', 'color': 'orange'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': None, 'spacePHID': None, 'dateCreated': 1352498880, 'dateModified': 1437759568, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz41935', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': 'default', 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-hgn5uw2jafgjgfvxibhh', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 43929, 'type': 'TASK', 'phid': 'PHID-TASK-ugjwuslvzh6eo2ldgto4', 'fields': {'name': 'VisualEditor: \"List\" buttons causes whole list to be de-listed, or converted to other list type, when only part of it is selected', 'description': {'raw': 'Expected behaviour is that the part of the list that is selected is transformed, and the rest of the list is left as it was.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 50, 'name': 'Medium', 'color': 'orange'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354589338, 'spacePHID': None, 'dateCreated': 1352482200, 'dateModified': 1417573360, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz41929', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-s7sn3zjthnxvep34c5ho', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 6, 'viewerIsSubscribed': False}}}, {'id': 43770, 'type': 'TASK', 'phid': 'PHID-TASK-ys2g6r2fl6x4a5jhjj5w', 'fields': {'name': 'Highlighting syntax within editing window by default', 'description': {'raw': \"**Author:** `IJethrobot`\\n\\n**Description:**\\nHaving read and , this enhancement proposal is sufficiently different and is based on different discussion.\\n\\nThere is a wide consensus of editors who would like to see syntax highlighting in the standard editing window turned on by default, particularly for references, for wiki markup. This consensus has been reached in two discussions on en.wiki, one at the Village Pump and one in a Request For Comments that was a part of Centralized Discussion for 30 days: . Given the course of the discussion, and the overwhelming support for this functionality, I decided to submit this proposal to bugzilla. \\n\\nMany participants in the above discussions expressed that adding a syntax highlighter would make editing a more accessible experience for newer users. In fact, direct feedback from new editors has suggested that this has been a problem (e.g. ). They are also unsatisfied with \\n\\nPrevious proposals have stated that implementing this internally is not possible. However, this is incorrect; there are at least some examples of non-external editors that work or could work reasonably well:\\n- jsfiddle: (with implementation: )\\n- AceWikiEditor: \\n- en.wikipedia user RememberTheDot's syntax highlighter: (which I use).\\n\\nThe only thing I would have liked to see more of in the above discussions were persons who might be able to discuss a specific implementation. Some discussion of that is here: . Such discussion would be helpful here, given the above information on how it may be viable to implement this internally.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: enhancement\"}, 'authorPHID': 'PHID-USER-ynivjflmc2dcl6w5ut5v', 'ownerPHID': None, 'status': {'value': 'declined', 'name': 'Declined', 'color': None}, 'priority': {'value': 50, 'name': 'Medium', 'color': 'orange'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1352058259, 'spacePHID': None, 'dateCreated': 1352053440, 'dateModified': 1416220518, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz41770', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-izojihzr4ja3jsgzn5wv', 'PHID-USER-sryrz6tgcfnnsiddx32p', 'PHID-USER-wrimmmr5w2zt7nk2t753'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44880, 'type': 'TASK', 'phid': 'PHID-TASK-nnoorqwvduraaxjx3s3c', 'fields': {'name': 'Redirects mask incorrect spellings (misspellings) in articles', 'description': {'raw': 'On a site such as the English Wikipedia, editors often create redirects for misspelled versions of page titles so that readers can have an easier time accessing the content they\\'re after. For example, if a reader enters \"Barrack Obama\" or \"Dave Chapelle\" or \"Steve Carrell\" into the search bar, they\\'ll be redirected automatically to \"Barack Obama\" or \"Dave Chappelle\" or \"Steve Carell\" (respectively) automatically. This is a good thing.\\n\\nHowever, these redirects can be problematic when editors insert this text into a page in the form of a link and don\\'t get any feedback that the text they\\'ve entered is a misspelling (that it\\'s likely wrong and not the text they intended to insert). In fact, the user gets the opposite feedback: they get feedback (a blue link) indicating that they\\'ve inserted an appropriate, working link.\\n\\nThese misspelled redirects can be tagged with templates such as \"{{R from misspelling}}\" which generally automatically categorize them.\\n\\nI\\'m not sure what the appropriate behavior here is. I believe that continuing to allow users to insert links to misspelled words or phrases unknowingly is a bug and should be addressed somehow.\\n\\nThere are a few options here, but I\\'m curious to read what others think about this. The goal here is to reduce the number of misspelled links that are added to a page by giving the user warning or notice that they\\'ve tried to insert a misspelled link (e.g., [[Hilary Clinton]] or [[Stephen Spielberg]]).\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: enhancement\\n**URL**: https://en.wikipedia.org/wiki/Wikipedia:Database_reports/Linked_misspellings\\n**See Also**:\\nhttps://bugzilla.wikimedia.org/show_bug.cgi?id=13595'}, 'authorPHID': 'PHID-USER-hyfm4swq76s4j642w46x', 'ownerPHID': None, 'status': {'value': 'open', 'name': 'Open', 'color': None}, 'priority': {'value': 25, 'name': 'Low', 'color': 'yellow'}, 'points': None, 'subtype': 'feature', 'closerPHID': None, 'dateClosed': None, 'spacePHID': None, 'dateCreated': 1355001180, 'dateModified': 1643973240, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42880', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-chrmcih5qjpx5buo7vx6', 'PHID-USER-hirrhium5ibrtof34lwa', 'PHID-USER-hgn5uw2jafgjgfvxibhh', 'PHID-USER-wkpnidxoctuhawexig5p', 'PHID-USER-v7vgzvvcw7v2umf737ri', 'PHID-USER-oxd6f6xemkuyttw7z7wl', 'PHID-USER-hyfm4swq76s4j642w46x'], 'subscriberCount': 7, 'viewerIsSubscribed': False}}}, {'id': 44839, 'type': 'TASK', 'phid': 'PHID-TASK-2mqmky2wjztbg6g74ags', 'fields': {'name': 'VisualEditor: Links should not be allowed to be created spanning only whitespace', 'description': {'raw': 'Select some whitespace and open the link inspector and create the link.\\nThe SurfaceFragment.trimRange method is not trimming the space if the range only contains space.\\n\\nThe correct behavior should be to trim the space then insert the location text into the document.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'ownerPHID': 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 25, 'name': 'Low', 'color': 'yellow'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354921736, 'spacePHID': None, 'dateCreated': 1354917180, 'dateModified': 1417573354, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42839', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44750, 'type': 'TASK', 'phid': 'PHID-TASK-mzqqlikp4a7wrk4foid4', 'fields': {'name': 'VisualEditor: Page creation should have a customized save button', 'description': {'raw': 'Similar to bug 41865\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'ownerPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 25, 'name': 'Low', 'color': 'yellow'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354758526, 'spacePHID': None, 'dateCreated': 1354749120, 'dateModified': 1417573357, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42750', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44653, 'type': 'TASK', 'phid': 'PHID-TASK-d6ih3cdrbybmct3lwinv', 'fields': {'name': 'en.wikipedia.org load takes 12+ seconds in specific Source IP range, as one specific call to bits.wikimedia.org/.../load.php times out', 'description': {'raw': \"**Author:** `bugzilla.wikimedia.org.76374`\\n\\n**Description:**\\ncurl -I 'http://bits.wikimedia.org/en.wikipedia.org/load.php?debug=false&lang=en&modules=ext.centralNotice.bannerController%7Cext.wikimediaShopLink.core%7Cjquery.client%2Ccookie%2CmwExtension%7Cmediawiki.cldr%2CjqueryMsg%2Clanguage%2Cnotify%2Cutil%7Cmediawiki.language.data%2Cinit%7Cmediawiki.legacy.ajax%2Cwikibits%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.startup&skin=vector&version=20121203T183954Z&*'\\ncurl: (52) Empty reply from server\\n\\n--------------------------\\n**Version**: wmf-deployment\\n**Severity**: normal\"}, 'authorPHID': 'PHID-USER-ynivjflmc2dcl6w5ut5v', 'ownerPHID': 'PHID-USER-sai77mtxmpqnm6pycyvz', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 25, 'name': 'Low', 'color': 'yellow'}, 'points': None, 'subtype': 'default', 'closerPHID': 'PHID-USER-sai77mtxmpqnm6pycyvz', 'dateClosed': 1490658160, 'spacePHID': None, 'dateCreated': 1354560840, 'dateModified': 1490687031, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42653', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-wrimmmr5w2zt7nk2t753', 'PHID-USER-hyfm4swq76s4j642w46x', 'PHID-USER-klksrqr4iars7szz53kl', 'PHID-USER-pmmyhpxkzmo6lbo5bcqo', 'PHID-USER-v7bwpq3rs3zdxegibdbh', 'PHID-USER-hgn5uw2jafgjgfvxibhh', 'PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-6odl7ox7x6xngves6kqx'], 'subscriberCount': 9, 'viewerIsSubscribed': False}}}, {'id': 44553, 'type': 'TASK', 'phid': 'PHID-TASK-er2j2jzi7wxs7w6xckns', 'fields': {'name': 'VisualEditor: Only replace url on veaction=edit if there is no other query', 'description': {'raw': 'Go to a VE wiki page directly in edit mode:\\n\\nhttp://mediawiki.org/wiki/VisualEditor:Test?uselang=he&veaction=edit\\n\\nThe integration changes the URL to:\\n\\nhttps://www.mediawiki.org/wiki/VisualEditor:Test\\n\\n... instead of:\\n\\nhttps://www.mediawiki.org/wiki/VisualEditor:Test?uselang=he\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: minor'}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-sai77mtxmpqnm6pycyvz', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 25, 'name': 'Low', 'color': 'yellow'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354565570, 'spacePHID': None, 'dateCreated': 1354218360, 'dateModified': 1434236528, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42553', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44306, 'type': 'TASK', 'phid': 'PHID-TASK-pjkjsbfhouqskvpvg6ev', 'fields': {'name': \"VisualEditor: Integration fails if an article has an '@' character in its title\", 'description': {'raw': \"VE/MW integration fails (does not trigger but instead throws two errors, below) if an article has an '@' character in its title, though these are valid\\n\\nUncaught Error: Bad constructor arguments mediawiki.Uri.js:165\\nUri mediawiki.Uri.js:165\\nmw.UriRelative mediawiki.Uri.js:318\\n(anonymous function) mediawiki.Uri.js:325\\n(anonymous function) mediawiki.Uri.js:328\\n\\nUncaught TypeError: undefined is not a function ve.init.mw.ViewPageTarget.js:18\\nVeInitMwViewPageTarget ve.init.mw.ViewPageTarget.js:18\\n(anonymous function) ve.init.mw.ViewPageTarget.js:1121\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: minor\\n**URL**: https://www.mediawiki.org/wiki/VisualEditor:Test@4\"}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-sai77mtxmpqnm6pycyvz', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 25, 'name': 'Low', 'color': 'yellow'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1358878792, 'spacePHID': None, 'dateCreated': 1353449520, 'dateModified': 1417573351, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42306', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44281, 'type': 'TASK', 'phid': 'PHID-TASK-nm5db6sizlej6gdhkkqp', 'fields': {'name': 'VisualEditor: Putting cursor immediately before link should display inspector icon', 'description': {'raw': 'Currently, putting the cursor inside a link displays the inspector icon (except for bug 42276). Putting the cursor immediately after a link (i.e. between the last linked character and the first non-linked character) also displays the icon, but putting it immediately before the icon (between the last non-linked character and the first linked character) does not. I think it should.\\n\\nOf course, the interesting question here is what should happen when you have two directly adjacent links and you put the cursor between them.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal'}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'status': {'value': 'declined', 'name': 'Declined', 'color': None}, 'priority': {'value': 25, 'name': 'Low', 'color': 'yellow'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353539731, 'spacePHID': None, 'dateCreated': 1353379740, 'dateModified': 1417573399, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42281', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-pun3sjvg3cemjzbgyo2t', 'PHID-USER-fovtl67ew4l4cc3oeypc'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44279, 'type': 'TASK', 'phid': 'PHID-TASK-vedbqhk6swjrkcfcznus', 'fields': {'name': 'VisualEditor: Pre-annotations code annotates characters with the empty set', 'description': {'raw': \"1. Open any document\\n2. Blank it\\n3. Type some text\\n4. Dump the model into the console (ve.instances[0].documentModel.data)\\n\\nExpected output: [ 'F', 'o', 'o', 'b', 'a', 'r' ]\\nActual output: [ 'F', ['o', ve.AnnotationSet([])], ['b', ve.AnnotationSet([])] ...\\n\\nThe pre-annotations code is applying the empty set as a pre-annotation to every character except the first. This shouldn't happen, it should just not annotate if it's got nothing to annotate with.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: normal\"}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 25, 'name': 'Low', 'color': 'yellow'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1353546616, 'spacePHID': None, 'dateCreated': 1353378840, 'dateModified': 1417573397, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42279', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 4, 'viewerIsSubscribed': False}}}, {'id': 44141, 'type': 'TASK', 'phid': 'PHID-TASK-o2rqx7ng2feqhiottjsd', 'fields': {'name': 'VisualEditor: Make MW\\'s core \"edit source\" functionality load in-page', 'description': {'raw': 'Currently to view the underlying wikitext of a page that\\'s in a namespace where VisualEditor is active, one clicks an \"edit source\" tab. However, when editing, if you want to see the underlying wikitext but not lose your changes or really just not have to reload the page, that isn\\'t possible. It\\'d be awfully nice if you could toggle between wikitext and the VisualEditor interface without needing to reload the page.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: enhancement\\n**See Also**:\\nhttps://bugzilla.wikimedia.org/show_bug.cgi?id=57462'}, 'authorPHID': 'PHID-USER-hyfm4swq76s4j642w46x', 'ownerPHID': None, 'status': {'value': 'open', 'name': 'Open', 'color': None}, 'priority': {'value': 25, 'name': 'Low', 'color': 'yellow'}, 'points': None, 'subtype': 'feature', 'closerPHID': None, 'dateClosed': None, 'spacePHID': None, 'dateCreated': 1352958180, 'dateModified': 1643973241, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42141', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-je4a7kqdfgacwkyhtg4c', 'PHID-USER-hgn5uw2jafgjgfvxibhh', 'PHID-USER-ydswvwhh5pm4lshahjje', 'PHID-USER-x7ti5ksby4ubsabntlxa', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-oxd6f6xemkuyttw7z7wl', 'PHID-USER-hyfm4swq76s4j642w46x', 'PHID-USER-fovtl67ew4l4cc3oeypc'], 'subscriberCount': 8, 'viewerIsSubscribed': False}}}, {'id': 44138, 'type': 'TASK', 'phid': 'PHID-TASK-abb2jsunmv7mixlbbgye', 'fields': {'name': 'VisualEditor: Toolbar \"Save page\" button is confusing as it merely opens the dialog to save the page', 'description': {'raw': 'Currently when using the VisualEditor extension, there\\'s a big green button that reads \"Save page\" in the top-right corner of the browsing window.\\n\\nWhen a user clicks this button labeled \"Save page\", the page is not saved. Instead, a dialog box appears in which the user is prompted to enter an edit summary. If the user then clicks the \"Save page\" button again (a second time), the page will be saved (maybe).\\n\\nI believe this is behavior is a little wrong. Historically the behavior of the \"Save page\" button has been to actually attempt to save the page to the database. This new workflow changes that behavior.\\n\\nRoan suggested perhaps changing \"Save page\" to read \"Save page...\", which would give the user a clue that it\\'s going to be a process, not an immediate action.\\n\\nThere\\'s also no warning within the \"Save page\" dialog box that says that the page has not yet been saved to the database. There\\'s no \"this is only a preview!\" text. Perhaps that\\'s a separate bug, though.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: enhancement'}, 'authorPHID': 'PHID-USER-hyfm4swq76s4j642w46x', 'ownerPHID': 'PHID-USER-kve2ug5yc3dp6ighnmqk', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 25, 'name': 'Low', 'color': 'yellow'}, 'points': None, 'subtype': 'default', 'closerPHID': 'PHID-USER-kve2ug5yc3dp6ighnmqk', 'dateClosed': 1524049612, 'spacePHID': None, 'dateCreated': 1352957520, 'dateModified': 1525162037, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42138', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-vvb5cpvcki2rgdles7sq', 'PHID-USER-i6la3rbocleoqjqldvzu', 'PHID-USER-i7dq7lfeqbo6ifzzeuxn', 'PHID-USER-kve2ug5yc3dp6ighnmqk', 'PHID-USER-c47vnc2yxmwfvvc4367q', 'PHID-USER-unpoeiyj52rmcfqi5rbw', 'PHID-USER-bd4kgtavgiydswld34tj', 'PHID-USER-2fha2mym5lty6djs2qfl', 'PHID-USER-caadsxn4xg5gmxrpn6kz', 'PHID-USER-uqnvjf4m5wpzmkaddswb'], 'subscriberCount': 23, 'viewerIsSubscribed': False}}}, {'id': 44136, 'type': 'TASK', 'phid': 'PHID-TASK-u4tbayn5u7dwwaa4yhrw', 'fields': {'name': 'VisualEditor: \"Watch this\" checkbox in Save dialog should use same logic as core EditPage', 'description': {'raw': 'When using VisualEditor currently when creating a page, the \"Save page\" dialog box has two checkboxes below the edit summary input: \"This is a minor edit\" and \"Watch this page\".\\n\\nThe \"Watch this page\" checkbox is not auto-checked, even though it is (for my account) via the non-VisualEditor editor. There\\'s a user preference (\"Add pages I create and files I upload to my watchlist\") that controls whether this checkbox is checked by default when creating a page. VisualEditor currently ignores the value of this user preference. It should respect it.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: minor'}, 'authorPHID': 'PHID-USER-hyfm4swq76s4j642w46x', 'ownerPHID': 'PHID-USER-sai77mtxmpqnm6pycyvz', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 25, 'name': 'Low', 'color': 'yellow'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354835188, 'spacePHID': None, 'dateCreated': 1352957160, 'dateModified': 1417573356, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42136', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-hyfm4swq76s4j642w46x', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 6, 'viewerIsSubscribed': False}}}, {'id': 44115, 'type': 'TASK', 'phid': 'PHID-TASK-53f6o63dslfan6juoyu2', 'fields': {'name': 'VisualEditor: Merging behaviour of lists should be looked at', 'description': {'raw': '\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: enhancement\\n**See Also**:\\nhttps://bugzilla.wikimedia.org/show_bug.cgi?id=66452'}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': None, 'status': {'value': 'open', 'name': 'Open', 'color': None}, 'priority': {'value': 25, 'name': 'Low', 'color': 'yellow'}, 'points': None, 'subtype': 'feature', 'closerPHID': None, 'dateClosed': None, 'spacePHID': None, 'dateCreated': 1352935080, 'dateModified': 1643973241, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42115', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-s7sn3zjthnxvep34c5ho', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 3, 'viewerIsSubscribed': False}}}, {'id': 43865, 'type': 'TASK', 'phid': 'PHID-TASK-y3mmi3dje57c7pi3w742', 'fields': {'name': 'VisualEditor: When editing a non-current revision of a page, alter the \"Save page\" button behaviour', 'description': {'raw': 'Current behaviour on oldid pages is the same as for current ones - that is, the \"Save page\" button is greyed out and won\\'t activate until the content changes.\\n\\nHowever, for oldid pages the content is already \"changed\" compared to the current revision, so it should be active right from the start. Also, ideally it should say \"Restore page\" at first, changing to \"Save page\" when/if the page\\'s contents have been altered.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: minor'}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 25, 'name': 'Low', 'color': 'yellow'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1354737639, 'spacePHID': None, 'dateCreated': 1352324940, 'dateModified': 1417573358, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz41865', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}, {'id': 44735, 'type': 'TASK', 'phid': 'PHID-TASK-ciosa56mnibqn4lx27ub', 'fields': {'name': 'Setup wikibugs and gerrit-wm for #mediawiki-visualeditor', 'description': {'raw': 'Puppet config for wikibugs:\\n\\nhttps://gerrit.wikimedia.org/r/gitweb?p=operations/puppet.git;a=blob;f=manifests/misc/wikibugs.pp\\n\\nPuppet config for gerrit-wm:\\n\\nhttps://gerrit.wikimedia.org/r/gitweb?p=operations/puppet.git;a=blob;f=manifests/gerrit.pp\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: enhancement'}, 'authorPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'ownerPHID': 'PHID-USER-ydswvwhh5pm4lshahjje', 'status': {'value': 'resolved', 'name': 'Resolved', 'color': 'green'}, 'priority': {'value': 10, 'name': 'Lowest', 'color': 'sky'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1398113038, 'spacePHID': None, 'dateCreated': 1354738560, 'dateModified': 1398113588, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42735', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-hyfm4swq76s4j642w46x', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-muirnivxp5hzppn2a3z7', 'PHID-USER-sai77mtxmpqnm6pycyvz', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 6, 'viewerIsSubscribed': False}}}, {'id': 44222, 'type': 'TASK', 'phid': 'PHID-TASK-guukovmsjsnlpphgujcv', 'fields': {'name': 'VisualEditor: Two replacements within the same transaction and the same paragraph cause change markers to be off', 'description': {'raw': \"Test case:\\n\\n+ 'removing then inserting a character': {\\n+ 'calls': [\\n+ ['pushRetain', 41],\\n+ ['pushReplace', ['i'], []],\\n+ ['pushReplace', [], ['j']]\\n+ ],\\n+ 'expected': function ( data ) {\\n+ data[41] = 'j';\\n+ ve.setProp( data[37], 'internal', 'changed', 'content', 2 );\\n+ }\\n }\\n\\nThis sets the second change marker on data[36]. This happens because the start offsets handled in TransactionProcessor.replace are translated using this.adjustment , but that glosses over the fact that not all adjustments captured in this.adjustment actually apply if the offset is before the cursor. Instead, we need some sort of offset translation. I tried using ve.dm.Transaction.translateOffset() but that doesn't seem to work out of the box very well.\\n\\nI guess theoretically this might also be an issue with other uses of .start attributes in the replacement processor, but it hasn't led to issues so far.\\n\\nLow prio because we currently don't generate transactions that trigger this case.\\n\\n--------------------------\\n**Version**: unspecified\\n**Severity**: major\"}, 'authorPHID': 'PHID-USER-fovtl67ew4l4cc3oeypc', 'ownerPHID': 'PHID-USER-it53o2f2kyryqyj33uzt', 'status': {'value': 'invalid', 'name': 'Invalid', 'color': None}, 'priority': {'value': 10, 'name': 'Lowest', 'color': 'sky'}, 'points': None, 'subtype': 'default', 'closerPHID': None, 'dateClosed': 1360975473, 'spacePHID': None, 'dateCreated': 1353134520, 'dateModified': 1417573346, 'policy': {'view': 'public', 'interact': 'public', 'edit': 'users'}, 'custom.deadline.due': None, 'custom.train.status': None, 'custom.train.backup': None, 'custom.external_reference': 'bz42222', 'custom.release.version': None, 'custom.release.date': None, 'custom.security_topic': None, 'custom.risk.summary': None, 'custom.risk.impacted': None, 'custom.risk.rating': None, 'custom.requestor.affiliation': None, 'custom.error.reqid': None, 'custom.error.stack': None, 'custom.error.url': None, 'custom.error.id': None, 'custom.points.final': None, 'custom.deadline.start': None}, 'attachments': {'subscribers': {'subscriberPHIDs': ['PHID-USER-cqtipia3tizutncgpwpr', 'PHID-USER-fovtl67ew4l4cc3oeypc', 'PHID-USER-it53o2f2kyryqyj33uzt', 'PHID-USER-mpfqwllylfkzpcgkdkvc', 'PHID-USER-ydswvwhh5pm4lshahjje'], 'subscriberCount': 5, 'viewerIsSubscribed': False}}}], 'maps': {}, 'query': {'queryKey': None}, 'cursor': {'limit': '100', 'after': None, 'before': None, 'order': None}}\n" + ] + } + ], + "source": [ + "ve_ts1 = int(datetime.datetime.timestamp(datetime.datetime(2012, 11, 1, 0, 0, 0)))\n", + "ve_ts2 = int(datetime.datetime.timestamp(datetime.datetime(2012, 12, 10, 0, 0, 0)))\n", + "\n", + "ve_data = query_task_tag(\"VisualEditor\", ts1=ve_ts1, ts2=ve_ts2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pa_ts1 = int(datetime.datetime.timestamp(datetime.datetime(2012, 11, 1, 0, 0, 0)))\n", + "pa_ts2 = int(datetime.datetime.timestamp(datetime.datetime(2012, 12, 10, 0, 0, 0)))\n", + "\n", + "pa_data = query_task_tag(\"Parsoid\", ts1=pa_ts1, ts2=pa_ts2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "task_id = data[0]['phid']\n", + "task_id" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "#also from MGerlach\n", + "def query_transactions_phid_task(\n", + " task_phid, \n", + " limit = 100, \n", + " api_url_base = 'https://phabricator.wikimedia.org/api/transaction.search',\n", + " api_token = 'api-grocgdq2767cx6v5ywckkjmetx2f',\n", + " sleep = 5, \n", + "):\n", + " '''\n", + " query all transactions for a task (task_phid).\n", + " OPTIONAL:\n", + " - limit (int, default=100), number of results per query, cannot be larger than 100\n", + " - sleep (int, default = 0), sleep between each query\n", + " - api_url_base (str,) is the url for the api\n", + " - api_token (str, default=martins token), \n", + "\n", + " RETURNS:\n", + " - list of dictionary.\n", + " '''\n", + " time.sleep(sleep)\n", + " to_query = 1\n", + " after = None\n", + "\n", + " data = []\n", + "\n", + " while to_query == 1:\n", + "\n", + " params = {\n", + " 'api.token' : api_token,\n", + " 'objectIdentifier':task_phid, ## task-phid\n", + " 'limit':limit,\n", + " 'after':after,\n", + " }\n", + " response = requests.get( api_url_base, params=params)\n", + " result = json.loads(response.text)['result']\n", + "\n", + " ## the data\n", + " data_tmp = result['data']\n", + " data += data_tmp\n", + " ## check if there are more results to query\n", + " cursor = result['cursor']\n", + " ## if after == None, no more queries\n", + " if cursor['after'] == None:\n", + " to_query = 0\n", + " ## if after != None, query next page by passing after-argument\n", + " else:\n", + " after = cursor['after']\n", + " return data" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "ename": "JSONDecodeError", + "evalue": "Expecting value: line 1 column 1 (char 0)", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mJSONDecodeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[12], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m data_comments \u001b[38;5;241m=\u001b[39m \u001b[43mquery_transactions_phid_task\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mPHID-TASK-d53w6sbodbcpx4rkzth3\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2\u001b[0m data_comments\n", + "Cell \u001b[0;32mIn[6], line 35\u001b[0m, in \u001b[0;36mquery_transactions_phid_task\u001b[0;34m(task_phid, limit, api_url_base, api_token, sleep)\u001b[0m\n\u001b[1;32m 28\u001b[0m params \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 29\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mapi.token\u001b[39m\u001b[38;5;124m'\u001b[39m : api_token,\n\u001b[1;32m 30\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mobjectIdentifier\u001b[39m\u001b[38;5;124m'\u001b[39m:task_phid, \u001b[38;5;66;03m## task-phid\u001b[39;00m\n\u001b[1;32m 31\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlimit\u001b[39m\u001b[38;5;124m'\u001b[39m:limit,\n\u001b[1;32m 32\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mafter\u001b[39m\u001b[38;5;124m'\u001b[39m:after,\n\u001b[1;32m 33\u001b[0m }\n\u001b[1;32m 34\u001b[0m response \u001b[38;5;241m=\u001b[39m requests\u001b[38;5;241m.\u001b[39mget( api_url_base, params\u001b[38;5;241m=\u001b[39mparams)\n\u001b[0;32m---> 35\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mjson\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloads\u001b[49m\u001b[43m(\u001b[49m\u001b[43mresponse\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtext\u001b[49m\u001b[43m)\u001b[49m[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mresult\u001b[39m\u001b[38;5;124m'\u001b[39m]\n\u001b[1;32m 37\u001b[0m \u001b[38;5;66;03m## the data\u001b[39;00m\n\u001b[1;32m 38\u001b[0m data_tmp \u001b[38;5;241m=\u001b[39m result[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdata\u001b[39m\u001b[38;5;124m'\u001b[39m]\n", + "File \u001b[0;32m/opt/conda-analytics/lib/python3.10/json/__init__.py:346\u001b[0m, in \u001b[0;36mloads\u001b[0;34m(s, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)\u001b[0m\n\u001b[1;32m 341\u001b[0m s \u001b[38;5;241m=\u001b[39m s\u001b[38;5;241m.\u001b[39mdecode(detect_encoding(s), \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msurrogatepass\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 343\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\u001b[38;5;28mcls\u001b[39m \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m object_hook \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m\n\u001b[1;32m 344\u001b[0m parse_int \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m parse_float \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m\n\u001b[1;32m 345\u001b[0m parse_constant \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m object_pairs_hook \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m kw):\n\u001b[0;32m--> 346\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_default_decoder\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdecode\u001b[49m\u001b[43m(\u001b[49m\u001b[43ms\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 347\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mcls\u001b[39m \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 348\u001b[0m \u001b[38;5;28mcls\u001b[39m \u001b[38;5;241m=\u001b[39m JSONDecoder\n", + "File \u001b[0;32m/opt/conda-analytics/lib/python3.10/json/decoder.py:337\u001b[0m, in \u001b[0;36mJSONDecoder.decode\u001b[0;34m(self, s, _w)\u001b[0m\n\u001b[1;32m 332\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mdecode\u001b[39m(\u001b[38;5;28mself\u001b[39m, s, _w\u001b[38;5;241m=\u001b[39mWHITESPACE\u001b[38;5;241m.\u001b[39mmatch):\n\u001b[1;32m 333\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Return the Python representation of ``s`` (a ``str`` instance\u001b[39;00m\n\u001b[1;32m 334\u001b[0m \u001b[38;5;124;03m containing a JSON document).\u001b[39;00m\n\u001b[1;32m 335\u001b[0m \n\u001b[1;32m 336\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 337\u001b[0m obj, end \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mraw_decode\u001b[49m\u001b[43m(\u001b[49m\u001b[43ms\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43midx\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m_w\u001b[49m\u001b[43m(\u001b[49m\u001b[43ms\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mend\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 338\u001b[0m end \u001b[38;5;241m=\u001b[39m _w(s, end)\u001b[38;5;241m.\u001b[39mend()\n\u001b[1;32m 339\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m end \u001b[38;5;241m!=\u001b[39m \u001b[38;5;28mlen\u001b[39m(s):\n", + "File \u001b[0;32m/opt/conda-analytics/lib/python3.10/json/decoder.py:355\u001b[0m, in \u001b[0;36mJSONDecoder.raw_decode\u001b[0;34m(self, s, idx)\u001b[0m\n\u001b[1;32m 353\u001b[0m obj, end \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mscan_once(s, idx)\n\u001b[1;32m 354\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n\u001b[0;32m--> 355\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m JSONDecodeError(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mExpecting value\u001b[39m\u001b[38;5;124m\"\u001b[39m, s, err\u001b[38;5;241m.\u001b[39mvalue) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 356\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m obj, end\n", + "\u001b[0;31mJSONDecodeError\u001b[0m: Expecting value: line 1 column 1 (char 0)" + ] + } + ], + "source": [ + "data_comments = query_transactions_phid_task(\"PHID-TASK-d53w6sbodbcpx4rkzth3\")\n", + "data_comments" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "PHID-TASK-jye77ivrdahrtvdtxmyb\n" + ] + }, + { + "ename": "JSONDecodeError", + "evalue": "Expecting value: line 1 column 1 (char 0)", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mJSONDecodeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[16], line 4\u001b[0m\n\u001b[1;32m 2\u001b[0m task_id \u001b[38;5;241m=\u001b[39m entry[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mphid\u001b[39m\u001b[38;5;124m'\u001b[39m]\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28mprint\u001b[39m(task_id)\n\u001b[0;32m----> 4\u001b[0m transactions \u001b[38;5;241m=\u001b[39m \u001b[43mquery_transactions_phid_task\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtask_id\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 5\u001b[0m comments \u001b[38;5;241m=\u001b[39m {}\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m item \u001b[38;5;129;01min\u001b[39;00m transactions:\n", + "Cell \u001b[0;32mIn[15], line 35\u001b[0m, in \u001b[0;36mquery_transactions_phid_task\u001b[0;34m(task_phid, limit, api_url_base, api_token, sleep)\u001b[0m\n\u001b[1;32m 28\u001b[0m params \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 29\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mapi.token\u001b[39m\u001b[38;5;124m'\u001b[39m : api_token,\n\u001b[1;32m 30\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mobjectIdentifier\u001b[39m\u001b[38;5;124m'\u001b[39m:task_phid, \u001b[38;5;66;03m## task-phid\u001b[39;00m\n\u001b[1;32m 31\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlimit\u001b[39m\u001b[38;5;124m'\u001b[39m:limit,\n\u001b[1;32m 32\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mafter\u001b[39m\u001b[38;5;124m'\u001b[39m:after,\n\u001b[1;32m 33\u001b[0m }\n\u001b[1;32m 34\u001b[0m response \u001b[38;5;241m=\u001b[39m requests\u001b[38;5;241m.\u001b[39mget( api_url_base, params\u001b[38;5;241m=\u001b[39mparams)\n\u001b[0;32m---> 35\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mjson\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloads\u001b[49m\u001b[43m(\u001b[49m\u001b[43mresponse\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtext\u001b[49m\u001b[43m)\u001b[49m[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mresult\u001b[39m\u001b[38;5;124m'\u001b[39m]\n\u001b[1;32m 37\u001b[0m \u001b[38;5;66;03m## the data\u001b[39;00m\n\u001b[1;32m 38\u001b[0m data_tmp \u001b[38;5;241m=\u001b[39m result[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdata\u001b[39m\u001b[38;5;124m'\u001b[39m]\n", + "File \u001b[0;32m/opt/conda-analytics/lib/python3.10/json/__init__.py:346\u001b[0m, in \u001b[0;36mloads\u001b[0;34m(s, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)\u001b[0m\n\u001b[1;32m 341\u001b[0m s \u001b[38;5;241m=\u001b[39m s\u001b[38;5;241m.\u001b[39mdecode(detect_encoding(s), \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msurrogatepass\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 343\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\u001b[38;5;28mcls\u001b[39m \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m object_hook \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m\n\u001b[1;32m 344\u001b[0m parse_int \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m parse_float \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m\n\u001b[1;32m 345\u001b[0m parse_constant \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m object_pairs_hook \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m kw):\n\u001b[0;32m--> 346\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_default_decoder\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdecode\u001b[49m\u001b[43m(\u001b[49m\u001b[43ms\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 347\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mcls\u001b[39m \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 348\u001b[0m \u001b[38;5;28mcls\u001b[39m \u001b[38;5;241m=\u001b[39m JSONDecoder\n", + "File \u001b[0;32m/opt/conda-analytics/lib/python3.10/json/decoder.py:337\u001b[0m, in \u001b[0;36mJSONDecoder.decode\u001b[0;34m(self, s, _w)\u001b[0m\n\u001b[1;32m 332\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mdecode\u001b[39m(\u001b[38;5;28mself\u001b[39m, s, _w\u001b[38;5;241m=\u001b[39mWHITESPACE\u001b[38;5;241m.\u001b[39mmatch):\n\u001b[1;32m 333\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Return the Python representation of ``s`` (a ``str`` instance\u001b[39;00m\n\u001b[1;32m 334\u001b[0m \u001b[38;5;124;03m containing a JSON document).\u001b[39;00m\n\u001b[1;32m 335\u001b[0m \n\u001b[1;32m 336\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 337\u001b[0m obj, end \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mraw_decode\u001b[49m\u001b[43m(\u001b[49m\u001b[43ms\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43midx\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m_w\u001b[49m\u001b[43m(\u001b[49m\u001b[43ms\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mend\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 338\u001b[0m end \u001b[38;5;241m=\u001b[39m _w(s, end)\u001b[38;5;241m.\u001b[39mend()\n\u001b[1;32m 339\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m end \u001b[38;5;241m!=\u001b[39m \u001b[38;5;28mlen\u001b[39m(s):\n", + "File \u001b[0;32m/opt/conda-analytics/lib/python3.10/json/decoder.py:355\u001b[0m, in \u001b[0;36mJSONDecoder.raw_decode\u001b[0;34m(self, s, idx)\u001b[0m\n\u001b[1;32m 353\u001b[0m obj, end \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mscan_once(s, idx)\n\u001b[1;32m 354\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n\u001b[0;32m--> 355\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m JSONDecodeError(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mExpecting value\u001b[39m\u001b[38;5;124m\"\u001b[39m, s, err\u001b[38;5;241m.\u001b[39mvalue) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 356\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m obj, end\n", + "\u001b[0;31mJSONDecodeError\u001b[0m: Expecting value: line 1 column 1 (char 0)" + ] + } + ], + "source": [ + "for entry in ve_data:\n", + " task_id = entry['phid']\n", + " print(task_id)\n", + " transactions = query_transactions_phid_task(task_id)\n", + " comments = {}\n", + " for item in transactions:\n", + " comments[item['id']] = item['comments']\n", + " entry['task_comments'] = comments\n", + "\n", + "ve_data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "DATA_PREFIX = \"/data/users/mgaughan/mw-repo-lifecycles/phab_data/\"\n", + "import json\n", + "with open(DATA_PREFIX + \"visualeditor/\" + \"DATE_DATE.json\", \"w\") as outfile1:\n", + " json.dump(ve_results, outfile1)\n", + "with open(DATA_PREFIX + \"parsoid/\" + \"DATE_DATE.json\", \"w\") as outfile2:\n", + " json.dump(pa_results, outfile1)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.15" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/src/lib/phab_get.py b/src/lib/phab_get.py index 6b47b83..7eeb438 100644 --- a/src/lib/phab_get.py +++ b/src/lib/phab_get.py @@ -8,8 +8,70 @@ import re import datetime # phab=Phabricator("https://phabricator.wikimedia.org/") +tags = [ + "VisualEditor", + "Parsoid" +] #set phabricator api token +token = "api-wurg254ciq5uvfxlr4rszn5ynpy4" +api_base = 'https://phabricator.wikimedia.org/api/' + +# the query task taken from MGerlach's notebook +def query_task_tag( + tag_term, + limit = 100, + ts1 = None, ts2 = None, + api_url_base = 'https://phabricator.wikimedia.org/api/maniphest.search', + api_token = "api-wurg254ciq5uvfxlr4rszn5ynpy4"', + sleep = 1, +): + ''' + query all tasks tagged with specific tag + OPTIONAL: + - limit (int, default=100), number of results per query, cannot be larger than 100 + - ts1, ts2 (int, default = None); timewindow for creation of tasks (timestamp) + - sleep (int, default = 0), sleep between each query + - api_url_base (str,) is the url for the api + - api_token (str, default=martins token), + + RETURNS: + - list of dictionary. + ''' + + to_query = 1 + after = None + + data = [] + + while to_query == 1: + + params = { + 'api.token' : api_token, + 'constraints[tags]':tag_term, ## term that task is tagged with + 'constraints[createdStart]':ts1, ## timestamp task creation (min) + 'constraints[createdEnd]':ts2, ## timestamp task creation (max) + 'limit':limit, + 'after':after, + "attachments[subscribers]":"true", + } + + response = requests.get( api_url_base, params=params) + result = json.loads(response.text)['result'] + + ## the data + data_tmp = result['data'] + data += data_tmp + ## check if there are more results to query + cursor = result['cursor'] + ## if after == None, no more queries + if cursor['after'] == None: + to_query = 0 + ## if after != None, query next page by passing after-argument + else: + after = cursor['after'] + return data + # for the search criteria of # the umbrella tag VisualEditor