diff --git a/data/scope/epics/3darch-ep-1.yml b/data/scope/epics/3darch-ep-1.yml new file mode 100644 index 0000000..81f8d9d --- /dev/null +++ b/data/scope/epics/3darch-ep-1.yml @@ -0,0 +1,79 @@ +{ + "type": "Epic", + "status": "IN_BACKLOG", + "status_source": "EXACT", + "blocked": false, + "blocked_reason": null, + "owner": "3D Architecture Wizzard team", + "required_features": [], + "dependencies": [], + "approval": { + "approved_for_solution": false, + "conditions": [], + "evidence": null + }, + "catalogue_decision": { + "decision": "Approved for documentation", + "actor": "Linas", + "actor_discord_id": "1483820991720329227", + "date": "2026-09-02", + "evidence_url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + }, + "last_transition": { + "from": null, + "to": "IN_BACKLOG", + "actor": "Linas", + "authority": "Human team member approval to document the mined Epic catalogue", + "date": "2026-09-02", + "evidence_url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + }, + "sources": [ + { + "label": "Legacy-analysis request — RootAtSkic", + "url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544617403160465409" + }, + { + "label": "Catalogue documentation approval — Linas", + "url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + } + ], + "legacy_revision": "c0ced47ecaf4426f47e5c2e4868677f7144b951a", + "id": "3DARCH-EP-1", + "title": "Engineering Platform, Quality, and Operability", + "problem": "The platform spans browser applications, real-time services, AI-assisted generation, shared contracts, persistence, and delivery infrastructure that must evolve without destabilizing user journeys.", + "goal": "Provide a dependable engineering foundation for building, testing, documenting, packaging, deploying, and operating the complete 3D platform and its shared capabilities.", + "value": "Teams can evolve the platform safely and consistently while preserving the quality and operability of the complete experience.", + "constraints": [ + "Only materially implemented legacy behavior is included; planned-only capabilities remain outside the approved catalogue." + ], + "legacy_evidence": [ + { + "path": "apps/nebula/src/App.tsx", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/App.tsx" + }, + { + "path": "apps/nebula/src/socket-client.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/socket-client.ts" + }, + { + "path": "apps/singularity/src/index.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/index.ts" + }, + { + "path": "apps/singularity/src/socket-server/index.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/socket-server/index.ts" + }, + { + "path": "apps/singularity/prisma/schema.prisma", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/prisma/schema.prisma" + }, + { + "path": "apps/archwiz-forge/src/routes/generate.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/routes/generate.ts" + }, + { + "path": "packages/utils/types/src", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/packages/utils/types/src" + } + ] +} diff --git a/data/scope/epics/3darch-ep-10.yml b/data/scope/epics/3darch-ep-10.yml new file mode 100644 index 0000000..06822f2 --- /dev/null +++ b/data/scope/epics/3darch-ep-10.yml @@ -0,0 +1,67 @@ +{ + "type": "Epic", + "status": "IN_BACKLOG", + "status_source": "EXACT", + "blocked": false, + "blocked_reason": null, + "owner": "3D Architecture Wizzard team", + "required_features": [], + "dependencies": [], + "approval": { + "approved_for_solution": false, + "conditions": [], + "evidence": null + }, + "catalogue_decision": { + "decision": "Approved for documentation", + "actor": "Linas", + "actor_discord_id": "1483820991720329227", + "date": "2026-09-02", + "evidence_url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + }, + "last_transition": { + "from": null, + "to": "IN_BACKLOG", + "actor": "Linas", + "authority": "Human team member approval to document the mined Epic catalogue", + "date": "2026-09-02", + "evidence_url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + }, + "sources": [ + { + "label": "Legacy-analysis request — RootAtSkic", + "url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544617403160465409" + }, + { + "label": "Catalogue documentation approval — Linas", + "url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + } + ], + "legacy_revision": "c0ced47ecaf4426f47e5c2e4868677f7144b951a", + "id": "3DARCH-EP-10", + "title": "Reopen and Continue Previous Design Projects", + "problem": "Generated work loses value if it cannot be recognized, reopened, and continued in a later session.", + "goal": "List saved projects with identifying context and let a person reopen a selected scene for review or modification.", + "value": "Apartment concepts remain reusable across sessions instead of becoming disposable one-time results.", + "constraints": [ + "Only materially implemented legacy behavior is included; planned-only capabilities remain outside the approved catalogue." + ], + "legacy_evidence": [ + { + "path": "apps/archwiz-portal/src/components/LeftSidebar.tsx", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/components/LeftSidebar.tsx" + }, + { + "path": "apps/archwiz-portal/src/api/client.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/api/client.ts" + }, + { + "path": "apps/archwiz-forge/src/routes/projects.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/routes/projects.ts" + }, + { + "path": "apps/archwiz-forge/src/test/routes/projects.test.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/test/routes/projects.test.ts" + } + ] +} diff --git a/data/scope/epics/3darch-ep-2.yml b/data/scope/epics/3darch-ep-2.yml new file mode 100644 index 0000000..0716870 --- /dev/null +++ b/data/scope/epics/3darch-ep-2.yml @@ -0,0 +1,75 @@ +{ + "type": "Epic", + "status": "IN_BACKLOG", + "status_source": "EXACT", + "blocked": false, + "blocked_reason": null, + "owner": "3D Architecture Wizzard team", + "required_features": [], + "dependencies": [], + "approval": { + "approved_for_solution": false, + "conditions": [], + "evidence": null + }, + "catalogue_decision": { + "decision": "Approved for documentation", + "actor": "Linas", + "actor_discord_id": "1483820991720329227", + "date": "2026-09-02", + "evidence_url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + }, + "last_transition": { + "from": null, + "to": "IN_BACKLOG", + "actor": "Linas", + "authority": "Human team member approval to document the mined Epic catalogue", + "date": "2026-09-02", + "evidence_url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + }, + "sources": [ + { + "label": "Legacy-analysis request — RootAtSkic", + "url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544617403160465409" + }, + { + "label": "Catalogue documentation approval — Linas", + "url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + } + ], + "legacy_revision": "c0ced47ecaf4426f47e5c2e4868677f7144b951a", + "id": "3DARCH-EP-2", + "title": "Secure Access and Personal Setup", + "problem": "A person needs a trusted way to enter the workplace and establish an identity and control setup that remains recognizable across visits.", + "goal": "Enable enterprise authentication, a persistent profile, avatar choice, and personal control settings as one coherent entry and setup experience.", + "value": "People can start with low friction and return to a personalized experience without repeating setup.", + "constraints": [ + "Only materially implemented legacy behavior is included; planned-only capabilities remain outside the approved catalogue." + ], + "legacy_evidence": [ + { + "path": "apps/singularity/src/routes/auth.routes.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/routes/auth.routes.ts" + }, + { + "path": "apps/singularity/src/config/auth.config.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/config/auth.config.ts" + }, + { + "path": "apps/nebula/src/hooks/useAuthRefresh.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/hooks/useAuthRefresh.ts" + }, + { + "path": "apps/nebula/src/components/CharacterSelection/CharacterSelection.tsx", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/components/CharacterSelection/CharacterSelection.tsx" + }, + { + "path": "apps/nebula/src/components/SettingsModal/SettingsModal.tsx", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/components/SettingsModal/SettingsModal.tsx" + }, + { + "path": "apps/nebula/src/stores/settingsStore.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/stores/settingsStore.ts" + } + ] +} diff --git a/data/scope/epics/3darch-ep-3.yml b/data/scope/epics/3darch-ep-3.yml new file mode 100644 index 0000000..62ea72f --- /dev/null +++ b/data/scope/epics/3darch-ep-3.yml @@ -0,0 +1,75 @@ +{ + "type": "Epic", + "status": "IN_BACKLOG", + "status_source": "EXACT", + "blocked": false, + "blocked_reason": null, + "owner": "3D Architecture Wizzard team", + "required_features": [], + "dependencies": [], + "approval": { + "approved_for_solution": false, + "conditions": [], + "evidence": null + }, + "catalogue_decision": { + "decision": "Approved for documentation", + "actor": "Linas", + "actor_discord_id": "1483820991720329227", + "date": "2026-09-02", + "evidence_url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + }, + "last_transition": { + "from": null, + "to": "IN_BACKLOG", + "actor": "Linas", + "authority": "Human team member approval to document the mined Epic catalogue", + "date": "2026-09-02", + "evidence_url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + }, + "sources": [ + { + "label": "Legacy-analysis request — RootAtSkic", + "url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544617403160465409" + }, + { + "label": "Catalogue documentation approval — Linas", + "url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + } + ], + "legacy_revision": "c0ced47ecaf4426f47e5c2e4868677f7144b951a", + "id": "3DARCH-EP-3", + "title": "Navigate and Explore the Virtual Workplace", + "problem": "People need understandable, responsive movement and orientation across the multi-floor 3D workplace.", + "goal": "Enable walking, running, jumping, camera changes, elevator travel, and map-assisted orientation while preserving location between sessions.", + "value": "A person can find places and move between them confidently without losing their position when they return.", + "constraints": [ + "Only materially implemented legacy behavior is included; planned-only capabilities remain outside the approved catalogue." + ], + "legacy_evidence": [ + { + "path": "apps/nebula/src/hooks/usePlayerControls.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/hooks/usePlayerControls.ts" + }, + { + "path": "apps/nebula/src/hooks/usePlayerMovement.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/hooks/usePlayerMovement.ts" + }, + { + "path": "apps/nebula/src/hooks/usePlayerCamera.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/hooks/usePlayerCamera.ts" + }, + { + "path": "apps/nebula/src/hooks/usePlayerActions.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/hooks/usePlayerActions.ts" + }, + { + "path": "apps/nebula/src/components/Map/Map.tsx", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/components/Map/Map.tsx" + }, + { + "path": "apps/singularity/src/socket-server/player-manager.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/socket-server/player-manager.ts" + } + ] +} diff --git a/data/scope/epics/3darch-ep-4.yml b/data/scope/epics/3darch-ep-4.yml new file mode 100644 index 0000000..2f54087 --- /dev/null +++ b/data/scope/epics/3darch-ep-4.yml @@ -0,0 +1,75 @@ +{ + "type": "Epic", + "status": "IN_BACKLOG", + "status_source": "EXACT", + "blocked": false, + "blocked_reason": null, + "owner": "3D Architecture Wizzard team", + "required_features": [], + "dependencies": [], + "approval": { + "approved_for_solution": false, + "conditions": [], + "evidence": null + }, + "catalogue_decision": { + "decision": "Approved for documentation", + "actor": "Linas", + "actor_discord_id": "1483820991720329227", + "date": "2026-09-02", + "evidence_url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + }, + "last_transition": { + "from": null, + "to": "IN_BACKLOG", + "actor": "Linas", + "authority": "Human team member approval to document the mined Epic catalogue", + "date": "2026-09-02", + "evidence_url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + }, + "sources": [ + { + "label": "Legacy-analysis request — RootAtSkic", + "url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544617403160465409" + }, + { + "label": "Catalogue documentation approval — Linas", + "url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + } + ], + "legacy_revision": "c0ced47ecaf4426f47e5c2e4868677f7144b951a", + "id": "3DARCH-EP-4", + "title": "Experience Live Co-Presence", + "problem": "A shared virtual workplace is not credible unless participants can recognize who is present and see their movement and activity coherently.", + "goal": "Synchronize scene-aware position, orientation, avatar, identity, and movement or activity state for people sharing a floor.", + "value": "Participants experience a consistent sense of being together as colleagues join, move, change floors, or leave.", + "constraints": [ + "Only materially implemented legacy behavior is included; planned-only capabilities remain outside the approved catalogue." + ], + "legacy_evidence": [ + { + "path": "apps/singularity/src/socket-server/event-handlers.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/socket-server/event-handlers.ts" + }, + { + "path": "apps/singularity/src/socket-server/scene-manager.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/socket-server/scene-manager.ts" + }, + { + "path": "apps/singularity/src/socket-server/broadcast-service.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/socket-server/broadcast-service.ts" + }, + { + "path": "apps/nebula/src/socket-client.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/socket-client.ts" + }, + { + "path": "apps/nebula/src/components/Player.tsx", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/components/Player.tsx" + }, + { + "path": "packages/utils/types/src/player.types.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/packages/utils/types/src/player.types.ts" + } + ] +} diff --git a/data/scope/epics/3darch-ep-5.yml b/data/scope/epics/3darch-ep-5.yml new file mode 100644 index 0000000..4bb37a8 --- /dev/null +++ b/data/scope/epics/3darch-ep-5.yml @@ -0,0 +1,75 @@ +{ + "type": "Epic", + "status": "IN_BACKLOG", + "status_source": "EXACT", + "blocked": false, + "blocked_reason": null, + "owner": "3D Architecture Wizzard team", + "required_features": [], + "dependencies": [], + "approval": { + "approved_for_solution": false, + "conditions": [], + "evidence": null + }, + "catalogue_decision": { + "decision": "Approved for documentation", + "actor": "Linas", + "actor_discord_id": "1483820991720329227", + "date": "2026-09-02", + "evidence_url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + }, + "last_transition": { + "from": null, + "to": "IN_BACKLOG", + "actor": "Linas", + "authority": "Human team member approval to document the mined Epic catalogue", + "date": "2026-09-02", + "evidence_url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + }, + "sources": [ + { + "label": "Legacy-analysis request — RootAtSkic", + "url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544617403160465409" + }, + { + "label": "Catalogue documentation approval — Linas", + "url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + } + ], + "legacy_revision": "c0ced47ecaf4426f47e5c2e4868677f7144b951a", + "id": "3DARCH-EP-5", + "title": "Communicate in Spatial Context", + "problem": "Participants need fast written and spoken communication without leaving the shared 3D environment.", + "goal": "Enable floor-scoped text with speech bubbles and push-to-talk voice with proximity-reflective volume and speaking indicators.", + "value": "People can coordinate through visible text and natural nearby conversation in the context where they are working.", + "constraints": [ + "Only materially implemented legacy behavior is included; planned-only capabilities remain outside the approved catalogue." + ], + "legacy_evidence": [ + { + "path": "apps/nebula/src/components/Chat/Chat.tsx", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/components/Chat/Chat.tsx" + }, + { + "path": "apps/nebula/src/components/SpeechBubble.tsx", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/components/SpeechBubble.tsx" + }, + { + "path": "apps/singularity/src/socket-server/chat-handler.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/socket-server/chat-handler.ts" + }, + { + "path": "apps/nebula/src/hooks/useVoiceChat.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/hooks/useVoiceChat.ts" + }, + { + "path": "apps/singularity/src/socket-server/voice-handler.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/socket-server/voice-handler.ts" + }, + { + "path": "apps/nebula/src/components/VoiceIndicator.tsx", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/components/VoiceIndicator.tsx" + } + ] +} diff --git a/data/scope/epics/3darch-ep-6.yml b/data/scope/epics/3darch-ep-6.yml new file mode 100644 index 0000000..9a6d738 --- /dev/null +++ b/data/scope/epics/3darch-ep-6.yml @@ -0,0 +1,75 @@ +{ + "type": "Epic", + "status": "IN_BACKLOG", + "status_source": "EXACT", + "blocked": false, + "blocked_reason": null, + "owner": "3D Architecture Wizzard team", + "required_features": [], + "dependencies": [], + "approval": { + "approved_for_solution": false, + "conditions": [], + "evidence": null + }, + "catalogue_decision": { + "decision": "Approved for documentation", + "actor": "Linas", + "actor_discord_id": "1483820991720329227", + "date": "2026-09-02", + "evidence_url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + }, + "last_transition": { + "from": null, + "to": "IN_BACKLOG", + "actor": "Linas", + "authority": "Human team member approval to document the mined Epic catalogue", + "date": "2026-09-02", + "evidence_url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + }, + "sources": [ + { + "label": "Legacy-analysis request — RootAtSkic", + "url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544617403160465409" + }, + { + "label": "Catalogue documentation approval — Linas", + "url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + } + ], + "legacy_revision": "c0ced47ecaf4426f47e5c2e4868677f7144b951a", + "id": "3DARCH-EP-6", + "title": "Coordinate Shared Workplace Seating", + "problem": "People need to discover and claim shared seating without collisions, hidden occupancy, or the ability to displace another occupant.", + "goal": "Expose seat availability and occupant identity in the office and map, and support conflict-safe claim, change, release, and daily reset behavior.", + "value": "Shared seating becomes self-service and trustworthy while each person holds at most one seat.", + "constraints": [ + "Only materially implemented legacy behavior is included; planned-only capabilities remain outside the approved catalogue." + ], + "legacy_evidence": [ + { + "path": "apps/nebula/src/hooks/usePlayerActions.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/hooks/usePlayerActions.ts" + }, + { + "path": "apps/nebula/src/stores/chairStore.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/stores/chairStore.ts" + }, + { + "path": "apps/nebula/src/components/interactables/ChairOverlay.tsx", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/components/interactables/ChairOverlay.tsx" + }, + { + "path": "apps/nebula/src/components/Map/components/MapSeatLayer.tsx", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/components/Map/components/MapSeatLayer.tsx" + }, + { + "path": "apps/singularity/src/routes/seat.routes.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/routes/seat.routes.ts" + }, + { + "path": "apps/singularity/src/jobs/seat-reset.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/jobs/seat-reset.ts" + } + ] +} diff --git a/data/scope/epics/3darch-ep-7.yml b/data/scope/epics/3darch-ep-7.yml new file mode 100644 index 0000000..c0f9c9b --- /dev/null +++ b/data/scope/epics/3darch-ep-7.yml @@ -0,0 +1,75 @@ +{ + "type": "Epic", + "status": "IN_BACKLOG", + "status_source": "EXACT", + "blocked": false, + "blocked_reason": null, + "owner": "3D Architecture Wizzard team", + "required_features": [], + "dependencies": [], + "approval": { + "approved_for_solution": false, + "conditions": [], + "evidence": null + }, + "catalogue_decision": { + "decision": "Approved for documentation", + "actor": "Linas", + "actor_discord_id": "1483820991720329227", + "date": "2026-09-02", + "evidence_url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + }, + "last_transition": { + "from": null, + "to": "IN_BACKLOG", + "actor": "Linas", + "authority": "Human team member approval to document the mined Epic catalogue", + "date": "2026-09-02", + "evidence_url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + }, + "sources": [ + { + "label": "Legacy-analysis request — RootAtSkic", + "url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544617403160465409" + }, + { + "label": "Catalogue documentation approval — Linas", + "url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + } + ], + "legacy_revision": "c0ced47ecaf4426f47e5c2e4868677f7144b951a", + "id": "3DARCH-EP-7", + "title": "Generate a Furnished 3D Apartment from a Brief", + "problem": "Turning an informal residential brief into coherent geometry, furnishings, and lighting normally requires specialized modelling effort.", + "goal": "Interpret natural-language needs and progressively produce requirements, a connected floor plan, suitable furniture, and lighting as a complete saved 3D scene.", + "value": "A person can move from an informal brief to a usable, constraint-aware spatial concept while seeing meaningful progress.", + "constraints": [ + "Only materially implemented legacy behavior is included; planned-only capabilities remain outside the approved catalogue." + ], + "legacy_evidence": [ + { + "path": "apps/archwiz-portal/src/components/LeftSidebar.tsx", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/components/LeftSidebar.tsx" + }, + { + "path": "apps/archwiz-forge/src/routes/generate.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/routes/generate.ts" + }, + { + "path": "apps/archwiz-forge/src/skills/extract-requirements.md", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/skills/extract-requirements.md" + }, + { + "path": "apps/archwiz-forge/src/skills/generate-structure.md", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/skills/generate-structure.md" + }, + { + "path": "apps/archwiz-forge/src/skills/place-furniture.md", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/skills/place-furniture.md" + }, + { + "path": "apps/archwiz-forge/src/skills/add-lighting.md", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/skills/add-lighting.md" + } + ] +} diff --git a/data/scope/epics/3darch-ep-8.yml b/data/scope/epics/3darch-ep-8.yml new file mode 100644 index 0000000..8f95c38 --- /dev/null +++ b/data/scope/epics/3darch-ep-8.yml @@ -0,0 +1,75 @@ +{ + "type": "Epic", + "status": "IN_BACKLOG", + "status_source": "EXACT", + "blocked": false, + "blocked_reason": null, + "owner": "3D Architecture Wizzard team", + "required_features": [], + "dependencies": [], + "approval": { + "approved_for_solution": false, + "conditions": [], + "evidence": null + }, + "catalogue_decision": { + "decision": "Approved for documentation", + "actor": "Linas", + "actor_discord_id": "1483820991720329227", + "date": "2026-09-02", + "evidence_url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + }, + "last_transition": { + "from": null, + "to": "IN_BACKLOG", + "actor": "Linas", + "authority": "Human team member approval to document the mined Epic catalogue", + "date": "2026-09-02", + "evidence_url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + }, + "sources": [ + { + "label": "Legacy-analysis request — RootAtSkic", + "url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544617403160465409" + }, + { + "label": "Catalogue documentation approval — Linas", + "url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + } + ], + "legacy_revision": "c0ced47ecaf4426f47e5c2e4868677f7144b951a", + "id": "3DARCH-EP-8", + "title": "Review and Walk Through a Generated Design", + "problem": "A generated layout must be understandable at both overview and human scale before someone can evaluate it.", + "goal": "Provide orbit and first-person review with room labels, openings, materials, furniture, lighting, area, and project context visible in the experience.", + "value": "A person can assess scale, circulation, layout, and design intent before deciding what to refine.", + "constraints": [ + "Only materially implemented legacy behavior is included; planned-only capabilities remain outside the approved catalogue." + ], + "legacy_evidence": [ + { + "path": "apps/archwiz-portal/src/components/RightSidebar.tsx", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/components/RightSidebar.tsx" + }, + { + "path": "apps/archwiz-portal/src/components/scene/ApartmentCanvas.tsx", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/components/scene/ApartmentCanvas.tsx" + }, + { + "path": "apps/archwiz-portal/src/components/scene/RoomMesh.tsx", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/components/scene/RoomMesh.tsx" + }, + { + "path": "apps/archwiz-portal/src/components/scene/RoomLabels.tsx", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/components/scene/RoomLabels.tsx" + }, + { + "path": "apps/archwiz-portal/src/components/scene/FPSControls.tsx", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/components/scene/FPSControls.tsx" + }, + { + "path": "apps/archwiz-portal/src/components/scene/entrance.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/components/scene/entrance.ts" + } + ] +} diff --git a/data/scope/epics/3darch-ep-9.yml b/data/scope/epics/3darch-ep-9.yml new file mode 100644 index 0000000..b4c5b85 --- /dev/null +++ b/data/scope/epics/3darch-ep-9.yml @@ -0,0 +1,71 @@ +{ + "type": "Epic", + "status": "IN_BACKLOG", + "status_source": "EXACT", + "blocked": false, + "blocked_reason": null, + "owner": "3D Architecture Wizzard team", + "required_features": [], + "dependencies": [], + "approval": { + "approved_for_solution": false, + "conditions": [], + "evidence": null + }, + "catalogue_decision": { + "decision": "Approved for documentation", + "actor": "Linas", + "actor_discord_id": "1483820991720329227", + "date": "2026-09-02", + "evidence_url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + }, + "last_transition": { + "from": null, + "to": "IN_BACKLOG", + "actor": "Linas", + "authority": "Human team member approval to document the mined Epic catalogue", + "date": "2026-09-02", + "evidence_url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + }, + "sources": [ + { + "label": "Legacy-analysis request — RootAtSkic", + "url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544617403160465409" + }, + { + "label": "Catalogue documentation approval — Linas", + "url": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394" + } + ], + "legacy_revision": "c0ced47ecaf4426f47e5c2e4868677f7144b951a", + "id": "3DARCH-EP-9", + "title": "Refine a Design Through Natural-Language Changes", + "problem": "A person needs to iterate on a generated design without directly manipulating geometry or editing scene files.", + "goal": "Apply focused natural-language changes to a saved apartment and present the updated 3D result while preserving project identity and unaffected content.", + "value": "Design refinement becomes a conversational loop that keeps the spatial model valid and reviewable.", + "constraints": [ + "Only materially implemented legacy behavior is included; planned-only capabilities remain outside the approved catalogue." + ], + "legacy_evidence": [ + { + "path": "apps/archwiz-portal/src/components/RightSidebar.tsx", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/components/RightSidebar.tsx" + }, + { + "path": "apps/archwiz-portal/src/api/client.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/api/client.ts" + }, + { + "path": "apps/archwiz-forge/src/routes/edit.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/routes/edit.ts" + }, + { + "path": "apps/archwiz-forge/src/skills/edit-scene.md", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/skills/edit-scene.md" + }, + { + "path": "apps/archwiz-forge/src/test/routes/edit.test.ts", + "url": "https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/test/routes/edit.test.ts" + } + ] +} diff --git a/package.json b/package.json index 106c4ad..2a5963b 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,10 @@ "serve": "docusaurus serve", "clear": "docusaurus clear", "typecheck": "tsc --noEmit", + "generate:scope": "node scripts/generate-scope.mjs", + "check:scope": "node scripts/generate-scope.mjs --check", "test": "node --test tests/*.test.mjs", - "validate": "pnpm test && pnpm typecheck && pnpm build" + "validate": "pnpm check:scope && pnpm test && pnpm typecheck && pnpm build" }, "dependencies": { "@docusaurus/core": "3.10.2", diff --git a/scope/epics/3darch-ep-1.md b/scope/epics/3darch-ep-1.md new file mode 100644 index 0000000..507f3cd --- /dev/null +++ b/scope/epics/3darch-ep-1.md @@ -0,0 +1,47 @@ +--- +title: "3DARCH-EP-1 — Engineering Platform, Quality, and Operability" +description: "Use this approved Epic boundary to assess related Features and outcomes." +--- + +# Engineering Platform, Quality, and Operability + +| Epic | Delivery status | Status source | Owner | Approved for Solution | +|---|---|---|---|---| +| `3DARCH-EP-1` | `IN_BACKLOG` | `EXACT` | 3D Architecture Wizzard team | No | + +## Goal + +Provide a dependable engineering foundation for building, testing, documenting, packaging, deploying, and operating the complete 3D platform and its shared capabilities. + +## Benefit + +Teams can evolve the platform safely and consistently while preserving the quality and operability of the complete experience. + +## Problem or opportunity + +The platform spans browser applications, real-time services, AI-assisted generation, shared contracts, persistence, and delivery infrastructure that must evolve without destabilizing user journeys. + +## Constraints + +- Only materially implemented legacy behavior is included; planned-only capabilities remain outside the approved catalogue. + +## Features + +No child Features have been defined or approved. Feature discovery must preserve this Epic boundary and requires a separate human **Approved for Solution** decision before Architecture solution work begins. + +## Original source + +- [Legacy-analysis request — RootAtSkic](https://discord.com/channels/1518726359512387766/1543925247361814568/1544617403160465409) +- [Catalogue documentation approval — Linas](https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394) + +### Legacy implementation evidence + +The approved catalogue was mined from legacy revision `c0ced47ecaf4426f47e5c2e4868677f7144b951a`. + +- [`apps/nebula/src/App.tsx`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/App.tsx) +- [`apps/nebula/src/socket-client.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/socket-client.ts) +- [`apps/singularity/src/index.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/index.ts) +- [`apps/singularity/src/socket-server/index.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/socket-server/index.ts) +- [`apps/singularity/prisma/schema.prisma`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/prisma/schema.prisma) +- [`apps/archwiz-forge/src/routes/generate.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/routes/generate.ts) +- [`packages/utils/types/src`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/packages/utils/types/src) diff --git a/scope/epics/3darch-ep-10.md b/scope/epics/3darch-ep-10.md new file mode 100644 index 0000000..7bc5bd3 --- /dev/null +++ b/scope/epics/3darch-ep-10.md @@ -0,0 +1,44 @@ +--- +title: "3DARCH-EP-10 — Reopen and Continue Previous Design Projects" +description: "Use this approved Epic boundary to assess related Features and outcomes." +--- + +# Reopen and Continue Previous Design Projects + +| Epic | Delivery status | Status source | Owner | Approved for Solution | +|---|---|---|---|---| +| `3DARCH-EP-10` | `IN_BACKLOG` | `EXACT` | 3D Architecture Wizzard team | No | + +## Goal + +List saved projects with identifying context and let a person reopen a selected scene for review or modification. + +## Benefit + +Apartment concepts remain reusable across sessions instead of becoming disposable one-time results. + +## Problem or opportunity + +Generated work loses value if it cannot be recognized, reopened, and continued in a later session. + +## Constraints + +- Only materially implemented legacy behavior is included; planned-only capabilities remain outside the approved catalogue. + +## Features + +No child Features have been defined or approved. Feature discovery must preserve this Epic boundary and requires a separate human **Approved for Solution** decision before Architecture solution work begins. + +## Original source + +- [Legacy-analysis request — RootAtSkic](https://discord.com/channels/1518726359512387766/1543925247361814568/1544617403160465409) +- [Catalogue documentation approval — Linas](https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394) + +### Legacy implementation evidence + +The approved catalogue was mined from legacy revision `c0ced47ecaf4426f47e5c2e4868677f7144b951a`. + +- [`apps/archwiz-portal/src/components/LeftSidebar.tsx`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/components/LeftSidebar.tsx) +- [`apps/archwiz-portal/src/api/client.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/api/client.ts) +- [`apps/archwiz-forge/src/routes/projects.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/routes/projects.ts) +- [`apps/archwiz-forge/src/test/routes/projects.test.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/test/routes/projects.test.ts) diff --git a/scope/epics/3darch-ep-2.md b/scope/epics/3darch-ep-2.md new file mode 100644 index 0000000..979e6a6 --- /dev/null +++ b/scope/epics/3darch-ep-2.md @@ -0,0 +1,46 @@ +--- +title: "3DARCH-EP-2 — Secure Access and Personal Setup" +description: "Use this approved Epic boundary to assess related Features and outcomes." +--- + +# Secure Access and Personal Setup + +| Epic | Delivery status | Status source | Owner | Approved for Solution | +|---|---|---|---|---| +| `3DARCH-EP-2` | `IN_BACKLOG` | `EXACT` | 3D Architecture Wizzard team | No | + +## Goal + +Enable enterprise authentication, a persistent profile, avatar choice, and personal control settings as one coherent entry and setup experience. + +## Benefit + +People can start with low friction and return to a personalized experience without repeating setup. + +## Problem or opportunity + +A person needs a trusted way to enter the workplace and establish an identity and control setup that remains recognizable across visits. + +## Constraints + +- Only materially implemented legacy behavior is included; planned-only capabilities remain outside the approved catalogue. + +## Features + +No child Features have been defined or approved. Feature discovery must preserve this Epic boundary and requires a separate human **Approved for Solution** decision before Architecture solution work begins. + +## Original source + +- [Legacy-analysis request — RootAtSkic](https://discord.com/channels/1518726359512387766/1543925247361814568/1544617403160465409) +- [Catalogue documentation approval — Linas](https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394) + +### Legacy implementation evidence + +The approved catalogue was mined from legacy revision `c0ced47ecaf4426f47e5c2e4868677f7144b951a`. + +- [`apps/singularity/src/routes/auth.routes.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/routes/auth.routes.ts) +- [`apps/singularity/src/config/auth.config.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/config/auth.config.ts) +- [`apps/nebula/src/hooks/useAuthRefresh.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/hooks/useAuthRefresh.ts) +- [`apps/nebula/src/components/CharacterSelection/CharacterSelection.tsx`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/components/CharacterSelection/CharacterSelection.tsx) +- [`apps/nebula/src/components/SettingsModal/SettingsModal.tsx`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/components/SettingsModal/SettingsModal.tsx) +- [`apps/nebula/src/stores/settingsStore.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/stores/settingsStore.ts) diff --git a/scope/epics/3darch-ep-3.md b/scope/epics/3darch-ep-3.md new file mode 100644 index 0000000..998492a --- /dev/null +++ b/scope/epics/3darch-ep-3.md @@ -0,0 +1,46 @@ +--- +title: "3DARCH-EP-3 — Navigate and Explore the Virtual Workplace" +description: "Use this approved Epic boundary to assess related Features and outcomes." +--- + +# Navigate and Explore the Virtual Workplace + +| Epic | Delivery status | Status source | Owner | Approved for Solution | +|---|---|---|---|---| +| `3DARCH-EP-3` | `IN_BACKLOG` | `EXACT` | 3D Architecture Wizzard team | No | + +## Goal + +Enable walking, running, jumping, camera changes, elevator travel, and map-assisted orientation while preserving location between sessions. + +## Benefit + +A person can find places and move between them confidently without losing their position when they return. + +## Problem or opportunity + +People need understandable, responsive movement and orientation across the multi-floor 3D workplace. + +## Constraints + +- Only materially implemented legacy behavior is included; planned-only capabilities remain outside the approved catalogue. + +## Features + +No child Features have been defined or approved. Feature discovery must preserve this Epic boundary and requires a separate human **Approved for Solution** decision before Architecture solution work begins. + +## Original source + +- [Legacy-analysis request — RootAtSkic](https://discord.com/channels/1518726359512387766/1543925247361814568/1544617403160465409) +- [Catalogue documentation approval — Linas](https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394) + +### Legacy implementation evidence + +The approved catalogue was mined from legacy revision `c0ced47ecaf4426f47e5c2e4868677f7144b951a`. + +- [`apps/nebula/src/hooks/usePlayerControls.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/hooks/usePlayerControls.ts) +- [`apps/nebula/src/hooks/usePlayerMovement.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/hooks/usePlayerMovement.ts) +- [`apps/nebula/src/hooks/usePlayerCamera.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/hooks/usePlayerCamera.ts) +- [`apps/nebula/src/hooks/usePlayerActions.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/hooks/usePlayerActions.ts) +- [`apps/nebula/src/components/Map/Map.tsx`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/components/Map/Map.tsx) +- [`apps/singularity/src/socket-server/player-manager.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/socket-server/player-manager.ts) diff --git a/scope/epics/3darch-ep-4.md b/scope/epics/3darch-ep-4.md new file mode 100644 index 0000000..054fcc9 --- /dev/null +++ b/scope/epics/3darch-ep-4.md @@ -0,0 +1,46 @@ +--- +title: "3DARCH-EP-4 — Experience Live Co-Presence" +description: "Use this approved Epic boundary to assess related Features and outcomes." +--- + +# Experience Live Co-Presence + +| Epic | Delivery status | Status source | Owner | Approved for Solution | +|---|---|---|---|---| +| `3DARCH-EP-4` | `IN_BACKLOG` | `EXACT` | 3D Architecture Wizzard team | No | + +## Goal + +Synchronize scene-aware position, orientation, avatar, identity, and movement or activity state for people sharing a floor. + +## Benefit + +Participants experience a consistent sense of being together as colleagues join, move, change floors, or leave. + +## Problem or opportunity + +A shared virtual workplace is not credible unless participants can recognize who is present and see their movement and activity coherently. + +## Constraints + +- Only materially implemented legacy behavior is included; planned-only capabilities remain outside the approved catalogue. + +## Features + +No child Features have been defined or approved. Feature discovery must preserve this Epic boundary and requires a separate human **Approved for Solution** decision before Architecture solution work begins. + +## Original source + +- [Legacy-analysis request — RootAtSkic](https://discord.com/channels/1518726359512387766/1543925247361814568/1544617403160465409) +- [Catalogue documentation approval — Linas](https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394) + +### Legacy implementation evidence + +The approved catalogue was mined from legacy revision `c0ced47ecaf4426f47e5c2e4868677f7144b951a`. + +- [`apps/singularity/src/socket-server/event-handlers.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/socket-server/event-handlers.ts) +- [`apps/singularity/src/socket-server/scene-manager.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/socket-server/scene-manager.ts) +- [`apps/singularity/src/socket-server/broadcast-service.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/socket-server/broadcast-service.ts) +- [`apps/nebula/src/socket-client.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/socket-client.ts) +- [`apps/nebula/src/components/Player.tsx`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/components/Player.tsx) +- [`packages/utils/types/src/player.types.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/packages/utils/types/src/player.types.ts) diff --git a/scope/epics/3darch-ep-5.md b/scope/epics/3darch-ep-5.md new file mode 100644 index 0000000..d6b376b --- /dev/null +++ b/scope/epics/3darch-ep-5.md @@ -0,0 +1,46 @@ +--- +title: "3DARCH-EP-5 — Communicate in Spatial Context" +description: "Use this approved Epic boundary to assess related Features and outcomes." +--- + +# Communicate in Spatial Context + +| Epic | Delivery status | Status source | Owner | Approved for Solution | +|---|---|---|---|---| +| `3DARCH-EP-5` | `IN_BACKLOG` | `EXACT` | 3D Architecture Wizzard team | No | + +## Goal + +Enable floor-scoped text with speech bubbles and push-to-talk voice with proximity-reflective volume and speaking indicators. + +## Benefit + +People can coordinate through visible text and natural nearby conversation in the context where they are working. + +## Problem or opportunity + +Participants need fast written and spoken communication without leaving the shared 3D environment. + +## Constraints + +- Only materially implemented legacy behavior is included; planned-only capabilities remain outside the approved catalogue. + +## Features + +No child Features have been defined or approved. Feature discovery must preserve this Epic boundary and requires a separate human **Approved for Solution** decision before Architecture solution work begins. + +## Original source + +- [Legacy-analysis request — RootAtSkic](https://discord.com/channels/1518726359512387766/1543925247361814568/1544617403160465409) +- [Catalogue documentation approval — Linas](https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394) + +### Legacy implementation evidence + +The approved catalogue was mined from legacy revision `c0ced47ecaf4426f47e5c2e4868677f7144b951a`. + +- [`apps/nebula/src/components/Chat/Chat.tsx`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/components/Chat/Chat.tsx) +- [`apps/nebula/src/components/SpeechBubble.tsx`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/components/SpeechBubble.tsx) +- [`apps/singularity/src/socket-server/chat-handler.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/socket-server/chat-handler.ts) +- [`apps/nebula/src/hooks/useVoiceChat.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/hooks/useVoiceChat.ts) +- [`apps/singularity/src/socket-server/voice-handler.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/socket-server/voice-handler.ts) +- [`apps/nebula/src/components/VoiceIndicator.tsx`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/components/VoiceIndicator.tsx) diff --git a/scope/epics/3darch-ep-6.md b/scope/epics/3darch-ep-6.md new file mode 100644 index 0000000..9c21bf6 --- /dev/null +++ b/scope/epics/3darch-ep-6.md @@ -0,0 +1,46 @@ +--- +title: "3DARCH-EP-6 — Coordinate Shared Workplace Seating" +description: "Use this approved Epic boundary to assess related Features and outcomes." +--- + +# Coordinate Shared Workplace Seating + +| Epic | Delivery status | Status source | Owner | Approved for Solution | +|---|---|---|---|---| +| `3DARCH-EP-6` | `IN_BACKLOG` | `EXACT` | 3D Architecture Wizzard team | No | + +## Goal + +Expose seat availability and occupant identity in the office and map, and support conflict-safe claim, change, release, and daily reset behavior. + +## Benefit + +Shared seating becomes self-service and trustworthy while each person holds at most one seat. + +## Problem or opportunity + +People need to discover and claim shared seating without collisions, hidden occupancy, or the ability to displace another occupant. + +## Constraints + +- Only materially implemented legacy behavior is included; planned-only capabilities remain outside the approved catalogue. + +## Features + +No child Features have been defined or approved. Feature discovery must preserve this Epic boundary and requires a separate human **Approved for Solution** decision before Architecture solution work begins. + +## Original source + +- [Legacy-analysis request — RootAtSkic](https://discord.com/channels/1518726359512387766/1543925247361814568/1544617403160465409) +- [Catalogue documentation approval — Linas](https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394) + +### Legacy implementation evidence + +The approved catalogue was mined from legacy revision `c0ced47ecaf4426f47e5c2e4868677f7144b951a`. + +- [`apps/nebula/src/hooks/usePlayerActions.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/hooks/usePlayerActions.ts) +- [`apps/nebula/src/stores/chairStore.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/stores/chairStore.ts) +- [`apps/nebula/src/components/interactables/ChairOverlay.tsx`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/components/interactables/ChairOverlay.tsx) +- [`apps/nebula/src/components/Map/components/MapSeatLayer.tsx`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/nebula/src/components/Map/components/MapSeatLayer.tsx) +- [`apps/singularity/src/routes/seat.routes.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/routes/seat.routes.ts) +- [`apps/singularity/src/jobs/seat-reset.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/singularity/src/jobs/seat-reset.ts) diff --git a/scope/epics/3darch-ep-7.md b/scope/epics/3darch-ep-7.md new file mode 100644 index 0000000..75762a2 --- /dev/null +++ b/scope/epics/3darch-ep-7.md @@ -0,0 +1,46 @@ +--- +title: "3DARCH-EP-7 — Generate a Furnished 3D Apartment from a Brief" +description: "Use this approved Epic boundary to assess related Features and outcomes." +--- + +# Generate a Furnished 3D Apartment from a Brief + +| Epic | Delivery status | Status source | Owner | Approved for Solution | +|---|---|---|---|---| +| `3DARCH-EP-7` | `IN_BACKLOG` | `EXACT` | 3D Architecture Wizzard team | No | + +## Goal + +Interpret natural-language needs and progressively produce requirements, a connected floor plan, suitable furniture, and lighting as a complete saved 3D scene. + +## Benefit + +A person can move from an informal brief to a usable, constraint-aware spatial concept while seeing meaningful progress. + +## Problem or opportunity + +Turning an informal residential brief into coherent geometry, furnishings, and lighting normally requires specialized modelling effort. + +## Constraints + +- Only materially implemented legacy behavior is included; planned-only capabilities remain outside the approved catalogue. + +## Features + +No child Features have been defined or approved. Feature discovery must preserve this Epic boundary and requires a separate human **Approved for Solution** decision before Architecture solution work begins. + +## Original source + +- [Legacy-analysis request — RootAtSkic](https://discord.com/channels/1518726359512387766/1543925247361814568/1544617403160465409) +- [Catalogue documentation approval — Linas](https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394) + +### Legacy implementation evidence + +The approved catalogue was mined from legacy revision `c0ced47ecaf4426f47e5c2e4868677f7144b951a`. + +- [`apps/archwiz-portal/src/components/LeftSidebar.tsx`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/components/LeftSidebar.tsx) +- [`apps/archwiz-forge/src/routes/generate.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/routes/generate.ts) +- [`apps/archwiz-forge/src/skills/extract-requirements.md`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/skills/extract-requirements.md) +- [`apps/archwiz-forge/src/skills/generate-structure.md`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/skills/generate-structure.md) +- [`apps/archwiz-forge/src/skills/place-furniture.md`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/skills/place-furniture.md) +- [`apps/archwiz-forge/src/skills/add-lighting.md`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/skills/add-lighting.md) diff --git a/scope/epics/3darch-ep-8.md b/scope/epics/3darch-ep-8.md new file mode 100644 index 0000000..0c9945e --- /dev/null +++ b/scope/epics/3darch-ep-8.md @@ -0,0 +1,46 @@ +--- +title: "3DARCH-EP-8 — Review and Walk Through a Generated Design" +description: "Use this approved Epic boundary to assess related Features and outcomes." +--- + +# Review and Walk Through a Generated Design + +| Epic | Delivery status | Status source | Owner | Approved for Solution | +|---|---|---|---|---| +| `3DARCH-EP-8` | `IN_BACKLOG` | `EXACT` | 3D Architecture Wizzard team | No | + +## Goal + +Provide orbit and first-person review with room labels, openings, materials, furniture, lighting, area, and project context visible in the experience. + +## Benefit + +A person can assess scale, circulation, layout, and design intent before deciding what to refine. + +## Problem or opportunity + +A generated layout must be understandable at both overview and human scale before someone can evaluate it. + +## Constraints + +- Only materially implemented legacy behavior is included; planned-only capabilities remain outside the approved catalogue. + +## Features + +No child Features have been defined or approved. Feature discovery must preserve this Epic boundary and requires a separate human **Approved for Solution** decision before Architecture solution work begins. + +## Original source + +- [Legacy-analysis request — RootAtSkic](https://discord.com/channels/1518726359512387766/1543925247361814568/1544617403160465409) +- [Catalogue documentation approval — Linas](https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394) + +### Legacy implementation evidence + +The approved catalogue was mined from legacy revision `c0ced47ecaf4426f47e5c2e4868677f7144b951a`. + +- [`apps/archwiz-portal/src/components/RightSidebar.tsx`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/components/RightSidebar.tsx) +- [`apps/archwiz-portal/src/components/scene/ApartmentCanvas.tsx`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/components/scene/ApartmentCanvas.tsx) +- [`apps/archwiz-portal/src/components/scene/RoomMesh.tsx`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/components/scene/RoomMesh.tsx) +- [`apps/archwiz-portal/src/components/scene/RoomLabels.tsx`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/components/scene/RoomLabels.tsx) +- [`apps/archwiz-portal/src/components/scene/FPSControls.tsx`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/components/scene/FPSControls.tsx) +- [`apps/archwiz-portal/src/components/scene/entrance.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/components/scene/entrance.ts) diff --git a/scope/epics/3darch-ep-9.md b/scope/epics/3darch-ep-9.md new file mode 100644 index 0000000..0161be9 --- /dev/null +++ b/scope/epics/3darch-ep-9.md @@ -0,0 +1,45 @@ +--- +title: "3DARCH-EP-9 — Refine a Design Through Natural-Language Changes" +description: "Use this approved Epic boundary to assess related Features and outcomes." +--- + +# Refine a Design Through Natural-Language Changes + +| Epic | Delivery status | Status source | Owner | Approved for Solution | +|---|---|---|---|---| +| `3DARCH-EP-9` | `IN_BACKLOG` | `EXACT` | 3D Architecture Wizzard team | No | + +## Goal + +Apply focused natural-language changes to a saved apartment and present the updated 3D result while preserving project identity and unaffected content. + +## Benefit + +Design refinement becomes a conversational loop that keeps the spatial model valid and reviewable. + +## Problem or opportunity + +A person needs to iterate on a generated design without directly manipulating geometry or editing scene files. + +## Constraints + +- Only materially implemented legacy behavior is included; planned-only capabilities remain outside the approved catalogue. + +## Features + +No child Features have been defined or approved. Feature discovery must preserve this Epic boundary and requires a separate human **Approved for Solution** decision before Architecture solution work begins. + +## Original source + +- [Legacy-analysis request — RootAtSkic](https://discord.com/channels/1518726359512387766/1543925247361814568/1544617403160465409) +- [Catalogue documentation approval — Linas](https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394) + +### Legacy implementation evidence + +The approved catalogue was mined from legacy revision `c0ced47ecaf4426f47e5c2e4868677f7144b951a`. + +- [`apps/archwiz-portal/src/components/RightSidebar.tsx`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/components/RightSidebar.tsx) +- [`apps/archwiz-portal/src/api/client.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-portal/src/api/client.ts) +- [`apps/archwiz-forge/src/routes/edit.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/routes/edit.ts) +- [`apps/archwiz-forge/src/skills/edit-scene.md`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/skills/edit-scene.md) +- [`apps/archwiz-forge/src/test/routes/edit.test.ts`](https://gitea.lego-cloud.eu/corp-v1-3darch-legacy/corp-v1-3darch-legacy/src/commit/c0ced47ecaf4426f47e5c2e4868677f7144b951a/apps/archwiz-forge/src/test/routes/edit.test.ts) diff --git a/scope/epics/index.md b/scope/epics/index.md new file mode 100644 index 0000000..b62267d --- /dev/null +++ b/scope/epics/index.md @@ -0,0 +1,21 @@ +--- +title: "Epics" +description: "Review the approved experience-led Epic catalogue mined from the legacy platform." +--- + +# Review the approved Epic catalogue + +These ten Epics define the documented product boundary mined from materially implemented legacy behavior. `3DARCH-EP-1` owns the engineering foundation; every remaining Epic describes a user experience or usage outcome. + +- [3DARCH-EP-1 — Engineering Platform, Quality, and Operability](./3darch-ep-1.md) +- [3DARCH-EP-2 — Secure Access and Personal Setup](./3darch-ep-2.md) +- [3DARCH-EP-3 — Navigate and Explore the Virtual Workplace](./3darch-ep-3.md) +- [3DARCH-EP-4 — Experience Live Co-Presence](./3darch-ep-4.md) +- [3DARCH-EP-5 — Communicate in Spatial Context](./3darch-ep-5.md) +- [3DARCH-EP-6 — Coordinate Shared Workplace Seating](./3darch-ep-6.md) +- [3DARCH-EP-7 — Generate a Furnished 3D Apartment from a Brief](./3darch-ep-7.md) +- [3DARCH-EP-8 — Review and Walk Through a Generated Design](./3darch-ep-8.md) +- [3DARCH-EP-9 — Refine a Design Through Natural-Language Changes](./3darch-ep-9.md) +- [3DARCH-EP-10 — Reopen and Continue Previous Design Projects](./3darch-ep-10.md) + +Planned-only capabilities—including VR entry, whiteboards, extra Archwiz domains, exports, and undo—remain outside this catalogue until separately evidenced and approved. diff --git a/scope/ideas.md b/scope/ideas.md new file mode 100644 index 0000000..8e154bd --- /dev/null +++ b/scope/ideas.md @@ -0,0 +1,8 @@ +--- +title: "Ideas" +description: "Review early opportunities before they become governed Epics or Features." +--- + +# Review product Ideas + +No Ideas are currently recorded. Planned-only legacy concepts were deliberately excluded from the approved Epic catalogue and may enter this area only when supported by a clear user problem, expected benefit, owner, and source evidence. diff --git a/scope/overview.md b/scope/overview.md index c51b138..9309fcb 100644 --- a/scope/overview.md +++ b/scope/overview.md @@ -1,11 +1,20 @@ --- -title: "Product Scope" -description: "Use the product purpose to evaluate proposed work." -slug: / +title: "Scope Overview" +description: "Find every governed product record and inspect its current status, authority, ownership, gates, and evidence." +slug: /overview/ --- -# Frame product scope +import ScopeIssueMatrix from '@site/src/components/ScopeIssueMatrix'; -3D Architecture Wizzard is an interactive 3D application for exploring, designing, and communicating software and system architecture. +# Find governed product scope -The product serves architecture authors, reviewers, and stakeholders who need a shared spatial view of a model. +The matrix is the complete operational index for the current governed catalogue. It includes all ten approved Epics; no Ideas, Questions, Features, or Tasks have been defined yet. + + + +## How to read the baseline + +- `IN_BACKLOG` records the accepted catalogue boundary, not implementation readiness or delivery progress. +- `EXACT` means the initial state is directly supported by the human decision evidence linked in each row. +- **Not approved for Solution** means Architecture must not begin Feature solution work from this catalogue alone. +- Empty child and dependency sets are explicit current facts; they are not inferred completeness claims. diff --git a/scope/questions.md b/scope/questions.md new file mode 100644 index 0000000..c4de43f --- /dev/null +++ b/scope/questions.md @@ -0,0 +1,8 @@ +--- +title: "Questions" +description: "Review unresolved product decisions that affect governed scope." +--- + +# Review product Questions + +No canonical product Questions are currently recorded. Questions discovered during Feature decomposition will be added here with an owner, affected scope, decision status, and durable source. diff --git a/scope/roadmap.md b/scope/roadmap.md new file mode 100644 index 0000000..4d23f6d --- /dev/null +++ b/scope/roadmap.md @@ -0,0 +1,21 @@ +--- +title: "Roadmap" +description: "Distinguish the approved Epic baseline from future sequencing and delivery forecasts." +--- + +# Review the product roadmap baseline + +The current roadmap records the approved Epic catalogue without inventing sequence, dates, Feature scope, or delivery commitments. All Epics remain in `IN_BACKLOG`; future horizon and dependency decisions require separate evidence and human approval. + +| Epic | Outcome area | Delivery status | Horizon | Owner | Last evidenced update | +|---|---|---|---|---|---| +| [3DARCH-EP-1](./epics/3darch-ep-1.md) | Engineering Platform, Quality, and Operability | `IN_BACKLOG` | Current approved catalogue; no delivery forecast | 3D Architecture Wizzard team | [2026-09-02 decision](https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394) | +| [3DARCH-EP-2](./epics/3darch-ep-2.md) | Secure Access and Personal Setup | `IN_BACKLOG` | Current approved catalogue; no delivery forecast | 3D Architecture Wizzard team | [2026-09-02 decision](https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394) | +| [3DARCH-EP-3](./epics/3darch-ep-3.md) | Navigate and Explore the Virtual Workplace | `IN_BACKLOG` | Current approved catalogue; no delivery forecast | 3D Architecture Wizzard team | [2026-09-02 decision](https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394) | +| [3DARCH-EP-4](./epics/3darch-ep-4.md) | Experience Live Co-Presence | `IN_BACKLOG` | Current approved catalogue; no delivery forecast | 3D Architecture Wizzard team | [2026-09-02 decision](https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394) | +| [3DARCH-EP-5](./epics/3darch-ep-5.md) | Communicate in Spatial Context | `IN_BACKLOG` | Current approved catalogue; no delivery forecast | 3D Architecture Wizzard team | [2026-09-02 decision](https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394) | +| [3DARCH-EP-6](./epics/3darch-ep-6.md) | Coordinate Shared Workplace Seating | `IN_BACKLOG` | Current approved catalogue; no delivery forecast | 3D Architecture Wizzard team | [2026-09-02 decision](https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394) | +| [3DARCH-EP-7](./epics/3darch-ep-7.md) | Generate a Furnished 3D Apartment from a Brief | `IN_BACKLOG` | Current approved catalogue; no delivery forecast | 3D Architecture Wizzard team | [2026-09-02 decision](https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394) | +| [3DARCH-EP-8](./epics/3darch-ep-8.md) | Review and Walk Through a Generated Design | `IN_BACKLOG` | Current approved catalogue; no delivery forecast | 3D Architecture Wizzard team | [2026-09-02 decision](https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394) | +| [3DARCH-EP-9](./epics/3darch-ep-9.md) | Refine a Design Through Natural-Language Changes | `IN_BACKLOG` | Current approved catalogue; no delivery forecast | 3D Architecture Wizzard team | [2026-09-02 decision](https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394) | +| [3DARCH-EP-10](./epics/3darch-ep-10.md) | Reopen and Continue Previous Design Projects | `IN_BACKLOG` | Current approved catalogue; no delivery forecast | 3D Architecture Wizzard team | [2026-09-02 decision](https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394) | diff --git a/scripts/generate-scope.mjs b/scripts/generate-scope.mjs new file mode 100644 index 0000000..02b2f3d --- /dev/null +++ b/scripts/generate-scope.mjs @@ -0,0 +1,128 @@ +import {readFileSync, readdirSync, mkdirSync, writeFileSync, existsSync} from 'node:fs'; +import {dirname, join} from 'node:path'; +import process from 'node:process'; + +const root = process.cwd(); +const sourceDir = join(root, 'data/scope/epics'); +const check = process.argv.includes('--check'); +const records = readdirSync(sourceDir) + .filter((name) => name.endsWith('.yml')) + .map((name) => JSON.parse(readFileSync(join(sourceDir, name), 'utf8'))) + .sort((left, right) => Number(left.id.split('-').at(-1)) - Number(right.id.split('-').at(-1))); + +if (records.length !== 10) throw new Error(`Expected 10 Epic records, found ${records.length}`); +const ids = new Set(); +for (const epic of records) { + if (!/^3DARCH-EP-([1-9]|10)$/.test(epic.id)) throw new Error(`Invalid Epic ID: ${epic.id}`); + if (ids.has(epic.id)) throw new Error(`Duplicate Epic ID: ${epic.id}`); + ids.add(epic.id); + if (epic.type !== 'Epic' || epic.status !== 'IN_BACKLOG' || epic.status_source !== 'EXACT') throw new Error(`Invalid governed state: ${epic.id}`); + if (epic.approval?.approved_for_solution !== false) throw new Error(`Unexpected solution approval: ${epic.id}`); + if (!epic.catalogue_decision?.evidence_url || !epic.last_transition?.evidence_url) throw new Error(`Missing decision evidence: ${epic.id}`); + if (!Array.isArray(epic.legacy_evidence) || epic.legacy_evidence.length === 0) throw new Error(`Missing legacy evidence: ${epic.id}`); +} + +const sourceList = (epic) => epic.sources.map((source) => `- [${source.label}](${source.url})`).join('\n'); +const evidenceList = (epic) => epic.legacy_evidence.map((source) => `- [\`${source.path}\`](${source.url})`).join('\n'); +const epicPage = (epic) => `--- +title: "${epic.id} — ${epic.title}" +description: "Use this approved Epic boundary to assess related Features and outcomes." +--- + +# ${epic.title} + +| Epic | Delivery status | Status source | Owner | Approved for Solution | +|---|---|---|---|---| +| \`${epic.id}\` | \`${epic.status}\` | \`${epic.status_source}\` | ${epic.owner} | No | + +## Goal + +${epic.goal} + +## Benefit + +${epic.value} + +## Problem or opportunity + +${epic.problem} + +## Constraints + +${epic.constraints.map((item) => `- ${item}`).join('\n')} + +## Features + +No child Features have been defined or approved. Feature discovery must preserve this Epic boundary and requires a separate human **Approved for Solution** decision before Architecture solution work begins. + +## Original source + +${sourceList(epic)} + +### Legacy implementation evidence + +The approved catalogue was mined from legacy revision \`${epic.legacy_revision}\`. + +${evidenceList(epic)} +`; + +const epicLinks = records.map((epic) => `- [${epic.id} — ${epic.title}](./${epic.id.toLowerCase()}.md)`).join('\n'); +const epicIndex = `--- +title: "Epics" +description: "Review the approved experience-led Epic catalogue mined from the legacy platform." +--- + +# Review the approved Epic catalogue + +These ten Epics define the documented product boundary mined from materially implemented legacy behavior. \`3DARCH-EP-1\` owns the engineering foundation; every remaining Epic describes a user experience or usage outcome. + +${epicLinks} + +Planned-only capabilities—including VR entry, whiteboards, extra Archwiz domains, exports, and undo—remain outside this catalogue until separately evidenced and approved. +`; + +const roadmapRows = records.map((epic) => `| [${epic.id}](./epics/${epic.id.toLowerCase()}.md) | ${epic.title} | \`${epic.status}\` | Current approved catalogue; no delivery forecast | ${epic.owner} | [2026-09-02 decision](${epic.catalogue_decision.evidence_url}) |`).join('\n'); +const roadmap = `--- +title: "Roadmap" +description: "Distinguish the approved Epic baseline from future sequencing and delivery forecasts." +--- + +# Review the product roadmap baseline + +The current roadmap records the approved Epic catalogue without inventing sequence, dates, Feature scope, or delivery commitments. All Epics remain in \`IN_BACKLOG\`; future horizon and dependency decisions require separate evidence and human approval. + +| Epic | Outcome area | Delivery status | Horizon | Owner | Last evidenced update | +|---|---|---|---|---|---| +${roadmapRows} +`; + +const ts = `// Generated by scripts/generate-scope.mjs from data/scope/epics/*.yml. Do not edit.\nexport type ScopeIssue = {id:string; type:string; title:string; parent:string; status:string; statusSource:string; blocked:boolean; owner:string; approval:string; requiredChildren:string; dependencies:string; evidenceUrl:string; recordUrl:string};\nexport const scopeIssues: ScopeIssue[] = ${JSON.stringify(records.map((epic) => ({ + id: epic.id, type: epic.type, title: epic.title, parent: '—', status: epic.status, + statusSource: epic.status_source, blocked: epic.blocked, owner: epic.owner, + approval: epic.approval.approved_for_solution ? 'Approved for Solution' : 'Not approved for Solution', + requiredChildren: epic.required_features.length ? epic.required_features.join(', ') : 'None defined', + dependencies: epic.dependencies.length ? epic.dependencies.join(', ') : 'None recorded', + evidenceUrl: epic.last_transition.evidence_url, recordUrl: `/scope/epics/${epic.id.toLowerCase()}/`, +})), null, 2)};\n`; + +const expected = new Map([ + [join(root, 'scope/epics/index.md'), epicIndex], + [join(root, 'scope/roadmap.md'), roadmap], + [join(root, 'src/data/scopeIssues.ts'), ts], + ...records.map((epic) => [join(root, `scope/epics/${epic.id.toLowerCase()}.md`), epicPage(epic)]), +]); + +let stale = false; +for (const [path, content] of expected) { + if (check) { + if (!existsSync(path) || readFileSync(path, 'utf8') !== content) { + console.error(`Stale generated artifact: ${path}`); + stale = true; + } + } else { + mkdirSync(dirname(path), {recursive: true}); + writeFileSync(path, content); + } +} +if (stale) process.exit(1); +console.log(`${check ? 'Verified' : 'Generated'} ${expected.size} Scope artifacts from ${records.length} canonical Epics.`); diff --git a/sidebarsScope.ts b/sidebarsScope.ts index 9a25a1b..4f2c5bf 100644 --- a/sidebarsScope.ts +++ b/sidebarsScope.ts @@ -1,3 +1,24 @@ import type {SidebarsConfig} from '@docusaurus/plugin-content-docs'; -const sidebars: SidebarsConfig = {scopeSidebar: ['overview', 'initial-deliverable']}; + +const epicIds = Array.from({length: 10}, (_, index) => `3darch-ep-${index + 1}`); +const sidebars: SidebarsConfig = { + scopeSidebar: [ + 'overview', + 'roadmap', + {type: 'category', label: 'Ideas', link: {type: 'doc', id: 'ideas'}, items: []}, + {type: 'category', label: 'Questions', link: {type: 'doc', id: 'questions'}, items: []}, + { + type: 'category', + label: 'Epics', + link: {type: 'doc', id: 'epics/index'}, + collapsed: false, + items: epicIds.map((id) => ({ + type: 'category', + label: id.toUpperCase(), + link: {type: 'doc', id: `epics/${id}`}, + items: [{type: 'category', label: 'Features', items: []}], + })), + }, + ], +}; export default sidebars; diff --git a/src/components/ScopeIssueMatrix.tsx b/src/components/ScopeIssueMatrix.tsx new file mode 100644 index 0000000..24af827 --- /dev/null +++ b/src/components/ScopeIssueMatrix.tsx @@ -0,0 +1,42 @@ +import React, {useMemo, useState} from 'react'; +import Link from '@docusaurus/Link'; +import {scopeIssues} from '@site/src/data/scopeIssues'; + +export default function ScopeIssueMatrix(): React.JSX.Element { + const [query, setQuery] = useState(''); + const [type, setType] = useState('ALL'); + const [status, setStatus] = useState('ALL'); + const types = [...new Set(scopeIssues.map((item) => item.type))]; + const statuses = [...new Set(scopeIssues.map((item) => item.status))]; + const visible = useMemo(() => { + const needle = query.trim().toLocaleLowerCase(); + return scopeIssues.filter((item) => + (type === 'ALL' || item.type === type) && + (status === 'ALL' || item.status === status) && + (!needle || `${item.id} ${item.title} ${item.owner}`.toLocaleLowerCase().includes(needle)), + ); + }, [query, type, status]); + + return
+

Issue Status Matrix

+

{visible.length} of {scopeIssues.length} governed records shown · Epic: {scopeIssues.filter((item) => item.type === 'Epic').length} · IN_BACKLOG: {scopeIssues.filter((item) => item.status === 'IN_BACKLOG').length}

+
+ + + +
+
+ + + + {visible.map((item) => + + + + + )} +
Complete governed Scope record matrix
ID and titleTypeParentStatusAuthorityBlockedOwnerApproval gateRequired childrenDependenciesTransition evidence
{item.id}
{item.title}
{item.type}{item.parent}{item.status}{item.statusSource}{item.blocked ? 'Yes' : 'No'}{item.owner}{item.approval}{item.requiredChildren}{item.dependencies}Decision ↗
+
+ {visible.length === 0 &&

No governed records match these filters.

} +
; +} diff --git a/src/css/custom.css b/src/css/custom.css index aaf3de9..dea2ae8 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -1 +1,2 @@ -:root{--ifm-color-primary:#176b87;--ifm-color-primary-dark:#155f79;--ifm-color-primary-darker:#135970;--ifm-color-primary-darkest:#10495c;--ifm-color-primary-light:#197797;--ifm-color-primary-lighter:#1b7d9e;--ifm-color-primary-lightest:#1f8db2;--ifm-global-radius:0;--ifm-code-border-radius:0;--ifm-button-border-radius:0;--ifm-font-family-base:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--ifm-font-family-monospace:"IBM Plex Mono",ui-monospace,SFMono-Regular,Consolas,monospace}[data-theme='dark']{--ifm-color-primary:#5eead4;--ifm-background-color:#090d17;--ifm-background-surface-color:#111827;--ifm-color-content:#e5edf7;--ifm-color-content-secondary:#aebdd0}.navbar{box-shadow:none;border-bottom:1px solid var(--ifm-color-emphasis-300)}*,*::before,*::after{border-radius:0!important}.button{font-weight:700}.footer{border-top:4px solid #4fd1c5}.theme-doc-sidebar-container{border-right-color:var(--ifm-color-emphasis-300)!important}.navbar__items{gap:.1rem}.navbar__link{font-size:.82rem}@media(max-width:1200px){.navbar__title{display:none}.navbar__link{font-size:.76rem;padding:.25rem}} \ No newline at end of file +:root{--ifm-color-primary:#176b87;--ifm-color-primary-dark:#155f79;--ifm-color-primary-darker:#135970;--ifm-color-primary-darkest:#10495c;--ifm-color-primary-light:#197797;--ifm-color-primary-lighter:#1b7d9e;--ifm-color-primary-lightest:#1f8db2;--ifm-global-radius:0;--ifm-code-border-radius:0;--ifm-button-border-radius:0;--ifm-font-family-base:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--ifm-font-family-monospace:"IBM Plex Mono",ui-monospace,SFMono-Regular,Consolas,monospace}[data-theme='dark']{--ifm-color-primary:#5eead4;--ifm-background-color:#090d17;--ifm-background-surface-color:#111827;--ifm-color-content:#e5edf7;--ifm-color-content-secondary:#aebdd0}.navbar{box-shadow:none;border-bottom:1px solid var(--ifm-color-emphasis-300)}*,*::before,*::after{border-radius:0!important}.button{font-weight:700}.footer{border-top:4px solid #4fd1c5}.theme-doc-sidebar-container{border-right-color:var(--ifm-color-emphasis-300)!important}.navbar__items{gap:.1rem}.navbar__link{font-size:.82rem}@media(max-width:1200px){.navbar__title{display:none}.navbar__link{font-size:.76rem;padding:.25rem}} +.scope-matrix__filters{display:grid;grid-template-columns:minmax(14rem,2fr) minmax(9rem,1fr) minmax(11rem,1fr);gap:1rem;margin:1rem 0}.scope-matrix__filters label{display:grid;gap:.35rem;font-weight:700}.scope-matrix__filters input,.scope-matrix__filters select{border:1px solid var(--ifm-color-emphasis-400);background:var(--ifm-background-color);color:var(--ifm-font-color-base);font:inherit;padding:.55rem}.scope-matrix__table-wrap{overflow-x:auto}.scope-matrix table{min-width:82rem}.scope-matrix th{white-space:nowrap}.scope-matrix td{vertical-align:top}.scope-matrix code{white-space:nowrap}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}@media(max-width:760px){.scope-matrix__filters{grid-template-columns:1fr}} \ No newline at end of file diff --git a/src/data/scopeIssues.ts b/src/data/scopeIssues.ts new file mode 100644 index 0000000..d63f289 --- /dev/null +++ b/src/data/scopeIssues.ts @@ -0,0 +1,154 @@ +// Generated by scripts/generate-scope.mjs from data/scope/epics/*.yml. Do not edit. +export type ScopeIssue = {id:string; type:string; title:string; parent:string; status:string; statusSource:string; blocked:boolean; owner:string; approval:string; requiredChildren:string; dependencies:string; evidenceUrl:string; recordUrl:string}; +export const scopeIssues: ScopeIssue[] = [ + { + "id": "3DARCH-EP-1", + "type": "Epic", + "title": "Engineering Platform, Quality, and Operability", + "parent": "—", + "status": "IN_BACKLOG", + "statusSource": "EXACT", + "blocked": false, + "owner": "3D Architecture Wizzard team", + "approval": "Not approved for Solution", + "requiredChildren": "None defined", + "dependencies": "None recorded", + "evidenceUrl": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394", + "recordUrl": "/scope/epics/3darch-ep-1/" + }, + { + "id": "3DARCH-EP-2", + "type": "Epic", + "title": "Secure Access and Personal Setup", + "parent": "—", + "status": "IN_BACKLOG", + "statusSource": "EXACT", + "blocked": false, + "owner": "3D Architecture Wizzard team", + "approval": "Not approved for Solution", + "requiredChildren": "None defined", + "dependencies": "None recorded", + "evidenceUrl": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394", + "recordUrl": "/scope/epics/3darch-ep-2/" + }, + { + "id": "3DARCH-EP-3", + "type": "Epic", + "title": "Navigate and Explore the Virtual Workplace", + "parent": "—", + "status": "IN_BACKLOG", + "statusSource": "EXACT", + "blocked": false, + "owner": "3D Architecture Wizzard team", + "approval": "Not approved for Solution", + "requiredChildren": "None defined", + "dependencies": "None recorded", + "evidenceUrl": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394", + "recordUrl": "/scope/epics/3darch-ep-3/" + }, + { + "id": "3DARCH-EP-4", + "type": "Epic", + "title": "Experience Live Co-Presence", + "parent": "—", + "status": "IN_BACKLOG", + "statusSource": "EXACT", + "blocked": false, + "owner": "3D Architecture Wizzard team", + "approval": "Not approved for Solution", + "requiredChildren": "None defined", + "dependencies": "None recorded", + "evidenceUrl": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394", + "recordUrl": "/scope/epics/3darch-ep-4/" + }, + { + "id": "3DARCH-EP-5", + "type": "Epic", + "title": "Communicate in Spatial Context", + "parent": "—", + "status": "IN_BACKLOG", + "statusSource": "EXACT", + "blocked": false, + "owner": "3D Architecture Wizzard team", + "approval": "Not approved for Solution", + "requiredChildren": "None defined", + "dependencies": "None recorded", + "evidenceUrl": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394", + "recordUrl": "/scope/epics/3darch-ep-5/" + }, + { + "id": "3DARCH-EP-6", + "type": "Epic", + "title": "Coordinate Shared Workplace Seating", + "parent": "—", + "status": "IN_BACKLOG", + "statusSource": "EXACT", + "blocked": false, + "owner": "3D Architecture Wizzard team", + "approval": "Not approved for Solution", + "requiredChildren": "None defined", + "dependencies": "None recorded", + "evidenceUrl": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394", + "recordUrl": "/scope/epics/3darch-ep-6/" + }, + { + "id": "3DARCH-EP-7", + "type": "Epic", + "title": "Generate a Furnished 3D Apartment from a Brief", + "parent": "—", + "status": "IN_BACKLOG", + "statusSource": "EXACT", + "blocked": false, + "owner": "3D Architecture Wizzard team", + "approval": "Not approved for Solution", + "requiredChildren": "None defined", + "dependencies": "None recorded", + "evidenceUrl": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394", + "recordUrl": "/scope/epics/3darch-ep-7/" + }, + { + "id": "3DARCH-EP-8", + "type": "Epic", + "title": "Review and Walk Through a Generated Design", + "parent": "—", + "status": "IN_BACKLOG", + "statusSource": "EXACT", + "blocked": false, + "owner": "3D Architecture Wizzard team", + "approval": "Not approved for Solution", + "requiredChildren": "None defined", + "dependencies": "None recorded", + "evidenceUrl": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394", + "recordUrl": "/scope/epics/3darch-ep-8/" + }, + { + "id": "3DARCH-EP-9", + "type": "Epic", + "title": "Refine a Design Through Natural-Language Changes", + "parent": "—", + "status": "IN_BACKLOG", + "statusSource": "EXACT", + "blocked": false, + "owner": "3D Architecture Wizzard team", + "approval": "Not approved for Solution", + "requiredChildren": "None defined", + "dependencies": "None recorded", + "evidenceUrl": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394", + "recordUrl": "/scope/epics/3darch-ep-9/" + }, + { + "id": "3DARCH-EP-10", + "type": "Epic", + "title": "Reopen and Continue Previous Design Projects", + "parent": "—", + "status": "IN_BACKLOG", + "statusSource": "EXACT", + "blocked": false, + "owner": "3D Architecture Wizzard team", + "approval": "Not approved for Solution", + "requiredChildren": "None defined", + "dependencies": "None recorded", + "evidenceUrl": "https://discord.com/channels/1518726359512387766/1543925247361814568/1544641572975673394", + "recordUrl": "/scope/epics/3darch-ep-10/" + } +]; diff --git a/tests/portal-contract.test.mjs b/tests/portal-contract.test.mjs index 5c7cfa5..72ee431 100644 --- a/tests/portal-contract.test.mjs +++ b/tests/portal-contract.test.mjs @@ -25,3 +25,29 @@ test('sharp light and dark UI contract is explicit', () => { assert.match(css, /\*,\*::before,\*::after\{border-radius:0!important\}/); assert.match(css, /\[data-theme='dark'\]/); }); + +test('approved Epic catalogue is complete, governed, and reader-linked', () => { + const sidebar = read('sidebarsScope.ts'); + const overview = read('scope/overview.md'); + const roadmap = read('scope/roadmap.md'); + const matrix = read('src/data/scopeIssues.ts'); + assert.ok(sidebar.indexOf("'overview'") < sidebar.indexOf("'roadmap'")); + assert.ok(sidebar.indexOf("label: 'Ideas'") < sidebar.indexOf("label: 'Questions'")); + assert.ok(sidebar.indexOf("label: 'Questions'") < sidebar.indexOf("label: 'Epics'")); + assert.match(overview, //); + assert.match(roadmap, /All Epics remain in `IN_BACKLOG`/); + for (let number = 1; number <= 10; number += 1) { + const id = `3DARCH-EP-${number}`; + const slug = id.toLowerCase(); + assert.ok(existsSync(`data/scope/epics/${slug}.yml`), id); + assert.ok(existsSync(`scope/epics/${slug}.md`), id); + const record = JSON.parse(read(`data/scope/epics/${slug}.yml`)); + assert.equal(record.id, id); + assert.equal(record.status, 'IN_BACKLOG'); + assert.equal(record.status_source, 'EXACT'); + assert.equal(record.approval.approved_for_solution, false); + assert.ok(record.legacy_evidence.length > 0); + assert.ok(matrix.includes(`\"id\": \"${id}\"`)); + } + assert.doesNotMatch(matrix, /type: \"Feature\"|type: \"Task\"|type: \"Idea\"/); +});