Skip to content

needs-design: perception-override primitive — one 'who perceives what is real' seam for dreams, illusions, disguise #2997

Description

@ApostateCD

Gap

The roadmap's planned cross-cutting primitive ("who perceives what is real," reused by dreamstates, illusions, disguise) was never built as a shared seam. The two consumers that shipped each built their own mechanism:

  • Dreams as a room layer (world/dreams/is_dream_engaged, get_dream_space)
  • Illusion/disguise as form overlays (DisguiseKind, ConcealmentLevel, active_fake_overlay, pierce contest in world/forms/services/identification.py)

SceneRound has no mode/variety axis at all, so a scene where different participants perceive different realities (an illusionist deceiving half the room, a shared dream, a haunting only one character sees) cannot be authored.

Why

This unlocks a whole register of scene types the magic system keeps gesturing at — and doing it as a primitive prevents a third and fourth parallel implementation when hauntings/visions/glamours arrive.

Shape (for spec)

Decide whether the seam lives on scenes (per-observer render filtering) or on the perception service layer both dreams and forms already pass through. Explicitly reconcile with the two shipped mechanisms rather than adding a third.

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority:laterReal but not MVP-gating; post-MVP scale-out

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions