diff --git a/DISCLAIMER b/DISCLAIMER
new file mode 100644
index 0000000..6a6b970
--- /dev/null
+++ b/DISCLAIMER
@@ -0,0 +1,23 @@
+#
+# 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.0s
+#
+# Unless required bgit y 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.
+
+Apache Liminal is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the name of Apache TLP sponsor. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision-making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
+
+Some of the incubating project’s releases may not be fully compliant with ASF policy. For example, releases may have incomplete or un-reviewed licensing conditions. What follows is a list of issues the project is currently aware of (this list is likely to be incomplete): List of known issues goes here
+
+If you are planning to incorporate this work into your product/project, please be aware that you will need to conduct a thorough licensing review to determine the overall implications of including this work. For the current status of this project through the Apache Incubator, visit: https://incubator.apache.org/clutch/liminal.html
\ No newline at end of file
diff --git a/dev/RELEASE.md b/dev/RELEASE.md
index 8a80aeb..8f76ad9 100644
--- a/dev/RELEASE.md
+++ b/dev/RELEASE.md
@@ -544,6 +544,17 @@
 pip install apache-liminal==<LIMINAL_BUID_VERSION>rc<X>
 ```
 
+### Seek approval from Incubator PMC
+
+[Post to the Incubator’s general list requesting approval from the Incubator PMC](https://lists.apache.org/thread.html/06655226ba08c16a8cb273f9b45e0b0a15ebaed0d06783fdd06a03f6@%3Cgeneral.incubator.apache.org%3E).
+Should the Incubator PMC vote to approve a release, the Podling MAY make that release available to the public under these conditions:
+
+* The release archive(s) MUST include the word "incubating" in the filename.
+* The release archive(s) MUST contain a disclaimer found in DISCLAIMER file.
+
+Releases for the Podling MUST be distributed through http://www.apache.org/dist/incubator/Podling
+https://lists.apache.org/thread.html/06655226ba08c16a8cb273f9b45e0b0a15ebaed0d06783fdd06a03f6@%3Cgeneral.incubator.apache.org%3E
+
 ## Publish the final Apache Liminal release
 
 ### Summarize the voting for the Apache Liminal release
