@noyrax/documentation-system-plugin 1.0.4-beta.3 → 1.0.4-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/cache/ast-cache.js +69 -0
- package/out/cache/ast-cache.js.map +1 -0
- package/out/cache/dependencies-cache.js +73 -0
- package/out/cache/dependencies-cache.js.map +1 -0
- package/out/cache/output-cache.js +69 -0
- package/out/cache/output-cache.js.map +1 -0
- package/out/cache/signature-cache.js +60 -0
- package/out/cache/signature-cache.js.map +1 -0
- package/out/cli/generate-cli.js +341 -0
- package/out/cli/generate-cli.js.map +1 -0
- package/out/cli/scan-cli.js +157 -0
- package/out/cli/scan-cli.js.map +1 -0
- package/out/cli/validate-cli.js +258 -0
- package/out/cli/validate-cli.js.map +1 -0
- package/out/core/async.js +38 -0
- package/out/core/async.js.map +1 -0
- package/out/core/consolidation.js +230 -0
- package/out/core/consolidation.js.map +1 -0
- package/out/core/git.js +48 -0
- package/out/core/git.js.map +1 -0
- package/out/core/language-detection.js +29 -0
- package/out/core/language-detection.js.map +1 -0
- package/out/core/scanner.js +180 -0
- package/out/core/scanner.js.map +1 -0
- package/out/core/signature-formatter.js +162 -0
- package/out/core/signature-formatter.js.map +1 -0
- package/out/core/symbol-classifier.js +96 -0
- package/out/core/symbol-classifier.js.map +1 -0
- package/out/core/symbols.js +24 -0
- package/out/core/symbols.js.map +1 -0
- package/out/drift/index.js +28 -0
- package/out/drift/index.js.map +1 -0
- package/out/extension.js +984 -0
- package/out/extension.js.map +1 -0
- package/out/generator/adr-linker.js +216 -0
- package/out/generator/adr-linker.js.map +1 -0
- package/out/generator/change-report.js +124 -0
- package/out/generator/change-report.js.map +1 -0
- package/out/generator/dependency-graph.js +98 -0
- package/out/generator/dependency-graph.js.map +1 -0
- package/out/generator/index.js +117 -0
- package/out/generator/index.js.map +1 -0
- package/out/generator/module-doc.js +438 -0
- package/out/generator/module-doc.js.map +1 -0
- package/out/generator/system-metadata.js +202 -0
- package/out/generator/system-metadata.js.map +1 -0
- package/out/index/index.js +161 -0
- package/out/index/index.js.map +1 -0
- package/out/logging/index.js +24 -0
- package/out/logging/index.js.map +1 -0
- package/out/parsers/dependencies.js +126 -0
- package/out/parsers/dependencies.js.map +1 -0
- package/out/parsers/json-yaml.js +121 -0
- package/out/parsers/json-yaml.js.map +1 -0
- package/out/parsers/python.js +160 -0
- package/out/parsers/python.js.map +1 -0
- package/out/parsers/ts-js.js +598 -0
- package/out/parsers/ts-js.js.map +1 -0
- package/out/parsers/types.js +3 -0
- package/out/parsers/types.js.map +1 -0
- package/out/ui/commands-provider.js +91 -0
- package/out/ui/commands-provider.js.map +1 -0
- package/out/ui/status-bar.js +85 -0
- package/out/ui/status-bar.js.map +1 -0
- package/out/validator/index.js +185 -0
- package/out/validator/index.js.map +1 -0
- package/out/validator/signature-matching.js +261 -0
- package/out/validator/signature-matching.js.map +1 -0
- package/out/validator/status.js +38 -0
- package/out/validator/status.js.map +1 -0
- package/package.json +9 -1
- package/.vscodeignore +0 -41
- package/MCP_SERVER_SETUP.md +0 -371
- package/assets/icon.svg +0 -27
- package/docs/LINKEDIN_ANTWORT_SEQUENZDIAGRAMME.md +0 -190
- package/docs/SEQUENZDIAGRAMM_BEWEIS.md +0 -469
- package/docs/SEQUENZDIAGRAMM_VALIDATE_FLOW.md +0 -282
- package/docs/adr/001-signatur-abweichung-fix.md +0 -54
- package/docs/adr/002-file-specific-validation-1.0.1.md +0 -45
- package/docs/adr/003-documentation-generation-bugs.md +0 -134
- package/docs/adr/004-validator-signature-matching-fix.md +0 -121
- package/docs/adr/005-validator-generic-simplification-tightening.md +0 -35
- package/docs/adr/006-parser-variable-type-extraction.md +0 -33
- package/docs/adr/007-ts-parser-load-libs-for-accurate-types.md +0 -31
- package/docs/adr/008-dependencies-cache-phase1.md +0 -133
- package/docs/adr/009-consolidation-union-logic-phase1-2.md +0 -147
- package/docs/adr/010-extension-union-integration-phase1-3-and-phase2.md +0 -179
- package/docs/adr/011-module-doc-change-tracking-phase3.md +0 -190
- package/docs/adr/012-git-deletions-change-report-phase4.md +0 -235
- package/docs/adr/013-system-functionality-fixes.md +0 -279
- package/docs/adr/014-rules-migration-und-mcp-integration.md +0 -113
- package/docs/adr/015-global-agent-package.md +0 -158
- package/docs/adr/016-produktisierung-docguard.md +0 -193
- package/docs/adr/017-signature-matching-optional-fields.md +0 -128
- package/docs/adr/018-rebranding-docguard-to-noyrax.md +0 -109
- package/docs/adr/019-system-schwachstellen-analyse-und-fixes.md +0 -204
- package/docs/adr/020-api-doc-tiefe-und-signatureformatter.md +0 -74
- package/docs/adr/021-semantic-api-docs-and-symbol-classifier.md +0 -125
- package/docs/adr/022-semantic-class-and-constants-rendering.md +0 -82
- package/docs/adr/023-adr-verknuepfung-modul-doku.md +0 -54
- package/docs/adr/024-cursor-rules-mehrdimensionaler-raum.md +0 -230
- package/docs/adr/025-mcp-tools-scan-validate-cli-bridge.md +0 -202
- package/docs/adr/026-reality-driven-development-system.md +0 -173
- package/docs/adr/027-scanner-excludes-and-union-logic-fix.md +0 -189
- package/docs/adr/028-src-coverage-union-resync.md +0 -124
- package/docs/adr/029-parser-flow-kopplung-und-sync-drift-modi.md +0 -102
- package/docs/adr/030-dependency-import-symbol-names-preservation.md +0 -123
- package/docs/adr/031-generate-cli-vollstaendige-dokumentation.md +0 -99
- package/docs/adr/032-windows-optimized-verification-scripts.md +0 -165
- package/docs/adr/036-enhanced-dependency-metadata.md +0 -190
- package/docs/adr/TEMPLATE.md +0 -76
- package/docs/index/symbols.jsonl +0 -78
- package/docs/modules/action__action.yml.md +0 -50
- package/docs/modules/documentation.config.schema.json.md +0 -37
- package/docs/modules/mcp__package.json.md +0 -130
- package/docs/modules/mcp__src__resources__docs.ts.md +0 -94
- package/docs/modules/mcp__src__server.ts.md +0 -15
- package/docs/modules/mcp__src__tools__drift.ts.md +0 -114
- package/docs/modules/mcp__src__tools__impact.ts.md +0 -130
- package/docs/modules/mcp__src__tools__scan.ts.md +0 -75
- package/docs/modules/mcp__src__tools__validate.ts.md +0 -116
- package/docs/modules/mcp__src__tools__verify-adrs.ts.md +0 -106
- package/docs/modules/mcp__tsconfig.json.md +0 -22
- package/docs/modules/package.json.md +0 -130
- package/docs/modules/packages__doc-system-agent__examples__basic-project__package.json.md +0 -43
- package/docs/modules/packages__doc-system-agent__examples__basic-project__src__calculator.ts.md +0 -81
- package/docs/modules/packages__doc-system-agent__package.json.md +0 -154
- package/docs/modules/packages__doc-system-agent__src__cli__index.ts.md +0 -8
- package/docs/modules/packages__doc-system-agent__src__cli__init.ts.md +0 -93
- package/docs/modules/packages__doc-system-agent__src__cli__update.ts.md +0 -113
- package/docs/modules/packages__doc-system-agent__src__constants.ts.md +0 -29
- package/docs/modules/packages__doc-system-agent__src__index.ts.md +0 -234
- package/docs/modules/packages__doc-system-agent__src__mcp__resources__docs.ts.md +0 -94
- package/docs/modules/packages__doc-system-agent__src__mcp__server.ts.md +0 -17
- package/docs/modules/packages__doc-system-agent__src__mcp__tools__drift.ts.md +0 -38
- package/docs/modules/packages__doc-system-agent__src__mcp__tools__impact.ts.md +0 -75
- package/docs/modules/packages__doc-system-agent__src__mcp__tools__scan.ts.md +0 -23
- package/docs/modules/packages__doc-system-agent__src__mcp__tools__validate.ts.md +0 -23
- package/docs/modules/packages__doc-system-agent__src__mcp__tools__verify-adrs.ts.md +0 -106
- package/docs/modules/packages__doc-system-agent__src__mcp__types.ts.md +0 -355
- package/docs/modules/packages__doc-system-agent__tsconfig.json.md +0 -22
- package/docs/modules/scripts__verify-adrs.js.md +0 -97
- package/docs/modules/scripts__verify-architecture.js.md +0 -93
- package/docs/modules/scripts__verify-imports.js.md +0 -114
- package/docs/modules/src____tests____setup.ts.md +0 -8
- package/docs/modules/src____tests____signature-formatter.test.ts.md +0 -16
- package/docs/modules/src____tests____snapshot-doc-generation.test.ts.md +0 -8
- package/docs/modules/src____tests____symbol-classifier.test.ts.md +0 -16
- package/docs/modules/src__cache__ast-cache.ts.md +0 -91
- package/docs/modules/src__cache__dependencies-cache.ts.md +0 -89
- package/docs/modules/src__cache__output-cache.ts.md +0 -91
- package/docs/modules/src__cache__signature-cache.ts.md +0 -76
- package/docs/modules/src__cli__generate-cli.ts.md +0 -130
- package/docs/modules/src__cli__scan-cli.ts.md +0 -99
- package/docs/modules/src__cli__validate-cli.ts.md +0 -144
- package/docs/modules/src__core__async.ts.md +0 -18
- package/docs/modules/src__core__consolidation.ts.md +0 -157
- package/docs/modules/src__core__git.ts.md +0 -35
- package/docs/modules/src__core__language-detection.ts.md +0 -31
- package/docs/modules/src__core__scanner.ts.md +0 -100
- package/docs/modules/src__core__signature-formatter.ts.md +0 -232
- package/docs/modules/src__core__symbol-classifier.ts.md +0 -178
- package/docs/modules/src__core__symbols.ts.md +0 -31
- package/docs/modules/src__drift__index.ts.md +0 -53
- package/docs/modules/src__extension.ts.md +0 -418
- package/docs/modules/src__generator__adr-linker.ts.md +0 -154
- package/docs/modules/src__generator__change-report.ts.md +0 -85
- package/docs/modules/src__generator__dependency-graph.ts.md +0 -63
- package/docs/modules/src__generator__index.ts.md +0 -40
- package/docs/modules/src__generator__module-doc.ts.md +0 -242
- package/docs/modules/src__index__index.ts.md +0 -159
- package/docs/modules/src__logging__index.ts.md +0 -87
- package/docs/modules/src__parsers__dependencies.ts.md +0 -69
- package/docs/modules/src__parsers__json-yaml.ts.md +0 -96
- package/docs/modules/src__parsers__python.ts.md +0 -73
- package/docs/modules/src__parsers__ts-js.ts.md +0 -48
- package/docs/modules/src__parsers__types.ts.md +0 -117
- package/docs/modules/src__ui__commands-provider.ts.md +0 -70
- package/docs/modules/src__ui__status-bar.ts.md +0 -79
- package/docs/modules/src__validator__index.ts.md +0 -211
- package/docs/modules/src__validator__signature-matching.ts.md +0 -209
- package/docs/modules/src__validator__status.ts.md +0 -72
- package/docs/modules/test-mcp-resources.js.md +0 -27
- package/docs/modules/tsconfig.json.md +0 -22
- package/docs/system/CHANGE_REPORT.md +0 -26
- package/docs/system/DEPENDENCIES.md +0 -403
- package/docs/system/DEPENDENCY_GRAPH.md +0 -336
- package/docs/system/NAVIGATION_SPACE_ANALYSIS.md +0 -244
- package/docs/system/NPX_CACHE_FIX.md +0 -85
- package/docs/system/NPX_LOCAL_USAGE.md +0 -66
- package/docs/system/PLUGIN_ECOSYSTEM_STATUS.md +0 -465
- package/docs/system/PLUGIN_UPDATE_GUIDE.md +0 -212
- package/docs/system/RULES_UPDATE_GUIDE.md +0 -182
- package/docs/system/SYSTEM_ANALYSIS.md +0 -947
- package/docs/system/SYSTEM_METADATA.json +0 -37
- package/documentation.config.schema.json +0 -77
- package/publish.ps1 +0 -21
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
# ADR-016: Produktisierung als DocGuard
|
|
2
|
-
|
|
3
|
-
## Status
|
|
4
|
-
|
|
5
|
-
Akzeptiert
|
|
6
|
-
|
|
7
|
-
## Datum
|
|
8
|
-
|
|
9
|
-
2024-12-01
|
|
10
|
-
|
|
11
|
-
## Kontext
|
|
12
|
-
|
|
13
|
-
Das Documentation System Plugin war bisher ein internes Tool zur automatischen Dokumentationsgenerierung. Es wurde entschieden, das System als vollwertiges Produkt zu positionieren, um:
|
|
14
|
-
|
|
15
|
-
1. **Portfolio-Showcase**: Technische Expertise demonstrieren
|
|
16
|
-
2. **Marktpositionierung**: Differenzierung gegenüber TypeDoc, JSDoc, Mintlify
|
|
17
|
-
3. **Monetarisierungspotenzial**: Gestaffeltes Pricing-Modell ermöglichen
|
|
18
|
-
|
|
19
|
-
## Entscheidung
|
|
20
|
-
|
|
21
|
-
Das System wird unter dem Markennamen **DocGuard** produktisiert mit dem Claim "Documentation that never drifts".
|
|
22
|
-
|
|
23
|
-
### 1. Branding & Identität
|
|
24
|
-
|
|
25
|
-
| Element | Wert |
|
|
26
|
-
|---------|------|
|
|
27
|
-
| Produktname | DocGuard |
|
|
28
|
-
| Tagline | "Documentation that never drifts" |
|
|
29
|
-
| Primary Color | Guard Blue `#2563EB` |
|
|
30
|
-
| Success | `#10B981` |
|
|
31
|
-
| Warning (Drift) | `#F59E0B` |
|
|
32
|
-
| Fonts | JetBrains Mono (Code), Inter (UI) |
|
|
33
|
-
|
|
34
|
-
**Dateien:**
|
|
35
|
-
- `BRANDING.md` – Vollständige Brand Guidelines
|
|
36
|
-
|
|
37
|
-
### 2. Package-Struktur (npm)
|
|
38
|
-
|
|
39
|
-
| Package | Name | Beschreibung |
|
|
40
|
-
|---------|------|--------------|
|
|
41
|
-
| CLI | `@docguard/cli` | Standalone CLI für CI/CD |
|
|
42
|
-
| MCP | `@docguard/mcp` | AI-Agent Integration |
|
|
43
|
-
| Extension | `docguard` | VS Code Extension |
|
|
44
|
-
|
|
45
|
-
**Geänderte Dateien:**
|
|
46
|
-
- `package.json` (Root)
|
|
47
|
-
- `packages/doc-system-agent/package.json`
|
|
48
|
-
- `mcp/package.json`
|
|
49
|
-
|
|
50
|
-
### 3. Dokumentation & Community
|
|
51
|
-
|
|
52
|
-
Neue Dateien für Open-Source-Professionalisierung:
|
|
53
|
-
|
|
54
|
-
| Datei | Zweck |
|
|
55
|
-
|-------|-------|
|
|
56
|
-
| `README.md` | Professionelle Produktpräsentation |
|
|
57
|
-
| `CONTRIBUTING.md` | Contribution Guidelines |
|
|
58
|
-
| `CODE_OF_CONDUCT.md` | Verhaltenskodex |
|
|
59
|
-
| `.github/ISSUE_TEMPLATE/` | Bug Reports, Feature Requests |
|
|
60
|
-
| `.github/PULL_REQUEST_TEMPLATE.md` | PR-Template |
|
|
61
|
-
|
|
62
|
-
### 4. Landing Page (`website/`)
|
|
63
|
-
|
|
64
|
-
Technologie-Stack:
|
|
65
|
-
- **Framework**: Astro 4.x
|
|
66
|
-
- **Styling**: Tailwind CSS 3.x
|
|
67
|
-
- **Deployment**: Vercel (geplant)
|
|
68
|
-
|
|
69
|
-
Komponenten:
|
|
70
|
-
- Hero mit Terminal-Demo
|
|
71
|
-
- Features Grid
|
|
72
|
-
- Pricing-Tabelle (Free/Pro/Team/Enterprise)
|
|
73
|
-
- Quick Start Guide
|
|
74
|
-
- Footer
|
|
75
|
-
|
|
76
|
-
### 5. CI/CD & GitHub Actions
|
|
77
|
-
|
|
78
|
-
| Workflow | Datei | Funktion |
|
|
79
|
-
|----------|-------|----------|
|
|
80
|
-
| CI | `.github/workflows/ci.yml` | Build, Test, Package |
|
|
81
|
-
| Publish | `.github/workflows/publish.yml` | npm, VS Code Marketplace, Website |
|
|
82
|
-
|
|
83
|
-
Wiederverwendbare Action für andere Projekte:
|
|
84
|
-
- `action/action.yml` – DocGuard Validation Action
|
|
85
|
-
- Unterstützt: scan, generate, validate, drift
|
|
86
|
-
- PR-Kommentare mit Validation Report
|
|
87
|
-
|
|
88
|
-
### 6. Demo-Projekt (`demo/`)
|
|
89
|
-
|
|
90
|
-
Beispiel-Projekt mit:
|
|
91
|
-
- Source Code (`calculator.ts`, `user-service.ts`, `types.ts`)
|
|
92
|
-
- Generierter Dokumentation
|
|
93
|
-
- Drift-Beispiel (absichtlich veraltete Docs)
|
|
94
|
-
- Change Report
|
|
95
|
-
|
|
96
|
-
### 7. Pricing-Modell
|
|
97
|
-
|
|
98
|
-
| Tier | Preis | Features |
|
|
99
|
-
|------|-------|----------|
|
|
100
|
-
| Free | $0 | Extension, CLI, Local Drift-Detection |
|
|
101
|
-
| Pro | $19/mo | Cloud Dashboard, Email Alerts |
|
|
102
|
-
| Team | $49/seat | Analytics, Slack/Teams, RBAC |
|
|
103
|
-
| Enterprise | Custom | SSO, Audit Logs, Compliance |
|
|
104
|
-
|
|
105
|
-
## Konsequenzen
|
|
106
|
-
|
|
107
|
-
### Positiv
|
|
108
|
-
|
|
109
|
-
1. **Professionelle Außenwirkung**: Vollständige Produktpräsentation
|
|
110
|
-
2. **Skalierbarkeit**: Klare Tier-Struktur für zukünftige Monetarisierung
|
|
111
|
-
3. **Community-Ready**: Issue Templates, Contributing Guide
|
|
112
|
-
4. **CI/CD-Integration**: GitHub Action für breite Adoption
|
|
113
|
-
|
|
114
|
-
### Negativ / Risiken
|
|
115
|
-
|
|
116
|
-
1. **Wartungsaufwand**: Mehr Artefakte zu pflegen (Website, Docs, etc.)
|
|
117
|
-
2. **Namespace-Konflikte**: `@docguard` Scope muss auf npm registriert werden
|
|
118
|
-
3. **Breaking Change**: Package-Namen ändern sich von `@benni/` zu `@docguard/`
|
|
119
|
-
|
|
120
|
-
### Neutral
|
|
121
|
-
|
|
122
|
-
1. **Keine Code-Änderungen**: Kern-Funktionalität bleibt unverändert
|
|
123
|
-
2. **Inkrementeller Rollout**: Features können schrittweise aktiviert werden
|
|
124
|
-
|
|
125
|
-
## Betroffene Dateien
|
|
126
|
-
|
|
127
|
-
### Neue Dateien
|
|
128
|
-
|
|
129
|
-
```
|
|
130
|
-
BRANDING.md
|
|
131
|
-
CONTRIBUTING.md
|
|
132
|
-
CODE_OF_CONDUCT.md
|
|
133
|
-
.github/ISSUE_TEMPLATE/bug_report.md
|
|
134
|
-
.github/ISSUE_TEMPLATE/feature_request.md
|
|
135
|
-
.github/ISSUE_TEMPLATE/config.yml
|
|
136
|
-
.github/PULL_REQUEST_TEMPLATE.md
|
|
137
|
-
.github/workflows/ci.yml
|
|
138
|
-
.github/workflows/publish.yml
|
|
139
|
-
action/action.yml
|
|
140
|
-
action/README.md
|
|
141
|
-
assets/icon.svg
|
|
142
|
-
website/package.json
|
|
143
|
-
website/astro.config.mjs
|
|
144
|
-
website/tailwind.config.mjs
|
|
145
|
-
website/tsconfig.json
|
|
146
|
-
website/README.md
|
|
147
|
-
website/public/favicon.svg
|
|
148
|
-
website/src/layouts/Layout.astro
|
|
149
|
-
website/src/pages/index.astro
|
|
150
|
-
website/src/components/Header.astro
|
|
151
|
-
website/src/components/Hero.astro
|
|
152
|
-
website/src/components/Features.astro
|
|
153
|
-
website/src/components/HowItWorks.astro
|
|
154
|
-
website/src/components/QuickStart.astro
|
|
155
|
-
website/src/components/Pricing.astro
|
|
156
|
-
website/src/components/Footer.astro
|
|
157
|
-
demo/README.md
|
|
158
|
-
demo/package.json
|
|
159
|
-
demo/docguard.config.json
|
|
160
|
-
demo/src/types.ts
|
|
161
|
-
demo/src/calculator.ts
|
|
162
|
-
demo/src/user-service.ts
|
|
163
|
-
demo/docs/modules/*.md
|
|
164
|
-
demo/docs/system/*.md
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
### Geänderte Dateien
|
|
168
|
-
|
|
169
|
-
```
|
|
170
|
-
README.md (komplett neu)
|
|
171
|
-
package.json (Name, Metadata, Commands, Keybindings)
|
|
172
|
-
packages/doc-system-agent/package.json (Name → @docguard/cli)
|
|
173
|
-
packages/doc-system-agent/README.md (komplett neu)
|
|
174
|
-
mcp/package.json (Name → @docguard/mcp)
|
|
175
|
-
tsconfig.json (Excludes für demo, website, action)
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
## Offene Punkte (manuelle Schritte)
|
|
179
|
-
|
|
180
|
-
1. [ ] npm Scope `@docguard` registrieren
|
|
181
|
-
2. [ ] GitHub Organisation `docguard` erstellen
|
|
182
|
-
3. [ ] Domain `docguard.dev` registrieren
|
|
183
|
-
4. [ ] Vercel-Projekt einrichten
|
|
184
|
-
5. [ ] VS Code Marketplace Publisher erstellen
|
|
185
|
-
6. [ ] Screenshots und Demo-GIFs erstellen
|
|
186
|
-
7. [ ] Bestehende Installation migrieren (falls nötig)
|
|
187
|
-
|
|
188
|
-
## Referenzen
|
|
189
|
-
|
|
190
|
-
- [produktisierung.plan.md](../../produktisierung.plan.md) – Ursprünglicher Plan
|
|
191
|
-
- [BRANDING.md](../../BRANDING.md) – Brand Guidelines
|
|
192
|
-
- [README.md](../../README.md) – Produkt-README
|
|
193
|
-
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
# ADR-017: Verbesserte Optional-Feld-Kompatibilität in Signatur-Validierung
|
|
2
|
-
|
|
3
|
-
## Status
|
|
4
|
-
|
|
5
|
-
Akzeptiert
|
|
6
|
-
|
|
7
|
-
## Datum
|
|
8
|
-
|
|
9
|
-
2024-12-01
|
|
10
|
-
|
|
11
|
-
## Kontext
|
|
12
|
-
|
|
13
|
-
Die Dokumentations-Validierung meldete 30 Signatur-Abweichungs-Warnungen für Interfaces, bei denen sich nur die Optionalität von Properties unterschied:
|
|
14
|
-
|
|
15
|
-
```
|
|
16
|
-
erwartet: "interface DriftItem { expected: string; ... }"
|
|
17
|
-
dokumentiert: "interface DriftItem { expected?: string; ... }"
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
Das Problem: Die `isOptionalFieldCompatible`-Funktion konnte mehrzeilige Interface-Definitionen nicht korrekt vergleichen, da sie nur einzeilige Signaturen normalisierte.
|
|
21
|
-
|
|
22
|
-
## Entscheidung
|
|
23
|
-
|
|
24
|
-
Die `isOptionalFieldCompatible`-Funktion in `src/validator/signature-matching.ts` wurde komplett überarbeitet:
|
|
25
|
-
|
|
26
|
-
### Vorher
|
|
27
|
-
|
|
28
|
-
```typescript
|
|
29
|
-
function isOptionalFieldCompatible(expected: string, documented: string): boolean {
|
|
30
|
-
const normalize = (s: string) => s.replace(/\s+/g, ' ').trim();
|
|
31
|
-
// ... einfache String-Ersetzung
|
|
32
|
-
const removeOptional = (s: string) => s.replace(/(\w+)\?(\s*:)/g, '$1$2');
|
|
33
|
-
return removeOptional(expectedNorm) === removeOptional(documentedNorm);
|
|
34
|
-
}
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### Nachher
|
|
38
|
-
|
|
39
|
-
```typescript
|
|
40
|
-
function isOptionalFieldCompatible(expected: string, documented: string): boolean {
|
|
41
|
-
// 1. Robuste Normalisierung für mehrzeilige Interfaces
|
|
42
|
-
const normalizeForComparison = (s: string) => {
|
|
43
|
-
return s
|
|
44
|
-
.replace(/\s+/g, ' ') // Alle Whitespaces normalisieren
|
|
45
|
-
.replace(/\s*:\s*/g, ':') // Spaces um Doppelpunkte
|
|
46
|
-
.replace(/\s*;\s*/g, ';') // Spaces um Semikolons
|
|
47
|
-
.replace(/\s*\{\s*/g, '{') // Spaces um Klammern
|
|
48
|
-
.replace(/\s*\}\s*/g, '}')
|
|
49
|
-
.replace(/\s*\|\s*/g, '|') // Union Types
|
|
50
|
-
.trim();
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
// 2. Optional-Marker entfernen
|
|
54
|
-
const removeOptionalMarkers = (s: string) => s.replace(/(\w+)\?:/g, '$1:');
|
|
55
|
-
|
|
56
|
-
// 3. Feld-basierter Vergleich
|
|
57
|
-
const extractFields = (s: string): Map<string, string> => {
|
|
58
|
-
const fields = new Map<string, string>();
|
|
59
|
-
const fieldRegex = /(\w+)\??:\s*([^;}\n]+)/g;
|
|
60
|
-
// ... Felder extrahieren
|
|
61
|
-
return fields;
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
// Vergleiche Felder unabhängig von Optionalität
|
|
65
|
-
// ...
|
|
66
|
-
}
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### Verbesserungen
|
|
70
|
-
|
|
71
|
-
1. **Mehrzeilige Interfaces**: Zeilenumbrüche werden korrekt normalisiert
|
|
72
|
-
2. **Robuster Vergleich**: Felder werden einzeln extrahiert und verglichen
|
|
73
|
-
3. **Typ-Fokus**: Nur Name und Typ werden verglichen, Optionalität wird ignoriert
|
|
74
|
-
|
|
75
|
-
## Konsequenzen
|
|
76
|
-
|
|
77
|
-
### Positiv
|
|
78
|
-
|
|
79
|
-
1. **Weniger False Positives**: Interfaces mit unterschiedlicher Optionalität werden als kompatibel erkannt
|
|
80
|
-
2. **Bessere Developer Experience**: Weniger irrelevante Warnungen
|
|
81
|
-
3. **Korrekte Semantik**: `field: T` und `field?: T` sind architektonisch äquivalent
|
|
82
|
-
|
|
83
|
-
### Negativ
|
|
84
|
-
|
|
85
|
-
1. **Potenzielle False Negatives**: Echte Breaking Changes bei Optionalität werden nicht mehr gemeldet
|
|
86
|
-
- Mitigiert durch: Coverage-Checks und manuelle Reviews
|
|
87
|
-
|
|
88
|
-
## Betroffene Dateien
|
|
89
|
-
|
|
90
|
-
```
|
|
91
|
-
src/validator/signature-matching.ts
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
## Tests
|
|
95
|
-
|
|
96
|
-
Alle bestehenden Tests bestanden:
|
|
97
|
-
```
|
|
98
|
-
PASS src/__tests__/determinism.test.ts
|
|
99
|
-
✓ Wiederholte Scans erzeugen identische Ergebnisse
|
|
100
|
-
✓ Parser erzeugt deterministische Symbole
|
|
101
|
-
✓ Generator erzeugt deterministische Markdown
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
## Zusätzliche Änderungen
|
|
105
|
-
|
|
106
|
-
### tsconfig.json
|
|
107
|
-
|
|
108
|
-
Neue Verzeichnisse zur Exclude-Liste hinzugefügt:
|
|
109
|
-
```json
|
|
110
|
-
"exclude": [
|
|
111
|
-
"node_modules",
|
|
112
|
-
".vscode-test",
|
|
113
|
-
"mcp",
|
|
114
|
-
"packages",
|
|
115
|
-
"demo", // NEU
|
|
116
|
-
"website", // NEU
|
|
117
|
-
"action" // NEU
|
|
118
|
-
]
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
### package.json
|
|
122
|
-
|
|
123
|
-
Nicht existierende Skripte entfernt:
|
|
124
|
-
```diff
|
|
125
|
-
- "scan": "node out/cli-scan.js",
|
|
126
|
-
- "validate": "node out/cli-validate.js",
|
|
127
|
-
```
|
|
128
|
-
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
# ADR-018: Rebranding von DocGuard zu Noyrax
|
|
2
|
-
|
|
3
|
-
## Status
|
|
4
|
-
|
|
5
|
-
Akzeptiert
|
|
6
|
-
|
|
7
|
-
## Datum
|
|
8
|
-
|
|
9
|
-
2024-12-01
|
|
10
|
-
|
|
11
|
-
## Kontext
|
|
12
|
-
|
|
13
|
-
Nach der initialen Produktisierung unter dem Namen "DocGuard" (ADR-016) wurde entschieden, das Produkt zu "Noyrax" umzubenennen.
|
|
14
|
-
|
|
15
|
-
## Entscheidung
|
|
16
|
-
|
|
17
|
-
Vollständiges Rebranding des Produkts:
|
|
18
|
-
|
|
19
|
-
| Alt | Neu |
|
|
20
|
-
|-----|-----|
|
|
21
|
-
| DocGuard | Noyrax |
|
|
22
|
-
| @docguard/* | @noyrax/* |
|
|
23
|
-
| docguard.dev | noyrax.dev |
|
|
24
|
-
| DG (Logo) | NX (Logo) |
|
|
25
|
-
| guard-blue | noyrax-blue |
|
|
26
|
-
| --dg-* (CSS) | --nx-* (CSS) |
|
|
27
|
-
|
|
28
|
-
### Betroffene Bereiche
|
|
29
|
-
|
|
30
|
-
1. **Package-Namen**
|
|
31
|
-
- `docguard` → `noyrax` (VS Code Extension)
|
|
32
|
-
- `@docguard/cli` → `@noyrax/cli`
|
|
33
|
-
- `@docguard/mcp` → `@noyrax/mcp`
|
|
34
|
-
|
|
35
|
-
2. **Commands & Keybindings**
|
|
36
|
-
- `docguard.*` → `noyrax.*`
|
|
37
|
-
- `Ctrl+Shift+D` → `Ctrl+Shift+N`
|
|
38
|
-
|
|
39
|
-
3. **Configuration**
|
|
40
|
-
- `docguard.*` → `noyrax.*` (VS Code Settings)
|
|
41
|
-
- `docguard.config.json` → `noyrax.config.json`
|
|
42
|
-
|
|
43
|
-
4. **URLs**
|
|
44
|
-
- `https://docguard.dev` → `https://noyrax.dev`
|
|
45
|
-
- `github.com/docguard/*` → `github.com/noyrax/*`
|
|
46
|
-
|
|
47
|
-
5. **Branding**
|
|
48
|
-
- Logo: "DG" → "NX"
|
|
49
|
-
- CSS Variables: `--dg-*` → `--nx-*`
|
|
50
|
-
- Tailwind: `guard-blue` → `noyrax-blue`
|
|
51
|
-
|
|
52
|
-
## Geänderte Dateien
|
|
53
|
-
|
|
54
|
-
### Hauptkonfiguration
|
|
55
|
-
- `package.json`
|
|
56
|
-
- `packages/doc-system-agent/package.json`
|
|
57
|
-
- `mcp/package.json`
|
|
58
|
-
- `website/package.json`
|
|
59
|
-
- `demo/package.json`
|
|
60
|
-
|
|
61
|
-
### Branding & Dokumentation
|
|
62
|
-
- `BRANDING.md`
|
|
63
|
-
- `README.md`
|
|
64
|
-
- `CONTRIBUTING.md`
|
|
65
|
-
- `CODE_OF_CONDUCT.md`
|
|
66
|
-
- `packages/doc-system-agent/README.md`
|
|
67
|
-
|
|
68
|
-
### Website
|
|
69
|
-
- `website/astro.config.mjs`
|
|
70
|
-
- `website/tailwind.config.mjs`
|
|
71
|
-
- `website/src/layouts/Layout.astro`
|
|
72
|
-
- `website/src/components/*.astro` (alle Komponenten)
|
|
73
|
-
- `website/public/favicon.svg`
|
|
74
|
-
|
|
75
|
-
### GitHub
|
|
76
|
-
- `action/action.yml`
|
|
77
|
-
- `action/README.md`
|
|
78
|
-
- `.github/workflows/ci.yml`
|
|
79
|
-
- `.github/ISSUE_TEMPLATE/*.md`
|
|
80
|
-
|
|
81
|
-
### Demo
|
|
82
|
-
- `demo/README.md`
|
|
83
|
-
- `demo/docguard.config.json`
|
|
84
|
-
- `demo/docs/**/*.md`
|
|
85
|
-
|
|
86
|
-
### Assets
|
|
87
|
-
- `assets/icon.svg`
|
|
88
|
-
|
|
89
|
-
## Konsequenzen
|
|
90
|
-
|
|
91
|
-
### Positiv
|
|
92
|
-
1. **Einzigartiger Name**: "Noyrax" ist einprägsamer und weniger generisch
|
|
93
|
-
2. **Namespace-Verfügbarkeit**: Höhere Wahrscheinlichkeit, dass `@noyrax` auf npm verfügbar ist
|
|
94
|
-
3. **Domain-Verfügbarkeit**: `noyrax.dev` ist möglicherweise noch verfügbar
|
|
95
|
-
|
|
96
|
-
### Negativ
|
|
97
|
-
1. **ADR-016 veraltet**: Das vorherige Produktisierungs-ADR referenziert "DocGuard"
|
|
98
|
-
2. **Keine Migration**: Bestehende Installationen müssen manuell umgestellt werden
|
|
99
|
-
|
|
100
|
-
### Zu erledigen
|
|
101
|
-
1. [ ] `@noyrax` Scope auf npm registrieren
|
|
102
|
-
2. [ ] `noyrax.dev` Domain registrieren
|
|
103
|
-
3. [ ] GitHub Organisation `noyrax` erstellen
|
|
104
|
-
4. [ ] VS Code Marketplace Publisher erstellen
|
|
105
|
-
|
|
106
|
-
## Referenzen
|
|
107
|
-
|
|
108
|
-
- [ADR-016: Produktisierung als DocGuard](./016-produktisierung-docguard.md) (veraltet, jetzt Noyrax)
|
|
109
|
-
|
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
# ADR-019: System-Schwachstellen-Analyse und proaktive Fixes
|
|
2
|
-
|
|
3
|
-
**Status:** Implementiert
|
|
4
|
-
**Datum:** 2025-12-02
|
|
5
|
-
**Kontext:** Gründliche Analyse der Dokumentationsartefakte zur Identifikation von System-Schwachstellen
|
|
6
|
-
|
|
7
|
-
## Kontext und Problemstellung
|
|
8
|
-
|
|
9
|
-
Eine detaillierte Analyse der generierten Dokumentation (`docs/system/`, `docs/index/`, `docs/modules/`) und der historischen ADRs (001-018) wurde durchgeführt, um:
|
|
10
|
-
|
|
11
|
-
1. Bereits behobene Probleme zu verifizieren
|
|
12
|
-
2. Noch bestehende Schwachstellen zu identifizieren
|
|
13
|
-
3. Proaktive Maßnahmen für zukünftige Entwicklung zu definieren
|
|
14
|
-
|
|
15
|
-
### Analysierte Artefakte
|
|
16
|
-
|
|
17
|
-
- `docs/system/CHANGE_REPORT.md` - 900+ "Geänderte Symbole" Einträge
|
|
18
|
-
- `docs/index/symbols.jsonl` - 95 Einträge aus `.ai-agent-context/`
|
|
19
|
-
- `docs/system/DEPENDENCIES.md` - Abhängigkeitsübersicht
|
|
20
|
-
- ADR-001 bis ADR-018 - Historische Fixes
|
|
21
|
-
|
|
22
|
-
### Identifizierte Schwachstellen
|
|
23
|
-
|
|
24
|
-
1. **Scanner filtert relevante Verzeichnisse nicht aus**
|
|
25
|
-
- `.ai-agent-context` wird gescannt → 95 irrelevante Symbole im Index
|
|
26
|
-
- `.vscode`, `.cursor` werden gescannt
|
|
27
|
-
|
|
28
|
-
2. **Generator/Validator Formatierungs-Differenz**
|
|
29
|
-
- Generator: `${p.name}${p.type ? ...}` (ohne optional)
|
|
30
|
-
- Validator: `${p.name}${p.optional ? '?' : ''}${p.type ? ...}`
|
|
31
|
-
- Potenzielle False-Positive-Mismatches bei optionalen Parametern
|
|
32
|
-
|
|
33
|
-
3. **Keine zentrale Signatur-Formatierung**
|
|
34
|
-
- Generator und Validator haben separate Implementierungen
|
|
35
|
-
- Inkonsistenzen schwer zu erkennen
|
|
36
|
-
|
|
37
|
-
4. **Fehlende Pre-Planning-Richtlinien**
|
|
38
|
-
- Agent-Fehler werden erst nach Implementierung entdeckt
|
|
39
|
-
- Keine proaktiven Checklisten
|
|
40
|
-
|
|
41
|
-
## Entscheidung
|
|
42
|
-
|
|
43
|
-
### Fix 1: Scanner-Exclude-Liste erweitern
|
|
44
|
-
|
|
45
|
-
**Datei:** `src/core/scanner.ts`
|
|
46
|
-
|
|
47
|
-
```typescript
|
|
48
|
-
const DEFAULT_EXCLUDES = new Set([
|
|
49
|
-
'node_modules',
|
|
50
|
-
'.git', '.svn', '.hg',
|
|
51
|
-
'dist', 'out', 'build',
|
|
52
|
-
'__pycache__', '.mypy_cache', '.venv', '.cache',
|
|
53
|
-
'docs', // Generierte Dokumentation
|
|
54
|
-
'.ai-agent-context', // AI-Agent-Kontext (Backups, Metadaten)
|
|
55
|
-
'.vscode', // VS Code Workspace-Einstellungen
|
|
56
|
-
'.cursor', // Cursor IDE Einstellungen
|
|
57
|
-
]);
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
**Auswirkung:** Symbol-Index enthält keine irrelevanten Backup-Dateien mehr.
|
|
61
|
-
|
|
62
|
-
### Fix 2: Generator-Formatierung für optionale Parameter
|
|
63
|
-
|
|
64
|
-
**Datei:** `src/generator/module-doc.ts`
|
|
65
|
-
|
|
66
|
-
```typescript
|
|
67
|
-
// VORHER:
|
|
68
|
-
const params = block.symbol.signature.parameters
|
|
69
|
-
.map(p => `${p.name}${p.type ? `: ${p.type}` : ''}${p.hasDefault ? ' = …' : ''}`)
|
|
70
|
-
.join(', ');
|
|
71
|
-
|
|
72
|
-
// NACHHER:
|
|
73
|
-
const params = block.symbol.signature.parameters
|
|
74
|
-
.map(p => `${p.name}${p.optional ? '?' : ''}${p.type ? `: ${p.type}` : ''}${p.hasDefault ? ' = …' : ''}`)
|
|
75
|
-
.join(', ');
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
**Auswirkung:** Generator und Validator formatieren Funktions-Parameter identisch.
|
|
79
|
-
|
|
80
|
-
### Fix 3: Zentrale SignatureFormatter-Klasse
|
|
81
|
-
|
|
82
|
-
**Neue Datei:** `src/core/signature-formatter.ts`
|
|
83
|
-
|
|
84
|
-
```typescript
|
|
85
|
-
export class SignatureFormatter {
|
|
86
|
-
static formatForDoc(symbol: ParsedSymbol): string { ... }
|
|
87
|
-
static normalize(signature: string): string { ... }
|
|
88
|
-
static normalizeSignature(sig: SymbolSignature): string { ... }
|
|
89
|
-
static compare(expected: string, documented: string, options?: CompareOptions): CompareResult { ... }
|
|
90
|
-
}
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
**Auswirkung:** Einheitliche Logik für Generator und Validator; einfachere Wartung.
|
|
94
|
-
|
|
95
|
-
### Fix 4: Pre-Planning Checklisten als Cursor Rule
|
|
96
|
-
|
|
97
|
-
**Neue Datei:** `.cursor/rules/023-pre-planning.mdc`
|
|
98
|
-
|
|
99
|
-
Enthält Checklisten für:
|
|
100
|
-
- Scanner-Änderungen
|
|
101
|
-
- Parser-Änderungen
|
|
102
|
-
- Validator-Änderungen
|
|
103
|
-
- Generator-Änderungen
|
|
104
|
-
- Cache-Änderungen
|
|
105
|
-
|
|
106
|
-
**Auswirkung:** Agent kann Fehler proaktiv vermeiden.
|
|
107
|
-
|
|
108
|
-
### Fix 5: Erweiterte Parser-Test-Suite
|
|
109
|
-
|
|
110
|
-
**Neue Datei:** `src/__tests__/parser-symbol-types.test.ts`
|
|
111
|
-
|
|
112
|
-
18 neue Tests für:
|
|
113
|
-
- Alle Symbol-Typen (class, interface, type, enum, function, method, variable, module)
|
|
114
|
-
- Edge-Cases (leere Dateien, Syntax-Fehler, komplexe Generics)
|
|
115
|
-
- SignatureFormatter-Konsistenz
|
|
116
|
-
|
|
117
|
-
## Gelesene Abhängigkeiten aus Dokumentation
|
|
118
|
-
|
|
119
|
-
**docs/modules/src__core__scanner.ts.md:**
|
|
120
|
-
- `DEFAULT_EXCLUDES: Set<string>`
|
|
121
|
-
- `scanWorkspace(options: ScanOptions, includeBackups: boolean): ScannedFile[]`
|
|
122
|
-
|
|
123
|
-
**docs/modules/src__generator__module-doc.ts.md:**
|
|
124
|
-
- `renderModuleDoc(doc: ModuleDoc, filePath: string): string`
|
|
125
|
-
|
|
126
|
-
**docs/modules/src__validator__signature-matching.ts.md:**
|
|
127
|
-
- `formatSignatureForDoc(symbol: ParsedSymbol): string`
|
|
128
|
-
|
|
129
|
-
## Auswirkungen
|
|
130
|
-
|
|
131
|
-
### Positiv
|
|
132
|
-
|
|
133
|
-
- ✅ **Sauberer Symbol-Index:** Keine irrelevanten Backup-Dateien mehr
|
|
134
|
-
- ✅ **Konsistente Formatierung:** Generator und Validator sind synchron
|
|
135
|
-
- ✅ **Zentrale Signatur-Logik:** Einfachere Wartung und Erweiterung
|
|
136
|
-
- ✅ **Proaktive Fehlervorbeugung:** Pre-Planning-Checklisten
|
|
137
|
-
- ✅ **Bessere Test-Abdeckung:** 18 neue Tests für Symbol-Typen
|
|
138
|
-
|
|
139
|
-
### Neutral
|
|
140
|
-
|
|
141
|
-
- ~150 Zeilen neue Klasse (SignatureFormatter)
|
|
142
|
-
- ~250 Zeilen neue Tests
|
|
143
|
-
- 1 neue Cursor Rule
|
|
144
|
-
|
|
145
|
-
### Risiken und Mitigation
|
|
146
|
-
|
|
147
|
-
- **Risiko:** SignatureFormatter wird nicht sofort in Generator/Validator integriert
|
|
148
|
-
- **Mitigation:** Klasse ist als Drop-in-Ersatz konzipiert; Migration kann schrittweise erfolgen
|
|
149
|
-
|
|
150
|
-
- **Risiko:** Neue Tests könnten bei Parser-Änderungen fehlschlagen
|
|
151
|
-
- **Mitigation:** Tests prüfen Verhalten, nicht exakte Ausgabe
|
|
152
|
-
|
|
153
|
-
## Verifizierte Fixes aus früheren ADRs
|
|
154
|
-
|
|
155
|
-
Die Analyse hat bestätigt, dass folgende Fixes korrekt implementiert sind:
|
|
156
|
-
|
|
157
|
-
| ADR | Fix | Verifiziert |
|
|
158
|
-
|-----|-----|-------------|
|
|
159
|
-
| ADR-004 | Symbol-typ-spezifische Formatierung | ✅ Zeilen 55-84 in signature-matching.ts |
|
|
160
|
-
| ADR-005 | TypeNode vor getType() | ✅ Zeilen 56-64 in ts-js.ts |
|
|
161
|
-
| ADR-006 | Variablen-Typen präziser | ✅ Zeilen 229-255 in ts-js.ts |
|
|
162
|
-
| ADR-007 | Standard-Libs laden | ✅ Zeilen 16, 25 in ts-js.ts |
|
|
163
|
-
| ADR-008 | Dependencies-Cache | ✅ consolidation.ts |
|
|
164
|
-
| ADR-013 | isFirstRun vor Git-Filter | ✅ Zeilen 130-155 in extension.ts |
|
|
165
|
-
| ADR-017 | Optional-Feld-Kompatibilität | ✅ Zeilen 211-277 in signature-matching.ts |
|
|
166
|
-
|
|
167
|
-
## Implementierte Dateien
|
|
168
|
-
|
|
169
|
-
| Datei | Änderung | Zeilen |
|
|
170
|
-
|-------|----------|--------|
|
|
171
|
-
| `src/core/scanner.ts` | DEFAULT_EXCLUDES erweitert | +3 |
|
|
172
|
-
| `src/generator/module-doc.ts` | Optional-Parameter-Fix | +1 |
|
|
173
|
-
| `src/core/signature-formatter.ts` | Neue zentrale Klasse | +160 |
|
|
174
|
-
| `.cursor/rules/023-pre-planning.mdc` | Neue Pre-Planning Rule | +180 |
|
|
175
|
-
| `src/__tests__/parser-symbol-types.test.ts` | Erweiterte Test-Suite | +250 |
|
|
176
|
-
|
|
177
|
-
## Tests
|
|
178
|
-
|
|
179
|
-
```
|
|
180
|
-
npm test
|
|
181
|
-
|
|
182
|
-
PASS src/__tests__/determinism.test.ts
|
|
183
|
-
PASS src/__tests__/parser-symbol-types.test.ts
|
|
184
|
-
|
|
185
|
-
Test Suites: 2 passed, 2 total
|
|
186
|
-
Tests: 21 passed, 21 total
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
## Nächste Schritte (optional)
|
|
190
|
-
|
|
191
|
-
1. **SignatureFormatter in Generator/Validator integrieren** - Migration der bestehenden Formatierungs-Logik
|
|
192
|
-
2. **JSON-Parser semantische Filterung** - Whitelist für relevante JSON-Dateien
|
|
193
|
-
3. **Re-Export als eigener Symbol-Typ** - `kind: 'reexport'` statt `kind: 'variable'`
|
|
194
|
-
4. **Konfigurierbare Toleranz-Patterns** - Config-Datei statt hardcoded
|
|
195
|
-
|
|
196
|
-
## Referenzen
|
|
197
|
-
|
|
198
|
-
- **Analyse:** System-Schwachstellen-Analyse (Konversation)
|
|
199
|
-
- **ADRs:** ADR-001 bis ADR-018 (verifizierte Fixes)
|
|
200
|
-
- **Dokumentation:**
|
|
201
|
-
- `docs/modules/src__core__scanner.ts.md`
|
|
202
|
-
- `docs/modules/src__generator__module-doc.ts.md`
|
|
203
|
-
- `docs/modules/src__validator__signature-matching.ts.md`
|
|
204
|
-
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
# ADR-020: API-Doku-Tiefe & zentrale Signatur-Formatierung
|
|
2
|
-
|
|
3
|
-
**Status:** Implementiert
|
|
4
|
-
**Datum:** 2025-12-04
|
|
5
|
-
|
|
6
|
-
## Kontext
|
|
7
|
-
|
|
8
|
-
Noyrax soll als Produkt auch komplexe Systeme wie das Database-Plugin
|
|
9
|
-
präzise dokumentieren. Die Analyse der Validierungsberichte zeigte:
|
|
10
|
-
|
|
11
|
-
- Sehr detailliertes Signaturwissen in Parsern/Index/Database
|
|
12
|
-
- Gleichzeitig nur oberflächliche, teilweise leere API-Doku in
|
|
13
|
-
`docs/modules/` (nur Namen, leere Interfaces)
|
|
14
|
-
- Daraus resultierten hunderte Signatur-Abweichungs-Warnungen
|
|
15
|
-
|
|
16
|
-
Bisher nutzten Generator (`renderModuleDoc`) und Validator
|
|
17
|
-
(`validateSignatureMatching`) jeweils eigene Formatierungslogik.
|
|
18
|
-
Toleranzen (optionale Felder, Generics) waren verteilt implementiert.
|
|
19
|
-
|
|
20
|
-
## Entscheidung
|
|
21
|
-
|
|
22
|
-
1. Einführung einer zentralen `SignatureFormatter`-Klasse in
|
|
23
|
-
`src/core/signature-formatter.ts`:
|
|
24
|
-
- `formatForDoc(symbol)` rendert Signaturen deterministisch und
|
|
25
|
-
menschenlesbar (Funktionen, Methoden, Interfaces, Variablen).
|
|
26
|
-
- `compare(expected, documented, options)` kapselt Toleranzen:
|
|
27
|
-
- optionale Felder (`field` vs `field?`)
|
|
28
|
-
- generische Vereinfachungen (`T[]` vs `{}`)
|
|
29
|
-
|
|
30
|
-
2. Ausrichtung von Generator und Validator auf `SignatureFormatter`:
|
|
31
|
-
- `src/generator/module-doc.ts`:
|
|
32
|
-
- nutzt `SignatureFormatter.formatForDoc()` für alle Signaturen
|
|
33
|
-
- ergänzt tiefe API-Doku:
|
|
34
|
-
- einzeilige Signatur-Zeile
|
|
35
|
-
- Tabellen für Parameter / Eigenschaften
|
|
36
|
-
- expliziter Rückgabewert-Abschnitt
|
|
37
|
-
- `src/validator/signature-matching.ts`:
|
|
38
|
-
- verwendet `SignatureFormatter.formatForDoc()` als „expected“
|
|
39
|
-
- nutzt `SignatureFormatter.compare()` für den Abgleich
|
|
40
|
-
- dedupliziert identische Abweichungen
|
|
41
|
-
- berücksichtigt nur öffentliche Symbole, sofern nicht anders
|
|
42
|
-
konfiguriert
|
|
43
|
-
|
|
44
|
-
3. Ergänzung einer Pre-Planning-Rule
|
|
45
|
-
(`.cursor/rules/024-api-doc-depth.mdc`) mit Checklisten für:
|
|
46
|
-
- API-Doku-Tiefe und Signatur-Rendering
|
|
47
|
-
- Generator/Validator-Kohärenz
|
|
48
|
-
- Architektur- und Determinismus-Constraints
|
|
49
|
-
|
|
50
|
-
## Auswirkungen
|
|
51
|
-
|
|
52
|
-
- Deutlich tiefere, strukturierte API-Doku in `docs/modules/`:
|
|
53
|
-
- Funktions- und Methoden-Parameter, Rückgabetypen
|
|
54
|
-
- Interface-Eigenschaften inkl. Optionalität
|
|
55
|
-
- Reduktion von Signatur-Abweichungs-Warnungen, die nur auf
|
|
56
|
-
Formatierungsunterschieden beruhten.
|
|
57
|
-
- Klare Trennung zwischen:
|
|
58
|
-
- zentraler Signaturlogik (`core/signature-formatter`)
|
|
59
|
-
- Rendering (Generator)
|
|
60
|
-
- Validierung (Validator)
|
|
61
|
-
|
|
62
|
-
Für interne Infrastruktur kann die Strenge über
|
|
63
|
-
`SignatureMatchingOptions` reduziert werden, während öffentliche APIs
|
|
64
|
-
mit voller Tiefe validiert werden.
|
|
65
|
-
|
|
66
|
-
## Alternativen
|
|
67
|
-
|
|
68
|
-
- Belassen der getrennten Formatierungslogik in Generator und Validator:
|
|
69
|
-
- verworfen wegen hoher Wartungskosten und Fehleranfälligkeit.
|
|
70
|
-
- Nur oberflächliche Doku (Namen, keine Typen) akzeptieren:
|
|
71
|
-
- verworfen, da sie dem Produktanspruch von Noyrax als
|
|
72
|
-
API-orientiertes Doku-System widerspricht.
|
|
73
|
-
|
|
74
|
-
|