Aurora 0.15.0
--------------------------------------------------------------------------------
## Task
    * [AURORA-1725] - Expose tier configurations as a debug page 
    * [AURORA-1458] - Add tier into the UI "show config" summary
    * [AURORA-1720] - Broken link in http://aurora.apache.org/


Aurora 0.14.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-1660] - Download page must not link to snapshots / nightly builds
    * [AURORA-1668] - http://aurora.apache.org/documentation/latest/ is mainly broken for 0.13.0
    * [AURORA-1588] - Unnecessary HealthCheckConfig endpoint warning
    * [AURORA-1568] - rpm builder does not handle snapshot versions
    * [AURORA-1709] - After rb/46835 job key's role is required to exist as a user
    * [AURORA-1665] - DbCronJobStore is missing @Timed annotations
    * [AURORA-1687] - Nightly packaging builds broken by ppa:openjdk-r java packaging shift.
    * [AURORA-1673] - Links going out from http://aurora.apache.org/documentation/0.13.0/ 404
    * [AURORA-1682] - https://builds.apache.org/job/aurora-packaging-nightly is broken

## Story
    * [AURORA-572] - Provide control over listening network interfaces/addresses
    * [AURORA-300] - changelog generation should document potentially breaking API changes
    * [AURORA-1145] - Remove --no-fast from python test invocation
    * [AURORA-1658] - Aurora does not allow to configure the Mesos offer filter duration
    * [AURORA-1098] - end-to-end test should use docker

## Task
    * [AURORA-1683] - Implement an optional webhook parameter to scheduler to POST TaskStateChange events
    * [AURORA-1616] - Support for preemptible tasks via tier configuration
    * [AURORA-1667] - Sort out vagrant box versioning
    * [AURORA-1636] - Update Scheduler to accept tasks with images
    * [AURORA-1637] - Update Executor to support launching tasks with images.
    * [AURORA-1451] - Refer to "Mesos Agent" instead of "Mesos Slave" in documentation
    * [AURORA-1450] - Refer to "Mesos Agent" instead of "Mesos Slave" in UI
    * [AURORA-1672] - Duplicate task events displayed in UI
    * [AURORA-1468] - Replace org.apache.aurora.commons.zookeeper with a Apache Curator
    * [AURORA-945] - Advertise Aurora as "Aurora" to Mesos master.
    * [AURORA-1638] - Update MesosTaskFactory to send tasks with images configured to use the unified containerizer
    * [AURORA-1639] - Update client to allow configuring tasks with images.
    * [AURORA-1449] - Rename /slaves endpoint to /agents
    * [AURORA-1631] - Consider removing --restart-threshold from "aurora job restart"
    * [AURORA-1624] - Thrift API for retrieving scheduler tier configuration


Aurora 0.13.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-1615] - Preemptor crashes scheduler during host maintenance
    * [AURORA-1604] - Identity.role is still used in the UI leading to duplicate instances on job page
    * [AURORA-1630] - Updater is using non-logging executor and does not kill scheduler on error
    * [AURORA-1614] - Failed sandbox initialization can cause tasks to go LOST
    * [AURORA-1625] - ConcurrentModificationException in TaskHistoryPruner with DbTaskStore
    * [AURORA-1650] - I* entity objects have incorrect isSet* methods for collection types
    * [AURORA-1628] - ShiroAuthorizingParamInterceptor failure messages are not descriptive
    * [AURORA-1642] - Thermos runner finalization is broken
    * [AURORA-1641] - Shell health checker is running as root
    * [AURORA-1647] - The install docs are inaccurate.
    * [AURORA-1633] - Cannot pass in environment variables into shell health check command

## Epic
    * [AURORA-1424] - Improve build process
    * [AURORA-1343] - Aurora support for Mesos revocable offers

## Story
    * [AURORA-1653] - Add a way to get the running version of aurora in the UI
    * [AURORA-1643] - Support authentication between announcer and ZK
    * [AURORA-1627] - Implement DB snapshotting
    * [AURORA-1114] - Upgrade virtualenv to fix SSL incompatibility on certain systems
    * [AURORA-1629] - Populate DiscoveryInfo in TaskInfo/ExecutorInfo
    * [AURORA-1611] - Add support for IP addresses instead of just hostnames in Announcer
    * [AURORA-1258] - Improve procedure for adding instances to a job
    * [AURORA-604] - use scaled aurora logo rather than scaling with browser
    * [AURORA-1626] - Update Thrift binary to point at new repository location for builds
    * [AURORA-1652] - /maintenance endpoint can result in 500
    * [AURORA-1648] - Use of `dbScript` field and schema changes can cause crashes
    * [AURORA-1598] - Remove fields made redundant by JobKey fields
    * [AURORA-1262] - Improve documentation of at-least-one semantics for instance ID

## Task
    * [AURORA-1493] - create ELB-friendly endpoint to detect leading scheduler
    * [AURORA-1619] - Generate documentation for command line args for all Aurora binaries
    * [AURORA-1324] - Reevaluate the effectiveness of DBStorage.bulkLoad()
    * [AURORA-1622] - Add ability to pass in environment variables into shell health checker
    * [AURORA-1613] - Publish documentation for 0.12.0
    * [AURORA-1591] - Remove TaskQuery argument in killTasks RPC.
    * [AURORA-1585] - Aurora 0.13.0 deprecations
    * [AURORA-1645] - Deschedule cron should not fail if the job is not scheduled
    * [AURORA-1612] - Publish RPMs and debs for 0.12.0
    * [AURORA-1004] - Document setQuota
    * [AURORA-1586] - Aurora 0.13.0 backwards incompatible changes
    * [AURORA-1606] - Remove deprecated executor flag announcer-enable
    * [AURORA-1617] - Install instructions should point out the critical step of matching mesos slave --work_dir to the observer --mesos-root
    * [AURORA-734] - document the behavior of finalization_wait in thermos
    * [AURORA-1605] - Update recovery docs to reflect changes
    * [AURORA-1635] - Update Scheduler storage to support storing images
    * [AURORA-1581] - Consider removing unused client updater RPCs
    * [AURORA-1068] - Document task throttling algorithm
    * [AURORA-1592] - Remove unscoped shiro permissions when TaskQuery is gone from killTasks
    * [AURORA-1595] - Remove AddInstancesConfig in addInstances RPC
    * [AURORA-1558] - Aurora 0.12.0 release candidate
    * [AURORA-955] - more minimal http url to determine aurora leader
    * [AURORA-869] - Document all available scheduler command line options


Aurora 0.12.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-1574] - ServerSetImplTest occasionally results in an exception.
    * [AURORA-1573] - SchedulingBenchmarks result in exception.
    * [AURORA-1385] - Traceback rendering cron jobs without an upcoming next run 
    * [AURORA-492] - Python thrift files are being generated with thrift 0.5.0
    * [AURORA-1587] - scheduler fails in a hard to decipher way when -native_log_file_path is not set
    * [AURORA-1570] - TaskObserverTest::test_run_loop is flaky
    * [AURORA-1582] - Task History Pruning attempts can fail silently
    * [AURORA-1175] - Two python_binary targets called 'thermos' can cause build failure
    * [AURORA-1580] - java.util.NoSuchElementException from Tasks.getLatestEvent with DbTaskStore
    * [AURORA-1593] - PubSubEventModule fails to dispatch events to TaskHistoryPruner on startup
    * [AURORA-1571] - The getJobUpdateDiff RPC does not populate taskLinks
    * [AURORA-1603] - Scheduler fails to start after rollback
    * [AURORA-1601] - Add a flag to disable the HTTP redirect to the leader
    * [AURORA-1596] - Invalid connection error from MyBatis.
    * [AURORA-1610] - JobConfiguration.identity needs backfill

## Story
    * [AURORA-1563] - Remove deprecated endpoint, expected_response and expected_response_code from HealthCheckConfig
    * [AURORA-1472] - TaskThrottle should have a jitter
    * [AURORA-852] - create architectural diagram with description of components
    * [AURORA-1552] - Perform explicit config validation in the executor when configuring health checker
    * [AURORA-1589] - Dupe debs are showing up
    * [AURORA-1413] - Wrong help indications of usable constants for the aurora-scheduler's -vlog argument
    * [AURORA-1548] - Add option to forward running process logs to stdout/stderr
    * [AURORA-1575] - Allow cluster administrators to apply global default Docker parameters.
    * [AURORA-1540] - Thermos should pass environment variables set for container to process being monitored
    * [AURORA-1109] - Add mesos role  feature
    * [AURORA-1569] - Support custom serverset path for announcements
    * [AURORA-1052] - Populate Labels in TaskConfig
    * [AURORA-855] - Add documentation on how to build the client

## Task
    * [AURORA-1560] - Aurora 0.12.0 backwards incompatible changes
    * [AURORA-1483] - Add a getting started guide using released packages
    * [AURORA-1576] - Allow for plugging in cli-configurable filters that are invoked post shiro filters.
    * [AURORA-1425] - Speed up iteration speed when developing UI code
    * [AURORA-1583] - Consider changing killTasks RPC to be job-scoped
    * [AURORA-663] - Update website to include releases
    * [AURORA-294] - Update Aurora homepage to highlight "features"
    * [AURORA-1559] - Aurora 0.12.0 deprecations
    * [AURORA-1565] - Upgrade mesos dependency to 0.25.0
    * [AURORA-1393] - Publish nightly and release packages for major operating systems
    * [AURORA-1566] - Upgrade to Gradle 2.10
    * [AURORA-876] - cache python dependencies in 3rdparty on svn.a.o
    * [AURORA-1423] - Upgrade to h2 1.4.188


Aurora 0.11.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-1535] - Dead links in documentation
    * [AURORA-1478] - Mirror redirector on website doesn't point to correct file
    * [AURORA-1304] - vagrant devcluster should only start one instance of aurora
    * [AURORA-1549] - Updater kills instances with scoped update
    * [AURORA-1272] - Link on "Deploying Aurora Scheduler" page is 404
    * [AURORA-870] - Documentation can't link to code
    * [AURORA-1539] - Package build script leaves root-owned files
    * [AURORA-1544] - Packaging scripts broken for 0.10.0
    * [AURORA-1507] - Instance collision stack trace in updater
    * [AURORA-1545] - rpm build fails compiling thrift
    * [AURORA-1550] - Unable to run tests from Intellij
    * [AURORA-954] - Change pants.ini to look in somewhere more descriptive than third_party
    * [AURORA-1506] - Job updater does not handle DELETED tasks properly
    * [AURORA-547] - Python tests produce a pex?
    * [AURORA-1381] - Remove duplicate thermos_observer
    * [AURORA-1538] - Vagrant build is broken on master
    * [AURORA-1512] - Aurora rpm missing std output switch 
    * [AURORA-1530] - client tests fails when run via Test client code: ./pants test src/test/python/apache/aurora/client/cli:all

## Story
    * [AURORA-1532] - Python check style should use the built-in pants checkstyle
    * [AURORA-1551] - Add support for non-HTTP based health checks
    * [AURORA-1562] - Create separate HttpEndpointConfig and ShellEndpointConfig structs
    * [AURORA-849] - modify release script to publish versioned docs to apache website 

## Task
    * [AURORA-814] - Migrate client off of deprecated SessionKey APIs
    * [AURORA-785] - Remove client-side update code
    * [AURORA-850] - Ability to tag project documentation as they appear on website
    * [AURORA-726] - Table of contents anchors do not work in docs
    * [AURORA-95] - Executor should auto-roll stderr/stdout files
    * [AURORA-1253] - Warn when JobUpdateSettings.maxWaitToInstanceRunningMs is set
    * [AURORA-1553] - Deprecate and remove ServerInfo.thriftAPIVersion
    * [AURORA-1252] - Deprecate UpdateConfig restart_threshold setting
    * [AURORA-1557] - Document mesos.hostname in Thermos reference
    * [AURORA-1547] - TaskReconciler should set TaskStatus.slave_id field
    * [AURORA-687] - Aurora should set FrameworkInfo.principal
    * [AURORA-1554] - Update pants to 0.0.63
    * [AURORA-1527] - 0.11.0 backwards incompatible changes
    * [AURORA-879] - Improve ordering of elements in "job status" output
    * [AURORA-1410] - Publish RPM and deb for 0.9.0
    * [AURORA-1543] - Upgrade to Mesos 0.24
    * [AURORA-1526] - 0.11.0 deprecations


Aurora 0.10.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-1476] - TaskConfig dedupe routine does not handle null fields properly
    * [AURORA-1479] - Observer chroot browser guesses content-encoding and content-type of files
    * [AURORA-1406] - End-to-end test stalls at SSH prompt
    * [AURORA-1282] - twitter.common.stats.Stats warns about exported metric names
    * [AURORA-1533] - Transient connection errors can leave client in irrecoverable state
    * [AURORA-1459] - DelayExecutor is flaky within scheduling loop
    * [AURORA-1435] - Scheduling loop terminates on the first mismatch
    * [AURORA-1489] - README.md does not include instructions on filing bugs
    * [AURORA-1529] - Wrong command to `Build a client executable`
    * [AURORA-1407] - IllegalArgumentException in end-to-end tests
    * [AURORA-1510] - ConcurrentModificationException in PreemptorService
    * [AURORA-1511] - PreemptorService failure does not trigger shutdown
    * [AURORA-1445] - In-progress instances on Update page continue to pulse after update is aborted
    * [AURORA-1494] - Scheduler fails to start due to thrift/SQL schema data type mismatch
    * [AURORA-1186] - Remove exclusion block from shiro dependency
    * [AURORA-1431] - Slave reservation is too restrictive
    * [AURORA-1342] - shiro.ini with blank users section fails to parse.
    * [AURORA-1484] - Document Changing Scheduler Quorum Size
    * [AURORA-1043] - /logconfig does not work when the scheduler is behind SSL
    * [AURORA-1345] - Update status page for large jobs is killed by Chrome
    * [AURORA-1537] - post_drain_script called for hosts that fail to drain within timeout
    * [AURORA-1395] - RescheduleCalculator precondition fails when using DbTaskStore
    * [AURORA-1409] - End-to-end tests fail with 401 unuthorized
    * [AURORA-1403] - Aurora UI cannot find task
    * [AURORA-1524] - register_auth_module still checks for callability

## Epic
    * [AURORA-1367] - 0.10.0 deprecations
    * [AURORA-1251] - 0.10.0 backwards incompatible changes
    * [AURORA-1501] - Add a job update diff RPC 
    * [AURORA-1457] - Consider removing quota enforcement for dedicated jobs

## Story
    * [AURORA-1485] - TaskConfig default container value breaks client library generation for GO
    * [AURORA-1364] - Improve client error messages for Kerberos errors
    * [AURORA-1317] - Allow an external log rotation process to truncate stdout and stderr
    * [AURORA-1213] - IP clearance and import of twitter commons java code
    * [AURORA-1429] - Upgrade Mesos to 0.23
    * [AURORA-1338] - Remove ChainedPathDetector from thermos
    * [AURORA-851] - Create nightly builds
    * [AURORA-1430] - Set up vagrant environment for sudo-less docker commands
    * [AURORA-1241] - Wrong label on table heading for in progress updates
    * [AURORA-1474] - Improve discoverability of dashboard link on the Job page
    * [AURORA-1261] - Expose slave host information using the variable {{mesos.hostname}}
    * [AURORA-696] - No way to link directly to Completed Tasks
    * [AURORA-1496] - Re-enable Scheduler Health Endpoint
    * [AURORA-783] - Remove redundant page header text
    * [AURORA-829] - Reference documentation should be self-contained
    * [AURORA-351] - Consider using Apache Shiro for scheduler Authentication and Authorization
    * [AURORA-586] - Upgrade scheduler to guava 18
    * [AURORA-1193] - Improve UI task status reporting experience
    * [AURORA-1405] - Client cluster configuration should specify the correct port to access multiple zookeeper hosts
    * [AURORA-647] - Don't store serialized thrift objects in the database

## Task
    * [AURORA-1503] - Determine how best to keep up with Mesos releases
    * [AURORA-1437] - Implement TierManager to translate tiers to task traits
    * [AURORA-1491] - Make "aurora task" commands support optional ssh options
    * [AURORA-1490] - Update website to point towards new mailing lists
    * [AURORA-1461] - Update RPCs and client/UI to properly identify non-dedicated consumption
    * [AURORA-1464] - Add e2e integration tests for revocable tasks
    * [AURORA-1414] - Schema changes to support revocable jobs
    * [AURORA-1462] - Update quota documentation
    * [AURORA-1516] - Add update sequence into "aurora job diff" command
    * [AURORA-1473] - Add build properties into scheduler /var endpoint
    * [AURORA-1460] - Remove quota enforcement for dedicated jobs
    * [AURORA-1441] - Document oversubscription in Aurora
    * [AURORA-1536] - Add test coverage to python/src/apache/*
    * [AURORA-1502] - Create a design summary for the jobConfigDiff RPC
    * [AURORA-97] - Provide a web UI page to show history for a specific job instance
    * [AURORA-1331] - It should be possible to link to an instance from the update page
    * [AURORA-1442] - Move Twitter Commons into org.apache.aurora namespace and add headers
    * [AURORA-1419] - FrameworkInfo support for REVOCABLE_RESOURCES capability
    * [AURORA-1427] - Move build-support/packaging to aurora-packaging repo
    * [AURORA-1415] - De-generalize resource handling in Scheduler
    * [AURORA-1515] - Implement getJobUpdateDiff API without TaskConfig diff support
    * [AURORA-1439] - Modify resource counters to support revocable slot counters
    * [AURORA-1531] - upgrade psutil to 3.2.2 from 2.1.3
    * [AURORA-1416] - Centralize offer/task matching implementation in TaskAssigner
    * [AURORA-1482] - Publish 0.9.0 debs to bintray
    * [AURORA-904] - 0.8.0 Release Candidate
    * [AURORA-1418] - Ignore revocable resources in preemptor
    * [AURORA-1499] - Upgrade Pants to version 0.0.57


Aurora 0.9.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-1401] - DB deadlock caused stuck job update
    * [AURORA-1325] - `src/test/python/apache/aurora/api_util.py` is not apart of any pants targets
    * [AURORA-1315] - UpdateStoreBenchmarks broken
    * [AURORA-1400] - Debian packages cannot be used with oracle-java8
    * [AURORA-1361] - Explicit reconciliation must use SLAVE_ASSIGNED_STATES
    * [AURORA-1391] - RPMS for Centos 7 have hard dependency for daemonize package
    * [AURORA-1296] - INSTANCES_SPEC_ARGUMENT client option does not validate instance range
    * [AURORA-1339] - TaskReconciler does not block implicit reconciliation
    * [AURORA-1356] - Thermos observer fails to start
    * [AURORA-1378] - False positive in test_kerberos_end_to_end.sh
    * [AURORA-1386] - Transaction isolation on DB stores is too strict
    * [AURORA-1316] - Consolidate last_modified in client update output
    * [AURORA-1399] - update start --wait should exit non-zero when the update was non-successful
    * [AURORA-1382] - Repo URL is incorrect on website
    * [AURORA-1392] - DbCronJobStore does not go through TaskConfig de-dupe code, breaking uniqueness assumptions elsewhere
    * [AURORA-698] - aurora executor _shutdown deadline calls should be daemonized
    * [AURORA-1353] - MesosPathDetector double-counts checkpoint roots
    * [AURORA-1332] - Updater does not skip already updated instances with /INSTANCES option.
    * [AURORA-1390] - Primary key violation when modifying cron jobs with DbCronJobStore
    * [AURORA-1307] - API hooks no longer supported for certain client commands
    * [AURORA-1379] - Referential integrity violation when replaying storage
    * [AURORA-1322] - DB task store is enabled by default when staging a recovery
    * [AURORA-1363] - Please delete old releases from mirroring system
    * [AURORA-1074] - Remove the "enable_legacy_constraints" flag.
    * [AURORA-1383] - Unique constraint on task_config_metadata.key should be removed

## Epic
    * [AURORA-334] - Replace in-memory storage with H2
    * [AURORA-715] - Retire GC Executor
    * [AURORA-1079] - 0.9.0 deprecations

## Story
    * [AURORA-274] - Use JDK8 features in scheduler development
    * [AURORA-1298] - Make DbTaskStore suitable for use in production
    * [AURORA-1369] - Scheduler warns about unoptimized Operation SAVE_JOB_INSTANCE_UPDATE_EVENT
    * [AURORA-1350] - Non-prod SLA stats
    * [AURORA-570] - LeaderRedirectFilter should be applied to admin endpoints that depend on storage
    * [AURORA-1397] - Python style checker should only report errors
    * [AURORA-1352] - Audit log doesn't capture Shiro subject principal
    * [AURORA-1096] - Scheduler updater should limit the number of job/instance events
    * [AURORA-1375] - When setting quota, the scheduler should prevent setting below current usage

## Task
    * [AURORA-951] - Debian packaging for Aurora
    * [AURORA-1351] - Make observer POLLING_INTERVAL configurable
    * [AURORA-415] - H2-backed implementation of JobStore
    * [AURORA-1344] - Create Aurora oversubscription design summary
    * [AURORA-1333] - Remove GC executor code
    * [AURORA-1327] - MesosSchedulerImpl should check if reason is present when posting status updates
    * [AURORA-316] - in health_check_config allow override for uri and expected_response 
    * [AURORA-1368] - shutdown_endpoint fields should be in the aurora schema
    * [AURORA-1371] - Add exact times to events in update UI
    * [AURORA-1228] - Use explicit status update acknowledgements to improve driver throughput.
    * [AURORA-1116] - RPM packaging for Aurora
    * [AURORA-1287] - Scheduler in-memory DB needs a direct console access
    * [AURORA-1346] - Upgrade requests-kerberos to 0.7.0
    * [AURORA-1337] - aurora executor should write checkpoints into sandbox
    * [AURORA-1318] - Benchmark snapshot restore
    * [AURORA-1239] - Add a way to watch a scheduler-driven update until it's complete
    * [AURORA-556] - H2-backed implementation of TaskStore
    * [AURORA-1277] - Create a design document for Health Checks for Updates
    * [AURORA-1311] - Upgrade to latest h2 version
    * [AURORA-1341] - Use TaskStatus reason field to populate the memory limit exceeded field in UserTaskLauncher
    * [AURORA-1334] - Remove GCExecutorLauncher code
    * [AURORA-1267] - Investigate upgrading pants to 0.0.32+
    * [AURORA-1139] - Remove backwards compatibility shims from JobUpdateKey introduction
    * [AURORA-1047] - Implement state reconciliation within the scheduler


Aurora 0.8.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-1106] - Release candidate script does not generate correct branch link
    * [AURORA-1201] - auth_module is not installed in child injector
    * [AURORA-1297] - link to apache git repo on the download page outdated
    * [AURORA-1155] - GC executor broken / Insufficient automated testing
    * [AURORA-1266] - Backwards incompatibility - executor does not ignore unknown (new) fields in task definition
    * [AURORA-842] - LeaderRedirectTest#testLeader fails in local builds
    * [AURORA-330] - aurora update should fail gracefully if job is not a service
    * [AURORA-1134] - Quota checks are inaccurate for cron schedule updates
    * [AURORA-1133] - Thermos Observer does not export stats via /vars
    * [AURORA-1094] - aurora cron start --open-browser fails with stacktrace
    * [AURORA-1263] - Fetching update details for a large job update takes seconds in the UI
    * [AURORA-1153] - Preemptor frequently reloads loop-invariant host attributes
    * [AURORA-1285] - Scheduler updater does not resume updates waiting for a pulse after restart
    * [AURORA-958] - Scheduler does not retry transitions for all transient states
    * [AURORA-1174] - make-python-sdists failing on master
    * [AURORA-1008] - Pystachio section variables don't seem to work as described in the documentation
    * [AURORA-1248] - Client retries 4xx errors
    * [AURORA-1173] - JobUpdateController.systemResume() is not called on scheduler startup anymore
    * [AURORA-1138] - aurorabuild.sh should exit on error in any command
    * [AURORA-1137] - Publish centos mesos.native eggs for 0.20.1
    * [AURORA-1060] - Branch coverage check is flaky
    * [AURORA-1023] - Releasing the update lock trips off scheduler updater
    * [AURORA-1217] - Gradle run broken
    * [AURORA-1301] - Tests inheriting from AuroraClientCommandTest always pass
    * [AURORA-926] - Scheduler crashes due to JVM running out of memory on start
    * [AURORA-1020] - The --rollback-on-failure option is meaningless for "aurora job restart"
    * [AURORA-1115] - Observer is no longer finding task sandboxes
    * [AURORA-1165] - aurora update status subcommand shows invalid date values
    * [AURORA-1256] - git repository references throughout aurora.apache.org are wrong
    * [AURORA-916] - test_inotify_diskcollector is flaky
    * [AURORA-1166] - aurora update status subcommand does not filter by update status
    * [AURORA-1255] - Download links on aurora.apache.org point to old location
    * [AURORA-917] - "aurora job create" gives misleading error when used to create a cron job
    * [AURORA-1113] - Invalid create commands in the tutorial
    * [AURORA-1176] - CommandLine uses print() directly instead of doing so through context
    * [AURORA-991] - Documented steps for replicated log don't work for multi-master
    * [AURORA-1053] - StorageBackupImpl doesn't use streaming
    * [AURORA-1135] - "download" link broken in logs stdout/stderr page
    * [AURORA-1191] - end-to-end tests no longer rebuilds components
    * [AURORA-1108] - The scheduler synchronously writes a backup while writing a snapshot to the replicated log
    * [AURORA-1124] - Aurora beta-update status command is broken
    * [AURORA-823] - thermos pex GLIBC error when using py27/glibc 2.12/rhel6.4
    * [AURORA-1309] - Build can fail if repo directory absolute path is too long

## Epic
    * [AURORA-690] - Add support for external update coordination
    * [AURORA-999] - Various scheduler performance improvements
    * [AURORA-905] - 0.8.0 deprecations
    * [AURORA-1034] - Graduate Apache Aurora from Incubator

## Story
    * [AURORA-1099] - 0.7.0 missing license headers
    * [AURORA-1187] - Create JobKey-scoped Permissions and apply to AuroraSchedulerManager
    * [AURORA-1302] - Allow rc script to set an explicit version
    * [AURORA-689] - Start vetting Mesos 0.21.0
    * [AURORA-911] - Scheduling vetos are only displayed for the first task in a TaskGroup
    * [AURORA-1093] - Scheduler updates should be uniquely identified by jobKey + updateId
    * [AURORA-909] - Differentiate between dynamic and static vetoes
    * [AURORA-857] - aurora cron schedule should ouput url
    * [AURORA-974] - upgrade pants invocations once pants 0.0.25 is released
    * [AURORA-1206] - Make update status command more versatile
    * [AURORA-1236] - git repo on aurora.apache.org references old incubator repo which is 404
    * [AURORA-434] - document steps to recover replica db from backup
    * [AURORA-796] - Configurable Health-Endpoint
    * [AURORA-524] - Preemptor should export more detailed statistics
    * [AURORA-184] - Implicit scheduling constraints should be removed
    * [AURORA-1001] - Support Mesos TASK_ERROR state
    * [AURORA-1104] - Upgrade to pants 0.0.28
    * [AURORA-1231] - Blocked updates missing from cluster-wide in progress view
    * [AURORA-1025] - Update gc executor to read checkpoint stream from sandbox
    * [AURORA-1024] - Implement API for dual reading Thermos checkpoints
    * [AURORA-1028] - Export TASK_LOST source stats from Scheduler
    * [AURORA-1027] - Update thermos cli to read checkpoint stream from sandbox
    * [AURORA-1026] - Update observer to read checkpoint stream from sandbox
    * [AURORA-1210] - Aurora Graduation checklist
    * [AURORA-1299] - UpdateConfigError results in stack trace
    * [AURORA-472] - V2 end-to-end tests stall for 5 seconds due to "large change"
    * [AURORA-716] - Reconsider default for -require_slave_checkpoint
    * [AURORA-1148] - Display All Scheduling Veto Reasons for PENDING tasks
    * [AURORA-1291] - Replace enable_api_security arg with a value for http_authentication_mechanism
    * [AURORA-1290] - Allow specifying a shorthand for "well-known" Module FQCNs
    * [AURORA-1275] - Don't delay kill sequence when HTTP teardown signal could not be dispatched
    * [AURORA-1189] - Add a warning in the scheduler when the JVM version is < 1.8
    * [AURORA-1190] - Add a deprecation warning when the client-side updater is used
    * [AURORA-979] - Update to virtualenv 12.0
    * [AURORA-913] - Replace MaintenanceMode field with HostAttributes in HostOffer
    * [AURORA-1204] - Update upstart configurations when syncing sources
    * [AURORA-1306] - Upgrade to gradle 2.4
    * [AURORA-1305] - MemTaskStore: items are not removed from secondary index
    * [AURORA-358] - Allow executor command-line flags to be specified on the scheduler command-line
    * [AURORA-1308] - 0.8.0 changelog contains wontfix and duplicate ticket references
    * [AURORA-1310] - Remove blanket 'Error executing command: ' prefix from client output

## Sub-task
    * [AURORA-471] - Measure performance of the getTasks API call
    * [AURORA-1313] - Fix broken style test cases causing PEP302

## Task
    * [AURORA-811] - Add ShiroAopModule, shiro AOP @RequiresPermissions annotations
    * [AURORA-809] - Use Apache Shiro for HTTP authentication
    * [AURORA-1268] - Executor is not backwards compatible with regards to schema additions
    * [AURORA-892] - Improve specs for command line option mocks in Python tests
    * [AURORA-1156] - Preemptor perf improvements
    * [AURORA-1055] - Remove LiveClusterState
    * [AURORA-549] - Export a stat to track status update handling delay
    * [AURORA-1088] - Expose blockIfNoPulseAfterMs setting in updateSettings.html
    * [AURORA-896] - Remove client stack trace redirection
    * [AURORA-1128] - Pin python protobuf dependency to 2.6.1
    * [AURORA-1129] - Upgrade myBatis version to latest
    * [AURORA-1077] - Allow message to be stored with update write events
    * [AURORA-1062] - apache.aurora.executor.common.HealthChecker should export stats
    * [AURORA-195] - remove legacy remnants of "aurora" executor
    * [AURORA-532] - Publish twitter.common.python 0.5.7 and publish external docs
    * [AURORA-1119] - Enable UPDATE_COORDINATOR role to access pauseJobUpdate RPC
    * [AURORA-1009] - Implement pulseJobUpdates RPC
    * [AURORA-1010] - Modify updater state machine to support heartbeat-driven pause/resume
    * [AURORA-1012] - Update documentation to explain the scheduler heartbeat mechanism
    * [AURORA-1097] - Scheduler updater should suppress instance events on resume
    * [AURORA-969] - Create scheduler performance benchmark framework
    * [AURORA-1240] - Ignore JobUpdateSettings.maxWaitToInstanceRunningMs in the scheduler
    * [AURORA-817] - Add documentation for HTTP basic and kerberos authentication
    * [AURORA-1168] - beta-update list should use a hierarchy for query specifications
    * [AURORA-1181] - optimize host_drain to speed up maintenance
    * [AURORA-973] - Add a document describing thrift deprecation procedure
    * [AURORA-975] - Remove populatedDEPRECATED from PopulateJobResult
    * [AURORA-1160] - Rename beta-update to update
    * [AURORA-1159] - NearestFix does not account for certain veto types
    * [AURORA-1158] - Consider finding preemption slots asynchronously 
    * [AURORA-1214] - Reevaluate "max_schedule_attempts_per_sec" with asynchronous preemptor
    * [AURORA-1071] - Modify UpdateConfig schema to support heartbeats
    * [AURORA-1037] - Community Vote for graduation readiness
    * [AURORA-1246] - Mesos warns about executor resources being to small
    * [AURORA-1170] - Add more logging in MaintenanceController
    * [AURORA-1120] - Add the ability to optionally create an unhooked version of the Aurora client api
    * [AURORA-1219] - Improve preemptor efficiency
    * [AURORA-1080] - Upgrade mesos dependency to 0.21.1
    * [AURORA-1029] - Remove client YAML support (drop pyaml dependency)
    * [AURORA-1081] - Upgrade to latest checkstyle version
    * [AURORA-1276] - Upgrade to mesos 0.22
    * [AURORA-1040] - Submit Resolution to Board
    * [AURORA-825] - Cron tasks don't check quota when launched
    * [AURORA-723] - Create design document for security code refactor
    * [AURORA-812] - Wire in SPNEGO HTTP module
    * [AURORA-813] - Add ability to configure client to use Kerberos
    * [AURORA-810] - Add an end-to-end test case for http basic auth
    * [AURORA-808] - Refactor the scheduler to allow authenticated subject-per-request
    * [AURORA-1090] - Optimize or remove shard uniqueness check from StorageBackfill
    * [AURORA-885] - Improve lock held message in client output
    * [AURORA-324] - Migrate from Twitter ShutdownRegistry to Guava ServiceManager
    * [AURORA-1157] - Add end-to-end test coverage for async updates
    * [AURORA-1283] - Implement a benchmark for status update processing throughput.
    * [AURORA-1259] - Add metrics for scheduler update states
    * [AURORA-378] - Add config grouping visualisation to job page


Aurora 0.7.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-952] - method interceptor is fatefully intercepting finalize() with null pointer
    * [AURORA-1050] - test_end_to_end.sh is failing on master
    * [AURORA-798] - investigate flaky test: LockManagerImplTest/testNoDeadlock
    * [AURORA-83] - Killing a job attempts to transition non-active tasks
    * [AURORA-1019] - /utilization has a 404 on bootstrap resource
    * [AURORA-1002] - Thermos executor does not enforce disk quota.
    * [AURORA-946] - The replaceCronTemplate RPC does not check quota
    * [AURORA-988] - aurora client apache.aurora.client.api.ThriftInternalError error due to unexpected kwarg user_agent
    * [AURORA-996] - Aurora client batch job kill does not filter active tasks
    * [AURORA-990] - aurora job inspect --raw fails with a stack trace
    * [AURORA-989] - aurora client v2 dont have "version" command
    * [AURORA-966] - task_schedule_attempt_locked stats are not exported
    * [AURORA-965] - Aurora client prints ambiguous trailing error message
    * [AURORA-980] - rack limit of 1 is meaningless for single-instance job
    * [AURORA-949] - TRequestsTransport does not raise an exception on 5xx or 4xx responses
    * [AURORA-976] - The scheduleCronJob RPC allows duplicate job key creation
    * [AURORA-939] - Executor crashes when it receives an invalid task config
    * [AURORA-938] - TestVersionCommand::test_version_with_new_pants fails under py.test
    * [AURORA-921] - Fail fast for cron jobs in "aurora beta-update start"
    * [AURORA-1018] - Review bot is headed to infinity and beyond
    * [AURORA-997] - ReviewBot is a filthy liar
    * [AURORA-923] - Run verb does not return an exit code.
    * [AURORA-986] - RequestLoggerTest failed for Locale.FRANCE
    * [AURORA-1016] - NullPointerException in PreemptorImpl
    * [AURORA-937] - Response.serverInfo is not always populated
    * [AURORA-956] - The Scheduler can allocate Mesos Tasks with 0 Disk.
    * [AURORA-936] - Aurora admin query command is broken
    * [AURORA-992] - /apiclient/ endpoint shows documentation for thermos API
    * [AURORA-1076] - Docker patch created incompatible ExeuctorInfo changes for GC executor
    * [AURORA-1045] - Scheduler should avoid performing authentication while holding the write lock
    * [AURORA-1067] - Thermos executor test hangs
    * [AURORA-968] - Client logs duplicate error messages

## Epic
    * [AURORA-423] - 0.7.0 deprecations
    * [AURORA-633] - Support running Docker containers
    * [AURORA-710] - make aurora v2 client the default client

## Story
    * [AURORA-933] - python missing license headers
    * [AURORA-994] - Simplify client help output
    * [AURORA-930] - GC performance issues with snapshot deduplication on large clusters
    * [AURORA-998] - aurora client apache.aurora.client.api.ThriftInternalError error due to dup kwarg
    * [AURORA-121] - Make the preemptor more efficient
    * [AURORA-776] - Update documentation and scripts to use v2 client.
    * [AURORA-775] - Remove v1 client build
    * [AURORA-617] - Switch pants 3rdparty to use python_requirements
    * [AURORA-782] - Remove command bridging from client
    * [AURORA-934] - client should set User-Agent

## Task
    * [AURORA-424] - Empty string cronSchedule should not be accepted by scheduler
    * [AURORA-919] - Aurora client should provide a --verbose flag and silence DEBUG level log output by default
    * [AURORA-941] - Enforce gradle version in build.gradle
    * [AURORA-929] - Remove ReadWriteLockManager
    * [AURORA-466] - Remove message string in Response struct
    * [AURORA-691] - Remove populated field in PopulateJobResult struct
    * [AURORA-928] - Executor overhead cannot be dropped to zero
    * [AURORA-914] - Instrument task scheduling pipeline
    * [AURORA-943] - Improve messaging in admin host_drain command
    * [AURORA-832] - Remove SANDBOX_DELETED state
    * [AURORA-947] - Use thrift's built-in doc generator
    * [AURORA-766] - Client should show information for update details when starting an update.
    * [AURORA-924] - Improve cron error messages
    * [AURORA-891] - Drop argparse dependency
    * [AURORA-925] - refactor build.gradle to extract thrift compilation as a separate task class
    * [AURORA-1021] - Increase MIN_THERMOS_RESOURCES to prevent thermos OOMs.
    * [AURORA-961] - Set default --batch-size in client v2 to 1
    * [AURORA-469] - quota check failures should specify how much under quota you are
    * [AURORA-967] - Explore adding a PMD rule for validating @Timed attribute placement
    * [AURORA-962] - Allow specifying the hostname the scheduler is running on
    * [AURORA-935] - Improve logging in MaintenanceController
    * [AURORA-970] - Include aurora version (from .auroraversion) in the client help output
    * [AURORA-454] - Remove cron functionality in createJob/killTasks
    * [AURORA-1013] - Modify thrift schema to support configuring heartbeat updates.
    * [AURORA-143] - Remove the getVersion RPC
    * [AURORA-467] - Remove version field in Response struct
    * [AURORA-982] - Use documentation template when rendering docs on Aurora website
    * [AURORA-1072] - Update NOTICE to include year 2015


Aurora 0.6.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-145] - Test dependencies leak into distribution
    * [AURORA-788] - GC executor doesn't need to exit after period of inactivity
    * [AURORA-807] - GC executor doesn't ignore launchTasks when it's shutting down
    * [AURORA-607] - release script is broken
    * [AURORA-877] - Build fails if thrift cannot be downloaded
    * [AURORA-673] - aurora job restart should not require job config
    * [AURORA-672] - aurora job output format is broken around metadata
    * [AURORA-694] - When MemStorage is layered over DbStorage, SQL is not transactioned
    * [AURORA-498] - test_end_to_end.sh uses stale aurora client
    * [AURORA-504] - there should be a section to describe how to clone git repo in howtocontribute page
    * [AURORA-748] - Help command is broken
    * [AURORA-702] - Possible deadlock in killTasks
    * [AURORA-394] - Add license headers to non-vendored html and css templates
    * [AURORA-405] - Remove go links from config.py
    * [AURORA-495] - UI should always show a pending reason
    * [AURORA-901] - Client updater errors are not reported in v1
    * [AURORA-899] - Job keys are not backfilled for JobConfigurations
    * [AURORA-822] - Coverage metrics seem occasionally flaky
    * [AURORA-757] - Rename async "update" noun to "beta-update" to avoid collision with client command
    * [AURORA-628] - roles not displayed in ui
    * [AURORA-846] - document /etc/aurora/clusters.json
    * [AURORA-625] - 'aurora version' is broken
    * [AURORA-706] - Client "task ssh" command fails badly when job not found
    * [AURORA-658] - unable to run scheduler without mesos infrastructure for development
    * [AURORA-804] - Fix deprecation message for "aurora task ssh"
    * [AURORA-801] - deadlock in scheduler startup
    * [AURORA-837] - validateSessionKeyForTasks can pass empty set of roles to checkAuthenticated
    * [AURORA-770] - V2 client logs HTTP connections to info
    * [AURORA-756] - startUpdate fails with "Instance count must be positive."
    * [AURORA-863] - provision-dev-cluster.sh refers to mesos egg instead of mesos.native
    * [AURORA-676] - Fix aurora run in end to end tests
    * [AURORA-697] - GZip compression regression in scheduler
    * [AURORA-824] - scheduleCronJob does not check quota or task limits
    * [AURORA-571] - Admin maintenance fails SLA check when no prod tasks on host
    * [AURORA-561] - Impossible to copy task status events from UI
    * [AURORA-729] - Immutable wrapper objects are not always immutable
    * [AURORA-566] - The descheduleCronJob RPC does not validate SessionKey
    * [AURORA-632] - distZip includes a META-INF/about.txt
    * [AURORA-873] - Task events on job page use a different display format for timestamps
    * [AURORA-577] - observer's favicon is 146 kB
    * [AURORA-667] - aurora ConcurrentModificationException if specific job is PENDING/THROTTLED
    * [AURORA-683] - vagrant up fails due to missing box ubuntu/trusty64
    * [AURORA-644] - slave url in /slaves endpoint should use thermos port
    * [AURORA-650] - Error in cancel_update
    * [AURORA-897] - aurora scheduler unable to restore from snapshot
    * [AURORA-622] - Build failed due to pex package rename
    * [AURORA-768] - QuotaManager does not properly filter out tasks from job updates
    * [AURORA-802] - Quota is not checked correctly in startJobUpdate
    * [AURORA-900] - TransientError response message is not processed correctly
    * [AURORA-659] - Clientv2 command doesn't work correctly with bind parameters
    * [AURORA-887] - "aurora job create --open-browser" fails with error.
    * [AURORA-670] - Client command_runner logging does not work
    * [AURORA-844] - fix TOC formatting in configuration-tutorial.md
    * [AURORA-623] - test_end_to_end.sh hangs on aurora run
    * [AURORA-640] - aurora create fail due to lock held by different job
    * [AURORA-550] - Python code coverage fails with new pants
    * [AURORA-786] - Client does not log Response.messageDEPRECATED errors
    * [AURORA-609] - Admin host maintenance command does not block on post drain script
    * [AURORA-682] - Test Break- status checker name property
    * [AURORA-836] - test_integration_success in test_thermos_task_runner is flaky
    * [AURORA-684] - Test src.test.python.apache.aurora.client.cli.job is failing
    * [AURORA-458] - Web interface has become slow, especially the job page
    * [AURORA-14] - CI is broken due to lack of binary egg on Jenkins slaves
    * [AURORA-605] - Tests fail on duplicate table in H2
    * [AURORA-513] - Errors during thrift RPC calls cause ugly stack dumps
    * [AURORA-779] - v2 client has worse error message than v1
    * [AURORA-648] - Vagrant provisioner fails to download mesos egg and deb
    * [AURORA-753] - aurora cron show aborts early
    * [AURORA-187] - scheduler failover should never abort an update
    * [AURORA-641] - NULL not allowed for column "SLAVE_ID"
    * [AURORA-669] - Thermos runner collect_updates() gets stuck in a while loop when timeout is 0
    * [AURORA-730] - Performance regression in fetching HostAttributes while scheduling
    * [AURORA-666] - Aurora job status --write-json does not convert status values
    * [AURORA-597] - Error in deschedule call
    * [AURORA-728] - Executor does not handle announcer errors properly
    * [AURORA-792] - Aurora job update does not use job_spec when calculating large update warning
    * [AURORA-722] - snapshot performance issues
    * [AURORA-920] - Deadlock during scheduler startup
    * [AURORA-793] - Client prints redundant messages
    * [AURORA-6] - Accessing url property of ZookeeperSchedulerClient fails if proxy_url is not set and client is not connected
    * [AURORA-831] - cron deschedule help includes ambiguous options
    * [AURORA-884] - Coverage report analysis may be flaky due to use of Stats
    * [AURORA-889] - aurora2 beta-update list is broken
    * [AURORA-912] - Scheduler cannot read PruneJobUpdateHistory log operations
    * [AURORA-784] - Client reports "update has started" for no-op update

## Epic
    * [AURORA-16] - Refactor Aurora UI
    * [AURORA-610] - Job update orchestration in the scheduler
    * [AURORA-147] - Initial Apache Incubator release

## Story
    * [AURORA-736] - Update committer docs with steps for adding a gpg key
    * [AURORA-600] - RC2 License and NOTICE updates
    * [AURORA-231] - Upgrade gradle license plugin to v9 which contains reduced debug output
    * [AURORA-703] - Document dedicated roles
    * [AURORA-114] - Globs for Aurora job keys
    * [AURORA-764] - Stop sending deleted task events, ignore incoming deleted task events.
    * [AURORA-840] - Add an FAQ for cluster operators
    * [AURORA-839] - Add documentation describing the scheduler's storage system
    * [AURORA-755] - Issue with partial deploys in the update instance summary
    * [AURORA-795] - Implement a way to temporarily disable health check for a running instance
    * [AURORA-131] - Deprecate v1 client
    * [AURORA-718] - JobUpdateConfiguration should reflect work required for a job update
    * [AURORA-828] - Documentation could make a better job at selling aurora
    * [AURORA-621] - Implement instance update logic
    * [AURORA-741] - DbJobUpdateStore can't fetch updates that have no initial state
    * [AURORA-634] - Add a monitoring guide
    * [AURORA-745] - Show in-flight and recently completed updates in scheduler UI
    * [AURORA-579] - Upgrading Mesos version from 0.18.0 to 0.19.0
    * [AURORA-769] - No-op job update fails with "Missing both initial and desired states. At least one is required."
    * [AURORA-473] - V2 client lacks informative output when updating
    * [AURORA-227] - Aurora build should check for the Python version
    * [AURORA-422] - clientv2 splash page is >250 lines
    * [AURORA-674] - Increment Aurora to depend upon mesos 0.20.0
    * [AURORA-642] - aurora job inspect calls print_out() incorrectly
    * [AURORA-587] - Add discovery manager implementation
    * [AURORA-688] - sudo should not be required when running build commands w/ vagrant.
    * [AURORA-875] - Update Aurora to depend on mesos 0.20.1
    * [AURORA-717] - Store new task configuration in JobUpdateConfiguration as InstanceTaskConfig
    * [AURORA-781] - Fix bind parameter processing in client
    * [AURORA-585] - aurora/thermos test failure on py26 due to pex
    * [AURORA-848] - Handle resourceOffers callback asynchronously
    * [AURORA-695] - Upgrade aurora pants to 0.0.23
    * [AURORA-340] - Remove IsolatedSchedulerModule and surrounding code
    * [AURORA-733] - MedianAlgorithm results should be windowed in time
    * [AURORA-686] - Job updates may fail due to exceeding role quota
    * [AURORA-841] - LeaderRedirectFilter using rewritten URI path as redirect target
    * [AURORA-369] - Create a REST-like interface to aurora
    * [AURORA-606] - Remove dependency on twitter HttpModule
    * [AURORA-771] - 'see log for details' in client output is confusing
    * [AURORA-743] - Figure out retention policy for scheduler job update data
    * [AURORA-456] - "aurora version" command raises KeyError: 'sha'
    * [AURORA-854] - v2 help for cron shows that deschedule takes a --bind-var option but deschedule does not accept a config file
    * [AURORA-867] - python build broken on OS X 10.10
    * [AURORA-910] - Scheduler should retry Driver.killTask
    * [AURORA-72] - Improve root README.md
    * [AURORA-827] - Client error logdir path not set correctly

## Sub-task
    * [AURORA-551] - Use getTasksWithoutConfig and getConfigSummary in UI

## Task
    * [AURORA-87] - Display job diff in the scheduler when an update is in progress
    * [AURORA-612] - Implement the storage primitives to persist update history
    * [AURORA-382] - Organize tasks by tabs on job page
    * [AURORA-878] - Cache Host Attributes along Offer
    * [AURORA-626] - Add wait_for_batch_completion option into parallel updater
    * [AURORA-363] - the new pants selects 2.6.x by default if it's available
    * [AURORA-883] - Create a utility that provides early CI feedback on code reviews
    * [AURORA-230] - Fail out if aurora create gets a --shards argument
    * [AURORA-615] - Update aurora client to use job update RPCs
    * [AURORA-819] - Investigate JaCoCo plugin failure in Jenkins Build 633
    * [AURORA-408] - Update client "job" commands to remove cron-related behavior.
    * [AURORA-412] - Upgrade psutil once post-2.1.1 release is cut
    * [AURORA-820] - Admin host_drain should throttle status waiting calls
    * [AURORA-611] - Define scheduler API methods to create and manage job updates
    * [AURORA-803] - Return valid JSON structure as "job status" result with "--write-json"
    * [AURORA-608] - GcExecutorLauncher should throttle initial activity spike
    * [AURORA-170] - expose process exit status via observer UI
    * [AURORA-763] - Document how to use the new asynchronous updater feature
    * [AURORA-868] - Decouple initial scheduling delay from first scheduling penalty
    * [AURORA-843] - Export metric tracking slaves with insufficient resources for gc_executors
    * [AURORA-747] - The rollbackOnFailure flag in JobUpdateSettings is not wired
    * [AURORA-613] - Implement job update logic
    * [AURORA-742] - Add client commands to query server-driven updates.
    * [AURORA-774] - Expose MTTA/R SLA metrics for non-prod jobs
    * [AURORA-94] - Refactor/remove SchedulerCore in favor of StateManager
    * [AURORA-737] - Improve clientv2 usage helplines.
    * [AURORA-714] - Remove 30sec wait from host_drain command
    * [AURORA-603] - Make clientv1 command hooks testable
    * [AURORA-700] - Scheduler UI should use asynchronous HTTP requests
    * [AURORA-614] - Include information about updates in the scheduler UI
    * [AURORA-142] - Remove getVersion API from client
    * [AURORA-440] - Document cron
    * [AURORA-679] - Upgrade jetty
    * [AURORA-627] - use latest psutil library for thermos in pants
    * [AURORA-419] - Add search to job page
    * [AURORA-176] - more gracefully handle cases where user does not exist on machine
    * [AURORA-311] - add support for Mesos masters running with --no-root_submissions
    * [AURORA-751] - Remove SANDBOX_DELETED task state
    * [AURORA-806] - Support per batch post_drain execution in admin host_drain command
    * [AURORA-436] - Make bootstrap grids consistent in Scheduler UI
    * [AURORA-732] - Disable server-driven job updates by default
    * [AURORA-581] - Add lightweight hooks for mutating clientv1 commands.
    * [AURORA-425] - Merge Active and completed tasks on job page into a single table
    * [AURORA-646] - Improve end-to-end test coverage for clientv2
    * [AURORA-833] - Extract complex gradle tasks from build.gradle
    * [AURORA-333] - finish all deprecations in schema/base.py
    * [AURORA-175] - thermos runner should discriminate failures using exit status
    * [AURORA-772] - Add username to the update events
    * [AURORA-61] - Figure out what to do with thermos README.md
    * [AURORA-544] - Add an option to allow users to specify log levels in client
    * [AURORA-874] - Make clientv2 job status include a header line for tasks like v1.
    * [AURORA-880] - Add some wiggle room when requiring min coverage be raised
    * [AURORA-651] - perform_maintenance_hosts should not temporarily remove machines
    * [AURORA-645] - Improve coverage of clientv2 commands
    * [AURORA-685] - Add task_%STATUS%_%JOB% stat
    * [AURORA-692] - aurora_admin should have a find_scheduler command
    * [AURORA-90] - Log all RPCs
    * [AURORA-678] - Serve static HTTP assets out of a classpath directory
    * [AURORA-744] - Scheduler updater should support wait_for_batch_completion flag
    * [AURORA-20] - Contribute a "Developing Aurora Client" section
    * [AURORA-545] - Add a flag to allow users to prevent blocking of unknown exceptions in client
    * [AURORA-649] - Implement scheduler API methods linking updater logic and storage
    * [AURORA-43] - Rename maintenance commands to have a consistent prefix
    * [AURORA-313] - Add variable min offer jitter time window so Aurora can decline offers faster
    * [AURORA-84] - Deprecate the Identity struct
    * [AURORA-830] - Make Executor Overhead Configurable
    * [AURORA-886] - aurora job create --wait-until should exit with error code if the job being waited on fails


Aurora 0.5.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-13] - howtocontribute page on aurora.i.a.o should reference docs/contributing.md
    * [AURORA-3] - Update code for ASF namespace and license headers
    * [AURORA-5] - devtools vm broken with provisioning error
    * [AURORA-12] - thermos.py trying to len() a generator
    * [AURORA-25] - Scheduler never announces leadership
    * [AURORA-27] - Scheduler will not react to unknown running tasks
    * [AURORA-26] - Fix TaskPath import in thermos binary
    * [AURORA-40] - aurora_admin scheduler_print_recovery_tasks is broken
    * [AURORA-196] - Unable to build aurora_client.pex on Ubuntu 12.04
    * [AURORA-136] - SchedulerLifecycle ACTIVE state is unused
    * [AURORA-135] - mem_storage_write_operation* stats overcount
    * [AURORA-134] - LogStorage store implementations internally invoke write
    * [AURORA-223] - Improve admin Host Maintenance module
    * [AURORA-221] - Enforce scheduler suicide on log write failure
    * [AURORA-190] - The new scheduler UI landing page does not define default column sorting
    * [AURORA-179] - Local scheduler run fails to register with mesos
    * [AURORA-162] - aurora client does not honor HealthCheckConfig when doing updates
    * [AURORA-151] - thermos_task_runner test is flaky
    * [AURORA-150] - Unsupported status: THROTTLED exception
    * [AURORA-194] - Preemptor should not consider THROTTLED tasks preemption candidates
    * [AURORA-204] - unavailable username causes hung executor
    * [AURORA-101] - aurora diff test is flaky
    * [AURORA-102] - Add failOnVersionConfict() to scheduler build
    * [AURORA-100] - Thrift connection appears to keep the scheduler from shutting down
    * [AURORA-88] - get_quota -h lists --cluster as deprecated
    * [AURORA-120] - Scheduler page title no longer includes cluster name
    * [AURORA-119] - Job counts are incorrect on new scheduler home page
    * [AURORA-59] - Scheduler reports task count stats before storage is fully recovered
    * [AURORA-57] - aurora should include a DISCLAIMER
    * [AURORA-55] - clientcommands.md cites incorrect clusters.json location
    * [AURORA-56] - executor logs way too much
    * [AURORA-51] - Scheduler stalls during startup if storage recovery fails
    * [AURORA-50] - Scheduler deadlock
    * [AURORA-46] - Populate tasks_lost_rack stats before serving
    * [AURORA-45] - Scheduler should wait for registered to be called before attempting to invoke driver
    * [AURORA-41] - test_status.py breaks build in commit a49d94c 'Fix bad merge commit'
    * [AURORA-60] - Commit e1aee67 re-creates src/main/python/twitter after namespace change occurring 
    * [AURORA-126] - IllegalArgumentException when preparing GC executor launch
    * [AURORA-123] - Building/provisioning vagrant VMs fails on OSX Mavericks.=
    * [AURORA-247] - Client restart fails with "Values instance has no attribute 'rollback_on_failure'"
    * [AURORA-249] - Optional is printed in scheduler thrift response message
    * [AURORA-244] - Fix zookeeper logs from being swallowed due to missing log4j.properties
    * [AURORA-229] - Apache Aurora logo is missing a trademark
    * [AURORA-237] - aurora client unit test failures
    * [AURORA-250] - Protobuf version conflict on recent mesos version update
    * [AURORA-213] - aurora_client.pex and aurora_admin.pex toss exception about unicode character in metadata
    * [AURORA-210] - Cron jobs with RUN_OVERLAP are not mapped on startup
    * [AURORA-259] - Authentication errors cause stack dump in client
    * [AURORA-264] - Scheduler should be resilient to duplicated attributes
    * [AURORA-265] - Missing tooltips for some task states in dictionary.js
    * [AURORA-271] - Task status is not reported correctly in the UI
    * [AURORA-267] - Task state tooltips clipped by row height
    * [AURORA-288] - aurora_admin is missing host maintenance commands
    * [AURORA-537] - SLA safe domain host-scoped falls back to cluster-wide when no tasks returned
    * [AURORA-529] - pants is broken
    * [AURORA-536] - new pants setup_py is broken
    * [AURORA-543] - thermos_observer build fail due to pants
    * [AURORA-573] - Scheduler fails RPCs with SQL exception
    * [AURORA-525] - Drop red from the configuration grouping visualisation
    * [AURORA-523] - Escape cmdline value in Observer UI
    * [AURORA-514] - Admin increase_quota is broken.
    * [AURORA-512] - Client quota_check.py does not handle non->prod and prod->non job transitions
    * [AURORA-494] - aurora_admin's perform_maintenance_hosts command doesn't fail on unknown hosts
    * [AURORA-488] - clientv2 help string contains extra newlines
    * [AURORA-485] - Broken SchedulerIT test
    * [AURORA-483] - Following tutorial results in LOST tasks
    * [AURORA-480] - End to end tests fail under vagrant due to apparent vagrant image errors
    * [AURORA-457] - Expose auroraUI as a global
    * [AURORA-455] - Config summary displays range incorrectly
    * [AURORA-503] - clientv2 DistributedCommandRunner is missing a symbol
    * [AURORA-502] - Aurora2 binary needs to reference admin commands
    * [AURORA-475] - Remove Copyright /d/d/d/d Apache Software Foundation from the source files license header
    * [AURORA-499] - Interrupted vagrant provisioning leaves multiple VMs running
    * [AURORA-497] - Client V2 does not suppress unhandled error stack trace
    * [AURORA-310] - Clientv2 bridge fails when command isn't specified
    * [AURORA-315] - E2E test is broken
    * [AURORA-453] - Regression: vagrant-based tests failing 
    * [AURORA-452] - End-to-end tests fail on release distributions
    * [AURORA-372] - Python tests fail with "Untranslateable" exception
    * [AURORA-402] - SANDBOX_DELETED message is not shown in the header.
    * [AURORA-401] - Client commands that take instances should provide a strict option.
    * [AURORA-399] - Restart command does not check for invalid parameters
    * [AURORA-400] - Restart generates incorrect error message when called with invalid instances
    * [AURORA-397] - Broken build due to incorrect target in test
    * [AURORA-375] - list missing shipits args do not match docs
    * [AURORA-374] - New UI does not show task message in a collapsed view
    * [AURORA-373] - New UI aggregates tasks from different roles
    * [AURORA-395] - Scheduler should not send SANDBOX_DELETED tasks to GC executor
    * [AURORA-393] - release candidate script doesn't need to create checksums for signature files
    * [AURORA-344] - Tutorial test does not work on linux
    * [AURORA-368] - newer pants/commons lib break aurora packaging
    * [AURORA-366] - ScheduledThreadPoolExecutor in AsyncModule does not log unhandled errors.
    * [AURORA-349] - e2e test broken on master
    * [AURORA-362] - Make client config plugins "before_dispatch" a no-op by default
    * [AURORA-359] - StateManager.deleteTasks() does not provide task instance
    * [AURORA-339] - Improve column layout of job page
    * [AURORA-338] - Incorrect job stats in getJobSummary API
    * [AURORA-365] - Exclude SANDBOX_DELETED from the AdjustRetainedTasks message
    * [AURORA-420] - scheduler crash due to corrupt replica data?
    * [AURORA-450] - Cron Summary table should appear underneath the Config Summary
    * [AURORA-447] - Cron changes broke python thrift test
    * [AURORA-442] - Admin SLA commands should be resilient to task queries producing no result
    * [AURORA-437] - aurora clientv2 help is malformed
    * [AURORA-416] - Scheduling rate limiter is not used
    * [AURORA-413] - aurora update fails if update results in a pending job
    * [AURORA-411] - On job page, 'Running duration' is always 'a few seconds'
    * [AURORA-410] - MetricCalculator thread should block until storage is ready
    * [AURORA-439] - stacktrace from 'aurora sla get-job-uptime -h'
    * [AURORA-478] - /cron endpoint is broken after quartz change
    * [AURORA-297] - javadoc generation broken
    * [AURORA-307] - aurora open command throws a stacktrace when called with no arguments
    * [AURORA-302] - TaskGroups may abandon tasks
    * [AURORA-301] - aurora_admin query is broken
    * [AURORA-295] - Admin sla_list_safe_domain does not filter hosts properly
    * [AURORA-563] - UI does not show config bar
    * [AURORA-560] - Scheduler may hang while tearing down due to Quartz thread
    * [AURORA-355] - Website docs are outdated
    * [AURORA-564] - killTasks will not kill cron jobs that do not currently have active tasks
    * [AURORA-583] - test failures due to apparent pants issue
    * [AURORA-582] - Slave attributes cached incorrectly by scheduler
    * [AURORA-377] - No Veto reason is exposed for a task stuck in PENDING due to host constraints
    * [AURORA-584] - Storage is not READY uncaught exception during getJobSummary
    * [AURORA-596] - SQL constraint violation in DbAttributeStore
    * [AURORA-443] - Aurora admin perform_maintenance_hosts must bail out if no hosts found

## Epic
    * [AURORA-205] - Have a way to query for job uptime metrics providing a basis for future SLA monitoring
    * [AURORA-290] - Expose basic SLA job stats from scheduler

## Story
    * [AURORA-11] - Aurora preemptor should reserve resources feed for PENDING task.
    * [AURORA-10] - Document and script tagging process
    * [AURORA-9] - Maintenance servlet should expose information about DRAINED hosts
    * [AURORA-8] - Support using Mesos binaries during vagrant up
    * [AURORA-23] - Transition tasks through the recently-introduced THROTTLED state
    * [AURORA-38] - Deprecate CronCollisionPolicy.RUN_OVERLAP
    * [AURORA-140] - Add getInfo API call, deprecate getVersion
    * [AURORA-132] - Restore cron functionality with license-compatible library
    * [AURORA-222] - Updater should run health checks in parallel
    * [AURORA-193] - Automate license header checks
    * [AURORA-191] - Holistic improvement of Java + Gradle + Thrift development workflow
    * [AURORA-184] - Implicit scheduling constraints should be configurable
    * [AURORA-153] - Add indices to OfferQueueImpl
    * [AURORA-152] - Break down free slots metrics into dedicated and shared
    * [AURORA-139] - Scheduling performance could be vastly improved by caching job information
    * [AURORA-149] - python code should have a checkstyle run as part of the build
    * [AURORA-201] - aurora needs a "really, really kill this task" command
    * [AURORA-200] - set_quota should die if given invalid arguments
    * [AURORA-104] - Create a tool that, given an aurora config file, creates a diagram of an application architecture
    * [AURORA-108] - make set_quota in aurora_admin require explicit units
    * [AURORA-78] - automate and enforce release workflow
    * [AURORA-77] - Update build-support/release/tag-release to create dev snapshots as well
    * [AURORA-58] - Consider caching hashCode in thrift wrapper classes
    * [AURORA-49] - KEYS file for signed releases
    * [AURORA-44] - aurora python code should be exported as publishable sdists
    * [AURORA-122] - Introduce a task store secondary index on slave host
    * [AURORA-71] - Generated aurora artifacts must be suffixed with "incubating"
    * [AURORA-242] - Install a SecurityManager to require unit test diligence
    * [AURORA-228] - Consider using gradle javascript plugin
    * [AURORA-240] - Upgrade to mesos 0.17.0
    * [AURORA-236] - Document "Run until success" semantics for adhoc jobs
    * [AURORA-251] - Upgrade protobuf to 2.5.0
    * [AURORA-214] - Launch GC executor tasks asynchronously
    * [AURORA-218] - Aurora Analytics
    * [AURORA-219] - Aurora/Mesos Client Generalization
    * [AURORA-225] - Shell scripts in checkout should use an absolute path
    * [AURORA-224] - Make health checking more configurable in updater
    * [AURORA-261] - on sandbox garbage collection, just de-link the slave HREF on the finished tasks page
    * [AURORA-260] - Improve safety of killing a job
    * [AURORA-280] - Improve organization of the job page
    * [AURORA-255] - Tasks in a job should schedule faster
    * [AURORA-299] - Improve vagrant setup
    * [AURORA-552] - License headers missing on files
    * [AURORA-491] - Scheduler failing in vagrant environment
    * [AURORA-482] - Frequent transient errors running python tests
    * [AURORA-470] - Tasks get stuck in THROTTLED state on restart or leader change
    * [AURORA-406] - SLA stats should not be in internal TSDB
    * [AURORA-322] - upgrade mesos egg to 0.18.0
    * [AURORA-318] - Improve documentation and unit testing for Host Maintenance API
    * [AURORA-388] - Update changelog to only pickup fixed issues 
    * [AURORA-384] - Remove cron jobs table from /role page
    * [AURORA-379] - Deprecate Identity struct in api.thrift
    * [AURORA-370] - The killTasks RPC should not wait until tasks are killed
    * [AURORA-392] - Add apache- to source distribution name
    * [AURORA-332] - Extend the client plugin architecture to support pre-dispatch and cleanup operations
    * [AURORA-331] - tainted data isn't properly escaped in HTML templates
    * [AURORA-348] - Add machine maintenance auth capability
    * [AURORA-347] - CLI should surface information about locks
    * [AURORA-346] - UI should surface information about locks
    * [AURORA-342] - Remove the non-HTTP thrift port
    * [AURORA-361] - Remove health checking from the client
    * [AURORA-323] - Add ability to merge in github pull requests similar to rbt
    * [AURORA-449] - Upgrade to Bootstrap 3
    * [AURORA-438] - Turn on JSHint check during build
    * [AURORA-569] - Current leading scheduler should be exposed via an endpoint
    * [AURORA-562] - Expose a stat for count of LOST status updates for GC executor tasks
    * [AURORA-565] - update top level readme with instructions on bootstrapping and running initial test
    * [AURORA-211] - Scheduler UI should redirect to the current leader
    * [AURORA-350] - Parallelize updates to speed up deploys
    * [AURORA-593] - Enable jenkins jacoco plugin
    * [AURORA-574] - Add documentation for HTTP health checking and graceful task exit
    * [AURORA-594] - RC1 files missing Apache license headers
    * [AURORA-590] - Release scripts branch and CHANGELOG urls are wrong in generated email template
    * [AURORA-599] - Reset changelog and version for 0.5.0 rc2

## Sub-task
    * [AURORA-521] - Add pagination to getTasksStatus
    * [AURORA-519] - Add endpoint for configuration summary
    * [AURORA-481] - Add big job to local test fixture
    * [AURORA-463] - Use asynchronous transport in Thrift.js client
    * [AURORA-500] - Remove GZipFilter

## Task
    * [AURORA-7] - Setup jenkins job
    * [AURORA-2] - Import Aurora into Apache Git
    * [AURORA-1] - Initial website content for import
    * [AURORA-4] - Transfer Github stars and watchers
    * [AURORA-36] - Remove scheduler_list_job_updates verb from aurora_admin
    * [AURORA-33] - Show Job Summary by role on home page
    * [AURORA-32] - Replace old scheduler home page with the new page
    * [AURORA-22] - Update website for new reviews mailing list
    * [AURORA-30] - Clean up and coalesce 3rdparty python deps
    * [AURORA-39] - Create a page that lists jobs for a role
    * [AURORA-17] - Use promises for calling thrift end points 
    * [AURORA-18] - Show an error message when the thrift call to scheduler fails
    * [AURORA-220] - Plugin framework for clientv2
    * [AURORA-192] - Switch to client quota checks
    * [AURORA-186] - rename thermos_executor to aurora_executor
    * [AURORA-183] - Upgrade twitter.common.python to 0.3.0
    * [AURORA-178] - Log/observe snapshot operations
    * [AURORA-158] - replace TaskConfig.packages with TaskConfig.metadata
    * [AURORA-157] - Reorder python imports to be consistent
    * [AURORA-146] - Destroy log file using git clean
    * [AURORA-144] - Dynamic backoff to task timeout value
    * [AURORA-141] - Deprecate getVersion API
    * [AURORA-148] - Jobs should be able to set an UpdateConfig with abort_on_failure = True
    * [AURORA-198] - Add ability to specify shards in DistributedCommandRunner
    * [AURORA-209] - Add sla_probe_hosts command into aurora_admin client
    * [AURORA-207] - Add get_job_uptime command into aurora client
    * [AURORA-208] - Add sla_list_safe_domain command into aurora_admin client
    * [AURORA-206] - Add get_task_up_count command into aurora client
    * [AURORA-203] - Implement help system for clientv2 bridge framework.
    * [AURORA-202] - Improve "help" system for noun/verb framework.
    * [AURORA-106] - Create a new task store with a hierarchical structure for storing tasks.
    * [AURORA-82] - Introduce a DRAINING task state into the scheduler state machine
    * [AURORA-81] - Make clientv2 deployable.
    * [AURORA-80] - Add end-to-end test of client v2, client v1, and bridged client.
    * [AURORA-79] - Move deployment into clientv2
    * [AURORA-117] - Scheduler performance issues with very large jobs
    * [AURORA-116] - Improve efficiency of saving host attributes (or avoid saving host attributes)
    * [AURORA-115] - Update to mesos-0.15
    * [AURORA-107] - Add "quota" noun to client
    * [AURORA-76] - Implement bridging for clientv2 command line framework.
    * [AURORA-75] - Upgrade dependencies coming from twitter commons
    * [AURORA-73] - Break out storage latency and log latency into percentiles
    * [AURORA-54] - Create remaining clientv2 job verbs
    * [AURORA-53] - Add update command for clientv2
    * [AURORA-48] - Docs should be named in an SEO-friendly way and rendered on the website
    * [AURORA-47] - Initial import of Aurora documentation
    * [AURORA-42] - Modify client side code to distinguish between api objects
    * [AURORA-63] - TaskAssignerImpl lacks test coverage
    * [AURORA-62] - Improve test coverage for CronJobManager
    * [AURORA-129] - Create a vagrant "test cluster" config for multi-slave end-to-end tests.
    * [AURORA-128] - Make aurora ssh and aurora run generate better error messages.
    * [AURORA-125] - Fix clusters.json generated for vagrant, so that it contains the traits needed for 'aurora run' and 'aurora ssh'
    * [AURORA-124] - Implement a "task" noun for client v2
    * [AURORA-70] - Replace SchedulerzJob page with the Angular UI job page.
    * [AURORA-69] - Implement a page to list jobs for a role/environment
    * [AURORA-68] - Add a thrift API to get quota consumption info for a given role and environment
    * [AURORA-67] - Add a thrift API to get job summary for a role and environment
    * [AURORA-66] - Replace SchedulerRole servlet with UI client pages.
    * [AURORA-65] - Add a thrift API to get quota information for a role
    * [AURORA-64] - Add a thrift API to get job summary for a role
    * [AURORA-246] - update aurora client to use the new getQuota API
    * [AURORA-239] - Admin sla command perf improvements
    * [AURORA-235] - Add JobKey set into TaskQuery
    * [AURORA-234] - Replace HTML tables in docs with markdown
    * [AURORA-233] - Improve performance of sla_list_safe_domain
    * [AURORA-232] - TaskQuery needs to support a set of slaveHosts
    * [AURORA-292] - Create a new endpoint for SLA stats
    * [AURORA-293] - Implement SLA processing core
    * [AURORA-291] - Preserve ancestor details to improve accuracy of SLA calculations
    * [AURORA-226] - Create packaging target for clientv2
    * [AURORA-283] - Add batchsize to client v2 kill, killall, restart, update.
    * [AURORA-281] - Create a page that lists the jobs for a specific role/env
    * [AURORA-277] - Add next cron run info to getJobSummary API
    * [AURORA-276] - Add logging hooks to clientv2
    * [AURORA-263] - Support a min guaranteed task history retention period
    * [AURORA-253] - Add clientv2 design doc to the apache repos
    * [AURORA-287] - Aurora admin sla_list_safe_domain must ignore non prod jobs
    * [AURORA-286] - Draft proposal to refactor in-memory storage to use relational database
    * [AURORA-272] - Change job uptime baseline from STARTING to RUNNING
    * [AURORA-270] - Command hooks for clientv2
    * [AURORA-269] - Add a way to configure built-in "mandatory" hooks
    * [AURORA-268] - Implement instance descriptor syntax to all appropriate commands.
    * [AURORA-266] - Make a clientv2 version of the end-to-end test
    * [AURORA-298] - Update all dependencies coming from twitter commons and upgrade to guava 16
    * [AURORA-533] - killTasks rpc should return a message indicating if the tasks were killed
    * [AURORA-539] - Create a getTaskStatusLight RPC
    * [AURORA-528] - Document available SLA metrics
    * [AURORA-531] - the aurora client should use requests for its thrift transport
    * [AURORA-508] - Fix ugliness in aurora help
    * [AURORA-516] - Increase maximum instances/job in aurora scheduler
    * [AURORA-484] - Add a "developing aurora client" document.
    * [AURORA-479] - Drop restart_threshold > watch_secs validation in UpdateConfig
    * [AURORA-461] - Modify API return types and values to allow client logging.
    * [AURORA-505] - Add a target for a standalone clientv2
    * [AURORA-496] - Modify config binding helper registration in clientv2
    * [AURORA-407] - Implement clientv2 "cron" noun.
    * [AURORA-404] - Validate values between UpdateConfig and HealthCheckConfig
    * [AURORA-314] - create annotated tag for 0.5.0
    * [AURORA-403] - Add a clientv2 command to list the jobs defined in a config file.
    * [AURORA-376] - Change default config values to account for executor health checks
    * [AURORA-390] - UI should be able to query any scheduler backend
    * [AURORA-386] - Always show resource consumption table.
    * [AURORA-381] - Add a Navbar with Aurora logo on every page
    * [AURORA-378] - Add config grouping visualisation to job page
    * [AURORA-396] - scheduler internal UI wraps fields unnecessarily
    * [AURORA-329] - Restrict SLA commands to use only RUNNING tasks for calculating uptime
    * [AURORA-335] - H2-backed implementation of LockStore
    * [AURORA-345] - killTasks should not fail with "No jobs to kill" error
    * [AURORA-341] - Create KEYS file under https://dist.apache.org/repos/dist/dev/incubator/aurora
    * [AURORA-352] - Exclude tasks in PENDING status from task summary on Job page
    * [AURORA-356] - Add batchsize to clientv1 implementations of kill & killall
    * [AURORA-417] - Add API calls needed for new client cron commands
    * [AURORA-446] - Remove --groups_per_batch option from the perform_maintenace_hosts
    * [AURORA-445] - Admin perform_maintenance_hosts to check job SLA before draining
    * [AURORA-441] - Add grouping option into admin SLA commands
    * [AURORA-428] - Allow project override in list-missing-shipits script
    * [AURORA-477] - Modify clientv2 commands to always log messages returned by the scheduler
    * [AURORA-305] - Admin sla commands should support min_instance_count option
    * [AURORA-548] - scheduler should always show tasks_lost_rack_XXX metrics
    * [AURORA-432] - Allow user-defined variables for custom shorthands in client
    * [AURORA-430] - Support common command shorthands
    * [AURORA-542] - perform_maintenance_hosts should drain hosts that passed SLA check
    * [AURORA-433] - Write a design doc describing the aurora shorthands and init files.
    * [AURORA-421] - H2-backed implementation of QuotaStore
    * [AURORA-465] - Update scheduler deployment documentation to remove mention of dedicated thrift port
    * [AURORA-431] - Support configurable defaults using init files.
    * [AURORA-435] - Chunk the responses of getTasksStatus
    * [AURORA-555] - H2-backed implementation of SchedulerStore
    * [AURORA-576] - Define a thrift API for client operations.
    * [AURORA-553] - Switch to getTasksWithoutConfig RPC on the client where applicable
    * [AURORA-567] - Have client commands that load config files log the contents of the loaded config.
    * [AURORA-557] - H2-backed implementation of AttributeStore



