- architecture.md (2019 lines): 73/73 v1 features, RLS policies, CORS, auth rate limiting, v2 FKs removed - task_graph.json v2.1.0: 14 tasks (7 v1 + 7 v2), 143 features, 298 ACs, all dict test_specs - AGENTS.md: 14 tasks mapped, T07a/T07b split, v1/v2 phase plan - Quality gate reviews: Round 1, 2, 3 (all passed) - Security review: APPROVED_WITH_CONCERNS (0 critical, 7 major, 8 minor) - Architecture feasibility review: FEASIBLE_WITH_RISKS (3 critical fixed, 5 major fixed) - All 3 critical issues from feasibility review resolved - All pre-implementation security items addressed
21 KiB
LeoCRM — Quality Gate Phase 2 (Architecture) Review
Reviewer: Quality Reviewer (Agent Zero) Datum: 2026-06-28 Phase: Phase 2 — Architecture + Task Graph + AGENTS.md Verdict: ❌ BLOCKED — 3 Critical Issues, 5 Major Issues
Prüfkriterien-Übersicht
| # | Kriterium | Ergebnis | Severity |
|---|---|---|---|
| 1 | Architecture.md deckt alle 10 Bereiche ab | ✅ PASS | — |
| 2 | Task Graph: 6-8 substantielle Tasks | ✅ PASS | — |
| 3 | 143/143 Features abgedeckt | ❌ FAIL | CRITICAL |
| 4 | AGENTS.md: Commands, Forbidden Patterns, Task-Zuweisung | ✅ PASS | — |
| 5 | Keine Widersprüche arch.md ↔ requirements.md | ⚠️ PARTIAL | MAJOR |
| 6 | Keine Widersprüche task_graph.json ↔ arch.md | ⚠️ PARTIAL | MINOR |
| 7 | Multi-Tenant (tenant_id) konsistent | ✅ PASS | — |
| 8 | Plugin-System als v1-Core-Feature | ✅ PASS | — |
| 9 | PostgreSQL 16, React 18 SPA, FastAPI | ✅ PASS | — |
| 10 | Session-based Auth + API-Token separat | ⚠️ PARTIAL | CRITICAL |
Gesamt: 6 PASS, 2 PARTIAL, 1 FAIL, 1 CRITICAL PARTIAL → BLOCKED
Detaillierte Befunde
✅ Kriterium 1: Architecture.md — 10 Bereiche (PASS)
Alle 10 Bereiche sind vorhanden und substantiell ausgearbeitet:
| Bereich | Section | Zeilen | Status |
|---|---|---|---|
| System Architecture | §1 | 1-131 | ✅ Vollständig (Diagramm, Services, Backend/Frontend Struktur) |
| DB Schema | §2 | 134-725 | ✅ Vollständig (Core + Plugin Tables, FTS) |
| API Design | §3 | 728-967 | ✅ Vollständig (alle Endpoints mit Feature-IDs) |
| Plugin Architecture | §4 | 970-1078 | ✅ Vollständig (Manifest, Lifecycle, Event Bus, DI, UI Framework) |
| Multi-Tenant | §5 | 1081-1106 | ✅ Vollständig (Session Context, ORM Auto-Filter, TenantMixin) |
| Auth | §6 | 1108-1171 | ✅ Vollständig (Session, RBAC, API Tokens, CSRF, Password Reset) |
| Frontend | §7 | 1174-1244 | ✅ Vollständig (Stack, Routing, State, i18n, A11Y, Design System) |
| Deployment | §8 | 1247-1343 | ✅ Vollständig (Docker Compose, .env, Backup) |
| Test Strategy | §9 | 1345-1386 | ✅ Vollständig (Backend, Frontend, E2E) |
| ADRs | §10 | 1389-1450 | ✅ Vollständig (6 ADRs mit Context/Decision/Rationale/Alternatives) |
✅ Kriterium 2: Task Graph — 8 substantielle Tasks (PASS)
| Task | Titel | Est. Lines | Dependencies | Test Spec | Acceptance Criteria |
|---|---|---|---|---|---|
| T01 | Core Infrastructure + Multi-Tenant + Auth | 500 | — | ✅ 3 commands | ✅ 25 criteria |
| T02 | Company + Contact + Import/Export | 600 | T01 | ✅ 3 commands | ✅ 24 criteria |
| T03 | Plugin System Framework | 500 | T01 | ✅ 3 commands | ✅ 14 criteria |
| T04 | DMS Plugin + Tags Plugin | 700 | T01, T03 | ✅ 4 commands | ✅ 32 criteria |
| T05 | Calendar Plugin | 700 | T01, T03 | ✅ 3 commands | ✅ 29 criteria |
| T06 | Mail Plugin | 800 | T01, T03 | ✅ 3 commands | ✅ 27 criteria |
| T07 | Frontend Core SPA | 600 | T01, T02 | ✅ 4 commands | ✅ 31 criteria |
| T08 | Frontend Plugins + Search + Deployment | 700 | T03-T07 | ✅ 6 commands | ✅ 42 criteria |
- Alle Tasks im 200-800 Zeilen-Bereich ✅
- Jeder Task hat test_spec mit commands, test_files, coverage_target ✅
- Jeder Task hat substantielle acceptance_criteria ✅
- 5-Phasen-Execution-Plan mit Parallelisierung ✅
- Keine Micro-Tasks ✅
❌ Kriterium 3: Feature Coverage 143/143 (FAIL — CRITICAL)
Cross-Check-Ergebnis (programmatisch durchgeführt):
- Requirements.md: 143 eindeutige Feature-IDs
- Task Graph: 114 eindeutige Feature-IDs in requirement_ids arrays
- Fehlend: 30 Features in requirements.md aber NICHT in task_graph.json
- Phantom: 1 Feature in task_graph.json aber NICHT in requirements.md (F-CONT-08)
Klassifikation der 30 fehlenden Features:
Kategorie A: v2-Scope (6 Features — legitimerweise ausgeschlossen)
| Feature | Beschreibung | Tag |
|---|---|---|
| F-FILE-01 | Datei-Explorer | [v2-Plugin] |
| F-FILE-02 | Datei-Sharing | [v2-Plugin] |
| F-FILE-03 | PDF-Preview | [v2-Plugin] |
| F-FILE-04 | OnlyOffice-Integration | [v2-Plugin] |
| F-FILEUI-05 | Upload-Progress-Anzeige | [v2-Plugin] |
| F-FILEUI-06 | Drag & Drop zwischen Ordnern | [v2-Plugin] |
→ Diese 6 Features sind als [v2-Plugin] markiert und korrekterweise nicht in v1-Tasks enthalten. Funktionalität ist teilweise durch F-DMS-XX und F-FILEUI-01-04 abgedeckt.
Kategorie B: Implizit abgedeckt, aber Feature-ID fehlt in task_graph (19 Features — Traceability-Gap)
| Feature | Beschreibung | Implizit gedeckt durch | Severity |
|---|---|---|---|
| F-DATA-03 | Daten-Validierung | Pydantic schemas in allen Tasks | MAJOR |
| F-DATA-04 | PostgreSQL als Datenbank | ADR-01, gesamte DB Schema | MAJOR |
| F-DATA-06 | ARIA-Rollen auf DataTable | F-A11Y-01/02/03 in T07 | MAJOR |
| F-ENV-01 | Environments & Secrets | .env.example in Architecture §8 | MAJOR |
| F-INFRA-02 | Backup & Restore | Architecture §8 Backup section | MAJOR |
| F-INFRA-03 | Logging | LOG_LEVEL in .env.example | MAJOR |
| F-NAV-01 | Navigation Sidebar | T07 Layout Shell (Sidebar) | MAJOR |
| F-SCHED-01 | Background-Jobs | T01 ARQ Job Queue | MAJOR |
| F-SEC-02 | XSS-Schutz & Input-Sanitization | DOMPurify, Pydantic validation | MAJOR |
| F-SEC-03 | Session-Timeout | T01 Auth (8h timeout) | MAJOR |
| F-SET-01 | Einstellungen als Baum-Menü | T07 Settings Feature (SettingsTree) | MAJOR |
| F-TEST-01 | Testing-Strategie | Architecture §9 + AGENTS.md | MAJOR |
| F-UI-01 | Responsive Design | T07 Tailwind responsive breakpoints | MAJOR |
| F-UI-02 | Internationalisierung | T07 i18n setup (de/en) | MAJOR |
| F-UI-03 | Error-Handling & Toast | T07 Toast component | MAJOR |
| F-UI-04 | Loading-States | T07 Skeleton component | MAJOR |
| F-UI-05 | Empty-States | T07 EmptyState component | MAJOR |
| F-UI-06 | Confirmation-Dialogs | T07 ConfirmDialog | MAJOR |
| F-UI-08 | Datenansichten Tabelle/Karten/Liste | T07 TanStack Table | MAJOR |
→ Diese 19 Features sind funktional durch die Tasks abgedeckt, aber ihre Feature-IDs sind NICHT in den requirement_ids Arrays der Tasks gelistet. Die Traceability ist broken. Jede Anforderung muss explizit einem Task zugeordnet sein.
Kategorie C: Völlig unabgedeckt — v1 Features ohne Task und ohne Architecture (5 Features — CRITICAL)
| Feature | Beschreibung | Status | Severity |
|---|---|---|---|
| F-AI-01 | KI-Copilot mit voller API-Kontrolle [v1] | ❌ KEIN Task, KEINE Architecture | CRITICAL |
| F-WF-01 | Hybrid-Workflow-Engine [v1] | ❌ KEIN Task, KEINE Architecture | CRITICAL |
| F-DOC-01 | Dokumentation [v1] | ❌ KEIN Task | MAJOR |
| F-INFRA-04 | Monitoring & Alerting [v1] | ❌ Nicht abgedeckt | MAJOR |
| F-PERF-01 | Performance [v1] | ❌ Nicht abgedeckt | MAJOR |
Detailanalyse F-AI-01 (KI-Copilot):
- Requirements sagen: "KI-Copilot von Anfang an einplanen" + "Architektur muss KI-Integration von vornherein unterstützen"
- Architecture.md erwähnt nur API-First-Design (F-CORE-06), aber hat KEINE Sektion für KI-Integration
- Task Graph hat keinen Task für KI-Copilot
- Der Copilot benötigt API-Zugriff mit RBAC-Respektierung — die API existiert, aber kein Task implementiert die Copilot-Integration
- Erforderliche Aktion: Architektur um KI-Integration-Sektion erweitern + Task für KI-Copilot API-Endpunkt hinzufügen (oder als Teil von T01/T02 als API-First-Design-Nachweis)
Detailanalyse F-WF-01 (Hybrid-Workflow-Engine):
- Requirements sagen: "Hybrid-Ansatz: Code-Engine für Kern-Workflows + konfigurierbare Workflow-Regeln"
- Architecture.md hat Event Bus, aber keine Workflow-Engine
- Task Graph hat keinen Task für Workflow-Engine
- Erforderliche Aktion: Architektur um Workflow-Engine-Sektion erweitern + Task hinzufügen (oder bestehenden Task erweitern)
Phantom Feature
| Feature | In task_graph | In requirements.md | Issue |
|---|---|---|---|
| F-CONT-08 | ✅ T02 requirement_ids | ❌ Nicht vorhanden | Phantom — vermutlich GDPR-Delete für Contacts, das eigentlich F-COMP-08 ist (bereits gelistet) |
✅ Kriterium 4: AGENTS.md (PASS)
Build/Test Commands:
- Backend: venv setup, uvicorn, alembic, pytest, pytest-cov, mypy, ruff ✅
- Frontend: npm install, dev, build, vitest, tsc, eslint ✅
- Docker Compose: build, up, logs, down, config validate ✅
- E2E: Playwright install + test ✅
Forbidden Patterns:
- Backend: 14 Forbidden Patterns (SQLite, Jinja2, Cross-Tenant, Plaintext Passwords, JWT, Naive Datetime, Integer IDs, Hard-Delete ohne GDPR, Manual Tenant Filter, Sync I/O, Raw SQL, Secrets in Code, Unvalidated Input, Missing Audit Log, Plugin Tables ohne tenant_id) ✅
- Frontend: 10 Forbidden Patterns (Class Components, Inline Styles, Hardcoded Strings, Manual Fetch, Server Data in Zustand,
anyTypes, Missing ARIA, Touch Targets <44px, Direct DOM, Unsafe HTML) ✅ - Deployment: 5 Forbidden Patterns (Root in Container, Exposed DB Port, No Health Check, No Volume, Secrets in compose) ✅
Task-Zuweisung:
- 5-Phasen-Plan mit Parallelisierung ✅
- Task-to-Subagent Mapping (alle implementation_engineer) ✅
- Block Rules (max 3 Tasks/Block, quality_reviewer nach Block) ✅
- Quality Gates (Per-Task, Phase, Release) ✅
⚠️ Kriterium 5: Widersprüche architecture.md ↔ requirements.md (PARTIAL — MAJOR)
Keine direkten Widersprüche in Technologie-Entscheidungen:
- PostgreSQL 16 ↔ F-DATA-04 ✓
- React 18 SPA ↔ Requirements ✓
- FastAPI Backend ↔ Requirements ✓
- Session-based Auth ↔ F-AUTH-01/F-INT-02 ✓
- Plugin System ↔ F-PLUGIN-01/02 ✓
Aber: Gaps (Requirements fordern, Architecture schweigt):
- F-AI-01 fordert KI-Integration → Architecture hat keine KI-Sektion (CRITICAL)
- F-WF-01 fordert Workflow-Engine → Architecture hat keine Workflow-Sektion (CRITICAL)
- F-SEC-02 fordert CSP-Header → Architecture erwähnt keinen CSP-Header (MINOR)
- F-INFRA-04 fordert Monitoring & Alerting → Architecture hat keins (MAJOR)
- F-PERF-01 fordert Performance-Requirements → Architecture hat keine Performance-Sektion (MAJOR)
⚠️ Kriterium 6: Widersprüche task_graph.json ↔ architecture.md (PARTIAL — MINOR)
- Task-API-Endpoints ↔ Architecture API Design: Konsistent ✅
- Task-DB-Models ↔ Architecture DB Schema: Konsistent ✅
- Task-Plugin-Architecture ↔ Architecture Plugin Section: Konsistent ✅
- Task-Dependencies ↔ Architecture Service Dependencies: Konsistent ✅
- F-CONT-08 in T02 requirement_ids existiert nicht in requirements.md (Phantom) — MINOR
api_tokenstable in Architecture §6 erwähnt, aber nicht in DB Schema §2 — MINOR
✅ Kriterium 7: Multi-Tenant konsistent (PASS)
- DB Schema: Jede Tabelle hat
tenant_id UUID FK→tenants.id✅- Core: tenants, users, user_tenants, roles, sessions, companies, contacts, company_contacts, audit_log, deletion_log, notifications, password_reset_tokens, plugins ✅
- DMS: dms_folders, dms_files, file_links, folder_permissions, file_shares, share_links ✅
- Calendar: calendars, calendar_entries, calendar_entry_links, calendar_shares, user_calendar_visibility, subtasks, resources, resource_bookings ✅
- Mail: mail_accounts, mail_folders, mails, mail_attachments, mail_labels, mail_label_assignments, mail_rules, mail_templates, mail_signatures, vacation_sent_log, pgp_keys, contact_pgp_keys ✅
- Tags: tags, tag_assignments ✅
- Architecture §5: ORM Auto-Filter via
before_queryevent listener ✅ - TenantMixin base class ✅
- Cross-Tenant Protection: 404 (not 403) ✅
- Plugin Tables MUST include tenant_id — migration validator enforces ✅
- AGENTS.md Forbidden: "Plugin Tables without tenant_id" ✅
- Task T01 acceptance criteria: "Cross-tenant access auf company → 404" ✅
✅ Kriterium 8: Plugin-System als v1-Core-Feature (PASS)
- Architecture §4: Vollständige Plugin-Architektur (Manifest, Lifecycle, Event Bus, DI, UI Framework) ✅
- ADR-03: Built-in plugins with manifest-driven registration ✅
- Task T03: Plugin System Framework (install/activate/deactivate/uninstall, migrations, UI registry) ✅
- Tasks T04-T06: Plugin-Implementierungen (DMS+Tags, Calendar, Mail) ✅
- Plugin Endpoints in API Design ✅
- AGENTS.md: Plugin structure in conventions ✅
- Nicht als Non-Goal markiert ✅
✅ Kriterium 9: PostgreSQL 16, React 18 SPA, FastAPI (PASS)
- Docker Compose:
postgres:16-alpine✅ - Frontend Stack: React 18, Vite, React Router v6 ✅
- Backend: FastAPI + Uvicorn ✅
- ADR-01: PostgreSQL 16 instead of SQLite ✅
- AGENTS.md Forbidden: ❌ SQLite, ❌ Jinja2 ✅
- Keine SQLite-Referenzen in gesamter Architektur ✅
- Keine Jinja2-Referenzen in gesamter Architektur ✅
⚠️ Kriterium 10: Session-based Auth + API-Token separat (PARTIAL — CRITICAL)
Session-based Auth:
- Architecture §6: Session in
sessionstable, HttpOnly+Secure+SameSite=Strict cookie ✅ - ADR-05: Session-based Auth instead of JWT ✅
- AGENTS.md Forbidden: ❌ JWT Tokens ✅
- Password hashing: bcrypt cost=12 ✅
- CSRF: SameSite=Strict + Origin-Header-Validierung ✅
⚠️ CRITICAL CONTRADICTION — Session Storage:
- Architecture §6 (line 1116): "Create session in
sessionstable" → PostgreSQL - ADR-05 (line 1437): "Server-side sessions in Redis" + "Session data in Redis for fast lookup"
- DB Schema (lines 193-200):
sessionstable definiert mit id, user_id, tenant_id, csrf_token, expires_at - Widerspruch: Section 6 sagt PostgreSQL
sessionstable, ADR-05 sagt Redis. Es ist unklar, ob Sessions in Redis ODER PostgreSQL ODER beiden gespeichert werden. - Erforderliche Aktion: Klären und konsistent dokumentieren: Redis für Session-Lookup (fast) + PostgreSQL für Persistenz (survival)? Oder nur PostgreSQL? ADR-05 muss mit Section 6 übereinstimmen.
API Tokens:
- Architecture §6 erwähnt
api_tokenstable (user_id, token_hash, name, scopes, expires_at) ✅ - Markiert als "post-MVP, but architecture supports it" ✅
api_tokenstable NICHT in DB Schema §2 definiert — MINOR- Token auth via
Authorization: Bearer <token>✅ - Token respektiert RBAC und tenant isolation ✅
Severity Summary
| Severity | Count | Details |
|---|---|---|
| CRITICAL | 3 | F-AI-01 fehlt, F-WF-01 fehlt, Session-Storage-Widerspruch |
| MAJOR | 5 | 19 Features ohne Traceability, F-DOC-01 fehlt, F-INFRA-04 fehlt, F-PERF-01 fehlt, F-CONT-08 Phantom |
| MINOR | 3 | api_tokens table nicht in DB Schema, CSP-Header nicht erwähnt, Architecture line 1033 typo (```n) |
| SUGGESTION | 1 | Feature-IDs der implizit abgedeckten Features zu task_graph hinzufügen |
Findings (Strukturiert)
CRITICAL-1: F-AI-01 (KI-Copilot) — V1 Feature komplett fehlt
- Artifact: architecture.md, task_graph.json
- Location: F-AI-01 in requirements.md ist [v1], aber kein Task und keine Architecture-Sektion
- Issue: Requirements fordern KI-Copilot mit API-Kontrolle und RBAC-Respektierung. Weder Architecture.md noch Task Graph enthalten einen Task oder eine Sektion dafür.
- Recommendation:
- Architecture.md um Sektion "KI-Integration" erweitern: API-First-Design als Grundlage, KI-Copilot API-Endpoint (
/api/v1/ai/copilot), RBAC-Durchsetzung via bestehende Middleware - Task Graph: Neuen Task T09 hinzufügen ODER T01/T02 erweitern um KI-Copilot API-Endpoint
- F-AI-01 zu requirement_ids des entsprechenden Tasks hinzufügen
- Architecture.md um Sektion "KI-Integration" erweitern: API-First-Design als Grundlage, KI-Copilot API-Endpoint (
- Block transition: JA
CRITICAL-2: F-WF-01 (Hybrid-Workflow-Engine) — V1 Feature komplett fehlt
- Artifact: architecture.md, task_graph.json
- Location: F-WF-01 in requirements.md ist [v1], aber kein Task und keine Architecture-Sektion
- Issue: Requirements fordern Hybrid-Workflow-Engine (Code-Engine + konfigurierbare Regeln). Architecture hat nur Event Bus, keine Workflow-Engine.
- Recommendation:
- Architecture.md um Sektion "Workflow Engine" erweitern: Code-basierte Kern-Workflows + konfigurierbare User-Workflows
- DB Schema:
workflows,workflow_steps,workflow_instancesTabellen - Task Graph: Neuen Task hinzufügen ODER bestehenden Task erweitern
- F-WF-01 zu requirement_ids hinzufügen
- Block transition: JA
CRITICAL-3: Session-Storage-Widerspruch (PostgreSQL vs Redis)
- Artifact: architecture.md
- Location: Section 6 (line 1116) vs ADR-05 (line 1437)
- Issue: Section 6 sagt "Create session in
sessionstable" (PostgreSQL). ADR-05 sagt "Server-side sessions in Redis". DB Schema definiertsessionstable. Unklar, wo Sessions gespeichert werden. - Recommendation:
- Entscheidung treffen: Redis für Session-Store (fast, mit TTL) ODER PostgreSQL
sessionstable (persistent) ODER beides (Redis für Lookup + PostgreSQL für Audit) - Architecture §6 und ADR-5 konsistent machen
- Wenn Redis-only:
sessionstable aus DB Schema entfernen oder als Audit-Trail behalten - Wenn PostgreSQL-only: ADR-05 Rationale anpassen
- Entscheidung treffen: Redis für Session-Store (fast, mit TTL) ODER PostgreSQL
- Block transition: JA
MAJOR-1: 19 v1 Features ohne Traceability in task_graph
- Artifact: task_graph.json
- Location: requirement_ids arrays in allen Tasks
- Issue: 19 Features sind funktional durch Tasks abgedeckt, aber ihre IDs fehlen in den requirement_ids Arrays. Traceability ist broken.
- Recommendation: Füge folgende Feature-IDs zu den entsprechenden Tasks hinzu:
- T01: F-SCHED-01, F-SEC-02, F-SEC-03, F-INFRA-03
- T02: F-DATA-03, F-DATA-04
- T07: F-NAV-01, F-SET-01, F-UI-01, F-UI-02, F-UI-03, F-UI-04, F-UI-05, F-UI-06, F-UI-08, F-DATA-06
- T08: F-ENV-01, F-INFRA-02
- Alle Tasks / übergreifend: F-TEST-01
- Block transition: NEIN, aber vor Implementation beheben
MAJOR-2: F-DOC-01 (Dokumentation) — V1 Feature ohne Task
- Artifact: task_graph.json
- Issue: F-DOC-01 fordert Dokumentation. Kein Task hat diesen Feature-ID. Architektur erwähnt
docs/admin-guide.mdaber kein Task erstellt Dokumentation. - Recommendation: T08 um Dokumentations-Task erweitern oder separaten Mini-Task für Admin-Guide + API-Docs hinzufügen
MAJOR-3: F-INFRA-04 (Monitoring & Alerting) — V1 Feature nicht abgedeckt
- Artifact: architecture.md, task_graph.json
- Issue: Requirements fordern Monitoring & Alerting. Architecture und Task Graph enthalten keins.
- Recommendation: Architecture §8 um Monitoring-Sektion erweitern (z.B. /health endpoint erweitert, Prometheus metrics, Alerting). Task T01 oder T08 um Monitoring erweitern.
MAJOR-4: F-PERF-01 (Performance) — V1 Feature nicht abgedeckt
- Artifact: architecture.md, task_graph.json
- Issue: Requirements fordern Performance (200k Records, FTS, <2s Response). Architecture hat keine Performance-Sektion oder -Tests.
- Recommendation: Architecture um Performance-Sektion erweitern (DB Indexing Strategy, Query Optimization, Pagination Limits). Task T02 um Performance-Test erweitern (200k seed + list <2s).
MAJOR-5: F-CONT-08 Phantom in task_graph.json
- Artifact: task_graph.json
- Location: T02 requirement_ids array
- Issue: F-CONT-08 existiert nicht in requirements.md. Vermutlich für GDPR-Delete von Contacts gedacht, was bereits durch F-COMP-08 abgedeckt ist.
- Recommendation: F-CONT-08 aus T02 requirement_ids entfernen. Funktionalität ist bereits durch F-COMP-08 abgedeckt.
MINOR-1: api_tokens table nicht in DB Schema definiert
- Artifact: architecture.md
- Location: Section 6 erwähnt api_tokens table, aber Section 2 (DB Schema) definiert sie nicht
- Recommendation: api_tokens table in DB Schema aufnehmen (selbst wenn post-MVP)
MINOR-2: CSP-Header nicht erwähnt
- Artifact: architecture.md
- Location: F-SEC-02 fordert CSP-Header, Architecture erwähnt keins
- Recommendation: Nginx config um Content-Security-Policy Header erweitern
MINOR-3: Architecture line 1033 — Typo in code fence
- Artifact: architecture.md
- Location: Line 1033:
```nstatt``` - Recommendation:
nentfernen
Next Steps (vor Phase-Übergang erforderlich)
- [CRITICAL] Architecture.md um KI-Integration-Sektion erweitern (F-AI-01)
- [CRITICAL] Architecture.md um Workflow-Engine-Sektion erweitern (F-WF-01) + entsprechende DB-Tabellen
- [CRITICAL] Session-Storage-Widerspruch auflösen (Redis vs PostgreSQL) und Architecture §6 + ADR-05 konsistent machen
- [MAJOR] 19 implizit abgedeckte Feature-IDs zu task_graph.json requirement_ids hinzufügen
- [MAJOR] F-DOC-01, F-INFRA-04, F-PERF-01 Tasks oder Task-Erweiterungen definieren
- [MAJOR] F-CONT-08 aus task_graph.json entfernen (Phantom)
- [MINOR] api_tokens table in DB Schema aufnehmen
- [MINOR] CSP-Header in Nginx config dokumentieren
- [MINOR] Typo in architecture.md line 1033 korrigieren
- [SUGGESTION] feature_coverage_summary in task_graph.json aktualisieren nach Hinzufügen der fehlenden IDs
Review-Metadata
- Files reviewed: architecture.md (1468 lines), task_graph.json (480 lines), AGENTS.md (538 lines), requirements.md (2142 lines, Referenz)
- Cross-check method: Programmatische Feature-ID-Extraktion + Set-Differenz (Python regex)
- Review duration: Vollständige Lektüre aller 4 Dateien
- Tool used: text_editor (read), code_execution_tool (python cross-check)