diff --git a/.markdownlint-cli2.yaml b/.markdownlint-cli2.yaml
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_Lm1hcmtkb3dubGludC1jbGkyLnlhbWw=..ad4c3307314a8efc2ef4f399740a53ab05ed8640_Lm1hcmtkb3dubGludC1jbGkyLnlhbWw= 100644
--- a/.markdownlint-cli2.yaml
+++ b/.markdownlint-cli2.yaml
@@ -16,7 +16,12 @@
     style: "atx"
   hr-style:                         # MD035
     style: "---"
-  line-length: false                # MD013
+  line-length:                      # MD013
+    code_blocks: false
+    tables: false
+    headings: true
+    heading_line_length: 100
+    line_length: 800
   no-duplicate-heading:             # MD024
     siblings_only: true
   no-emphasis-as-heading: false     # MD036
diff --git a/.vale.ini b/.vale.ini
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_LnZhbGUuaW5p..ad4c3307314a8efc2ef4f399740a53ab05ed8640_LnZhbGUuaW5p 100644
--- a/.vale.ini
+++ b/.vale.ini
@@ -6,4 +6,7 @@
 MinAlertLevel = suggestion
 
 [*.md]
-BasedOnStyles = gitlab
+BasedOnStyles = gitlab_base, gitlab_docs
+
+# Ignore SVG markup
+TokenIgnores = (\*\*\{\w*\}\*\*)
diff --git a/doc/.vale/gitlab/AlertBoxStyle.yml b/doc/.vale/gitlab/AlertBoxStyle.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9BbGVydEJveFN0eWxlLnltbA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/AlertBoxStyle.yml
+++ /dev/null
@@ -1,20 +0,0 @@
----
-# Error: gitlab.AlertBoxStyle
-#
-# Makes sure alert boxes are used with block quotes. Checks for 3 formatting issues:
-#
-# - Alert boxes inside a block quote ('>')
-# - Alert boxes with the note text on the same line
-# - Alert boxes using words other than 'NOTE' or 'WARNING'
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Update the format of the '%s' alert box. View the style guide for details."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#alert-boxes
-level: error
-nonword: true
-scope: raw
-raw:
-  - '(\n *\> *(?:NOTE|WARNING)|'
-  - '\n\n(NOTE|WARNING):[^\n]|'
-  - '\n\n *(?:> )?\**(Note|note|TIP|Tip|tip|CAUTION|Caution|caution|DANGER|Danger|danger|Warning|warning):.*)'
diff --git a/doc/.vale/gitlab/BadPlurals.yml b/doc/.vale/gitlab/BadPlurals.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9CYWRQbHVyYWxzLnltbA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/BadPlurals.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-# Warning: gitlab.BadPlurals
-#
-# Don't write plural words with the '(s)' construction. 'HTTP(S)' is acceptable.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Rewrite '%s' to be plural without parentheses."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#s
-level: warning
-ignorecase: true
-raw:
-  - '\b\w+\(s\)(?<!http\(s\))'
diff --git a/doc/.vale/gitlab/Badges-Offerings.yml b/doc/.vale/gitlab/Badges-Offerings.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9CYWRnZXMtT2ZmZXJpbmdzLnltbA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/Badges-Offerings.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-# Warning: gitlab.Badges-Offerings
-#
-# Tests the offering information in the tier badges that appear below topic titles.
-#
-# For a list of all options, see https://docs.gitlab.com/ee/development/documentation/styleguide/#available-product-tier-badges
-extends: existence
-message: "Offerings should be comma-separated, without `and`, and must be capitalized. Example: `GitLab.com, Self-managed, GitLab Dedicated`."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/#available-product-tier-badges
-level: error
-scope: raw
-raw:
-- (?<=\n\*\*Offering:\*\* )(Dedicated|[^\n]*(SaaS|self-managed|Self-Managed|GitLab dedicated|and|GitLab Dedicated,|, GitLab\.com|, Dedicated))
diff --git a/doc/.vale/gitlab/Badges-Tiers.yml b/doc/.vale/gitlab/Badges-Tiers.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9CYWRnZXMtVGllcnMueW1s..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/Badges-Tiers.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-# Warning: gitlab.Badges-Tiers
-#
-# Tests the tier information in the tier badges that appear below topic titles.
-#
-# For a list of all options, see https://docs.gitlab.com/ee/development/documentation/styleguide/#available-product-tier-badges
-extends: existence
-message: "Tiers should be capitalized, comma-separated, and ordered lowest to highest."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/#available-product-tier-badges
-level: error
-scope: raw
-raw:
-- (?<=\n\*\*Tier:\*\*)[^\n]*(free|premium|ultimate|, Free|Ultimate,)
diff --git a/doc/.vale/gitlab/British.yml b/doc/.vale/gitlab/British.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9Ccml0aXNoLnltbA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/British.yml
+++ /dev/null
@@ -1,120 +0,0 @@
----
-# Error: gitlab.British
-#
-# Checks that US spelling is used instead of British spelling.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: substitution
-message: "Use the US spelling '%s' instead of the British '%s'."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#language
-level: error
-ignorecase: true
-swap:
-  aeon: eon
-  aeroplane: airplane
-  ageing: aging
-  aluminium: aluminum
-  anaemia: anemia
-  anaesthesia: anesthesia
-  analyse: analyze
-  annexe: annex
-  apologise: apologize
-  authorise: authorize
-  authorised: authorized
-  authorisation: authorization
-  authorising: authorizing
-  behaviour: behavior
-  busses: buses
-  calibre: caliber
-  categorise: categorize
-  categorised: categorized
-  categorises: categorizes
-  categorising: categorizing
-  centre: center
-  cheque: check
-  civilisation: civilization
-  civilise: civilize
-  colour: color
-  cosy: cozy
-  cypher: cipher
-  dependant: dependent
-  defence: defense
-  distil: distill
-  draught: draft
-  encyclopaedia: encyclopedia
-  enquiry: inquiry
-  enrol: enroll
-  enrolment: enrollment
-  enthral: enthrall
-  # equalled: equaled // Under discussion
-  # equalling: equaling // Under discussion
-  favourite: favorite
-  fibre: fiber
-  fillet: filet
-  flavour: flavor
-  furore: furor
-  fulfil: fulfill
-  gaol: jail
-  grey: gray
-  humour: humor
-  honour: honor
-  initialled: initialed
-  initialling: initialing
-  instil: instill
-  jewellery: jewelry
-  labelling: labeling
-  labelled: labeled
-  labour: labor
-  libellous: libelous
-  licence: license
-  likeable: likable
-  liveable: livable
-  lustre: luster
-  manoeuvre: maneuver
-  marvellous: marvelous
-  matt: matte
-  meagre: meager
-  metre: meter
-  modelling: modeling
-  moustache: mustache
-  neighbour: neighbor
-  normalise: normalize
-  offence: offense
-  optimise: optimize
-  optimised: optimized
-  optimising: optimizing
-  organise: organize
-  orientated: oriented
-  paralyse: paralyze
-  plough: plow
-  pretence: pretense
-  programme: program
-  pyjamas: pajamas
-  rateable: ratable
-  realise: realize
-  recognise: recognize
-  reconnoitre: reconnoiter
-  rumour: rumor
-  sabre: saber
-  saleable: salable
-  saltpetre: saltpeter
-  sceptic: skeptic
-  sepulchre: sepulcher
-  signalling: signaling
-  sizeable: sizable
-  skilful: skillful
-  sombre: somber
-  smoulder: smolder
-  speciality: specialty
-  spectre: specter
-  splendour: splendor
-  standardise: standardize
-  standardised: standardized
-  sulphur: sulfur
-  theatre: theater
-  travelled: traveled
-  traveller: traveler
-  travelling: traveling
-  unshakeable: unshakable
-  wilful: willful
-  yoghurt: yogurt
diff --git a/doc/.vale/gitlab/CIConfigFile.yml b/doc/.vale/gitlab/CIConfigFile.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9DSUNvbmZpZ0ZpbGUueW1s..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/CIConfigFile.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-# Error: gitlab.CIConfigFile
-#
-# Checks that the `.gitlab-ci.yml` file is referenced properly.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Change the file name to be exactly '.gitlab-ci.yml'."
-link: https://docs.gitlab.com/ee/development/documentation/versions.html
-level: error
-scope: raw
-raw:
-  - '(?!`\.gitlab-ci\.yml`)`.?gitlab.?ci.?ya?ml`'
diff --git a/doc/.vale/gitlab/CodeblockFences.yml b/doc/.vale/gitlab/CodeblockFences.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9Db2RlYmxvY2tGZW5jZXMueW1s..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/CodeblockFences.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-# Error: gitlab.CodeblockFences
-#
-# Ensures all codeblock language tags use the full name, not aliases.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Instead of '%s' for the code block, use yaml, ruby, plaintext, markdown, javascript, shell, go, python, dockerfile, or typescript."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#code-blocks
-level: error
-scope: raw
-raw:
-  - '\`\`\`(yml|rb|text|md|bash|sh\n|js\n|golang\n|py\n|docker\n|ts)'
diff --git a/doc/.vale/gitlab/CommandStringsQuoted.yml b/doc/.vale/gitlab/CommandStringsQuoted.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9Db21tYW5kU3RyaW5nc1F1b3RlZC55bWw=..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/CommandStringsQuoted.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-# Error: gitlab.CommandStringsQuoted
-#
-# Ensures all code blocks wrap URL strings in quotation marks.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "For the command example, use double quotes around the URL: %s"
-link: https://docs.gitlab.com/ee/development/documentation/restful_api_styleguide.html#curl-commands
-level: error
-scope: raw
-nonword: true
-tokens:
-  - '(curl|--url)[^"\]\n]+?https?:\/\/[^ \n]*'
diff --git a/doc/.vale/gitlab/CurrentStatus.yml b/doc/.vale/gitlab/CurrentStatus.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9DdXJyZW50U3RhdHVzLnltbA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/CurrentStatus.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-# Warning: gitlab.CurrentStatus
-#
-# Checks for words that indicate a product or feature may change in the future.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Remove '%s'. The documentation reflects the current state of the product."
-level: warning
-ignorecase: true
-link: https://docs.gitlab.com/ee/development/documentation/versions.html#promising-features-in-future-versions
-tokens:
-  - currently
diff --git a/doc/.vale/gitlab/DefaultBranch.yml b/doc/.vale/gitlab/DefaultBranch.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9EZWZhdWx0QnJhbmNoLnltbA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/DefaultBranch.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-# Warning: gitlab.DefaultBranch
-#
-# Do not refer to the default branch as the 'master' branch, if possible.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Use 'default branch' or `main` instead of `master`, when possible."
-level: warning
-ignorecase: true
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#default-branch
-scope: raw
-raw:
-  - '\`master\`'
diff --git a/doc/.vale/gitlab/Dropdown.yml b/doc/.vale/gitlab/Dropdown.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9Ecm9wZG93bi55bWw=..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/Dropdown.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-# Suggestion: gitlab.Dropdown
-#
-# Catches many ways the phrase 'dropdown list' can be fumbled.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Use 'dropdown list'."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#dropdown-list
-level: warning
-ignorecase: true
-tokens:
-  - drop-down( [\w]*)?
-  - dropdown(?! list)
diff --git a/doc/.vale/gitlab/EOLWhitespace.yml b/doc/.vale/gitlab/EOLWhitespace.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9FT0xXaGl0ZXNwYWNlLnltbA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/EOLWhitespace.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-# Warning: gitlab.EOLWhitespace
-#
-# Checks that there is no useless whitespace at the end of lines.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Remove whitespace characters from the end of the line."
-link: https://docs.gitlab.com/ee/development/documentation/versions.html
-level: warning
-scope: raw
-raw:
-  - ' +\n'
diff --git a/doc/.vale/gitlab/ElementDescriptors.yml b/doc/.vale/gitlab/ElementDescriptors.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9FbGVtZW50RGVzY3JpcHRvcnMueW1s..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/ElementDescriptors.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-# Warning: gitlab.ElementDescriptors
-#
-# Suggests the correct way to describe a button.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "If possible, rewrite to remove 'button'."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#button
-level: warning
-ignorecase: true
-scope: raw
-raw:
-  - \*\*[^*]+\*\*\s+button
diff --git a/doc/.vale/gitlab/FutureTense.yml b/doc/.vale/gitlab/FutureTense.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9GdXR1cmVUZW5zZS55bWw=..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/FutureTense.yml
+++ /dev/null
@@ -1,16 +0,0 @@
----
-# Warning: gitlab.FutureTense
-#
-# Checks for use of future tense in sentences. Present tense is strongly preferred.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Instead of future tense '%s', use present tense."
-ignorecase: true
-level: warning
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#future-tense
-raw:
-  - "(going to( |\n|[[:punct:]])[a-zA-Z]*|"
-  - "will( |\n|[[:punct:]])[a-zA-Z]*|"
-  - "won't( |\n|[[:punct:]])[a-zA-Z]*|"
-  - "[a-zA-Z]*'ll( |\n|[[:punct:]])[a-zA-Z]*)"
diff --git a/doc/.vale/gitlab/GitLabFlavoredMarkdown.yml b/doc/.vale/gitlab/GitLabFlavoredMarkdown.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9HaXRMYWJGbGF2b3JlZE1hcmtkb3duLnltbA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/GitLabFlavoredMarkdown.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-# Warning: gitlab.GitLabFlavoredMarkdown
-#
-# Checks for unclear use of GLFM or GLM instead of GitLab/GitHub Flavored Markdown
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: substitution
-message: "Use '%s' instead of '%s' when possible."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html
-level: warning
-ignorecase: true
-swap:
-  GLFM: "GitLab Flavored Markdown"
-  GFM: "GitLab Flavored Markdown' or 'GitHub Flavored Markdown"
diff --git a/doc/.vale/gitlab/HeadingContent.yml b/doc/.vale/gitlab/HeadingContent.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9IZWFkaW5nQ29udGVudC55bWw=..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/HeadingContent.yml
+++ /dev/null
@@ -1,19 +0,0 @@
----
-# Warning: gitlab.HeadingContent
-#
-# Checks for generic, unhelpful subheadings.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Rename the heading '%s', or re-purpose the content elsewhere."
-level: warning
-link: https://docs.gitlab.com/ee/development/documentation/topic_types/concept.html#concept-topic-titles
-ignorecase: true
-nonword: true
-scope: raw
-tokens:
-  - '\#+ How it works'
-  - '\#+ Limitations'
-  - '\#+ Overview'
-  - '\#+ Use cases?'
-  - '\#+ Important notes?'
diff --git a/doc/.vale/gitlab/HeadingDepth.yml b/doc/.vale/gitlab/HeadingDepth.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9IZWFkaW5nRGVwdGgueW1s..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/HeadingDepth.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-# Suggestion: gitlab.HeadingDepth
-#
-# Checks that there are no headings greater than 3 levels
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Refactor the section or page to avoid headings greater than H5."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#heading-levels-in-markdown
-level: suggestion
-scope: raw
-raw:
-  - '(?<=\n)#{6,}\s.*'
diff --git a/doc/.vale/gitlab/HistoryItems.yml b/doc/.vale/gitlab/HistoryItems.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9IaXN0b3J5SXRlbXMueW1s..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/HistoryItems.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-# Warning: gitlab.HistoryItems
-#
-# Ensures history items are properly formatted.
-#
-extends: existence
-message: "History items must always start with '> -', one item per line, even if there is only one item."
-link: https://docs.gitlab.com/ee/development/documentation/versions.html#add-a-version-history-item
-level: error
-scope: raw
-raw:
-  - '(?m)(?<=^#+[^\n]*\n\n)> [^-]|'
-  - '^> - [^\n]*\n[^\n>`]'
diff --git a/doc/.vale/gitlab/HistoryItemsOrder.yml b/doc/.vale/gitlab/HistoryItemsOrder.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9IaXN0b3J5SXRlbXNPcmRlci55bWw=..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/HistoryItemsOrder.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-# Warning: gitlab.HistoryItemsOrder
-#
-# Ensures history items come before the Details block.
-#
-extends: existence
-message: "History items must follow the tier, offering, or status details."
-link: https://docs.gitlab.com/ee/development/documentation/versions.html#add-a-version-history-item
-level: error
-scope: raw
-raw:
-  - '(?m)^\>[^\n]*\n\nDETAILS'
diff --git a/doc/.vale/gitlab/InclusionAbleism.yml b/doc/.vale/gitlab/InclusionAbleism.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9JbmNsdXNpb25BYmxlaXNtLnltbA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/InclusionAbleism.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-# Warning: gitlab.InclusionAbleism
-#
-# Suggests alternatives for words that foster ableism.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: substitution
-message: "Use inclusive language. Consider '%s' instead of '%s'."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html
-level: warning
-ignorecase: true
-swap:
-  sanity (?:check|test): check for completeness
-  dummy: placeholder, sample, fake
diff --git a/doc/.vale/gitlab/InclusionCultural.yml b/doc/.vale/gitlab/InclusionCultural.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9JbmNsdXNpb25DdWx0dXJhbC55bWw=..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/InclusionCultural.yml
+++ /dev/null
@@ -1,16 +0,0 @@
----
-# Warning: gitlab.InclusionCultural
-#
-# Suggests alternatives for words that are culturally inappropriate.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: substitution
-message: "Use inclusive language. Consider '%s' instead of '%s'."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html
-level: warning
-ignorecase: true
-swap:
-  blacklist(?:ed|ing|s)?: denylist
-  whitelist(?:ed|ing|s)?: allowlist
-  master: primary, main
-  slave: secondary
diff --git a/doc/.vale/gitlab/InclusionGender.yml b/doc/.vale/gitlab/InclusionGender.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9JbmNsdXNpb25HZW5kZXIueW1s..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/InclusionGender.yml
+++ /dev/null
@@ -1,18 +0,0 @@
----
-# Warning: gitlab.InclusionGender
-#
-# Suggests alternatives for words that are gender-specific.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: substitution
-message: "Use inclusive language. Consider '%s' instead of '%s'."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html
-level: warning
-ignorecase: true
-swap:
-  mankind: humanity, people
-  manpower: GitLab team members
-  he: they
-  his: their
-  she: they
-  hers: their
diff --git a/doc/.vale/gitlab/InternalLinkCase.yml b/doc/.vale/gitlab/InternalLinkCase.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9JbnRlcm5hbExpbmtDYXNlLnltbA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/InternalLinkCase.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-# Error: gitlab.InternalLinkCase
-#
-# Checks that anchor fragments on internal links are in lower-case.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Use lowercase for the anchor link."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#anchor-links
-level: error
-scope: raw
-raw:
-  - '[^\`]\[[^\[\]]+\]\((https?:){0}[\w\/\.]*?#[^\s]*?[A-Z][^\) ]*\)[^\`]'
diff --git a/doc/.vale/gitlab/InternalLinkExtension.yml b/doc/.vale/gitlab/InternalLinkExtension.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9JbnRlcm5hbExpbmtFeHRlbnNpb24ueW1s..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/InternalLinkExtension.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-# Error: gitlab.InternalLinkExtension
-#
-# Checks that internal links have .md extenstion and not .html extension.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Link to a file and use the .md file extension instead of .html."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#links
-level: error
-scope: raw
-raw:
-  - '\[[^\]]+\]\([^:\)]+(\/(#[^\)]+)?\)|\.html(#.+)?\))'
diff --git a/doc/.vale/gitlab/InternalLinkFormat.yml b/doc/.vale/gitlab/InternalLinkFormat.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9JbnRlcm5hbExpbmtGb3JtYXQueW1s..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/InternalLinkFormat.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-# Error: gitlab.InternalLinkFormat
-#
-# Checks that internal link paths don't start with '/' or './'.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Edit the link so it does not start with '/' or './'."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#links
-level: error
-scope: raw
-raw:
-  - '\[[^\]]+\]\(\.?\/(?!uploads|documentation).*?\)'
diff --git a/doc/.vale/gitlab/LatinTerms.yml b/doc/.vale/gitlab/LatinTerms.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9MYXRpblRlcm1zLnltbA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/LatinTerms.yml
+++ /dev/null
@@ -1,17 +0,0 @@
----
-# Warning: gitlab.LatinTerms
-#
-# Checks for use of Latin terms.
-# Uses https://github.com/errata-ai/Google/blob/master/Google/Latin.yml for ideas.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: substitution
-message: "Use '%s' instead of '%s', but consider rewriting the sentence."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html
-level: warning
-nonword: true
-ignorecase: true
-swap:
-  '\b(?:e\.?g[\s.,;:])': for example
-  '\b(?:i\.?e[\s.,;:])': that is
-  '\bvia\b': "with', 'through', or 'by using"
diff --git a/doc/.vale/gitlab/Level.yml b/doc/.vale/gitlab/Level.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9MZXZlbC55bWw=..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/Level.yml
+++ /dev/null
@@ -1,18 +0,0 @@
----
-# Suggestion: gitlab.Level
-#
-# Avoid variations on the phrase "instance level" and "group level"
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Avoid using 'level' when referring to groups, instances, or projects: '%s'"
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#level
-level: suggestion
-ignorecase: true
-tokens:
-  - 'instance level'
-  - 'instance-level'
-  - 'group level'
-  - 'group-level'
-  - 'project level'
-  - 'project-level'
diff --git a/doc/.vale/gitlab/MeaningfulLinkWords.yml b/doc/.vale/gitlab/MeaningfulLinkWords.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9NZWFuaW5nZnVsTGlua1dvcmRzLnltbA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/MeaningfulLinkWords.yml
+++ /dev/null
@@ -1,17 +0,0 @@
----
-# Warning: gitlab.MeaningfulLinkWords
-#
-# Checks for the presence of semantically unhelpful words in link text.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Improve SEO and accessibility by rewriting the link text for '%s'."
-level: warning
-ignorecase: true
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#text-for-links
-scope: raw
-nonword: true
-tokens:
-  - '\[here\](?=\(.*\))'
-  - '\[this\](?=\(.*\))'
-  - '\[this page\](?=\(.*\))'
diff --git a/doc/.vale/gitlab/MergeConflictMarkers.yml b/doc/.vale/gitlab/MergeConflictMarkers.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9NZXJnZUNvbmZsaWN0TWFya2Vycy55bWw=..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/MergeConflictMarkers.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-# Error: gitlab.MergeConflictMarkers
-#
-# Checks for the presence of merge conflict markers.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Remove the merge conflict marker '%s'."
-link: https://docs.gitlab.com/ee/development/code_review.html#merging-a-merge-request
-level: error
-scope: raw
-raw:
-  - '\n<<<<<<< .+\n|\n=======\n|\n>>>>>>> .+\n'
diff --git a/doc/.vale/gitlab/MultiLineLinks.yml b/doc/.vale/gitlab/MultiLineLinks.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9NdWx0aUxpbmVMaW5rcy55bWw=..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/MultiLineLinks.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-# Error: gitlab.MultiLineLinks
-#
-# Checks that links are all on a single line.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Put the full link on one line, even if the link is very long."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#links
-level: error
-scope: raw
-raw:
-  - '\[[^\[\]]*?\n[^\[\]]*?\]\([^\)]*?\)|'
-  - '\[[^\[\]]*?\]\([^\)]*?\n[^\)]*\)'
diff --git a/doc/.vale/gitlab/NonStandardQuotes.yml b/doc/.vale/gitlab/NonStandardQuotes.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9Ob25TdGFuZGFyZFF1b3Rlcy55bWw=..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/NonStandardQuotes.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-# Warning: gitlab.NonStandardQuotes
-#
-# Use only standard single and double quotes, not left or right quotes.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Use standard single quotes or double quotes only. Do not use left or right quotes."
-level: warning
-ignorecase: true
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#punctuation
-scope: raw
-raw:
-  - '[‘’“”]'
diff --git a/doc/.vale/gitlab/Normal.yml b/doc/.vale/gitlab/Normal.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9Ob3JtYWwueW1s..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/Normal.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-# Warning: gitlab.Normal
-#
-# Suggests alternatives for 'normal'.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: substitution
-message: "Use '%s' instead of '%s'."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html
-level: warning
-ignorecase: true
-swap:
-  normally: "usually' or 'typically"
-  normal:  "typical' or 'standard"
diff --git a/doc/.vale/gitlab/OutdatedVersions.yml b/doc/.vale/gitlab/OutdatedVersions.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9PdXRkYXRlZFZlcnNpb25zLnltbA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/OutdatedVersions.yml
+++ /dev/null
@@ -1,26 +0,0 @@
----
-# Suggestion: gitlab.OutdatedVersions
-#
-# Checks for references to versions of GitLab that are no longer supported.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "If possible, remove the reference to '%s'."
-link: https://docs.gitlab.com/ee/development/documentation/versions.html
-level: suggestion
-nonword: true
-ignorecase: true
-tokens:
-  - "GitLab (v)?2."
-  - "GitLab (v)?3."
-  - "GitLab (v)?4."
-  - "GitLab (v)?5."
-  - "GitLab (v)?6."
-  - "GitLab (v)?7."
-  - "GitLab (v)?8."
-  - "GitLab (v)?9."
-  - "GitLab (v)?10."
-  - "GitLab (v)?11."
-  - "GitLab (v)?12."
-  - "GitLab (v)?13."
-  - "GitLab (v)?14."
diff --git a/doc/.vale/gitlab/OxfordComma.yml b/doc/.vale/gitlab/OxfordComma.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9PeGZvcmRDb21tYS55bWw=..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/OxfordComma.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-# Warning: gitlab.OxfordComma
-#
-# Checks for the lack of an Oxford comma. In some cases, will catch overly complex sentence structures with lots of commas.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Use a comma before the last 'and' or 'or' in a list of four or more items."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#punctuation
-level: warning
-raw:
-  - '(?:[\w-_` ]+,){2,}(?:[\w-_` ]+) (and |or )'
diff --git a/doc/.vale/gitlab/Possessive.yml b/doc/.vale/gitlab/Possessive.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9Qb3NzZXNzaXZlLnltbA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/Possessive.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-# Error: gitlab.Possessive
-#
-# The word GitLab should not be used in the possessive form.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Remove 's from %s."
-level: error
-ignorecase: true
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#gitlab
-tokens:
-  - GitLab's
diff --git a/doc/.vale/gitlab/Prerequisites.yml b/doc/.vale/gitlab/Prerequisites.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9QcmVyZXF1aXNpdGVzLnltbA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/Prerequisites.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-# Error: gitlab.Prerequisites
-#
-# The "Prerequisites:" line should always be plural.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Pluralize 'Prerequisites', even if it includes only one item."
-link: https://docs.gitlab.com/ee/development/documentation/topic_types/task.html#task-prerequisites
-level: warning
-nonword: true
-scope: text
-raw:
-  - '^Prerequisite:'
diff --git a/doc/.vale/gitlab/ReadingLevel.yml b/doc/.vale/gitlab/ReadingLevel.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9SZWFkaW5nTGV2ZWwueW1s..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/ReadingLevel.yml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-# Suggestion: gitlab.ReadingLevel
-#
-# Checks the Flesch-Kincaid reading level.
-#
-# https://docs.errata.ai/vale/styles#metric
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: metric
-message: "The grade level is %s. Aim for 8th grade or lower by using shorter sentences and words."
-link: https://docs.gitlab.com/ee/development/documentation/testing/vale.html#readability-score
-level: suggestion
-formula: |
-  (0.39 * (words / sentences)) + (11.8 * (syllables / words)) - 15.59
-condition: "> 1"
diff --git a/doc/.vale/gitlab/ReferenceLinks.yml b/doc/.vale/gitlab/ReferenceLinks.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9SZWZlcmVuY2VMaW5rcy55bWw=..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/ReferenceLinks.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-# Error: gitlab.ReferenceLinks
-#
-# Checks for reference-style links that should be converted to inline links.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Put this link inline with the rest of the text."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#links
-level: error
-scope: raw
-raw:
-  - '\n\[[^\]]*\]: .*'
diff --git a/doc/.vale/gitlab/RelativeLinks.yml b/doc/.vale/gitlab/RelativeLinks.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9SZWxhdGl2ZUxpbmtzLnltbA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/RelativeLinks.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-# Error: gitlab.RelativeLinks
-#
-# Checks for the presence of absolute hyperlinks that should be relative.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Use a relative link instead of a URL, and ensure the file name ends in .md and not .html."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#links
-level: error
-scope: raw
-raw:
-  - '\[[^\]]+\]\(https?:\/\/docs\.gitlab\.com\/omnibus.*\)'
diff --git a/doc/.vale/gitlab/RelativeLinksDoubleSlashes.yml b/doc/.vale/gitlab/RelativeLinksDoubleSlashes.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9SZWxhdGl2ZUxpbmtzRG91YmxlU2xhc2hlcy55bWw=..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/RelativeLinksDoubleSlashes.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-# Error: gitlab.RelativeLinksDoubleSlashes
-#
-# Checks for the presence of double slashes in relative URLs.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Do not use double slashes '//' or '../doc' in the link path"
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#links
-level: error
-scope: raw
-raw:
-  - '(\.//)|(\.\.\/doc\/)'
diff --git a/doc/.vale/gitlab/Repetition.yml b/doc/.vale/gitlab/Repetition.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9SZXBldGl0aW9uLnltbA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/Repetition.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-# Error: gitlab.Repetition
-#
-# Checks for duplicate words, like `the the` or `and and`.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: repetition
-message: "Remove this duplicate word: '%s'."
-level: error
-alpha: true
-tokens:
-  - '[^\s]+'
diff --git a/doc/.vale/gitlab/SentenceLength.yml b/doc/.vale/gitlab/SentenceLength.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9TZW50ZW5jZUxlbmd0aC55bWw=..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/SentenceLength.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-# Suggestion: gitlab.SentenceLength
-#
-# Counts words in a sentence and alerts if a sentence exceeds 25 words.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: occurrence
-message: "Improve readability by using fewer than 25 words in this sentence."
-scope: sentence
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#language
-level: suggestion
-max: 25
-token: \b(\w+)\b
diff --git a/doc/.vale/gitlab/SentenceSpacing.yml b/doc/.vale/gitlab/SentenceSpacing.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9TZW50ZW5jZVNwYWNpbmcueW1s..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/SentenceSpacing.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-# Error: gitlab.SentenceSpacing
-#
-# Checks for incorrect spacing (no spaces, or more than one space) around punctuation.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Use exactly one space between sentences and clauses. Check '%s' for spacing problems."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#punctuation
-level: error
-nonword: true
-tokens:
-  - '[a-z][.?!,][A-Z]'
-  - '[\w.?!,\(\)\-":] {2,}[\w.?!,\(\)\-":]'
diff --git a/doc/.vale/gitlab/Simplicity.yml b/doc/.vale/gitlab/Simplicity.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9TaW1wbGljaXR5LnltbA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/Simplicity.yml
+++ /dev/null
@@ -1,18 +0,0 @@
----
-# Warning: gitlab.Simplicity
-#
-# Checks for words implying ease of use, to avoid cognitive dissonance for frustrated users.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Remove '%s'. Be precise instead of subjective."
-level: warning
-ignorecase: true
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html
-tokens:
-  - easy
-  - easily
-  - handy
-  - simple
-  - simply
-  - useful
diff --git a/doc/.vale/gitlab/Spelling.yml b/doc/.vale/gitlab/Spelling.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9TcGVsbGluZy55bWw=..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/Spelling.yml
+++ /dev/null
@@ -1,16 +0,0 @@
----
-# Warning: gitlab.Spelling
-#
-# Checks for possible spelling mistakes in content, not code. Results from links using angle brackets (<https://example.com>) should be corrected.
-#
-# If a word is flagged as a spelling mistake incorrectly, such as a product name,
-# you can submit an MR to update `spelling-exceptions.txt` with the missing word.
-# Commands, like `git clone` must use backticks, and must not be added to the
-# exceptions.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: spelling
-message: "Check the spelling of '%s'. If the spelling is correct, ask a Technical Writer to add this word to the spelling exception list."
-level: warning
-ignore:
-  - gitlab/spelling-exceptions.txt
diff --git a/doc/.vale/gitlab/SubstitutionWarning.yml b/doc/.vale/gitlab/SubstitutionWarning.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9TdWJzdGl0dXRpb25XYXJuaW5nLnltbA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/SubstitutionWarning.yml
+++ /dev/null
@@ -1,70 +0,0 @@
----
-# Warning: gitlab.SubstitutionWarning
-#
-# Checks for misused terms or common shorthand that should not be used at GitLab, but can't be flagged as errors.
-# Substitutions.yml also exists.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: substitution
-message: "Use '%s' instead of '%s' when possible."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html
-level: warning
-ignorecase: true
-swap:
-  active user: "billable user"
-  active users: "billable users"
-  air(?:-| )?gapped: "offline environment"
-  bullet: "list item"
-  (?<!right-)click(?!-through): "select"
-  code base: "codebase"
-  config: "configuration"
-  confirmation box: "confirmation dialog"
-  confirmation dialog box: "confirmation dialog"
-  deselect: "clear"
-  deselected: "cleared"
-  dialog box: "dialog"
-  distro: "distribution"
-  docs: "documentation"
-  e-mail: "email"
-  emojis: "emoji"
-  ex: "for example"
-  file name: "filename"
-  filesystem: "file system"
-  fullscreen: "full screen"
-  info: "information"
-  installation from source: self-compiled installation
-  installations from source: self-compiled installations
-  it is recommended: "you should"
-  logged in user: "authenticated user"
-  logged-in user: "authenticated user"
-  machine-learning: "machine learning"
-  modal dialog: "dialog"
-  modal window: "dialog"
-  modal: "dialog"
-  n/a: "not applicable"
-  navigate to: "go to"
-  OAuth2: "OAuth 2.0"
-  omnibus gitlab: "Linux package"
-  'omnibus(?!\))': "Linux package"
-  once that: "after that"
-  once the: "after the"
-  once you: "after you"
-  open telemetry: "OpenTelemetry"
-  pack file: packfile
-  pack files: packfiles
-  pop-up window: "dialog"
-  pop-up: "dialog"
-  popup: "dialog"
-  repo: "repository"
-  signed in user: "authenticated user"
-  signed-in user: "authenticated user"
-  since: "because' or 'after"
-  source (?:install|installation): self-compiled installation
-  source (?:installs|installations): self-compiled installations
-  sub-group: "subgroup"
-  sub-groups: "subgroups"
-  timezone: "time zone"
-  utiliz(?:es?|ing): "use"
-  VSCode: "VS Code"
-  we recommend: "you should"
-  within: "in"
diff --git a/doc/.vale/gitlab/Substitutions.yml b/doc/.vale/gitlab/Substitutions.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9TdWJzdGl0dXRpb25zLnltbA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/Substitutions.yml
+++ /dev/null
@@ -1,69 +0,0 @@
----
-# Error: gitlab.Substitutions
-#
-# Checks for misused terms that should never be used at GitLab.
-# SubstitutionWarning.yml also exists.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: substitution
-message: "Use '%s' instead of '%s'."
-link: https://handbook.gitlab.com/handbook/communication/top-misused-terms/
-level: error
-ignorecase: true
-swap:
-  admin user: administrator
-  admin users: administrators
-  administrator permission: administrator access
-  administrator permissions: administrator access
-  administrator role: administrator access
-  at least the Owner role: the Owner role
-  can login: can log in
-  can log-in: can log in
-  can setup: can set up
-  can signin: can sign in
-  can sign-in: can sign in
-  codequality: code quality
-  Customer [Pp]ortal: Customers Portal
-  developer access: the Developer role
-  developer permission: the Developer role
-  developer permissions: the Developer role
-  disallow: prevent
-  frontmatter: front matter
-  GitLab self hosted: GitLab self-managed # https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#gitlab-self-managed
-  GitLab self-hosted: GitLab self-managed # https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#gitlab-self-managed
-  GitLabber: GitLab team member
-  GitLabbers: GitLab team members
-  GitLab-shell: GitLab Shell
-  gitlab omnibus: Linux package
-  golang: Go
-  guest access: the Guest role
-  guest permission: the Guest role
-  guest permissions: the Guest role
-  maintainer access: the Maintainer role
-  maintainer permission: the Maintainer role
-  maintainer permissions: the Maintainer role
-  owner access: the Owner role
-  owner permission: the Owner role
-  owner permissions: the Owner role
-  param: parameter
-  params: parameters
-  pg: PostgreSQL
-  'postgres$': PostgreSQL
-  raketask: Rake task
-  raketasks: Rake tasks
-  rspec: RSpec
-  reporter access: the Reporter role
-  reporter permission: the Reporter role
-  reporter permissions: the Reporter role
-  rubocop: RuboCop
-  self hosted GitLab: GitLab self-managed # https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#gitlab-self-managed
-  self-hosted GitLab: GitLab self-managed # https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#gitlab-self-managed
-  styleguide: style guide
-  the administrator access level: administrator access
-  to login: to log in
-  to log-in: to log in
-  to setup: to set up
-  to signin: to sign in
-  to sign-in: to sign in
-  x509: X.509
-  yml: YAML
diff --git a/doc/.vale/gitlab/TabsLinks.yml b/doc/.vale/gitlab/TabsLinks.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9UYWJzTGlua3MueW1s..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/TabsLinks.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-# Error: gitlab.TabsLinks
-#
-# Checks for the presence of links to individual GitLab UI tabs.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Do not include tabs query parameters in links."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#tabs
-level: error
-scope: raw
-raw:
-  - '\[[^\]]+\]\(.*?\.md\?tab=.*?\)'
diff --git a/doc/.vale/gitlab/ToDo.yml b/doc/.vale/gitlab/ToDo.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9Ub0RvLnltbA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/ToDo.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-# Warning: gitlab.ToDo
-#
-# You should not use "To Do", unless it refers to the UI element.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: substitution
-message: "Use 'to-do item' in most cases, or 'Add a to do' if referring to the UI button."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#to-do-item
-level: warning
-ignorecase: false
-swap:
-  '[Tt]o [Dd]o [Ii]tems?': to-do item
-  '\w* [Aa] [Tt]o [Dd]o': Add a to do
diff --git a/doc/.vale/gitlab/UnclearAntecedent.yml b/doc/.vale/gitlab/UnclearAntecedent.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9VbmNsZWFyQW50ZWNlZGVudC55bWw=..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/UnclearAntecedent.yml
+++ /dev/null
@@ -1,22 +0,0 @@
----
-# Warning: gitlab.UnclearAntecedent
-#
-# Checks for words that need a noun for clarity.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Instead of '%s', try starting this sentence with a specific subject and verb."
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#this-these-that-those
-level: warning
-ignorecase: false
-tokens:
-  - 'That is'
-  - 'That was'
-  - 'These are'
-  - 'These were'
-  - 'There are'
-  - 'There were'
-  - 'This is'
-  - 'This was'
-  - 'Those are'
-  - 'Those were'
diff --git a/doc/.vale/gitlab/Units.yml b/doc/.vale/gitlab/Units.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9Vbml0cy55bWw=..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/Units.yml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-# Warning: gitlab.Units
-#
-# Recommends a space between a number and a unit of measure.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Add a space between the number and the unit in '%s'."
-link: 'https://docs.gitlab.com/ee/development/documentation/styleguide/'
-nonword: true
-level: warning
-ignorecase: true
-tokens:
-  - \d+(?:B|kB|KiB|MB|MiB|GB|GiB|TB|TiB)
-  - \d+(?:ns|ms|μs|s|min|h|d)\b
diff --git a/doc/.vale/gitlab/Uppercase.yml b/doc/.vale/gitlab/Uppercase.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9VcHBlcmNhc2UueW1s..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/Uppercase.yml
+++ /dev/null
@@ -1,268 +0,0 @@
----
-# Suggestion: gitlab.Uppercase
-#
-# Checks for use of all uppercase letters with unknown reason.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: conditional
-message: "Instead of uppercase for '%s', use lowercase or backticks (`) if possible. Otherwise, ask a Technical Writer to add this word or acronym to the rule's exception list."
-link: https://docs.gitlab.com/ee/development/documentation/testing/vale.html#vale-uppercase-acronym-test
-level: suggestion
-ignorecase: false
-# Ensures that the existence of 'first' implies the existence of 'second'.
-first: '\b([A-Z]{3,5})\b'
-second: '(?:\b[A-Z][a-z]+ )+\(([A-Z]{3,5})\)'
-# ... with the exception of these:
-exceptions:
-  - ACL
-  - AJAX
-  - ALL
-  - AMI
-  - ANSI
-  - APAC
-  - API
-  - APM
-  - ARM
-  - ARN
-  - ASCII
-  - ASG
-  - AST
-  - AWS
-  - BETA
-  - BMP
-  - BSD
-  - CAS
-  - CDN
-  - CGI
-  - CIDR
-  - CLI
-  - CNA
-  - CNCF
-  - CORE
-  - CORS
-  - CPU
-  - CRAN
-  - CRIME
-  - CRM
-  - CRUD
-  - CSRF
-  - CSS
-  - CSV
-  - CTE
-  - CVE
-  - CVS
-  - CVSS
-  - CWE
-  - DAG
-  - DAST
-  - DDL
-  - DHCP
-  - DML
-  - DNS
-  - DSN
-  - DOM
-  - DORA
-  - DSA
-  - DSL
-  - DUOPRO
-  - DUOENT
-  - DVCS
-  - DVD
-  - EBS
-  - ECDSA
-  - ECS
-  - EFS
-  - EKS
-  - ELB
-  - ENA
-  - EOL
-  - EWM
-  - EXIF
-  - FAQ
-  - FIDO
-  - FIFO
-  - FIPS
-  - FLAG
-  - FOSS
-  - FQDN
-  - FREE
-  - FTP
-  - GCP
-  - GDK
-  - GDPR
-  - GET
-  - GID
-  - GIF
-  - GKE
-  - GLEX
-  - GLFM
-  - GNU
-  - GPG
-  - GPL
-  - GPS
-  - GPT
-  - GPU
-  - GUI
-  - HAML
-  - HAR
-  - HDD
-  - HEAD
-  - HIPAA
-  - HLL
-  - HSTS
-  - HTML
-  - HTTP
-  - HTTPS
-  - IAM
-  - IANA
-  - IBM
-  - ICO
-  - IDE
-  - IID
-  - IIS
-  - IMAP
-  - IOPS
-  - IRC
-  - ISO
-  - JPEG
-  - JPG
-  - JSON
-  - JVM
-  - JWT
-  - KICS
-  - LAN
-  - LDAP
-  - LDAPS
-  - LESS
-  - LFS
-  - LRU
-  - LSIF
-  - LTM
-  - LTS
-  - LVM
-  - MIME
-  - MIT
-  - MITRE
-  - MVC
-  - NAS
-  - NAT
-  - NDA
-  - NFS
-  - NGINX
-  - NOTE
-  - NPM
-  - NTP
-  - OCI
-  - OIDC
-  - OKD
-  - OKR
-  - ONLY
-  - OSS
-  - OTP
-  - OWASP
-  - PAT
-  - PCI-DSS
-  - PDF
-  - PEM
-  - PEP
-  - PGP
-  - PHP
-  - PID
-  - PKCS
-  - PNG
-  - POSIX
-  - POST
-  - PROXY
-  - PUT
-  - QPS
-  - RAID
-  - RAM
-  - RBAC
-  - RDP
-  - RDS
-  - RDS
-  - REST
-  - RFC
-  - RHEL
-  - RPC
-  - RPM
-  - RPO
-  - RPS
-  - RSA
-  - RSS
-  - RTC
-  - RTO
-  - RVM
-  - SAAS
-  - SAML
-  - SAN
-  - SAST
-  - SATA
-  - SBOM
-  - SBT
-  - SCIM
-  - SCM
-  - SCP
-  - SCSS
-  - SDK
-  - SELF
-  - SEO
-  - SES
-  - SFTP
-  - SHA
-  - SKI
-  - SLA
-  - SLI
-  - SLO
-  - SMS
-  - SMTP
-  - SOAP
-  - SOC
-  - SOX
-  - SPDX
-  - SPDY
-  - SPF
-  - SQL
-  - SRE
-  - SSD
-  - SSG
-  - SSH
-  - SSL
-  - SSO
-  - STI
-  - SUSE
-  - SVG
-  - SVN
-  - TCP
-  - TIFF
-  - TIP
-  - TLD
-  - TLS
-  - TODO
-  - TOML
-  - TOTP
-  - TPS
-  - TTL
-  - UBI
-  - UDP
-  - UID
-  - UID
-  - UNIX
-  - URI
-  - URL
-  - USB
-  - UTC
-  - UTF
-  - UUID
-  - VCS
-  - VPC
-  - VPN
-  - WAF
-  - WEBP
-  - WIP
-  - WSL
-  - XML
-  - XSS
-  - YAML
-  - ZAP
-  - ZIP
diff --git a/doc/.vale/gitlab/Wordy.yml b/doc/.vale/gitlab/Wordy.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9Xb3JkeS55bWw=..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/Wordy.yml
+++ /dev/null
@@ -1,19 +0,0 @@
----
-# Suggestion: gitlab.Wordy
-#
-# Suggests shorter versions of wordy phrases.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: substitution
-message: "%s"
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html
-level: suggestion
-ignorecase: true
-swap:
-  a number of: "Specify the number or remove the phrase."
-  as well as: "Use 'and' instead of 'as well as'."
-  note that: "Remove the phrase 'note that'."
-  please: "Use 'please' only if we've inconvenienced the user."
-  respectively: "Remove 'respectively' and list each option instead."
-  and so on: "Remove 'and so on'. Try to use 'like' and provide examples instead."
-  in order to: "Remove 'in order' and leave 'to'."
diff --git a/doc/.vale/gitlab/Zip.yml b/doc/.vale/gitlab/Zip.yml
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9aaXAueW1s..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/Zip.yml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-# Warning: gitlab.Zip
-#
-# Recommends all instances of something.zip be wrapped in backticks
-# due to the .zip top-level domain
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Wrap '%s' in backticks to prevent unintentional links to .zip domain names."
-link: 'https://docs.gitlab.com/ee/development/documentation/styleguide/index.md#backticks-in-markdown'
-nonword: true
-level: error
-ignorecase: true
-tokens:
-  - '\b\w*\.zip'
diff --git a/doc/.vale/gitlab/spelling-exceptions.txt b/doc/.vale/gitlab/spelling-exceptions.txt
deleted file mode 100644
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jLy52YWxlL2dpdGxhYi9zcGVsbGluZy1leGNlcHRpb25zLnR4dA==..0000000000000000000000000000000000000000
--- a/doc/.vale/gitlab/spelling-exceptions.txt
+++ /dev/null
@@ -1,1233 +0,0 @@
-accessor
-accessors
-ACLs
-Adafruit
-Airbnb
-Airtable
-Akismet
-Alertmanager
-Algolia
-Alibaba
-aliuid
-Aliyun
-allowlist
-allowlisted
-allowlisting
-allowlists
-AlmaLinux
-AMIs
-anonymization
-anonymized
-Ansible
-Anthos
-Anycast
-apdex
-API
-APIs
-Apparmor
-Appetize
-approvers
-Appsec
-architected
-architecting
-archiver
-Arel
-arity
-Arkose
-armhf
-ARNs
-Artifactory
-Asana
-Asciidoctor
-asdf
-Assembla
-Astro
-async
-Atlassian
-auditability
-auditable
-Auth0
-authenticator
-Authy
-autocomplete
-autocompleted
-autocompletes
-autocompleting
-autogenerated
-autoloaded
-autoloader
-autoloading
-automatable
-autoscale
-autoscaled
-autoscaler
-autoscalers
-autoscales
-autoscaling
-autovacuum
-awardable
-awardables
-Axios
-Ayoa
-AZs
-Azure
-B-tree
-backfilling
-backfills
-backport
-backported
-backporting
-backports
-backtrace
-backtraced
-backtraces
-backtracing
-badging
-balancer
-balancer's
-Bamboo
-Bazel
-bcrypt
-Beamer
-Bhyve
-Bitbucket
-Bitnami
-Bittrex
-blockquote
-blockquoted
-blockquotes
-blockquoting
-boolean
-booleans
-Bootsnap
-bot
-bot's
-Bottlerocket
-browsable
-bugfix
-bugfixed
-bugfixes
-bugfixing
-Bugzilla
-Buildah
-Buildkite
-buildpack
-buildpacks
-bundler
-bundlers
-burndown
-burnup
-burstable
-CA
-cacheable
-Caddy
-callout
-callouts
-callstack
-callstacks
-camelCase
-camelCased
-Camo
-canonicalization
-canonicalized
-captcha
-CAPTCHAs
-Capybara
-Casdoor
-CDNs
-CE
-CentOS
-Ceph
-Certbot
-cgo
-cgroup
-cgroups
-chai
-changeset
-changesets
-ChaosKube
-chatbot
-chatbots
-ChatOps
-checksummable
-checksummed
-checksumming
-Chemlab
-chipset
-chipsets
-CIDRs
-Citrix
-Citus
-Civo
-Cleartext
-ClickHouse
-CLIs
-Clojars
-clonable
-Cloudwatch
-clusterized
-CMake
-CMK
-CMKs
-CNAs
-CNs
-Cobertura
-Codeception
-Codecov
-codenames
-Codepen
-CodeSandbox
-Codey
-Cognito
-Coinbase
-colocate
-colocated
-colocating
-commit's
-CommonMark
-compilable
-composable
-composables
-Conda
-config
-Configs
-Consul
-Contentful
-Corosync
-corpuses
-Cosign
-Coursier
-CPU
-CPUs
-CRAN
-CRI-O
-cron
-crond
-cronjob
-cronjobs
-crons
-crontab
-crontabs
-crosslinked
-crosslinking
-crosslinks
-Crossplane
-Crowdin
-crypto
-CSSComb
-CSV
-CSVs
-CTAs
-CTEs
-CUnit
-customappsso
-CVEs
-CWEs
-cybersecurity
-CycloneDX
-Dangerfile
-DAST
-Database Lab Engine
-Database Lab
-Databricks
-Datadog
-datasource
-datasources
-datastore
-datastores
-datestamp
-datetime
-DBeaver
-Debian
-debloating
-decodable
-Decompressor
-decryptable
-dedupe
-deduplicate
-deduplicated
-deduplicates
-deduplicating
-deduplication
-delegators
-deliverables
-denormalization
-denormalize
-denormalized
-denormalizes
-denormalizing
-dentry
-denylist
-denylisted
-denylisting
-denylists
-Depesz
-deployer
-deployers
-deprovision
-deprovisioned
-deprovisioning
-deprovisions
-dequarantine
-dequarantined
-dequarantining
-deserialization
-deserialize
-deserializers
-deserializes
-desugar
-desugars
-desynchronized
-Dev
-devfile
-devfiles
-DevOps
-Dhall
-dialogs
-Diffblue
-disambiguates
-discoverability
-dismissable
-Disqus
-Distroless
-Divio
-DLE
-DNs
-Docker
-Dockerfile
-Dockerfiles
-Dockerize
-Dockerized
-Dockerizing
-Docusaurus
-dogfood
-dogfooding
-dogfoods
-DOMPurify
-dotenv
-doublestar
-downvoted
-downvotes
-Dpl
-dput
-Dreamweaver
-DRIs
-DSLs
-DSN
-Dynatrace
-Ecto
-eden
-EGit
-ElastiCache
-Elasticsearch
-Eleventy
-enablement
-Encrypt
-enqueued
-enqueues
-enricher
-enrichers
-enum
-enums
-Enviroments
-ESLint
-ESXi
-ETag
-ETags
-Etsy
-Excon
-exfiltrate
-exfiltration
-ExifTool
-expirable
-Facebook
-failover
-failovers
-failsafe
-Falco
-falsy
-Fanout
-Fargate
-fastlane
-Fastly
-Fastzip
-favicon
-favorited
-Fediverse
-ffaker
-Figma
-Filebeat
-Filestore
-Finicity
-Finnhub
-Fio
-firewalled
-firewalling
-fixup
-flamegraph
-flamegraphs
-Flawfinder
-Flickr
-Fluentd
-Flutterwave
-Flycheck
-focusable
-Forgerock
-formatters
-Fortanix
-Fortinet
-FQDNs
-FreshBooks
-frontend
-Fugit
-Fulcio
-fuzzer
-fuzzing
-Gantt
-Gbps
-Gemfile
-Gemnasium
-Gemojione
-Getter
-Getters
-gettext
-GIDs
-gists
-Git
-Gitaly
-Gitea
-GitHub
-GitLab
-gitlabsos
-Gitleaks
-Gitpod
-Gitter
-GLab
-globals
-globbing
-globstar
-globstars
-Gmail
-Godep
-Golang
-Gollum
-Google
-goroutine
-goroutines
-Gosec
-GPUs
-Gradle
-Grafana
-Grafonnet
-gravatar
-Grype
-GUIs
-Gzip
-Hackathon
-Haml
-HAProxy
-HAR
-hardcode
-hardcoded
-hardcodes
-HashiCorp
-Haswell
-heatmap
-heatmaps
-Helm
-Helmfile
-Heroku
-Herokuish
-heuristical
-hexdigest
-Hexo
-HipChat
-hostname
-hostnames
-hotfix
-hotfixed
-hotfixes
-hotfixing
-hotspots
-HTMLHint
-http
-https
-hyperparameter
-hyperparameters
-iCalendar
-iCloud
-idempotence
-idmapper
-Iglu
-IIFEs
-Immer
-inclusivity
-inflector
-inflectors
-Ingress
-initializer
-initializers
-injective
-innersource
-innersourcing
-inodes
-Instrumentor
-interdependencies
-interdependency
-interruptible
-inviter
-IPs
-IPython
-irker
-issuables
-Istio
-Jaeger
-jasmine-jquery
-Javafuzz
-JavaScript
-Jenkins
-Jenkinsfile
-Jira
-Jitsu
-jq
-jQuery
-JRuby
-JSDoc
-jsdom
-Jsonnet
-JUnit
-JupyterHub
-JWT
-JWTs
-Kaminari
-kanban
-kanbans
-kaniko
-Karma
-KCachegrind
-Kerberos
-Keycloak
-keyless
-keyset
-keyspace
-keystore
-keytab
-keytabs
-Kibana
-Kinesis
-Klar
-Knative
-KPIs
-Kramdown
-Kroki
-kubeconfig
-Kubecost
-kubectl
-Kubernetes
-Kubesec
-Kucoin
-Kustomize
-Kustomization
-kwargs
-Laravel
-LaunchDarkly
-ldapsearch
-Lefthook
-Leiningen
-Lemmy
-LLM
-LLMs
-libFuzzer
-Libgcrypt
-Libravatar
-liveness
-lockfile
-lockfiles
-Lodash
-Lograge
-logrotate
-Logrus
-Logstash
-lookahead
-lookaheads
-lookbehind
-lookbehinds
-Lookbook
-lookups
-loopback
-LSP
-Lua
-Lucene
-Lucidchart
-macOS
-Mailchimp
-Maildir
-Mailgun
-Mailroom
-Makefile
-Makefiles
-malloc
-Maniphest
-Markdown
-markdownlint
-Marketo
-matcher
-matchers
-Matomo
-Mattermost
-mbox
-memoization
-memoize
-memoized
-memoizes
-memoizing
-Memorystore
-mergeability
-mergeable
-metaprogramming
-metric's
-microformat
-Microsoft
-middleware
-middlewares
-migratable
-migratus
-minikube
-MinIO
-misconfiguration
-misconfigurations
-misconfigure
-misconfigured
-misconfigures
-misconfiguring
-mitigations
-mitmproxy
-mixin
-mixins
-MLflow
-Mmap
-mockup
-mockups
-ModSecurity
-Monokai
-monorepo
-monorepos
-monospace
-MRs
-MSBuild
-multiline
-mutex
-nameserver
-nameservers
-namespace
-namespace's
-namespaced
-namespaces
-namespacing
-namespacings
-Nanoc
-NAT
-navigations
-negatable
-Neovim
-Netlify
-NGINX
-ngrok
-njsscan
-Nokogiri
-nosniff
-noteable
-noteables
-npm
-NuGet
-nullability
-nullable
-Nurtch
-NVMe
-nyc
-OAuth
-OCP
-Octokit
-offboarded
-offboarding
-offboards
-OIDs
-OKRs
-OKRs
-Okta
-OLM
-OmniAuth
-onboarding
-OpenID
-OpenShift
-OpenTelemetry
-Opsgenie
-Opstrace
-ORMs
-OS
-osquery
-OSs
-OTel
-outdent
-Overcommit
-Packagist
-packfile
-packfiles
-Packwerk
-paginator
-parallelization
-parallelizations
-parsable
-PascalCase
-PascalCased
-passthrough
-passthroughs
-passwordless
-Patroni
-PDFs
-performant
-PgBouncer
-pgFormatter
-pgLoader
-pgMustard
-pgvector
-Phabricator
-phaser
-phasers
-phpenv
-Phorge
-PHPUnit
-PIDs
-pipenv
-Pipfile
-Pipfiles
-Piwik
-plaintext
-podman
-Poedit
-polyfill
-polyfills
-pooler
-postfixed
-Postgres
-postgres.ai
-PostgreSQL
-Praefect's
-prebuild
-prebuilds
-precompile
-precompiled
-preconfigure
-preconfigured
-preconfigures
-prefetch
-prefetching
-prefill
-prefilled
-prefilling
-prefills
-preload
-preloaded
-preloading
-preloads
-prepend
-prepended
-prepending
-prepends
-prepopulate
-prepopulated
-presentationals
-Prettifier
-Pritaly
-Priyanka
-profiler
-Prometheus
-ProseMirror
-protobuf
-protobufs
-proxied
-proxies
-proxyable
-proxying
-pseudocode
-pseudonymization
-pseudonymized
-pseudonymizer
-Pulumi
-Puma
-Pumble
-PyPI
-pytest
-Python
-Qualys
-queryable
-Quicktime
-Rackspace
-railties
-Raspbian
-rbenv
-rbspy
-rbtrace
-Rclone
-Rdoc
-reachability
-Realplayer
-reauthenticate
-reauthenticated
-reauthenticates
-reauthenticating
-rebalancing
-rebar
-rebase
-rebased
-rebases
-rebasing
-rebinding
-reCAPTCHA
-recoverability
-Redcarpet
-redirection
-redirections
-Redis
-Redmine
-refactorings
-referer
-referers
-reflog
-reflogs
-refname
-refspec
-refspecs
-regexes
-Rego
-reimplementation
-reimplemented
-reindex
-reindexed
-reindexes
-reindexing
-reinitialize
-reinitializing
-Rekor
-relicensing
-remediations
-renderers
-renderless
-replicables
-repmgr
-repmgrd
-reposts
-repurposing
-requestee
-requesters
-requeue
-requeued
-requeues
-requeuing
-resolver
-resolver's
-Restlet
-resync
-resynced
-resyncing
-resyncs
-retarget
-retargeted
-retargeting
-retargets
-reusability
-reverified
-reverifies
-reverify
-reviewee
-RIs
-roadmap
-roadmaps
-rock
-rollout
-rollouts
-routable
-RPCs
-RSpec
-rsync
-rsynced
-rsyncing
-rsyncs
-Rubinius
-Rubix
-RuboCop
-Rubular
-RubyGems
-Rugged
-ruleset
-rulesets
-runbook
-runbooks
-runit
-runtime
-runtimes
-Salesforce
-sandboxing
-sanitization
-SBOMs
-sbt
-SBT
-scalar's
-scalers
-scatterplot
-scatterplots
-schedulable
-Schemastore
-scriptable
-scrollable
-SDKs
-segmentations
-SELinux
-Semgrep
-Sendbird
-Sendinblue
-Sendmail
-Sentry
-serializer
-serializers
-serializing
-serverless
-setuptools
-severities
-SFCs
-sharded
-sharding
-SHAs
-shfmt
-Shippo
-Shopify
-Sidekiq
-Sigstore
-Silverlight
-Sisense
-Sitespeed
-skippable
-skopeo
-Slack
-Slackbot
-SLAs
-SLIs
-Slony
-SLOs
-smartcard
-smartcards
-snake_case
-snake_cased
-snapshotting
-Snowplow
-Snyk
-Sobelow
-Solargraph
-Solarized
-Sourcegraph
-Spamcheck
-spammable
-sparkline
-sparklines
-Speedscope
-spidering
-Splunk
-SpotBugs
-Squarespace
-SREs
-SSDs
-SSGs
-Stackdriver
-Stackprof
-starrer
-starrers
-storable
-storages
-strace
-strikethrough
-strikethroughs
-stunnel
-stylelint
-subchart
-subcharts
-subcommand
-subcommands
-subcomponent
-subfolder
-subfolders
-subgraph
-subgraphs
-subgroup
-subgroups
-subkey
-subkeys
-sublicense
-sublicensed
-sublicenses
-sublicensing
-submodule
-submodule's
-subnet
-subnets
-subnetting
-subpath
-subproject
-subprojects
-subqueried
-subqueries
-subquery
-subquerying
-Subreddit
-substring
-substrings
-subtask
-subtasks
-subtest
-subtests
-subtransaction
-subtransactions
-subtree
-subtrees
-sudo
-sunsetting
-supercookie
-supercookies
-supergroup
-supergroups
-superset
-supersets
-supertype
-supertypes
-SVGs
-swappiness
-swimlane
-swimlanes
-syncable
-Sysbench
-syscall
-syscalls
-syslog
-systemd
-tablespace
-tablespaces
-Tamland
-tanuki
-taskscaler
-tcpdump
-teardown
-templated
-Thanos
-thoughtbot
-throughputs
-Tiller
-timebox
-timeboxed
-timeboxes
-timeboxing
-timecop
-timelog
-timelogs
-Tiptap
-todos
-tokenizer
-Tokenizers
-tokenizing
-tolerations
-toolchain
-toolchains
-toolkit
-toolkits
-toolset
-tooltip
-tooltips
-transactionally
-transpile
-transpiled
-transpiles
-transpiling
-Trello
-Trendline
-triaged
-triages
-triaging
-Trivy
-Truststore
-truthy
-Twilio
-Twitter
-Typeform
-TypeScript
-TZInfo
-Ubuntu
-Udemy
-UI
-UIDs
-unapplied
-unapprove
-unapproved
-unapproving
-unarchive
-unarchived
-unarchives
-unarchiving
-unary
-unassign
-unassigning
-unassigns
-unban
-unbans
-uncached
-uncheck
-unchecked
-unchecking
-unchecks
-uncomment
-uncommented
-uncommenting
-uncordon
-underperforming
-unencode
-unencoded
-unencoder
-unencodes
-unencrypted
-unescaped
-unfollow
-unfollowed
-unfollows
-Unicorn
-unindexed
-unlink
-unlinking
-unlinks
-unmappable
-unmapped
-unmergeable
-unmerged
-unmerges
-unmerging
-unmocked
-unoptimize
-unoptimized
-unoptimizes
-unoptimizing
-unparsable
-unpatched
-unpause
-unprioritized
-unprotect
-unprotected
-unprotecting
-unprotects
-unprovision
-unprovisioned
-unprovisions
-unpublish
-unpublished
-unpublishes
-unpublishing
-unpullable
-unpushed
-unreferenced
-unregister
-unregistered
-unregisters
-unreplicated
-unresolve
-unresolved
-unresolving
-unreviewed
-unrevoke
-unsanitized
-unschedule
-unscoped
-unsetting
-unshare
-unshared
-unshares
-unstage
-unstaged
-unstages
-unstaging
-unstar
-unstars
-unstarted
-unstash
-unstashed
-unstashing
-unsynced
-unsynchronized
-untarred
-untracked
-untrusted
-unverified
-unverifies
-unverify
-unverifying
-uploader
-uploaders
-upstreams
-upvote
-upvoted
-upvotes
-urgencies
-URIs
-URL
-UUIDs
-Vagrantfile
-validator
-validators
-vCPUs
-vendored
-vendoring
-versionless
-viewport
-viewports
-virtualized
-virtualizing
-Vite
-VMs
-VPCs
-VSCodium
-Vue
-Vuex
-waitlist
-walkthrough
-walkthroughs
-WebdriverIO
-Webex
-webpack
-WEBrick
-webserver
-Webservice
-websocket
-websockets
-whitepaper
-whitepapers
-wireframe
-wireframed
-wireframes
-wireframing
-Wireshark
-Wordpress
-Workato
-workstream
-worktree
-worktrees
-Worldline
-Xcode
-Xeon
-XPath
-Yandex
-YouTrack
-ytt
-Yubico
-Zabbix
-ZAProxy
-Zeitwerk
-Zendesk
-ZenTao
-Zoekt
-zsh
-Zstandard
-Zuora
diff --git a/doc/.vale/gitlab_base/BadPlurals.yml b/doc/.vale/gitlab_base/BadPlurals.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL0JhZFBsdXJhbHMueW1s
--- /dev/null
+++ b/doc/.vale/gitlab_base/BadPlurals.yml
@@ -0,0 +1,14 @@
+---
+# Warning: gitlab.BadPlurals
+#
+# Don't write plural words with the '(s)' construction. 'HTTP(S)' is acceptable.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Rewrite '%s' to be plural without parentheses."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#s
+level: warning
+ignorecase: true
+nonword: true
+tokens:
+  - '(?<!http)\(s\)'
diff --git a/doc/.vale/gitlab_base/British.yml b/doc/.vale/gitlab_base/British.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL0JyaXRpc2gueW1s
--- /dev/null
+++ b/doc/.vale/gitlab_base/British.yml
@@ -0,0 +1,120 @@
+---
+# Error: gitlab.British
+#
+# Checks that US spelling is used instead of British spelling.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: substitution
+message: "Use the US spelling '%s' instead of the British '%s'."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#language
+level: error
+ignorecase: true
+swap:
+  aeon: eon
+  aeroplane: airplane
+  ageing: aging
+  aluminium: aluminum
+  anaemia: anemia
+  anaesthesia: anesthesia
+  analyse: analyze
+  annexe: annex
+  apologise: apologize
+  authorise: authorize
+  authorised: authorized
+  authorisation: authorization
+  authorising: authorizing
+  behaviour: behavior
+  busses: buses
+  calibre: caliber
+  categorise: categorize
+  categorised: categorized
+  categorises: categorizes
+  categorising: categorizing
+  centre: center
+  cheque: check
+  civilisation: civilization
+  civilise: civilize
+  colour: color
+  cosy: cozy
+  cypher: cipher
+  dependant: dependent
+  defence: defense
+  distil: distill
+  draught: draft
+  encyclopaedia: encyclopedia
+  enquiry: inquiry
+  enrol: enroll
+  enrolment: enrollment
+  enthral: enthrall
+  # equalled: equaled // Under discussion
+  # equalling: equaling // Under discussion
+  favourite: favorite
+  fibre: fiber
+  fillet: filet
+  flavour: flavor
+  furore: furor
+  fulfil: fulfill
+  gaol: jail
+  grey: gray
+  humour: humor
+  honour: honor
+  initialled: initialed
+  initialling: initialing
+  instil: instill
+  jewellery: jewelry
+  labelling: labeling
+  labelled: labeled
+  labour: labor
+  libellous: libelous
+  licence: license
+  likeable: likable
+  liveable: livable
+  lustre: luster
+  manoeuvre: maneuver
+  marvellous: marvelous
+  matt: matte
+  meagre: meager
+  metre: meter
+  modelling: modeling
+  moustache: mustache
+  neighbour: neighbor
+  normalise: normalize
+  offence: offense
+  optimise: optimize
+  optimised: optimized
+  optimising: optimizing
+  organise: organize
+  orientated: oriented
+  paralyse: paralyze
+  plough: plow
+  pretence: pretense
+  programme: program
+  pyjamas: pajamas
+  rateable: ratable
+  realise: realize
+  recognise: recognize
+  reconnoitre: reconnoiter
+  rumour: rumor
+  sabre: saber
+  saleable: salable
+  saltpetre: saltpeter
+  sceptic: skeptic
+  sepulchre: sepulcher
+  signalling: signaling
+  sizeable: sizable
+  skilful: skillful
+  sombre: somber
+  smoulder: smolder
+  speciality: specialty
+  spectre: specter
+  splendour: splendor
+  standardise: standardize
+  standardised: standardized
+  sulphur: sulfur
+  theatre: theater
+  travelled: traveled
+  traveller: traveler
+  travelling: traveling
+  unshakeable: unshakable
+  wilful: willful
+  yoghurt: yogurt
diff --git a/doc/.vale/gitlab_base/CIConfigFile.yml b/doc/.vale/gitlab_base/CIConfigFile.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL0NJQ29uZmlnRmlsZS55bWw=
--- /dev/null
+++ b/doc/.vale/gitlab_base/CIConfigFile.yml
@@ -0,0 +1,13 @@
+---
+# Error: gitlab.CIConfigFile
+#
+# Checks that the `.gitlab-ci.yml` file is referenced properly.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Change the file name to be exactly '.gitlab-ci.yml'."
+link: https://docs.gitlab.com/ee/development/documentation/versions.html
+level: error
+scope: raw
+raw:
+  - '(?!`\.gitlab-ci\.yml`)`.?gitlab.?ci.?ya?ml`'
diff --git a/doc/.vale/gitlab_base/CodeblockFences.yml b/doc/.vale/gitlab_base/CodeblockFences.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL0NvZGVibG9ja0ZlbmNlcy55bWw=
--- /dev/null
+++ b/doc/.vale/gitlab_base/CodeblockFences.yml
@@ -0,0 +1,13 @@
+---
+# Error: gitlab.CodeblockFences
+#
+# Ensures all codeblock language tags use the full name, not aliases.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Instead of '%s' for the code block, use yaml, ruby, plaintext, markdown, javascript, shell, go, python, dockerfile, or typescript."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#code-blocks
+level: error
+scope: raw
+raw:
+  - '\`\`\`(yml|rb|text|md|bash|sh\n|js\n|golang\n|py\n|docker\n|ts)'
diff --git a/doc/.vale/gitlab_base/CommandStringsQuoted.yml b/doc/.vale/gitlab_base/CommandStringsQuoted.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL0NvbW1hbmRTdHJpbmdzUXVvdGVkLnltbA==
--- /dev/null
+++ b/doc/.vale/gitlab_base/CommandStringsQuoted.yml
@@ -0,0 +1,14 @@
+---
+# Error: gitlab.CommandStringsQuoted
+#
+# Ensures all code blocks wrap URL strings in quotation marks.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "For the command example, use double quotes around the URL: %s"
+link: https://docs.gitlab.com/ee/development/documentation/restful_api_styleguide.html#curl-commands
+level: error
+scope: raw
+nonword: true
+tokens:
+  - '(curl|--url)[^"\]\n]+?https?:\/\/[^ \n]*'
diff --git a/doc/.vale/gitlab_base/CurrentStatus.yml b/doc/.vale/gitlab_base/CurrentStatus.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL0N1cnJlbnRTdGF0dXMueW1s
--- /dev/null
+++ b/doc/.vale/gitlab_base/CurrentStatus.yml
@@ -0,0 +1,13 @@
+---
+# Warning: gitlab.CurrentStatus
+#
+# Checks for words that indicate a product or feature may change in the future.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Remove '%s'. The documentation reflects the current state of the product."
+level: warning
+ignorecase: true
+link: https://docs.gitlab.com/ee/development/documentation/versions.html#promising-features-in-future-versions
+tokens:
+  - currently
diff --git a/doc/.vale/gitlab_base/DefaultBranch.yml b/doc/.vale/gitlab_base/DefaultBranch.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL0RlZmF1bHRCcmFuY2gueW1s
--- /dev/null
+++ b/doc/.vale/gitlab_base/DefaultBranch.yml
@@ -0,0 +1,14 @@
+---
+# Warning: gitlab.DefaultBranch
+#
+# Do not refer to the default branch as the 'master' branch, if possible.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Use 'default branch' or `main` instead of `master`, when possible."
+level: warning
+ignorecase: true
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#default-branch
+scope: raw
+raw:
+  - '\`master\`'
diff --git a/doc/.vale/gitlab_base/Dropdown.yml b/doc/.vale/gitlab_base/Dropdown.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL0Ryb3Bkb3duLnltbA==
--- /dev/null
+++ b/doc/.vale/gitlab_base/Dropdown.yml
@@ -0,0 +1,14 @@
+---
+# Suggestion: gitlab.Dropdown
+#
+# Catches many ways the phrase 'dropdown list' can be fumbled.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Use 'dropdown list'."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#dropdown-list
+level: warning
+ignorecase: true
+tokens:
+  - drop-down( [\w]*)?
+  - dropdown(?! list)
diff --git a/doc/.vale/gitlab_base/EOLWhitespace.yml b/doc/.vale/gitlab_base/EOLWhitespace.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL0VPTFdoaXRlc3BhY2UueW1s
--- /dev/null
+++ b/doc/.vale/gitlab_base/EOLWhitespace.yml
@@ -0,0 +1,13 @@
+---
+# Warning: gitlab.EOLWhitespace
+#
+# Checks that there is no useless whitespace at the end of lines.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Remove whitespace characters from the end of the line."
+link: https://docs.gitlab.com/ee/development/documentation/versions.html
+level: warning
+scope: raw
+raw:
+  - ' +\n'
diff --git a/doc/.vale/gitlab_base/ElementDescriptors.yml b/doc/.vale/gitlab_base/ElementDescriptors.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL0VsZW1lbnREZXNjcmlwdG9ycy55bWw=
--- /dev/null
+++ b/doc/.vale/gitlab_base/ElementDescriptors.yml
@@ -0,0 +1,14 @@
+---
+# Warning: gitlab.ElementDescriptors
+#
+# Suggests the correct way to describe a button.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "If possible, rewrite to remove 'button'."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#button
+level: warning
+ignorecase: true
+scope: raw
+raw:
+  - \*\*[^*]+\*\*\s+button
diff --git a/doc/.vale/gitlab_base/FutureTense.yml b/doc/.vale/gitlab_base/FutureTense.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL0Z1dHVyZVRlbnNlLnltbA==
--- /dev/null
+++ b/doc/.vale/gitlab_base/FutureTense.yml
@@ -0,0 +1,15 @@
+---
+# Warning: gitlab.FutureTense
+#
+# Checks for use of future tense in sentences. Present tense is strongly preferred.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Instead of future tense '%s', use present tense."
+ignorecase: true
+nonword: true
+level: warning
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#future-tense
+tokens:
+  - (going to|will|won't)[ \n:]\w*
+  - (It?|we|you|they)'ll[ \n:]\w*
diff --git a/doc/.vale/gitlab_base/GitLabFlavoredMarkdown.yml b/doc/.vale/gitlab_base/GitLabFlavoredMarkdown.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL0dpdExhYkZsYXZvcmVkTWFya2Rvd24ueW1s
--- /dev/null
+++ b/doc/.vale/gitlab_base/GitLabFlavoredMarkdown.yml
@@ -0,0 +1,14 @@
+---
+# Warning: gitlab.GitLabFlavoredMarkdown
+#
+# Checks for unclear use of GLFM or GLM instead of GitLab/GitHub Flavored Markdown
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: substitution
+message: "Use '%s' instead of '%s' when possible."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html
+level: warning
+ignorecase: true
+swap:
+  GLFM: "GitLab Flavored Markdown"
+  GFM: "GitLab Flavored Markdown' or 'GitHub Flavored Markdown"
diff --git a/doc/.vale/gitlab_base/HeadingContent.yml b/doc/.vale/gitlab_base/HeadingContent.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL0hlYWRpbmdDb250ZW50LnltbA==
--- /dev/null
+++ b/doc/.vale/gitlab_base/HeadingContent.yml
@@ -0,0 +1,19 @@
+---
+# Warning: gitlab.HeadingContent
+#
+# Checks for generic, unhelpful subheadings.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Rename the heading '%s', or re-purpose the content elsewhere."
+level: warning
+link: https://docs.gitlab.com/ee/development/documentation/topic_types/concept.html#concept-topic-titles
+ignorecase: true
+nonword: true
+scope: raw
+tokens:
+  - '\#+ How it works'
+  - '\#+ Limitations'
+  - '\#+ Overview'
+  - '\#+ Use cases?'
+  - '\#+ Important notes?'
diff --git a/doc/.vale/gitlab_base/HeadingDepth.yml b/doc/.vale/gitlab_base/HeadingDepth.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL0hlYWRpbmdEZXB0aC55bWw=
--- /dev/null
+++ b/doc/.vale/gitlab_base/HeadingDepth.yml
@@ -0,0 +1,13 @@
+---
+# Suggestion: gitlab.HeadingDepth
+#
+# Checks that there are no headings greater than 3 levels
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Refactor the section or page to avoid headings greater than H5."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#heading-levels-in-markdown
+level: suggestion
+scope: raw
+raw:
+  - '(?<=\n)#{6,}\s.*'
diff --git a/doc/.vale/gitlab_base/HeadingLink.yml b/doc/.vale/gitlab_base/HeadingLink.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL0hlYWRpbmdMaW5rLnltbA==
--- /dev/null
+++ b/doc/.vale/gitlab_base/HeadingLink.yml
@@ -0,0 +1,18 @@
+---
+# Error: gitlab.HeadingLink
+#
+# Do not include links in a heading.
+# Headings already have self-referencing anchor links,
+# and they're used for generating the table of contents.
+# Adding a link will break the anchor linking behavior.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Do not use links in headings."
+level: error
+ignorecase: true
+nonword: true
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/#links
+scope: raw
+tokens:
+  - ^#+ .*\[.+\]\(\S+\).*$
diff --git a/doc/.vale/gitlab_base/InclusiveLanguage.yml b/doc/.vale/gitlab_base/InclusiveLanguage.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL0luY2x1c2l2ZUxhbmd1YWdlLnltbA==
--- /dev/null
+++ b/doc/.vale/gitlab_base/InclusiveLanguage.yml
@@ -0,0 +1,22 @@
+---
+# Warning: gitlab.InclusiveLanguage
+# Suggests alternatives for non-inclusive language.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: substitution
+message: "Use inclusive language. Consider '%s' instead of '%s'."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html
+level: warning
+ignorecase: true
+swap:
+  blacklist(?:ed|ing|s)?: denylist
+  dummy: placeholder, sample, fake
+  (?:he|she): they
+  hers: their
+  his: their
+  mankind: humanity, people
+  manpower: GitLab team members
+  master: primary, main
+  sanity (?:check|test): check for completeness
+  slave: secondary
+  whitelist(?:ed|ing|s)?: allowlist
diff --git a/doc/.vale/gitlab_base/LatinTerms.yml b/doc/.vale/gitlab_base/LatinTerms.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL0xhdGluVGVybXMueW1s
--- /dev/null
+++ b/doc/.vale/gitlab_base/LatinTerms.yml
@@ -0,0 +1,17 @@
+---
+# Warning: gitlab.LatinTerms
+#
+# Checks for use of Latin terms.
+# Uses https://github.com/errata-ai/Google/blob/master/Google/Latin.yml for ideas.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: substitution
+message: "Use '%s' instead of '%s', but consider rewriting the sentence."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html
+level: warning
+nonword: true
+ignorecase: true
+swap:
+  '\b(?:e\.?g[\s.,;:])': for example
+  '\b(?:i\.?e[\s.,;:])': that is
+  '\bvia\b': "with', 'through', or 'by using"
diff --git a/doc/.vale/gitlab_base/Level.yml b/doc/.vale/gitlab_base/Level.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL0xldmVsLnltbA==
--- /dev/null
+++ b/doc/.vale/gitlab_base/Level.yml
@@ -0,0 +1,18 @@
+---
+# Suggestion: gitlab.Level
+#
+# Avoid variations on the phrase "instance level" and "group level"
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Avoid using 'level' when referring to groups, instances, or projects: '%s'"
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#level
+level: suggestion
+ignorecase: true
+tokens:
+  - 'instance level'
+  - 'instance-level'
+  - 'group level'
+  - 'group-level'
+  - 'project level'
+  - 'project-level'
diff --git a/doc/.vale/gitlab_base/MeaningfulLinkWords.yml b/doc/.vale/gitlab_base/MeaningfulLinkWords.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL01lYW5pbmdmdWxMaW5rV29yZHMueW1s
--- /dev/null
+++ b/doc/.vale/gitlab_base/MeaningfulLinkWords.yml
@@ -0,0 +1,17 @@
+---
+# Warning: gitlab.MeaningfulLinkWords
+#
+# Checks for the presence of semantically unhelpful words in link text.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Improve SEO and accessibility by rewriting the link text for '%s'."
+level: warning
+ignorecase: true
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#text-for-links
+scope: raw
+nonword: true
+tokens:
+  - '\[here\](?=\(.*\))'
+  - '\[this\](?=\(.*\))'
+  - '\[this page\](?=\(.*\))'
diff --git a/doc/.vale/gitlab_base/MergeConflictMarkers.yml b/doc/.vale/gitlab_base/MergeConflictMarkers.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL01lcmdlQ29uZmxpY3RNYXJrZXJzLnltbA==
--- /dev/null
+++ b/doc/.vale/gitlab_base/MergeConflictMarkers.yml
@@ -0,0 +1,13 @@
+---
+# Error: gitlab.MergeConflictMarkers
+#
+# Checks for the presence of merge conflict markers.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Remove the merge conflict marker '%s'."
+link: https://docs.gitlab.com/ee/development/code_review.html#merging-a-merge-request
+level: error
+scope: raw
+raw:
+  - '\n<<<<<<< .+\n|\n=======\n|\n>>>>>>> .+\n'
diff --git a/doc/.vale/gitlab_base/MultiLineLinks.yml b/doc/.vale/gitlab_base/MultiLineLinks.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL011bHRpTGluZUxpbmtzLnltbA==
--- /dev/null
+++ b/doc/.vale/gitlab_base/MultiLineLinks.yml
@@ -0,0 +1,14 @@
+---
+# Error: gitlab.MultiLineLinks
+#
+# Checks that links are all on a single line.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Put the full link on one line, even if the link is very long."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#links
+level: error
+scope: raw
+raw:
+  - '\[[^\[\]]*?\n[^\[\]]*?\]\([^\)]*?\)|'
+  - '\[[^\[\]]*?\]\([^\)]*?\n[^\)]*\)'
diff --git a/doc/.vale/gitlab_base/NonStandardQuotes.yml b/doc/.vale/gitlab_base/NonStandardQuotes.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL05vblN0YW5kYXJkUXVvdGVzLnltbA==
--- /dev/null
+++ b/doc/.vale/gitlab_base/NonStandardQuotes.yml
@@ -0,0 +1,14 @@
+---
+# Warning: gitlab.NonStandardQuotes
+#
+# Use only standard single and double quotes, not left or right quotes.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Use standard single quotes or double quotes only. Do not use left or right quotes."
+level: warning
+ignorecase: true
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#punctuation
+scope: raw
+raw:
+  - '[‘’“”]'
diff --git a/doc/.vale/gitlab_base/OutdatedVersions.yml b/doc/.vale/gitlab_base/OutdatedVersions.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL091dGRhdGVkVmVyc2lvbnMueW1s
--- /dev/null
+++ b/doc/.vale/gitlab_base/OutdatedVersions.yml
@@ -0,0 +1,14 @@
+---
+# Suggestion: gitlab.OutdatedVersions
+#
+# Checks for references to versions of GitLab that are no longer supported.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "If possible, remove the reference to '%s'."
+link: https://docs.gitlab.com/ee/development/documentation/versions.html
+level: suggestion
+nonword: true
+ignorecase: true
+tokens:
+  - "GitLab v?(2|3|4|5|6|7|8|9|10|11|12|13|14)"
diff --git a/doc/.vale/gitlab_base/OxfordComma.yml b/doc/.vale/gitlab_base/OxfordComma.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL094Zm9yZENvbW1hLnltbA==
--- /dev/null
+++ b/doc/.vale/gitlab_base/OxfordComma.yml
@@ -0,0 +1,12 @@
+---
+# Warning: gitlab.OxfordComma
+#
+# Checks for the lack of an Oxford comma. In some cases, will catch overly complex sentence structures with lots of commas.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Use a comma before the last 'and' or 'or' in a list of four or more items."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#punctuation
+level: warning
+raw:
+  - '(?:[\w-_` ]+,){2,}(?:[\w-_` ]+) (and |or )'
diff --git a/doc/.vale/gitlab_base/Possessive.yml b/doc/.vale/gitlab_base/Possessive.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL1Bvc3Nlc3NpdmUueW1s
--- /dev/null
+++ b/doc/.vale/gitlab_base/Possessive.yml
@@ -0,0 +1,13 @@
+---
+# Error: gitlab.Possessive
+#
+# The word GitLab should not be used in the possessive form.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Remove 's from %s."
+level: error
+ignorecase: true
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#gitlab
+tokens:
+  - GitLab's
diff --git a/doc/.vale/gitlab_base/Prerequisites.yml b/doc/.vale/gitlab_base/Prerequisites.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL1ByZXJlcXVpc2l0ZXMueW1s
--- /dev/null
+++ b/doc/.vale/gitlab_base/Prerequisites.yml
@@ -0,0 +1,14 @@
+---
+# Error: gitlab.Prerequisites
+#
+# The "Prerequisites:" line should always be plural.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Pluralize 'Prerequisites', even if it includes only one item."
+link: https://docs.gitlab.com/ee/development/documentation/topic_types/task.html#task-prerequisites
+level: warning
+nonword: true
+scope: text
+raw:
+  - '^Prerequisite:'
diff --git a/doc/.vale/gitlab_base/ReadingLevel.yml b/doc/.vale/gitlab_base/ReadingLevel.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL1JlYWRpbmdMZXZlbC55bWw=
--- /dev/null
+++ b/doc/.vale/gitlab_base/ReadingLevel.yml
@@ -0,0 +1,15 @@
+---
+# Suggestion: gitlab.ReadingLevel
+#
+# Checks the Flesch-Kincaid reading level.
+#
+# https://docs.errata.ai/vale/styles#metric
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: metric
+message: "The grade level is %s. Aim for 8th grade or lower by using shorter sentences and words."
+link: https://docs.gitlab.com/ee/development/documentation/testing/vale.html#readability-score
+level: suggestion
+formula: |
+  (0.39 * (words / sentences)) + (11.8 * (syllables / words)) - 15.59
+condition: "> 1"
diff --git a/doc/.vale/gitlab_base/Repetition.yml b/doc/.vale/gitlab_base/Repetition.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL1JlcGV0aXRpb24ueW1s
--- /dev/null
+++ b/doc/.vale/gitlab_base/Repetition.yml
@@ -0,0 +1,12 @@
+---
+# Error: gitlab.Repetition
+#
+# Checks for duplicate words, like `the the` or `and and`.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: repetition
+message: "Remove this duplicate word: '%s'."
+level: error
+alpha: true
+tokens:
+  - '[^\s]+'
diff --git a/doc/.vale/gitlab_base/SentenceLength.yml b/doc/.vale/gitlab_base/SentenceLength.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL1NlbnRlbmNlTGVuZ3RoLnltbA==
--- /dev/null
+++ b/doc/.vale/gitlab_base/SentenceLength.yml
@@ -0,0 +1,13 @@
+---
+# Suggestion: gitlab.SentenceLength
+#
+# Counts words in a sentence and alerts if a sentence exceeds 25 words.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: occurrence
+message: "Improve readability by using fewer than 25 words in this sentence."
+scope: sentence
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#language
+level: suggestion
+max: 25
+token: \b(\w+)\b
diff --git a/doc/.vale/gitlab_base/SentenceSpacing.yml b/doc/.vale/gitlab_base/SentenceSpacing.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL1NlbnRlbmNlU3BhY2luZy55bWw=
--- /dev/null
+++ b/doc/.vale/gitlab_base/SentenceSpacing.yml
@@ -0,0 +1,14 @@
+---
+# Error: gitlab.SentenceSpacing
+#
+# Checks for incorrect spacing (no spaces, or more than one space) around punctuation.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Use exactly one space between sentences and clauses. Check '%s' for spacing problems."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#punctuation
+level: error
+nonword: true
+tokens:
+  - '[a-z][.?!,][A-Z]'
+  - '[\w.?!,\(\)\-":] {2,}[\w.?!,\(\)\-":]'
diff --git a/doc/.vale/gitlab_base/Simplicity.yml b/doc/.vale/gitlab_base/Simplicity.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL1NpbXBsaWNpdHkueW1s
--- /dev/null
+++ b/doc/.vale/gitlab_base/Simplicity.yml
@@ -0,0 +1,18 @@
+---
+# Warning: gitlab.Simplicity
+#
+# Checks for words implying ease of use, to avoid cognitive dissonance for frustrated users.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Remove '%s'. Be precise instead of subjective."
+level: warning
+ignorecase: true
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html
+tokens:
+  - easy
+  - easily
+  - handy
+  - simple
+  - simply
+  - useful
diff --git a/doc/.vale/gitlab_base/Spelling.yml b/doc/.vale/gitlab_base/Spelling.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL1NwZWxsaW5nLnltbA==
--- /dev/null
+++ b/doc/.vale/gitlab_base/Spelling.yml
@@ -0,0 +1,16 @@
+---
+# Warning: gitlab.Spelling
+#
+# Checks for possible spelling mistakes in content, not code. Results from links using angle brackets (<https://example.com>) should be corrected.
+#
+# If a word is flagged as a spelling mistake incorrectly, such as a product name,
+# you can submit an MR to update `spelling-exceptions.txt` with the missing word.
+# Commands, like `git clone` must use backticks, and must not be added to the
+# exceptions.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: spelling
+message: "Check the spelling of '%s'. If the spelling is correct, ask a Technical Writer to add this word to the spelling exception list."
+level: warning
+ignore:
+  - gitlab_base/spelling-exceptions.txt
diff --git a/doc/.vale/gitlab_base/SubstitutionWarning.yml b/doc/.vale/gitlab_base/SubstitutionWarning.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL1N1YnN0aXR1dGlvbldhcm5pbmcueW1s
--- /dev/null
+++ b/doc/.vale/gitlab_base/SubstitutionWarning.yml
@@ -0,0 +1,77 @@
+---
+# Warning: gitlab.SubstitutionWarning
+#
+# Checks for misused terms or common shorthand that should not be used at GitLab, but can't be flagged as errors.
+# Substitutions.yml also exists.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: substitution
+message: "Use '%s' instead of '%s' when possible."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html
+level: warning
+ignorecase: true
+swap:
+  active user: "billable user"
+  active users: "billable users"
+  agnostic: "platform-independent' or 'vendor-neutral"
+  air(?:-| )?gapped: "offline environment"
+  bullet: "list item"
+  (?<!right-)click(?!-through): "select"
+  cancelled: "canceled"
+  cancelling: "canceling"
+  code base: "codebase"
+  config: "configuration"
+  confirmation box: "confirmation dialog"
+  confirmation dialog box: "confirmation dialog"
+  deselect: "clear"
+  deselected: "cleared"
+  dialog box: "dialog"
+  distro: "distribution"
+  docs: "documentation"
+  e-mail: "email"
+  emojis: "emoji"
+  ex: "for example"
+  file name: "filename"
+  filesystem: "file system"
+  fullscreen: "full screen"
+  info: "information"
+  installation from source: self-compiled installation
+  installations from source: self-compiled installations
+  it is recommended: "you should"
+  log in: "sign in"
+  log-in: "sign in"
+  logged in user: "authenticated user"
+  logged-in user: "authenticated user"
+  machine-learning: "machine learning"
+  modal dialog: "dialog"
+  modal window: "dialog"
+  modal: "dialog"
+  n/a: "not applicable"
+  navigate to: "go to"
+  normally: "usually' or 'typically"
+  normal: "typical' or 'standard"
+  OAuth2: "OAuth 2.0"
+  omnibus gitlab: "Linux package"
+  'omnibus(?!\))': "Linux package"
+  once that: "after that"
+  once the: "after the"
+  once you: "after you"
+  open telemetry: "OpenTelemetry"
+  pack file: packfile
+  pack files: packfiles
+  pop-up window: "dialog"
+  pop-up: "dialog"
+  popup: "dialog"
+  repo: "repository"
+  signed in user: "authenticated user"
+  signed-in user: "authenticated user"
+  since: "because' or 'after"
+  source (?:install|installation): self-compiled installation
+  source (?:installs|installations): self-compiled installations
+  sub-group: "subgroup"
+  sub-groups: "subgroups"
+  timezone: "time zone"
+  utiliz(?:es?|ing): "use"
+  VSCode: "VS Code"
+  we recommend: "you should"
+  within: "in"
diff --git a/doc/.vale/gitlab_base/Substitutions.yml b/doc/.vale/gitlab_base/Substitutions.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL1N1YnN0aXR1dGlvbnMueW1s
--- /dev/null
+++ b/doc/.vale/gitlab_base/Substitutions.yml
@@ -0,0 +1,69 @@
+---
+# Error: gitlab.Substitutions
+#
+# Checks for misused terms that should never be used at GitLab.
+# SubstitutionWarning.yml also exists.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: substitution
+message: "Use '%s' instead of '%s'."
+link: https://handbook.gitlab.com/handbook/communication/top-misused-terms/
+level: error
+ignorecase: true
+swap:
+  admin user: administrator
+  admin users: administrators
+  administrator permission: administrator access
+  administrator permissions: administrator access
+  administrator role: administrator access
+  at least the Owner role: the Owner role
+  can login: can log in
+  can log-in: can log in
+  can setup: can set up
+  can signin: can sign in
+  can sign-in: can sign in
+  codequality: code quality
+  Customer [Pp]ortal: Customers Portal
+  developer access: the Developer role
+  developer permission: the Developer role
+  developer permissions: the Developer role
+  disallow: prevent
+  frontmatter: front matter
+  GitLab self hosted: GitLab self-managed # https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#gitlab-self-managed
+  GitLab self-hosted: GitLab self-managed # https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#gitlab-self-managed
+  GitLabber: GitLab team member
+  GitLabbers: GitLab team members
+  GitLab-shell: GitLab Shell
+  gitlab omnibus: Linux package
+  golang: Go
+  guest access: the Guest role
+  guest permission: the Guest role
+  guest permissions: the Guest role
+  maintainer access: the Maintainer role
+  maintainer permission: the Maintainer role
+  maintainer permissions: the Maintainer role
+  owner access: the Owner role
+  owner permission: the Owner role
+  owner permissions: the Owner role
+  param: parameter
+  params: parameters
+  pg: PostgreSQL
+  'postgres$': PostgreSQL
+  raketask: Rake task
+  raketasks: Rake tasks
+  rspec: RSpec
+  reporter access: the Reporter role
+  reporter permission: the Reporter role
+  reporter permissions: the Reporter role
+  rubocop: RuboCop
+  self hosted GitLab: GitLab self-managed # https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#gitlab-self-managed
+  self-hosted GitLab: GitLab self-managed # https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#gitlab-self-managed
+  styleguide: style guide
+  the administrator access level: administrator access
+  to login: to log in
+  to log-in: to log in
+  to setup: to set up
+  to signin: to sign in
+  to sign-in: to sign in
+  x509: X.509
+  yml: YAML
diff --git a/doc/.vale/gitlab_base/ToDo.yml b/doc/.vale/gitlab_base/ToDo.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL1RvRG8ueW1s
--- /dev/null
+++ b/doc/.vale/gitlab_base/ToDo.yml
@@ -0,0 +1,14 @@
+---
+# Warning: gitlab.ToDo
+#
+# You should not use "To Do", unless it refers to the UI element.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: substitution
+message: "Use 'to-do item' in most cases, or 'Add a to do' if referring to the UI button."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#to-do-item
+level: warning
+ignorecase: false
+swap:
+  '[Tt]o [Dd]o [Ii]tems?': to-do item
+  '\w* [Aa] [Tt]o [Dd]o': Add a to do
diff --git a/doc/.vale/gitlab_base/UnclearAntecedent.yml b/doc/.vale/gitlab_base/UnclearAntecedent.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL1VuY2xlYXJBbnRlY2VkZW50LnltbA==
--- /dev/null
+++ b/doc/.vale/gitlab_base/UnclearAntecedent.yml
@@ -0,0 +1,22 @@
+---
+# Warning: gitlab.UnclearAntecedent
+#
+# Checks for words that need a noun for clarity.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Instead of '%s', try starting this sentence with a specific subject and verb."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#this-these-that-those
+level: warning
+ignorecase: false
+tokens:
+  - 'That is'
+  - 'That was'
+  - 'These are'
+  - 'These were'
+  - 'There are'
+  - 'There were'
+  - 'This is'
+  - 'This was'
+  - 'Those are'
+  - 'Those were'
diff --git a/doc/.vale/gitlab_base/Units.yml b/doc/.vale/gitlab_base/Units.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL1VuaXRzLnltbA==
--- /dev/null
+++ b/doc/.vale/gitlab_base/Units.yml
@@ -0,0 +1,15 @@
+---
+# Warning: gitlab.Units
+#
+# Recommends a space between a number and a unit of measure.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Add a space between the number and the unit in '%s'."
+link: 'https://docs.gitlab.com/ee/development/documentation/styleguide/'
+nonword: true
+level: warning
+ignorecase: true
+tokens:
+  - \d+(?:B|kB|KiB|MB|MiB|GB|GiB|TB|TiB)
+  - \d+(?:ns|ms|μs|s|min|h|d)\b
diff --git a/doc/.vale/gitlab_base/Uppercase.yml b/doc/.vale/gitlab_base/Uppercase.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL1VwcGVyY2FzZS55bWw=
--- /dev/null
+++ b/doc/.vale/gitlab_base/Uppercase.yml
@@ -0,0 +1,268 @@
+---
+# Suggestion: gitlab.Uppercase
+#
+# Checks for use of all uppercase letters with unknown reason.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: conditional
+message: "Instead of uppercase for '%s', use lowercase or backticks (`) if possible. Otherwise, ask a Technical Writer to add this word or acronym to the rule's exception list."
+link: https://docs.gitlab.com/ee/development/documentation/testing/vale.html#vale-uppercase-acronym-test
+level: suggestion
+ignorecase: false
+# Ensures that the existence of 'first' implies the existence of 'second'.
+first: '\b([A-Z]{3,5})\b'
+second: '(?:\b[A-Z][a-z]+ )+\(([A-Z]{3,5})\)'
+# ... with the exception of these:
+exceptions:
+  - ACL
+  - AJAX
+  - ALL
+  - AMI
+  - ANSI
+  - APAC
+  - API
+  - ARIA
+  - APM
+  - ARM
+  - ARN
+  - ASCII
+  - ASG
+  - AST
+  - AWS
+  - BETA
+  - BMP
+  - BSD
+  - CAS
+  - CDN
+  - CGI
+  - CIDR
+  - CLI
+  - CNA
+  - CNCF
+  - CORE
+  - CORS
+  - CPU
+  - CRAN
+  - CRIME
+  - CRM
+  - CRUD
+  - CSRF
+  - CSS
+  - CSV
+  - CTE
+  - CVE
+  - CVS
+  - CVSS
+  - CWE
+  - DAST
+  - DDL
+  - DHCP
+  - DML
+  - DNS
+  - DSN
+  - DOM
+  - DORA
+  - DSA
+  - DSL
+  - DUOPRO
+  - DUOENT
+  - DVCS
+  - DVD
+  - EBS
+  - ECDSA
+  - ECS
+  - EFS
+  - EKS
+  - ELB
+  - ENA
+  - EOL
+  - EWM
+  - EXIF
+  - FAQ
+  - FIDO
+  - FIFO
+  - FIPS
+  - FLAG
+  - FOSS
+  - FQDN
+  - FREE
+  - FTP
+  - GCP
+  - GDK
+  - GDPR
+  - GET
+  - GID
+  - GIF
+  - GKE
+  - GLEX
+  - GLFM
+  - GNU
+  - GPG
+  - GPL
+  - GPS
+  - GPT
+  - GPU
+  - GUI
+  - HAML
+  - HAR
+  - HDD
+  - HEAD
+  - HIPAA
+  - HLL
+  - HSTS
+  - HTML
+  - HTTP
+  - HTTPS
+  - IAM
+  - IANA
+  - IBM
+  - ICO
+  - IDE
+  - IID
+  - IIS
+  - IMAP
+  - IOPS
+  - IRC
+  - ISO
+  - JPEG
+  - JPG
+  - JSON
+  - JVM
+  - JWT
+  - KICS
+  - LAN
+  - LDAP
+  - LDAPS
+  - LESS
+  - LFS
+  - LRU
+  - LSIF
+  - LTM
+  - LTS
+  - LVM
+  - MIME
+  - MIT
+  - MITRE
+  - MVC
+  - NAS
+  - NAT
+  - NDA
+  - NFS
+  - NGINX
+  - NOTE
+  - NPM
+  - NTP
+  - OCI
+  - OIDC
+  - OKD
+  - OKR
+  - ONLY
+  - OSS
+  - OTP
+  - OWASP
+  - PAT
+  - PCI-DSS
+  - PDF
+  - PEM
+  - PEP
+  - PGP
+  - PHP
+  - PID
+  - PKCS
+  - PNG
+  - POSIX
+  - POST
+  - PROXY
+  - PUT
+  - QPS
+  - RAID
+  - RAM
+  - RBAC
+  - RDP
+  - RDS
+  - RDS
+  - REST
+  - RFC
+  - RHEL
+  - RPC
+  - RPM
+  - RPO
+  - RPS
+  - RSA
+  - RSS
+  - RTC
+  - RTO
+  - RVM
+  - SAAS
+  - SAML
+  - SAN
+  - SAST
+  - SATA
+  - SBOM
+  - SBT
+  - SCIM
+  - SCM
+  - SCP
+  - SCSS
+  - SDK
+  - SELF
+  - SEO
+  - SES
+  - SFTP
+  - SHA
+  - SKI
+  - SLA
+  - SLI
+  - SLO
+  - SMS
+  - SMTP
+  - SOAP
+  - SOC
+  - SOX
+  - SPDX
+  - SPDY
+  - SPF
+  - SQL
+  - SRE
+  - SSD
+  - SSG
+  - SSH
+  - SSL
+  - SSO
+  - STI
+  - SUSE
+  - SVG
+  - SVN
+  - TCP
+  - TIFF
+  - TIP
+  - TLD
+  - TLS
+  - TODO
+  - TOML
+  - TOTP
+  - TPS
+  - TTL
+  - UBI
+  - UDP
+  - UID
+  - UID
+  - UNIX
+  - URI
+  - URL
+  - USB
+  - UTC
+  - UTF
+  - UUID
+  - VCS
+  - VPC
+  - VPN
+  - WAF
+  - WEBP
+  - WIP
+  - WSL
+  - XML
+  - XSS
+  - YAML
+  - ZAP
+  - ZIP
diff --git a/doc/.vale/gitlab_base/Wordy.yml b/doc/.vale/gitlab_base/Wordy.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL1dvcmR5LnltbA==
--- /dev/null
+++ b/doc/.vale/gitlab_base/Wordy.yml
@@ -0,0 +1,19 @@
+---
+# Suggestion: gitlab.Wordy
+#
+# Suggests shorter versions of wordy phrases.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: substitution
+message: "%s"
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html
+level: suggestion
+ignorecase: true
+swap:
+  a number of: "Specify the number or remove the phrase."
+  as well as: "Use 'and' instead of 'as well as'."
+  note that: "Remove the phrase 'note that'."
+  please: "Use 'please' only if we've inconvenienced the user."
+  respectively: "Remove 'respectively' and list each option instead."
+  and so on: "Remove 'and so on'. Try to use 'like' and provide examples instead."
+  in order to: "Remove 'in order' and leave 'to'."
diff --git a/doc/.vale/gitlab_base/Zip.yml b/doc/.vale/gitlab_base/Zip.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL1ppcC55bWw=
--- /dev/null
+++ b/doc/.vale/gitlab_base/Zip.yml
@@ -0,0 +1,15 @@
+---
+# Warning: gitlab.Zip
+#
+# Recommends all instances of something.zip be wrapped in backticks
+# due to the .zip top-level domain
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Wrap '%s' in backticks to prevent unintentional links to .zip domain names."
+link: 'https://docs.gitlab.com/ee/development/documentation/styleguide/index.md#backticks-in-markdown'
+nonword: true
+level: error
+ignorecase: true
+tokens:
+  - '\b\w*\.zip'
diff --git a/doc/.vale/gitlab_base/spelling-exceptions.txt b/doc/.vale/gitlab_base/spelling-exceptions.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9iYXNlL3NwZWxsaW5nLWV4Y2VwdGlvbnMudHh0
--- /dev/null
+++ b/doc/.vale/gitlab_base/spelling-exceptions.txt
@@ -0,0 +1,1235 @@
+accessor
+accessors
+ACLs
+Adafruit
+Airbnb
+Airtable
+Akismet
+Alertmanager
+Algolia
+Alibaba
+aliuid
+Aliyun
+allowlist
+allowlisted
+allowlisting
+allowlists
+AlmaLinux
+AMIs
+anonymization
+anonymized
+Ansible
+Anthos
+Anycast
+apdex
+API
+APIs
+Apparmor
+Appetize
+approvers
+Appsec
+architected
+architecting
+archiver
+Arel
+arity
+Arkose
+armhf
+ARNs
+Artifactory
+Asana
+Asciidoctor
+asdf
+Assembla
+Astro
+async
+Atlassian
+auditability
+auditable
+Auth0
+authenticator
+Authy
+autocomplete
+autocompleted
+autocompletes
+autocompleting
+autogenerated
+autoloaded
+autoloader
+autoloading
+automatable
+autoscale
+autoscaled
+autoscaler
+autoscalers
+autoscales
+autoscaling
+autovacuum
+awardable
+awardables
+Axios
+Ayoa
+AZs
+Azure
+B-tree
+backfilling
+backfills
+backport
+backported
+backporting
+backports
+backtrace
+backtraced
+backtraces
+backtracing
+badging
+balancer
+balancer's
+Bamboo
+Bazel
+bcrypt
+Beamer
+Bhyve
+Bitbucket
+Bitnami
+Bittrex
+blockquote
+blockquoted
+blockquotes
+blockquoting
+boolean
+booleans
+Bootsnap
+bot
+bot's
+Bottlerocket
+browsable
+bugfix
+bugfixed
+bugfixes
+bugfixing
+Bugzilla
+Buildah
+Buildkite
+buildpack
+buildpacks
+bundler
+bundlers
+burndown
+burnup
+burstable
+CA
+cacheable
+Caddy
+callout
+callouts
+callstack
+callstacks
+camelCase
+camelCased
+Camo
+canonicalization
+canonicalized
+captcha
+CAPTCHAs
+Capybara
+Casdoor
+CDNs
+CE
+CentOS
+Ceph
+Certbot
+cgo
+cgroup
+cgroups
+chai
+changeset
+changesets
+ChaosKube
+chatbot
+chatbots
+ChatOps
+checksummable
+checksummed
+checksumming
+Chemlab
+chipset
+chipsets
+CIDRs
+Citrix
+Citus
+Civo
+Cleartext
+ClickHouse
+CLIs
+Clojars
+clonable
+Cloudwatch
+clusterized
+CMake
+CMK
+CMKs
+CNAs
+CNs
+Cobertura
+Codeception
+Codecov
+codenames
+Codepen
+CodeSandbox
+Codey
+Cognito
+Coinbase
+colocate
+colocated
+colocating
+commit's
+CommonMark
+compilable
+composable
+composables
+Conda
+config
+Configs
+Consul
+Contentful
+Corosync
+corpuses
+Cosign
+Coursier
+CPU
+CPUs
+CRAN
+CRI-O
+cron
+crond
+cronjob
+cronjobs
+crons
+crontab
+crontabs
+crosslinked
+crosslinking
+crosslinks
+Crossplane
+Crowdin
+crypto
+CSSComb
+CSV
+CSVs
+CTAs
+CTEs
+CUnit
+customappsso
+CVEs
+CWEs
+cybersecurity
+CycloneDX
+Dangerfile
+DAST
+Database Lab Engine
+Database Lab
+Databricks
+Datadog
+datasource
+datasources
+datastore
+datastores
+datestamp
+datetime
+DBeaver
+Debian
+debloating
+decodable
+Decompressor
+decryptable
+dedupe
+deduplicate
+deduplicated
+deduplicates
+deduplicating
+deduplication
+delegators
+deliverables
+denormalization
+denormalize
+denormalized
+denormalizes
+denormalizing
+dentry
+denylist
+denylisted
+denylisting
+denylists
+Depesz
+deployer
+deployers
+deprovision
+deprovisioned
+deprovisioning
+deprovisions
+dequarantine
+dequarantined
+dequarantining
+deserialization
+deserialize
+deserializers
+deserializes
+desugar
+desugars
+desynchronized
+Dev
+devfile
+devfiles
+DevOps
+Dhall
+dialogs
+Diffblue
+disambiguates
+discoverability
+dismissable
+Disqus
+Distroless
+Divio
+DLE
+DNs
+Docker
+Dockerfile
+Dockerfiles
+Dockerize
+Dockerized
+Dockerizing
+Docusaurus
+dogfood
+dogfooding
+dogfoods
+DOMPurify
+dotenv
+doublestar
+downvoted
+downvotes
+Dpl
+dput
+Dreamweaver
+DRIs
+DSLs
+DSN
+Dynatrace
+Ecto
+eden
+EGit
+ElastiCache
+Elasticsearch
+Eleventy
+enablement
+Encrypt
+enqueued
+enqueues
+enricher
+enrichers
+enum
+enums
+Enviroments
+ESLint
+ESXi
+ETag
+ETags
+Etsy
+Excon
+exfiltrate
+exfiltration
+ExifTool
+expirable
+Facebook
+failover
+failovers
+failsafe
+Falco
+falsy
+Fanout
+Fargate
+fastlane
+Fastly
+Fastzip
+favicon
+favorited
+Fediverse
+ffaker
+Figma
+Filebeat
+Filestore
+Finicity
+Finnhub
+Fio
+firewalled
+firewalling
+fixup
+flamegraph
+flamegraphs
+Flawfinder
+Flickr
+Fluentd
+Flutterwave
+Flycheck
+focusable
+Forgerock
+formatters
+Fortanix
+Fortinet
+FQDNs
+FreshBooks
+frontend
+Fugit
+Fulcio
+fuzzer
+fuzzing
+Gantt
+Gbps
+Gemfile
+Gemnasium
+Gemojione
+Getter
+Getters
+gettext
+GIDs
+gists
+Git
+Gitaly
+Gitea
+GitHub
+GitLab
+gitlabsos
+Gitleaks
+Gitpod
+Gitter
+GLab
+globals
+globbing
+globstar
+globstars
+Gmail
+Godep
+Golang
+Gollum
+Google
+goroutine
+goroutines
+Gosec
+GPUs
+Gradle
+Grafana
+Grafonnet
+gravatar
+Grype
+GUIs
+Gzip
+Hackathon
+Haml
+HAProxy
+HAR
+hardcode
+hardcoded
+hardcodes
+HashiCorp
+Haswell
+heatmap
+heatmaps
+Helm
+Helmfile
+Heroku
+Herokuish
+heuristical
+hexdigest
+Hexo
+HipChat
+hostname
+hostnames
+hotfix
+hotfixed
+hotfixes
+hotfixing
+hotspots
+HTMLHint
+http
+https
+hyperparameter
+hyperparameters
+iCalendar
+iCloud
+idempotence
+idmapper
+Iglu
+IIFEs
+Immer
+inclusivity
+inflector
+inflectors
+Ingress
+initializer
+initializers
+injective
+innersource
+innersourcing
+inodes
+Instrumentor
+interdependencies
+interdependency
+interruptible
+inviter
+IPs
+IPython
+irker
+issuables
+Istio
+Jaeger
+jasmine-jquery
+Javafuzz
+JavaScript
+Jenkins
+Jenkinsfile
+Jira
+Jitsu
+jq
+jQuery
+JRuby
+JSDoc
+jsdom
+Jsonnet
+JUnit
+JupyterHub
+JWT
+JWTs
+Kaminari
+kanban
+kanbans
+kaniko
+Karma
+KCachegrind
+Kerberos
+Keycloak
+keyless
+keyset
+keyspace
+keystore
+keytab
+keytabs
+Kibana
+Kinesis
+Klar
+Knative
+KPIs
+Kramdown
+Kroki
+kubeconfig
+Kubecost
+kubectl
+Kubernetes
+Kubesec
+Kucoin
+Kustomize
+Kustomization
+kwargs
+Laravel
+LaunchDarkly
+ldapsearch
+Lefthook
+Leiningen
+Lemmy
+LLM
+LLMs
+libFuzzer
+Libgcrypt
+Libravatar
+liveness
+lockfile
+lockfiles
+Lodash
+Lograge
+logrotate
+Logrus
+Logstash
+lookahead
+lookaheads
+lookbehind
+lookbehinds
+Lookbook
+lookups
+loopback
+LSP
+Lua
+Lucene
+Lucidchart
+macOS
+Mailchimp
+Maildir
+Mailgun
+Mailroom
+Makefile
+Makefiles
+malloc
+Maniphest
+Markdown
+markdownlint
+Marketo
+matcher
+matchers
+Matomo
+Mattermost
+mbox
+memoization
+memoize
+memoized
+memoizes
+memoizing
+Memorystore
+mergeability
+mergeable
+metaprogramming
+metric's
+microformat
+Microsoft
+middleware
+middlewares
+migratable
+migratus
+minikube
+MinIO
+misconfiguration
+misconfigurations
+misconfigure
+misconfigured
+misconfigures
+misconfiguring
+mitigations
+mitmproxy
+mixin
+mixins
+MLflow
+Mmap
+mockup
+mockups
+ModSecurity
+Monokai
+monorepo
+monorepos
+monospace
+MRs
+MSBuild
+multiline
+mutex
+nameserver
+nameservers
+namespace
+namespace's
+namespaced
+namespaces
+namespacing
+namespacings
+Nanoc
+NAT
+navigations
+negatable
+Neovim
+Netlify
+NGINX
+ngrok
+njsscan
+Nokogiri
+nosniff
+noteable
+noteables
+npm
+NuGet
+nullability
+nullable
+Nurtch
+NVMe
+nyc
+OAuth
+OCP
+Octokit
+offboarded
+offboarding
+offboards
+OIDs
+OKRs
+OKRs
+Okta
+OLM
+OmniAuth
+onboarding
+OpenID
+OpenShift
+OpenTelemetry
+Opsgenie
+Opstrace
+ORMs
+OS
+osquery
+OSs
+OTel
+outdent
+Overcommit
+Packagist
+packfile
+packfiles
+Packwerk
+paginator
+parallelization
+parallelizations
+parsable
+PascalCase
+PascalCased
+passthrough
+passthroughs
+passwordless
+Patroni
+PDFs
+performant
+PgBouncer
+pgFormatter
+pgLoader
+pgMustard
+pgvector
+Phabricator
+phaser
+phasers
+phpenv
+Phorge
+PHPUnit
+PIDs
+pipenv
+Pipfile
+Pipfiles
+Piwik
+plaintext
+podman
+Poedit
+polyfill
+polyfills
+pooler
+postfixed
+Postgres
+postgres.ai
+PostgreSQL
+Praefect's
+prebuild
+prebuilds
+precompile
+precompiled
+preconfigure
+preconfigured
+preconfigures
+prefetch
+prefetching
+prefill
+prefilled
+prefilling
+prefills
+preload
+preloaded
+preloading
+preloads
+prepend
+prepended
+prepending
+prepends
+prepopulate
+prepopulated
+presentationals
+Prettifier
+Pritaly
+Priyanka
+profiler
+Prometheus
+ProseMirror
+protobuf
+protobufs
+proxied
+proxies
+proxyable
+proxying
+pseudocode
+pseudonymization
+pseudonymized
+pseudonymizer
+Pulumi
+Puma
+Pumble
+PyPI
+pytest
+Python
+Qualys
+queryable
+Quicktime
+Rackspace
+railties
+Raspbian
+rbenv
+rbspy
+rbtrace
+Rclone
+Rdoc
+reachability
+Realplayer
+reauthenticate
+reauthenticated
+reauthenticates
+reauthenticating
+rebalancing
+rebar
+rebase
+rebased
+rebases
+rebasing
+rebinding
+reCAPTCHA
+recoverability
+Redcarpet
+redirection
+redirections
+Redis
+Redmine
+refactorings
+referer
+referers
+reflog
+reflogs
+refname
+refspec
+refspecs
+regexes
+Rego
+reimplementation
+reimplemented
+reindex
+reindexed
+reindexes
+reindexing
+reinitialize
+reinitializing
+Rekor
+relicensing
+remediations
+renderers
+renderless
+replicables
+repmgr
+repmgrd
+reposts
+repurposing
+requestee
+requesters
+requeue
+requeued
+requeues
+requeuing
+resolver
+resolver's
+Restlet
+resync
+resynced
+resyncing
+resyncs
+retarget
+retargeted
+retargeting
+retargets
+reusability
+reverified
+reverifies
+reverify
+reviewee
+RIs
+roadmap
+roadmaps
+rock
+rollout
+rollouts
+routable
+RPCs
+RSpec
+rsync
+rsynced
+rsyncing
+rsyncs
+Rubinius
+Rubix
+RuboCop
+Rubular
+RubyGems
+Rugged
+ruleset
+rulesets
+runbook
+runbooks
+runit
+runtime
+runtimes
+Salesforce
+sandboxing
+sanitization
+SBOMs
+sbt
+SBT
+scalar's
+scalers
+scatterplot
+scatterplots
+schedulable
+Schemastore
+scriptable
+scrollable
+SDKs
+segmentations
+SELinux
+Semgrep
+Sendbird
+Sendinblue
+Sendmail
+Sentry
+serializer
+serializers
+serializing
+serverless
+setuptools
+severities
+SFCs
+sharded
+sharding
+SHAs
+shfmt
+Shippo
+Shopify
+Sidekiq
+Sigstore
+Silverlight
+Sisense
+Sitespeed
+skippable
+skopeo
+Slack
+Slackbot
+SLAs
+SLIs
+Slony
+SLOs
+smartcard
+smartcards
+snake_case
+snake_cased
+Snapcraft
+snapshotting
+Snowplow
+Snyk
+Sobelow
+Solargraph
+Solarized
+Sourcegraph
+Spamcheck
+spammable
+sparkline
+sparklines
+Speedscope
+spidering
+Splunk
+SpotBugs
+Squarespace
+SREs
+SSDs
+SSGs
+Stackdriver
+Stackprof
+stageless
+starrer
+starrers
+storable
+storages
+strace
+strikethrough
+strikethroughs
+stunnel
+stylelint
+subchart
+subcharts
+subcommand
+subcommands
+subcomponent
+subfolder
+subfolders
+subgraph
+subgraphs
+subgroup
+subgroups
+subkey
+subkeys
+sublicense
+sublicensed
+sublicenses
+sublicensing
+submodule
+submodule's
+subnet
+subnets
+subnetting
+subpath
+subproject
+subprojects
+subqueried
+subqueries
+subquery
+subquerying
+Subreddit
+substring
+substrings
+subtask
+subtasks
+subtest
+subtests
+subtransaction
+subtransactions
+subtree
+subtrees
+sudo
+sunsetting
+supercookie
+supercookies
+supergroup
+supergroups
+superset
+supersets
+supertype
+supertypes
+SVGs
+swappiness
+swimlane
+swimlanes
+syncable
+Sysbench
+syscall
+syscalls
+syslog
+systemd
+tablespace
+tablespaces
+Tamland
+tanuki
+taskscaler
+tcpdump
+teardown
+templated
+Thanos
+thoughtbot
+throughputs
+Tiller
+timebox
+timeboxed
+timeboxes
+timeboxing
+timecop
+timelog
+timelogs
+Tiptap
+todos
+tokenizer
+Tokenizers
+tokenizing
+tolerations
+toolchain
+toolchains
+toolkit
+toolkits
+toolset
+tooltip
+tooltips
+transactionally
+transpile
+transpiled
+transpiles
+transpiling
+Trello
+Trendline
+triaged
+triages
+triaging
+Trivy
+Truststore
+truthy
+Twilio
+Twitter
+Typeform
+TypeScript
+TZInfo
+Ubuntu
+Udemy
+UI
+UIDs
+unapplied
+unapprove
+unapproved
+unapproving
+unarchive
+unarchived
+unarchives
+unarchiving
+unary
+unassign
+unassigning
+unassigns
+unban
+unbans
+uncached
+uncheck
+unchecked
+unchecking
+unchecks
+uncomment
+uncommented
+uncommenting
+uncordon
+underperforming
+unencode
+unencoded
+unencoder
+unencodes
+unencrypted
+unescaped
+unfollow
+unfollowed
+unfollows
+Unicorn
+unindexed
+unlink
+unlinking
+unlinks
+unmappable
+unmapped
+unmergeable
+unmerged
+unmerges
+unmerging
+unmocked
+unoptimize
+unoptimized
+unoptimizes
+unoptimizing
+unparsable
+unpatched
+unpause
+unprioritized
+unprotect
+unprotected
+unprotecting
+unprotects
+unprovision
+unprovisioned
+unprovisions
+unpublish
+unpublished
+unpublishes
+unpublishing
+unpullable
+unpushed
+unreferenced
+unregister
+unregistered
+unregisters
+unreplicated
+unresolve
+unresolved
+unresolving
+unreviewed
+unrevoke
+unsanitized
+unschedule
+unscoped
+unsetting
+unshare
+unshared
+unshares
+unstage
+unstaged
+unstages
+unstaging
+unstar
+unstars
+unstarted
+unstash
+unstashed
+unstashing
+unsynced
+unsynchronized
+untarred
+untracked
+untrusted
+unverified
+unverifies
+unverify
+unverifying
+uploader
+uploaders
+upstreams
+upvote
+upvoted
+upvotes
+urgencies
+URIs
+URL
+UUIDs
+Vagrantfile
+validator
+validators
+vCPUs
+vendored
+vendoring
+versionless
+viewport
+viewports
+virtualized
+virtualizing
+Vite
+VMs
+VPCs
+VSCodium
+Vue
+Vuex
+waitlist
+walkthrough
+walkthroughs
+WebdriverIO
+Webex
+webpack
+WEBrick
+webserver
+Webservice
+websocket
+websockets
+whitepaper
+whitepapers
+wireframe
+wireframed
+wireframes
+wireframing
+Wireshark
+Wordpress
+Workato
+workstream
+worktree
+worktrees
+Worldline
+Xcode
+Xeon
+XPath
+Yandex
+YouTrack
+ytt
+Yubico
+Zabbix
+ZAProxy
+Zeitwerk
+Zendesk
+ZenTao
+Zoekt
+zsh
+Zstandard
+Zuora
diff --git a/doc/.vale/gitlab_docs/AlertBoxStyle.yml b/doc/.vale/gitlab_docs/AlertBoxStyle.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9kb2NzL0FsZXJ0Qm94U3R5bGUueW1s
--- /dev/null
+++ b/doc/.vale/gitlab_docs/AlertBoxStyle.yml
@@ -0,0 +1,20 @@
+---
+# Error: gitlab.AlertBoxStyle
+#
+# Makes sure alert boxes are used with block quotes. Checks for 3 formatting issues:
+#
+# - Alert boxes inside a block quote ('>')
+# - Alert boxes with the note text on the same line
+# - Alert boxes using words other than 'NOTE' or 'WARNING'
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Update the format of the '%s' alert box. View the style guide for details."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#alert-boxes
+level: error
+nonword: true
+scope: raw
+tokens:
+  - '^ *> *(NOTE|WARNING)'
+  - '(?<=\n\n)(NOTE|WARNING):[^\n]+\n'
+  - '(?<=\n\n) *(> )?\**([Nn]ote|TIP|[Tt]ip|CAUTION|[Cc]aution|DANGER|[Dd]anger|[Ww]arning):.*'
diff --git a/doc/.vale/gitlab_docs/Badges-Offerings.yml b/doc/.vale/gitlab_docs/Badges-Offerings.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9kb2NzL0JhZGdlcy1PZmZlcmluZ3MueW1s
--- /dev/null
+++ b/doc/.vale/gitlab_docs/Badges-Offerings.yml
@@ -0,0 +1,13 @@
+# Warning: gitlab.Badges-Offerings
+#
+# Tests the offering information in the tier badges that appear below topic titles.
+#
+# For a list of all options, see https://docs.gitlab.com/ee/development/documentation/styleguide/#available-product-tier-badges
+extends: existence
+message: "Offerings should be comma-separated, without `and`, and must be capitalized. Example: `GitLab.com, Self-managed, GitLab Dedicated`."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/#available-product-tier-badges
+level: error
+nonword: true
+scope: raw
+tokens:
+  - ^\*\*Offering:\*\* (Dedicated|[^\n]*(SaaS|self-managed|Self-Managed|GitLab dedicated|and|GitLab Dedicated,|, GitLab\.com|, Dedicated))
diff --git a/doc/.vale/gitlab_docs/Badges-Tiers.yml b/doc/.vale/gitlab_docs/Badges-Tiers.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9kb2NzL0JhZGdlcy1UaWVycy55bWw=
--- /dev/null
+++ b/doc/.vale/gitlab_docs/Badges-Tiers.yml
@@ -0,0 +1,13 @@
+# Warning: gitlab.Badges-Tiers
+#
+# Tests the tier information in the tier badges that appear below topic titles.
+#
+# For a list of all options, see https://docs.gitlab.com/ee/development/documentation/styleguide/#available-product-tier-badges
+extends: existence
+message: "Tiers should be capitalized, comma-separated, and ordered lowest to highest."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/#available-product-tier-badges
+level: error
+nonword: true
+scope: raw
+tokens:
+- ^\*\*Tier:\*\*.*(free|premium|ultimate|, Free|Ultimate,)
diff --git a/doc/.vale/gitlab_docs/HistoryItems.yml b/doc/.vale/gitlab_docs/HistoryItems.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9kb2NzL0hpc3RvcnlJdGVtcy55bWw=
--- /dev/null
+++ b/doc/.vale/gitlab_docs/HistoryItems.yml
@@ -0,0 +1,14 @@
+---
+# Warning: gitlab.HistoryItems
+#
+# Ensures history items are properly formatted.
+#
+extends: existence
+message: "History items must always start with '> -', one item per line, even if there is only one item."
+link: https://docs.gitlab.com/ee/development/documentation/versions.html#add-a-version-history-item
+level: error
+nonword: true
+scope: raw
+tokens:
+  - '(?<=^#+[^\n]*\n\n)> [^-]'
+  - '^> - [^\n]*\n[^\n>`]'
diff --git a/doc/.vale/gitlab_docs/HistoryItemsOrder.yml b/doc/.vale/gitlab_docs/HistoryItemsOrder.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9kb2NzL0hpc3RvcnlJdGVtc09yZGVyLnltbA==
--- /dev/null
+++ b/doc/.vale/gitlab_docs/HistoryItemsOrder.yml
@@ -0,0 +1,13 @@
+---
+# Warning: gitlab.HistoryItemsOrder
+#
+# Ensures history items come before the Details block.
+#
+extends: existence
+message: "History items must follow the tier, offering, or status details."
+link: https://docs.gitlab.com/ee/development/documentation/versions.html#add-a-version-history-item
+level: error
+nonword: true
+scope: raw
+tokens:
+  - '^\>[^\n]*\n\nDETAILS'
diff --git a/doc/.vale/gitlab_docs/InternalLinkCase.yml b/doc/.vale/gitlab_docs/InternalLinkCase.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9kb2NzL0ludGVybmFsTGlua0Nhc2UueW1s
--- /dev/null
+++ b/doc/.vale/gitlab_docs/InternalLinkCase.yml
@@ -0,0 +1,13 @@
+---
+# Error: gitlab.InternalLinkCase
+#
+# Checks that anchor fragments on internal links are in lower-case.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Use lowercase for the anchor link."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#anchor-links
+level: error
+scope: raw
+raw:
+  - '[^\`]\[[^\[\]]+\]\((https?:){0}[\w\/\.]*?#[^\s]*?[A-Z][^\) ]*\)[^\`]'
diff --git a/doc/.vale/gitlab_docs/InternalLinkExtension.yml b/doc/.vale/gitlab_docs/InternalLinkExtension.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9kb2NzL0ludGVybmFsTGlua0V4dGVuc2lvbi55bWw=
--- /dev/null
+++ b/doc/.vale/gitlab_docs/InternalLinkExtension.yml
@@ -0,0 +1,13 @@
+---
+# Error: gitlab.InternalLinkExtension
+#
+# Checks that internal links have .md extenstion and not .html extension.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Link to a file and use the .md file extension instead of .html."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#links
+level: error
+scope: raw
+raw:
+  - '\[[^\]]+\]\([^:\)]+(\/(#[^\)]+)?\)|\.html(#.+)?\))'
diff --git a/doc/.vale/gitlab_docs/InternalLinkFormat.yml b/doc/.vale/gitlab_docs/InternalLinkFormat.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9kb2NzL0ludGVybmFsTGlua0Zvcm1hdC55bWw=
--- /dev/null
+++ b/doc/.vale/gitlab_docs/InternalLinkFormat.yml
@@ -0,0 +1,13 @@
+---
+# Error: gitlab.InternalLinkFormat
+#
+# Checks that internal link paths don't start with '/' or './'.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Edit the link so it does not start with '/' or './'."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#links
+level: error
+scope: raw
+raw:
+  - '\[[^\]]+\]\(\.?\/(?!uploads|documentation).*?\)'
diff --git a/doc/.vale/gitlab_docs/InternalLinksCode.yml b/doc/.vale/gitlab_docs/InternalLinksCode.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9kb2NzL0ludGVybmFsTGlua3NDb2RlLnltbA==
--- /dev/null
+++ b/doc/.vale/gitlab_docs/InternalLinksCode.yml
@@ -0,0 +1,12 @@
+# Error: gitlab.InternalLinksCode
+#
+# Checks that internal links don't link to files outside the docs directory
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Use full URLs for files outside the docs directory."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#links
+level: error
+scope: raw
+raw:
+  - '\[[^\]]*\]\([\.\/]*(ee|app|bin|config|db|data|fixtures|gems|lib|locale|qa|scripts|spec)\/'
diff --git a/doc/.vale/gitlab_docs/ReferenceLinks.yml b/doc/.vale/gitlab_docs/ReferenceLinks.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9kb2NzL1JlZmVyZW5jZUxpbmtzLnltbA==
--- /dev/null
+++ b/doc/.vale/gitlab_docs/ReferenceLinks.yml
@@ -0,0 +1,14 @@
+---
+# Error: gitlab.ReferenceLinks
+#
+# Checks for reference-style links that should be converted to inline links.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Put this link inline with the rest of the text."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#links
+level: error
+nonword: true
+scope: raw
+tokens:
+  - '^\[[^\]]*\]: .*'
diff --git a/doc/.vale/gitlab_docs/RelativeLinks.yml b/doc/.vale/gitlab_docs/RelativeLinks.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9kb2NzL1JlbGF0aXZlTGlua3MueW1s
--- /dev/null
+++ b/doc/.vale/gitlab_docs/RelativeLinks.yml
@@ -0,0 +1,13 @@
+---
+# Error: gitlab.RelativeLinks
+#
+# Checks for the presence of absolute hyperlinks that should be relative.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Use a relative link instead of a URL, and ensure the file name ends in .md and not .html."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#links
+level: error
+scope: raw
+raw:
+  - '\[[^\]]+\]\(https?:\/\/docs\.gitlab\.com\/omnibus.*\)'
diff --git a/doc/.vale/gitlab_docs/RelativeLinksDoubleSlashes.yml b/doc/.vale/gitlab_docs/RelativeLinksDoubleSlashes.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9kb2NzL1JlbGF0aXZlTGlua3NEb3VibGVTbGFzaGVzLnltbA==
--- /dev/null
+++ b/doc/.vale/gitlab_docs/RelativeLinksDoubleSlashes.yml
@@ -0,0 +1,13 @@
+---
+# Error: gitlab.RelativeLinksDoubleSlashes
+#
+# Checks for the presence of double slashes in relative URLs.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Do not use double slashes '//' or '../doc' in the link path"
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#links
+level: error
+scope: raw
+raw:
+  - '(\.//)|(\.\.\/doc\/)'
diff --git a/doc/.vale/gitlab_docs/TabsLinks.yml b/doc/.vale/gitlab_docs/TabsLinks.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jLy52YWxlL2dpdGxhYl9kb2NzL1RhYnNMaW5rcy55bWw=
--- /dev/null
+++ b/doc/.vale/gitlab_docs/TabsLinks.yml
@@ -0,0 +1,13 @@
+---
+# Error: gitlab.TabsLinks
+#
+# Checks for the presence of links to individual GitLab UI tabs.
+#
+# For a list of all options, see https://vale.sh/docs/topics/styles/
+extends: existence
+message: "Do not include tabs query parameters in links."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#tabs
+level: error
+scope: raw
+raw:
+  - '\[[^\]]+\]\(.*?\.md\?tab=.*?\)'
diff --git a/doc/architecture/index.md b/doc/architecture/index.md
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jL2FyY2hpdGVjdHVyZS9pbmRleC5tZA==..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jL2FyY2hpdGVjdHVyZS9pbmRleC5tZA== 100644
--- a/doc/architecture/index.md
+++ b/doc/architecture/index.md
@@ -178,7 +178,13 @@
 
 ## Tests
 
-Omnibus GitLab repository uses ChefSpec to [test the cookbooks and recipes](https://gitlab.com/gitlab-org/omnibus-gitlab/tree/master/spec/) it ships. The usual strategy is to check a recipe to see if it behaves correctly in two (or more) conditions: when the user doesn't specify any corresponding configuration, (i.e. when defaults are used) and when user-specified configuration is used. Tests may include checking if files are generated in the correct locations, services are started/stopped/notified, correct binaries are invoked, and correct parameters are being passed to method invocations. Recipes and library methods have tests associated with them. Omnibus GitLab also uses some support methods or macros to help in the testing process. The tests are defined as compatible for parallelization, where possible, to decrease the time required for running the entire test suite.
+Omnibus GitLab repository uses ChefSpec to [test the cookbooks and recipes](https://gitlab.com/gitlab-org/omnibus-gitlab/tree/master/spec/) it ships.
+The usual strategy is to check a recipe to see if it behaves correctly in two (or more) conditions: when the user
+doesn't specify any corresponding configuration, (i.e. when defaults are used) and when user-specified configuration is used.
+Tests may include checking if files are generated in the correct locations, services are started/stopped/notified, correct
+binaries are invoked, and correct parameters are being passed to method invocations. Recipes and library methods have tests associated with them.
+Omnibus GitLab also uses some support methods or macros to help in the testing process. The tests are defined as compatible for parallelization,
+where possible, to decrease the time required for running the entire test suite.
 
 So, of the components described above, some (such as software definitions, project metadata, and tests) find use during the package building, in a build environment, and some (such as Chef cookbooks and recipes, GitLab configuration file, runit, and `gitlab-ctl` commands) are used to configure the user's installed instance.
 
@@ -210,7 +216,17 @@
 
 ##### Build cache
 
-A second type of cache that plays an important role in our build process is the build cache. Build cache can be described as snapshots of the project tree (where the project gets built - `/opt/gitlab`) after each dependent software is built. Consider a project with five dependent pieces of software - A, B, C, D, and E, built in that order, we're not considering their dependencies. Build cache makes use of Git tags to make snapshots. After each software is built, a Git tag is computed and committed. Now, consider we made some change to the definition of software D. A, B, C and E remains the same. When we try to build again, omnibus can reuse the snapshot that was made before D was built in the previous build. Thus, the time taken to build A, B, and C can be saved as it can simply check out the snapshot that was made after C was built. Omnibus uses the snapshot just before the software which "dirtied" the cache (dirtying can happen either by a change in the software definition, a change in name/version of a previous component, or a change in version of the current component) was built. Similarly, if in a build there is a change in the definition of software A, it will dirty the cache and hence A and all the following dependencies get built from scratch. If C dirties the cache, A and B get reused and C, D, and E get built again from scratch.
+A second type of cache that plays an important role in our build process is the build cache. Build cache can be described
+as snapshots of the project tree (where the project gets built - `/opt/gitlab`) after each dependent software is built.
+Consider a project with five dependent pieces of software - A, B, C, D, and E, built in that order, we're not considering
+their dependencies. Build cache makes use of Git tags to make snapshots. After each software is built, a Git tag is computed and committed.
+Now, consider we made some change to the definition of software D. A, B, C and E remains the same. When we try to build again,
+omnibus can reuse the snapshot that was made before D was built in the previous build. Thus, the time taken to build A, B,
+and C can be saved as it can simply check out the snapshot that was made after C was built. Omnibus uses the snapshot just
+before the software which "dirtied" the cache (dirtying can happen either by a change in the software definition, a change
+in name/version of a previous component, or a change in version of the current component) was built. Similarly, if in a
+build there is a change in the definition of software A, it will dirty the cache and hence A and all the following dependencies
+get built from scratch. If C dirties the cache, A and B get reused and C, D, and E get built again from scratch.
 
 This cache makes sense only if it is retained across builds. For that, we use the caching mechanism of GitLab CI. We have a dedicated runner which is configured to store its internal cache in an Amazon bucket. Before each build, we pull in this cache (`restore_cache_bundle` target in our Makefile), move it to an appropriate location and start the build. It gets used by the omnibus until the point of dirtying. After the build, we pack the new cache and tell CI to back it up to the Amazon bucket (`pack_cache_bundle` in our Makefile).
 
diff --git a/doc/development/package_version_format.md b/doc/development/package_version_format.md
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jL2RldmVsb3BtZW50L3BhY2thZ2VfdmVyc2lvbl9mb3JtYXQubWQ=..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jL2RldmVsb3BtZW50L3BhY2thZ2VfdmVyc2lvbl9mb3JtYXQubWQ= 100644
--- a/doc/development/package_version_format.md
+++ b/doc/development/package_version_format.md
@@ -115,5 +115,5 @@
 
 The special cases that deviate from this general rule is listed below.
 
-### Triggered builds in [QA mirror](https://gitlab.com/gitlab-org/build/omnibus-gitlab-mirror)
+### Triggered builds in QA mirror
 
@@ -119,4 +119,5 @@
 
+When builds are triggered in the [QA mirror](https://gitlab.com/gitlab-org/build/omnibus-gitlab-mirror),
 Docker images created as part of triggered pipeline (for Package and QA run) has
 their tag decided depending on where the trigger originated. If the trigger
 originated from an `omnibus-gitlab` pipeline, the image tag is the slug of the
diff --git a/doc/settings/ssl/ssl_troubleshooting.md b/doc/settings/ssl/ssl_troubleshooting.md
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jL3NldHRpbmdzL3NzbC9zc2xfdHJvdWJsZXNob290aW5nLm1k..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jL3NldHRpbmdzL3NzbC9zc2xfdHJvdWJsZXNob290aW5nLm1k 100644
--- a/doc/settings/ssl/ssl_troubleshooting.md
+++ b/doc/settings/ssl/ssl_troubleshooting.md
@@ -318,6 +318,8 @@
 the certificate and key. Contact the provider of the SSL certificate for
 further support.
 
+<!-- markdownlint-disable line-length -->
+
 ## Using GitLab Runner with a GitLab instance configured with internal CA certificate or self-signed certificate
 
 Besides getting the errors mentioned in
@@ -334,6 +336,8 @@
 
 Follow the details in [Self-signed certificates or custom Certification Authorities for GitLab Runner](https://docs.gitlab.com/runner/configuration/tls-self-signed.html).
 
+<!-- markdownlint-enable line-length -->
+
 ## Mirroring a remote GitLab repository that uses a self-signed SSL certificate
 
 When configuring a local GitLab instance to [mirror a repository](https://docs.gitlab.com/ee/user/project/repository/mirror/index.html)
diff --git a/doc/troubleshooting.md b/doc/troubleshooting.md
index 30691d1193094e8191ff6f66fdc158d3e7294a5f_ZG9jL3Ryb3VibGVzaG9vdGluZy5tZA==..ad4c3307314a8efc2ef4f399740a53ab05ed8640_ZG9jL3Ryb3VibGVzaG9vdGluZy5tZA== 100644
--- a/doc/troubleshooting.md
+++ b/doc/troubleshooting.md
@@ -246,6 +246,8 @@
 
 Run `sudo gitlab-ctl reconfigure` for the change to take effect.
 
+<!-- markdownlint-disable line-length -->
+
 ## PostgreSQL error `FATAL:  could not open shared memory segment "/PostgreSQL.XXXXXXXXXX": Permission denied`
 
 By default, PostgreSQL tries to detect the shared memory type to use. If you don't
@@ -259,6 +261,8 @@
 
 Run `sudo gitlab-ctl reconfigure` for the change to take effect.
 
+<!-- markdownlint-enable line-length -->
+
 ## PostgreSQL error `FATAL:  remaining connection slots are reserved for non-replication superuser connections`
 
 PostgreSQL has a setting for the maximum number of the concurrent connections
@@ -789,6 +793,8 @@
 This can be resolved by fixing the DNS configurations (or `/etc/hosts`) to
 resolve the hosts to an **IPv4** address instead of **IPv6**.
 
+<!-- markdownlint-disable line-length -->
+
 ## `URI::InvalidComponentError (bad component(expected host component: my_url.tld)` when `external_url` contains underscores
 
 If you have set `external_url` with underscores (for example `https://my_company.example.com`), you may face the following issues with CI/CD:
@@ -816,6 +822,8 @@
 
 As a workaround, avoid using underscores in `external_url`. There is an open issue about it: [Setting `external_url` with underscore results in a broken GitLab CI/CD functionality](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/6077).
 
+<!-- markdownlint-enable line-length -->
+
 ## Upgrade fails with `timeout: run: /opt/gitlab/service/gitaly` error
 
 If the package upgrade fails when running reconfigure with the following error,