This directory contains the source for the standard top-level project template
in AsciiDoc format, the build script, and generated output.

Note that the build script is configured to generate output for a specific version
of the document and running the build my overwrite an existing document.

The output files (*.html) may be live documents that are included by the master
document found in the parent directory (this is true from version 1.2
forward), so take care with what you commit.