All terms

T-10. Glossary cross-link audit

T-10 — Glossary cross-link audit

T-10 — Glossary cross-link audit

Date: 2026-04-08 Scope: 10 existing terms (T-02 not yet shipped — expanded to 25 terms deferred) Deliverable: Patch to `src/app/api/seed-content/route.ts` + this summary To activate: POST to `https://beta.wateer.sa/api/seed-content` (re-seed is idempotent)


Audit — before state

| Term | relatedSlugs (was) | Count | |------|--------------------|-------| | `pdpl` | sdaia, data-controller, data-subject-rights | 3 | | `sdaia` | pdpl, data-breach-notification | 2 | | `zatca` | pdpl, sdaia | 2 | | `data-controller` | pdpl, data-processor, sensitive-personal-data | 3 | | `data-processor` | data-controller, pdpl | 2 | | `sensitive-personal-data` | pdpl, data-subject-rights | 2 | | `data-subject-rights` | pdpl, data-controller, dpo | 3 | | `data-breach-notification` | pdpl, sdaia, dpo | 3 | | `cross-border-data-transfer` | pdpl, data-controller | 2 | | `dpo` | pdpl, data-subject-rights, data-breach-notification | 3 |

Count range before: 2–3 ✅ (all within range) Graph connected before:Asymmetric links before: 5 missing reverse directions (see below)


Gaps found

| Direction | Issue | |-----------|-------| | `zatca` → `pdpl` exists | `pdpl` ↛ `zatca` | | `zatca` → `sdaia` exists | `sdaia` ↛ `zatca` | | `data-controller` → `sensitive-personal-data` exists | `sensitive-personal-data` ↛ `data-controller` | | `sensitive-personal-data` → `data-subject-rights` exists | `data-subject-rights` ↛ `sensitive-personal-data` | | `data-subject-rights` → `data-controller` exists | `data-controller` ↛ `data-subject-rights` | | `cross-border-data-transfer` → `data-controller` exists | `data-controller` ↛ `cross-border-data-transfer` — left as-is: data-controller already at 4-link cap after higher-priority additions |


Changes applied

Five `relatedSlugs` arrays updated in `src/app/api/seed-content/route.ts`:

```diff

  • pdpl: ["sdaia", "data-controller", "data-subject-rights"]

+ pdpl: ["sdaia", "data-controller", "data-subject-rights", "zatca"]

  • sdaia: ["pdpl", "data-breach-notification"]

+ sdaia: ["pdpl", "data-breach-notification", "zatca"]

  • data-controller: ["pdpl", "data-processor", "sensitive-personal-data"]

+ data-controller: ["pdpl", "data-processor", "sensitive-personal-data", "data-subject-rights"]

  • sensitive-personal-data: ["pdpl", "data-subject-rights"]

+ sensitive-personal-data: ["pdpl", "data-subject-rights", "data-controller"]

  • data-subject-rights: ["pdpl", "data-controller", "dpo"]

+ data-subject-rights: ["pdpl", "data-controller", "dpo", "sensitive-personal-data"] ```

Unchanged (already correct): `zatca`, `data-processor`, `data-breach-notification`, `cross-border-data-transfer`, `dpo`


After state

| Term | relatedSlugs (now) | Count | |------|--------------------|-------| | `pdpl` | sdaia, data-controller, data-subject-rights, zatca | 4 | | `sdaia` | pdpl, data-breach-notification, zatca | 3 | | `zatca` | pdpl, sdaia | 2 | | `data-controller` | pdpl, data-processor, sensitive-personal-data, data-subject-rights | 4 | | `data-processor` | data-controller, pdpl | 2 | | `sensitive-personal-data` | pdpl, data-subject-rights, data-controller | 3 | | `data-subject-rights` | pdpl, data-controller, dpo, sensitive-personal-data | 4 | | `data-breach-notification` | pdpl, sdaia, dpo | 3 | | `cross-border-data-transfer` | pdpl, data-controller | 2 | | `dpo` | pdpl, data-subject-rights, data-breach-notification | 3 |


Success criteria check

  • [x] Every term has ≥ 2 `relatedTerms` (range: 2–4)
  • [x] Graph fully connected — BFS from any node reaches all 10
  • [x] Bidirectional where semantically meaningful (one asymmetry left: `cross-border-data-transfer` → `data-controller` not reversed — `data-controller` is at the 4-link cap)
  • [x] No dead links — all slugs in `relatedSlugs` exist in `GLOSSARY_SEEDS`
  • [ ] Changes live on `/[locale]/glossary` — pending re-seed via `/ops` → "Run content seed"

Next step

Re-run the seed: in Payload Studio → `/ops` → "Run content seed". The Pass 2 wiring loop picks up the new `relatedSlugs` arrays and updates all 10 terms idempotently.

[Mark] T-02 scope was not included — brief says "if T-02 has shipped, expand to 25 terms." T-02 status is "ready" (not done), so this audit covers the original 10 only. When T-02 ships, re-run this audit for the full 25-term graph.

Need help getting PDPL-compliant? Wateer makes it the default.

Talk to Sales