1experience "Immersive Gallery" {
2 spec: "openxp/1.0-final"
3
4 touchpoints {
5
6 // Sense the space
7 entry: sensor.beacon { zone: "entrance" }
8 bio: sensor.biometric { type: "heart_rate" } // privacy defaults ephemeral (R503)
9
10 // Shape the space
11 spatial: output.spatial_audio { zones: 3 }
12 ceiling: output.led { pixels: 2400 }
13 lights: output.lighting { universe: 1 }
14
15 // Feel the space
16 warmth: perception.warmth { intent: "welcome", source: lights, range: [0.0, 1.0] }
17 wonder: perception.wonder { intent: "awe", source: ceiling, range: [0.0, 1.0] }
18 calm: perception.calm { intent: "reflect", source: spatial, range: [0.0, 1.0] }
19
20 // Think with the space
21 curator: agent.deliberative { model: "claude", latency_sla: "5s", fallback: "advisory" }
22
23 // Guide the space
24 guide: performer.improvise { role: "facilitator", intent: "Improvise within the artistic policy" }
25 }
26
27 safety {
28 comfort_first {
29 when: bio.reading > 0.9
30 ensure: warmth.reading < 0.6
31 response: hard_stop
32 }
33 }
34
35 journey "visitor" {
36 initial: arrive
37
38 state arrive {
39 arc_phase: arrival
40 moment_type: arrival
41 intent: "Meet the guest with warmth before they commit"
42 perception_target {
43 warmth: { min: 0.3, max: 0.6, ramp: gentle }
44 }
45 on entry.detect -> immerse {
46 do: output.scene(name: "welcome_glow")
47 }
48 }
49
50 state immerse {
51 arc_phase: rise
52 moment_type: rise
53 perception_target {
54 wonder: { min: 0.5, max: 0.9 }
55 }
56 on wonder.change -> peak {
57 guard: wonder.reading > 0.8
58 do: start_pipeline(name: "generate_moment")
59 }
60 }
61
62 state peak {
63 arc_phase: peak
64 moment_type: peak
65 is_key_moment: true
66 on calm.change -> reflect {
67 do: award_souvenir(type: "memory")
68 }
69 }
70
71 state reflect {
72 arc_phase: release
73 moment_type: release
74 }
75 }
76}