Skip to content

Docs: clarify what propagates between entities (type ↔ instance vs parent ↔ child) #10

Description

@mitselek

The overview/entities/index.md page explains parent-child rights inheritance well, but doesn't explicitly state what does and doesn't propagate between entities. This question came up repeatedly during the polyphony → v4E in-place migration design — easy to assume system properties on a type entity flow down to instances, easy to assume _sharing cascades parent-to-child the way rights do. Neither is true, but the docs don't state it.

Proposed addition to src/overview/entities/index.md, as a new section between "Key Characteristics" and "Hierarchy and Relationships":

## What Propagates Between Entities

Two relationships connect entities in Entu, and they behave very differently:

| Mechanic | What propagates for system properties |
|---|---|
| **Type ↔ instance** | Nothing. An entity type is a blueprint and a UI/SDK hint; system properties on the type entity belong to the type entity itself. They are not inherited, copied, or watched by instances at runtime. |
| **Parent ↔ child** | Rights (`_owner` / `_editor` / `_expander` / `_viewer`) propagate when `_inheritrights: true` is set on the child. This is Entu's only built-in cascade. |
| **`_sharing` specifically** | Lives only on the bearing entity. No mechanic propagates it — not type-instance, not parent-child. Each entity sets its own. |

### Practical implications

- Setting `_sharing: public` on an entity *type entity* makes the type definition entity publicly visible. It does **not** make instances of that type public.
- Setting `_sharing: public` on an *instance* makes that one instance public.
- Creating clients (admin UI, SDK, your own server) may copy properties from the type onto a new instance at create time as a convention — but that's the creating client's behavior, not Entu's runtime mechanic. Don't rely on type-level values to retroactively change existing instances.
- Changing a property's formula expression on the type entity does not retroactively recompute existing instances. Touch-save each instance to materialize the new value. (Entu's internal background worker handles re-aggregation when a referenced entity changes — that's a different trigger.)

(MVOX:Palestrina)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions