- Rollebasert arv: edge-roller styrer trait-synlighet per bruker (deltaker ser mikser, lytter ser bare chat) - Mine ting: oversiktspanel i Hjem, dra node inn i verktøy for å koble dem (erstatter mottak som panel) - Chat-merging: dra chat oppå chat → live flettet visning eller snapshot med AI-beriking og brukerprompt Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2.6 KiB
2.6 KiB
Proposal: Rollebasert arv i samlinger
Konsept
Når en bruker kobles til en samling (podcast, prosjekt, møterom) med en rolle-edge, arver de tilgang til ressurser basert på rollen. Forskjellige roller ser forskjellige traits/paneler.
Problemstilling
I dag gir member_of-edge full tilgang til samlingen. En "lytter"
på en podcast ser det samme som en "deltaker" — mikser, opptak,
innstillinger, alt. Det er feil. Roller bør styre hva du ser.
Modell
Edge-typer med rolle-semantikk:
owner → full tilgang, kan endre alt
admin → full tilgang, kan ikke slette samlingen
deltaker → ser og bruker verktøy, kan ikke endre innstillinger
redaksjon → som deltaker + publiseringskontroll
lytter → ser chat og publisert innhold, ikke verktøy
gjest → midlertidig, begrenset tidstilgang
Trait-synlighet per rolle
Samlingens metadata utvides med en matrise:
{
"traits": {
"chat": { "roles": ["owner", "admin", "deltaker", "redaksjon", "lytter"] },
"mixer": { "roles": ["owner", "admin", "deltaker"] },
"recording": { "roles": ["owner", "admin", "deltaker"] },
"publishing": { "roles": ["owner", "admin", "redaksjon"] },
"podcast": { "roles": ["owner", "admin", "deltaker", "redaksjon"] },
"kanban": { "roles": ["owner", "admin", "deltaker", "redaksjon"] }
}
}
Hvis roles ikke er satt, defaulter til alle roller (bakoverkompatibelt).
Automatisk arv ved tilkobling
Når en bruker kobles til en samling:
member_of-edge opprettes medmetadata.rolerecompute_accessoppdaterernode_access-matrisen- Frontend filtrerer synlige traits basert på rollen
- Chat og andre kommunikasjonsnoder med
belongs_to-edge til samlingen arves automatisk (bruker ser dem i "Mine ting")
Eksempel: Podcast
Vegard --[owner]--> Sidelinja
→ ser alt: mixer, opptak, publisering, chat, kanban, innstillinger
Trond --[deltaker]--> Sidelinja
→ ser: mixer, opptak, chat, kanban
→ ser ikke: publisering, innstillinger
Lise --[lytter]--> Sidelinja
→ ser: chat, publiserte episoder
→ ser ikke: mixer, opptak, kanban, publisering
Implementering
- Legg til
metadata.roleimember_of-edges - Utvid trait-konfig med
roles-array per trait - Frontend filtrerer verktøymeny og paneler basert på rolle
- ContextHeader viser kun relevante traits
- API-endepunkter validerer rolle ved sensitive operasjoner
Hva som eksisterer allerede
- Edge-typer med metadata (✓)
- node_access-matrise (✓)
- Trait-system med konfig (✓)
- recompute_access (✓)
Hovedsakelig frontend-filtrering + metadata-utvidelse. Liten backend-endring.