diff --git a/precommit/src/main/shell/coprocs.d/README.md b/.markdownlint.yaml
old mode 100755
new mode 100644
similarity index 75%
copy from precommit/src/main/shell/coprocs.d/README.md
copy to .markdownlint.yaml
index e960cad..d886982
--- a/precommit/src/main/shell/coprocs.d/README.md
+++ b/.markdownlint.yaml
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements.  See the NOTICE file distributed with
 # this work for additional information regarding copyright ownership.
@@ -14,12 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-#############################
-##
-## bash v4+ coproc routines
-##
-#############################
-
-# bash v3 and lower will treat coproc commands as syntax errors
-# therefore, ALL functions which activate coprocs are located
-# here
\ No newline at end of file
+---
+default: true
+line-length: false
+commands-show-output: false
diff --git a/README.md b/README.md
index 108fd19..88f3974 100644
--- a/README.md
+++ b/README.md
@@ -16,6 +16,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
+
 # Apache Yetus
 
 Apache Yetus is a collection of libraries and tools that enable
@@ -27,14 +28,19 @@
 
 * [Website source](asf-site-src/)
 Holds our documentation, which is presented via [our website](https://yetus.apache.org/).
+
 * [Precommit](precommit/)
 Precommit provides robust tools to deal with contributions, including applying patches from a variety of project sources and evaluating them against project norms via a system of plugins. See the [precommit overview](asf-site-src/source/documentation/in-progress/precommit-architecture.md) to get started working with precommit.
+
 * [Audience Annotations](audience-annotations-component/)
 Audience Annotations allows projects to use Java Annotations to delineate public and non-public parts of their APIs. It also provides doclets to generate javadocs filtered by the intended audience. Currently builds with Maven 3.2.0+.
+
 * [Shelldocs](shelldocs/)
 Shelldocs processes comments on Bash functions for annotations similar to Javadoc. It also includes built-in audience scoping functionality similar to the doclet from Audience Annotations.
+
 * [Release Doc Maker](release-doc-maker/)
 Release Doc Maker analyzes Jira and Git information to produce Markdown formatted release notes.
+
 * [yetus-maven-plugin](yetus-maven-plugin/)
 Builds a maven plugin that provides some small utilities for some uncommon maven requirements (such as symlinks) in addition to being mavenized versions of some of the Apache Yetus functionality.
 
@@ -43,7 +49,8 @@
 For full instructions on how to build releases and the website, see the [guide to contributing](asf-site-src/source/contribute.html.md) for requirements and instructions.
 
 ```bash
-# Launch a Docker container that has all of the project's dependencies and a working build environment
+# Launch a Docker container that has all of the project's dependencies
+# and a working build environment
 ./start-build-env.sh
 
 # Build the binary tarball, located in yetus-dist/target/artifacts:
@@ -52,7 +59,8 @@
 # Build the binary and source tarballs and sign the content:
 mvn clean install -Papache-release
 
-# Same, but if outside the container and need to let the system know that the OS uses 'gpg2' instead of 'gpg':
+# Same, but if outside the container and need to let the system know
+# that the OS uses 'gpg2' instead of 'gpg':
 mvn clean install -Papache-release -Pgpg2
 
 # Build the binary and source tarballs, but skip signing them:
@@ -66,7 +74,7 @@
 
 ## Container Quickstart
 
-The project makes available two convenience container images on https://hub.docker.com for both tagged releases and for the master branch.  It is highly recommended that casual users use a tagged release so as to not be surprised by incompatible changes that are still rolling through the master branch.
+The project makes available two convenience container images on <https://hub.docker.com> for both tagged releases and for the master branch.  It is highly recommended that casual users use a tagged release so as to not be surprised by incompatible changes that are still rolling through the master branch.
 
 ### apache/yetus-base
 
diff --git a/asf-site-src/Gemfile.lock b/asf-site-src/Gemfile.lock
index 293c203..072bb37 100644
--- a/asf-site-src/Gemfile.lock
+++ b/asf-site-src/Gemfile.lock
@@ -1,5 +1,5 @@
 GIT
-  remote: https://github.com/middleman/middleman-syntax.git
+  remote: git://github.com/middleman/middleman-syntax.git
   revision: 0377cc9d2219c2a6ffc2acfd39057f833934af9a
   specs:
     middleman-syntax (3.1.0)
@@ -7,15 +7,15 @@
       rouge (~> 3.1)
 
 GIT
-  remote: https://github.com/vmg/redcarpet.git
-  revision: 92a7b3ae2241b862e9bf45e0af3cf53ebdfb0afb
+  remote: git://github.com/vmg/redcarpet.git
+  revision: 94f6e27bdf2395efa555a7c772a3d8b70fb84346
   specs:
     redcarpet (3.4.0)
 
 GEM
   remote: https://rubygems.org/
   specs:
-    activesupport (4.2.10)
+    activesupport (4.2.11.1)
       i18n (~> 0.7)
       minitest (~> 5.1)
       thread_safe (~> 0.3, >= 0.3.4)
@@ -26,7 +26,7 @@
       rack (>= 1.0.0)
       rack-test (>= 0.5.4)
       xpath (~> 2.0)
-    chunky_png (1.3.10)
+    chunky_png (1.3.11)
     coffee-script (2.4.1)
       coffee-script-source
       execjs
@@ -49,7 +49,7 @@
     erubis (2.7.0)
     eventmachine (1.2.7)
     execjs (2.7.0)
-    ffi (1.9.25)
+    ffi (1.10.0)
     haml (5.0.4)
       temple (>= 0.8.0)
       tilt
@@ -58,7 +58,7 @@
       uber (~> 0.0.14)
     http_parser.rb (0.6.0)
     i18n (0.7.0)
-    json (2.1.0)
+    json (2.2.0)
     kramdown (1.17.0)
     libv8 (3.16.14.19)
     listen (3.0.8)
@@ -98,27 +98,27 @@
       sprockets-sass (~> 1.3.0)
     mime-types (3.2.2)
       mime-types-data (~> 3.2015)
-    mime-types-data (3.2018.0812)
-    mini_portile2 (2.3.0)
+    mime-types-data (3.2019.0331)
+    mini_portile2 (2.4.0)
     minitest (5.11.3)
     multi_json (1.13.1)
-    nokogiri (1.8.5)
-      mini_portile2 (~> 2.3.0)
+    nokogiri (1.10.2)
+      mini_portile2 (~> 2.4.0)
     padrino-helpers (0.12.9)
       i18n (~> 0.6, >= 0.6.7)
       padrino-support (= 0.12.9)
       tilt (>= 1.4.1, < 3)
     padrino-support (0.12.9)
       activesupport (>= 3.1)
-    rack (1.6.10)
+    rack (1.6.11)
     rack-livereload (0.3.17)
       rack
     rack-test (1.1.0)
       rack (>= 1.0, < 3)
     rake (10.3.1)
     rb-fsevent (0.10.3)
-    rb-inotify (0.9.10)
-      ffi (>= 0.5.0, < 2)
+    rb-inotify (0.10.0)
+      ffi (~> 1.0)
     ref (2.0.0)
     rouge (3.3.0)
     sass (3.4.25)
@@ -132,11 +132,11 @@
     sprockets-sass (1.3.1)
       sprockets (~> 2.0)
       tilt (~> 1.1)
-    temple (0.8.0)
+    temple (0.8.1)
     therubyracer (0.12.3)
       libv8 (~> 3.16.14.15)
       ref
-    thor (0.20.0)
+    thor (0.20.3)
     thread_safe (0.3.6)
     tilt (1.4.1)
     tzinfo (1.2.5)
diff --git a/asf-site-src/source/contribute.html.md b/asf-site-src/source/contribute.html.md
index 8f1633f..b8d9801 100644
--- a/asf-site-src/source/contribute.html.md
+++ b/asf-site-src/source/contribute.html.md
@@ -17,23 +17,23 @@
   under the License.
 -->
 
-#How To Contribute
+# How To Contribute
 
 ## Submitting Changes
 
 We use git as our version control system. To streamline the process of giving proper credit to the contributors when committing patches, we encourage contributors to submit patches generated using git format-patch. This has many benefits:
 
-   * Committers can't forget to attribute proper credit to the contributor
-   * The contributors name and email address shows up in git log
-   * When viewing Yetus's source code on https://github.com/apache/yetus , the commits from the contributor are linked to their github.com account if it's linked to the same email address they used when generating the git format-patch
+* Committers can't forget to attribute proper credit to the contributor
+* The contributors name and email address shows up in git log
+* When viewing Yetus's source code on <https://github.com/apache/yetus>, the commits from the contributor are linked to their github.com account if it's linked to the same email address they used when generating the git format-patch
 
 Long story short, it makes both the contributors' and committers' lives easier, so please generate your patches using git format-patch.
 
 Here are some instructions on how to generate patches:
 
-   * Ensure that you have all of your change as 1 commit which has the correct commit message - something like `YETUS-1. Update shellcheck plug-in to support bats files`
-   * Then run a command like: `git format-patch HEAD^..HEAD --stdout > YETUS-1.00.patch`
-   * Upload the YETUS-1.00.patch file to the aforementioned JIRA
+* Ensure that you have all of your change as 1 commit which has the correct commit message - something like `YETUS-1. Update shellcheck plug-in to support bats files`
+* Then run a command like: `git format-patch HEAD^..HEAD --stdout > YETUS-1.00.patch`
+* Upload the YETUS-1.00.patch file to the aforementioned JIRA
 
 The naming of the patch should be in (JIRA).(patch number).patch or, if it needs to apply to a specific branch, (JIRA).(branch name).(patch number).patch format. For example, YETUS-9.00.patch, YETUS-500.02.patch, or YETUS-23.cmake.11.patch. This way, if you need to upload another version of the patch, you should keep the file name the same and JIRA will sort them according to date/time if multiple files have the same name. This feature is also useful to traceback the history of a patch and roll-back to an earlier version if needed.
 
@@ -41,5 +41,5 @@
 
 Below are guides meant to give you help accomplishing specific tasks for the project:
 
-   * [Maintaining the Yetus Website](website) - walks through how to view the website locally, update various static and generated pages, and render the html for publishing.
-   * [Working with Release Candiates](releases) - covers managing the release process, validating proposed release candidates, and publishing project approved artifacts.
+* [Maintaining the Yetus Website](website) - walks through how to view the website locally, update various static and generated pages, and render the html for publishing.
+* [Working with Release Candiates](releases) - covers managing the release process, validating proposed release candidates, and publishing project approved artifacts.
diff --git a/asf-site-src/source/contribute/releases.md b/asf-site-src/source/contribute/releases.md
index 4654848..f95ef57 100644
--- a/asf-site-src/source/contribute/releases.md
+++ b/asf-site-src/source/contribute/releases.md
@@ -1,4 +1,4 @@
-<!---
+<!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
   distributed with this work for additional information
@@ -17,19 +17,18 @@
   under the License.
 -->
 
-<!-- MarkdownTOC levels="1,2" autolink="true" -->
+# Managing a Release
 
-* [Managing a Release](#managing-a-release)
-  * [Dependencies](#dependencies)
-  * [Setup](#setup)
-  * [Release Candidate\(s\)](#release-candidates)
-  * [Verification](#verification)
-  * [Cleanup](#cleanup)
+<!-- MarkdownTOC levels="1,2" autolink="true" bullets="-,+,*" -->
+
+- [Dependencies](#dependencies)
+- [Setup](#setup)
+- [Release Candidate\(s\)](#release-candidates)
+- [Verification](#verification)
+- [Cleanup](#cleanup)
 
 <!-- /MarkdownTOC -->
 
-# Managing a Release
-
 The Apache Yetus community encourages all committers to help on driving releases. To that end, this section seeks to outline the tools and process you'll use when managing a release. Note that these are our community norms; they do not supersede foundation policy should the two disagree.
 
 ## Dependencies
@@ -78,11 +77,11 @@
 
 ### Ensure Your Public Key is in KEYS
 
-Like many ASF projects, we provide a single file that downstream folks can use to verify our release artifacts. It's located in the project's distribution area: https://www.apache.org/dist/yetus/KEYS. You can read about this file in the ASF guide to release signing's section [The KEYS File](https://www.apache.org/dist/yetus/KEYS). If your public key is not already included in this file, you will need to add it. You can either follow the instructions in the previously mentioned guide or those at the top of the actual KEYS file. In any case, you will need to use Subversion to update the KEYS file in the project's distribution area. Note that this area is writable only by the project PMC. If you are not yet on the PMC, your last step should be providing a patch rather than committing.
+Like many ASF projects, we provide a single file that downstream folks can use to verify our release artifacts. It's located in the project's distribution area <https://www.apache.org/dist/yetus>. You can read about this file in the [ASF guide to release signing](https://www.apache.org/dev/release-signing) section. If your public key is not already included in [the KEYS file](https://www.apache.org/dist/yetus/KEYS), you will need to add it. You can either follow the instructions in the previously mentioned guide or those at the top of the actual KEYS file. In any case, you will need to use Subversion to update the KEYS file in the project's distribution area. Note that this area is writable only by the project PMC. If you are not yet on the PMC, your last step should be providing a patch rather than committing.
 
 Example commands:
 
-```
+```bash
 $ svn co https://dist.apache.org/repos/dist/release/yetus yetus-dist-release
 $ cd yetus-dist-release
 $ (gpg --list-sigs <your key name> && gpg --armor --export <your key name>) >> KEYS
@@ -94,32 +93,27 @@
 
 Like the rest of our project activity, we'll use an issue in JIRA to track managing the release. You should create this issue and assign it to yourself. As you make your way through the process of creating and running votes on release candidates, this issue will give you a centralized place to collect pointers to your work.
 
-1. Browse to the ASF JIRA instance's "create issue" page: https://issues.apache.org/jira/secure/CreateIssue!default.jspa
-1. Select "Yetus" for the Project and "Task" for the issue type. Click "Next"
+1. Browse to the ASF JIRA instance's "create issue" page: <https://issues.apache.org/jira/secure/CreateIssue!default.jspa>
+1. Select "Yetus" for the Project and "Task" for the issue type. Click "Next".
 1. On the next screen, use a subject line like "Release VERSION", with an appropriate version number. Fill in the following fields and click "Create".
-  - The component should be "website and documentation"
-  - Affects Version and Fix Version should both be the version you are releasing
-  - Assignee should be you
-  - Add a description similar to "Generate release candidates as needed to create a VERSION release." with an appropriate version number.
-
-Next, create a shortened link to the JIRA version's release notes. This link should use the ASF link shortener, https://s.apache.org/. To find the appropriate release notes page:
-
-1. Browse to the Yetus JIRA versions page: https://issues.apache.org/jira/browse/YETUS/?selectedTab=com.atlassian.jira.jira-projects-plugin:versions-panel
-1. Click on the Name of the release you are managing
-1. Click on the "Release Notes" button. If it isn't shown, click on the "Summary" button in the left menu
-1. Copy this URL
-1. Browse to the ASF URL shortener: https://s.apache.org/
+   - The component should be "website and documentation"
+   - Affects Version and Fix Version should both be the version you are releasing
+   - Assignee should be you
+   - Add a description similar to "Generate release candidates as needed to create a VERSION release." with an appropriate version number.
+1. Next, create a shortened link to the JIRA version's release notes. This link should use the ASF link shortener, <https://s.apache.org/>. To find the appropriate release notes page:
+   - Browse to the Yetus JIRA versions page: <https://issues.apache.org/jira/browse/YETUS/?selectedTab=com.atlassian.jira.jira-projects-plugin:versions-panel>
+   - Click on the Name of the release you are managing
+   - Click on the "Release Notes" button. If it isn't shown, click on the "Summary" button in the left menu
+   - Copy this URL
+1. Browse to the ASF URL shortener: <https://s.apache.org/>
 1. Paste the URL into the "URI" field
 1. Set the optional key field to 'yetus-_version_-jira'
-
-For example, on the 0.7.0 release, you would use 'https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318920&version=12334330' for the URI field and 'yetus-0.7.0-jira' for the key.
-
-Finally, you should create a JIRA version that matches the release _following_ the one you are managing. This action is so that folks can continue to work on things that won't make it into the in-progress release while we evaluate candidates.
-
-1. Browse to the ASF JIRA project management page for versions: https://issues.apache.org/jira/plugins/servlet/project-config/YETUS/versions
-1. Fill in a version one minor version up from the release you're managing. E.g., when managing the 0.7.0 release, fill in 0.3.0.
-1. Set a start date of today.
-1. Click "Add"
+   For example, on the 0.7.0 release, you would use `https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318920&version=12334330` for the URI field and 'yetus-0.7.0-jira' for the key.
+1. Finally, you should create a JIRA version that matches the release _following_ the one you are managing. This action is so that folks can continue to work on things that won't make it into the in-progress release while we evaluate candidates.
+    1. Browse to the ASF JIRA project management page for versions: <https://issues.apache.org/jira/plugins/servlet/project-config/YETUS/versions>
+    1. Fill in a version one minor version up from the release you're managing. E.g., when managing the 0.7.0 release, fill in 0.3.0.
+    1. Set a start date of today.
+    1. Click "Add"
 
 ### Work in Git
 
@@ -127,7 +121,7 @@
 
 Example commands, presuming the release under management is **0.7.0** and the JIRA issue is **YETUS-XXX**:
 
-```
+```bash
 $ # Ensure master is up to date
 $ mvn clean
 $ git fetch origin
@@ -163,14 +157,13 @@
 
 At this point, you should edit the files mentioned above. They must have the version we expect upon a successful release. Search for instances of *VERSION-SNAPSHOT* and replace with *VERSION*; e.g., *0.7.0-SNAPSHOT* should become *0.7.0*:
 
-```
+```bash
 $ perl -pi -e 's,0.7.0-SNAPSHOT,0.7.0,g' $(find . -type f)
 ```
 
+After you are done, create a branch-specific patch and then prepare to update the master branch.
 
- After you are done, create a branch-specific patch and then prepare to update the master branch.
-
-```
+```bash
 $ git add -p
 $ git commit -m "YETUS-XXX. Stage version 0.7.0."
 $ git format-patch --stdout origin/YETUS-XXX > path/to/patches/YETUS-XXX-YETUS-XXX.1.patch
@@ -191,14 +184,13 @@
 
 Now update these files, but this time you should update them for the next minor version's SNAPSHOT. e.g., *0.7.0-SNAPSHOT* should become *0.8.0-SNAPSHOT*:
 
-
-```
+```bash
 $ perl -pi -e 's,0.7.0-SNAPSHOT,0.8.0-SNAPSHOT,g' $(find . -type f)
 ```
 
 After you are done, create a patch.
 
-```
+```bash
 $ git add -p
 $ git commit -m "YETUS-XXX. bump master version to 0.8.0-SNAPSHOT"
 $ git format-patch --stdout origin/master > path/to/patches/YETUS-XXX.1.patch
@@ -210,35 +202,48 @@
 
 Depending on how candidate evaluation goes, you may end up performing these steps multiple times. Before you start, you'll need to decide when you want each candidate's vote thread to end. ASF policy requires a minimum voting period of 72 hours (ref [ASF Voting Policy](https://www.apache.org/foundation/voting.html)), so you should ensure enough padding to complete the candidate generation process in time. Ideally, you would plan to post the vote thread on a Friday morning (US time) with a closing date on Monday morning (US time).
 
-1. Update JIRA version release date. Browse to the JIRA project version management page (https://issues.apache.org/jira/plugins/servlet/project-config/YETUS/versions), mark the version as 'Release', and set the release date. Our generated release notes will use this date.
-1. Update your `${HOME}/.m2/settings.xml` file to include the Maven snapshot information as indicated on https://www.apache.org/dev/publishing-maven-artifacts.html
+1. Update JIRA version release date. Browse to the JIRA project version management page <https://issues.apache.org/jira/plugins/servlet/project-config/YETUS/versions>, mark the version as 'Release', and set the release date. Our generated release notes will use this date.
+1. Update your `${HOME}/.m2/settings.xml` file to include the Maven snapshot information as indicated on <https://www.apache.org/dev/publishing-maven-artifacts.html>
 1. Build release artifacts. You should use our convenience script to create the tarballs and markdown documents for a release. Run the following from the release staging branch and inspect the results:
 
-        $ mvn --batch-mode clean deploy -Papache-release
-        $ mvn --batch-mode site site:stage
-        $ ls -lah  yetus-dist/target/artifacts/*
-1. Check out the staging area for release candidates and make a directory for this candidate, somewhere outside of your working directory. Copy the artifacts (**except for the site.tar.gz**) from the previous step into place. For example, when working on RC1 for the 0.7.0 release
+   ```bash
+   $ mvn --batch-mode clean deploy -Papache-release
+   $ mvn --batch-mode site site:stage
+   $ ls -lah yetus-dist/target/artifacts/*
+   ```
 
-        $ svn co https://dist.apache.org/repos/dist/dev/yetus/ yetus-dist-dev
-        $ cd yetus-dist-dev
-        $ mkdir 0.7.0-RC1
-        $ cd 0.7.0-RC1
-        $ cp path/to/yetus/target/RELEASENOTES.md path/to/yetus/target/CHANGELOG.md path/to/yetus/target/*.tar.gz .
+1. Check out the staging area for release candidates and make a directory for this candidate, somewhere outside of your working directory. Copy the artifacts from the previous step into place. For example, when working on RC1 for the 0.7.0 release
+
+   ```bash
+   $ svn co `https://dist.apache.org/repos/dist/dev/yetus/` yetus-dist-dev
+   $ cd yetus-dist-dev
+   $ mkdir 0.7.0-RC1
+   $ cd 0.7.0-RC1
+   $ cp path/to/yetus/target/RELEASENOTES.md path/to/yetus/target/CHANGELOG.md path/to/yetus/target/*.tar.gz .
+   ```
+
 1. While still in the staging area, sign the artifacts and create the needed checksum files:
 
-        $ for artifact in *; do
-            echo ${artifact}
-            gpg --use-agent --armor --output "${artifact}".asc --detach-sig "${artifact}"
-            gpg --print-mds "${artifact}" >"${artifact}".mds
-            shasum -a 512 "${artifact}" >"${artifact}".sha512
-          done
+   ```bash
+   $ for artifact in *; do
+      echo ${artifact}
+      gpg --use-agent --armor --output "${artifact}".asc --detach-sig "${artifact}"
+      gpg --print-mds "${artifact}" >"${artifact}".mds
+      shasum -a 512 "${artifact}" >"${artifact}".sha512
+    done
+    ```
+
 1. Push the release candidate to staging distribution. This will make the artifacts visible for the vote.
 
-        $ cd ..
-        $ svn add 0.7.0-RC1
-        $ svn commit -m "stage Apache Yetus 0.7.0-RC1"
-Afterward, the artifacts should be visible via the web under the same URL used when checking out. In the case of 0.7.0-RC1: https://dist.apache.org/repos/dist/dev/yetus/0.7.0-RC1/
+   ```bash
+   $ cd ..
+   $ svn add 0.7.0-RC1
+   $ svn commit -m "stage Apache Yetus 0.7.0-RC1"
+   Afterward, the artifacts should be visible via the web under the same URL used when checking out. In the case of 0.7.0-RC1: <https://dist.apache.org/repos/dist/dev/yetus/0.7.0-RC1/>
+   ```
+
 1. Examine staged maven build. Go to the [ASF repository](https://repository.apache.org/) and log in with your asf LDAP credentials. Look for the staging repository with a name that includes "yetus". Clicking on it will give you a link to an "Open" repository. You can examine the structure in the Nexus API while you're logged in. If it looks essentially correct, "Close" the repository. Refreshing and clicking on the repository will give you a link in the Summary tab that other folks can use to interact with the repository.
+1. Create a short link that should point to some online timezone conversion utility that will point to when the vote will end. ASF votes often use timeanddate.com's Event Time Announcer: <http://www.timeanddate.com/worldclock/fixedform.html>.
 1. Call a vote on the release candidate. At this point, you have everything you need to call a vote. Your vote thread must contain "[VOTE]" in the subject line, a link to the candidate staging area you created, a source repository commit hash, and voting rules. It should also contain hashes for the artifacts. Here is an example draft for 0.7.0-RC1, update it as appropriate for your release:
 
         Subject: [VOTE] Apache Yetus 0.7.0-RC1
@@ -274,8 +279,6 @@
         [2]: https://www.apache.org/foundation/glossary.html#MajorityApproval
         [3]: to find this in your local timezone see:
         https://s.apache.org/yetus-0.7.0-rc1-close
-That final short link should point to some online timezone conversion utility. ASF votes often use timeanddate.com's Event Time Announcer: http://www.timeanddate.com/worldclock/fixedform.html.
-
 1. Close the vote after the deadline. Once the deadline in the vote thread passes, tally the vote and post a suitable response that changes the subject line to start with "[RESULT]". If the vote failed, ensure there are issues in JIRA for any problems brought up. When they are closed, repeat the steps for creating a release candidate. If the vote passed, proceed to the [Cleanup section](#cleanup)
 
 ## Verification
@@ -288,76 +291,89 @@
 
 For example, if we use the URL from our exemplar VOTE email, the process would look like this:
 
-    $ wget --recursive --no-parent --quiet 'https://dist.apache.org/repos/dist/dev/yetus/0.7.0-RC1/'
-    $ find dist.apache.org/ -type f
+```bash
+$ wget --recursive --no-parent --quiet 'https://dist.apache.org/repos/dist/dev/yetus/0.7.0-RC1/'
+$ find dist.apache.org/ -type f
 
-    dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/CHANGELOG.md
-    dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/CHANGELOG.md.asc
-    dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/CHANGELOG.md.sha512
-    dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/CHANGELOG.md.mds
-    dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/index.html
-    dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/RELEASENOTES.md
-    dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/RELEASENOTES.md.asc
-    dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/RELEASENOTES.md.sha512
-    dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/RELEASENOTES.md.mds
-    dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/apache-yetus-0.7.0-bin.tar.gz
-    dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/apache-yetus-0.7.0-bin.tar.gz.asc
-    dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/apache-yetus-0.7.0-bin.tar.gz.sha512
-    dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/apache-yetus-0.7.0-bin.tar.gz.mds
-    dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/apache-yetus-0.7.0-src.tar.gz
-    dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/apache-yetus-0.7.0-src.tar.gz.asc
-    dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/apache-yetus-0.7.0-src.tar.gz.sha512
-    dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/apache-yetus-0.7.0-src.tar.gz.mds
-    dist.apache.org//robots.txt
+dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/CHANGELOG.md
+dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/CHANGELOG.md.asc
+dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/CHANGELOG.md.sha512
+dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/CHANGELOG.md.mds
+dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/index.html
+dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/RELEASENOTES.md
+dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/RELEASENOTES.md.asc
+dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/RELEASENOTES.md.sha512
+dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/RELEASENOTES.md.mds
+dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/apache-yetus-0.7.0-bin.tar.gz
+dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/apache-yetus-0.7.0-bin.tar.gz.asc
+dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/apache-yetus-0.7.0-bin.tar.gz.sha512
+dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/apache-yetus-0.7.0-bin.tar.gz.mds
+dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/apache-yetus-0.7.0-src.tar.gz
+dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/apache-yetus-0.7.0-src.tar.gz.asc
+dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/apache-yetus-0.7.0-src.tar.gz.sha512
+dist.apache.org//repos/dist/dev/yetus/0.7.0-RC1/apache-yetus-0.7.0-src.tar.gz.mds
+dist.apache.org//robots.txt
+```
 
 Lastly, if you haven't verified a release before, you'll need to download and import the public keys for the project's release managers. The public keys are located in the KEYS file that should have been mentioned in the [VOTE] thread announcement. The specific output of the following commands will vary depending on how many release managers there have been and which keys, if any, you have previously imported.
 
-    $ curl --output KEYS.yetus --silent 'https://www.apache.org/dist/yetus/KEYS'
-    $ gpg --import KEYS.yetus
-    gpg: key 0D80DB7C: "Sean Busbey (CODE SIGNING KEY) <busbey@apache.org>" not changed
-    gpg: Total number processed: 1
-    gpg:              unchanged: 1
+```bash
+$ curl --output KEYS.yetus --silent 'https://www.apache.org/dist/yetus/KEYS'
+$ gpg --import KEYS.yetus
+gpg: key 0D80DB7C: "Sean Busbey (CODE SIGNING KEY) <busbey@apache.org>" not changed
+gpg: Total number processed: 1
+gpg:              unchanged: 1
+```
 
 ### ASF required checks
 
 ASF policies require that binding votes on releases be cast only after verifying proper licensing and provenance. For specific details, you should read the [ASF Release Policy's section entitled What Must Every ASF Release Contain?](https://www.apache.org/dev/release.html#what-must-every-release-contain) as well as the informational page [What We Sign](https://www.apache.org/info/verification.html). The following is a non-normative set of guidelines.
 
-1. You MUST make sure each of the signatures matches. For example, using gpg and taking a fictional source artifact:
+1. You MUST make sure each of the signatures matches. As noted in the informational page [What We Sign](https://www.apache.org/info/verification.html), if you don't have the signer's key in your web of trust the output of the verify command will point this out. You should refer to it for guidance. For example, using gpg and taking a fictional source artifact:
 
-        $ cd dist.apache.org/repos/dist/dev/yetus/0.7.0-RC1/
-        $ gpg --verify apache-yetus-0.7.0-src.tar.gz.asc apache-yetus-0.7.0-src.tar.gz
-        gpg: Signature made Fri Dec 11 11:50:56 2015 CST using RSA key ID 0D80DB7C
-        gpg: Good signature from "Sean Busbey (CODE SIGNING KEY) <busbey@apache.org>"
-As noted in the informational page [What We Sign](https://www.apache.org/info/verification.html), if you don't have the signer's key in your web of trust the output of the verify command will point this out. You should refer to it for guidance.
+   ```bash
+   $ cd dist.apache.org/repos/dist/dev/yetus/0.7.0-RC1/
+   $ gpg --verify apache-yetus-0.7.0-src.tar.gz.asc apache-yetus-0.7.0-src.tar.gz
+   gpg: Signature made Fri Dec 11 11:50:56 2015 CST using RSA key ID 0D80DB7C
+   gpg: Good signature from "Sean Busbey (CODE SIGNING KEY) <busbey@apache.org>"
+   ```
 
 1. You MUST make sure the provided hashes match the provided artifact.
 
-        $ gpg --print-mds apache-yetus-0.7.0-src.tar.gz >apache-yetus-0.7.0-src.tar.gz.my_mds
-        $ diff apache-yetus-0.7.0-src.tar.gz.mds apache-yetus-0.7.0-src.tar.gz.my_mds
-        $ shasum -a 512 apache-yetus-0.7.0-src.tar.gz >apache-yetus-0.7.0-src.tar.gz.my_sha512
-        $ diff apache-yetus-0.7.0-src.tar.gz.sha512 apache-yetus-0.7.0-src.tar.gz.my_sha512
+   ```bash
+   $ gpg --print-mds apache-yetus-0.7.0-src.tar.gz >apache-yetus-0.7.0-src.tar.gz.my_mds
+   $ diff apache-yetus-0.7.0-src.tar.gz.mds apache-yetus-0.7.0-src.tar.gz.my_mds
+   $ shasum -a 512 apache-yetus-0.7.0-src.tar.gz >apache-yetus-0.7.0-src.tar.gz.my_sha512
+   $ diff apache-yetus-0.7.0-src.tar.gz.sha512 apache-yetus-0.7.0-src.tar.gz.my_sha512
+   ```
 
 1. You MUST make sure artifacts abide by the ASF Licensing Policy. You should read through [the ASF Licensing Policy](https://www.apache.org/legal/resolved), especially if your vote will be binding. As a quick guide:
-    * our software must be under the Apache Software License version 2.0 and this must be noted with a proper LICENSE and NOTICE file in each artifact that can hold them.
-    * our source code must meet the ASF policy on proper license notifications. Read the ASF Legal Committee's [Source Header Licensing Guide](https://apache.org/legal/src-headers.html)
-    * our LICENSE and NOTICE files must correctly propagate licensing information for bundled products. The [Foundation's Licensing HOWTO Guide](https://www.apache.org/dev/licensing-howto.html) provides guidance on how these files should be maintained.
-    * our software must only bundle compatibly licensed products; read [the Licensing Policy's Category A list for compatible licenses](https://www.apache.org/legal/resolved#category-a).
-    * our software may only have a runtime dependency on a product with a prohibit license if its use is optional; read [the Licensing Policy's Category X list for prohibited licenses](https://www.apache.org/legal/resolved#category-x) and [the Licensing Policy's explanation of optional runtime dependencies](https://www.apache.org/legal/resolved#optional).
+   - Our software must be under the Apache Software License version 2.0 and this must be noted with a proper `LICENSE` and `NOTICE` file in each artifact that can hold them.
+   - Our source code must meet the ASF policy on proper license notifications. Read the ASF Legal Committee's [Source Header Licensing Guide](https://apache.org/legal/src-headers.html)
+   - Our `LICENSE` and `NOTICE` files must correctly propagate licensing information for bundled products. The [Foundation's Licensing HOWTO Guide](https://www.apache.org/dev/licensing-howto.html) provides guidance on how these files should be maintained.
+   - Our software must only bundle compatibly licensed products; read [the Licensing Policy's Category A list for compatible licenses](https://www.apache.org/legal/resolved#category-a).
+   - Our software may only have a runtime dependency on a product with a prohibit license if its use is optional; read [the Licensing Policy's Category X list for prohibited licenses](https://www.apache.org/legal/resolved#category-x) and [the Licensing Policy's explanation of optional runtime dependencies](https://www.apache.org/legal/resolved#optional).
 1. You SHOULD make sure the source release artifact corresponds to the referenced commit hash in the [VOTE] thread. (This ASF policy is currently in DRAFT status.) The release tag is how we'll provide long-term provenance information for our downstream users. Since the release's source code artifact will be the canonical representation of the release we vote on, it is essential that it matches the contents of the version control system's tag. Given our example above, you can check this with recursive diff.
 
-        $ mkdir apache-yetus-0.7.0-src_unpack
-        $ tar -C apache-yetus-0.7.0-src_unpack -xzf apache-yetus-0.7.0-src.tar.gz
-        $ git clone --single-branch --depth=1 --branch YETUS-585 'https://github.com/apache/yetus.git' apache-yetus-0.7.0-RC1-tag
-        $ diff -r apache-yetus-0.7.0-RC1-tag apache-yetus-0.7.0-src_unpack/yetus-project-0.7.0
-        $ echo $?
-        0
+   ```bash
+   $ mkdir apache-yetus-0.7.0-src_unpack
+   $ tar -C apache-yetus-0.7.0-src_unpack -xzf apache-yetus-0.7.0-src.tar.gz
+   $ git clone --single-branch --depth=1 --branch YETUS-585 `https://github.com/apache/yetus.git` apache-yetus-0.7.0-RC1-tag
+   $ diff -r apache-yetus-0.7.0-RC1-tag apache-yetus-0.7.0-src_unpack/yetus-project-0.7.0
+   $ echo $?
+   0
+   ```
+
 1. You MUST make sure any non-source artifacts can be derived from the source artifact. Since the source artifact is the canonical representation of our release, any other artifacts we distribute must be just for the convenience of our downstream users. As such, one must be able to derive them from the source artifact. Currently, you can generate all of the artifacts we distribute for convenience using the same commands used to create the release artifacts.
 
-        $ mkdir apache-yetus-0.7.0-src_unpack
-        $ tar -C apache-yetus-0.7.0-src_unpack -xzf apache-yetus-0.7.0-src.tar.gz
-        $ cd apache-yetus-0.7.0-src_unpack/yetus-project-0.7.0
-        $ mvn clean install
-This will create a yetus-dist/target/ directory that contains the tarball binary distribution files.
+   ```bash
+   $ mkdir apache-yetus-0.7.0-src_unpack
+   $ tar -C apache-yetus-0.7.0-src_unpack -xzf apache-yetus-0.7.0-src.tar.gz
+   $ cd apache-yetus-0.7.0-src_unpack/yetus-project-0.7.0
+   $ mvn clean install
+   ```
+
+This will create a `yetus-dist/target/` directory that contains the tarball binary distribution files.
 
 ### Community recommended checks
 
@@ -365,133 +381,137 @@
 
 1. Test Precommit. The smart-apply-patch and test-patch scripts don't get flexed as a part of the above candidate verification. If you have a downstream project you regularly use, it should suffice to attempt local verification of a contribution. If that project happens to be an ASF project with an example personality, this should be as simple as finding an issue in patch-available status.
 
-        $ cd path/to/my/repo/for/hbase
-        $ /some/path/to/the/unpacked/candidate/bin/test-patch --project=hbase HBASE-1772
-        ...SNIP...
-        -1 overall
+   ```bash
+   $ cd path/to/my/repo/for/hbase
+   $ /some/path/to/the/unpacked/candidate/bin/test-patch --project=hbase HBASE-1772
+   ...SNIP...
+   -1 overall
 
-        | Vote |       Subsystem |  Runtime   | Comment
-        ============================================================================
-        |   0  |         reexec  |  0m 0s     | Docker mode activated.
-        |  +1  |      hbaseanti  |  0m 0s     | Patch does not have any anti-patterns.
-        |  +1  |        @\author  |  0m 0s     | The patch does not contain any @\author
-        |      |                 |            | tags.
-        |  +1  |     test4tests  |  0m 0s     | The patch appears to include 2 new or
-        |      |                 |            | modified test files.
-        |  +1  |     mvninstall  |  4m 41s    | master passed
-        |  +1  |        compile  |  1m 4s     | master passed with JDK v1.8.0_72
-        |  +1  |        compile  |  0m 57s    | master passed with JDK v1.7.0_95
-        |  +1  |     checkstyle  |  0m 36s    | master passed
-        |  +1  |     mvneclipse  |  0m 35s    | master passed
-        |  -1  |       findbugs  |  1m 6s     | hbase-client in master has 19 extant
-        |      |                 |            | Findbugs warnings.
-        |  -1  |       findbugs  |  2m 8s     | hbase-server in master has 84 extant
-        |      |                 |            | Findbugs warnings.
-        |  -1  |        javadoc  |  0m 23s    | hbase-client in master failed with JDK
-        |      |                 |            | v1.8.0_72.
-        |  -1  |        javadoc  |  0m 34s    | hbase-server in master failed with JDK
-        |      |                 |            | v1.8.0_72.
-        |  +1  |        javadoc  |  0m 57s    | master passed with JDK v1.7.0_95
-        |  +1  |     mvninstall  |  1m 3s     | the patch passed
-        |  +1  |        compile  |  0m 59s    | the patch passed with JDK v1.8.0_72
-        |  +1  |          javac  |  0m 59s    | the patch passed
-        |  +1  |        compile  |  0m 59s    | the patch passed with JDK v1.7.0_95
-        |  +1  |          javac  |  0m 59s    | the patch passed
-        |  +1  |     checkstyle  |  0m 32s    | the patch passed
-        |  +1  |     mvneclipse  |  0m 28s    | the patch passed
-        |  +1  |     whitespace  |  0m 0s     | Patch has no whitespace issues.
-        |  +1  |    hadoopcheck  |  4m 28s    | Patch does not cause any errors with
-        |      |                 |            | Hadoop 2.4.1 2.5.2 2.6.0.
-        |  +1  |       findbugs  |  3m 37s    | the patch passed
-        |  -1  |        javadoc  |  0m 24s    | hbase-client in the patch failed with
-        |      |                 |            | JDK v1.8.0_72.
-        |  -1  |        javadoc  |  0m 36s    | hbase-server in the patch failed with
-        |      |                 |            | JDK v1.8.0_72.
-        |  +1  |        javadoc  |  1m 2s     | the patch passed with JDK v1.7.0_95
-        |  +1  |           unit  |  1m 23s    | hbase-client in the patch passed with
-        |      |                 |            | JDK v1.8.0_72.
-        |  -1  |           unit  |  67m 12s   | hbase-server in the patch failed with
-        |      |                 |            | JDK v1.8.0_72.
-        |  +1  |           unit  |  1m 28s    | hbase-client in the patch passed with
-        |      |                 |            | JDK v1.7.0_95.
-        |  -1  |           unit  |  66m 16s   | hbase-server in the patch failed with
-        |      |                 |            | JDK v1.7.0_95.
-        |  +1  |     asflicense  |  0m 30s    | Patch does not generate ASF License
-        |      |                 |            | warnings.
-        |      |                 |  177m 13s  |
+   | Vote |       Subsystem |  Runtime   | Comment
+   ============================================================================
+   |   0  |         reexec  |  0m 0s     | Docker mode activated.
+   |  +1  |      hbaseanti  |  0m 0s     | Patch does not have any anti-patterns.
+   |  +1  |        @\author  |  0m 0s     | The patch does not contain any @\author
+   |      |                 |            | tags.
+   |  +1  |     test4tests  |  0m 0s     | The patch appears to include 2 new or
+   |      |                 |            | modified test files.
+   |  +1  |     mvninstall  |  4m 41s    | master passed
+   |  +1  |        compile  |  1m 4s     | master passed with JDK v1.8.0_72
+   |  +1  |        compile  |  0m 57s    | master passed with JDK v1.7.0_95
+   |  +1  |     checkstyle  |  0m 36s    | master passed
+   |  +1  |     mvneclipse  |  0m 35s    | master passed
+   |  -1  |       findbugs  |  1m 6s     | hbase-client in master has 19 extant
+   |      |                 |            | Findbugs warnings.
+   |  -1  |       findbugs  |  2m 8s     | hbase-server in master has 84 extant
+   |      |                 |            | Findbugs warnings.
+   |  -1  |        javadoc  |  0m 23s    | hbase-client in master failed with JDK
+   |      |                 |            | v1.8.0_72.
+   |  -1  |        javadoc  |  0m 34s    | hbase-server in master failed with JDK
+   |      |                 |            | v1.8.0_72.
+   |  +1  |        javadoc  |  0m 57s    | master passed with JDK v1.7.0_95
+   |  +1  |     mvninstall  |  1m 3s     | the patch passed
+   |  +1  |        compile  |  0m 59s    | the patch passed with JDK v1.8.0_72
+   |  +1  |          javac  |  0m 59s    | the patch passed
+   |  +1  |        compile  |  0m 59s    | the patch passed with JDK v1.7.0_95
+   |  +1  |          javac  |  0m 59s    | the patch passed
+   |  +1  |     checkstyle  |  0m 32s    | the patch passed
+   |  +1  |     mvneclipse  |  0m 28s    | the patch passed
+   |  +1  |     whitespace  |  0m 0s     | Patch has no whitespace issues.
+   |  +1  |    hadoopcheck  |  4m 28s    | Patch does not cause any errors with
+   |      |                 |            | Hadoop 2.4.1 2.5.2 2.6.0.
+   |  +1  |       findbugs  |  3m 37s    | the patch passed
+   |  -1  |        javadoc  |  0m 24s    | hbase-client in the patch failed with
+   |      |                 |            | JDK v1.8.0_72.
+   |  -1  |        javadoc  |  0m 36s    | hbase-server in the patch failed with
+   |      |                 |            | JDK v1.8.0_72.
+   |  +1  |        javadoc  |  1m 2s     | the patch passed with JDK v1.7.0_95
+   |  +1  |           unit  |  1m 23s    | hbase-client in the patch passed with
+   |      |                 |            | JDK v1.8.0_72.
+   |  -1  |           unit  |  67m 12s   | hbase-server in the patch failed with
+   |      |                 |            | JDK v1.8.0_72.
+   |  +1  |           unit  |  1m 28s    | hbase-client in the patch passed with
+   |      |                 |            | JDK v1.7.0_95.
+   |  -1  |           unit  |  66m 16s   | hbase-server in the patch failed with
+   |      |                 |            | JDK v1.7.0_95.
+   |  +1  |     asflicense  |  0m 30s    | Patch does not generate ASF License
+   |      |                 |            | warnings.
+   |      |                 |  177m 13s  |
 
 
-                                    Reason | Tests
-         JDK v1.8.0_72 Failed junit tests  |  hadoop.hbase.client.TestMultiParallel
-         JDK v1.7.0_95 Failed junit tests  |  hadoop.hbase.client.TestMultiParallel
+                               Reason | Tests
+    JDK v1.8.0_72 Failed junit tests  |  hadoop.hbase.client.TestMultiParallel
+    JDK v1.7.0_95 Failed junit tests  |  hadoop.hbase.client.TestMultiParallel
 
 
-        || Subsystem || Report/Notes ||
-        ============================================================================
-        | Docker | Client=1.9.1 Server=1.9.1 Image:yetus/hbase:date2016-02-11 |
-        | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12787466/HBASE-1772.patch |
-        | JIRA Issue | HBASE-15198 |
-        | Optional Tests |  asflicense  javac  javadoc  unit  findbugs  hadoopcheck  hbaseanti  checkstyle  compile  |
-        | uname | Linux 67e02eb9aeea 3.13.0-36-lowlatency #63-Ubuntu SMP PREEMPT Wed Sep 3 21:56:12 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux |
-        | Build tool | maven |
-        | Personality | /testptch/patchprocess/precommit/personality/hbase.sh |
-        | git revision | master / 81a6fff |
-        | findbugs | v2.0.1 |
-        | findbugs | /testptch/patchprocess/branch-findbugs-hbase-client-warnings.html |
-        | findbugs | /testptch/patchprocess/branch-findbugs-hbase-server-warnings.html |
-        | javadoc | /testptch/patchprocess/branch-javadoc-hbase-client-jdk1.8.0_72.txt |
-        | javadoc | /testptch/patchprocess/branch-javadoc-hbase-server-jdk1.8.0_72.txt |
-        | javadoc | /testptch/patchprocess/patch-javadoc-hbase-client-jdk1.8.0_72.txt |
-        | javadoc | /testptch/patchprocess/patch-javadoc-hbase-server-jdk1.8.0_72.txt |
-        | unit | /testptch/patchprocess/patch-unit-hbase-server-jdk1.8.0_72.txt |
-        | unit | /testptch/patchprocess/patch-unit-hbase-server-jdk1.7.0_95.txt |
-        | unit test logs |  /testptch/patchprocess/patch-unit-hbase-server-jdk1.8.0_72.txt /testptch/patchprocess/patch-unit-hbase-server-jdk1.7.0_95.txt |
-        | modules | C: hbase-client hbase-server U: . |
-        | Powered by | Apache Yetus 0.7.0   http://yetus.apache.org |
-1. Test Audience Annotations. If you have a downstream project that relies on the audience annotations project, you should be able to install the jars locally and test with the updated verison.
+   || Subsystem || Report/Notes ||
+   ============================================================================
+   | Docker | Client=1.9.1 Server=1.9.1 Image:yetus/hbase:date2016-02-11 |
+   | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12787466/HBASE-1772.patch |
+   | JIRA Issue | HBASE-15198 |
+   | Optional Tests |  asflicense  javac  javadoc  unit  findbugs  hadoopcheck  hbaseanti  checkstyle  compile  |
+   | uname | Linux 67e02eb9aeea 3.13.0-36-lowlatency #63-Ubuntu SMP PREEMPT Wed Sep 3 21:56:12 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux |
+   | Build tool | maven |
+   | Personality | /testptch/patchprocess/precommit/personality/hbase.sh |
+   | git revision | master / 81a6fff |
+   | findbugs | v2.0.1 |
+   | findbugs | /testptch/patchprocess/branch-findbugs-hbase-client-warnings.html |
+   | findbugs | /testptch/patchprocess/branch-findbugs-hbase-server-warnings.html |
+   | javadoc | /testptch/patchprocess/branch-javadoc-hbase-client-jdk1.8.0_72.txt |
+   | javadoc | /testptch/patchprocess/branch-javadoc-hbase-server-jdk1.8.0_72.txt |
+   | javadoc | /testptch/patchprocess/patch-javadoc-hbase-client-jdk1.8.0_72.txt |
+   | javadoc | /testptch/patchprocess/patch-javadoc-hbase-server-jdk1.8.0_72.txt |
+   | unit | /testptch/patchprocess/patch-unit-hbase-server-jdk1.8.0_72.txt |
+   | unit | /testptch/patchprocess/patch-unit-hbase-server-jdk1.7.0_95.txt |
+   | unit test logs |  /testptch/patchprocess/patch-unit-hbase-server-jdk1.8.0_72.txt /testptch/patchprocess/patch-unit-hbase-server-jdk1.7.0_95.txt |
+   | modules | C: hbase-client hbase-server U: . |
+   | Powered by | Apache Yetus 0.7.0   http://yetus.apache.org |
+   ```
 
-        $ mkdir apache-yetus-0.7.0-src_unpack
-        $ tar -C apache-yetus-0.7.0-src_unpack -xzf apache-yetus-0.7.0-src.tar.gz
-        $ cd apache-yetus-0.7.0-src_unpack/yetus-0.7.0
-        $ mvn --batch-mode install
-        ...SNIP...
-        [INFO] ------------------------------------------------------------------------
-        [INFO] BUILD SUCCESS
-        [INFO] ------------------------------------------------------------------------
-        [INFO] Total time: 3.539 s
-        [INFO] Finished at: 2016-02-13T02:12:39-06:00
-        [INFO] Final Memory: 14M/160M
-        [INFO] ------------------------------------------------------------------------
-        $ cd path/to/your/project
-        $ vim pom.xml # edit version to be e.g. 0.7.0
-        $ mvn verify
-        ...SNIP...
-        [INFO] ------------------------------------------------------------------------
-        [INFO] BUILD SUCCESS
-        [INFO] ------------------------------------------------------------------------
-        [INFO] Total time: 7.539 m
-        [INFO] Finished at: 2016-02-13T02:13:39-06:00
-        [INFO] Final Memory: 14M/160M
-        [INFO] ------------------------------------------------------------------------
+1. Test Audience Annotations. If you have a downstream project that relies on the audience annotations project, you should be able to install the jars locally and test with the updated version.
+
+   ```bash
+   $ mkdir apache-yetus-0.7.0-src_unpack
+   $ tar -C apache-yetus-0.7.0-src_unpack -xzf apache-yetus-0.7.0-src.tar.gz
+   $ cd apache-yetus-0.7.0-src_unpack/yetus-0.7.0
+   $ mvn --batch-mode install
+   ...SNIP...
+   [INFO] ------------------------------------------------------------------------
+   [INFO] BUILD SUCCESS
+   [INFO] ------------------------------------------------------------------------
+   [INFO] Total time: 3.539 s
+   [INFO] Finished at: 2016-02-13T02:12:39-06:00
+   [INFO] Final Memory: 14M/160M
+   [INFO] ------------------------------------------------------------------------
+   $ cd path/to/your/project
+   $ vim pom.xml # edit version to be e.g. 0.7.0
+   $ mvn verify
+   ...SNIP...
+   [INFO] ------------------------------------------------------------------------
+   [INFO] BUILD SUCCESS
+   [INFO] ------------------------------------------------------------------------
+   [INFO] Total time: 7.539 m
+   [INFO] Finished at: 2016-02-13T02:13:39-06:00
+   [INFO] Final Memory: 14M/160M
+   [INFO] ------------------------------------------------------------------------
+   ```
 
 ## Cleanup
 
 Once a release candidate obtains majority approval from the PMC, there are several final maintenance tasks you must perform to close out the release.
 
-1. Create shortcut links to the vote thread (e.g., https://s.apache.org/yetus-0.7.0-rc1-vote) and the result (e.g., https://s.apache.org/yetus-0.7.0-vote-passes) that point to the archives on mail-archives.apache.org.  Be aware that it may take several hours for the archive to get the posts that need to be referenced.
-
+1. Create shortcut links to the vote thread (e.g., <https://s.apache.org/yetus-0.7.0-rc1-vote>) and the result (e.g., <https://s.apache.org/yetus-0.7.0-vote-passes>) that point to the archives on mail-archives.apache.org.  Be aware that it may take several hours for the archive to get the posts that need to be referenced.
 1. Produce a signed release tag. You should create a signed tag and push it to the asf repo. The tag's message should include ASF-shortened links to the vote and results. It should be named 'rel/_version_' so that it will be immutable due to ASF infra's git configuration. Presuming we're working on the 0.7.0 release and the RC1 example above has passed:
 
         $ git config --global user.signingkey <your-key-id> # if you've never configured
         $ git tag --sign rel/0.7.0 1e8f4588906a51317207092bd97b35687f2e3fa3
-Example commit message:
+    Example commit message:
 
         YETUS-XXX. tag Apache Yetus 0.7.0 release.
 
         vote thread: https://s.apache.org/yetus-0.7.0-rc1-vote
 
         results: https://s.apache.org/yetus-0.7.0-vote-passes
-Then push:
+    Then push:
 
         $ git push origin rel/0.7.0
 1. Add the release to the ASF reporter tool. To make our project reports for the ASF Board easier, you should include the release in the [Apache Committee Report Helper website](https://reporter.apache.org/addrelease.html?yetus). Be sure to use the date release artifacts first were pushed to the distribution area, which should be the same release date as in JIRA. Note that this website is only available to PMC members. If you are not yet in the PMC, please ask them to add the release information.  Additionally, it will not let you set a future date.
@@ -503,7 +523,7 @@
         $ cp path/to/yetus-dist-dev/0.7.0-RC1/* 0.7.0
         $ svn add 0.7.0
         $ svn commit -m "Publish Apache Yetus 0.7.0"
-It may take up to 24 hours for the artifacts to make their way to the various mirrors. You should not announce the release until after this period.
+    It may take up to 24 hours for the artifacts to make their way to the various mirrors. You should not announce the release until after this period.
 1. Remove candidates from the staging area. Once you have moved the artifacts into the distribution area, they no longer need to be in the staging area and should be cleaned up as a courtesy to future release managers.
 
         $ svn co https://dist.apache.org/repos/dist/dev/yetus/ yetus-dist-dev
@@ -534,32 +554,38 @@
 1. Go to the [ASF repository](https://repository.apache.org/) and click 'Release' to put the RC Maven artifacts into the release repository.
 1. Mark JIRA version as released. Browse to the [project version management page for the YETUS JIRA tracker](https://issues.apache.org/jira/plugins/servlet/project-config/YETUS/versions). Mouse over the version you are managing, click on the gear in the far right and select Release.
 1. Delete staging branch. Now that there is an immutable tag for the release, all commits leading up to that release will be maintained by git. Should we need a future maintenance release after this version, we can reestablish the branch based off of the release tag.
-
         $ git push origin :YETUS-XXX
 1. Update the Mac OS X Homebrew Formula:
 
-        $ vim Formula/yetus.rb
-        $ # change URL point to the new version
-        $ # update the sha256. e.g., shasum -a 256 bin.gz
-        $ # test the formula:
-        $ brew install --build-from-source Formula/yetus.rb
+   ```bash
+   $ vim Formula/yetus.rb
+   $ # change URL point to the new version
+   $ # update the sha256. e.g., shasum -a 256 bin.gz
+   $ # test the formula:
+   $ brew install --build-from-source Formula/yetus.rb
+   ```
+
 1. Update the documentation in the git master branch for the new release.  Remove the oldest release and add the latest.
 
-        $ cd asf-site-src
-        $ # Add the release to the releases data file
-        $ vim data/versions.yml
-        $ vim pom.xml
-        $ # add the two stanzas
-        $ git add -p
-        $ git add asf-site-src/pom.xml
-        $ git commit
-Example commit message:
+   ```bash
+   $ cd asf-site-src
+   $ # Add the release to the releases data file
+   $ vim data/versions.yml
+   $ vim pom.xml
+   $ # add the two stanzas
+   $ git add -p
+   $ git add asf-site-src/pom.xml
+   $ git commit
+   ```
 
-        YETUS-XXX. add release 0.7.0.
+   - Example commit message:
 
-            - list in releases
-            - remove 0.4.0, add 0.7.0 to pom.xml
+   ```text
+   YETUS-XXX. add release 0.7.0.
 
+   - list in releases
+   - remove 0.4.0, add 0.7.0 to pom.xml
+   ```
 
 1. You should then post this patch for review. Once you've gotten feedback, it's fine to push the patch to the ASF source repo immediately so long as the updated website is not published.
 1. Publish website updates. After the 24 hour window needed for the release artifacts to make their way to the variety of mirrors, you should render the website and publish it using the instructions found in [Maintaining the Yetus Website](../website).
@@ -624,11 +650,11 @@
         --
         Meg Smith
         Apache Yetus PMC
-If you'd like feedback on the draft, feel free to post it for review on your release issue.
+    If you'd like feedback on the draft, feel free to post it for review on your release issue.
 1. Send announcement emails. After the 24 hour window needed for the release artifacts to make their way to the variety of mirrors, you should send the announcement email. The email should come from your apache.org email address and at a minimum should go to the dev@yetus.apache.org and announce@apache.org lists. For details see [the ASF Release Policy section How Should Releases Be Announced?](https://www.apache.org/dev/release.html#release-announcements). Additionally, you may want to send the announcement to the development lists of downstream projects we know are using Yetus components.
 1. Send tweet. Once the message to the ASF-wide announce list has made it to the public archive, you should draft a tweet with a link to the announcement. You should use the ASF link shortener and a descriptive name. For example, the 0.7.0 release could use
 
         Apache Yetus 0.7.0 has been released:
 
         https://s.apache.org/yetus-0.7.0-announce
-This tweet should come from the official [@ApacheYetus](https://twitter.com/ApacheYetus/) account. Currently, only PMC members have access to it. If you are not yet on the PMC, please ask for the PMC to post the tweet once your email is available in the archives.
+    This tweet should come from the official [@ApacheYetus](https://twitter.com/ApacheYetus/) account. Currently, only PMC members have access to it. If you are not yet on the PMC, please ask for the PMC to post the tweet once your email is available in the archives.
diff --git a/asf-site-src/source/contribute/website.md b/asf-site-src/source/contribute/website.md
index c2f24a2..a5e0578 100644
--- a/asf-site-src/source/contribute/website.md
+++ b/asf-site-src/source/contribute/website.md
@@ -19,6 +19,16 @@
 
 # Maintaining the Yetus Website
 
+<!-- MarkdownTOC levels="1,2" autolink="true" -->
+
+* [Make changes in asf-site-src/source](#make-changes-in-asf-site-srcsource)
+* [Make changes to API Docs](#make-changes-to-api-docs)
+* [Generating the website](#generating-the-website)
+* [Live Development](#live-development)
+* [Publishing the Site](#publishing-the-site)
+
+<!-- /MarkdownTOC -->
+
 We use [Middleman](https://middlemanapp.com/) to generate the website content from markdown and other
 dynamic templates.If you're interested in digging into how our site makes use of Middleman, or if you run into a problem, you should start
 by reading [Middleman's excellent documentation](https://middlemanapp.com/basics/install/).
@@ -27,16 +37,18 @@
 
     NOTE: You MUST have run `mvn install` at least once prior to running `mvn site`.
 
-The following steps assume you have a working ruby 2.x environment setup:
+The following steps assume you have a working ruby 2.3+ environment setup:
 
 ```bash
 $ sudo gem install bundler
 $ cd asf-site-src
 $ bundle install
 ```
-and a working python 2.x environment for [releasedocmaker](../in-progress/releasedocmaker/).
+
+and a working Python 2.7 environment for [releasedocmaker](../in-progress/releasedocmaker/).
 
 ## Make changes in asf-site-src/source
+
 Make any changes in the source directory:
 
 ```bash
@@ -45,6 +57,7 @@
 ```
 
 ## Make changes to API Docs
+
 Optionally, you can update the generated API docs from other parts of the project. If they have been updated then the middleman build will pick up the changes.
 
 e.g. Precommit changes will be picked up by the Middleman build.
@@ -55,6 +68,7 @@
 ```
 
 ## Generating the website
+
 To generate the static website for Apache Yetus run the following command at the root directory:
 
 ```bash
@@ -69,6 +83,7 @@
 ```
 
 ## Live Development
+
 Live development of the site enables automatic reload when changes are saved.
 To enable, run the following commands and then open a browser and navigate to
 [http://localhost:4567](http://localhost:4567/)
@@ -79,6 +94,7 @@
 ```
 
 ## Publishing the Site
+
 Commit the publish directory to the asf-site branch. Presuming we start in a directory that holds your normal Yetus check out:
 
 ```bash
diff --git a/asf-site-src/source/documentation/in-progress/interface-classification.md b/asf-site-src/source/documentation/in-progress/interface-classification.md
index b40e8b3..6f1a9dc 100644
--- a/asf-site-src/source/documentation/in-progress/interface-classification.md
+++ b/asf-site-src/source/documentation/in-progress/interface-classification.md
@@ -12,38 +12,45 @@
   limitations under the License. See accompanying LICENSE file.
 -->
 
-Apache Yetus Interface Taxonomy: Audience and Stability Classification
-================================================================
+# Apache Yetus Interface Taxonomy: Audience and Stability Classification
 
-Motivation
-----------
+<!-- MarkdownTOC levels="1,2,3" autolink="true" -->
 
-The interface taxonomy classification provided by Apache Yetus annotations is for guidance to
-developers and users of interfaces. The classification guides a developer to
-declare the targeted audience or users of an interface and also its stability.
+* [Motivation](#motivation)
+* [Interface Classification](#interface-classification)
+  * [Audience](#audience)
+    * [Private](#private)
+    * [Limited-Private](#limited-private)
+    * [Public](#public)
+  * [Stability](#stability)
+    * [Stable](#stable)
+    * [Evolving](#evolving)
+    * [Deprecated](#deprecated)
+* [How are the Classifications Recorded](#how-are-the-classifications-recorded)
+* [FAQ](#faq)
+
+<!-- /MarkdownTOC -->
+
+# Motivation
+
+The interface taxonomy classification provided by Apache Yetus annotations is for guidance to developers and users of interfaces. The classification guides a developer to declare the targeted audience or users of an interface and also its stability.
 
 * Benefits to the user of an interface: Knows which interfaces to use or not use and their stability.
 
 * Benefits to the developer: to prevent accidental changes of interfaces and
   hence accidental impact on users or other components or system. This is
-  particularly useful in large systems with many developers who may not all have
-  a shared state/history of the project.
+  particularly useful in large systems with many developers who may not all have a shared state/history of the project.
 
-Interface Classification
-------------------------
+# Interface Classification
 
 Yetus provides the following interface classification, derived from the
 [OpenSolaris taxonomy](http://web.archive.org/web/20061013114610/http://opensolaris.org/os/community/arc/policies/interface-taxonomy/)
 and, to some extent, from taxonomy used inside Yahoo.
 Interfaces have two main attributes: Audience and Stability
 
-### Audience
+## Audience
 
-Audience denotes the potential consumers of the interface. While many interfaces
-are internal/private to the implementation, others are public/external interfaces
-and are meant for wider consumption by applications and/or clients. For example,
-POSIX definitions in libc are external, while large parts of the kernel are internal or private interfaces.
-Also, some interfaces are targeted towards other specific subsystems.
+Audience denotes the potential consumers of the interface. While many interfaces are internal/private to the implementation, others are public/external interfaces and are meant for wider consumption by applications and/or clients. For example, POSIX definitions in libc are external, while large parts of the kernel are internal or private interfaces. Also, some interfaces are targeted towards other specific subsystems.
 
 Identifying the audience of an interface helps define the impact of breaking
 it. For instance, it might be okay to break the compatibility of an interface
@@ -53,38 +60,36 @@
 
 Yetus uses the following kinds of audience in order of increasing/wider visibility:
 
-#### Private
+### Private
 
 The interface is for internal use within a project(such as Apache Hadoop)
 and should not be used by applications or by other projects. It is subject to
-change at anytime without notice. Most interfaces of a project are Private (also
-referred to as project-private).
+change at anytime without notice. Most interfaces of a project are Private (also referred to as project-private).
 
-#### Limited-Private
+### Limited-Private
 
 The interface is used by a specified set of projects or systems (typically
 closely related projects). Other projects or systems should not use the
 interface. Changes to the interface will be communicated/ negotiated with the
-specified projects. For example, in the Apache Hadoop project, some interfaces are
-LimitedPrivate{HDFS, MapReduce} in that they are private to the HDFS and
+specified projects. For example, in the Apache Hadoop project, some interfaces are LimitedPrivate{HDFS, MapReduce} in that they are private to the HDFS and
 MapReduce subprojects.
 
-#### Public
+### Public
 
 The interface is for general use by any application.
 
-### Stability
+## Stability
 
 Stability denotes how stable an interface is, as in when incompatible changes to
 the interface are allowed. Yetus provides the following levels of stability.
 
-#### Stable
+### Stable
 
 Can evolve while retaining compatibility for minor release boundaries; in other
 words, incompatible changes to APIs marked Stable are generally  only allowed
 at major releases (i.e. at m.0).
 
-#### Evolving
+### Evolving
 
 Evolving, but incompatible changes are allowed at minor release (i.e. m .x)
 
@@ -100,111 +105,90 @@
 Examples of publicly visible interfaces that are unstable
 (i.e. not-an-interface): GUI, CLIs whose output format will change
 
-#### Deprecated
+### Deprecated
 
 APIs that could potentially be removed in the future and should not be used.
 
-How are the Classifications Recorded
--------------------------------------
-
+# How are the Classifications Recorded
 
 [//]: # (This section needs improvement. Refer YETUS-458)
 
-
 How should the classification be recorded for the annotated APIs?
 
 * Each interface or class will have the audience and stability recorded using
   annotations in org.apache.yetus.classification package.
-
 * The javadoc generated by the maven target javadoc:javadoc lists only the public API.
-
-* One can derive the audience of java classes and java interfaces by the
+* One can derive the audience of Java classes and Java interfaces by the
   audience of the package in which they are contained. Hence it is useful to
-  declare the audience of each java package as public or private (along with the
-  private audience variations).
+  declare the audience of each Java package as public or private (along with the private audience variations).
 
-FAQ
----
+# FAQ
 
-* Why aren't the java scopes (private, package private and public) good enough?
-    * Java's scoping is not very complete. One is often forced to make a class
-      public in order for other internal components to use it. It does not have
-      friends or sub-package-private like C++.
-
-* But I can easily access a private implementation interface if it is Java public.
-  Where is the protection and control?
-    * The purpose of this is not providing absolute access control. Its purpose
-      is to communicate to users and developers. One can access private
-      implementation functions in libc; however if they change the internal
-      implementation details, your application will break and you will have
-      little sympathy from the folks who are supplying libc. If you use a
-      non-public interface you understand the risks.
-
+* Why aren't the Java scopes (private, package private and public) good enough?
+  * Java's scoping is not very complete. One is often forced to make a class public in order for other internal components to use it. It does not have friends or sub-package-private like C++.
+* But I can easily access a private implementation interface if it is Java public. Where is the protection and control?
+  * The purpose of this is not providing absolute access control. Its purpose
+    is to communicate to users and developers. One can access private
+    implementation functions in libc; however if they change the internal
+    implementation details, your application will break and you will have
+    little sympathy from the folks who are supplying libc. If you use a
+    non-public interface you understand the risks.
 * Why bother declaring the stability of a private interface?
   Aren't private interfaces always unstable?
-    * Private interfaces are not always unstable. In the cases where they are
-      stable they capture internal properties of the system and can communicate
-      these properties to its internal users and to developers of the interface.
-        * e.g. In HDFS, NN-DN protocol is private but stable and can help
-          implement rolling upgrades. It communicates that this interface should
-          not be changed in incompatible ways even though it is private.
-        * e.g. In HDFS, FSImage stability can help provide more flexible roll backs.
-
-* What is the harm in applications using a private interface that is stable? How
-  is it different than a public stable interface?
-    * While a private interface marked as stable is targeted to change only at
-      major releases, it may break at other times if the providers of that
-      interface are willing to changes the internal users of that
-      interface. Further, a public stable interface is less likely to break even
-      at major releases (even though it is allowed to break compatibility)
-      because the impact of the change is larger. If you use a private interface
-      (regardless of its stability) you run the risk of incompatibility.
-
-* Why bother with Limited-private? Isn't it giving special treatment to some projects?
-  That is not fair.
-    * First, most interfaces should be public or private; actually let us state
-      it even stronger: make it private unless you really want to expose it to
-      public for general use.
-    * Limited-private is for interfaces that are not intended for general
-      use. They are exposed to related projects that need special hooks. Such a
-      classification has a cost to both the supplier and consumer of the limited
-      interface. Both will have to work together if ever there is a need to
-      break the interface in the future; for example the supplier and the
-      consumers will have to work together to get coordinated releases of their
-      respective projects. This should not be taken lightly - if you can get
-      away with private then do so; if the interface is really for general use
-      for all applications then you should consider making it public. But remember
-      that making an interface public has huge responsibility. Sometimes
-      Limited-private is just right.
-    * A good example of a limited-private interface is BlockLocations in the Apache
-      Hadoop Project, This is fairly low-level interface that they are willing to
-      expose to MR and perhaps HBase. They are likely to change it down the road
-      and at that time they will have to get a coordinated effort with the MR
-      team to release matching releases. While MR and HDFS are always released
-      in sync today, they may change down the road.
-    * If you have a limited-private interface with many projects listed then you
-      are fooling yourself. It is practically public.
-    * It might be worth declaring a special audience classification called
-      {YourProjectName}-Private for your closely related projects.
-
-* Can't a private interface be treated as project-private also? For example what is
-  the harm in projects in the Apache Hadoop extended ecosystem, having access to
-  private classes?
-    * Do we want MR accessing class files that are implementation details inside
-      HDFS? There used to be many such layer violations in the Apache Hadoop
-      project that they have been cleaning up over the last few years. It is highly
-      undesirable for such layer violations to creep back in by no separation
-      between the major components like HDFS and MR.
-
+  * Private interfaces are not always unstable. In the cases where they are
+    stable they capture internal properties of the system and can communicate
+    these properties to its internal users and to developers of the interface.
+    * e.g. In HDFS, NN-DN protocol is private but stable and can help
+      implement rolling upgrades. It communicates that this interface should
+      not be changed in incompatible ways even though it is private.
+    * e.g. In HDFS, FSImage stability can help provide more flexible roll backs.
+* What is the harm in applications using a private interface that is stable? How is it different than a public stable interface?
+  * While a private interface marked as stable is targeted to change only at
+    major releases, it may break at other times if the providers of that
+    interface are willing to changes the internal users of that
+    interface. Further, a public stable interface is less likely to break even
+    at major releases (even though it is allowed to break compatibility)
+    because the impact of the change is larger. If you use a private interface
+    (regardless of its stability) you run the risk of incompatibility.
+* Why bother with Limited-private? Isn't it giving special treatment to some projects? That is not fair.
+  * First, most interfaces should be public or private; actually let us state
+    it even stronger: make it private unless you really want to expose it to
+    public for general use.
+  * Limited-private is for interfaces that are not intended for general
+    use. They are exposed to related projects that need special hooks. Such a
+    classification has a cost to both the supplier and consumer of the limited
+    interface. Both will have to work together if ever there is a need to
+    break the interface in the future; for example the supplier and the
+    consumers will have to work together to get coordinated releases of their
+    respective projects. This should not be taken lightly - if you can get
+    away with private then do so; if the interface is really for general use
+    for all applications then you should consider making it public. But remember
+    that making an interface public has huge responsibility. Sometimes
+    Limited-private is just right.
+  * A good example of a limited-private interface is BlockLocations in the Apache
+    Hadoop Project, This is fairly low-level interface that they are willing to
+    expose to MR and perhaps HBase. They are likely to change it down the road
+    and at that time they will have to get a coordinated effort with the MR
+    team to release matching releases. While MR and HDFS are always released
+    in sync today, they may change down the road.
+  * If you have a limited-private interface with many projects listed then you are fooling yourself. It is practically public.
+  * It might be worth declaring a special audience classification called
+    {YourProjectName}-Private for your closely related projects.
+* Can't a private interface be treated as project-private also? For example what is the harm in projects in the Apache Hadoop extended ecosystem, having access to private classes?
+  * Do we want MR accessing class files that are implementation details inside
+    HDFS? There used to be many such layer violations in the Apache Hadoop
+    project that they have been cleaning up over the last few years. It is highly
+    undesirable for such layer violations to creep back in by no separation
+    between the major components like HDFS and MR.
 * Aren't all public interfaces stable?
-    * One may mark a public interface as evolving in its early days. Here one is
-      promising to make an effort to make compatible changes but may need to
-      break it at minor releases.
-    * One example of a public interface that is unstable is where one is
-      providing an implementation of a standards-body based interface that is
-      still under development. For example, many companies, in an attempt to be
-      first to market, have provided implementations of a new NFS protocol even
-      when the protocol was not fully completed by IETF. The implementor cannot
-      evolve the interface in a fashion that causes least disruption because
-      the stability is controlled by the standards body. Hence it is appropriate
-      to label the interface as unstable.
+  * One may mark a public interface as evolving in its early days. Here one is
+    promising to make an effort to make compatible changes but may need to
+    break it at minor releases.
+  * One example of a public interface that is unstable is where one is
+    providing an implementation of a standards-body based interface that is
+    still under development. For example, many companies, in an attempt to be
+    first to market, have provided implementations of a new NFS protocol even
+    when the protocol was not fully completed by IETF. The implementor cannot
+    evolve the interface in a fashion that causes least disruption because
+    the stability is controlled by the standards body. Hence it is appropriate
+    to label the interface as unstable.
diff --git a/asf-site-src/source/documentation/in-progress/precommit-admin.md b/asf-site-src/source/documentation/in-progress/precommit-admin.md
index 49f13eb..2ce844a 100644
--- a/asf-site-src/source/documentation/in-progress/precommit-admin.md
+++ b/asf-site-src/source/documentation/in-progress/precommit-admin.md
@@ -17,8 +17,14 @@
   under the License.
 -->
 
-Overview
-========
+# Overview
+
+<!-- MarkdownTOC levels="1,2" autolink="true" -->
+
+* [Project-Specifc Builds](#project-specifc-builds)
+* [Jenkins Job Tokens](#jenkins-job-tokens)
+
+<!-- /MarkdownTOC -->
 
 The jenkins-admin script is an automated way to submit JIRA issues to the Apache Yetus precommit testing framework.  It works by:
 
@@ -40,14 +46,13 @@
 
 The very first run of the job should be done with the `--initialize` parameter to create the first `patch_tested.txt` file.  Otherwise, the job will fail because a previous version of it cannot be downloaded from previous runs.
 
-Project-Specifc Builds
-=======================
+# Project-Specifc Builds
 
 New builds are started via buildWithParameters call. Three parameters are added to the URL:
 
-    * token = Jenkins security token (see below)
-    * ISSUE\_NUM = JIRA issue number
-    * ATTACHMENT\_ID = JIRA attachment id
+* token = Jenkins security token (see below)
+* ISSUE\_NUM = JIRA issue number
+* ATTACHMENT\_ID = JIRA attachment id
 
  By default, the Jenkins job name is expected to be `PreCommit-{project}`, where the project name matches the JIRA project name. Using the JIRA issue YETUS-1 with an attachment number of 2345 would result in the following URL:
 
@@ -55,7 +60,9 @@
 
  The `{JENKINS_URL}` can be overridden on a per project basis using the `--jenkins-url-override` option.  This parameter allows for one job on one Jenkins server to direct different projects to different Jenkins servers.  For example:
 
+```bash
    jenkins-admin --jenkins-url-override=PROJ1=https://example.com/1 --jenkins-url-override=PROJ2=https://example.com/1
+```
 
 would send all PROJ1 Jenkins jobs to the first URL and all PROJ2 jobs to the second URL.  The `--jenkins-url-override` option may be listed as many times as necessary.
 
@@ -63,21 +70,20 @@
 
    .../job/PreCommit-YETUS-Build/buildwithParameters?...
 
-Jenkins Job Tokens
-==================
+# Jenkins Job Tokens
 
 Currently, jenkins-admin supports the usage of Jenkins tokens for authentication via the `--jenkins-token` option.  This option provides two ways to do tokens
 
-  * Flat tokens
-  * Template tokens
+* Flat tokens
+* Template tokens
 
 Flat tokens are a simple string.  For example, `--jenkins-tokens=yetus` would require the `yetus` string to be listed as the token in the Jenkins job configuration that is being requested.
 
 On the other hand, template tokens perform some simple string substitution before being used. This exchange includes:
 
-  * {project} for the JIRA project name
-  * {issue} for the JIRA issue number
-  * {attachment} for the JIRA issue attachment id
+* {project} for the JIRA project name
+* {issue} for the JIRA issue number
+* {attachment} for the JIRA issue attachment id
 
 For example, if JIRA issue YETUS-1 has an attachment of 2345, then `{project}` becomes `YETUS`, `{issue}` becomes `1`, and `{attachment}` becomes 2345.
 
diff --git a/asf-site-src/source/documentation/in-progress/precommit-advanced.md b/asf-site-src/source/documentation/in-progress/precommit-advanced.md
index 98a8fd9..4e5a68e 100644
--- a/asf-site-src/source/documentation/in-progress/precommit-advanced.md
+++ b/asf-site-src/source/documentation/in-progress/precommit-advanced.md
@@ -17,14 +17,25 @@
   under the License.
 -->
 
-test-patch
-==========
+# Advanced Precommit
 
-* [Process Reaper](#test-reaper)
+<!-- MarkdownTOC levels="1,2" autolink="true" -->
+
+* [Process Reaper](#process-reaper)
 * [Plug-ins](#plug-ins)
+  * [Common Plug-in Functions](#common-plug-in-functions)
+  * [Plug-in Importation](#plug-in-importation)
+  * [Test Plug-ins](#test-plug-ins)
 * [Personalities](#personalities)
+  * [Configuring for Other Projects](#configuring-for-other-projects)
+  * [Global Definitions](#global-definitions)
+  * [Test Determination](#test-determination)
+  * [Module & Profile Determination](#module--profile-determination)
+  * [Enabling Plug-ins](#enabling-plug-ins)
 * [Important Variables](#important-variables)
 
+<!-- /MarkdownTOC -->
+
 # Process Reaper
 
 A common problem is the 'stuck' unit test. If bash v4.0 or higher is in use, Apache Yetus may be told to turn on the process reaper functionality.  Using the `--reapearmode` option, this feature may be configured to either report and even kill left over processes that match provided regular expressions.
@@ -58,32 +69,31 @@
     HINT: It is recommended to make the pluginname relatively small, 10 characters at the most.  Otherwise, the ASCII output table may be skewed.
 
 * pluginname\_usage
-    - executed when the help message is displayed. This is used to display the plug-in specific options for the user.
+  * executed when the help message is displayed. This is used to display the plug-in specific options for the user.
 
 * pluginname\_parse\_args
-    - executed prior to any other above functions except for pluginname\_usage. This is useful for parsing the arguments passed from the user and setting up the execution environment.
+  * executed prior to any other above functions except for pluginname\_usage. This is useful for parsing the arguments passed from the user and setting up the execution environment.
 
 * pluginname\_initialize
-    - After argument parsing and prior to any other work, the initialize step allows a plug-in to do any precursor work, set internal defaults, etc.
+  * After argument parsing and prior to any other work, the initialize step allows a plug-in to do any precursor work, set internal defaults, etc.
 
 * pluginname\_docker\_support
-    - Perform any necessary setup to configure Docker support for the given plugin.  Typically this means adding parameters to the docker run command line via adding to the DOCKER\_EXTRAARGS array.
+  * Perform any necessary setup to configure Docker support for the given plugin.  Typically this means adding parameters to the docker run command line via adding to the DOCKER\_EXTRAARGS array.
 
 * pluginname\_precheck
-    - executed prior to the patch being applied but after the git repository is setup.  Returning a fail status here will exit test-patch.
+  * executed prior to the patch being applied but after the git repository is setup.  Returning a fail status here will exit test-patch.
 
 * pluginname\_patchfile
-    - executed prior to the patch being applied but after the git repository is setup. This step is intended to perform tests on the content of the patch itself.
+  * executed prior to the patch being applied but after the git repository is setup. This step is intended to perform tests on the content of the patch itself.
 
 * pluginname\_precompile
-    - executed prior to the compilation part of the lifecycle. This is useful for doing setup work required by the compilation process.
+  * executed prior to the compilation part of the lifecycle. This is useful for doing setup work required by the compilation process.
 
 * pluginname\_postcompile
-    - This step happens after the compile phase.
+  * This step happens after the compile phase.
 
 * pluginname\_rebuild
-    - Any non-unit tests that require the source to be rebuilt in a destructive way should be run here.
-
+  * Any non-unit tests that require the source to be rebuilt in a destructive way should be run here.
 
 ## Plug-in Importation
 
@@ -101,29 +111,27 @@
 
 Plug-ins geared towards independent tests are registered via:
 
-
 ```bash
 add_test_type <pluginname>
 ```
 
-+ pluginname\_filefilter
-    - executed while determining which files trigger which tests.  This function should use `add_test pluginname` to add the plug-in to the test list.
+* pluginname\_filefilter
+  * executed while determining which files trigger which tests.  This function should use `add_test pluginname` to add the plug-in to the test list.
 
 * pluginname\_compile
-    - executed immediately after the actual compilation. This step is intended to be used to verify the results and add extra checking of the compile phase and it's stdout/stderr.
+  * executed immediately after the actual compilation. This step is intended to be used to verify the results and add extra checking of the compile phase and it's stdout/stderr.
 
 * pluginname\_tests
-    - executed after the unit tests have completed.
+  * executed after the unit tests have completed.
 
 * pluginname\_clean
-    - executed to allow the plugin to remove all files that have been generate by this plugin.
+  * executed to allow the plugin to remove all files that have been generate by this plugin.
 
 * pluginname\_logfilter
-    - This functions should filter all lines relevant to this test from the logfile. It is called in preparation for the `calcdiffs` function.
+  * This functions should filter all lines relevant to this test from the logfile. It is called in preparation for the `calcdiffs` function.
 
 * pluginname\_calcdiffs
-
-    - This allows for custom log file difference calculation used to determine the before and after views.  The default is to use the last column of a colon delimited line of output and perform a diff.  If the plug-in does not provide enough context, this may result in error skew. For example, if three lines in a row have "Missing period." as the error, test-patch will not be able to determine exactly which line caused the error.  Plug-ins that have this issue will want to use this or potentially modify the normal tool's output (e.g., checkstyle) to provide a more accurate way to determine differences.
+  * This allows for custom log file difference calculation used to determine the before and after views.  The default is to use the last column of a colon delimited line of output and perform a diff.  If the plug-in does not provide enough context, this may result in error skew. For example, if three lines in a row have "Missing period." as the error, test-patch will not be able to determine exactly which line caused the error.  Plug-ins that have this issue will want to use this or potentially modify the normal tool's output (e.g., checkstyle) to provide a more accurate way to determine differences.
 
   NOTE: If the plug-in has support for maven, the maven_add_install `pluginname` should be executed. See more information in Custom Maven Tests in the build tool documentation.
 
diff --git a/asf-site-src/source/documentation/in-progress/precommit-basic.md b/asf-site-src/source/documentation/in-progress/precommit-basic.md
index 880a388..67a6b3a 100644
--- a/asf-site-src/source/documentation/in-progress/precommit-basic.md
+++ b/asf-site-src/source/documentation/in-progress/precommit-basic.md
@@ -17,8 +17,7 @@
   under the License.
 -->
 
-test-patch
-==========
+# Basic Precommit
 
 <!-- MarkdownTOC levels="1,2" autolink="true" -->
 
@@ -114,15 +113,16 @@
 * [Apache Creadur Rat](http://creadur.apache.org/rat/) entries in build system
 * [checkstyle](http://checkstyle.sourceforge.net/) entries in build system (ant and maven only)
 * [FindBugs](http://findbugs.sourceforge.net/) entries in build system and 3.x executables
-  - NOTE: only one of FindBugs or SpotBugs may be used at a time.
-* [SpotBugs](https://spotbugs.github.io/)) entries in build system and 3.x executables
-  - NOTE: only one of FindBugs or SpotBugs may be used at a time.
+  * NOTE: only one of FindBugs or SpotBugs may be used at a time.
 * [jshint](https://jshint.com) installed
 * [hadolint](https://github.com/hadolint/hadolint) installed
+* [markdownlint-cli](https://github.com/igorshubovych/markdownlint-cli) installed
 * [Perl::Critic](http://perlcritic.com/) installed
 * [pylint](http://www.pylint.org/) installed
 * [rubocop](http://batsov.com/rubocop/) installed
 * [shellcheck](https://github.com/koalaman/shellcheck) installed, preferably 0.3.6 or higher
+*[SpotBugs](https://spotbugs.github.io/)) entries in build system and 3.x executables
+  * NOTE: only one of FindBugs or SpotBugs may be used at a time.
 * [yamllint](https://github.com/adrienverge/yamllint) installed
 
 # First Steps
@@ -162,7 +162,7 @@
 
 You should see output similar to this:
 
-```
+```text
 BUILDTOOLS:
   ant autoconf cmake gradle make maven nobuild
 TESTTYPES:
@@ -321,7 +321,6 @@
 
 ... will process MR #3 on the \_a\_\_w\_/yetus repo.
 
-
 ## Generic URLs
 
 Luckily, `test-patch` supports ways to provide unified diffs via URLs.
@@ -366,7 +365,6 @@
 
   NOTE: The actual implementation of this feature is dependent upon the version of Bash.  For bash v4 and higher (most operating systems), the fork bomb protection is generally only used for the build and QA tools.  This means Apache Yetus should continue to function. For earlier versions of bash (e.g., OS X), the limit is applied to all of test-patch. If the limit is hit, Apache Yetus will itself likely crash.
 
-
 # MultiJDK
 
 For many projects, it is useful to test Java code against multiple versions of JDKs at the same time.  In combination with the `java` plug-in, `test-patch` can do this with the `--multijdkdirs` option:
@@ -383,7 +381,7 @@
 
 `test-patch` also has a built-in mode (i.e., no plug-in required) to utilize Docker:
 
-```bash
+```diff
 <<<<<<< HEAD
 $ test-patch (other options) --docker
 =======
@@ -393,7 +391,6 @@
 
 This command will do some preliminary setup and then re-execute itself inside a Docker container.  For more information on how to provide a custom Dockerfile and other Docker-specific features, see the specific [precommit Docker support](../precommit-docker) page and the [Apache Yetus Docker Hub Images](/yetus-docker-image) page for more information on the convenience Docker images.
 
-
 # In Closing
 
 `test-patch` has many other features and command line options for the basic user.  Many of these are self-explanatory.  To see the list of options, run `test-patch` without any options or with `--help`.
diff --git a/asf-site-src/source/documentation/in-progress/precommit-bugsystems.md b/asf-site-src/source/documentation/in-progress/precommit-bugsystems.md
index d1f3dcc..ea49e5d 100644
--- a/asf-site-src/source/documentation/in-progress/precommit-bugsystems.md
+++ b/asf-site-src/source/documentation/in-progress/precommit-bugsystems.md
@@ -17,8 +17,16 @@
   under the License.
 -->
 
-Bug System Support
-==================
+# Bug System Support
+
+<!-- MarkdownTOC levels="1,2" autolink="true" -->
+
+* [Bugzilla Specific](#bugzilla-specific)
+* [GitHub Specific](#github-specific)
+* [GitLab Specific](#gitlab-specific)
+* [JIRA Specific](#jira-specific)
+
+<!-- /MarkdownTOC -->
 
 test-patch has the ability to support multiple bug systems.  Bug tools have some extra hooks to fetch patches, line-level reporting, and posting a final report. Every bug system plug-in must have one line in order to be recognized:
 
@@ -27,28 +35,22 @@
 ```
 
 * pluginname\_locate\_patch
-
-    - Given input from the user, download the patch if possible.
+  * Given input from the user, download the patch if possible.
 
 * pluginname\_determine\_branch
-
-    - Using any heuristics available, return the branch to process, if possible.
+  * Using any heuristics available, return the branch to process, if possible.
 
 * pluginname\_determine\_issue
-
-    - Using any heuristics available, set the issue, bug number, etc, for this bug system, if possible.  This is typically used to fill in supplementary information in the final output table.
+  * Using any heuristics available, set the issue, bug number, etc, for this bug system, if possible.  This is typically used to fill in supplementary information in the final output table.
 
 * pluginname\_write\_comment
-
-    - Given text input, write this output to the bug system as a comment.  NOTE: It is the bug system's responsibility to format appropriately.
+  * Given text input, write this output to the bug system as a comment.  NOTE: It is the bug system's responsibility to format appropriately.
 
 * pluginname\_linecomments
-
-    - This function allows for the system to write specific comments on specific lines if the bug system supports code review comments.
+  * This function allows for the system to write specific comments on specific lines if the bug system supports code review comments.
 
 * pluginname\_finalreport
-
-    - Write the final result table to the bug system.
+  * Write the final result table to the bug system.
 
 # Bugzilla Specific
 
@@ -60,13 +62,13 @@
 
 ... will pull down Bugzilla ID #4.
 
-Using the `--bugzilla-base-url` on the command line or BUGZILLA\_BASE\_URL in a project's personality will define the location of the Bugzilla instance.  By default, it is https://bz.apache.org/bugzilla .
+Using the `--bugzilla-base-url` on the command line or BUGZILLA\_BASE\_URL in a project's personality will define the location of the Bugzilla instance.  By default, it is <https://bz.apache.org/bugzilla>.
 
 # GitHub Specific
 
 GitHub supports the full range of functionality, including putting comments on individual lines.  Be aware, however, that `test-patch` will (generally) require that GitHub PRs be fully squashed and rebased (i.e., a single commit) in many circumstances.
 
-By default, the GitHub plug-in assumes that https://github.com is the base URL for GitHub.  Enterprise users may override this with the `--github-base-url` for the normal web user interface and `--github-api-url` for the API URL.  Personalities may use GITHUB\_API\_URL and GITHUB\_BASE\_URL.
+By default, the GitHub plug-in assumes that <https://github.com> is the base URL for GitHub.  Enterprise users may override this with the `--github-base-url` for the normal web user interface and `--github-api-url` for the API URL.  Personalities may use GITHUB\_API\_URL and GITHUB\_BASE\_URL.
 
 The specific repository on GitHub is defined with either `--github-repo` on the command line or GITHUB\_REPO in a personality.  It should take the form of "user/repo".
 
@@ -81,8 +83,8 @@
 
 GitHub pull requests may be directly processed on the command line in two ways:
 
-  * GH:(PR number)
-  * GHSHA:(PR SHA1 number)
+* GH:(PR number)
+* GHSHA:(PR SHA1 number)
 
 The GitHub bugsystem plugin will attempt to download the unified diff that the pull request references.
 Pull requests that are made off of a specific branch will switch the test repo to that branch, if permitted.  If the pull request references a JIRA issue that matches the given JIRA issue regexp in the Subject, the JIRA plug-in will also be invoked as needed.
@@ -91,17 +93,16 @@
 
 GitLab supports the full range of functionality, including putting comments on individual lines.  Be aware, however, that `test-patch` will (generally) require that GitLab MRs be fully squashed and rebased (i.e., a single commit) in many circumstances.
 
-By default, the GitLab plug-in assumes that https://gitlab.com is the base URL for GitHub.  Enterprise users may override this with the `--gitlab-base-url` for the normal web user interface and `--gitlab-api-url` for the API URL.  Personalities may use GITLAB\_API\_URL and GITLAB\_BASE\_URL.
+By default, the GitLab plug-in assumes that <https://gitlab.com> is the base URL for GitLab.  Enterprise users may override this with the `--gitlab-base-url` for the normal web user interface and `--gitlab-api-url` for the API URL.  Personalities may use GITLAB\_API\_URL and GITLAB\_BASE\_URL.
 
 The specific repository on GitLab is defined with either `--gitlab-repo` on the command line or GITLAB\_REPO in a personality.  It should take the form of "user/repo".
 
 In order to comment on issues or, depending upon the security setup of the repo, authentication credentials.  The GitLab plug-in supports tokens via the `--gitlab-token` option or GITLAB\_TOKEN environment variable.
 
-
 GitLab merge requests may be directly processed on the command line in two ways:
 
-  * GL:(MR number)
-  * GLSHA:(MR SHA1 number)
+* GL:(MR number)
+* GLSHA:(MR SHA1 number)
 
 The GitLab bugsystem plugin will attempt to download the unified diff that the merge request references.
 Merge requests that are made off of a specific branch will switch the test repo to that branch, if permitted.  If the merge request references a JIRA issue that matches the given JIRA issue regexp in the Subject, the JIRA plug-in will also be invoked as needed.
@@ -110,7 +111,7 @@
 
 JIRA support allows both patch downloads and summary writes.  It also supports branch detection-based upon the name of the attached patch file.
 
-JIRA issues are invoked by matching the command line option to a specific regular expression as given by the `--jira-issue-re` option or via the JIRA\_ISSUE\_RE personality variable.  By default, the plug-in uses https://issues.apache.org/jira as the JIRA instance to use.  However that may be overwritten via the `--jira-base-url` option or personalities may define via JIRA\_URL.
+JIRA issues are invoked by matching the command line option to a specific regular expression as given by the `--jira-issue-re` option or via the JIRA\_ISSUE\_RE personality variable.  By default, the plug-in uses <https://issues.apache.org/jira> as the JIRA instance to use.  However that may be overwritten via the `--jira-base-url` option or personalities may define via JIRA\_URL.
 
 In order to write information on the issue, JIRA requires username and password authentication using the `--jira-user`/`--jira-password` options or the JIRA\_USER and JIRA\_PASSWORD variables in a personality.
 
diff --git a/asf-site-src/source/documentation/in-progress/precommit-buildtools.md b/asf-site-src/source/documentation/in-progress/precommit-buildtools.md
index f817073..73911a4 100644
--- a/asf-site-src/source/documentation/in-progress/precommit-buildtools.md
+++ b/asf-site-src/source/documentation/in-progress/precommit-buildtools.md
@@ -17,28 +17,38 @@
   under the License.
 -->
 
-
-
-Build Tool Support
-===================
+# Build Tool Support
 
 <!-- MarkdownTOC levels="1,2" autolink="true" -->
 
 * [Global Variables](#global-variables)
+  * [BUILDTOOLCWD](#buildtoolcwd)
+  * [UNSUPPORTED\_TEST](#unsupported_test)
 * [Required Functions](#required-functions)
+  * [pluginname\_buildfile](#pluginname_buildfile)
+  * [pluginname\_executor](#pluginname_executor)
+  * [pluginname\_modules\_worker](#pluginnamemodulesworker)
+  * [pluginname\_builtin_personality\_modules](#pluginnamebuiltin_personalitymodules)
+  * [pluginname\_builtin_personality\_file\_tests](#pluginnamebuiltin_personality_filetests)
 * [Optional Functions](#optional-functions)
-* [Ant Specific](#ant-specific)
-  * [Command Arguments](#command-arguments)
-  * [Docker Mode](#docker-mode)
+  * [pluginname\_parse\_args](#pluginnameparseargs)
+  * [pluginname\_initialize](#pluginname_initialize)
+  * [pluginname\_reorder\_modules](#pluginnamereordermodules)
+  * [pluginname\_\(test\)\_logfilter](#pluginnametestlogfilter)
+  * [pluginname\_\(test\)_calcdiffs](#pluginnametestcalcdiffs)
+  * [pluginname\_docker\_support](#pluginnamedockersupport)
+* [Apache Ant Specific](#apache-ant-specific)
+  * [Ant Command Arguments](#ant-command-arguments)
+  * [Ant in Docker Mode](#ant-in-docker-mode)
 * [autoconf Specific](#autoconf-specific)
-  * [Command Arguments](#command-arguments-1)
+  * [autoconf Command Arguments](#autoconf-command-arguments)
 * [CMAKE Specific](#cmake-specific)
 * [Gradle Specific](#gradle-specific)
 * [Make Specific](#make-specific)
-* [Maven Specific](#maven-specific)
-  * [Command Arguments](#command-arguments-2)
+* [Apache Maven Specific](#apache-maven-specific)
+  * [Command Arguments](#command-arguments)
   * [Per-instance Repositories](#per-instance-repositories)
-  * [Docker Mode](#docker-mode-1)
+  * [Maven in Docker Mode](#maven-in-docker-mode)
   * [Test Profile](#test-profile)
   * [Custom Maven Tests](#custom-maven-tests)
 
@@ -52,87 +62,79 @@
 
 # Global Variables
 
-* BUILDTOOLCWD
+## BUILDTOOLCWD
 
-    - This variable determines where the build tool's command (as returned by pluginname\_executor) should actually execute.  It should be one of three values:
+This variable determines where the build tool's command (as returned by pluginname\_executor) should actually execute.  It should be one of three values:
 
-    * basedir  - always execute at the root of the source tree
-    * module   - switch to the directory as given by the module being processed
-    * /(path)  - change to the directory as given by this absolute path. If the path does not exist, it will be created.
-
-  If /(path) is used, two special substitutions may be made:
-
+* basedir  - always execute at the root of the source tree
+* module   - (default) switch to the directory as given by the module being processed
+* /(path)  - change to the directory as given by this absolute path. This allows for custom directories to be created and used as necessary.  If the path does not exist, it will be created. If /(path) is used, two special substitutions may be made:
   * @@@BASEDIR@@@ will be replaced with the root of the source tree
   * @@@MODULEDIR@@@ will be replaced with the module name
 
-  This allows for custom directories to be created and used as necessary.
+## UNSUPPORTED\_TEST
 
-
-    The default is module.
-
-* UNSUPPORTED\_TEST
-
-    - If pluginname\_modules\_worker is given a test type that is not supported by the build system, set UNSUPPORTED\_TEST=true.  If it is supported, set UNSUPPORTED\_TEST=false.
+If pluginname\_modules\_worker is given a test type that is not supported by the build system, set UNSUPPORTED\_TEST=true.  If it is supported, set UNSUPPORTED\_TEST=false.
 
 For example, the gradle build tool does not have a standard way to execute checkstyle. So when checkstyle is requested, gradle\_modules\_worker sets UNSUPPORTED\_TEST to true and returns out of the routine.
 
 # Required Functions
 
-* pluginname\_buildfile
+## pluginname\_buildfile
 
-    - This should be an echo of the file that controls the build system.  This is used for module determination. If the build system wishes to disable module determination, it should echo with no args.
+This should be an echo of the file that controls the build system.  This is used for module determination. If the build system wishes to disable module determination, it should echo with no args.
 
-* pluginname\_executor
+## pluginname\_executor
 
-    - This should be an echo of how to run the build tool, any extra arguments, etc.
+This should be an echo of how to run the build tool, any extra arguments, etc.
 
-* pluginname\_modules\_worker
+## pluginname\_modules\_worker
 
-    - Input is the branch and the test being run.  This should call `modules_workers` with the generic parts to run that test on the build system.  For example, if it is convention to use 'test' to trigger 'unit' tests, then `modules_workers` should be called with 'test' appended onto its normal parameters.
+Input is the branch and the test being run.  This should call `modules_workers` with the generic parts to run that test on the build system.  For example, if it is convention to use 'test' to trigger 'unit' tests, then `modules_workers` should be called with 'test' appended onto its normal parameters.
 
-* pluginname\_builtin_personality\_modules
+## pluginname\_builtin_personality\_modules
 
-    - Default method to determine how to enqueue modules for processing.  Note that personalities may override this function. Requires two arguments: repo status and test desired. For example, in a maven build, values may be 'branch' and 'mvninstall'.
+Default method to determine how to enqueue modules for processing.  Note that personalities may override this function. Requires two arguments: repo status and test desired. For example, in a maven build, values may be 'branch' and 'mvninstall'.
 
-* pluginname\_builtin_personality\_file\_tests
+## pluginname\_builtin_personality\_file\_tests
 
-    - Default method to determine which tests to trigger.  Note that personalities may override this function. Requires a single argument: the file in which the tests exist.
+Default method to determine which tests to trigger.  Note that personalities may override this function. Requires a single argument: the file in which the tests exist.
 
 # Optional Functions
 
-* pluginname\_parse\_args
+## pluginname\_parse\_args
 
-    - executed prior to any other above functions except for pluginname\_usage. This is useful for parsing the arguments passed from the user and setting up the execution environment.
+Executed prior to any other above functions except for pluginname\_usage. This is useful for parsing the arguments passed from the user and setting up the execution environment.
 
-* pluginname\_initialize
+## pluginname\_initialize
 
-    - After argument parsing and prior to any other work, the initialize step allows a plug-in to do any precursor work, set internal defaults, etc.
+After argument parsing and prior to any other work, the initialize step allows a plug-in to do any precursor work, set internal defaults, etc.
 
-* pluginname\_reorder\_modules
+## pluginname\_reorder\_modules
 
-    - This functions allows the plugin to (re-)order the modules (e.g. based on the output of the maven dependency plugin). When called CHANGED\_MODULES[@] already contains all changed modules. It must be altered to have an effect.
+This functions allows the plugin to (re-)order the modules (e.g. based on the output of the maven dependency plugin). When called CHANGED\_MODULES[@] already contains all changed modules. It must be altered to have an effect.
 
-* pluginname\_(test)\_logfilter
+## pluginname\_(test)\_logfilter
 
-    - This functions should filter all lines relevant to this test from the logfile. It is called in preparation for the `calcdiffs` function. The test plug-in name should be in the (test) part of the function name.
+This functions should filter all lines relevant to this test from the logfile. It is called in preparation for the `calcdiffs` function. The test plug-in name should be in the (test) part of the function name.
 
-* pluginname\_(test)_calcdiffs
+## pluginname\_(test)_calcdiffs
 
-    - Some build tools (e.g., maven) use custom output for certain types of compilations (e.g., java).  This allows for custom log file difference calculation used to determine the before and after views.
+Some build tools (e.g., maven) use custom output for certain types of compilations (e.g., java).  This allows for custom log file difference calculation used to determine the before and after views.
 
-* pluginname\_docker\_support
+## pluginname\_docker\_support
 
-    - If this build tool requires extra settings on the `docker run` command line, this function should be defined and add those options into an array called `${DOCKER_EXTRAARGS[@]}`. This is particularly useful for things like mounting volumes for repository caches.
+ If this build tool requires extra settings on the `docker run` command line, this function should be defined and add those options into an array called `${DOCKER_EXTRAARGS[@]}`. This is particularly useful for things like mounting volumes for repository caches.
 
-       **WARNING**: Be aware that directories that do not exist MAY be created by root by Docker itself under certain conditions.  It is HIGHLY recommend that `pluginname_initialize` be used to create the necessary directories prior to be used in the `docker run` command.
+    **WARNING**: Be aware that directories that do not exist MAY be created by root by Docker itself under certain conditions.  It is HIGHLY recommend that `pluginname_initialize` be used to create the necessary directories prior to be used in the `docker run` command.
 
-# Ant Specific
+# Apache Ant Specific
 
-## Command Arguments
+## Ant Command Arguments
 
 test-patch always passes -noinput to Ant.  This forces ant to be non-interactive.
 
-## Docker Mode
+## Ant in Docker Mode
 
 In Docker mode, the `${HOME}/.ivy2` directory is shared amongst all invocations.
 
@@ -140,7 +142,7 @@
 
 autoconf requires make to be enabled.  autoreconf is always used to rebuild the configure scripte.
 
-## Command Arguments
+## autoconf Command Arguments
 
 autoconf will always run configure with prefix set to a directory in the patch processing directory.  To configure other flags, set the AUTCONF_CONF_FLAGS environment variable.
 
@@ -158,13 +160,13 @@
 
 No notes.
 
-# Maven Specific
+# Apache Maven Specific
 
 ## Command Arguments
 
 test-patch always passes --batch-mode to maven to force it into non-interactive mode.  Additionally, some tests will also force -fae in order to get all of messages/errors during that mode. Some tests are executed with -DskipTests.  Additional arguments should be handled via the personality.
 
-##  Per-instance Repositories
+## Per-instance Repositories
 
 Under many common configurations, maven (as of 3.3.3 and lower) may not properly handle being executed by multiple processes simultaneously, especially given that some tests require the `mvn install` command to be used.
 
@@ -174,7 +176,7 @@
 
 The location of the `settings.xml` may be changed via the `--mvn-settings` option.
 
-## Docker Mode
+## Maven in Docker Mode
 
 In Docker mode, `${HOME}/.m2` is shared amongst all invocations.  If `--mvn-custom-repos` is used, all of `--mvn-custom-repos-dir` is shared with all invocations.  The per-instance directory will be calculated and configured after Docker has launched.
 
diff --git a/asf-site-src/source/documentation/in-progress/precommit-docker-cleanup.md b/asf-site-src/source/documentation/in-progress/precommit-docker-cleanup.md
index 9df7524..9add204 100644
--- a/asf-site-src/source/documentation/in-progress/precommit-docker-cleanup.md
+++ b/asf-site-src/source/documentation/in-progress/precommit-docker-cleanup.md
@@ -17,8 +17,12 @@
   under the License.
 -->
 
-docker-cleanup
-==============
+# docker-cleanup
+<!-- MarkdownTOC levels="1,2" autolink="true" -->
+
+* [Usage](#usage)
+
+<!-- /MarkdownTOC -->
 
 `docker-cleanup` is a command to perform precommit's Docker cleanup functionality outside of patch and build testing.
 
@@ -40,7 +44,6 @@
 
 ```
 
-
 `docker-cleanup` also supports the `--sentinel` mode to kill and remove stale running containers:
 
 ```bash
diff --git a/asf-site-src/source/documentation/in-progress/precommit-docker.md b/asf-site-src/source/documentation/in-progress/precommit-docker.md
index 8bd344c..1930710 100644
--- a/asf-site-src/source/documentation/in-progress/precommit-docker.md
+++ b/asf-site-src/source/documentation/in-progress/precommit-docker.md
@@ -17,8 +17,7 @@
   under the License.
 -->
 
-test-patch Docker Support
-=========================
+# test-patch Docker Support
 
 <!-- MarkdownTOC levels="1,2" autolink="true" -->
 
diff --git a/asf-site-src/source/documentation/in-progress/precommit-patchnames.md b/asf-site-src/source/documentation/in-progress/precommit-patchnames.md
index ce89b92..51b941c 100644
--- a/asf-site-src/source/documentation/in-progress/precommit-patchnames.md
+++ b/asf-site-src/source/documentation/in-progress/precommit-patchnames.md
@@ -17,29 +17,35 @@
   under the License.
 -->
 
-We use Apache Yetus to process your patch. It supports the following patterns and
-procedures for patch file names:
+# Patch File Naming
+
+<!-- MarkdownTOC levels="1,2" autolink="true" -->
+
+* [JIRA](#jira)
+* [Github](#github)
+
+<!-- /MarkdownTOC -->
+
+We use Apache Yetus to process your patch. It supports the following patterns and procedures for patch file names:
 
 ## JIRA
 
 If JIRA support is configured, attach the patch to the given ISSUE and
 click 'Submit Patch'.  The patch file should be named one of:
 
-  * ISSUE.patch
-  * ISSUE.###.patch
-  * ISSUE.branch.###.patch
-  * ISSUE-branch-###.patch
-  * ISSUE.###.branch.patch
-  * ISSUE-branch.###.patch
+* ISSUE.patch
+* ISSUE.###.patch
+* ISSUE.branch.###.patch
+* ISSUE-branch-###.patch
+* ISSUE.###.branch.patch
+* ISSUE-branch.###.patch
 
 The meaning of the subpart are the following:
 
-  * ISSUE: JIRA key (e.g. YETUS-1)
-  * branch: either the name of a branch or a git hash prefixed with **git** (e.g. branch-2.8 or git8e55427b35)
-  * ###: revision of the patch (e.g. 00 or 01)
+* ISSUE: JIRA key (e.g. YETUS-1)
+* branch: either the name of a branch or a git hash prefixed with **git** (e.g. branch-2.8 or git8e55427b35)
+* ###: revision of the patch (e.g. 00 or 01)
 
 ## Github
 
-If Github support is also configured, a comment that contains a link to a Pull Request's
-patch file (e.g., https://github.com/user/repo/pull/1.patch) will pull the patch from
-the given Github PR.
+If Github support is also configured, a comment that contains a link to a Pull Request's patch file (e.g., <https://github.com/user/repo/pull/1.patch>) will pull the patch from the given Github PR.
diff --git a/asf-site-src/source/documentation/in-progress/precommit-qbt.md b/asf-site-src/source/documentation/in-progress/precommit-qbt.md
index 91d1749..665bd8c 100644
--- a/asf-site-src/source/documentation/in-progress/precommit-qbt.md
+++ b/asf-site-src/source/documentation/in-progress/precommit-qbt.md
@@ -17,13 +17,19 @@
   under the License.
 -->
 
-qbt
-===
+# qbt
 
-`qbt` is a command to execute test-patch without a patch.  It uses
-the same plug-ins and the same options as test-patch.  The only
+<!-- MarkdownTOC levels="1,2" autolink="true" -->
+
+* [Reporting](#reporting)
+* [Archiving](#archiving)
+
+<!-- /MarkdownTOC -->
+
+`qbt` is a command to execute `test-patch` without a patch.  It uses
+the same plug-ins and the same options as `test-patch`.  The only
 difference is that no patch file, location, etc should be supplied.
-It is meant to be a way to easily get test-patch's output on your
+It is meant to be a way to easily get `test-patch`'s output on your
 current source tree.  It is suitable to be run as a regularly
 scheduled build as part of your overall development strategy.
 
@@ -34,7 +40,7 @@
 file. This can then be used with systems like Jenkin's
 email-ext plug-in to send the output as an emailed report:
 
-```
+```text
 ${FILE,path="<report-file-path>"}
 ```
 
@@ -42,7 +48,7 @@
 option.  Using this output, again with Jenkins' email-ext plug-in, it is
 possible to build some very nice looking output that is easily customized:
 
-```
+```html
 <html>
 <head>
 <style>
@@ -63,12 +69,7 @@
 </body></html>
 ```
 
-If your mailing lists do not allow HTML-formatted email, then the `--brief-report-file`
-provides a solution.  This option creates a very plain, reduced content text file
-suitable for email.  It contains just the barebones information needed to get
-information on failures: what voted -1, what tests failed, what subsystems are long
-running (configurable with the `--brief-report-long` opton), and a list of any
-attached log files.
+If your mailing lists do not allow HTML-formatted email, then the `--brief-report-file` provides a solution.  This option creates a very plain, reduced content text file suitable for email.  It contains just the barebones information needed to get information on failures: what voted -1, what tests failed, what subsystems are long running (configurable with the `--brief-report-long` opton), and a list of any attached log files.
 
 NOTE: Be aware that ASF mailing lists do not allow HTML formatted email.
 
diff --git a/asf-site-src/source/documentation/in-progress/precommit-robots.md b/asf-site-src/source/documentation/in-progress/precommit-robots.md
index 6fb44ab..8e73c1d 100644
--- a/asf-site-src/source/documentation/in-progress/precommit-robots.md
+++ b/asf-site-src/source/documentation/in-progress/precommit-robots.md
@@ -17,9 +17,7 @@
   under the License.
 -->
 
-
-Robots: Continuous Integration Support
-======================================
+# Robots: Continuous Integration Support
 
 <!-- MarkdownTOC levels="1,2" autolink="true" -->
 
@@ -35,22 +33,20 @@
 
 <!-- /MarkdownTOC -->
 
-Intro
-=====
+# Intro
 
 `test-patch` works hand-in-hand with various CI and other automated build systems.  `test-patch` will attempt to auto-determine if it is running under such a system and change its defaults to match known configuration parameters automatically. When robots are activated, there is generally some additional/changed behavior:
 
-  * display extra information in the footer
-  * change log entries from file names to URLs
-  * activate `--resetrepo` to keep the directory structure clean
-  * enable the running of unit tests and run them in parallel
-  * if possible, write comments to bug systems
-  * attempt to determine the build tool in use
-  * activate Docker maintenance when `--docker` is passed
-  * attempt to determine whether this is a full build (`qbt`) or testing a patch/merge request/pull request.
+* display extra information in the footer
+* change log entries from file names to URLs
+* activate `--resetrepo` to keep the directory structure clean
+* enable the running of unit tests and run them in parallel
+* if possible, write comments to bug systems
+* attempt to determine the build tool in use
+* activate Docker maintenance when `--docker` is passed
+* attempt to determine whether this is a full build (`qbt`) or testing a patch/merge request/pull request.
 
-Azure Pipelines
-===============
+# Azure Pipelines
 
     NOTE: Azure Pipelines support is not stable and should be viewed as experimental, at best.
 
@@ -60,8 +56,7 @@
 
 As of this writing, Azure Pipelines has moved to a custom moby build for the 'docker' executable.  As a result, `--docker` is not supported.
 
-Circle CI
-=========
+# Circle CI
 
 TRIGGER: ${CIRCLECI}=true
 
@@ -70,10 +65,11 @@
 To use the pre-built Apache Yetus Docker image from docker hub as the build environment, use the following snippet in the `.circleci/config.yaml` file, substituting the tag for the version of Apache Yetus that should be used and replacing the JAVA_HOME with the appropriate version as bundled mentioned in the Dockerfile:
 
 ```yaml
+---
 jobs:
   build:
     docker:
-      - image: apache/yetus:0.9.0
+      - image: apache/yetus:0.10.0
 
     environment:
       JAVA_HOME: /usr/lib/jvm/java-8-openjdk-amd64
@@ -84,6 +80,7 @@
 Artifacts need some special handling.  In order to get links, the storage of artifacts must be 'primed' prior to launching test-patch and then again to actually store the content. Additionally, the location needs to be handled set on the command line. In practice, this configuration looks similar to this:
 
 ```yaml
+---
 jobs:
   build:
     steps:
@@ -100,28 +97,29 @@
           path: /tmp/yetus-out
 ```
 
-See also
-  * See also the source tree's `.circleci/config.yaml` for some tips and tricks.
+See also:
 
-Gitlab CI
-=========
+* Apache Yetus' source tree [.circleci/config.yaml](https://github.com/apache/yetus/blob/master/.circleci/config.yml) for some tips and tricks.
+
+# Gitlab CI
 
 TRIGGER: ${GITLAB_CI}=true
 
 Artifacts, patch logs, etc are configured to go to a yetus-out directory in the source tree after completion. Adding this stanza to your `.gitlab-ci.yml` file will upload and store those components for a week in Gitlab CI's artifact retrieval system:
 
 ```yaml
+---
   artifacts:
     expire_in: 1 week
     when: always
     paths:
       - yetus-out/
-
 ```
 
-To use the pre-built Apache Yetus Docker image from docker hub as the build environment, use the following snippet in the `.gitlab-ci.yml` file, substituting the tag for the version of Apache Yetus that should be used and replacing the JAVA_HOME with the appropriate version as bundled mentioned in the Dockerfile:
+To use the pre-built Apache Yetus Docker image from docker hub as the build environment, use the following snippet in the `.gitlab-ci.yml` file, substituting the tag for the version of Apache Yetus that should be used and replacing the `JAVA_HOME` with the appropriate version as bundled mentioned in the Dockerfile:
 
 ```yaml
+---
 job:
   image: apache/yetus:0.9.0
   allow_failure: true
@@ -131,20 +129,21 @@
   ...
 ```
 
-See also
-  * See also the source tree's `.gitlab-ci.yml` for some tips and tricks.
+See also:
 
-Jenkins
-=======
+* Apache Yetus' source tree [.gitlab-ci.yml](https://github.com/apache/yetus/blob/master/.gitlab-ci.yml) for some tips and tricks.
+
+# Jenkins
 
 TRIGGER: ${JENKINS_URL}=(anything)  ,  ${EXECUTOR_NUMBER}=(anything)
 
-Jenkins is extremely open-ended and, given multiple executors, does not run workflows in isolation.  As a result, many more configuration options generally need to be configured as it is not safe or may be suprising to users for test-patch to autodetermine some settings.  By default, Jenkins will trigger a full build.
+Jenkins is extremely open-ended and, given multiple executors, does not run workflows in isolation.  As a result, many more configuration options generally need to be configured as it is not safe or may be surprising to users for test-patch to auto-determine some settings.  By default, Jenkins will trigger a full build.
 
 There is some support for a few well known environment variables:
-  * `${CHANGE_URL}` or `${ghprbPullLink}` will set the patch location as well as trigger some extra handling if 'github' or 'gitlab' appear in the string.
-  * `${GIT_URL}` will trigger the same extra handling if 'github' or 'gitlab' appear in the string.
-  * If `${ghprbPullId}` is set, then test-patch will configure itself for a Github-style PR.
+
+* `${CHANGE_URL}` or `${ghprbPullLink}` will set the patch location as well as trigger some extra handling if 'github' or 'gitlab' appear in the string.
+* `${GIT_URL}` will trigger the same extra handling if 'github' or 'gitlab' appear in the string.
+* If `${ghprbPullId}` is set, then test-patch will configure itself for a Github-style PR.
 
 To use the pre-built Apache Yetus Docker image from docker hub as the build environment, use the following snippet in the `Jenkinsfile`, substituting the tag for the version of Apache Yetus that should be used and replacing the JAVA_HOME with the appropriate version as bundled mentioned in the Dockerfile:
 
@@ -165,7 +164,7 @@
 
 ```
 
- Experience has shown that certain Jenkins + Java + OS combinations have problems sending signals to child processes.  In the case of Apache Yetus, this may result in aborted or workflows that timeout not being properly killed.  `test-patch` will write two files in the patch directory that may be helpful to combat this situation if it applies to your particular configuration.  `pidfile.txt` contains the master `test-patch` process id and `cidfile.txt` contains the docker container id.  These will not be present on a successful exit.  In Pipeline code, it should look something similar to this:
+Experience has shown that certain Jenkins + Java + OS combinations have problems sending signals to child processes.  In the case of Apache Yetus, this may result in aborted or workflows that timeout not being properly killed.  `test-patch` will write two files in the patch directory that may be helpful to combat this situation if it applies to your particular configuration.  `pidfile.txt` contains the master `test-patch` process id and `cidfile.txt` contains the docker container id.  These will not be present on a successful exit.  In Pipeline code, it should look something similar to this:
 
  ```groovy
     post {
@@ -188,17 +187,15 @@
     }
  ```
 
+See also:
 
+* Apache Yetus' source tree [Jenkinsfile](https://github.com/apache/yetus/blob/master/Jenkinsfile) for some tips and tricks.
+* [precommit-admin](precommit-admin), for special utilities built for Jenkins.
+* [GitHub Branch Source Plugin](https://wiki.jenkins.io/display/JENKINS/GitHub+Branch+Source+Plugin)
+* [GitHub Pull Request Builder Plugin](https://wiki.jenkins.io/display/JENKINS/GitHub+pull+request+builder+plugin)
+* `https://{your local server}/env-vars.html/`
 
-See also
-  * See also the source tree's `Jenkinsfile` for some tips and tricks.
-  * [precommit-admin](precommit-admin), for special utilities built for Jenkins.
-  * [GitHub Branch Source Plugin](https://wiki.jenkins.io/display/JENKINS/GitHub+Branch+Source+Plugin)
-  * [GitHub Pull Request Builder Plugin](https://wiki.jenkins.io/display/JENKINS/GitHub+pull+request+builder+plugin)
-  * https://{your local server}/env-vars.html/
-
-Semaphore CI
-=========
+# Semaphore CI
 
     NOTE: Semaphore CI support is not stable and should be viewed as experimental, at best.
 
@@ -206,10 +203,14 @@
 
 Semaphore CI requires that `checkout --use-cache` has been used prior to trigging test-patch. It is HIGHLY recommended to use a helper script checked into the repository to control precommit options to avoid problems with Semaphore CI's parsing of long lines in the YAML file.
 
- The GitHub repo and the Pull Request in use are automatically detected.  However, some personalities may override the auto-detected Github repository information.  It may be necessary to manually configure it in your `.semaphore.yml` file.
+The GitHub repo and the Pull Request in use are automatically detected.  However, some personalities may override the auto-detected Github repository information.  It may be necessary to manually configure it in your `semaphore.yml` file.
 
-Travis CI
-=========
+See also:
+
+* Apache Yetus' source tree [semaphore.yml](https://github.com/apache/yetus/blob/master/.semaphore/semaphore.yml) for some tips and tricks.
+* Apache Yetus' helper script [semaphore-build.sh](https://github.com/apache/yetus/blob/master/.semaphore/semaphore-build.sh)
+
+# Travis CI
 
 TRIGGER: ${TRAVIS}=true
 
@@ -219,17 +220,16 @@
 
 Personalities will override the auto-detected Github repository information.  It may be necessary to manually configure it in your `.travis.yml` file.
 
-As of this writing, it is not possible to make the Travis CI build environment use the Apache Yetus pre-built docker images without using ` docker run` in the before_install phase.  Therefore, using the image is the same as described in the [Apache Yetus Docker Hub Images](/yetus-docker-image) page.
+As of this writing, it is not possible to make the Travis CI build environment use the Apache Yetus pre-built docker images without using `docker run` in the before_install phase.  Therefore, using the image is the same as described in the [Apache Yetus Docker Hub Images](/yetus-docker-image) page.
 
-See also
-  * See also the source tree's `.travis.yml` for some tips and tricks.
+See also:
 
-Manual Configuration
-====================
+* Apache Yetus' source tree [.travis.yml](https://github.com/apache/yetus/blob/master/.travis.yml) for some tips and tricks.
+
+# Manual Configuration
 
 For automated systems that are not directly supported, `--robot` tells `test-patch` that this is an automated system.  This will trigger many of the above settings.
 
-
 The `--build-url` option is also useful when running in `--robot` mode so that emails and such
 have a location to look at the output artifacts:
 
@@ -245,8 +245,6 @@
 
 If `--robot` is specified without an instance, a random number is generated and used.
 
-
-Sentinel Mode
-=============
+# Sentinel Mode
 
 If stuck Docker containers are a problem, a more aggressive robot may be enabled with the `--sentinel` option.  This option enables killing containers that have been running for over 24 hours as well.
\ No newline at end of file
diff --git a/asf-site-src/source/documentation/in-progress/precommit-testformats.md b/asf-site-src/source/documentation/in-progress/precommit-testformats.md
index fcbfc36..6eda542 100644
--- a/asf-site-src/source/documentation/in-progress/precommit-testformats.md
+++ b/asf-site-src/source/documentation/in-progress/precommit-testformats.md
@@ -17,8 +17,15 @@
   under the License.
 -->
 
-Test Format Support
-==================
+# Test Format Support
+
+<!-- MarkdownTOC levels="1,2" autolink="true" -->
+
+* [pluginname\_process\_tests](#pluginnameprocesstests)
+* [pluginname\_finalize\_results](#pluginnamefinalizeresults)
+* [Example](#example)
+
+<!-- /MarkdownTOC -->
 
 test-patch has the ability to support multiple test formats. Test formats have some extra hooks to process the output of test tools and write the results to some tables. Every test format plug-in must have one line in order to be recognized:
 
@@ -28,12 +35,14 @@
 
 Test format plugins can provide following two methods, which will be called by test-patch if defined.
 
-* pluginname\_process\_tests
+## pluginname\_process\_tests
 
-    - Given a path to the log file and tested module name, parse that file and store the test result into global variables and/or files.
+Given a path to the log file and tested module name, parse that file and store the test result into global variables and/or files.
 
-* pluginname\_finalize\_results
+## pluginname\_finalize\_results
 
-    - Using the results stored by pluginname\_process\_tests, write them to the test result table and/or the footer table for reporting.
+Using the results stored by pluginname\_process\_tests, write them to the test result table and/or the footer table for reporting.
+
+# Example
 
 For an example of how to write a test-format plugin, you can look at [junit plugin](https://github.com/apache/yetus/blob/master/precommit/test-patch.d/junit.sh) bundled in Apache Yetus.
\ No newline at end of file
diff --git a/asf-site-src/source/documentation/in-progress/releasedocmaker.md b/asf-site-src/source/documentation/in-progress/releasedocmaker.md
index 13b3eb0..ce504d0 100644
--- a/asf-site-src/source/documentation/in-progress/releasedocmaker.md
+++ b/asf-site-src/source/documentation/in-progress/releasedocmaker.md
@@ -17,18 +17,21 @@
   under the License.
 -->
 
-releasedocmaker
-===============
+# releasedocmaker
 
 <!-- MarkdownTOC levels="1,2" autolink="true" -->
 
 * [Purpose](#purpose)
 * [Requirements](#requirements)
 * [Basic Usage](#basic-usage)
+* [Authentication](#authentication)
 * [Changing the Header](#changing-the-header)
+* [Versioned Files and Directories](#versioned-files-and-directories)
 * [Multiple Versions](#multiple-versions)
 * [Unreleased Dates](#unreleased-dates)
 * [Sorted Output](#sorted-output)
+  * [Resolution Date-base Sort](#resolution-date-base-sort)
+  * [Issue Number-based Sort](#issue-number-based-sort)
 * [Backward Incompatible Changes](#backward-incompatible-changes)
 * [Lint Mode](#lint-mode)
 * [Index Mode](#index-mode)
@@ -46,7 +49,7 @@
 
 All of these methods have their pros and cons.  Some have issues with accuracy.  Some have issues with lack of details. None of these methods seem to cover all of the needs of many projects and are full of potential pitfalls.
 
-In order to solve these problems, releasedocmaker was written to automatically generate a changelog and release notes by querying Apache's JIRA instance.
+In order to solve these problems, `releasedocmaker` was written to automatically generate a changelog and release notes by querying Apache's JIRA instance.
 
 # Requirements
 
@@ -70,7 +73,7 @@
 
 * RELEASENOTES.md
 
-If your JIRA project supports the release note field, this will contain any JIRA mentioned in the CHANGELOG that is either an incompatible change or has a release note associated with it.  If your JIRA project does not support the release notes field, this will be the description field.
+If your JIRA project supports the release note field, this will contain any JIRA mentioned in the `CHANGELOG` that is either an incompatible change or has a release note associated with it.  If your JIRA project does not support the release notes field, this will be the description field.
 
 For example, to build the release documentation for HBase v1.2.0:
 
@@ -87,7 +90,7 @@
 
 # Authentication
 
-releasedocmaker supports very simple Basic authentication.  This is accomplished by adding two environment variables to your shell environment:
+`releasedocmaker` supports very simple Basic authentication.  This is accomplished by adding two environment variables to your shell environment:
 
 ```bash
 RDM_JIRA_USERNAME='jirausername'
@@ -108,21 +111,19 @@
 
 # Versioned Files and Directories
 
-It is sometimes useful to create the CHANGELOG and RELEASENOTES with versions attached.  `releasedocmaker` supports both independently.
+It is sometimes useful to create the `CHANGELOG` and `RELEASENOTES` with versions attached.  `releasedocmaker` supports both independently.
 
 ```bash
 $ releasedocmaker --project HBASE --version 1.2.0 --fileversions
 ```
 
-This command line will now create CHANGELOG.1.2.0.md and RELEASENOTES.1.2.0.md files.
-
+This command line will now create `CHANGELOG.1.2.0.md` and `RELEASENOTES.1.2.0.md` files.
 
 ```bash
 $ releasedocmaker --project HBASE --version 1.2.0 --dirversions
 ```
 
-This command line will now create a directory called 1.2.0 and inside will be the CHANGELOG.md and RELEASENOTES.md files.
-
+This command line will now create a directory called 1.2.0 and inside will be the `CHANGELOG.md` and `RELEASENOTES.md` files.
 
 Using both at the same time...
 
@@ -130,8 +131,7 @@
 $ releasedocmaker --project HBASE --version 1.2.0 --fileversions --dirversions
 ```
 
-... results in 1.2.0/CHANGELOG.1.2.0.md and 1.2.0/RELEASENOTES.1.2.0.md files.
-
+... results in `1.2.0/CHANGELOG.1.2.0.md` and `1.2.0/RELEASENOTES.1.2.0.md` files.
 
 # Multiple Versions
 
@@ -143,19 +143,19 @@
 
 This will create the files for versions 1.0.0 and versions 1.2.0 in their own directories.
 
-But what if the version numbers are not known?  releasedocmaker can also generate version data based upon ranges:
+But what if the version numbers are not known?  `releasedocmaker` can also generate version data based upon ranges:
 
 ```bash
 $ releasedocmaker --project HBASE --version 1.0.0 --version 1.2.0 --range --fileversions
 ```
 
-In this form, releasedocmaker will query JIRA, discover all versions that alphabetically appear to be between 1.0.0 and 1.2.0, inclusive, and generate all of the relative release documents.  This is especially useful when bootstrapping an existing project.
+In this form, `releasedocmaker` will query JIRA, discover all versions that alphabetically appear to be between 1.0.0 and 1.2.0, inclusive, and generate all of the relative release documents.  This is especially useful when bootstrapping an existing project.
 
 # Unreleased Dates
 
 For released versions, releasedocmaker will pull the date of the release from JIRA.  However, for unreleased versions it marks the release as "Unreleased". This can be inconvenient when actually building a release and wanting to include it inside the source package.
 
-The --usetoday option can be used to signify that instead of using Unreleased, releasedocmaker should use today's date.
+The `--usetoday` option can be used to signify that instead of using Unreleased, `releasedocmaker` should use today's date.
 
 ```bash
 $ releasedocmaker --project HBASE --version 1.0.0 --usetoday
@@ -165,11 +165,11 @@
 
 # Sorted Output
 
-Different projects may find one type of sort better than another, depending upon their needs.  releasedocmaker supports two types of sorts and each provides two different options in the direction for that sort.
+Different projects may find one type of sort better than another, depending upon their needs.  `releasedocmaker` supports two types of sorts and each provides two different options in the direction for that sort.
 
 ## Resolution Date-base Sort
 
-By default, releasedocmaker will sort the output based upon the resolution date of the issue starting with older resolutions.  This is the same as giving these options:
+By default, `releasedocmaker` will sort the output based upon the resolution date of the issue starting with older resolutions.  This is the same as giving these options:
 
 ```bash
 $ releasedocmaker --project falcon --version 0.6 --sorttype resolutiondate --sortorder older
@@ -203,15 +203,15 @@
 
 # Backward Incompatible Changes
 
-To check if an issue is backward-incompatible the releasedocmaker script first checks the "Hadoop Flags" field in the
+To check if an issue is backward-incompatible the `releasedocmaker` script first checks the "Hadoop Flags" field in the
 issue. If this field is found to be blank then it searches for the 'backward-incompatible' label. You can override the
-default value for this label by using --incompatiblelabel option e.g.
+default value for this label by using `--incompatiblelabel` option e.g.
 
 ```bash
 $ releasedocmaker --project falcon --version 0.6 --incompatiblelabel not-compatible
 ```
 
-or equivalently using the shorter -X option
+or equivalently using the shorter `-X` option
 
 ```bash
 $ releasedocmaker --project falcon --version 0.6 -X not-compatible
@@ -219,9 +219,9 @@
 
 # Lint Mode
 
-In order to ensure proper formatting while using mvn site, releasedocmaker puts in periods (.) for fields that are empty or unassigned.  This can be unsightly and not proper for any given project.  There are also other things, such as missing release notes for incompatible changes, that are less than desirable.
+In order to ensure proper formatting while using mvn site, `releasedocmaker` puts in periods (.) for fields that are empty or unassigned.  This can be unsightly and not proper for any given project.  There are also other things, such as missing release notes for incompatible changes, that are less than desirable.
 
-In order to help release managers from having to scan through potentially large documents, releasedocmaker features a lint mode, triggered via --lint:
+In order to help release managers from having to scan through potentially large documents, `releasedocmaker` features a lint mode, triggered via `--lint`:
 
 ```bash
 $ releasedocmaker --project HBASE --version 1.0.0 --lint
@@ -234,12 +234,12 @@
 There is basic support for an autoindexer.  It will create two files that contain links to all directories that have a major.minor*-style version numbering system.
 For example directories with names like 0.6, 1.2.2, 1.2alpha etc. will all be linked.
 
-  * index.md: a file suitable for conversion to HTML via mvn site
-  * README.md: a file suitable for display on Github and other Markdown rendering websites
+* `index.md`: a file suitable for conversion to HTML via mvn site
+* `README.md`: a file suitable for display on Github and other Markdown rendering websites
 
 # Release Version
 
-You can find the version of the releasedocmaker that you are using by giving the -V option. This may be helpful in finding documentation for the version you are using.
+You can find the version of the `releasedocmaker` that you are using by giving the `-V` option. This may be helpful in finding documentation for the version you are using.
 
 ```bash
 $ releasedocmaker -V
diff --git a/asf-site-src/source/documentation/in-progress/shelldocs.md b/asf-site-src/source/documentation/in-progress/shelldocs.md
index 6627bc5..56db17b 100644
--- a/asf-site-src/source/documentation/in-progress/shelldocs.md
+++ b/asf-site-src/source/documentation/in-progress/shelldocs.md
@@ -17,9 +17,7 @@
   under the License.
 -->
 
-shelldocs
-===============
-
+# shelldocs
 
 <!-- MarkdownTOC levels="1,2" autolink="true" -->
 
@@ -37,10 +35,9 @@
 
 <!-- /MarkdownTOC -->
 
-
 # Purpose
 
-Some projects have complex shell functions that act as APIs. `shelldocs` provides an annotation system similar to JavaDoc. It allows a developer to autogenerate MultiMarkdown documentation files as input to other processing systems.
+Some projects have complex shell functions that act as APIs. `shelldocs` provides an annotation system similar to JavaDoc. It allows a developer to auto-generate MultiMarkdown documentation files as input to other processing systems.
 
 # Requirements
 
diff --git a/asf-site-src/source/documentation/in-progress/yetus-maven-plugin.md b/asf-site-src/source/documentation/in-progress/yetus-maven-plugin.md
index 8cfa6d9..1b77ade 100644
--- a/asf-site-src/source/documentation/in-progress/yetus-maven-plugin.md
+++ b/asf-site-src/source/documentation/in-progress/yetus-maven-plugin.md
@@ -17,8 +17,7 @@
   under the License.
 -->
 
-Yetus Maven Plug-in
-===================
+# Yetus Maven Plug-in
 
 <!-- MarkdownTOC levels="1,2" autolink="true" -->
 
@@ -46,6 +45,7 @@
 
 Apache Yetus builds wrappers in `bin/` that point to executables in `lib/`.  This goal provides a way to do this generically, including providing the capability to put a license file in the wrapper.
 
+```xml
       <plugin>
         <groupId>org.apache.yetus</groupId>
         <artifactId>yetus-maven-plugin</artifactId>
@@ -63,6 +63,7 @@
           </execution>
         </executions>
       </plugin>
+```
 
 This example will take all the files located in `${project.build.directory}/dist/lib/shelldocs/` and create wrappers in `${project.build.directory}/dist/bin` with any extensions stripped off.  If the `${project.build.directory}/dist/lib/shelldocs/` contains the file `shelldocs.py`, then the `bin/shelldocs` wrapper will look like this:
 
@@ -94,6 +95,7 @@
 
 Since Java 7, there has been a portable way to build symlinks.  Unfortunately, standard plug-ins like the `maven-antrun-plugin` have not been updated to include the symlink task. The `yetus-maven-plugin` now exposes this functionality via the `symlink` goal:
 
+```xml
       <plugin>
         <groupId>org.apache.yetus</groupId>
         <artifactId>yetus-maven-plugin</artifactId>
@@ -112,6 +114,7 @@
             </configuration>
           </execution>
         </plugin>
+```
 
 Available configuration options:
 
@@ -127,6 +130,7 @@
 
 Maven surefire (as of at least 2.x and earlier versions) has calculations to determine the number of tests to run in parallel.  However, the result is not shared in a way that allows creating directory structures before execution.  For specific build flows, this is problematic.
 
+```xml
       <plugin>
         <groupId>org.apache.yetus</groupId>
         <artifactId>yetus-maven-plugin</artifactId>
@@ -142,6 +146,7 @@
             </configuration>
           </execution>
         </plugin>
+```
 
 Available configuration options:
 
@@ -157,6 +162,7 @@
 
 This goal runs releasedocmaker without the need to download or build an Apache Yetus tarball.  Instead, yetus-maven-plugin contains all the necessary components in a native maven way!
 
+```xml
       <plugin>
         <groupId>org.apache.yetus</groupId>
         <artifactId>yetus-maven-plugin</artifactId>
@@ -177,6 +183,7 @@
             </configuration>
           </execution>
         </plugin>
+```
 
 The configuration options generally map 1:1 to the `releasedocmaker` executable's options.  Unless otherwise specified, defaults are set by the actual executable.
 
@@ -204,6 +211,7 @@
 
 Similar to the `releasedocmaker` goal, the `shelldocs` goal runs the Apache Yetus `shelldocs` utility against a given set of input files or directories and generates a single output MultiMarkdown file:
 
+```xml
       <plugin>
         <groupId>org.apache.yetus</groupId>
         <artifactId>yetus-maven-plugin</artifactId>
@@ -216,8 +224,7 @@
             </goals>
           </execution>
         </plugin>
-
-
+```
 
 The configuration options generally map 1:1 to the `shelldocs` executable's options.  Unless otherwise specified, defaults are set by the actual executable.
 
diff --git a/asf-site-src/source/index.html.md b/asf-site-src/source/index.html.md
index bd7ec5b..f5e7af6 100644
--- a/asf-site-src/source/index.html.md
+++ b/asf-site-src/source/index.html.md
@@ -17,6 +17,7 @@
   under the License.
 -->
 
+<!-- markdownlint-disable no-inline-html first-line-heading -->
 <div class="masthead">
   <div class="jumbotron">
           <h1>Apache Yetus</h1>
diff --git a/asf-site-src/source/mailinglists.html.md b/asf-site-src/source/mailinglists.html.md
index 40f513a..43370a8 100644
--- a/asf-site-src/source/mailinglists.html.md
+++ b/asf-site-src/source/mailinglists.html.md
@@ -18,6 +18,8 @@
 -->
 
 # Community
+
+<!-- markdownlint-disable no-inline-html -->
 <div class="row-fluid">
   <div class="col-lg-6">
     <h3>Mailing Lists</h3>
diff --git a/asf-site-src/source/yetus-docker-image.md b/asf-site-src/source/yetus-docker-image.md
index 963cbf5..822b9f0 100644
--- a/asf-site-src/source/yetus-docker-image.md
+++ b/asf-site-src/source/yetus-docker-image.md
@@ -17,25 +17,30 @@
   under the License.
 -->
 
-Convenience Docker Hub Images
-===========================
+# Convenience Docker Hub Images
+
+<!-- MarkdownTOC levels="1,2" autolink="true" -->
+
+* [File Access](#file-access)
+* [A Note About Precommit](#a-note-about-precommit)
+
+<!-- /MarkdownTOC -->
 
 While not official releases, the Apache Yetus project makes available two types of images on hub.docker.com:
 
-  * apache/yetus-base
+* apache/yetus-base
 
-    This image is the same as the 'built-in' Dockerfile when `--docker` is used without `--dockerfile`  on the precommit command line.  It includes all of the pre-requisites as needed by the various Apache Yetus components. It is located in `precommit/src/main/shell/test-patch-docker/`.
+  This image is the same as the 'built-in' Dockerfile when `--docker` is used without `--dockerfile`  on the precommit command line.  It includes all of the pre-requisites as needed by the various Apache Yetus components. It is located in `precommit/src/main/shell/test-patch-docker/`.
 
-  * apache/yetus
+* apache/yetus
 
-    This image is the same as apache/yetus-base but includes a pre-built version of Apache Yetus as part of the base OS image. In other words, qbt, releasedocmaker, shelldocs, test-patch, etc., are in /usr/bin and available in the default path. It is generated from the Dockerfile located in the root of the source and is built with the options provided in the hooks directory.
+  This image is the same as apache/yetus-base but includes a pre-built version of Apache Yetus as part of the base OS image. In other words, qbt, releasedocmaker, shelldocs, test-patch, etc., are in /usr/bin and available in the default path. It is generated from the Dockerfile located in the root of the source and is built with the options provided in the hooks directory.
 
 Both images should be suitable to be used as a building block or even directly if your build environment needs no other dependencies.  These images are especially useful for various CI systems that require a Docker image to be used.
 
 Images are tagged such that 'master' represents the last successful Docker image build of the master branch.  Images based off of the official source releases are tagged with a matching version number (e.g., 0.9.0).  There is no 'latest' tagged image.  It is recommended that users choose a stable tag so as not to be surprised by incompatible changes.
 
-File Access
-========
+# File Access
 
 All of the executables that Apache Yetus provides requires access to one or more directories.  These directories should be provided on the command line via the volume flags to docker run. For example, to run shelldocs against test-patch.sh:
 
@@ -64,6 +69,7 @@
     --patch-dir=/patchdir \
     --project=yetus
 ```
+
 If your project needs additional dependencies, it is trivial to build off of the Apache Yetus image:
 
 ```Dockerfile
@@ -74,13 +80,13 @@
       valgrind \
       zlib1g-dev
 ```
- ```bash
+
+```bash
 docker build -t project/build:0.9.0 -f .
 ```
 
 This example builds a docker image based off of Apache Yetus 0.9.0 but with the additions of clang, some development libraries, and valgrind.  Now project/build:0.9.0 can be used instead of apache/yetus:0.9.0 since it has all of Apache Yetus and the additions needed by our project.
 
-A Note About Precommit
-================
+# A Note About Precommit
 
 test-patch and friends have direct support for Docker outside of the convenience images.  That information is covered in-depth in the[precommit-docker](../precommit-docker) section.
diff --git a/precommit/src/main/shell/coprocs.d/README.md b/precommit/src/main/shell/coprocs.d/README
similarity index 97%
rename from precommit/src/main/shell/coprocs.d/README.md
rename to precommit/src/main/shell/coprocs.d/README
index e960cad..ef64d67 100755
--- a/precommit/src/main/shell/coprocs.d/README.md
+++ b/precommit/src/main/shell/coprocs.d/README
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements.  See the NOTICE file distributed with
 # this work for additional information regarding copyright ownership.
@@ -22,4 +21,4 @@
 
 # bash v3 and lower will treat coproc commands as syntax errors
 # therefore, ALL functions which activate coprocs are located
-# here
\ No newline at end of file
+# here
diff --git a/precommit/src/main/shell/test-patch-docker/Dockerfile b/precommit/src/main/shell/test-patch-docker/Dockerfile
index c563dfd..52ba190 100644
--- a/precommit/src/main/shell/test-patch-docker/Dockerfile
+++ b/precommit/src/main/shell/test-patch-docker/Dockerfile
@@ -240,12 +240,12 @@
 ###
 # Install npm and JSHint
 ###
-# hadolint ignore=DL3008,DL3016
+# hadolint ignore=DL3008
 RUN curl -sL https://deb.nodesource.com/setup_11.x | bash - \
     && apt-get -q install --no-install-recommends -y nodejs \
     && apt-get clean \
     && rm -rf /var/lib/apt/lists/* && \
-    npm install -g jshint
+    npm install -g jshint@2.10.2 markdownlint-cli@0.15.0
 
 ####
 # YETUS CUT HERE
diff --git a/precommit/src/main/shell/test-patch.d/markdownlint.sh b/precommit/src/main/shell/test-patch.d/markdownlint.sh
new file mode 100755
index 0000000..884836d
--- /dev/null
+++ b/precommit/src/main/shell/test-patch.d/markdownlint.sh
@@ -0,0 +1,166 @@
+#!/usr/bin/env bash
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# no public APIs here
+# SHELLDOC-IGNORE
+
+add_test_type markdownlint
+
+MARKDOWNLINT_TIMER=0
+MARKDOWNLINT=${MARKDOWNLINT:-$(command -v markdownlint 2>/dev/null)}
+
+# files that are going to get markdownlint'd
+MARKDOWNLINT_CHECKFILES=()
+
+function markdownlint_filefilter
+{
+  declare filename=$1
+
+  if [[ ${filename} =~ \.md$ ]]; then
+    add_test markdownlint
+    yetus_add_array_element MARKDOWNLINT_CHECKFILES "${filename}"
+  fi
+}
+
+function markdownlint_precheck
+{
+  if ! verify_command "markdownlint" "${MARKDOWNLINT}"; then
+    add_vote_table 0 markdownlint "markdownlint was not available."
+    delete_test markdownlint
+  fi
+}
+
+function markdownlint_logic
+{
+  declare repostatus=$1
+  declare i
+  declare fn
+  declare output
+
+  pushd "${BASEDIR}" >/dev/null || return 1
+
+  for i in "${MARKDOWNLINT_CHECKFILES[@]}"; do
+    if [[ -f "${i}" ]]; then
+      fn=""
+      while read -r; do
+        if [[ -z "${fn}" ]]; then
+          fn=$REPLY
+        elif [[ -n "${REPLY}" ]]; then
+          # (space)line:col(space)error/warning(space)text
+          output=$(echo "${REPLY}" | awk '{$1=$1":"; $2=$2":"; print $0;}')
+          # fn:line:col:(space)error/warning:(space)text
+          echo "${fn}:${output}" >> "${PATCH_DIR}/${repostatus}-markdownlint-result.txt"
+        fi
+      done < <("${MARKDOWNLINT}" "${i}" 2>&1)
+    fi
+  done
+  popd > /dev/null || return 1
+}
+
+function markdownlint_preapply
+{
+  if ! verify_needed_test markdownlint; then
+    return 0
+  fi
+
+  big_console_header "markdownlint plugin: ${PATCH_BRANCH}"
+
+  start_clock
+
+  markdownlint_logic branch
+
+  # keep track of how much as elapsed for us already
+  MARKDOWNLINT_TIMER=$(stop_clock)
+  return 0
+}
+
+function markdownlint_calcdiffs
+{
+  column_calcdiffs "$@"
+}
+
+function markdownlint_postapply
+{
+  declare i
+  declare numPrepatch
+  declare numPostpatch
+  declare diffPostpatch
+  declare fixedpatch
+  declare statstring
+  declare version
+
+  if ! verify_needed_test markdownlint; then
+    return 0
+  fi
+
+  big_console_header "markdownlint plugin: ${BUILDMODE}"
+
+  start_clock
+
+  # add our previous elapsed to our new timer
+  # by setting the clock back
+  offset_clock "${MARKDOWNLINT_TIMER}"
+
+  markdownlint_logic patch
+
+  # shellcheck disable=SC2016
+  version=$("${MARKDOWNLINT}" --version 2>&1)
+  add_version_data markdownlint "${version#* }"
+
+  calcdiffs \
+    "${PATCH_DIR}/branch-markdownlint-result.txt" \
+    "${PATCH_DIR}/patch-markdownlint-result.txt" \
+    markdownlint \
+      > "${PATCH_DIR}/diff-patch-markdownlint.txt"
+
+  # shellcheck disable=SC2016
+  numPrepatch=$(wc -l "${PATCH_DIR}/branch-markdownlint-result.txt" | "${AWK}" '{print $1}')
+
+  # shellcheck disable=SC2016
+  numPostpatch=$(wc -l "${PATCH_DIR}/patch-markdownlint-result.txt" | "${AWK}" '{print $1}')
+
+  # shellcheck disable=SC2016
+  diffPostpatch=$(wc -l "${PATCH_DIR}/diff-patch-markdownlint.txt" | "${AWK}" '{print $1}')
+
+
+  ((fixedpatch=numPrepatch-numPostpatch+diffPostpatch))
+
+  statstring=$(generic_calcdiff_status "${numPrepatch}" "${numPostpatch}" "${diffPostpatch}" )
+
+  if [[ ${diffPostpatch} -gt 0 ]] ; then
+    add_vote_table -1 markdownlint "${BUILDMODEMSG} ${statstring}"
+    add_footer_table markdownlint "@@BASE@@/diff-patch-markdownlint.txt"
+    bugsystem_linecomments_queue "markdownlint" "${PATCH_DIR}/diff-patch-markdownlint.txt"
+    return 1
+  elif [[ ${fixedpatch} -gt 0 ]]; then
+    add_vote_table +1 markdownlint "${BUILDMODEMSG} ${statstring}"
+    return 0
+  fi
+
+  add_vote_table +1 markdownlint "There were no new markdownlint issues."
+  return 0
+}
+
+function markdownlint_postcompile
+{
+  declare repostatus=$1
+
+  if [[ "${repostatus}" = branch ]]; then
+    markdownlint_preapply
+  else
+    markdownlint_postapply
+  fi
+}
