Skip to content

Authorization coverage: what each policy gates and what is not gated #1389

Closed

Description

@einari

Part of the epic #1387.

Scenario this serves. An application sells a plan per asset (a vessel in a fleet, a site, a workspace), not per customer. Which views, API operations and tools a caller may use depends on the plan of the specific asset they act on. Today a policy decides from the caller (role, claim) and from the arguments of the command or query. It cannot decide from state the application has recorded, such as the asset's plan.

Problem

Nothing tells a modeller which commands, queries, screens and tools are gated by which policy, or which are not gated at all. With plan-based gating spread across a product, the real risk is the surface someone forgot.

What the person should see

  • For a policy: everything it gates, and the plan or entitlement it depends on.
  • For an operation: its effective authorization, including what it inherits from its module and feature.
  • A check that flags operations in a chosen area that have no authorization, or that read entitlement data but are not gated, in the same place the completeness check (Completeness check: find fields with no source and elements left unconnected #1365) reports unconnected elements.
  • A view of a matrix of plans against gated features where the model has the data to draw one.

Done when

A reviewer can answer "what is a customer on the basic plan unable to do?" from Studio without reading the model text.


Epic: #1387.
Siblings: Cratis/Screenplay#1230, Cratis/Screenplay#1231, Cratis/Screenplay#1232, Cratis/Screenplay#1233, Cratis/Screenplay#1234, Cratis/Arc#3764, Cratis/Arc#3765, Cratis/Arc#3766, Cratis/Chronicle#5765, Cratis/Stage#1048, Cratis/Stage#1049, Cratis/Stage#1050, #1388, #1389, #1390.

Activity

  1. added
    area: modelingEvent models, Screenplay, import/export, semantics
    authorizationCaller-aware authorization: visibility and availability driven by who may act
    on Nov 9, 2026
  2. added theissue type on Nov 9, 2026
  3. einari commented on Nov 10, 2026

    @einari
    ContributorAuthor

    Partly delivered, issue stays open. Cratis/Studio#2630 adds a completeness finding for a command that reads recorded state and has no authorization of its own, in its feature or in its module. It appears with the board's other completeness findings. Not built: the per-policy 'what does it gate' view, the effective-authorization view per operation, and the plans-against-features matrix.

  4. einari commented on Nov 10, 2026

    @einari
    ContributorAuthor

    Delivered in Cratis/Studio#2630 and #2632: the panel lists what each policy gates, the effective policies of each command and query, and flags an operation that reads recorded state and nothing gates.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: modelingEvent models, Screenplay, import/export, semanticsauthorizationCaller-aware authorization: visibility and availability driven by who may acttype: feature

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions