diff --git a/docs/vale/.vale.ini b/docs/vale/.vale.ini
index 0fbe065755c821863e40c799c936f65383c395f8..6724b00c14f4c382cade7b9f3dc5fbd0394e616c 100644
--- a/docs/vale/.vale.ini
+++ b/docs/vale/.vale.ini
@@ -8,6 +8,16 @@ Packages = proselint, Microsoft
 
 [*]
 BasedOnStyles = Vale, proselint, Microsoft
+; Found to be too intrusive
+Microsoft.Passive = NO
+; We are not a general audience
+Microsoft.GeneralURL = NO
+; It's okay to leave TODOs in the code, that's what they're for
+proselint.Annotations = NO
+; Replacing a ... with … shouldn't be holding back the entire CI pipeline
+proselint.Typography = warning
+; Same applies for not using contractions
+Microsoft.Contractions = warning
 
 [formats]
 py = rst
diff --git a/lso/playbook.py b/lso/playbook.py
index 1f7e8b749474895e9353cbf6b5958d7e46d930a1..73fac95a30a6bf429e63b9d97f1769548f33df3e 100644
--- a/lso/playbook.py
+++ b/lso/playbook.py
@@ -122,7 +122,7 @@ def _run_playbook_proc(job_id: str, playbook_path: str, extra_vars: dict, invent
                 parsed_output.append(task_output["event_data"])
 
         except json.JSONDecodeError:
-            #  If the line cannot be decoded as JSON, include it in its entirety.
+            #  If the line can't be decoded as JSON, include it in its entirety.
             parsed_output.append({"invalid_json": line})
 
     payload = [
@@ -148,9 +148,11 @@ def run_playbook(playbook_path: str, extra_vars: dict, inventory: str, callback:
     :param dict extra_vars: Any extra vars needed for the playbook to run.
     :param [str] inventory: The inventory that the playbook is executed
                             against.
+
     :param :class:`HttpUrl` callback: Callback URL where the playbook should send a status
         update when execution is completed. This is used for
         workflow-orchestrator to continue with the next step in a workflow.
+
     :return: Result of playbook launch, this could either be successful or
         unsuccessful.
     :rtype: :class:`PlaybookLaunchResponse`