docs(oeg): F5 is resolved, reads are scoped by app provider

sequenceDiagram
    participant B as Developer B (app_provider_id=bob)
    participant OEG
    participant DB as oeg_db
    B->>OEG: GET /apps/{alice's appId}
    OEG->>DB: record + the operation that created it
    DB-->>OEG: operation.app_provider_id = alice
    OEG-->>B: 404 (not 403, so IDs can't be probed)
    B->>OEG: GET /apps
    OEG-->>B: only bob's apps

oeg/architecture.md F5 still says reads and deletes aren't tenant-scoped and that GET /apps lists every tenant's apps. That stopped being true with OEG 1cc2ac0 (2026-10-12, "enforce app_provider_id ownership on EAM and TI app references"). Apps, app instances, app deployments, QoD sessions and traffic influences all check the app_provider_id of the operation that created them.

On OEG develop (412f8cf), the 52 ownership tests in test_eam_service.py, test_qod_service.py and test_traffic_influence_flows.py pass, for example test_hides_another_providers_app, test_list_excludes_other_providers_resources and test_raises_not_found_for_another_providers_session.

Changes:

  • F5 marked resolved and says what the scope is: the app provider (developer), not tenant_id (organization). Two developers of the same organization don't see each other's resources until ownership moves to the organization, which ADR-0066 lists as later work.
  • oeg/persistence-model.md: the tenant_id rows of qod_sessions and traffic_influences no longer claim to scope reads and deletes.

Docs only, no code change.

🤖 Generated with Claude Code

Merge request reports

Loading
Loading