Files
innovatieplatform/CLAUDE.md
znetsixe 9f033835cd Restructure student tracks by cross-reference chains, add project rules
Student tracks restructured based on document cross-reference analysis:
- Track 1 "Gemalen & CRC Keten": Grace→Kevin→Robin→Adriaan (chain)
- Track 2 "Condition Monitoring": Kevin→Yamai (fork from Track 1)
- Track 3 "Zuivering & Beluchting": Noa‖Elise (parallel, same problem)
- Track 4 "EVOLV Reactor Model": Pieter (standalone, no student cross-refs)
- Track 5 "IoT & ICT Infra": Bart→Fontys ICT→Fontys TOGAF (chain)

Inter-student dependencies added (7 new):
- Grace→Kevin, Kevin→Robin, Robin→Adriaan (Track 1 chain)
- Kevin→Yamai (Track 2 fork)
- Bart→Fontys ICT→Fontys TOGAF (Track 5 chain)

CLAUDE.md: Added "Metro Map Data Rules" section documenting:
- Thema=line, Project=station, speerpunt=track grouping
- Student work rules: cross-references determine track sharing
- Identified chains with evidence (reference counts from source docs)
- Grid alignment requirements

MetroCanvas: Truncate long station labels to prevent overlap (max ~20 chars
based on grid spacing, with ellipsis)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 14:19:16 +02:00

101 lines
5.3 KiB
Markdown

# Innovatieplatform — R&D Lab Waterschap Brabantse Delta
## Project
Innovation governance platform supporting the full lifecycle of innovation trajectories — from signal to handover — with built-in AI support.
**Wiki (source of truth):** https://gitea.wbd-rd.nl/vps1_gitea_admin/innovatieplatform/wiki/
**Repo:** https://gitea.wbd-rd.nl/vps1_gitea_admin/innovatieplatform
## Tech Stack
- **Backend:** Laravel (latest LTS) — service-oriented, event-driven, API-first
- **Frontend:** Vue 3 + Composition API + Vite + Inertia.js
- **Database:** PostgreSQL 16+ with pgvector extension
- **AI Service:** Python (FastAPI + LangGraph + RAG pipeline)
- **Queue:** Redis + Laravel Horizon
- **Infrastructure:** Docker Compose (nginx, php-fpm, queue worker, scheduler, ai-service, postgresql, redis)
## Architecture Principles
- Service-oriented: domain logic in service classes, not controllers
- Event-driven: status transitions via events → listeners
- API-first: all functionality available via API
- Audit trail: all mutations logged (append-only)
- AI content labeled: never auto-published without human confirmation
## Build Agents
All agent definitions are in `.claude/agents/`:
1. **orchestrator** — coordination, planning, task distribution
2. **domain-architect** — domain model, functional design, acceptance criteria
3. **solution-architect** — technical architecture, integration, technology
4. **backend-engineer** — Laravel development, APIs, services, tests
5. **frontend-engineer** — Vue 3 components, Inertia pages, UX
6. **data-modeler** — database schema, migrations, pgvector, seeds
7. **ai-engineer** — Python AI service, RAG, LangGraph, prompts
8. **devops-engineer** — Docker, deployment, infrastructure
9. **security-specialist** — RBAC, audit, compliance, review
10. **doc-designer** — documentation structure, handover, knowledge design
## MVP Scope (8 weeks)
- Project CRUD with innovation lifecycle phases
- Commitments & actions with owner/deadline
- Basic documentation (upload, link, search)
- Simple roadmap visualization
- RBAC (admin, project_owner, team_member, viewer)
- Basic AI chat + project summaries + semantic search
- Dashboard with personal overview
## Wiki (Knowledge Base)
The project wiki lives in `wiki/` and follows the wiki-template schema. It is the canonical knowledge base for agents.
**Quick access:**
- `python wiki/tools/query.py health` — project health overview
- `python wiki/tools/query.py entity "project"` — everything about an entity
- `python wiki/tools/query.py test "phpunit"` — test results
- `python wiki/tools/query.py status "proven"` — all pages with status
- `bash wiki/tools/search.sh "keyword"` — full-text search
- `bash wiki/tools/lint.sh` — check wiki health (orphans, missing frontmatter)
**Source of truth hierarchy:** test results > code > knowledge-graph.yaml > wiki pages > chat
**After making significant changes:** update relevant wiki pages, `knowledge-graph.yaml`, and `wiki/log.md`.
## Metro Map Data Rules
The metro map is the primary navigation and knowledge structure. These rules govern how content maps to the visual metro metaphor.
### Thema = Metro Line (Dim 1)
Each thema is a horizontal metro line at the strategy level. Keep themas to major organizational concerns:
- **R&D Planning 2026** themes (Architectuur, Productiewaardig, Lab, Governance)
- **Onderzoek** — all research work (R&D-driven and student)
### Project = Station (Dim 1)
Each project is a station on its thema's line. Stations are zoomable into Dim 2.
### Student Work Rules
Student projects live under the **Onderzoek** thema. Structure:
1. **Each student gets their own track (metro line) within the Onderzoek thema** — unless they build on another student's work
2. **Students who build on each other share a track** — chronological stations on the same line, earlier work first
3. **Cross-references determine track grouping**, not topic similarity. Evidence: explicit mentions of another student's work, reuse of their system/data, or continuation of their project
4. **Identified chains** (from cross-reference analysis of source documents):
- **Gemalen & CRC track**: Grace van Geel (pump curves) → Kevin Haest (CRC/IOT2050, references Grace) → Robin van Weelie (D.R.A.I.N., references CRC) → Adriaan Sol (pilot 3, references D.R.A.I.N.)
- **Monitoring branch** (forks from Kevin): Kevin Haest → Yamai van Rooij (CRC 78x, MCSA, references Kevin)
- **Zuivering track**: Noa de Groot (beluchting) ‖ Elise Nouws (algen, parallel approach to same problem)
- **EVOLV Reactor**: Pieter van der Wilt (standalone — EVOLV ASM model, no student cross-refs)
- **IoT & Infra track**: Bart van Gool (IoT-hub) → Fontys ICT (Docker/CI-CD/SOC) → Fontys TOGAF (security)
5. **Dependencies to 2026 projects** are tracked as `Afhankelijkheid` records (type: technisch/data/infrastructuur)
### Kennis Artikelen
Standalone knowledge articles extracted from research. Not tied to a project lifecycle. Used by the AI/search engine for semantic retrieval.
### Grid Alignment
All node positions must be multiples of GRID=50. Server-side: `MapDataService::snapToGrid()`. Client-side: `gridConstants.js`.
## What Requires Human Validation
- Architecture decisions
- Domain model changes
- UX/design choices
- Scope changes
- AI behavior and prompt templates
- Security findings
- Handover process definitions