Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -394,3 +394,75 @@ All implementation work is tracked in GitHub Issues. See `PROJECT_STATUS.md` for
- Architecture: `docs/arc42/arc42.adoc`
- Project Status: `PROJECT_STATUS.md`
- GitHub Issues: https://github.com/LLM-Coding/Semantic-Anchors/issues

## Risk Radar Assessment

_Generated by `/risk-assess` on 2026-02-13_

**Mitigation Tracking:** [Risk Radar Issues](https://github.com/LLM-Coding/Semantic-Anchors/labels/risk-radar)
**Documentation:** [Vibe Coding Risk Radar](https://llm-coding.github.io/vibe-coding-risk-radar/)

### Module: scripts
| Dimension | Score | Level | Evidence |
|-----------|-------|-------|----------|
| Code Type | 1 | Build Scripts / Tests | extract-metadata.js, split-readme.js, update-anchor-categories.js, translate-anchors.py |
| Language | 2 | Dynamically typed | 3 .js files, 1 .py file |
| Deployment | 1 | Internal tool | CI/CD automation, build-time scripts |
| Data Sensitivity | 0 | Public data | Processes public AsciiDoc documentation |
| Blast Radius | 0 | Cosmetic / Tech debt | Build failures, incorrect metadata generation |

**Tier: 2** — determined by Language = 2

### Mitigations: scripts (Tier 2)

#### Tier 1 — Automated Gates
| Measure | Status | Details | Issue |
|---------|--------|---------|-------|
| Linter & Formatter | ❌ Ausstehend | No ESLint or Prettier config detected | [#81](https://github.com/LLM-Coding/Semantic-Anchors/issues/81) |
| Type Checking | ❌ N/A | JavaScript without TypeScript | — |
| Pre-Commit Hooks | ❌ Ausstehend | No husky or pre-commit framework | [#82](https://github.com/LLM-Coding/Semantic-Anchors/issues/82) |
| Dependency Check | ❌ Ausstehend | No npm audit in CI workflows | [#83](https://github.com/LLM-Coding/Semantic-Anchors/issues/83) |
| CI Build & Unit Tests | ✅ Vorhanden | GitHub Actions (.github/workflows/test.yml) | — |

#### Tier 2 — Extended Assurance
| Measure | Status | Details | Issue |
|---------|--------|---------|-------|
| SAST | ❌ Ausstehend | No Semgrep or CodeQL detected | [#84](https://github.com/LLM-Coding/Semantic-Anchors/issues/84) |
| AI Code Review | ❌ Ausstehend | No CodeRabbit or Copilot Review | [#86](https://github.com/LLM-Coding/Semantic-Anchors/issues/86) |
| Property-Based Tests | ❌ Ausstehend | No fast-check or hypothesis | [#85](https://github.com/LLM-Coding/Semantic-Anchors/issues/85) |
| SonarQube Quality Gate | ❌ Ausstehend | No SonarQube config | [#87](https://github.com/LLM-Coding/Semantic-Anchors/issues/87) |
| Sampling Review (~20%) | ⚠️ Teilweise | PR review process (assumed) | [#88](https://github.com/LLM-Coding/Semantic-Anchors/issues/88) |

---

### Module: website
| Dimension | Score | Level | Evidence |
|-----------|-------|-------|----------|
| Code Type | 0 | UI / CSS / Docs | Frontend components with DOM manipulation (header.js, card-grid.js, anchor-modal.js) |
| Language | 2 | Dynamically typed | 17 .js files (JavaScript) |
| Deployment | 2 | Public-facing app | GitHub Pages deployment, public documentation website |
| Data Sensitivity | 0 | Public data | Public semantic anchor documentation |
| Blast Radius | 0 | Cosmetic / Tech debt | UI glitches, broken features |

**Tier: 2** — determined by Language = 2, Deployment = 2

### Mitigations: website (Tier 2)

#### Tier 1 — Automated Gates
| Measure | Status | Details | Issue |
|---------|--------|---------|-------|
| Linter & Formatter | ❌ Ausstehend | No ESLint or Prettier config detected | [#81](https://github.com/LLM-Coding/Semantic-Anchors/issues/81) |
| Type Checking | ❌ N/A | JavaScript without TypeScript | — |
| Pre-Commit Hooks | ❌ Ausstehend | No husky or pre-commit framework | [#82](https://github.com/LLM-Coding/Semantic-Anchors/issues/82) |
| Dependency Check | ❌ Ausstehend | No npm audit in CI workflows | [#83](https://github.com/LLM-Coding/Semantic-Anchors/issues/83) |
| CI Build & Unit Tests | ✅ Vorhanden | GitHub Actions with Playwright E2E tests and Lighthouse CI (.github/workflows/test.yml) | — |

#### Tier 2 — Extended Assurance
| Measure | Status | Details | Issue |
|---------|--------|---------|-------|
| SAST | ❌ Ausstehend | No Semgrep or CodeQL detected | [#84](https://github.com/LLM-Coding/Semantic-Anchors/issues/84) |
| AI Code Review | ❌ Ausstehend | No CodeRabbit or Copilot Review | [#86](https://github.com/LLM-Coding/Semantic-Anchors/issues/86) |
| Property-Based Tests | ❌ Ausstehend | No fast-check or hypothesis | [#85](https://github.com/LLM-Coding/Semantic-Anchors/issues/85) |
| SonarQube Quality Gate | ❌ Ausstehend | No SonarQube config | [#87](https://github.com/LLM-Coding/Semantic-Anchors/issues/87) |
| Sampling Review (~20%) | ⚠️ Teilweise | PR review process (assumed) | [#88](https://github.com/LLM-Coding/Semantic-Anchors/issues/88) |

14 changes: 14 additions & 0 deletions website/src/components/anchor-modal.js
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,20 @@ export async function loadAnchorContent(anchorId) {
details.setAttribute('open', '')
})

// Convert internal AsciiDoc cross-reference links to router navigation
contentEl.querySelectorAll('a[href^="#"]').forEach(link => {
const href = link.getAttribute('href')
// Only process simple hash links (cross-references), not hash routes
if (href && href.startsWith('#') && !href.startsWith('#/')) {
const anchorId = href.substring(1) // Remove the '#'
link.addEventListener('click', (e) => {
e.preventDefault()
// Navigate to the linked anchor
window.location.hash = `#/anchor/${anchorId}`
})
}
})

} catch (error) {
console.error('Error loading anchor content:', error)
titleEl.textContent = 'Error'
Expand Down
Loading