Перейти к основному содержимому

task-bank ↔ identity

Зачем нужно

Файл фиксирует, как банк задач использует organization/team permission grants для доступа к задачам, подборкам, activity/program templates and snapshots, не становясь владельцем организаций или команд.

Источник истины

ДанныеВладелец
organization, organization_team, organization_membershipidentity
organization_permission_grantidentity
problem, problem_version, problem_set, activity_template, program_template, content_export_snapshot, problem_usagetask-bank
problem_attempt, answer_check, manual_reviewtask-bank
task-bank trust/XP/reputationtask-bank governance/reputation layer

Сценарии

СценарийКак работает
problem_set виден организацииtask-bank хранит access policy со ссылкой на identity_organization_id; identity подтверждает membership/permission
activity_template или program_template виден организацииtask-bank хранит owner/access policy refs; identity подтверждает membership/permission
problem_set редактирует командаgrant или task-bank ACL ссылается на organization_team_id
доступ выдан участникуgrant с subject_type = membership и task-bank permission
автор подборки имеет расширенные праваtask-bank хранит author/owner policy, identity даёт actor identity
trust/XP влияет на authoring flowtask-bank читает свой reputation signal и отдельно проверяет identity actor context

Правила

  • Identity не владеет problem_set, collection, problem version или checking policy.
  • Task-bank не владеет organization_team, membership, role или grant lifecycle.
  • Trust/XP Миролимпа не является identity role and cannot replace membership/permission grant.
  • Permission names должны быть catalog keys, например task-bank.collections.manage.organization.
  • Локальные names вроде problem_bank.collections.edit запрещены.
  • Grant revocation должен инвалидировать task-bank access cache.

События identity

Task-bank подписывается на:

  • identity.organization.archived;
  • identity.organization.merged;
  • identity.organization_team.updated;
  • identity.organization_team.archived;
  • identity.organization_membership.suspended;
  • identity.organization_permission_grant.created;
  • identity.organization_permission_grant.revoked.

Идемпотентность и ошибки

  • события обрабатываются по messageId;
  • повторный grant event не создаёт дубль доступа;
  • если identity недоступен, task-bank write actions в organization scope должны fail-closed;
  • task-bank может показывать read-only published content по локальному snapshot, если это не раскрывает закрытые answers/solutions.
  • locked snapshot может хранить historical identity refs for audit, но не копирует membership table.

Связанные документы