Was steht
Register der Spezifikation
6 Register unter spec/; die Statusverteilung ist je Register vollständig aufgezählt.
| Register | IDs | Einträge | Statusverteilung |
|---|---|---|---|
| Anforderungen | V3-001 … V3-130 | 130 | 4 in_progress, 126 proposed |
| Abnahmetests | AT-001 … AT-130 | 130 | 4 in_progress, 126 not_run |
| Benchmarks | BM-001 … BM-046 | 46 | Schwelle: 46 proposed; Ausführung: 46 not_run |
| Arbeitspakete | WP-001 … WP-054 | 54 | 54 planned |
| Entscheidungen | D-01 … D-20 | 20 | 3 decided, 17 open |
| Journeys | J01 … J14 | 14 | 14 not_implemented |
In Arbeit (Anforderungen mit anderem Status als proposed): V3-006 Gemeinsamer Fachkern (in_progress, G1), V3-011 Atomare Revisionen (in_progress, G1), V3-012 Idempotency (in_progress, G1), V3-013 Undo und Redo (in_progress, G1).
Anforderungen nach Gate
| Gate | Anforderungen |
|---|---|
| G0 | 11 |
| G1 | 54 |
| G2 | 49 |
| G3 | 16 |
Architekturentscheidungen (ADR)
8 ADR-Dateien unter spec/architecture/adr/; Status ist die Statuszeile je Datei bis zum ersten Satzende (Markdown entfernt), die Verteilung zählt ihr erstes Wort: 7 Angenommen, 1 Vorgeschlagen. Getroffene Entscheidungen des Registers: D-01 Three.js-WebGPU-Splat-XR-Kombination (ADR-0001), D-10 Custom-Code-Vertrauensmodell (ADR-0005), D-12 Pilotscope und Reihenfolge (ADR-0003).
| ADR | Titel | Status |
|---|---|---|
ADR-0001 | Rendering-Engine für rooom V3 | Angenommen — mit Risiko-Gates (Abschnitt 5) |
ADR-0002 | Anwendungsstack: Nuxt für das Studio, framework-frei für das Embed, Fastify für den Kern | Angenommen |
ADR-0003 | Pilotscope: J01 + J03 als erster Vertical Slice | Angenommen — teilweise |
ADR-0004 | Datenmodell und Mandantentrennung ab der ersten Migration | Angenommen und angewendet (2026-09-13) |
ADR-0005 | Erweiterungen: Vertrag zuerst, Isolation nach Vertrauensstufe | Angenommen mit Änderungen (2026-09-13), siehe Nachtrag A |
ADR-0006 | Annahmenkatalog des Fachkerns | Vorgeschlagen — jede Zeile ist eine Annahme, keine Freigabe |
ADR-0007 | Authentifizierung der Zugänge (HTTP, MCP, SDK) | Angenommen, Variante C/A umgesetzt (2026-09-14) |
ADR-0008 | Anmeldung von Agenten und Diensten | Angenommen (2026-09-15) — Betreiberentscheidung per Frage-Werkzeug, Nachtrag B |
Datenbank
Auf dem Supabase-Projekt rooom3 angewendete Migrationen laut db/angewendet.json: 5 von 5 Migrationsdateien. Keine gebaute Migration wartet auf Anwendung.
| Migration | Ziel | Angewendet am |
|---|---|---|
0001_mandanten_szenen_commands.sql | rooom3 | 2026-09-13 07:58 UTC |
0002_rls_mengenbasiert.sql | rooom3 | 2026-09-13 18:19 UTC |
0003_anmeldung_principal_aufloesung.sql | rooom3 | 2026-09-14 11:09 UTC |
0004_anmeldung_agenten_mandate.sql | rooom3 | 2026-09-14 17:59 UTC |
0005_freigabe_fristkette_kaskade.sql | rooom3 | 2026-09-15 22:48 UTC |
CREATE-Anweisungen in den Migrationsdateien (Quelltext ohne Kommentare, per Muster gezählt — Anweisungen, nicht Objekte; create or replace ersetzt und zählt trotzdem):
| Art | Anweisungen |
|---|---|
| Tabellen | 17 |
| Funktionen | 39 |
| Policies | 22 |
| Trigger | 39 |
Threat Model
spec/security/threat-model.md führt 31 Bedrohungen (T-) und 31 Negativtests (N-). Die Negativtests sind Pläne; ihr Ausführungsstand steht in der jeweiligen Zeile.
Prüfstand
ops/verify.mjs prüft in dieser Reihenfolge (14 Schritte):
- Spezifikation: Konsistenz
- Spezifikation: Negativtest
- Typecheck: packages/contracts
- Typecheck: packages/scene-document
- Typecheck: packages/commands
- Typecheck: packages/transport
- Typecheck: packages/auth
- Typecheck: packages/renderer-three
- Typecheck: apps/api
- Tests
- Architektur: Negativtest
- Command-Kern: Negativtest
- Datenbank: Verhaltenstest (PGlite)
- Datenbank: Negativtest (PGlite)
Konsistenzprüfung der Spezifikation (ops/spec-check.mjs) beim Erzeugen dieser Seite — bestanden, 12 Regeln grün, 0 Warnungen:
- 1. Alle 6 Register sind gueltiges JSON
- 2./3. Alle Register vollzaehlig, IDs lueckenlos und eindeutig
- 4. Keine unbekannten Verweise zwischen den Registern
- 4b. Abnahmen in Anforderungs- und Testregister sind deckungsgleich
- 4c. Jede Kante spiegelt ihre Anforderung (Zustand, Abnahme, Gate, WPs, Benchmarks) und passt zum Ausfuehrungsstand
- 5. Arbeitspaketgraph ist azyklisch
- 6. Alle Statuswerte zulaessig, kein Erfolgsstatus ohne Beleg
- 6c. Jede getroffene Entscheidung hat ein vorhandenes ADR
- 7. Alle Gate-Werte in {G0, G1, G2, G3}
- 8. Jede Belegbehauptung der Traceability ist vollstaendig; jeder Beleg ist eine Datei mit Inhalt im Arbeitsbaum (Versionierung, Commit und Inhalt NICHT verifiziert)
- 9. Je Register genau eine fuehrende Datei
- 10. 36 Zaehlstellen (41 Vorkommen) in spec/index.md stimmen mit ihren Quellen ueberein: ADR-Dateien, Kapitelauszuege (Gesamtzahl und Aufteilung), Recherche, hoechste T-/N-Zeile, angewendete Migrationen auf rooom3 (auch die Stufen von ADR-0008), naechste Migrationsnummer, Vertiefung und Repositories der Bestandsanalyse, Registerzaehlungen (Register-, Stand- und Dokumente-Tabelle, Kasten), Statusverteilungen je Register (auch „alle"/„keine"), Gate-Anforderungszahlen, Traceability (Kanten mit Beleg, Abnahmen ausgefuehrt), verify-Schritte und Typechecks — NICHT geprueft: ADR-Statusverteilung, ID-Listen in Klammern, Prosazeilen (Gate-Stand, Nachweise, Datum)
Was fehlt
Soll und Ist im Repository
Sollliste aus CLAUDE.md §3 (Apps, Pakete, Worker, Python-SDK): 5 vorhanden, 23 fehlen. Ein Verzeichnis entsteht erst, wenn der erste Slice es braucht — „fehlt" ist hier Plan, kein Defekt. Vorhanden, aber in der Sollliste nicht genannt: apps/status, packages/auth, packages/transport.
| Verzeichnis | Stand |
|---|---|
apps/studio | fehlt |
apps/viewer | fehlt |
apps/api | vorhanden |
apps/mcp-server | fehlt |
apps/session-server | fehlt |
packages/contracts | vorhanden |
packages/domain | fehlt |
packages/scene-document | vorhanden |
packages/commands | vorhanden |
packages/runtime-core | fehlt |
packages/renderer-three | vorhanden |
packages/materials | fehlt |
packages/placement | fehlt |
packages/navigation | fehlt |
packages/interactions | fehlt |
packages/media | fehlt |
packages/collaboration | fehlt |
packages/avatar | fehlt |
packages/xr | fehlt |
packages/streaming | fehlt |
packages/sdk | fehlt |
packages/provider-adapters | fehlt |
packages/modeling-contracts | fehlt |
packages/modeling-core | fehlt |
packages/geometry-kernel | fehlt |
packages/modeling-sdk-ts | fehlt |
workers/ | fehlt |
python/ | fehlt |
Offene Entscheidungen am Gate G0
Dem Gate G0 zugeordnete offene Entscheidungen: 6 (Sicherheits-, Kosten-, Vertrags- und Rendering-Gates werden nicht erfunden):
D-02Authoring- und glTF-ErweiterungsprofilD-06Numerische QualitätsbudgetsD-07Enterprise-/Agency-RechtemodellD-15Externer AgentenrunnerD-16Modeling-KernelprofilD-17ModelDocument und Flächenidentität
Journeys
14 von 14 Referenzabläufen sind nicht umgesetzt. Pilotscope laut spec/journeys/catalog.json: J01, J03.
| Journey | Titel | Gate | Status | Pilot |
|---|---|---|---|---|
J01 | Einsteiger baut einen Showroom | G1 | not_implemented | ja |
J02 | Erzeugen an einem konkreten Ort | G2 | not_implemented | — |
J03 | Agent verändert eine Experience | G1 | not_implemented | ja |
J04 | Website steuert ein Produkt | G2 | not_implemented | — |
J05 | Gemeinsamer Raum auf Desktop und Headset | G2 | not_implemented | — |
J06 | Agentur verwaltet Kunden | G2 | not_implemented | — |
J07 | Modell ersetzen | G2 | not_implemented | — |
J08 | Große Welt benutzen | G2 | not_implemented | — |
J09 | Entwickler erweitert ein Training | G2 | not_implemented | — |
J10 | Engineering-Inhalt veröffentlichen | G2 | not_implemented | — |
J11 | Hochwertiges Bild erstellen | G2 | not_implemented | — |
J12 | Bestandsvorlage übernehmen | G2 | not_implemented | — |
J13 | Ein Agent baut und ändert ein echtes Objekt | G2 | not_implemented | — |
J14 | Parametrische Welt plus vorhandene Assets | G2 | not_implemented | — |
Benchmarks
46 Benchmarks stehen auf not_run. Alle Grenzwerte sind Startbudgets, keine Messergebnisse; kein Benchmark gilt als bestanden, solange das Referenzgerät nicht benannt ist.
| Benchmark | Titel | Gate |
|---|---|---|
BM-001 | Traceability und Gateintegrität | G0 |
BM-002 | Command-, Revisions- und Undo-Verhalten | G1 |
BM-003 | Semantischer glTF-Roundtrip | G1 |
BM-004 | Einfügen und Gruppen ohne Anleitung | G2 |
BM-005 | Interaktionslatenz | G1 |
BM-006 | Placement-Korrektheit | G1 |
BM-007 | Material- und Triplanarqualität | G1 |
BM-008 | Rendererparität und Geräteverlust | G1 |
BM-009 | Mesh-/Splat-Integration | G1 |
BM-010 | Erste sinnvolle Darstellung | G2 |
BM-011 | Leichtgewichtiger Viewer | G2 |
BM-012 | Stetige Framearbeit | G2 |
BM-013 | Streaming und Speicherplateau | G2 |
BM-014 | XR-Qualität und Komfort | G2 |
BM-015 | AR-Maßstab und Export | G2 |
BM-016 | Semantische AI-Aufgaben | G2 |
BM-017 | Agenten- und Mandantensicherheit | G1 |
BM-018 | Python-/Code-/Shader-Isolation | G2 |
BM-019 | Provider- und Kostenwiederholung | G2 |
BM-020 | Live API und Embeds | G1 |
BM-021 | Medienflächen und Freigaben | G2 |
BM-022 | Realtime, Rejoin und Privatzonen | G2 |
BM-023 | Avatar-Rig und Gesten | G2 |
BM-024 | Navigation und Toursicherheit | G1 |
BM-025 | Gamification und Fahrzeuge | G3 |
BM-026 | Publish, Cache und Rollback | G2 |
BM-027 | Unternehmens- und Agenturworkflow | G2 |
BM-028 | Analytics und Abrechnungstrennung | G2 |
BM-029 | OpenUSD-Semantik und Änderungsabgleich | G3 |
BM-030 | Renderjobs und Fidelity-Herkunft | G3 |
BM-031 | Legacy-/Template-Migration | G2 |
BM-032 | Recovery und Betriebsbereitschaft | G2 |
BM-033 | Vollständiger Golden Path | G2 |
BM-034 | QA-Reparatur ohne Testabschächung | G0 |
BM-035 | Engine- und Erweiterungsvergleich | G0 |
BM-036 | Konsolidierung und Modeling-Schema | G0 |
BM-037 | Python-/TS-/MCP-/UI-Parität | G1 |
BM-038 | Geometrie-Korrektheitskorpus | G1 |
BM-039 | Topologie, Material und Partstabilität | G1 |
BM-040 | Parametrischer Roundtrip und Provenienz | G1 |
BM-041 | Script-/Rechte-/Lizenzisolation | G2 |
BM-042 | Modeling-Ressourcen und Kosten | G2 |
BM-043 | J13 Tresen ohne Blender | G2 |
BM-044 | J14 Halle für Mensch und Agent | G2 |
BM-045 | Modeling-DevEx und Semantik | G2 |
BM-046 | Optionaler CAD-/DCC-Subset | G3 |