Files
openclaw/.github/workflows/docs-external-links.yml
ToToKr d57e228c3a docs(mistral): fix broken adjustable reasoning docs URL (#114867)
* docs(mistral): fix broken adjustable reasoning docs URL

The linked Mistral page 404s; the reasoning docs now live one path segment up. Verified: old URL returns HTTP 404, new URL returns HTTP 200 and documents reasoning_effort. oxfmt --check passed on the changed file.

* fix(ci): audit links inside docs components

* test(cli): isolate root help exit fixture

* test(ci): split embedded agent shard

* fix(ci): harden docs link projection

* test(ci): satisfy docs audit strict types

* test(ci): isolate incomplete-turn harness

* test(cli): document root help fixture boundary

* test(ci): isolate overflow compaction harness

* test(ci): isolate contaminated agent model tests

* test(ci): update isolated prefix routing

* test(ci): bound loaded streaming HTTP cases

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-28 06:55:02 -04:00

111 lines
3.6 KiB
YAML

name: Docs External Link Audit
on:
schedule:
- cron: "47 7 * * 1"
workflow_dispatch:
permissions:
contents: read
concurrency:
group: docs-external-link-audit
cancel-in-progress: false
jobs:
audit:
runs-on: ubuntu-24.04
timeout-minutes: 45
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
persist-credentials: false
- name: Setup Node.js and pnpm
uses: ./.github/actions/setup-node-env
with:
install-bun: "false"
install-deps: "false"
- name: Install link audit dependencies
run: pnpm install --filter . --frozen-lockfile --ignore-scripts
- name: Prepare MDX link audit input
run: >-
node scripts/docs-link-audit.mjs
--prepare-external-links
.artifacts/docs-external-links/mdx
- name: Audit external links
uses: lycheeverse/lychee-action@e7477775783ea5526144ba13e8db5eec57747ce8 # v2.9.0
with:
args: >-
--no-progress
--base-url https://docs.openclaw.ai
--exclude-all-private
--accept '100..=399,401,403,429,500..=599'
--accept-timeouts
--max-retries 2
--retry-wait-time 2
--timeout 20
--scheme http
--scheme https
--exclude '^https://docs\.openclaw\.ai/'
--exclude '^https://github\.com/openclaw/maintainers/'
--exclude '^https://(claude\.ai|help\.openai\.com|openai\.com|platform\.openai\.com|support\.discord\.com|www\.npmjs\.com|www\.raspberrypi\.com)/'
'./README.md'
'./CONTRIBUTING.md'
'./SECURITY.md'
'./docs/**/*.md'
'./docs/**/*.mdx'
'./docs/docs.json'
'./.artifacts/docs-external-links/mdx/**/*.md'
'./.artifacts/docs-external-links/mdx/**/*.mdx'
fail: false
failIfEmpty: true
format: markdown
output: .artifacts/docs-external-links/report.md
# The main pass follows redirects. This pass stops at the first response
# so permanent moves remain visible without flagging temporary redirects.
- name: Report permanent redirects
if: always()
continue-on-error: true
run: >-
lychee
--no-progress
--base-url https://docs.openclaw.ai
--exclude-all-private
--accept '100..=300,302..=307,309..=599'
--accept-timeouts
--max-retries 2
--retry-wait-time 2
--timeout 20
--max-redirects 0
--scheme http
--scheme https
--exclude '^https://docs\.openclaw\.ai/'
--exclude '^https://github\.com/openclaw/maintainers/'
--exclude '^https://(claude\.ai|help\.openai\.com|openai\.com|platform\.openai\.com|support\.discord\.com|www\.npmjs\.com|www\.raspberrypi\.com)/'
--format markdown
--output .artifacts/docs-external-links/permanent-redirects.md
'./README.md'
'./CONTRIBUTING.md'
'./SECURITY.md'
'./docs/**/*.md'
'./docs/**/*.mdx'
'./docs/docs.json'
'./.artifacts/docs-external-links/mdx/**/*.md'
'./.artifacts/docs-external-links/mdx/**/*.mdx'
- name: Upload audit report
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: docs-external-link-audit
path: .artifacts/docs-external-links
include-hidden-files: true
if-no-files-found: warn
retention-days: 14