---
id: ACTORS-PFM
title: Platform Actors
product_area: platform
revision: 1
status: draft
product_intent: proposed
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
actors:
  - id: ACT-PFM-001
    name: Customer Administrator
    who: >-
      A customer administrator maintains workspace details and, with
      security-administration authority, manages colleagues, access definitions
      and Rhythm staff entry.
    goals:
      - Match colleagues’ access to their work
      - Maintain the customer and workspace information
      - Decide when Rhythm staff can work with customer records
    can_broadly:
      - Administer invitations and console membership
      - Assign or withdraw scoped roles
      - Maintain customer-owned roles and policies
      - Decide staff-access requests and revoke grants
      - Maintain authorized customer and workspace fields
    represented_by:
      - 'policy:platform:security-administrator'
      - platform.security-access.manage
      - platform.security-access.explain
      - platform.security-roles.manage
      - platform.security-policies.manage
      - platform.staff-access.read
      - platform.staff-access.manage
      - platform.tenants.update
      - platform.customers.update
      - platform.users.read
    surfaces:
      - console
      - api
  - id: ACT-PFM-002
    name: Console User
    who: >-
      A person using a customer’s console signs in under their own membership
      and the access assigned to it, including entry through an invitation.
    goals:
      - Reach their permitted work securely
      - Understand their available applications and actions
      - Restore access after forgetting a password
    can_broadly:
      - Accept the invitation to their account
      - 'Start, retain and end a console session'
      - Manage their own password where supported
      - Inspect their evaluated security context
      - Read permitted role and policy definitions
    represented_by:
      - platform.security-self.read
      - platform.users.change-password
      - platform.security-roles.read
      - platform.security-policies.read
      - 'policy:platform:read-only'
    surfaces:
      - console
      - api
  - id: ACT-PFM-003
    name: Portal Member
    who: >-
      An association member registers and signs in through the portal belonging
      to that association’s workspace.
    goals:
      - Work through the association’s portal as themselves
      - Connect portal membership to the association’s contact information
    can_broadly:
      - Register and verify a portal account
      - 'Sign in, recover a password and end portal sessions'
      - Establish the matching contact link
      - Use access derived through the linked person
    represented_by:
      - 'role:portal-member'
      - platform.security-self.read
    surfaces:
      - portal
      - api
  - id: ACT-PFM-004
    name: Rhythm Administrator
    who: >-
      A Rhythm employee assigned the Rhythm Administrator role administers
      customers, workspaces and staff through Rhythm HQ.
    goals:
      - Establish and maintain customer workspaces
      - Administer Rhythm’s staff authority
      - Respond to incidents through authorized entry
    can_broadly:
      - Create customers and administer workspace preparation and retirement
      - Maintain authorized business status and commercial links
      - Invite staff and administer staff roles
      - Use recorded standing or emergency customer access
      - Suspend and resume registered service principals
    represented_by:
      - 'role:rhythm-administrator'
      - hq.*
      - platform.tenants.manage-status
      - platform.tenants.manage-commercial-link
      - platform.tenants.deletion-request
      - platform.tenants.deletion-cancel
      - hq.emergency-access.use
      - hq.roles.manage
      - hq.service-principals.manage
    surfaces:
      - console
      - api
  - id: ACT-PFM-005
    name: Rhythm Support Staff
    who: >-
      A Rhythm Support Representative or Software Engineer investigates customer
      issues through HQ reading and approved workspace access.
    goals:
      - Investigate and resolve customer support work
      - Obtain the role and duration needed for customer entry
    can_broadly:
      - >-
        Read the permitted customer, workspace, job, staff and audit information
        in HQ
      - Request access for customer workspace work
      - 'Read, hold or release eligible deletion requests'
      - Author custom query tables when assigned the engineering authority
    represented_by:
      - 'role:rhythm-support'
      - 'role:rhythm-engineer'
      - 'policy:hq:reader'
      - hq.tenant-access.request
      - platform.tenants.deletion-read
      - platform.tenants.deletion-hold
    surfaces:
      - console
      - api
  - id: ACT-PFM-006
    name: Platform System
    who: >-
      Rhythm’s automated execution reconciles released definitions and
      designated staff, evaluates authorization, and runs the module’s queued
      and lifecycle work.
    goals:
      - Apply the implemented authorization and lifecycle safeguards
      - Maintain released definitions and derived access
    can_broadly:
      - Evaluate requests and sign authorization context
      - 'Reconcile built-ins, founding staff, standing access and principals'
      - 'Execute provisioning, retirement, reconciliation and notification work'
    represented_by:
      - system (service execution; no administered permission key)
      - platform.eligibility.reconcile
    surfaces:
      - job
      - api
  - id: ACT-PFM-007
    name: Workspace Administrator
    who: >-
      A staff administrator responsible for record configuration, local vocabulary, presentation definitions
      and organization-defined categories and connections.
    goals:
      - Adapt the product to local information needs.
      - Change configuration while preserving established work.
    can_broadly:
      - Manage additional fields and complete rule sets.
      - Apply local labels to declared fields.
      - 'Configure custom categories, app placement and staff reach.'
      - Configure connection types and endpoint policies.
      - Manage presentations under the relevant purpose grants.
    represented_by:
      - platform.custom-fields.create
      - platform.custom-fields.update
      - platform.custom-fields.delete
      - platform.field-labels.update
      - platform.custom-objects.create
      - platform.custom-objects.update
      - platform.custom-objects.delete
      - platform.association-types.create
      - platform.association-types.update
      - platform.association-types.delete
      - platform.layouts.create
      - platform.layouts.update
      - platform.layouts.delete
      - crm.contact-layouts.update (the purpose owner's administration key)
    surfaces:
      - console
      - api
  - id: ACT-PFM-008
    name: Record Keeper
    who: 'A staff member maintaining custom-register information, related-record connections and attachments.'
    goals:
      - Keep organization-specific registers complete and accurate.
      - Maintain meaningful connections as circumstances change.
    can_broadly:
      - Create and edit reachable custom records.
      - 'Create, end and remove permitted connections.'
      - Obtain authorized attachment staging.
    represented_by:
      - platform.custom-records.create
      - platform.custom-records.update
      - platform.associations.create
      - platform.associations.update
      - platform.associations.delete
      - platform.files.upload
    surfaces:
      - console
      - api
  - id: ACT-PFM-009
    name: Records Reader
    who: >-
      A staff member or volunteer with readership and suitable history grants, without record-writing
      authority.
    goals:
      - Locate custom records and inspect their relationships.
      - Understand prior changes and their authors.
    can_broadly:
      - Inspect available category descriptions.
      - 'Read, browse and query categories within their reach.'
      - Inspect revisions under the separate history grant.
    represented_by:
      - platform.metadata.read
      - platform.custom-fields.read
      - platform.custom-objects.read
      - platform.custom-records.read
      - platform.custom-records.query
      - platform.custom-records.history
      - platform.association-types.read
      - platform.associations.read
      - platform.layouts.read
    surfaces:
      - console
      - api
  - id: ACT-PFM-010
    name: Records Administrator
    who: A staff member granted deliberate removal and publication operations for custom records.
    goals:
      - Retire or remove records with retained change context.
      - Control publication of register entries.
    can_broadly:
      - 'Archive, restore and remove permitted records.'
      - Change publication state on eligible objects.
    represented_by:
      - platform.custom-records.delete
      - platform.custom-records.publish
      - platform.custom-records.export
    surfaces:
      - console
      - api
  - id: ACT-PFM-011
    name: Owning Service
    who: >-
      An application service declaring its owned categories and participating in endpoint deletion and merge
      protocols.
    goals:
      - Keep declared structure aligned with released application behavior.
      - Preserve connection and reference integrity during removal or consolidation.
    can_broadly:
      - 'Declare standard categories, fields and collections.'
      - Maintain owner-selected form and layout assignments.
      - Invoke endpoint protocols within the owning transaction.
    represented_by:
      - IAM invocation of the metadata registration function (no permission key)
      - rhythm_layout_assigner capability role
      - rhythm_crm_app execution of the endpoint deletion and merge functions
    surfaces:
      - job
  - id: ACT-PFM-012
    name: Rhythm Platform
    who: >-
      The platform services that derive record identity, apply cascades, retain revisions and deliver
      supported business announcements.
    goals:
      - Keep supported record effects consistent across persistence and delivery.
    can_broadly:
      - Derive record names and sequence numbers.
      - Apply dependent deletion policies.
      - Dispatch pending events and enforce retention.
      - Process authorized record and relationship loads.
    represented_by:
      - system (service execution; no user permission key)
    surfaces:
      - job
      - api
  - id: ACT-PFM-013
    name: Staff Member
    who: >-
      A customer staff member who uses permitted datasets, reusable questions,
      record lists, presentations and typed lookup.
    goals:
      - Locate records for daily work
      - Answer questions through permitted data
      - Reuse and share useful questions or presentations
    can_broadly:
      - Discover datasets and execute authorized questions
      - >-
        Keep personal queries and views, and use the granted sharing and
        scheduling actions
      - Request exports allowed by the caller’s query access
      - Look up supported contacts and organizations
    represented_by:
      - platform.saved-queries.read
      - platform.reports.read
      - platform.queries.read
      - platform.saved-queries.use
      - platform.saved-queries.share
      - platform.explorer-views.use
      - platform.explorer-views.share
      - platform.reports.use
      - platform.reports.share
      - platform.query-schedules.use
      - platform.quick-search.read
      - platform.queries.generate
    surfaces:
      - console
      - api
  - id: ACT-PFM-014
    name: Read Only Staff Member
    who: >-
      A staff member who reads accessible questions and presentations without
      acquiring their authoring powers.
    goals:
      - Find shared questions and reports
      - Read results within the caller’s own access
    can_broadly:
      - Browse and execute readable shared questions
      - >-
        Open readable presentations without creating, copying, sharing or
        deleting them
    represented_by:
      - platform.saved-queries.read
      - platform.reports.read
      - platform.queries.read
    surfaces:
      - console
  - id: ACT-PFM-015
    name: Rhythm Staff
    who: >-
      A Rhythm employee using cross-customer administration or a recorded access
      grant for a customer workspace.
    goals:
      - Analyze system-wide datasets
      - Support a customer through granted workspace access
      - Operate snapshot recovery and inspect workspace export history
    can_broadly:
      - Execute authorized system queries
      - Maintain and assign custom query-table definitions
      - 'Manage snapshot policies, reruns and backfills'
      - Inspect cross-workspace export history
      - >-
        Use staff-grant authority for the entered workspace’s saved queries and
        reports
    represented_by:
      - hq.queries.read
      - hq.custom-query-tables.read
      - hq.custom-query-tables.author
      - hq.custom-query-tables.publish
      - hq.custom-query-tables.assign
      - hq.snapshots.read
      - hq.snapshots.manage
      - hq.data-exports.read
      - hq.data-exports.operate
      - staff access grant (caller.isStaff)
    surfaces:
      - console
      - api
  - id: ACT-PFM-016
    name: Rhythm Application
    who: >-
      An application that declares queryable records and invokes shared Platform
      services for its records or users.
    goals:
      - Expose owned record descriptions to shared services
      - Use a saved question to identify records for application work
    can_broadly:
      - Register datasets and recipes during deployment
      - Provide record-change events for indexing
      - Retrieve pages of identifiers from a user’s saved question
    represented_by:
      - >-
        IAM invocation of the registration, indexer and record-ids functions (no
        user permission key)
    surfaces:
      - job
      - api
  - id: ACT-PFM-017
    name: Integrations Administrator
    who: >-
      A customer administrator responsible for installation, provider account setup and account selection for
      integration work.
    goals:
      - Establish usable provider accounts
      - Maintain account availability and address failures
    can_broadly:
      - 'Adopt, pause and remove installations'
      - 'Set up, verify, pause, replace and disconnect provider accounts'
      - Supply and rotate account credentials
      - Select accounts for provider capabilities
      - 'Operate retry, cancellation and manual settlement controls'
    represented_by:
      - platform.integrations.manage
      - platform.integration-credentials.manage
      - platform.integration-executions.operate
      - platform.integrations.invoke
    surfaces:
      - console
      - api
  - id: ACT-PFM-018
    name: Integrations Reader
    who: A customer colleague who inspects integration records without permission to edit them.
    goals:
      - Inspect connected accounts and their operating history
    can_broadly:
      - Inspect Library records with secrets withheld
    represented_by:
      - platform.integrations.read
      - platform.integration-executions.read
    surfaces:
      - console
      - api
  - id: ACT-PFM-019
    name: Rhythm Staff Operator
    who: A Rhythm operator responsible for release availability and provider operations across customers.
    goals:
      - Manage release access for customers
      - Investigate unresolved calls and provider problems
    can_broadly:
      - Manage publication and version retirement
      - Control customer eligibility
      - Maintain Platform secret values
      - Inspect unresolved calls and reset account circuits
      - Configure customer code handlers
    represented_by:
      - hq.integrations.publish
      - hq.integrations.operate
      - platform.extension-handlers.manage
    surfaces:
      - api
      - console
  - id: ACT-PFM-020
    name: Consuming Application
    who: >-
      A Rhythm application that uses its service identity to request provider capabilities and register
      application declarations.
    goals:
      - Request provider behaviour through configured routing
      - Register application customization and action contracts
    can_broadly:
      - Invoke gateway capabilities as an application
      - Receive routed integration events
      - Submit application declarations during deployment
      - Emit registered business events for host automation
    represented_by:
      - svc_<application> service principals
      - platform.integrations.invoke (service)
      - platform.workflow-actions.registry-register
    surfaces:
      - api
      - job
  - id: ACT-PFM-021
    name: Integration Adapter
    who: >-
      An integration’s deployed implementation that registers releases and reports work using its own service
      identity.
    goals:
      - Register validated releases
      - Report connection-specific progress and outcomes
    can_broadly:
      - Register releases for its integration identity
      - Renew credential leases and report work for its accounts
      - Emit its declared integration events
    represented_by:
      - svc_integration_<key> principals
    surfaces:
      - api
      - job
  - id: ACT-PFM-022
    name: Configuration Administrator
    who: >-
      A customer administrator who configures customization rules, bindings, reusable actions, calendars and
      automations.
    goals:
      - Configure customer-specific behaviour
      - Prepare reusable reactions to business events
    can_broadly:
      - Configure rules and customization bindings
      - Test handlers and inspect invocation records
      - Maintain reusable recipes and business calendars
      - Publish and manage automation lifecycle states
    represented_by:
      - platform.extension-points.read
      - platform.extension-rules.manage
      - platform.extension-bindings.manage
      - platform.extension-handlers.test
      - platform.extension-invocations.read
      - platform.workflow-actions.registry-read
      - platform.workflow-actions.templates-manage
      - platform.workflow-actions.calendars-manage
      - platform.workflow-actions.automation-manage
      - platform.workflow-actions.runs-read
      - platform.workflow-actions.runs-resolve
    surfaces:
      - console
      - api
  - id: ACT-PFM-023
    name: Rules Administrator
    who: >-
      Staff responsible for maintaining shared qualification expressions and
      their consumer uses.
    goals:
      - 'Keep qualification consistent across prices, pages, roles and processes'
      - Revise expressions while protecting dependent uses
    can_broadly:
      - >-
        Author and trial expressions; release, restore, deprecate and archive
        them
      - 'Maintain the rule use associated with a product, price or other consumer'
      - Enumerate subjects and compare a proposed expression
    represented_by:
      - platform.eligibility.write
      - platform.eligibility.publish
      - platform.eligibility.retire
      - platform.eligibility.population
      - platform.eligibility-bindings.manage
    surfaces:
      - console
      - api
  - id: ACT-PFM-024
    name: Consumer Application
    who: >-
      A Rhythm application that declares qualification vocabulary and work
      areas, creates rule uses, requests decisions and publishes attention
      conditions.
    goals:
      - Obtain qualification decisions from a shared engine
      - Reach the people responsible for application conditions
    can_broadly:
      - Register application declarations during deployment
      - >-
        Maintain service-owned uses and request evaluation at supported
        consistencies
      - Write and complete attention in the business transaction
    represented_by:
      - service principal svc_<service> through platform_eligibility_service
      - platform.eligibility-bindings.manage
      - rhythm_attention_writer
      - rhythm_responsibility_deriver
    surfaces:
      - api
      - job
  - id: ACT-PFM-025
    name: Rhythm Operations
    who: >-
      Rhythm operators and on-call staff investigating shared eligibility
      behavior across organizations.
    goals:
      - Detect evaluation degradation before it affects customers
    can_broadly:
      - Receive eligibility alarms and investigate decision logs
      - Request system rechecks of role qualification
    represented_by:
      - platform.eligibility.reconcile
    surfaces:
      - api
      - job
  - id: ACT-PFM-026
    name: Platform Scheduler
    who: System jobs that maintain Platform’s derived records on a schedule.
    goals:
      - Maintain derived records without manual cleanup
    can_broadly:
      - Reconcile role defaults and report coverage gaps nightly
      - 'Expire, reprioritize and escalate attention; plan and deliver reminders'
      - Evaluate computed attention and execute bulk qualification work
    represented_by:
      - system execution (platform-system)
    surfaces:
      - job
  - id: ACT-PFM-027
    name: Staff Notification Recipient
    who: >-
      A member of an association staff using a console account, with access
      determined by the account role.
    goals:
      - Recognize business events relevant to their responsibilities
      - Follow a notice into the related work
    can_broadly:
      - Review personal items and change their read or archive state
      - Inspect recipient-selection and channel explanations
      - Request a notification test for their own inbox
    represented_by:
      - platform.notifications.use
    surfaces:
      - console
    provenance: inferred
    source: 'services-platform:modules/notifications/aws/api/notifications.routes.ts'
    note: >-
      This actor groups the inspected permission and processing roles; its
      description grants no additional powers.
  - id: ACT-PFM-028
    name: Association Communication Administrator
    who: >-
      An authorized staff member reviewing workspace notification activity and
      managing association communication content.
    goals:
      - Investigate recipient and request outcomes
      - Maintain publishable association e-mail and usable recipient addresses
    can_broadly:
      - Inspect workspace History and its linked request and delivery records
      - 'Prepare, validate, publish and archive workflow e-mail content'
      - Inspect message outcomes and administer address suppression
    represented_by:
      - platform.notifications.manage
      - platform.communication-templates.read
      - platform.communication-templates.create
      - platform.communication-templates.update
      - platform.communication-templates.delete
      - platform.communication-templates.publish
      - platform.communication-templates.test-send
      - platform.communication-messages.read
      - platform.communication-messages.read-content
      - platform.communication-messages.update
      - platform.communication-suppressions.read
      - platform.communication-suppressions.create
      - platform.communication-suppressions.update
    surfaces:
      - console
      - api
    provenance: inferred
    source: >-
      services-platform:aws/platform.service.ts:COMMUNICATION_TEMPLATES_PERMISSIONS
    note: >-
      This actor groups the inspected permission and processing roles; its
      description grants no additional powers.
  - id: ACT-PFM-029
    name: Rhythm Notification Operator
    who: >-
      An authorized Rhythm employee investigating Platform activity and
      supporting customer notification delivery.
    goals:
      - Monitor operational outcomes such as provisioning
      - Investigate customer notification questions through granted access
    can_broadly:
      - Inspect the cross-application notification catalog
      - Read customer notification History with an active staff access grant
      - Requeue eligible deliveries whose attempts were exhausted
    represented_by:
      - hq.notifications.read
      - hq.notifications.operate
    surfaces:
      - console
      - slack
    provenance: inferred
    source: 'services-platform:modules/notifications/aws/api/notifications.routes.ts'
    note: >-
      This actor groups the inspected permission and processing roles; its
      description grants no additional powers.
  - id: ACT-PFM-030
    name: Notification and Communication Producer
    who: >-
      A Rhythm application or Platform integration declaring notification
      contracts and submitting business-event communication work.
    goals:
      - Select an audience without managing recipient delivery addresses
      - >-
        Commit communication publication alongside the associated business
        change
    can_broadly:
      - Submit notification manifests during deployment
      - Publish events and withdraw notification requests
      - Submit association mail and maintain record-owned content
    represented_by:
      - platform.notifications.publish
      - platform.communications.request
      - rhythm_notifications_submitter (capability role)
      - rhythm_communications_submitter (capability role)
    surfaces:
      - api
      - job
    provenance: inferred
    source: >-
      services-platform:docs/communications/architecture.md#18. Rework
      2026-10-10: queue pointers, S3 for request data and bodies, SQS owns
      retries
    note: >-
      This actor groups the inspected permission and processing roles; its
      description grants no additional powers.
  - id: ACT-PFM-031
    name: Platform Message Processor
    who: >-
      Background Platform execution resolving requests into recipient notices
      and association messages and retaining their processing history.
    goals:
      - >-
        Process communication work with recoverable state and inspectable
        outcomes
    can_broadly:
      - >-
        Dispatch committed entries, select audiences, render content and manage
        delivery recovery
      - >-
        Apply provider reports and suppress permanently bounced or
        complained-about addresses
    represented_by:
      - system (service execution; no user permission key)
    surfaces:
      - job
    provenance: inferred
    source: >-
      services-platform:modules/notifications/aws/logic/notifications-functions.lambda.ts
    note: >-
      This actor groups the inspected permission and processing roles; its
      description grants no additional powers.
  - id: ACT-PFM-032
    name: Workspace Staff Member
    who: A person who uses the console to perform work in a customer workspace.
    goals:
      - Complete workspace tasks with available AI assistance.
      - Understand a refusal and the appropriate next action.
    can_broadly:
      - Describe and refine a query.
      - Use Jazz AI conversations and project organization.
      - Read customer-facing refusal explanations.
    represented_by:
      - console session in the workspace (no AI-specific permission key)
      - >-
        the permission keys of the feature that makes the AI request (for Describe With AI, the query layer's
        keys)
    surfaces:
      - console
  - id: ACT-PFM-033
    name: Rhythm Support Representative
    who: A Rhythm staff reader who investigates organization AI usage in HQ.
    goals:
      - Identify organizations with capacity or usage concerns.
      - Explain request refusals and failures to customers.
    can_broadly:
      - 'Read HQ usage, requests, tasks and control history.'
      - Inspect recorded request explanations.
    represented_by:
      - 'hq.llm-usage.read (through policy:hq:reader)'
    surfaces:
      - console
      - api
  - id: ACT-PFM-034
    name: Rhythm Engineer
    who: 'A Rhythm engineer who defines AI operations, routing and prices and conducts model verification.'
    goals:
      - Make model work traceable to declared routing and costs.
      - Verify behavior without accidental provider spending.
    can_broadly:
      - 'Declare operations, task keys and model prices for publication.'
      - Deliberately run live smoke checks or evaluation.
    represented_by:
      - the repository and the deploy pipeline (no runtime permission key)
    surfaces:
      - job
  - id: ACT-PFM-035
    name: Bulk Data Administrator
    who: >-
      An authorized customer staff member who manages imports and large changes
      to workspace records.
    goals:
      - Change groups of records while preserving intervening edits.
      - Inspect completed work and recover changes that support rollback.
    can_broadly:
      - >-
        Create and preview data jobs, apply approved changes and use job
        controls.
      - Upload input files for supported imports.
      - Confirm bulk deletion after reviewing its impact.
      - Plan rollback for supported completed updates.
    represented_by:
      - crm.contacts.bulk
      - crm.organizations.bulk
      - crm.contact-types.bulk
      - crm.contact-roles.bulk
      - crm.organization-types.bulk
      - crm.address-types.bulk
      - crm.phone-number-types.bulk
      - crm.regions.bulk
      - crm.activity-types.bulk
      - crm.activities.bulk
      - platform.custom-fields.bulk
      - platform.data-jobs.upload
      - >-
        console capabilities data.jobs.view, data.jobs.submit,
        data.jobs.control, data.jobs.rollback
    surfaces:
      - console
      - api
    provenance: inferred
    source: >-
      services-crm:modules/data-jobs/aws/api/data-jobs.routes.ts;
      services-platform:modules/data-jobs/aws/api/data-jobs.routes.ts
    note: >-
      This actor groups the cited access and processing responsibilities; the
      underlying permission checks determine each action.
  - id: ACT-PFM-036
    name: Integration Data Producer
    who: >-
      A customer integration or automated client that delivers records
      identified by the producing system’s keys.
    goals:
      - Repeat deliveries without duplicating previously loaded records.
      - >-
        Handle stale deliveries and staff edits according to the selected
        policy.
    can_broadly:
      - Upload record files and submit keyed imports or patches.
      - Reconcile records using the producer-key lookup.
      - Retry records blocked by missing dependencies.
    represented_by:
      - >-
        the same bulk and record keys as the Data Administrator, held by the
        client identity
      - platform.data-jobs.upload
    surfaces:
      - api
      - job
    provenance: inferred
    source: >-
      macroservice-libraries:packages/data-jobs/src/keyed-item-decision.ts;
      services-crm:modules/data-jobs/aws/api/bulk-data-jobs.routes.ts
    note: >-
      This actor groups the cited access and processing responsibilities; the
      underlying permission checks determine each action.
  - id: ACT-PFM-037
    name: Migration Implementation Staff
    who: >-
      An authorized Rhythm employee who coordinates initial data loading in an
      implementation workspace.
    goals:
      - Load package datasets after their prerequisites.
      - Reconcile the load and repeat it from a clean workspace when necessary.
    can_broadly:
      - Place an implementation workspace into loading state.
      - Register migration packages and drive their Data Runs.
      - Request a reset while the workspace is loading.
    represented_by:
      - hq.data-runs.manage
    surfaces:
      - api
    provenance: inferred
    source: >-
      services-platform:modules/data-jobs/aws/api/data-runs.routes.ts;
      services-platform:docs/data-jobs/tenant-reset.md#1. When a tenant may be
      reset
    note: >-
      This actor groups the cited access and processing responsibilities; the
      underlying permission checks determine each action.
  - id: ACT-PFM-038
    name: Workspace and Capacity Operator
    who: >-
      An authorized Rhythm employee who opens loaded workspaces and operates
      shared capacity protection.
    goals:
      - Admit customer staff after reviewing the migration.
      - Protect shared resources during sustained load.
    can_broadly:
      - Activate a loaded implementation workspace.
      - Pin the capacity protection state or release an existing pin.
    represented_by:
      - hq.tenants.activate
      - hq.capacity.manage
    surfaces:
      - api
    provenance: inferred
    source: >-
      services-platform:docs/data-jobs/data-runs.md#7. The summary and the
      readiness verdict;
      services-platform:modules/capacity/aws/api/capacity.routes.ts
    note: >-
      This actor groups the cited access and processing responsibilities; the
      underlying permission checks determine each action.
  - id: ACT-PFM-039
    name: Rhythm Lifecycle Support
    who: >-
      Rhythm staff who inspect workspace lifecycle work and pause scheduled removal while questions
      are resolved.
    goals:
      - Understand construction and deletion progress
      - Preserve review time for removal decisions
    can_broadly:
      - Inspect workspace builds and deletion requests
      - Hold and release scheduled deletion
    represented_by:
      - hq.tenants.read
      - platform.tenants.deletion-read
      - platform.tenants.deletion-hold
    surfaces:
      - console
      - api
    provenance: inferred
    source: 'services-platform:modules/tenants/aws/api/tenant-deletion-requests.routes.ts'
    note: This actor groups the inspected route authority; each operation retains its own permission and availability checks.
  - id: ACT-PFM-040
    name: Initial Import Operator
    who: >-
      Rhythm staff who prepare a customer’s first import and request reset when selected load data
      needs replacement.
    goals:
      - Prepare customer records before ordinary workspace use
      - Recover incorrect import data
    can_broadly:
      - Begin the loading period
      - Request reset while loading
    represented_by:
      - hq.data-runs.manage
    surfaces:
      - console
      - api
    provenance: inferred
    source: 'services-platform:modules/tenants/aws/api/hq-tenant-loading.routes.ts'
    note: This actor groups the inspected route authority; each operation retains its own permission and availability checks.
  - id: ACT-PFM-041
    name: Workspace Activation Approver
    who: Rhythm staff with authority to decide that an imported workspace can return to ordinary use.
    goals:
      - Open the workspace after reviewing its load
    can_broadly:
      - End the loading period through activation
    represented_by:
      - hq.tenants.activate
    surfaces:
      - console
      - api
    provenance: inferred
    source: 'services-platform:modules/tenants/aws/api/hq-tenant-loading.routes.ts'
    note: This actor groups the inspected route authority; each operation retains its own permission and availability checks.
  - id: ACT-PFM-042
    name: Customer Workspace Caller
    who: >-
      A customer staff member or portal user whose workspace requests remain subject to lifecycle
      availability and ordinary authorization.
    goals:
      - Use an available workspace under assigned authority
    can_broadly:
      - Request workspace operations when availability and the operation’s permission allow them
    represented_by:
      - console and portal callers of the workspace (no lifecycle permission key)
    surfaces:
      - console
      - portal
    provenance: inferred
    source: 'services-platform:modules/tenants/services/access/tenant-availability.ts:tenantAvailabilityOf'
    note: This actor groups the inspected route authority; each operation retains its own permission and availability checks.

  - id: ACT-PFM-043
    name: Commercial Source
    who: >-
      HubSpot supplies the customer’s recorded commercial terms and notifies
      Rhythm when a supported change calls for another licence read.
    goals:
      - Keep commercial coverage aligned with recorded contract terms
    can_broadly:
      - Deliver signed change notifications for company or contract synchronization
      - Supply read-only contract, line-item and product information
    represented_by:
      - public route signed with the HubSpot private app's client secret (no permission key)
    surfaces:
      - api

evidence:
  - >-
    services-platform at ad3f6a6: aws/platform.service.ts (permission catalog,
    built-in policies), modules/security/services/catalog/reconcile-catalog.ts
    (built-in roles); docs/security/built-in-policies.md §5, §6;
    docs/hq/rhythm-hq-plan.md §H.
---

# Platform Actors

Customer administrators organize people and access within their customer, while console users work under their own assigned authority. Portal members use the association’s workspace through a separate membership. Rhythm Administrators manage platform and staff work from Rhythm HQ; support and engineering staff investigate through their HQ permissions and appropriate customer access. Automated Platform execution evaluates requests and maintains the definitions, derived assignments and lifecycle work supporting those people.
